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
8(function webpackUniversalModuleDefinition(root, factory) {
9 if(typeof exports === 'object' && typeof module === 'object')
10 module.exports = factory();
11 else if(typeof define === 'function' && define.amd)
12 define([], factory);
13 else if(typeof exports === 'object')
14 exports["agGrid"] = factory();
15 else
16 root["agGrid"] = factory();
17})(window, function() {
18return /******/ (function(modules) { // webpackBootstrap
19/******/ // The module cache
20/******/ var installedModules = {};
21/******/
22/******/ // The require function
23/******/ function __webpack_require__(moduleId) {
24/******/
25/******/ // Check if module is in cache
26/******/ if(installedModules[moduleId]) {
27/******/ return installedModules[moduleId].exports;
28/******/ }
29/******/ // Create a new module (and put it into the cache)
30/******/ var module = installedModules[moduleId] = {
31/******/ i: moduleId,
32/******/ l: false,
33/******/ exports: {}
34/******/ };
35/******/
36/******/ // Execute the module function
37/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
38/******/
39/******/ // Flag the module as loaded
40/******/ module.l = true;
41/******/
42/******/ // Return the exports of the module
43/******/ return module.exports;
44/******/ }
45/******/
46/******/
47/******/ // expose the modules object (__webpack_modules__)
48/******/ __webpack_require__.m = modules;
49/******/
50/******/ // expose the module cache
51/******/ __webpack_require__.c = installedModules;
52/******/
53/******/ // define getter function for harmony exports
54/******/ __webpack_require__.d = function(exports, name, getter) {
55/******/ if(!__webpack_require__.o(exports, name)) {
56/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
57/******/ }
58/******/ };
59/******/
60/******/ // define __esModule on exports
61/******/ __webpack_require__.r = function(exports) {
62/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
63/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
64/******/ }
65/******/ Object.defineProperty(exports, '__esModule', { value: true });
66/******/ };
67/******/
68/******/ // create a fake namespace object
69/******/ // mode & 1: value is a module id, require it
70/******/ // mode & 2: merge all properties of value into the ns
71/******/ // mode & 4: return value when already ns object
72/******/ // mode & 8|1: behave like require
73/******/ __webpack_require__.t = function(value, mode) {
74/******/ if(mode & 1) value = __webpack_require__(value);
75/******/ if(mode & 8) return value;
76/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
77/******/ var ns = Object.create(null);
78/******/ __webpack_require__.r(ns);
79/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
80/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
81/******/ return ns;
82/******/ };
83/******/
84/******/ // getDefaultExport function for compatibility with non-harmony modules
85/******/ __webpack_require__.n = function(module) {
86/******/ var getter = module && module.__esModule ?
87/******/ function getDefault() { return module['default']; } :
88/******/ function getModuleExports() { return module; };
89/******/ __webpack_require__.d(getter, 'a', getter);
90/******/ return getter;
91/******/ };
92/******/
93/******/ // Object.prototype.hasOwnProperty.call
94/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
95/******/
96/******/ // __webpack_public_path__
97/******/ __webpack_require__.p = "";
98/******/
99/******/
100/******/ // Load entry module and return exports
101/******/ return __webpack_require__(__webpack_require__.s = 0);
102/******/ })
103/************************************************************************/
104/******/ ([
105/* 0 */
106/***/ (function(module, exports, __webpack_require__) {
107
108/**
109 * AUTOMATICALLY GENERATED FILE, DO NOT EDIT MANUALLY!
110 * Update this file by running `lerna run webpack-updater` in the monorepo root folder.
111 */
112var ClientSideRowModelModule = __webpack_require__(1);
113var GridCoreModule = __webpack_require__(3);
114var CsvExportModule = __webpack_require__(259);
115var InfiniteRowModelModule = __webpack_require__(269);
116var agGrid = __webpack_require__(274);
117Object.keys(agGrid).forEach(function(key) {
118 exports[key] = agGrid[key];
119});
120agGrid.ModuleRegistry.register(ClientSideRowModelModule.ClientSideRowModelModule);
121agGrid.ModuleRegistry.register(CsvExportModule.CsvExportModule);
122agGrid.ModuleRegistry.register(InfiniteRowModelModule.InfiniteRowModelModule);
123__webpack_require__(275);
124__webpack_require__(279);
125__webpack_require__(281);
126__webpack_require__(283);
127__webpack_require__(285);
128__webpack_require__(287);
129__webpack_require__(289);
130__webpack_require__(291);
131__webpack_require__(293);
132__webpack_require__(295);
133__webpack_require__(297);
134__webpack_require__(299);
135__webpack_require__(301);
136__webpack_require__(303);
137
138/***/ }),
139/* 1 */
140/***/ (function(module, __webpack_exports__, __webpack_require__) {
141
142"use strict";
143__webpack_require__.r(__webpack_exports__);
144/* harmony import */ var _clientSideRowModelModule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
145/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelModule", function() { return _clientSideRowModelModule__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelModule"]; });
146
147
148
149
150/***/ }),
151/* 2 */
152/***/ (function(module, __webpack_exports__, __webpack_require__) {
153
154"use strict";
155__webpack_require__.r(__webpack_exports__);
156/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelModule", function() { return ClientSideRowModelModule; });
157/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
158/* harmony import */ var _clientSideRowModel_clientSideRowModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(251);
159/* harmony import */ var _clientSideRowModel_filterStage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(253);
160/* harmony import */ var _clientSideRowModel_sortStage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(254);
161/* harmony import */ var _clientSideRowModel_flattenStage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(255);
162/* harmony import */ var _clientSideRowModel_sortService__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(256);
163/* harmony import */ var _clientSideRowModel_filterService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(257);
164/* harmony import */ var _clientSideRowModel_immutableService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(258);
165
166
167
168
169
170
171
172
173var ClientSideRowModelModule = {
174 moduleName: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ModuleNames"].ClientSideRowModelModule,
175 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"]],
176 rowModels: { clientSide: _clientSideRowModel_clientSideRowModel__WEBPACK_IMPORTED_MODULE_1__["ClientSideRowModel"] }
177};
178
179
180/***/ }),
181/* 3 */
182/***/ (function(module, __webpack_exports__, __webpack_require__) {
183
184"use strict";
185__webpack_require__.r(__webpack_exports__);
186/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _columns_columnFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
187/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnFactory", function() { return _columns_columnFactory__WEBPACK_IMPORTED_MODULE_0__["ColumnFactory"]; });
188
189/* harmony import */ var _columns_columnModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22);
190/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnModel", function() { return _columns_columnModel__WEBPACK_IMPORTED_MODULE_1__["ColumnModel"]; });
191
192/* harmony import */ var _columns_columnKeyCreator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);
193/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnKeyCreator", function() { return _columns_columnKeyCreator__WEBPACK_IMPORTED_MODULE_2__["ColumnKeyCreator"]; });
194
195/* harmony import */ var _columns_columnUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28);
196/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnUtils", function() { return _columns_columnUtils__WEBPACK_IMPORTED_MODULE_3__["ColumnUtils"]; });
197
198/* harmony import */ var _columns_displayedGroupCreator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29);
199/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DisplayedGroupCreator", function() { return _columns_displayedGroupCreator__WEBPACK_IMPORTED_MODULE_4__["DisplayedGroupCreator"]; });
200
201/* harmony import */ var _columns_groupInstanceIdCreator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25);
202/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupInstanceIdCreator", function() { return _columns_groupInstanceIdCreator__WEBPACK_IMPORTED_MODULE_5__["GroupInstanceIdCreator"]; });
203
204/* harmony import */ var _components_componentUtil__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(30);
205/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentUtil", function() { return _components_componentUtil__WEBPACK_IMPORTED_MODULE_6__["ComponentUtil"]; });
206
207/* harmony import */ var _components_agStackComponentsRegistry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(32);
208/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgStackComponentsRegistry", function() { return _components_agStackComponentsRegistry__WEBPACK_IMPORTED_MODULE_7__["AgStackComponentsRegistry"]; });
209
210/* harmony import */ var _components_colDefUtil__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(33);
211/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColDefUtil", function() { return _components_colDefUtil__WEBPACK_IMPORTED_MODULE_8__["ColDefUtil"]; });
212
213/* harmony import */ var _components_framework_userComponentRegistry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(34);
214/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserComponentRegistry", function() { return _components_framework_userComponentRegistry__WEBPACK_IMPORTED_MODULE_9__["UserComponentRegistry"]; });
215
216/* harmony import */ var _components_framework_userComponentFactory__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(102);
217/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserComponentFactory", function() { return _components_framework_userComponentFactory__WEBPACK_IMPORTED_MODULE_10__["UserComponentFactory"]; });
218
219/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(20);
220/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BeanStub", function() { return _context_beanStub__WEBPACK_IMPORTED_MODULE_11__["BeanStub"]; });
221
222/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(12);
223/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Context", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Context"]; });
224
225/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Autowired", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Autowired"]; });
226
227/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PostConstruct", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["PostConstruct"]; });
228
229/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PreConstruct", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["PreConstruct"]; });
230
231/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Optional", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Optional"]; });
232
233/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Bean", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Bean"]; });
234
235/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Qualifier", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Qualifier"]; });
236
237/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PreDestroy", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["PreDestroy"]; });
238
239/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(57);
240/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuerySelector", function() { return _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_13__["QuerySelector"]; });
241
242/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RefSelector", function() { return _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_13__["RefSelector"]; });
243
244/* harmony import */ var _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(105);
245/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ExcelFactoryMode", function() { return _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_14__["ExcelFactoryMode"]; });
246
247/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(97);
248/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragAndDropService", function() { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__["DragAndDropService"]; });
249
250/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragSourceType", function() { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__["DragSourceType"]; });
251
252/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HorizontalDirection", function() { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__["HorizontalDirection"]; });
253
254/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VerticalDirection", function() { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__["VerticalDirection"]; });
255
256/* harmony import */ var _dragAndDrop_dragService__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(106);
257/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragService", function() { return _dragAndDrop_dragService__WEBPACK_IMPORTED_MODULE_16__["DragService"]; });
258
259/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(10);
260/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Column", function() { return _entities_column__WEBPACK_IMPORTED_MODULE_17__["Column"]; });
261
262/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(9);
263/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnGroup", function() { return _entities_columnGroup__WEBPACK_IMPORTED_MODULE_18__["ColumnGroup"]; });
264
265/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(8);
266/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvidedColumnGroup", function() { return _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_19__["ProvidedColumnGroup"]; });
267
268/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(94);
269/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNode", function() { return _entities_rowNode__WEBPACK_IMPORTED_MODULE_20__["RowNode"]; });
270
271/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowHighlightPosition", function() { return _entities_rowNode__WEBPACK_IMPORTED_MODULE_20__["RowHighlightPosition"]; });
272
273/* harmony import */ var _filter_filterManager__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(107);
274/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FilterManager", function() { return _filter_filterManager__WEBPACK_IMPORTED_MODULE_21__["FilterManager"]; });
275
276/* harmony import */ var _filter_provided_providedFilter__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(62);
277/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvidedFilter", function() { return _filter_provided_providedFilter__WEBPACK_IMPORTED_MODULE_22__["ProvidedFilter"]; });
278
279/* harmony import */ var _filter_provided_simpleFilter__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(60);
280/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SimpleFilter", function() { return _filter_provided_simpleFilter__WEBPACK_IMPORTED_MODULE_23__["SimpleFilter"]; });
281
282/* harmony import */ var _filter_provided_scalarFilter__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(72);
283/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScalarFilter", function() { return _filter_provided_scalarFilter__WEBPACK_IMPORTED_MODULE_24__["ScalarFilter"]; });
284
285/* harmony import */ var _filter_provided_number_numberFilter__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(76);
286/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberFilter", function() { return _filter_provided_number_numberFilter__WEBPACK_IMPORTED_MODULE_25__["NumberFilter"]; });
287
288/* harmony import */ var _filter_provided_text_textFilter__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(79);
289/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextFilter", function() { return _filter_provided_text_textFilter__WEBPACK_IMPORTED_MODULE_26__["TextFilter"]; });
290
291/* harmony import */ var _filter_provided_date_dateFilter__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(58);
292/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DateFilter", function() { return _filter_provided_date_dateFilter__WEBPACK_IMPORTED_MODULE_27__["DateFilter"]; });
293
294/* harmony import */ var _filter_provided_text_textFloatingFilter__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(80);
295/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextFloatingFilter", function() { return _filter_provided_text_textFloatingFilter__WEBPACK_IMPORTED_MODULE_28__["TextFloatingFilter"]; });
296
297/* harmony import */ var _headerRendering_cells_floatingFilter_headerFilterCellComp__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(108);
298/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellComp", function() { return _headerRendering_cells_floatingFilter_headerFilterCellComp__WEBPACK_IMPORTED_MODULE_29__["HeaderFilterCellComp"]; });
299
300/* harmony import */ var _filter_floating_floatingFilterMapper__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(104);
301/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FloatingFilterMapper", function() { return _filter_floating_floatingFilterMapper__WEBPACK_IMPORTED_MODULE_30__["FloatingFilterMapper"]; });
302
303/* harmony import */ var _gridBodyComp_gridBodyComp__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(110);
304/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridBodyComp", function() { return _gridBodyComp_gridBodyComp__WEBPACK_IMPORTED_MODULE_31__["GridBodyComp"]; });
305
306/* harmony import */ var _gridBodyComp_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(114);
307/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridBodyCtrl", function() { return _gridBodyComp_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_32__["GridBodyCtrl"]; });
308
309/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowAnimationCssClasses", function() { return _gridBodyComp_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_32__["RowAnimationCssClasses"]; });
310
311/* harmony import */ var _gridBodyComp_scrollVisibleService__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(137);
312/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScrollVisibleService", function() { return _gridBodyComp_scrollVisibleService__WEBPACK_IMPORTED_MODULE_33__["ScrollVisibleService"]; });
313
314/* harmony import */ var _gridBodyComp_mouseEventService__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(138);
315/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MouseEventService", function() { return _gridBodyComp_mouseEventService__WEBPACK_IMPORTED_MODULE_34__["MouseEventService"]; });
316
317/* harmony import */ var _gridBodyComp_navigationService__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(139);
318/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NavigationService", function() { return _gridBodyComp_navigationService__WEBPACK_IMPORTED_MODULE_35__["NavigationService"]; });
319
320/* harmony import */ var _gridBodyComp_rowContainer_rowContainerComp__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(140);
321/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerComp", function() { return _gridBodyComp_rowContainer_rowContainerComp__WEBPACK_IMPORTED_MODULE_36__["RowContainerComp"]; });
322
323/* harmony import */ var _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(118);
324/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerName", function() { return _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__["RowContainerName"]; });
325
326/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerCtrl", function() { return _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__["RowContainerCtrl"]; });
327
328/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerType", function() { return _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__["RowContainerType"]; });
329
330/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getRowContainerTypeForName", function() { return _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__["getRowContainerTypeForName"]; });
331
332/* harmony import */ var _headerRendering_columnDrag_bodyDropPivotTarget__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(144);
333/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BodyDropPivotTarget", function() { return _headerRendering_columnDrag_bodyDropPivotTarget__WEBPACK_IMPORTED_MODULE_38__["BodyDropPivotTarget"]; });
334
335/* harmony import */ var _headerRendering_columnDrag_bodyDropTarget__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(145);
336/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BodyDropTarget", function() { return _headerRendering_columnDrag_bodyDropTarget__WEBPACK_IMPORTED_MODULE_39__["BodyDropTarget"]; });
337
338/* harmony import */ var _headerRendering_cells_cssClassApplier__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(147);
339/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CssClassApplier", function() { return _headerRendering_cells_cssClassApplier__WEBPACK_IMPORTED_MODULE_40__["CssClassApplier"]; });
340
341/* harmony import */ var _headerRendering_rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(148);
342/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerComp", function() { return _headerRendering_rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_41__["HeaderRowContainerComp"]; });
343
344/* harmony import */ var _headerRendering_gridHeaderComp__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(167);
345/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridHeaderComp", function() { return _headerRendering_gridHeaderComp__WEBPACK_IMPORTED_MODULE_42__["GridHeaderComp"]; });
346
347/* harmony import */ var _headerRendering_gridHeaderCtrl__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(168);
348/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridHeaderCtrl", function() { return _headerRendering_gridHeaderCtrl__WEBPACK_IMPORTED_MODULE_43__["GridHeaderCtrl"]; });
349
350/* harmony import */ var _headerRendering_row_headerRowComp__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(149);
351/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowComp", function() { return _headerRendering_row_headerRowComp__WEBPACK_IMPORTED_MODULE_44__["HeaderRowComp"]; });
352
353/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowType", function() { return _headerRendering_row_headerRowComp__WEBPACK_IMPORTED_MODULE_44__["HeaderRowType"]; });
354
355/* harmony import */ var _headerRendering_row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(153);
356/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowCtrl", function() { return _headerRendering_row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_45__["HeaderRowCtrl"]; });
357
358/* harmony import */ var _headerRendering_cells_column_headerCellCtrl__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(160);
359/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderCellCtrl", function() { return _headerRendering_cells_column_headerCellCtrl__WEBPACK_IMPORTED_MODULE_46__["HeaderCellCtrl"]; });
360
361/* harmony import */ var _headerRendering_cells_floatingFilter_headerFilterCellCtrl__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(154);
362/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellCtrl", function() { return _headerRendering_cells_floatingFilter_headerFilterCellCtrl__WEBPACK_IMPORTED_MODULE_47__["HeaderFilterCellCtrl"]; });
363
364/* harmony import */ var _headerRendering_cells_columnGroup_headerGroupCellCtrl__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(164);
365/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupCellCtrl", function() { return _headerRendering_cells_columnGroup_headerGroupCellCtrl__WEBPACK_IMPORTED_MODULE_48__["HeaderGroupCellCtrl"]; });
366
367/* harmony import */ var _headerRendering_cells_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(155);
368/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AbstractHeaderCellCtrl", function() { return _headerRendering_cells_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_49__["AbstractHeaderCellCtrl"]; });
369
370/* harmony import */ var _headerRendering_rowContainer_headerRowContainerCtrl__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(152);
371/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerCtrl", function() { return _headerRendering_rowContainer_headerRowContainerCtrl__WEBPACK_IMPORTED_MODULE_50__["HeaderRowContainerCtrl"]; });
372
373/* harmony import */ var _headerRendering_common_horizontalResizeService__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(170);
374/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HorizontalResizeService", function() { return _headerRendering_common_horizontalResizeService__WEBPACK_IMPORTED_MODULE_51__["HorizontalResizeService"]; });
375
376/* harmony import */ var _headerRendering_columnDrag_moveColumnFeature__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(146);
377/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MoveColumnFeature", function() { return _headerRendering_columnDrag_moveColumnFeature__WEBPACK_IMPORTED_MODULE_52__["MoveColumnFeature"]; });
378
379/* harmony import */ var _headerRendering_cells_column_standardMenu__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(171);
380/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StandardMenuFactory", function() { return _headerRendering_cells_column_standardMenu__WEBPACK_IMPORTED_MODULE_53__["StandardMenuFactory"]; });
381
382/* harmony import */ var _layout_tabbedLayout__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(172);
383/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabbedLayout", function() { return _layout_tabbedLayout__WEBPACK_IMPORTED_MODULE_54__["TabbedLayout"]; });
384
385/* harmony import */ var _misc_simpleHttpRequest__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(173);
386/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "simpleHttpRequest", function() { return _misc_simpleHttpRequest__WEBPACK_IMPORTED_MODULE_55__["simpleHttpRequest"]; });
387
388/* harmony import */ var _misc_resizeObserverService__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(174);
389/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResizeObserverService", function() { return _misc_resizeObserverService__WEBPACK_IMPORTED_MODULE_56__["ResizeObserverService"]; });
390
391/* harmony import */ var _misc_animationFrameService__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(175);
392/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameService", function() { return _misc_animationFrameService__WEBPACK_IMPORTED_MODULE_57__["AnimationFrameService"]; });
393
394/* harmony import */ var _rendering_cellEditors_largeTextCellEditor__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(84);
395/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LargeTextCellEditor", function() { return _rendering_cellEditors_largeTextCellEditor__WEBPACK_IMPORTED_MODULE_58__["LargeTextCellEditor"]; });
396
397/* harmony import */ var _rendering_cellEditors_popupEditorWrapper__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(143);
398/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupEditorWrapper", function() { return _rendering_cellEditors_popupEditorWrapper__WEBPACK_IMPORTED_MODULE_59__["PopupEditorWrapper"]; });
399
400/* harmony import */ var _rendering_cellEditors_popupSelectCellEditor__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(86);
401/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupSelectCellEditor", function() { return _rendering_cellEditors_popupSelectCellEditor__WEBPACK_IMPORTED_MODULE_60__["PopupSelectCellEditor"]; });
402
403/* harmony import */ var _rendering_cellEditors_popupTextCellEditor__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(88);
404/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupTextCellEditor", function() { return _rendering_cellEditors_popupTextCellEditor__WEBPACK_IMPORTED_MODULE_61__["PopupTextCellEditor"]; });
405
406/* harmony import */ var _rendering_cellEditors_selectCellEditor__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(87);
407/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectCellEditor", function() { return _rendering_cellEditors_selectCellEditor__WEBPACK_IMPORTED_MODULE_62__["SelectCellEditor"]; });
408
409/* harmony import */ var _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(89);
410/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextCellEditor", function() { return _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_63__["TextCellEditor"]; });
411
412/* harmony import */ var _rendering_beans__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(128);
413/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Beans", function() { return _rendering_beans__WEBPACK_IMPORTED_MODULE_64__["Beans"]; });
414
415/* harmony import */ var _rendering_cellRenderers_animateShowChangeCellRenderer__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(90);
416/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimateShowChangeCellRenderer", function() { return _rendering_cellRenderers_animateShowChangeCellRenderer__WEBPACK_IMPORTED_MODULE_65__["AnimateShowChangeCellRenderer"]; });
417
418/* harmony import */ var _rendering_cellRenderers_animateSlideCellRenderer__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(91);
419/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimateSlideCellRenderer", function() { return _rendering_cellRenderers_animateSlideCellRenderer__WEBPACK_IMPORTED_MODULE_66__["AnimateSlideCellRenderer"]; });
420
421/* harmony import */ var _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(92);
422/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupCellRenderer", function() { return _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_67__["GroupCellRenderer"]; });
423
424/* harmony import */ var _rendering_cellRenderers_groupCellRendererCtrl__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(93);
425/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupCellRendererCtrl", function() { return _rendering_cellRenderers_groupCellRendererCtrl__WEBPACK_IMPORTED_MODULE_68__["GroupCellRendererCtrl"]; });
426
427/* harmony import */ var _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(158);
428/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SetLeftFeature", function() { return _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_69__["SetLeftFeature"]; });
429
430/* harmony import */ var _rendering_features_positionableFeature__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(176);
431/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PositionableFeature", function() { return _rendering_features_positionableFeature__WEBPACK_IMPORTED_MODULE_70__["PositionableFeature"]; });
432
433/* harmony import */ var _rendering_autoWidthCalculator__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(177);
434/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AutoWidthCalculator", function() { return _rendering_autoWidthCalculator__WEBPACK_IMPORTED_MODULE_71__["AutoWidthCalculator"]; });
435
436/* harmony import */ var _rendering_checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(95);
437/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CheckboxSelectionComponent", function() { return _rendering_checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_72__["CheckboxSelectionComponent"]; });
438
439/* harmony import */ var _rendering_cell_cellComp__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(142);
440/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellComp", function() { return _rendering_cell_cellComp__WEBPACK_IMPORTED_MODULE_73__["CellComp"]; });
441
442/* harmony import */ var _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(121);
443/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellCtrl", function() { return _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_74__["CellCtrl"]; });
444
445/* harmony import */ var _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(120);
446/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowCtrl", function() { return _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_75__["RowCtrl"]; });
447
448/* harmony import */ var _rendering_rowRenderer__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(178);
449/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowRenderer", function() { return _rendering_rowRenderer__WEBPACK_IMPORTED_MODULE_76__["RowRenderer"]; });
450
451/* harmony import */ var _rendering_valueFormatterService__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(179);
452/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueFormatterService", function() { return _rendering_valueFormatterService__WEBPACK_IMPORTED_MODULE_77__["ValueFormatterService"]; });
453
454/* harmony import */ var _pinnedRowModel_pinnedRowModel__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(180);
455/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PinnedRowModel", function() { return _pinnedRowModel_pinnedRowModel__WEBPACK_IMPORTED_MODULE_78__["PinnedRowModel"]; });
456
457/* harmony import */ var _interfaces_serverSideTransaction__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(181);
458/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ServerSideTransactionResultStatus", function() { return _interfaces_serverSideTransaction__WEBPACK_IMPORTED_MODULE_79__["ServerSideTransactionResultStatus"]; });
459
460/* harmony import */ var _utils_changedPath__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(182);
461/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChangedPath", function() { return _utils_changedPath__WEBPACK_IMPORTED_MODULE_80__["ChangedPath"]; });
462
463/* harmony import */ var _rowNodeCache_rowNodeBlock__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(183);
464/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlock", function() { return _rowNodeCache_rowNodeBlock__WEBPACK_IMPORTED_MODULE_81__["RowNodeBlock"]; });
465
466/* harmony import */ var _rowNodeCache_rowNodeBlockLoader__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(184);
467/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlockLoader", function() { return _rowNodeCache_rowNodeBlockLoader__WEBPACK_IMPORTED_MODULE_82__["RowNodeBlockLoader"]; });
468
469/* harmony import */ var _pagination_paginationProxy__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(185);
470/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PaginationProxy", function() { return _pagination_paginationProxy__WEBPACK_IMPORTED_MODULE_83__["PaginationProxy"]; });
471
472/* harmony import */ var _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(157);
473/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelSteps", function() { return _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_84__["ClientSideRowModelSteps"]; });
474
475/* harmony import */ var _styling_stylingService__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(186);
476/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StylingService", function() { return _styling_stylingService__WEBPACK_IMPORTED_MODULE_85__["StylingService"]; });
477
478/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(111);
479/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LayoutCssClasses", function() { return _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_86__["LayoutCssClasses"]; });
480
481/* harmony import */ var _widgets_agAbstractField__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(67);
482/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgAbstractField", function() { return _widgets_agAbstractField__WEBPACK_IMPORTED_MODULE_87__["AgAbstractField"]; });
483
484/* harmony import */ var _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(163);
485/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgCheckbox", function() { return _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_88__["AgCheckbox"]; });
486
487/* harmony import */ var _widgets_agRadioButton__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(187);
488/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgRadioButton", function() { return _widgets_agRadioButton__WEBPACK_IMPORTED_MODULE_89__["AgRadioButton"]; });
489
490/* harmony import */ var _widgets_agToggleButton__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(188);
491/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgToggleButton", function() { return _widgets_agToggleButton__WEBPACK_IMPORTED_MODULE_90__["AgToggleButton"]; });
492
493/* harmony import */ var _widgets_agInputTextField__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(189);
494/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputTextField", function() { return _widgets_agInputTextField__WEBPACK_IMPORTED_MODULE_91__["AgInputTextField"]; });
495
496/* harmony import */ var _widgets_agInputTextArea__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(190);
497/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputTextArea", function() { return _widgets_agInputTextArea__WEBPACK_IMPORTED_MODULE_92__["AgInputTextArea"]; });
498
499/* harmony import */ var _widgets_agInputNumberField__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(191);
500/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputNumberField", function() { return _widgets_agInputNumberField__WEBPACK_IMPORTED_MODULE_93__["AgInputNumberField"]; });
501
502/* harmony import */ var _widgets_agInputRange__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(192);
503/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputRange", function() { return _widgets_agInputRange__WEBPACK_IMPORTED_MODULE_94__["AgInputRange"]; });
504
505/* harmony import */ var _widgets_agSelect__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(66);
506/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgSelect", function() { return _widgets_agSelect__WEBPACK_IMPORTED_MODULE_95__["AgSelect"]; });
507
508/* harmony import */ var _widgets_agSlider__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(193);
509/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgSlider", function() { return _widgets_agSlider__WEBPACK_IMPORTED_MODULE_96__["AgSlider"]; });
510
511/* harmony import */ var _widgets_agAngleSelect__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(194);
512/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgAngleSelect", function() { return _widgets_agAngleSelect__WEBPACK_IMPORTED_MODULE_97__["AgAngleSelect"]; });
513
514/* harmony import */ var _widgets_agColorPicker__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(195);
515/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgColorPicker", function() { return _widgets_agColorPicker__WEBPACK_IMPORTED_MODULE_98__["AgColorPicker"]; });
516
517/* harmony import */ var _widgets_agGroupComponent__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(199);
518/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgGroupComponent", function() { return _widgets_agGroupComponent__WEBPACK_IMPORTED_MODULE_99__["AgGroupComponent"]; });
519
520/* harmony import */ var _widgets_agMenuItemComponent__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(200);
521/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuItemComponent", function() { return _widgets_agMenuItemComponent__WEBPACK_IMPORTED_MODULE_100__["AgMenuItemComponent"]; });
522
523/* harmony import */ var _widgets_agMenuList__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(201);
524/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuList", function() { return _widgets_agMenuList__WEBPACK_IMPORTED_MODULE_101__["AgMenuList"]; });
525
526/* harmony import */ var _widgets_agMenuPanel__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(204);
527/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuPanel", function() { return _widgets_agMenuPanel__WEBPACK_IMPORTED_MODULE_102__["AgMenuPanel"]; });
528
529/* harmony import */ var _widgets_agDialog__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(197);
530/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgDialog", function() { return _widgets_agDialog__WEBPACK_IMPORTED_MODULE_103__["AgDialog"]; });
531
532/* harmony import */ var _widgets_agPanel__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(198);
533/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPanel", function() { return _widgets_agPanel__WEBPACK_IMPORTED_MODULE_104__["AgPanel"]; });
534
535/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(36);
536/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return _widgets_component__WEBPACK_IMPORTED_MODULE_105__["Component"]; });
537
538/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CssClassManager", function() { return _widgets_component__WEBPACK_IMPORTED_MODULE_105__["CssClassManager"]; });
539
540/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(64);
541/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ManagedFocusFeature", function() { return _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_106__["ManagedFocusFeature"]; });
542
543/* harmony import */ var _widgets_tabGuardComp__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(202);
544/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabGuardComp", function() { return _widgets_tabGuardComp__WEBPACK_IMPORTED_MODULE_107__["TabGuardComp"]; });
545
546/* harmony import */ var _widgets_tabGuardCtrl__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(203);
547/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabGuardCtrl", function() { return _widgets_tabGuardCtrl__WEBPACK_IMPORTED_MODULE_108__["TabGuardCtrl"]; });
548
549/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(85);
550/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupComponent", function() { return _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_109__["PopupComponent"]; });
551
552/* harmony import */ var _widgets_popupService__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(205);
553/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupService", function() { return _widgets_popupService__WEBPACK_IMPORTED_MODULE_110__["PopupService"]; });
554
555/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(82);
556/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchListener", function() { return _widgets_touchListener__WEBPACK_IMPORTED_MODULE_111__["TouchListener"]; });
557
558/* harmony import */ var _widgets_virtualList__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(207);
559/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualList", function() { return _widgets_virtualList__WEBPACK_IMPORTED_MODULE_112__["VirtualList"]; });
560
561/* harmony import */ var _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(123);
562/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellRangeType", function() { return _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_113__["CellRangeType"]; });
563
564/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectionHandleType", function() { return _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_113__["SelectionHandleType"]; });
565
566/* harmony import */ var _autoScrollService__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(117);
567/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AutoScrollService", function() { return _autoScrollService__WEBPACK_IMPORTED_MODULE_114__["AutoScrollService"]; });
568
569/* harmony import */ var _vanillaFrameworkOverrides__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(208);
570/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VanillaFrameworkOverrides", function() { return _vanillaFrameworkOverrides__WEBPACK_IMPORTED_MODULE_115__["VanillaFrameworkOverrides"]; });
571
572/* harmony import */ var _cellNavigationService__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(209);
573/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellNavigationService", function() { return _cellNavigationService__WEBPACK_IMPORTED_MODULE_116__["CellNavigationService"]; });
574
575/* harmony import */ var _alignedGridsService__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(210);
576/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AlignedGridsService", function() { return _alignedGridsService__WEBPACK_IMPORTED_MODULE_117__["AlignedGridsService"]; });
577
578/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(15);
579/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Constants", function() { return _constants_constants__WEBPACK_IMPORTED_MODULE_118__["Constants"]; });
580
581/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(65);
582/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "KeyCode", function() { return _constants_keyCode__WEBPACK_IMPORTED_MODULE_119__["KeyCode"]; });
583
584/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(211);
585/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return _grid__WEBPACK_IMPORTED_MODULE_120__["Grid"]; });
586
587/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridCoreCreator", function() { return _grid__WEBPACK_IMPORTED_MODULE_120__["GridCoreCreator"]; });
588
589/* harmony import */ var _gridApi__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(156);
590/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridApi", function() { return _gridApi__WEBPACK_IMPORTED_MODULE_121__["GridApi"]; });
591
592/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(24);
593/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return _eventKeys__WEBPACK_IMPORTED_MODULE_122__["Events"]; });
594
595/* harmony import */ var _focusService__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(206);
596/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FocusService", function() { return _focusService__WEBPACK_IMPORTED_MODULE_123__["FocusService"]; });
597
598/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(248);
599/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultGroupComparator", function() { return _functions__WEBPACK_IMPORTED_MODULE_124__["defaultGroupComparator"]; });
600
601/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(112);
602/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridOptionsWrapper", function() { return _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_125__["GridOptionsWrapper"]; });
603
604/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(11);
605/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EventService", function() { return _eventService__WEBPACK_IMPORTED_MODULE_126__["EventService"]; });
606
607/* harmony import */ var _rowNodes_selectableService__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(231);
608/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectableService", function() { return _rowNodes_selectableService__WEBPACK_IMPORTED_MODULE_127__["SelectableService"]; });
609
610/* harmony import */ var _rowNodes_rowNodeSorter__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(241);
611/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeSorter", function() { return _rowNodes_rowNodeSorter__WEBPACK_IMPORTED_MODULE_128__["RowNodeSorter"]; });
612
613/* harmony import */ var _ctrlsService__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(242);
614/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CtrlsService", function() { return _ctrlsService__WEBPACK_IMPORTED_MODULE_129__["CtrlsService"]; });
615
616/* harmony import */ var _gridComp_gridComp__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(218);
617/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridComp", function() { return _gridComp_gridComp__WEBPACK_IMPORTED_MODULE_130__["GridComp"]; });
618
619/* harmony import */ var _gridComp_gridCtrl__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(219);
620/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridCtrl", function() { return _gridComp_gridCtrl__WEBPACK_IMPORTED_MODULE_131__["GridCtrl"]; });
621
622/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(217);
623/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Logger", function() { return _logger__WEBPACK_IMPORTED_MODULE_132__["Logger"]; });
624
625/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LoggerFactory", function() { return _logger__WEBPACK_IMPORTED_MODULE_132__["LoggerFactory"]; });
626
627/* harmony import */ var _selectionService__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(212);
628/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectionService", function() { return _selectionService__WEBPACK_IMPORTED_MODULE_133__["SelectionService"]; });
629
630/* harmony import */ var _sortController__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(220);
631/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SortController", function() { return _sortController__WEBPACK_IMPORTED_MODULE_134__["SortController"]; });
632
633/* harmony import */ var _templateService__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(216);
634/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TemplateService", function() { return _templateService__WEBPACK_IMPORTED_MODULE_135__["TemplateService"]; });
635
636/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(37);
637/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["Color"]; });
638
639/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stringToArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["stringToArray"]; });
640
641/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["_"]; });
642
643/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberSequence", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["NumberSequence"]; });
644
645/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromiseStatus", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["AgPromiseStatus"]; });
646
647/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromise", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["AgPromise"]; });
648
649/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["Timer"]; });
650
651/* harmony import */ var _valueService_valueService__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(214);
652/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueService", function() { return _valueService_valueService__WEBPACK_IMPORTED_MODULE_137__["ValueService"]; });
653
654/* harmony import */ var _valueService_valueCache__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(225);
655/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueCache", function() { return _valueService_valueCache__WEBPACK_IMPORTED_MODULE_138__["ValueCache"]; });
656
657/* harmony import */ var _valueService_expressionService__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(215);
658/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ExpressionService", function() { return _valueService_expressionService__WEBPACK_IMPORTED_MODULE_139__["ExpressionService"]; });
659
660/* harmony import */ var _entities_cellPosition__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(235);
661/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellPositionUtils", function() { return _entities_cellPosition__WEBPACK_IMPORTED_MODULE_140__["CellPositionUtils"]; });
662
663/* harmony import */ var _entities_rowPosition__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(234);
664/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowPositionUtils", function() { return _entities_rowPosition__WEBPACK_IMPORTED_MODULE_141__["RowPositionUtils"]; });
665
666/* harmony import */ var _headerRendering_common_headerPosition__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(238);
667/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderPositionUtils", function() { return _headerRendering_common_headerPosition__WEBPACK_IMPORTED_MODULE_142__["HeaderPositionUtils"]; });
668
669/* harmony import */ var _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(169);
670/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationService", function() { return _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_143__["HeaderNavigationService"]; });
671
672/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationDirection", function() { return _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_143__["HeaderNavigationDirection"]; });
673
674/* harmony import */ var _propertyKeys__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(31);
675/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PropertyKeys", function() { return _propertyKeys__WEBPACK_IMPORTED_MODULE_144__["PropertyKeys"]; });
676
677/* harmony import */ var _columns_columnApi__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(213);
678/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnApi", function() { return _columns_columnApi__WEBPACK_IMPORTED_MODULE_145__["ColumnApi"]; });
679
680/* harmony import */ var _components_framework_frameworkComponentWrapper__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(249);
681/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseComponentWrapper", function() { return _components_framework_frameworkComponentWrapper__WEBPACK_IMPORTED_MODULE_146__["BaseComponentWrapper"]; });
682
683/* harmony import */ var _environment__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(229);
684/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return _environment__WEBPACK_IMPORTED_MODULE_147__["Environment"]; });
685
686/* harmony import */ var _widgets_customTooltipFeature__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(56);
687/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CustomTooltipFeature", function() { return _widgets_customTooltipFeature__WEBPACK_IMPORTED_MODULE_148__["CustomTooltipFeature"]; });
688
689/* harmony import */ var _interfaces_iSparklineCellRendererParams__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(250);
690/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BarColumnLabelPlacement", function() { return _interfaces_iSparklineCellRendererParams__WEBPACK_IMPORTED_MODULE_149__["BarColumnLabelPlacement"]; });
691
692/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(16);
693/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModuleNames", function() { return _modules_moduleNames__WEBPACK_IMPORTED_MODULE_150__["ModuleNames"]; });
694
695/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(17);
696/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModuleRegistry", function() { return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_151__["ModuleRegistry"]; });
697
698/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(23);
699/* empty/unused harmony star reexport *//**
700 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
701 * @version v27.3.0
702 * @link https://www.ag-grid.com/
703 * @license MIT
704 */
705var globalObj = typeof global === 'undefined' ? {} : global;
706globalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;
707globalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;
708globalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;
709globalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;
710globalObj.Node = typeof Node === 'undefined' ? {} : Node;
711globalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;
712// columns
713
714
715
716
717
718
719// components
720
721
722
723
724
725// context
726
727
728
729// excel
730
731// dragAndDrop
732
733
734// entities
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749// gridPanel
750
751
752
753
754
755// rowContainer
756
757
758// headerRendering
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775// layout
776
777// misc
778
779
780
781
782
783
784
785
786
787// rendering / cellRenderers
788
789
790
791
792
793// features
794
795
796// rendering
797
798
799
800
801
802
803
804// row models
805
806
807
808
809
810
811
812//styling
813
814
815// widgets
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842// range
843
844// root
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
871
872
873
874
875
876
877
878
879
880// sparklines
881
882
883
884// events
885
886
887
888
889/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4)))
890
891/***/ }),
892/* 4 */
893/***/ (function(module, exports) {
894
895var g;
896
897// This works in non-strict mode
898g = (function() {
899 return this;
900})();
901
902try {
903 // This works if eval is allowed (see CSP)
904 g = g || new Function("return this")();
905} catch (e) {
906 // This works if the window reference is available
907 if (typeof window === "object") g = window;
908}
909
910// g can still be undefined, but nothing to do about it...
911// We return undefined, instead of nothing here, so it's
912// easier to handle this case. if(!global) { ...}
913
914module.exports = g;
915
916
917/***/ }),
918/* 5 */
919/***/ (function(module, __webpack_exports__, __webpack_require__) {
920
921"use strict";
922__webpack_require__.r(__webpack_exports__);
923/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnFactory", function() { return ColumnFactory; });
924/* harmony import */ var _columnKeyCreator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
925/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
926/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
927/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
928/* harmony import */ var _entities_defaultColumnTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(19);
929/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
930/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15);
931/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13);
932/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7);
933/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(18);
934/**
935 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
936 * @version v27.3.0
937 * @link https://www.ag-grid.com/
938 * @license MIT
939 */
940var __extends = (undefined && undefined.__extends) || (function () {
941 var extendStatics = function (d, b) {
942 extendStatics = Object.setPrototypeOf ||
943 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
944 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
945 return extendStatics(d, b);
946 };
947 return function (d, b) {
948 extendStatics(d, b);
949 function __() { this.constructor = d; }
950 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
951 };
952})();
953var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
954 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
955 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
956 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;
957 return c > 3 && r && Object.defineProperty(target, key, r), r;
958};
959var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
960 return function (target, key) { decorator(target, key, paramIndex); }
961};
962
963
964
965
966
967
968
969
970
971
972// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups
973var ColumnFactory = /** @class */ (function (_super) {
974 __extends(ColumnFactory, _super);
975 function ColumnFactory() {
976 return _super !== null && _super.apply(this, arguments) || this;
977 }
978 ColumnFactory.prototype.setBeans = function (loggerFactory) {
979 this.logger = loggerFactory.create('ColumnFactory');
980 };
981 ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingTree) {
982 // column key creator dishes out unique column id's in a deterministic way,
983 // so if we have two grids (that could be master/slave) with same column definitions,
984 // then this ensures the two grids use identical id's.
985 var columnKeyCreator = new _columnKeyCreator__WEBPACK_IMPORTED_MODULE_0__["ColumnKeyCreator"]();
986 var _a = this.extractExistingTreeData(existingTree), existingCols = _a.existingCols, existingGroups = _a.existingGroups, existingColKeys = _a.existingColKeys;
987 columnKeyCreator.addExistingKeys(existingColKeys);
988 // create am unbalanced tree that maps the provided definitions
989 var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingCols, columnKeyCreator, existingGroups);
990 var treeDept = this.findMaxDept(unbalancedTree, 0);
991 this.logger.log('Number of levels for grouped columns is ' + treeDept);
992 var columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);
993 var deptFirstCallback = function (child, parent) {
994 if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
995 child.setupExpandable();
996 }
997 // we set the original parents at the end, rather than when we go along, as balancing the tree
998 // adds extra levels into the tree. so we can only set parents when balancing is done.
999 child.setOriginalParent(parent);
1000 };
1001 this.columnUtils.depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);
1002 return {
1003 columnTree: columnTree,
1004 treeDept: treeDept
1005 };
1006 };
1007 ColumnFactory.prototype.extractExistingTreeData = function (existingTree) {
1008 var existingCols = [];
1009 var existingGroups = [];
1010 var existingColKeys = [];
1011 if (existingTree) {
1012 this.columnUtils.depthFirstOriginalTreeSearch(null, existingTree, function (item) {
1013 if (item instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
1014 var group = item;
1015 existingGroups.push(group);
1016 }
1017 else {
1018 var col = item;
1019 existingColKeys.push(col.getId());
1020 existingCols.push(col);
1021 }
1022 });
1023 }
1024 return { existingCols: existingCols, existingGroups: existingGroups, existingColKeys: existingColKeys };
1025 };
1026 ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {
1027 var _this = this;
1028 return autoGroupCols.map(function (col) { return _this.createAutoGroupTreeItem(gridBalancedTree, col); });
1029 };
1030 ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {
1031 var dept = this.findDepth(balancedColumnTree);
1032 // at the end, this will be the top of the tree item.
1033 var nextChild = column;
1034 for (var i = dept - 1; i >= 0; i--) {
1035 var autoGroup = new _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"](null, "FAKE_PATH_" + column.getId() + "}_" + i, true, i);
1036 this.context.createBean(autoGroup);
1037 autoGroup.setChildren([nextChild]);
1038 nextChild.setOriginalParent(autoGroup);
1039 nextChild = autoGroup;
1040 }
1041 // at this point, the nextChild is the top most item in the tree
1042 return nextChild;
1043 };
1044 ColumnFactory.prototype.findDepth = function (balancedColumnTree) {
1045 var dept = 0;
1046 var pointer = balancedColumnTree;
1047 while (pointer && pointer[0] && pointer[0] instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
1048 dept++;
1049 pointer = pointer[0].getChildren();
1050 }
1051 return dept;
1052 };
1053 ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {
1054 var result = [];
1055 // go through each child, for groups, recurse a level deeper,
1056 // for columns we need to pad
1057 for (var i = 0; i < unbalancedTree.length; i++) {
1058 var child = unbalancedTree[i];
1059 if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
1060 // child is a group, all we do is go to the next level of recursion
1061 var originalGroup = child;
1062 var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);
1063 originalGroup.setChildren(newChildren);
1064 result.push(originalGroup);
1065 }
1066 else {
1067 // child is a column - so here we add in the padded column groups if needed
1068 var firstPaddedGroup = void 0;
1069 var currentPaddedGroup = void 0;
1070 // this for loop will NOT run any loops if no padded column groups are needed
1071 for (var j = columnDept - 1; j >= currentDept; j--) {
1072 var newColId = columnKeyCreator.getUniqueKey(null, null);
1073 var colGroupDefMerged = this.createMergedColGroupDef(null);
1074 var paddedGroup = new _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"](colGroupDefMerged, newColId, true, currentDept);
1075 this.context.createBean(paddedGroup);
1076 if (currentPaddedGroup) {
1077 currentPaddedGroup.setChildren([paddedGroup]);
1078 }
1079 currentPaddedGroup = paddedGroup;
1080 if (!firstPaddedGroup) {
1081 firstPaddedGroup = currentPaddedGroup;
1082 }
1083 }
1084 // likewise this if statement will not run if no padded groups
1085 if (firstPaddedGroup && currentPaddedGroup) {
1086 result.push(firstPaddedGroup);
1087 var hasGroups = unbalancedTree.some(function (leaf) { return leaf instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]; });
1088 if (hasGroups) {
1089 currentPaddedGroup.setChildren([child]);
1090 continue;
1091 }
1092 else {
1093 currentPaddedGroup.setChildren(unbalancedTree);
1094 break;
1095 }
1096 }
1097 result.push(child);
1098 }
1099 }
1100 return result;
1101 };
1102 ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {
1103 var maxDeptThisLevel = dept;
1104 for (var i = 0; i < treeChildren.length; i++) {
1105 var abstractColumn = treeChildren[i];
1106 if (abstractColumn instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
1107 var originalGroup = abstractColumn;
1108 var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);
1109 if (maxDeptThisLevel < newDept) {
1110 maxDeptThisLevel = newDept;
1111 }
1112 }
1113 }
1114 return maxDeptThisLevel;
1115 };
1116 ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups) {
1117 var _this = this;
1118 return (defs || []).map(function (def) {
1119 if (_this.isColumnGroup(def)) {
1120 return _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, existingGroups);
1121 }
1122 else {
1123 return _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator);
1124 }
1125 });
1126 };
1127 ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups) {
1128 var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);
1129 var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);
1130 var providedGroup = new _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"](colGroupDefMerged, groupId, false, level);
1131 this.context.createBean(providedGroup);
1132 var existingGroup = this.findExistingGroup(colGroupDef, existingGroups);
1133 // make sure we remove, so if user provided duplicate id, then we don't have more than
1134 // one column instance for colDef with common id
1135 if (existingGroup) {
1136 Object(_utils_array__WEBPACK_IMPORTED_MODULE_9__["removeFromArray"])(existingGroups, existingGroup);
1137 }
1138 if (existingGroup && existingGroup.isExpanded()) {
1139 providedGroup.setExpanded(true);
1140 }
1141 var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, existingGroups);
1142 providedGroup.setChildren(children);
1143 return providedGroup;
1144 };
1145 ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {
1146 var colGroupDefMerged = {};
1147 Object.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());
1148 Object.assign(colGroupDefMerged, colGroupDef);
1149 this.checkForDeprecatedItems(colGroupDefMerged);
1150 return colGroupDefMerged;
1151 };
1152 ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator) {
1153 var colDefMerged = this.mergeColDefs(colDef);
1154 this.checkForDeprecatedItems(colDefMerged);
1155 // see if column already exists
1156 var column = this.findExistingColumn(colDef, existingColsCopy);
1157 // make sure we remove, so if user provided duplicate id, then we don't have more than
1158 // one column instance for colDef with common id
1159 if (existingColsCopy && column) {
1160 Object(_utils_array__WEBPACK_IMPORTED_MODULE_9__["removeFromArray"])(existingColsCopy, column);
1161 }
1162 if (!column) {
1163 // no existing column, need to create one
1164 var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);
1165 column = new _entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"](colDefMerged, colDef, colId, primaryColumns);
1166 this.context.createBean(column);
1167 }
1168 else {
1169 column.setColDef(colDefMerged, colDef);
1170 this.applyColumnState(column, colDefMerged);
1171 }
1172 return column;
1173 };
1174 ColumnFactory.prototype.applyColumnState = function (column, colDef) {
1175 // flex
1176 var flex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["attrToNumber"])(colDef.flex);
1177 if (flex !== undefined) {
1178 column.setFlex(flex);
1179 }
1180 // width - we only set width if column is not flexing
1181 var noFlexThisCol = column.getFlex() <= 0;
1182 if (noFlexThisCol) {
1183 // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)
1184 var width = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["attrToNumber"])(colDef.width);
1185 if (width != null) {
1186 column.setActualWidth(width);
1187 }
1188 else {
1189 // otherwise set the width again, in case min or max width has changed,
1190 // and width needs to be adjusted.
1191 var widthBeforeUpdate = column.getActualWidth();
1192 column.setActualWidth(widthBeforeUpdate);
1193 }
1194 }
1195 // sort - anything but undefined will set sort, thus null or empty string will clear the sort
1196 if (colDef.sort !== undefined) {
1197 if (colDef.sort == _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].SORT_ASC || colDef.sort == _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].SORT_DESC) {
1198 column.setSort(colDef.sort);
1199 }
1200 else {
1201 column.setSort(undefined);
1202 }
1203 }
1204 // sorted at - anything but undefined, thus null will clear the sortIndex
1205 var sortIndex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["attrToNumber"])(colDef.sortIndex);
1206 if (sortIndex !== undefined) {
1207 column.setSortIndex(sortIndex);
1208 }
1209 // hide - anything but undefined, thus null will clear the hide
1210 var hide = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["attrToBoolean"])(colDef.hide);
1211 if (hide !== undefined) {
1212 column.setVisible(!hide);
1213 }
1214 // pinned - anything but undefined, thus null or empty string will remove pinned
1215 if (colDef.pinned !== undefined) {
1216 column.setPinned(colDef.pinned);
1217 }
1218 };
1219 ColumnFactory.prototype.findExistingColumn = function (newColDef, existingColsCopy) {
1220 return (existingColsCopy || []).find(function (existingCol) {
1221 var existingColDef = existingCol.getUserProvidedColDef();
1222 if (!existingColDef) {
1223 return false;
1224 }
1225 var newHasId = newColDef.colId != null;
1226 var newHasField = newColDef.field != null;
1227 if (newHasId) {
1228 return existingCol.getId() === newColDef.colId;
1229 }
1230 if (newHasField) {
1231 return existingColDef.field === newColDef.field;
1232 }
1233 // if no id or field present, then try object equivalence.
1234 if (existingColDef === newColDef) {
1235 return true;
1236 }
1237 return false;
1238 });
1239 };
1240 ColumnFactory.prototype.findExistingGroup = function (newGroupDef, existingGroups) {
1241 return existingGroups.find(function (existingGroup) {
1242 var existingDef = existingGroup.getColGroupDef();
1243 if (!existingDef) {
1244 return false;
1245 }
1246 var newHasId = newGroupDef.groupId != null;
1247 if (newHasId) {
1248 return existingGroup.getId() === newGroupDef.groupId;
1249 }
1250 return false;
1251 });
1252 };
1253 ColumnFactory.prototype.mergeColDefs = function (colDef) {
1254 // start with empty merged definition
1255 var colDefMerged = {};
1256 // merge properties from default column definitions
1257 var defaultColDef = this.gridOptionsWrapper.getDefaultColDef();
1258 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["mergeDeep"])(colDefMerged, defaultColDef, false, true);
1259 // merge properties from column type properties
1260 var columnType = colDef.type;
1261 if (!columnType) {
1262 columnType = defaultColDef && defaultColDef.type;
1263 }
1264 // if type of both colDef and defaultColDef, then colDef gets preference
1265 if (columnType) {
1266 this.assignColumnTypes(columnType, colDefMerged);
1267 }
1268 // merge properties from column definitions
1269 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["mergeDeep"])(colDefMerged, colDef, false, true);
1270 return colDefMerged;
1271 };
1272 ColumnFactory.prototype.assignColumnTypes = function (type, colDefMerged) {
1273 var typeKeys = [];
1274 if (type instanceof Array) {
1275 var invalidArray = type.some(function (a) { return typeof a !== 'string'; });
1276 if (invalidArray) {
1277 console.warn("AG Grid: if colDef.type is supplied an array it should be of type 'string[]'");
1278 }
1279 else {
1280 typeKeys = type;
1281 }
1282 }
1283 else if (typeof type === 'string') {
1284 typeKeys = type.split(',');
1285 }
1286 else {
1287 console.warn("AG Grid: colDef.type should be of type 'string' | 'string[]'");
1288 return;
1289 }
1290 // merge user defined with default column types
1291 var allColumnTypes = Object.assign({}, _entities_defaultColumnTypes__WEBPACK_IMPORTED_MODULE_4__["DefaultColumnTypes"]);
1292 var userTypes = this.gridOptionsWrapper.getColumnTypes() || {};
1293 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["iterateObject"])(userTypes, function (key, value) {
1294 if (key in allColumnTypes) {
1295 console.warn("AG Grid: the column type '" + key + "' is a default column type and cannot be overridden.");
1296 }
1297 else {
1298 allColumnTypes[key] = value;
1299 }
1300 });
1301 typeKeys.forEach(function (t) {
1302 var typeColDef = allColumnTypes[t.trim()];
1303 if (typeColDef) {
1304 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["mergeDeep"])(colDefMerged, typeColDef, false, true);
1305 }
1306 else {
1307 console.warn("AG Grid: colDef.type '" + t + "' does not correspond to defined gridOptions.columnTypes");
1308 }
1309 });
1310 };
1311 ColumnFactory.prototype.checkForDeprecatedItems = function (colDef) {
1312 if (colDef) {
1313 var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type
1314 if (colDefNoType.group !== undefined) {
1315 console.warn('AG Grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');
1316 }
1317 if (colDefNoType.headerGroup !== undefined) {
1318 console.warn('AG Grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');
1319 }
1320 if (colDefNoType.headerGroupShow !== undefined) {
1321 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');
1322 }
1323 if (colDefNoType.suppressRowGroup !== undefined) {
1324 console.warn('AG Grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');
1325 }
1326 if (colDefNoType.suppressAggregation !== undefined) {
1327 console.warn('AG Grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');
1328 }
1329 if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {
1330 console.warn('AG Grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');
1331 }
1332 if (colDefNoType.displayName) {
1333 console.warn("AG Grid: Found displayName " + colDefNoType.displayName + ", please use headerName instead, displayName is deprecated.");
1334 colDefNoType.headerName = colDefNoType.displayName;
1335 }
1336 }
1337 };
1338 // if object has children, we assume it's a group
1339 ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {
1340 return abstractColDef.children !== undefined;
1341 };
1342 __decorate([
1343 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('columnUtils')
1344 ], ColumnFactory.prototype, "columnUtils", void 0);
1345 __decorate([
1346 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Qualifier"])('loggerFactory'))
1347 ], ColumnFactory.prototype, "setBeans", null);
1348 ColumnFactory = __decorate([
1349 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Bean"])('columnFactory')
1350 ], ColumnFactory);
1351 return ColumnFactory;
1352}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
1353
1354
1355
1356
1357
1358/***/ }),
1359/* 6 */
1360/***/ (function(module, __webpack_exports__, __webpack_require__) {
1361
1362"use strict";
1363__webpack_require__.r(__webpack_exports__);
1364/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnKeyCreator", function() { return ColumnKeyCreator; });
1365/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
1366/**
1367 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
1368 * @version v27.3.0
1369 * @link https://www.ag-grid.com/
1370 * @license MIT
1371 */
1372// class returns a unique id to use for the column. it checks the existing columns, and if the requested
1373// id is already taken, it will start appending numbers until it gets a unique id.
1374// eg, if the col field is 'name', it will try ids: {name, name_1, name_2...}
1375// if no field or id provided in the col, it will try the ids of natural numbers
1376
1377var ColumnKeyCreator = /** @class */ (function () {
1378 function ColumnKeyCreator() {
1379 this.existingKeys = {};
1380 }
1381 ColumnKeyCreator.prototype.addExistingKeys = function (keys) {
1382 for (var i = 0; i < keys.length; i++) {
1383 this.existingKeys[keys[i]] = true;
1384 }
1385 };
1386 ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {
1387 // in case user passed in number for colId, convert to string
1388 colId = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["toStringOrNull"])(colId);
1389 var count = 0;
1390 while (true) {
1391 var idToTry = void 0;
1392 if (colId) {
1393 idToTry = colId;
1394 if (count !== 0) {
1395 idToTry += '_' + count;
1396 }
1397 }
1398 else if (colField) {
1399 idToTry = colField;
1400 if (count !== 0) {
1401 idToTry += '_' + count;
1402 }
1403 }
1404 else {
1405 idToTry = '' + count;
1406 }
1407 if (!this.existingKeys[idToTry]) {
1408 this.existingKeys[idToTry] = true;
1409 return idToTry;
1410 }
1411 count++;
1412 }
1413 };
1414 return ColumnKeyCreator;
1415}());
1416
1417
1418
1419
1420
1421/***/ }),
1422/* 7 */
1423/***/ (function(module, __webpack_exports__, __webpack_require__) {
1424
1425"use strict";
1426__webpack_require__.r(__webpack_exports__);
1427/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeNull", function() { return makeNull; });
1428/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exists", function() { return exists; });
1429/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "missing", function() { return missing; });
1430/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "missingOrEmpty", function() { return missingOrEmpty; });
1431/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toStringOrNull", function() { return toStringOrNull; });
1432/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attrToNumber", function() { return attrToNumber; });
1433/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attrToBoolean", function() { return attrToBoolean; });
1434/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attrToString", function() { return attrToString; });
1435/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "referenceCompare", function() { return referenceCompare; });
1436/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "jsonEquals", function() { return jsonEquals; });
1437/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultComparator", function() { return defaultComparator; });
1438/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "values", function() { return values; });
1439/**
1440 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
1441 * @version v27.3.0
1442 * @link https://www.ag-grid.com/
1443 * @license MIT
1444 */
1445/**
1446 * If value is undefined, null or blank, returns null, otherwise returns the value
1447 * @param {T} value
1448 * @returns {T | null}
1449 */
1450function makeNull(value) {
1451 if (value == null || value === '') {
1452 return null;
1453 }
1454 return value;
1455}
1456function exists(value, allowEmptyString) {
1457 if (allowEmptyString === void 0) { allowEmptyString = false; }
1458 return value != null && (value !== '' || allowEmptyString);
1459}
1460function missing(value) {
1461 return !exists(value);
1462}
1463function missingOrEmpty(value) {
1464 return value == null || value.length === 0;
1465}
1466function toStringOrNull(value) {
1467 return value != null && typeof value.toString === 'function' ? value.toString() : null;
1468}
1469// for parsing html attributes, where we want empty strings and missing attributes to be undefined
1470function attrToNumber(value) {
1471 if (value === undefined) {
1472 // undefined or empty means ignore the value
1473 return;
1474 }
1475 if (value === null || value === '') {
1476 // null or blank means clear
1477 return null;
1478 }
1479 if (typeof value === 'number') {
1480 return isNaN(value) ? undefined : value;
1481 }
1482 var valueParsed = parseInt(value, 10);
1483 return isNaN(valueParsed) ? undefined : valueParsed;
1484}
1485// for parsing html attributes, where we want empty strings and missing attributes to be undefined
1486function attrToBoolean(value) {
1487 if (value === undefined) {
1488 // undefined or empty means ignore the value
1489 return;
1490 }
1491 if (value === null || value === '') {
1492 // null means clear
1493 return false;
1494 }
1495 if (typeof value === 'boolean') {
1496 // if simple boolean, return the boolean
1497 return value;
1498 }
1499 // if equal to the string 'true' (ignoring case) then return true
1500 return (/true/i).test(value);
1501}
1502// for parsing html attributes, where we want empty strings and missing attributes to be undefined
1503function attrToString(value) {
1504 if (value == null || value === '') {
1505 return;
1506 }
1507 return value;
1508}
1509/** @deprecated */
1510function referenceCompare(left, right) {
1511 if (left == null && right == null) {
1512 return true;
1513 }
1514 if (left == null && right != null) {
1515 return false;
1516 }
1517 if (left != null && right == null) {
1518 return false;
1519 }
1520 return left === right;
1521}
1522function jsonEquals(val1, val2) {
1523 var val1Json = val1 ? JSON.stringify(val1) : null;
1524 var val2Json = val2 ? JSON.stringify(val2) : null;
1525 return val1Json === val2Json;
1526}
1527function defaultComparator(valueA, valueB, accentedCompare) {
1528 if (accentedCompare === void 0) { accentedCompare = false; }
1529 var valueAMissing = valueA == null;
1530 var valueBMissing = valueB == null;
1531 // this is for aggregations sum and avg, where the result can be a number that is wrapped.
1532 // if we didn't do this, then the toString() value would be used, which would result in
1533 // the strings getting used instead of the numbers.
1534 if (valueA && valueA.toNumber) {
1535 valueA = valueA.toNumber();
1536 }
1537 if (valueB && valueB.toNumber) {
1538 valueB = valueB.toNumber();
1539 }
1540 if (valueAMissing && valueBMissing) {
1541 return 0;
1542 }
1543 if (valueAMissing) {
1544 return -1;
1545 }
1546 if (valueBMissing) {
1547 return 1;
1548 }
1549 function doQuickCompare(a, b) {
1550 return (a > b ? 1 : (a < b ? -1 : 0));
1551 }
1552 if (typeof valueA !== 'string') {
1553 return doQuickCompare(valueA, valueB);
1554 }
1555 if (!accentedCompare) {
1556 return doQuickCompare(valueA, valueB);
1557 }
1558 try {
1559 // using local compare also allows chinese comparisons
1560 return valueA.localeCompare(valueB);
1561 }
1562 catch (e) {
1563 // if something wrong with localeCompare, eg not supported
1564 // by browser, then just continue with the quick one
1565 return doQuickCompare(valueA, valueB);
1566 }
1567}
1568function values(object) {
1569 if (object instanceof Set || object instanceof Map) {
1570 var arr_1 = [];
1571 object.forEach(function (value) { return arr_1.push(value); });
1572 return arr_1;
1573 }
1574 return Object.values(object);
1575}
1576
1577
1578
1579
1580/***/ }),
1581/* 8 */
1582/***/ (function(module, __webpack_exports__, __webpack_require__) {
1583
1584"use strict";
1585__webpack_require__.r(__webpack_exports__);
1586/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProvidedColumnGroup", function() { return ProvidedColumnGroup; });
1587/* harmony import */ var _columnGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
1588/* harmony import */ var _column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
1589/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
1590/**
1591 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
1592 * @version v27.3.0
1593 * @link https://www.ag-grid.com/
1594 * @license MIT
1595 */
1596
1597
1598
1599var ProvidedColumnGroup = /** @class */ (function () {
1600 function ProvidedColumnGroup(colGroupDef, groupId, padding, level) {
1601 this.localEventService = new _eventService__WEBPACK_IMPORTED_MODULE_2__["EventService"]();
1602 this.expandable = false;
1603 this.colGroupDef = colGroupDef;
1604 this.groupId = groupId;
1605 this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;
1606 this.padding = padding;
1607 this.level = level;
1608 }
1609 ProvidedColumnGroup.prototype.setOriginalParent = function (originalParent) {
1610 this.originalParent = originalParent;
1611 };
1612 ProvidedColumnGroup.prototype.getOriginalParent = function () {
1613 return this.originalParent;
1614 };
1615 ProvidedColumnGroup.prototype.getLevel = function () {
1616 return this.level;
1617 };
1618 ProvidedColumnGroup.prototype.isVisible = function () {
1619 // return true if at least one child is visible
1620 if (this.children) {
1621 return this.children.some(function (child) { return child.isVisible(); });
1622 }
1623 return false;
1624 };
1625 ProvidedColumnGroup.prototype.isPadding = function () {
1626 return this.padding;
1627 };
1628 ProvidedColumnGroup.prototype.setExpanded = function (expanded) {
1629 this.expanded = expanded === undefined ? false : expanded;
1630 var event = {
1631 type: ProvidedColumnGroup.EVENT_EXPANDED_CHANGED
1632 };
1633 this.localEventService.dispatchEvent(event);
1634 };
1635 ProvidedColumnGroup.prototype.isExpandable = function () {
1636 return this.expandable;
1637 };
1638 ProvidedColumnGroup.prototype.isExpanded = function () {
1639 return this.expanded;
1640 };
1641 ProvidedColumnGroup.prototype.getGroupId = function () {
1642 return this.groupId;
1643 };
1644 ProvidedColumnGroup.prototype.getId = function () {
1645 return this.getGroupId();
1646 };
1647 ProvidedColumnGroup.prototype.setChildren = function (children) {
1648 this.children = children;
1649 };
1650 ProvidedColumnGroup.prototype.getChildren = function () {
1651 return this.children;
1652 };
1653 ProvidedColumnGroup.prototype.getColGroupDef = function () {
1654 return this.colGroupDef;
1655 };
1656 ProvidedColumnGroup.prototype.getLeafColumns = function () {
1657 var result = [];
1658 this.addLeafColumns(result);
1659 return result;
1660 };
1661 ProvidedColumnGroup.prototype.addLeafColumns = function (leafColumns) {
1662 if (!this.children) {
1663 return;
1664 }
1665 this.children.forEach(function (child) {
1666 if (child instanceof _column__WEBPACK_IMPORTED_MODULE_1__["Column"]) {
1667 leafColumns.push(child);
1668 }
1669 else if (child instanceof ProvidedColumnGroup) {
1670 child.addLeafColumns(leafColumns);
1671 }
1672 });
1673 };
1674 ProvidedColumnGroup.prototype.getColumnGroupShow = function () {
1675 var colGroupDef = this.colGroupDef;
1676 if (!colGroupDef) {
1677 return;
1678 }
1679 return colGroupDef.columnGroupShow;
1680 };
1681 // need to check that this group has at least one col showing when both expanded and contracted.
1682 // if not, then we don't allow expanding and contracting on this group
1683 ProvidedColumnGroup.prototype.setupExpandable = function () {
1684 var _this = this;
1685 this.setExpandable();
1686 // note - we should be removing this event listener
1687 this.getLeafColumns().forEach(function (col) { return col.addEventListener(_column__WEBPACK_IMPORTED_MODULE_1__["Column"].EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });
1688 };
1689 ProvidedColumnGroup.prototype.setExpandable = function () {
1690 if (this.isPadding()) {
1691 return;
1692 }
1693 // want to make sure the group doesn't disappear when it's open
1694 var atLeastOneShowingWhenOpen = false;
1695 // want to make sure the group doesn't disappear when it's closed
1696 var atLeastOneShowingWhenClosed = false;
1697 // want to make sure the group has something to show / hide
1698 var atLeastOneChangeable = false;
1699 var children = this.findChildrenRemovingPadding();
1700 for (var i = 0, j = children.length; i < j; i++) {
1701 var abstractColumn = children[i];
1702 if (!abstractColumn.isVisible()) {
1703 continue;
1704 }
1705 // if the abstractColumn is a grid generated group, there will be no colDef
1706 var headerGroupShow = abstractColumn.getColumnGroupShow();
1707 if (headerGroupShow === _columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"].HEADER_GROUP_SHOW_OPEN) {
1708 atLeastOneShowingWhenOpen = true;
1709 atLeastOneChangeable = true;
1710 }
1711 else if (headerGroupShow === _columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"].HEADER_GROUP_SHOW_CLOSED) {
1712 atLeastOneShowingWhenClosed = true;
1713 atLeastOneChangeable = true;
1714 }
1715 else {
1716 atLeastOneShowingWhenOpen = true;
1717 atLeastOneShowingWhenClosed = true;
1718 }
1719 }
1720 var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;
1721 if (this.expandable !== expandable) {
1722 this.expandable = expandable;
1723 var event_1 = {
1724 type: ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED
1725 };
1726 this.localEventService.dispatchEvent(event_1);
1727 }
1728 };
1729 ProvidedColumnGroup.prototype.findChildrenRemovingPadding = function () {
1730 var res = [];
1731 var process = function (items) {
1732 items.forEach(function (item) {
1733 // if padding, we add this children instead of the padding
1734 var skipBecausePadding = item instanceof ProvidedColumnGroup && item.isPadding();
1735 if (skipBecausePadding) {
1736 process(item.children);
1737 }
1738 else {
1739 res.push(item);
1740 }
1741 });
1742 };
1743 process(this.children);
1744 return res;
1745 };
1746 ProvidedColumnGroup.prototype.onColumnVisibilityChanged = function () {
1747 this.setExpandable();
1748 };
1749 ProvidedColumnGroup.prototype.addEventListener = function (eventType, listener) {
1750 this.localEventService.addEventListener(eventType, listener);
1751 };
1752 ProvidedColumnGroup.prototype.removeEventListener = function (eventType, listener) {
1753 this.localEventService.removeEventListener(eventType, listener);
1754 };
1755 ProvidedColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';
1756 ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';
1757 return ProvidedColumnGroup;
1758}());
1759
1760
1761
1762
1763
1764/***/ }),
1765/* 9 */
1766/***/ (function(module, __webpack_exports__, __webpack_require__) {
1767
1768"use strict";
1769__webpack_require__.r(__webpack_exports__);
1770/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnGroup", function() { return ColumnGroup; });
1771/* harmony import */ var _column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
1772/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
1773/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
1774/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
1775/**
1776 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
1777 * @version v27.3.0
1778 * @link https://www.ag-grid.com/
1779 * @license MIT
1780 */
1781var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1782 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1783 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1784 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;
1785 return c > 3 && r && Object.defineProperty(target, key, r), r;
1786};
1787
1788
1789
1790
1791var ColumnGroup = /** @class */ (function () {
1792 function ColumnGroup(providedColumnGroup, groupId, instanceId, pinned) {
1793 // depends on the open/closed state of the group, only displaying columns are stored here
1794 this.displayedChildren = [];
1795 this.localEventService = new _eventService__WEBPACK_IMPORTED_MODULE_1__["EventService"]();
1796 this.groupId = groupId;
1797 this.instanceId = instanceId;
1798 this.providedColumnGroup = providedColumnGroup;
1799 this.pinned = pinned;
1800 }
1801 // this is static, a it is used outside of this class
1802 ColumnGroup.createUniqueId = function (groupId, instanceId) {
1803 return groupId + '_' + instanceId;
1804 };
1805 // as the user is adding and removing columns, the groups are recalculated.
1806 // this reset clears out all children, ready for children to be added again
1807 ColumnGroup.prototype.reset = function () {
1808 this.parent = null;
1809 this.children = null;
1810 this.displayedChildren = null;
1811 };
1812 ColumnGroup.prototype.getParent = function () {
1813 return this.parent;
1814 };
1815 ColumnGroup.prototype.setParent = function (parent) {
1816 this.parent = parent;
1817 };
1818 ColumnGroup.prototype.getUniqueId = function () {
1819 return ColumnGroup.createUniqueId(this.groupId, this.instanceId);
1820 };
1821 ColumnGroup.prototype.isEmptyGroup = function () {
1822 return this.displayedChildren.length === 0;
1823 };
1824 ColumnGroup.prototype.isMoving = function () {
1825 var allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();
1826 if (!allLeafColumns || allLeafColumns.length === 0) {
1827 return false;
1828 }
1829 return allLeafColumns.every(function (col) { return col.isMoving(); });
1830 };
1831 ColumnGroup.prototype.checkLeft = function () {
1832 // first get all children to setLeft, as it impacts our decision below
1833 this.displayedChildren.forEach(function (child) {
1834 if (child instanceof ColumnGroup) {
1835 child.checkLeft();
1836 }
1837 });
1838 // set our left based on first displayed column
1839 if (this.displayedChildren.length > 0) {
1840 if (this.gridOptionsWrapper.isEnableRtl()) {
1841 var lastChild = Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(this.displayedChildren);
1842 var lastChildLeft = lastChild.getLeft();
1843 this.setLeft(lastChildLeft);
1844 }
1845 else {
1846 var firstChildLeft = this.displayedChildren[0].getLeft();
1847 this.setLeft(firstChildLeft);
1848 }
1849 }
1850 else {
1851 // this should never happen, as if we have no displayed columns, then
1852 // this groups should not even exist.
1853 this.setLeft(null);
1854 }
1855 };
1856 ColumnGroup.prototype.getLeft = function () {
1857 return this.left;
1858 };
1859 ColumnGroup.prototype.getOldLeft = function () {
1860 return this.oldLeft;
1861 };
1862 ColumnGroup.prototype.setLeft = function (left) {
1863 this.oldLeft = left;
1864 if (this.left !== left) {
1865 this.left = left;
1866 this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));
1867 }
1868 };
1869 ColumnGroup.prototype.getPinned = function () {
1870 return this.pinned;
1871 };
1872 ColumnGroup.prototype.createAgEvent = function (type) {
1873 return { type: type };
1874 };
1875 ColumnGroup.prototype.addEventListener = function (eventType, listener) {
1876 this.localEventService.addEventListener(eventType, listener);
1877 };
1878 ColumnGroup.prototype.removeEventListener = function (eventType, listener) {
1879 this.localEventService.removeEventListener(eventType, listener);
1880 };
1881 ColumnGroup.prototype.getGroupId = function () {
1882 return this.groupId;
1883 };
1884 ColumnGroup.prototype.getInstanceId = function () {
1885 return this.instanceId;
1886 };
1887 ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {
1888 var result = false;
1889 this.children.forEach(function (foundChild) {
1890 if (wantedChild === foundChild) {
1891 result = true;
1892 }
1893 if (foundChild instanceof ColumnGroup) {
1894 if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {
1895 result = true;
1896 }
1897 }
1898 });
1899 return result;
1900 };
1901 ColumnGroup.prototype.getActualWidth = function () {
1902 var groupActualWidth = 0;
1903 if (this.displayedChildren) {
1904 this.displayedChildren.forEach(function (child) {
1905 groupActualWidth += child.getActualWidth();
1906 });
1907 }
1908 return groupActualWidth;
1909 };
1910 ColumnGroup.prototype.isResizable = function () {
1911 if (!this.displayedChildren) {
1912 return false;
1913 }
1914 // if at least one child is resizable, then the group is resizable
1915 var result = false;
1916 this.displayedChildren.forEach(function (child) {
1917 if (child.isResizable()) {
1918 result = true;
1919 }
1920 });
1921 return result;
1922 };
1923 ColumnGroup.prototype.getMinWidth = function () {
1924 var result = 0;
1925 this.displayedChildren.forEach(function (groupChild) {
1926 result += groupChild.getMinWidth() || 0;
1927 });
1928 return result;
1929 };
1930 ColumnGroup.prototype.addChild = function (child) {
1931 if (!this.children) {
1932 this.children = [];
1933 }
1934 this.children.push(child);
1935 };
1936 ColumnGroup.prototype.getDisplayedChildren = function () {
1937 return this.displayedChildren;
1938 };
1939 ColumnGroup.prototype.getLeafColumns = function () {
1940 var result = [];
1941 this.addLeafColumns(result);
1942 return result;
1943 };
1944 ColumnGroup.prototype.getDisplayedLeafColumns = function () {
1945 var result = [];
1946 this.addDisplayedLeafColumns(result);
1947 return result;
1948 };
1949 // why two methods here doing the same thing?
1950 ColumnGroup.prototype.getDefinition = function () {
1951 return this.providedColumnGroup.getColGroupDef();
1952 };
1953 ColumnGroup.prototype.getColGroupDef = function () {
1954 return this.providedColumnGroup.getColGroupDef();
1955 };
1956 ColumnGroup.prototype.isPadding = function () {
1957 return this.providedColumnGroup.isPadding();
1958 };
1959 ColumnGroup.prototype.isExpandable = function () {
1960 return this.providedColumnGroup.isExpandable();
1961 };
1962 ColumnGroup.prototype.isExpanded = function () {
1963 return this.providedColumnGroup.isExpanded();
1964 };
1965 ColumnGroup.prototype.setExpanded = function (expanded) {
1966 this.providedColumnGroup.setExpanded(expanded);
1967 };
1968 ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {
1969 this.displayedChildren.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.addDisplayedLeafColumns(leafColumns);
1975 }
1976 });
1977 };
1978 ColumnGroup.prototype.addLeafColumns = function (leafColumns) {
1979 this.children.forEach(function (child) {
1980 if (child instanceof _column__WEBPACK_IMPORTED_MODULE_0__["Column"]) {
1981 leafColumns.push(child);
1982 }
1983 else if (child instanceof ColumnGroup) {
1984 child.addLeafColumns(leafColumns);
1985 }
1986 });
1987 };
1988 ColumnGroup.prototype.getChildren = function () {
1989 return this.children;
1990 };
1991 ColumnGroup.prototype.getColumnGroupShow = function () {
1992 return this.providedColumnGroup.getColumnGroupShow();
1993 };
1994 ColumnGroup.prototype.getProvidedColumnGroup = function () {
1995 return this.providedColumnGroup;
1996 };
1997 /** @deprecated getOriginalColumnGroup is deprecated, use getOriginalColumnGroup. */
1998 ColumnGroup.prototype.getOriginalColumnGroup = function () {
1999 console.warn('AG Grid: columnGroup.getOriginalColumnGroup() is deprecated due to a method rename, use columnGroup.getProvidedColumnGroup() instead');
2000 return this.getProvidedColumnGroup();
2001 };
2002 ColumnGroup.prototype.getPaddingLevel = function () {
2003 var parent = this.getParent();
2004 if (!this.isPadding() || !parent || !parent.isPadding()) {
2005 return 0;
2006 }
2007 return 1 + parent.getPaddingLevel();
2008 };
2009 ColumnGroup.prototype.calculateDisplayedColumns = function () {
2010 var _this = this;
2011 // clear out last time we calculated
2012 this.displayedChildren = [];
2013 // find the column group that is controlling expandable. this is relevant when we have padding (empty)
2014 // groups, where the expandable is actually the first parent that is not a padding group.
2015 var parentWithExpansion = this;
2016 while (parentWithExpansion != null && parentWithExpansion.isPadding()) {
2017 parentWithExpansion = parentWithExpansion.getParent();
2018 }
2019 var isExpandable = parentWithExpansion ? parentWithExpansion.providedColumnGroup.isExpandable() : false;
2020 // it not expandable, everything is visible
2021 if (!isExpandable) {
2022 this.displayedChildren = this.children;
2023 this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));
2024 return;
2025 }
2026 // Add cols based on columnGroupShow
2027 // Note - the below also adds padding groups, these are always added because they never have
2028 // colDef.columnGroupShow set.
2029 this.children.forEach(function (child) {
2030 // never add empty groups
2031 var emptyGroup = child instanceof ColumnGroup && (!child.displayedChildren || !child.displayedChildren.length);
2032 if (emptyGroup) {
2033 return;
2034 }
2035 var headerGroupShow = child.getColumnGroupShow();
2036 switch (headerGroupShow) {
2037 case ColumnGroup.HEADER_GROUP_SHOW_OPEN:
2038 // when set to open, only show col if group is open
2039 if (parentWithExpansion.providedColumnGroup.isExpanded()) {
2040 _this.displayedChildren.push(child);
2041 }
2042 break;
2043 case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:
2044 // when set to open, only show col if group is open
2045 if (!parentWithExpansion.providedColumnGroup.isExpanded()) {
2046 _this.displayedChildren.push(child);
2047 }
2048 break;
2049 default:
2050 _this.displayedChildren.push(child);
2051 break;
2052 }
2053 });
2054 this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));
2055 };
2056 ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';
2057 ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';
2058 ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';
2059 ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';
2060 __decorate([
2061 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridOptionsWrapper')
2062 ], ColumnGroup.prototype, "gridOptionsWrapper", void 0);
2063 return ColumnGroup;
2064}());
2065
2066
2067
2068
2069
2070/***/ }),
2071/* 10 */
2072/***/ (function(module, __webpack_exports__, __webpack_require__) {
2073
2074"use strict";
2075__webpack_require__.r(__webpack_exports__);
2076/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Column", function() { return Column; });
2077/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
2078/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
2079/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
2080/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
2081/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
2082/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
2083/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(14);
2084/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13);
2085/**
2086 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
2087 * @version v27.3.0
2088 * @link https://www.ag-grid.com/
2089 * @license MIT
2090 */
2091var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2092 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2093 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2094 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;
2095 return c > 3 && r && Object.defineProperty(target, key, r), r;
2096};
2097
2098
2099
2100
2101
2102
2103
2104
2105var instanceIdSequence = 0;
2106// Wrapper around a user provide column definition. The grid treats the column definition as ready only.
2107// This class contains all the runtime information about a column, plus some logic (the definition has no logic).
2108// This class implements both interfaces ColumnGroupChild and ProvidedColumnGroupChild as the class can
2109// appear as a child of either the original tree or the displayed tree. However the relevant group classes
2110// for each type only implements one, as each group can only appear in it's associated tree (eg ProvidedColumnGroup
2111// can only appear in OriginalColumn tree).
2112var Column = /** @class */ (function () {
2113 function Column(colDef, userProvidedColDef, colId, primary) {
2114 // used by React (and possibly other frameworks) as key for rendering
2115 this.instanceId = instanceIdSequence++;
2116 this.moving = false;
2117 this.menuVisible = false;
2118 this.filterActive = false;
2119 this.eventService = new _eventService__WEBPACK_IMPORTED_MODULE_0__["EventService"]();
2120 this.rowGroupActive = false;
2121 this.pivotActive = false;
2122 this.aggregationActive = false;
2123 this.colDef = colDef;
2124 this.userProvidedColDef = userProvidedColDef;
2125 this.colId = colId;
2126 this.primary = primary;
2127 this.setState(colDef);
2128 }
2129 Column.prototype.getInstanceId = function () {
2130 return this.instanceId;
2131 };
2132 Column.prototype.setState = function (colDef) {
2133 // sort
2134 if (colDef.sort !== undefined) {
2135 if (colDef.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC || colDef.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC) {
2136 this.sort = colDef.sort;
2137 }
2138 }
2139 else {
2140 if (colDef.initialSort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC || colDef.initialSort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC) {
2141 this.sort = colDef.initialSort;
2142 }
2143 }
2144 // sortIndex
2145 var sortIndex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToNumber"])(colDef.sortIndex);
2146 var initialSortIndex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToNumber"])(colDef.initialSortIndex);
2147 if (sortIndex !== undefined) {
2148 if (sortIndex !== null) {
2149 this.sortIndex = sortIndex;
2150 }
2151 }
2152 else {
2153 if (initialSortIndex !== null) {
2154 this.sortIndex = initialSortIndex;
2155 }
2156 }
2157 // hide
2158 var hide = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(colDef.hide);
2159 var initialHide = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(colDef.initialHide);
2160 if (hide !== undefined) {
2161 this.visible = !hide;
2162 }
2163 else {
2164 this.visible = !initialHide;
2165 }
2166 // pinned
2167 if (colDef.pinned !== undefined) {
2168 this.setPinned(colDef.pinned);
2169 }
2170 else {
2171 this.setPinned(colDef.initialPinned);
2172 }
2173 // flex
2174 var flex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToNumber"])(colDef.flex);
2175 var initialFlex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToNumber"])(colDef.initialFlex);
2176 if (flex !== undefined) {
2177 this.flex = flex;
2178 }
2179 else if (initialFlex !== undefined) {
2180 this.flex = initialFlex;
2181 }
2182 };
2183 // gets called when user provides an alternative colDef, eg
2184 Column.prototype.setColDef = function (colDef, userProvidedColDef) {
2185 this.colDef = colDef;
2186 this.userProvidedColDef = userProvidedColDef;
2187 this.initMinAndMaxWidths();
2188 this.initDotNotation();
2189 };
2190 /**
2191 * Returns the column definition provided by the application.
2192 * This may not be correct, as items can be superseded by default column options.
2193 * However it's useful for comparison, eg to know which application column definition matches that column.
2194 */
2195 Column.prototype.getUserProvidedColDef = function () {
2196 return this.userProvidedColDef;
2197 };
2198 Column.prototype.setParent = function (parent) {
2199 this.parent = parent;
2200 };
2201 /** Returns the parent column group, if column grouping is active. */
2202 Column.prototype.getParent = function () {
2203 return this.parent;
2204 };
2205 Column.prototype.setOriginalParent = function (originalParent) {
2206 this.originalParent = originalParent;
2207 };
2208 Column.prototype.getOriginalParent = function () {
2209 return this.originalParent;
2210 };
2211 // this is done after constructor as it uses gridOptionsWrapper
2212 Column.prototype.initialise = function () {
2213 this.initMinAndMaxWidths();
2214 this.resetActualWidth('gridInitializing');
2215 this.initDotNotation();
2216 this.validate();
2217 };
2218 Column.prototype.initDotNotation = function () {
2219 var suppressDotNotation = this.gridOptionsWrapper.isSuppressFieldDotNotation();
2220 this.fieldContainsDots = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;
2221 this.tooltipFieldContainsDots = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;
2222 };
2223 Column.prototype.initMinAndMaxWidths = function () {
2224 var colDef = this.colDef;
2225 this.minWidth = this.columnUtils.calculateColMinWidth(colDef);
2226 this.maxWidth = this.columnUtils.calculateColMaxWidth(colDef);
2227 };
2228 Column.prototype.resetActualWidth = function (source) {
2229 if (source === void 0) { source = 'api'; }
2230 var initialWidth = this.columnUtils.calculateColInitialWidth(this.colDef);
2231 this.setActualWidth(initialWidth, source, true);
2232 };
2233 Column.prototype.isEmptyGroup = function () {
2234 return false;
2235 };
2236 Column.prototype.isRowGroupDisplayed = function (colId) {
2237 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.colDef) || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.colDef.showRowGroup)) {
2238 return false;
2239 }
2240 var showingAllGroups = this.colDef.showRowGroup === true;
2241 var showingThisGroup = this.colDef.showRowGroup === colId;
2242 return showingAllGroups || showingThisGroup;
2243 };
2244 /** Returns `true` if column is a primary column, `false` if secondary. Secondary columns are used for pivoting. */
2245 Column.prototype.isPrimary = function () {
2246 return this.primary;
2247 };
2248 /** Returns `true` if column filtering is allowed. */
2249 Column.prototype.isFilterAllowed = function () {
2250 // filter defined means it's a string, class or true.
2251 // if its false, null or undefined then it's false.
2252 var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;
2253 return filterDefined;
2254 };
2255 Column.prototype.isFieldContainsDots = function () {
2256 return this.fieldContainsDots;
2257 };
2258 Column.prototype.isTooltipFieldContainsDots = function () {
2259 return this.tooltipFieldContainsDots;
2260 };
2261 Column.prototype.validate = function () {
2262 var colDefAny = this.colDef;
2263 function warnOnce(msg, key, obj) {
2264 Object(_utils_function__WEBPACK_IMPORTED_MODULE_6__["doOnce"])(function () {
2265 if (obj) {
2266 console.warn(msg, obj);
2267 }
2268 else {
2269 Object(_utils_function__WEBPACK_IMPORTED_MODULE_6__["doOnce"])(function () { return console.warn(msg); }, key);
2270 }
2271 }, key);
2272 }
2273 var usingCSRM = this.gridOptionsWrapper.isRowModelDefault();
2274 if (usingCSRM && !_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RowGroupingModule)) {
2275 var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];
2276 rowGroupingItems.forEach(function (item) {
2277 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(colDefAny[item])) {
2278 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isPackageBased()) {
2279 warnOnce("AG Grid: " + item + " is only valid in ag-grid-enterprise, your column definition should not have " + item, 'ColumnRowGroupingMissing' + item);
2280 }
2281 else {
2282 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);
2283 }
2284 }
2285 });
2286 }
2287 if (!_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RichSelectModule)) {
2288 if (this.colDef.cellEditor === 'agRichSelect') {
2289 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isPackageBased()) {
2290 warnOnce("AG Grid: " + this.colDef.cellEditor + " can only be used with ag-grid-enterprise", 'ColumnRichSelectMissing');
2291 }
2292 else {
2293 warnOnce("AG Grid: " + this.colDef.cellEditor + " can only be used with AG Grid Enterprise Module " + _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RichSelectModule, 'ColumnRichSelectMissing');
2294 }
2295 }
2296 }
2297 if (this.gridOptionsWrapper.isTreeData()) {
2298 var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];
2299 itemsNotAllowedWithTreeData.forEach(function (item) {
2300 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(colDefAny[item])) {
2301 warnOnce("AG Grid: " + item + " is not possible when doing tree data, your column definition should not have " + item, 'TreeDataCannotRowGroup');
2302 }
2303 });
2304 }
2305 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.colDef.width) && typeof this.colDef.width !== 'number') {
2306 warnOnce('AG Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck_asdfawef');
2307 }
2308 if (colDefAny.pinnedRowCellRenderer) {
2309 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');
2310 }
2311 if (colDefAny.pinnedRowCellRendererParams) {
2312 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');
2313 }
2314 if (colDefAny.pinnedRowCellRendererFramework) {
2315 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');
2316 }
2317 if (colDefAny.pinnedRowValueGetter) {
2318 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');
2319 }
2320 };
2321 /** Add an event listener to the column. */
2322 Column.prototype.addEventListener = function (eventType, listener) {
2323 this.eventService.addEventListener(eventType, listener);
2324 };
2325 /** Remove event listener from the column. */
2326 Column.prototype.removeEventListener = function (eventType, listener) {
2327 this.eventService.removeEventListener(eventType, listener);
2328 };
2329 Column.prototype.createColumnFunctionCallbackParams = function (rowNode) {
2330 return {
2331 node: rowNode,
2332 data: rowNode.data,
2333 column: this,
2334 colDef: this.colDef,
2335 context: this.gridOptionsWrapper.getContext(),
2336 api: this.gridOptionsWrapper.getApi(),
2337 columnApi: this.gridOptionsWrapper.getColumnApi()
2338 };
2339 };
2340 Column.prototype.isSuppressNavigable = function (rowNode) {
2341 // if boolean set, then just use it
2342 if (typeof this.colDef.suppressNavigable === 'boolean') {
2343 return this.colDef.suppressNavigable;
2344 }
2345 // if function, then call the function to find out
2346 if (typeof this.colDef.suppressNavigable === 'function') {
2347 var params = this.createColumnFunctionCallbackParams(rowNode);
2348 var userFunc = this.colDef.suppressNavigable;
2349 return userFunc(params);
2350 }
2351 return false;
2352 };
2353 Column.prototype.isCellEditable = function (rowNode) {
2354 // only allow editing of groups if the user has this option enabled
2355 if (rowNode.group && !this.gridOptionsWrapper.isEnableGroupEdit()) {
2356 return false;
2357 }
2358 return this.isColumnFunc(rowNode, this.colDef.editable);
2359 };
2360 Column.prototype.isSuppressFillHandle = function () {
2361 return !!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(this.colDef.suppressFillHandle);
2362 };
2363 Column.prototype.isAutoHeight = function () {
2364 return !!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(this.colDef.autoHeight);
2365 };
2366 Column.prototype.isRowDrag = function (rowNode) {
2367 return this.isColumnFunc(rowNode, this.colDef.rowDrag);
2368 };
2369 Column.prototype.isDndSource = function (rowNode) {
2370 return this.isColumnFunc(rowNode, this.colDef.dndSource);
2371 };
2372 Column.prototype.isCellCheckboxSelection = function (rowNode) {
2373 return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);
2374 };
2375 Column.prototype.isSuppressPaste = function (rowNode) {
2376 return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);
2377 };
2378 Column.prototype.isResizable = function () {
2379 return !!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(this.colDef.resizable);
2380 };
2381 Column.prototype.isColumnFunc = function (rowNode, value) {
2382 // if boolean set, then just use it
2383 if (typeof value === 'boolean') {
2384 return value;
2385 }
2386 // if function, then call the function to find out
2387 if (typeof value === 'function') {
2388 var params = this.createColumnFunctionCallbackParams(rowNode);
2389 var editableFunc = value;
2390 return editableFunc(params);
2391 }
2392 return false;
2393 };
2394 Column.prototype.setMoving = function (moving, source) {
2395 if (source === void 0) { source = "api"; }
2396 this.moving = moving;
2397 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MOVING_CHANGED, source));
2398 };
2399 Column.prototype.createColumnEvent = function (type, source) {
2400 return {
2401 api: this.gridApi,
2402 columnApi: this.columnApi,
2403 type: type,
2404 column: this,
2405 columns: [this],
2406 source: source
2407 };
2408 };
2409 Column.prototype.isMoving = function () {
2410 return this.moving;
2411 };
2412 /** If sorting is active, returns the sort direction e.g. `'asc'` or `'desc'`. */
2413 Column.prototype.getSort = function () {
2414 return this.sort;
2415 };
2416 Column.prototype.setSort = function (sort, source) {
2417 if (source === void 0) { source = "api"; }
2418 if (this.sort !== sort) {
2419 this.sort = sort;
2420 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_SORT_CHANGED, source));
2421 }
2422 };
2423 Column.prototype.setMenuVisible = function (visible, source) {
2424 if (source === void 0) { source = "api"; }
2425 if (this.menuVisible !== visible) {
2426 this.menuVisible = visible;
2427 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MENU_VISIBLE_CHANGED, source));
2428 }
2429 };
2430 Column.prototype.isMenuVisible = function () {
2431 return this.menuVisible;
2432 };
2433 Column.prototype.isSortAscending = function () {
2434 return this.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC;
2435 };
2436 Column.prototype.isSortDescending = function () {
2437 return this.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC;
2438 };
2439 Column.prototype.isSortNone = function () {
2440 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.sort);
2441 };
2442 Column.prototype.isSorting = function () {
2443 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.sort);
2444 };
2445 Column.prototype.getSortIndex = function () {
2446 return this.sortIndex;
2447 };
2448 Column.prototype.setSortIndex = function (sortOrder) {
2449 this.sortIndex = sortOrder;
2450 };
2451 Column.prototype.setAggFunc = function (aggFunc) {
2452 this.aggFunc = aggFunc;
2453 };
2454 /** If aggregation is set for the column, returns the aggregation function. */
2455 Column.prototype.getAggFunc = function () {
2456 return this.aggFunc;
2457 };
2458 Column.prototype.getLeft = function () {
2459 return this.left;
2460 };
2461 Column.prototype.getOldLeft = function () {
2462 return this.oldLeft;
2463 };
2464 Column.prototype.getRight = function () {
2465 return this.left + this.actualWidth;
2466 };
2467 Column.prototype.setLeft = function (left, source) {
2468 if (source === void 0) { source = "api"; }
2469 this.oldLeft = this.left;
2470 if (this.left !== left) {
2471 this.left = left;
2472 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LEFT_CHANGED, source));
2473 }
2474 };
2475 /** Returns `true` if filter is active on the column. */
2476 Column.prototype.isFilterActive = function () {
2477 return this.filterActive;
2478 };
2479 // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event
2480 Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {
2481 if (source === void 0) { source = "api"; }
2482 if (this.filterActive !== active) {
2483 this.filterActive = active;
2484 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_ACTIVE_CHANGED, source));
2485 }
2486 var filterChangedEvent = this.createColumnEvent(Column.EVENT_FILTER_CHANGED, source);
2487 if (additionalEventAttributes) {
2488 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["mergeDeep"])(filterChangedEvent, additionalEventAttributes);
2489 }
2490 this.eventService.dispatchEvent(filterChangedEvent);
2491 };
2492 Column.prototype.setPinned = function (pinned) {
2493 if (pinned === true || pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT) {
2494 this.pinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT;
2495 }
2496 else if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT) {
2497 this.pinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT;
2498 }
2499 else {
2500 this.pinned = null;
2501 }
2502 };
2503 Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {
2504 if (source === void 0) { source = "api"; }
2505 if (this.firstRightPinned !== firstRightPinned) {
2506 this.firstRightPinned = firstRightPinned;
2507 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, source));
2508 }
2509 };
2510 Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {
2511 if (source === void 0) { source = "api"; }
2512 if (this.lastLeftPinned !== lastLeftPinned) {
2513 this.lastLeftPinned = lastLeftPinned;
2514 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LAST_LEFT_PINNED_CHANGED, source));
2515 }
2516 };
2517 Column.prototype.isFirstRightPinned = function () {
2518 return this.firstRightPinned;
2519 };
2520 Column.prototype.isLastLeftPinned = function () {
2521 return this.lastLeftPinned;
2522 };
2523 Column.prototype.isPinned = function () {
2524 return this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT || this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT;
2525 };
2526 Column.prototype.isPinnedLeft = function () {
2527 return this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT;
2528 };
2529 Column.prototype.isPinnedRight = function () {
2530 return this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT;
2531 };
2532 Column.prototype.getPinned = function () {
2533 return this.pinned;
2534 };
2535 Column.prototype.setVisible = function (visible, source) {
2536 if (source === void 0) { source = "api"; }
2537 var newValue = visible === true;
2538 if (this.visible !== newValue) {
2539 this.visible = newValue;
2540 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VISIBLE_CHANGED, source));
2541 }
2542 };
2543 Column.prototype.isVisible = function () {
2544 return this.visible;
2545 };
2546 /** Returns the column definition for this column.
2547 * The column definition will be the result of merging the application provided column definition with any provided defaults
2548 * (e.g. `defaultColDef` grid option, or column types.
2549 *
2550 * Equivalent: `getDefinition` */
2551 Column.prototype.getColDef = function () {
2552 return this.colDef;
2553 };
2554 Column.prototype.getColumnGroupShow = function () {
2555 return this.colDef.columnGroupShow;
2556 };
2557 /**
2558 * Returns the unique ID for the column.
2559 *
2560 * Equivalent: `getId`, `getUniqueId` */
2561 Column.prototype.getColId = function () {
2562 return this.colId;
2563 };
2564 /**
2565 * Returns the unique ID for the column.
2566 *
2567 * Equivalent: `getColId`, `getUniqueId` */
2568 Column.prototype.getId = function () {
2569 return this.getColId();
2570 };
2571 /**
2572 * Returns the unique ID for the column.
2573 *
2574 * Equivalent: `getColId`, `getId` */
2575 Column.prototype.getUniqueId = function () {
2576 return this.getId();
2577 };
2578 Column.prototype.getDefinition = function () {
2579 return this.colDef;
2580 };
2581 /** Returns the current width of the column. If the column is resized, the actual width is the new size. */
2582 Column.prototype.getActualWidth = function () {
2583 return this.actualWidth;
2584 };
2585 Column.prototype.createBaseColDefParams = function (rowNode) {
2586 var params = {
2587 node: rowNode,
2588 data: rowNode.data,
2589 colDef: this.colDef,
2590 column: this,
2591 api: this.gridOptionsWrapper.getApi(),
2592 columnApi: this.gridOptionsWrapper.getColumnApi(),
2593 context: this.gridOptionsWrapper.getContext()
2594 };
2595 return params;
2596 };
2597 Column.prototype.getColSpan = function (rowNode) {
2598 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.colDef.colSpan)) {
2599 return 1;
2600 }
2601 var params = this.createBaseColDefParams(rowNode);
2602 var colSpan = this.colDef.colSpan(params);
2603 // colSpan must be number equal to or greater than 1
2604 return Math.max(colSpan, 1);
2605 };
2606 Column.prototype.getRowSpan = function (rowNode) {
2607 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.colDef.rowSpan)) {
2608 return 1;
2609 }
2610 var params = this.createBaseColDefParams(rowNode);
2611 var rowSpan = this.colDef.rowSpan(params);
2612 // rowSpan must be number equal to or greater than 1
2613 return Math.max(rowSpan, 1);
2614 };
2615 Column.prototype.setActualWidth = function (actualWidth, source, silent) {
2616 if (source === void 0) { source = "api"; }
2617 if (silent === void 0) { silent = false; }
2618 if (this.minWidth != null) {
2619 actualWidth = Math.max(actualWidth, this.minWidth);
2620 }
2621 if (this.maxWidth != null) {
2622 actualWidth = Math.min(actualWidth, this.maxWidth);
2623 }
2624 if (this.actualWidth !== actualWidth) {
2625 // disable flex for this column if it was manually resized.
2626 this.actualWidth = actualWidth;
2627 if (this.flex && source !== 'flex' && source !== 'gridInitializing') {
2628 this.flex = null;
2629 }
2630 if (!silent) {
2631 this.fireColumnWidthChangedEvent(source);
2632 }
2633 }
2634 };
2635 Column.prototype.fireColumnWidthChangedEvent = function (source) {
2636 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_WIDTH_CHANGED, source));
2637 };
2638 Column.prototype.isGreaterThanMax = function (width) {
2639 if (this.maxWidth != null) {
2640 return width > this.maxWidth;
2641 }
2642 return false;
2643 };
2644 Column.prototype.getMinWidth = function () {
2645 return this.minWidth;
2646 };
2647 Column.prototype.getMaxWidth = function () {
2648 return this.maxWidth;
2649 };
2650 Column.prototype.getFlex = function () {
2651 return this.flex || 0;
2652 };
2653 // this method should only be used by the columnModel to
2654 // change flex when required by the setColumnState method.
2655 Column.prototype.setFlex = function (flex) {
2656 if (this.flex !== flex) {
2657 this.flex = flex;
2658 }
2659 };
2660 Column.prototype.setMinimum = function (source) {
2661 if (source === void 0) { source = "api"; }
2662 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.minWidth)) {
2663 this.setActualWidth(this.minWidth, source);
2664 }
2665 };
2666 Column.prototype.setRowGroupActive = function (rowGroup, source) {
2667 if (source === void 0) { source = "api"; }
2668 if (this.rowGroupActive !== rowGroup) {
2669 this.rowGroupActive = rowGroup;
2670 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_ROW_GROUP_CHANGED, source));
2671 }
2672 };
2673 /** Returns `true` if row group is currently active for this column. */
2674 Column.prototype.isRowGroupActive = function () {
2675 return this.rowGroupActive;
2676 };
2677 Column.prototype.setPivotActive = function (pivot, source) {
2678 if (source === void 0) { source = "api"; }
2679 if (this.pivotActive !== pivot) {
2680 this.pivotActive = pivot;
2681 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_PIVOT_CHANGED, source));
2682 }
2683 };
2684 /** Returns `true` if pivot is currently active for this column. */
2685 Column.prototype.isPivotActive = function () {
2686 return this.pivotActive;
2687 };
2688 Column.prototype.isAnyFunctionActive = function () {
2689 return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();
2690 };
2691 Column.prototype.isAnyFunctionAllowed = function () {
2692 return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();
2693 };
2694 Column.prototype.setValueActive = function (value, source) {
2695 if (source === void 0) { source = "api"; }
2696 if (this.aggregationActive !== value) {
2697 this.aggregationActive = value;
2698 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VALUE_CHANGED, source));
2699 }
2700 };
2701 /** Returns `true` if value (aggregation) is currently active for this column. */
2702 Column.prototype.isValueActive = function () {
2703 return this.aggregationActive;
2704 };
2705 Column.prototype.isAllowPivot = function () {
2706 return this.colDef.enablePivot === true;
2707 };
2708 Column.prototype.isAllowValue = function () {
2709 return this.colDef.enableValue === true;
2710 };
2711 Column.prototype.isAllowRowGroup = function () {
2712 return this.colDef.enableRowGroup === true;
2713 };
2714 Column.prototype.getMenuTabs = function (defaultValues) {
2715 var menuTabs = this.getColDef().menuTabs;
2716 if (menuTabs == null) {
2717 menuTabs = defaultValues;
2718 }
2719 return menuTabs;
2720 };
2721 // this used to be needed, as previous version of ag-grid had lockPosition as column state,
2722 // so couldn't depend on colDef version.
2723 Column.prototype.isLockPosition = function () {
2724 console.warn('AG Grid: since v21, col.isLockPosition() should not be used, please use col.getColDef().lockPosition instead.');
2725 return this.colDef ? !!this.colDef.lockPosition : false;
2726 };
2727 // this used to be needed, as previous version of ag-grid had lockVisible as column state,
2728 // so couldn't depend on colDef version.
2729 Column.prototype.isLockVisible = function () {
2730 console.warn('AG Grid: since v21, col.isLockVisible() should not be used, please use col.getColDef().lockVisible instead.');
2731 return this.colDef ? !!this.colDef.lockVisible : false;
2732 };
2733 // this used to be needed, as previous version of ag-grid had lockPinned as column state,
2734 // so couldn't depend on colDef version.
2735 Column.prototype.isLockPinned = function () {
2736 console.warn('AG Grid: since v21, col.isLockPinned() should not be used, please use col.getColDef().lockPinned instead.');
2737 return this.colDef ? !!this.colDef.lockPinned : false;
2738 };
2739 // + renderedHeaderCell - for making header cell transparent when moving
2740 Column.EVENT_MOVING_CHANGED = 'movingChanged';
2741 // + renderedCell - changing left position
2742 Column.EVENT_LEFT_CHANGED = 'leftChanged';
2743 // + renderedCell - changing width
2744 Column.EVENT_WIDTH_CHANGED = 'widthChanged';
2745 // + renderedCell - for changing pinned classes
2746 Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';
2747 Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';
2748 // + renderedColumn - for changing visibility icon
2749 Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';
2750 // + every time the filter changes, used in the floating filters
2751 Column.EVENT_FILTER_CHANGED = 'filterChanged';
2752 // + renderedHeaderCell - marks the header with filter icon
2753 Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';
2754 // + renderedHeaderCell - marks the header with sort icon
2755 Column.EVENT_SORT_CHANGED = 'sortChanged';
2756 Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';
2757 // + toolpanel, for gui updates
2758 Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';
2759 // + toolpanel, for gui updates
2760 Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';
2761 // + toolpanel, for gui updates
2762 Column.EVENT_VALUE_CHANGED = 'columnValueChanged';
2763 __decorate([
2764 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
2765 ], Column.prototype, "gridOptionsWrapper", void 0);
2766 __decorate([
2767 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnUtils')
2768 ], Column.prototype, "columnUtils", void 0);
2769 __decorate([
2770 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
2771 ], Column.prototype, "columnApi", void 0);
2772 __decorate([
2773 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
2774 ], Column.prototype, "gridApi", void 0);
2775 __decorate([
2776 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('context')
2777 ], Column.prototype, "context", void 0);
2778 __decorate([
2779 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
2780 ], Column.prototype, "initialise", null);
2781 return Column;
2782}());
2783
2784
2785
2786
2787
2788/***/ }),
2789/* 11 */
2790/***/ (function(module, __webpack_exports__, __webpack_require__) {
2791
2792"use strict";
2793__webpack_require__.r(__webpack_exports__);
2794/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EventService", function() { return EventService; });
2795/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
2796/**
2797 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
2798 * @version v27.3.0
2799 * @link https://www.ag-grid.com/
2800 * @license MIT
2801 */
2802var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2803 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2804 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2805 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;
2806 return c > 3 && r && Object.defineProperty(target, key, r), r;
2807};
2808var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
2809 return function (target, key) { decorator(target, key, paramIndex); }
2810};
2811
2812var EventService = /** @class */ (function () {
2813 function EventService() {
2814 this.allSyncListeners = new Map();
2815 this.allAsyncListeners = new Map();
2816 this.globalSyncListeners = new Set();
2817 this.globalAsyncListeners = new Set();
2818 this.asyncFunctionsQueue = [];
2819 this.scheduled = false;
2820 // using an object performs better than a Set for the number of different events we have
2821 this.firedEvents = {};
2822 }
2823 // because this class is used both inside the context and outside the context, we do not
2824 // use autowired attributes, as that would be confusing, as sometimes the attributes
2825 // would be wired, and sometimes not.
2826 //
2827 // the global event servers used by AG Grid is autowired by the context once, and this
2828 // setBeans method gets called once.
2829 //
2830 // the times when this class is used outside of the context (eg RowNode has an instance of this
2831 // class) then it is not a bean, and this setBeans method is not called.
2832 EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, frameworkOverrides, globalEventListener) {
2833 if (globalEventListener === void 0) { globalEventListener = null; }
2834 this.frameworkOverrides = frameworkOverrides;
2835 if (globalEventListener) {
2836 var async = gridOptionsWrapper.useAsyncEvents();
2837 this.addGlobalListener(globalEventListener, async);
2838 }
2839 };
2840 EventService.prototype.getListeners = function (eventType, async, autoCreateListenerCollection) {
2841 var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;
2842 var listeners = listenerMap.get(eventType);
2843 // Note: 'autoCreateListenerCollection' should only be 'true' if a listener is about to be added. For instance
2844 // getListeners() is also called during event dispatch even though no listeners are added. This measure protects
2845 // against 'memory bloat' as empty collections will prevent the RowNode's event service from being removed after
2846 // the RowComp is destroyed, see noRegisteredListenersExist() below.
2847 if (!listeners && autoCreateListenerCollection) {
2848 listeners = new Set();
2849 listenerMap.set(eventType, listeners);
2850 }
2851 return listeners;
2852 };
2853 EventService.prototype.noRegisteredListenersExist = function () {
2854 return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 &&
2855 this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;
2856 };
2857 EventService.prototype.addEventListener = function (eventType, listener, async) {
2858 if (async === void 0) { async = false; }
2859 this.getListeners(eventType, async, true).add(listener);
2860 };
2861 EventService.prototype.removeEventListener = function (eventType, listener, async) {
2862 if (async === void 0) { async = false; }
2863 var listeners = this.getListeners(eventType, async, false);
2864 if (!listeners) {
2865 return;
2866 }
2867 listeners.delete(listener);
2868 if (listeners.size === 0) {
2869 var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;
2870 listenerMap.delete(eventType);
2871 }
2872 };
2873 EventService.prototype.addGlobalListener = function (listener, async) {
2874 if (async === void 0) { async = false; }
2875 (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);
2876 };
2877 EventService.prototype.removeGlobalListener = function (listener, async) {
2878 if (async === void 0) { async = false; }
2879 (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);
2880 };
2881 EventService.prototype.dispatchEvent = function (event) {
2882 this.dispatchToListeners(event, true);
2883 this.dispatchToListeners(event, false);
2884 this.firedEvents[event.type] = true;
2885 };
2886 EventService.prototype.dispatchEventOnce = function (event) {
2887 if (!this.firedEvents[event.type]) {
2888 this.dispatchEvent(event);
2889 }
2890 };
2891 EventService.prototype.dispatchToListeners = function (event, async) {
2892 var _this = this;
2893 var eventType = event.type;
2894 var processEventListeners = function (listeners) { return listeners.forEach(function (listener) {
2895 if (async) {
2896 _this.dispatchAsync(function () { return listener(event); });
2897 }
2898 else {
2899 listener(event);
2900 }
2901 }); };
2902 var listeners = this.getListeners(eventType, async, false);
2903 if (listeners) {
2904 processEventListeners(listeners);
2905 }
2906 var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;
2907 globalListeners.forEach(function (listener) {
2908 if (async) {
2909 _this.dispatchAsync(function () { return _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true); });
2910 }
2911 else {
2912 _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true);
2913 }
2914 });
2915 };
2916 // this gets called inside the grid's thread, for each event that it
2917 // wants to set async. the grid then batches the events into one setTimeout()
2918 // because setTimeout() is an expensive operation. ideally we would have
2919 // each event in it's own setTimeout(), but we batch for performance.
2920 EventService.prototype.dispatchAsync = function (func) {
2921 // add to the queue for executing later in the next VM turn
2922 this.asyncFunctionsQueue.push(func);
2923 // check if timeout is already scheduled. the first time the grid calls
2924 // this within it's thread turn, this should be false, so it will schedule
2925 // the 'flush queue' method the first time it comes here. then the flag is
2926 // set to 'true' so it will know it's already scheduled for subsequent calls.
2927 if (!this.scheduled) {
2928 // if not scheduled, schedule one
2929 window.setTimeout(this.flushAsyncQueue.bind(this), 0);
2930 // mark that it is scheduled
2931 this.scheduled = true;
2932 }
2933 };
2934 // this happens in the next VM turn only, and empties the queue of events
2935 EventService.prototype.flushAsyncQueue = function () {
2936 this.scheduled = false;
2937 // we take a copy, because the event listener could be using
2938 // the grid, which would cause more events, which would be potentially
2939 // added to the queue, so safe to take a copy, the new events will
2940 // get executed in a later VM turn rather than risk updating the
2941 // queue as we are flushing it.
2942 var queueCopy = this.asyncFunctionsQueue.slice();
2943 this.asyncFunctionsQueue = [];
2944 // execute the queue
2945 queueCopy.forEach(function (func) { return func(); });
2946 };
2947 __decorate([
2948 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('loggerFactory')),
2949 __param(1, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('gridOptionsWrapper')),
2950 __param(2, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('frameworkOverrides')),
2951 __param(3, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('globalEventListener'))
2952 ], EventService.prototype, "setBeans", null);
2953 EventService = __decorate([
2954 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('eventService')
2955 ], EventService);
2956 return EventService;
2957}());
2958
2959
2960
2961
2962
2963/***/ }),
2964/* 12 */
2965/***/ (function(module, __webpack_exports__, __webpack_require__) {
2966
2967"use strict";
2968__webpack_require__.r(__webpack_exports__);
2969/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Context", function() { return Context; });
2970/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PreConstruct", function() { return PreConstruct; });
2971/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PostConstruct", function() { return PostConstruct; });
2972/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PreDestroy", function() { return PreDestroy; });
2973/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Bean", function() { return Bean; });
2974/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Autowired", function() { return Autowired; });
2975/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Optional", function() { return Optional; });
2976/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Qualifier", function() { return Qualifier; });
2977/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
2978/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
2979/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
2980/**
2981 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
2982 * @version v27.3.0
2983 * @link https://www.ag-grid.com/
2984 * @license MIT
2985 */
2986
2987
2988
2989var Context = /** @class */ (function () {
2990 function Context(params, logger) {
2991 this.beanWrappers = {};
2992 this.destroyed = false;
2993 if (!params || !params.beanClasses) {
2994 return;
2995 }
2996 this.contextParams = params;
2997 this.logger = logger;
2998 this.logger.log(">> creating ag-Application Context");
2999 this.createBeans();
3000 var beanInstances = this.getBeanInstances();
3001 this.wireBeans(beanInstances);
3002 this.logger.log(">> ag-Application Context ready - component is alive");
3003 }
3004 Context.prototype.getBeanInstances = function () {
3005 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["values"])(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });
3006 };
3007 Context.prototype.createBean = function (bean, afterPreCreateCallback) {
3008 if (!bean) {
3009 throw Error("Can't wire to bean since it is null");
3010 }
3011 this.wireBeans([bean], afterPreCreateCallback);
3012 return bean;
3013 };
3014 Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {
3015 this.autoWireBeans(beanInstances);
3016 this.methodWireBeans(beanInstances);
3017 this.callLifeCycleMethods(beanInstances, 'preConstructMethods');
3018 // the callback sets the attributes, so the component has access to attributes
3019 // before postConstruct methods in the component are executed
3020 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(afterPreCreateCallback)) {
3021 beanInstances.forEach(afterPreCreateCallback);
3022 }
3023 this.callLifeCycleMethods(beanInstances, 'postConstructMethods');
3024 };
3025 Context.prototype.createBeans = function () {
3026 var _this = this;
3027 // register all normal beans
3028 this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));
3029 // register override beans, these will overwrite beans above of same name
3030 // instantiate all beans - overridden beans will be left out
3031 Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["iterateObject"])(this.beanWrappers, function (key, beanEntry) {
3032 var constructorParamsMeta;
3033 if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {
3034 constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;
3035 }
3036 var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);
3037 var newInstance = applyToConstructor(beanEntry.bean, constructorParams);
3038 beanEntry.beanInstance = newInstance;
3039 });
3040 var createdBeanNames = Object.keys(this.beanWrappers).join(', ');
3041 this.logger.log("created beans: " + createdBeanNames);
3042 };
3043 // tslint:disable-next-line
3044 Context.prototype.createBeanWrapper = function (BeanClass) {
3045 var metaData = BeanClass.__agBeanMetaData;
3046 if (!metaData) {
3047 var beanName = void 0;
3048 if (BeanClass.prototype.constructor) {
3049 beanName = Object(_utils_function__WEBPACK_IMPORTED_MODULE_2__["getFunctionName"])(BeanClass.prototype.constructor);
3050 }
3051 else {
3052 beanName = "" + BeanClass;
3053 }
3054 console.error("Context item " + beanName + " is not a bean");
3055 return;
3056 }
3057 var beanEntry = {
3058 bean: BeanClass,
3059 beanInstance: null,
3060 beanName: metaData.beanName
3061 };
3062 this.beanWrappers[metaData.beanName] = beanEntry;
3063 };
3064 Context.prototype.autoWireBeans = function (beanInstances) {
3065 var _this = this;
3066 beanInstances.forEach(function (beanInstance) {
3067 _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {
3068 var attributes = metaData.agClassAttributes;
3069 if (!attributes) {
3070 return;
3071 }
3072 attributes.forEach(function (attribute) {
3073 var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);
3074 beanInstance[attribute.attributeName] = otherBean;
3075 });
3076 });
3077 });
3078 };
3079 Context.prototype.methodWireBeans = function (beanInstances) {
3080 var _this = this;
3081 beanInstances.forEach(function (beanInstance) {
3082 _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {
3083 Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["iterateObject"])(metaData.autowireMethods, function (methodName, wireParams) {
3084 // skip constructor, as this is dealt with elsewhere
3085 if (methodName === "agConstructor") {
3086 return;
3087 }
3088 var initParams = _this.getBeansForParameters(wireParams, beanName);
3089 beanInstance[methodName].apply(beanInstance, initParams);
3090 });
3091 });
3092 });
3093 };
3094 Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {
3095 var prototype = Object.getPrototypeOf(beanInstance);
3096 while (prototype != null) {
3097 var constructor = prototype.constructor;
3098 if (constructor.hasOwnProperty('__agBeanMetaData')) {
3099 var metaData = constructor.__agBeanMetaData;
3100 var beanName = this.getBeanName(constructor);
3101 callback(metaData, beanName);
3102 }
3103 prototype = Object.getPrototypeOf(prototype);
3104 }
3105 };
3106 Context.prototype.getBeanName = function (constructor) {
3107 if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {
3108 return constructor.__agBeanMetaData.beanName;
3109 }
3110 var constructorString = constructor.toString();
3111 var beanName = constructorString.substring(9, constructorString.indexOf("("));
3112 return beanName;
3113 };
3114 Context.prototype.getBeansForParameters = function (parameters, beanName) {
3115 var _this = this;
3116 var beansList = [];
3117 if (parameters) {
3118 Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["iterateObject"])(parameters, function (paramIndex, otherBeanName) {
3119 var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);
3120 beansList[Number(paramIndex)] = otherBean;
3121 });
3122 }
3123 return beansList;
3124 };
3125 Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {
3126 if (optional === void 0) { optional = false; }
3127 if (beanName === "context") {
3128 return this;
3129 }
3130 if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {
3131 return this.contextParams.providedBeanInstances[beanName];
3132 }
3133 var beanEntry = this.beanWrappers[beanName];
3134 if (beanEntry) {
3135 return beanEntry.beanInstance;
3136 }
3137 if (!optional) {
3138 console.error("AG Grid: unable to find bean reference " + beanName + " while initialising " + wiringBean);
3139 }
3140 return null;
3141 };
3142 Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {
3143 var _this = this;
3144 beanInstances.forEach(function (beanInstance) { return _this.callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod); });
3145 };
3146 Context.prototype.callLifeCycleMethodsOnBean = function (beanInstance, lifeCycleMethod, methodToIgnore) {
3147 // putting all methods into a map removes duplicates
3148 var allMethods = {};
3149 // dump methods from each level of the metadata hierarchy
3150 this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {
3151 var methods = metaData[lifeCycleMethod];
3152 if (methods) {
3153 methods.forEach(function (methodName) {
3154 if (methodName != methodToIgnore) {
3155 allMethods[methodName] = true;
3156 }
3157 });
3158 }
3159 });
3160 var allMethodsList = Object.keys(allMethods);
3161 allMethodsList.forEach(function (methodName) { return beanInstance[methodName](); });
3162 };
3163 Context.prototype.getBean = function (name) {
3164 return this.lookupBeanInstance("getBean", name, true);
3165 };
3166 Context.prototype.destroy = function () {
3167 if (this.destroyed) {
3168 return;
3169 }
3170 this.logger.log(">> Shutting down ag-Application Context");
3171 var beanInstances = this.getBeanInstances();
3172 this.destroyBeans(beanInstances);
3173 this.contextParams.providedBeanInstances = null;
3174 this.destroyed = true;
3175 this.logger.log(">> ag-Application Context shut down - component is dead");
3176 };
3177 Context.prototype.destroyBean = function (bean) {
3178 if (!bean) {
3179 return;
3180 }
3181 this.destroyBeans([bean]);
3182 };
3183 Context.prototype.destroyBeans = function (beans) {
3184 var _this = this;
3185 if (!beans) {
3186 return [];
3187 }
3188 beans.forEach(function (bean) {
3189 _this.callLifeCycleMethodsOnBean(bean, 'preDestroyMethods', 'destroy');
3190 // call destroy() explicitly if it exists
3191 var beanAny = bean;
3192 if (typeof beanAny.destroy === 'function') {
3193 beanAny.destroy();
3194 }
3195 });
3196 return [];
3197 };
3198 return Context;
3199}());
3200
3201// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply
3202// allows calling 'apply' on a constructor
3203function applyToConstructor(constructor, argArray) {
3204 var args = [null].concat(argArray);
3205 var factoryFunction = constructor.bind.apply(constructor, args);
3206 return new factoryFunction();
3207}
3208function PreConstruct(target, methodName, descriptor) {
3209 var props = getOrCreateProps(target.constructor);
3210 if (!props.preConstructMethods) {
3211 props.preConstructMethods = [];
3212 }
3213 props.preConstructMethods.push(methodName);
3214}
3215function PostConstruct(target, methodName, descriptor) {
3216 var props = getOrCreateProps(target.constructor);
3217 if (!props.postConstructMethods) {
3218 props.postConstructMethods = [];
3219 }
3220 props.postConstructMethods.push(methodName);
3221}
3222function PreDestroy(target, methodName, descriptor) {
3223 var props = getOrCreateProps(target.constructor);
3224 if (!props.preDestroyMethods) {
3225 props.preDestroyMethods = [];
3226 }
3227 props.preDestroyMethods.push(methodName);
3228}
3229function Bean(beanName) {
3230 return function (classConstructor) {
3231 var props = getOrCreateProps(classConstructor);
3232 props.beanName = beanName;
3233 };
3234}
3235function Autowired(name) {
3236 return function (target, propertyKey, descriptor) {
3237 autowiredFunc(target, name, false, target, propertyKey, null);
3238 };
3239}
3240function Optional(name) {
3241 return function (target, propertyKey, descriptor) {
3242 autowiredFunc(target, name, true, target, propertyKey, null);
3243 };
3244}
3245function autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {
3246 if (name === null) {
3247 console.error("AG Grid: Autowired name should not be null");
3248 return;
3249 }
3250 if (typeof index === "number") {
3251 console.error("AG Grid: Autowired should be on an attribute");
3252 return;
3253 }
3254 // it's an attribute on the class
3255 var props = getOrCreateProps(target.constructor);
3256 if (!props.agClassAttributes) {
3257 props.agClassAttributes = [];
3258 }
3259 props.agClassAttributes.push({
3260 attributeName: methodOrAttributeName,
3261 beanName: name,
3262 optional: optional
3263 });
3264}
3265function Qualifier(name) {
3266 return function (classPrototype, methodOrAttributeName, index) {
3267 var constructor = typeof classPrototype == "function" ? classPrototype : classPrototype.constructor;
3268 var props;
3269 if (typeof index === "number") {
3270 // it's a parameter on a method
3271 var methodName = void 0;
3272 if (methodOrAttributeName) {
3273 props = getOrCreateProps(constructor);
3274 methodName = methodOrAttributeName;
3275 }
3276 else {
3277 props = getOrCreateProps(constructor);
3278 methodName = "agConstructor";
3279 }
3280 if (!props.autowireMethods) {
3281 props.autowireMethods = {};
3282 }
3283 if (!props.autowireMethods[methodName]) {
3284 props.autowireMethods[methodName] = {};
3285 }
3286 props.autowireMethods[methodName][index] = name;
3287 }
3288 };
3289}
3290function getOrCreateProps(target) {
3291 if (!target.hasOwnProperty("__agBeanMetaData")) {
3292 target.__agBeanMetaData = {};
3293 }
3294 return target.__agBeanMetaData;
3295}
3296
3297
3298
3299
3300/***/ }),
3301/* 13 */
3302/***/ (function(module, __webpack_exports__, __webpack_require__) {
3303
3304"use strict";
3305__webpack_require__.r(__webpack_exports__);
3306/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterateObject", function() { return iterateObject; });
3307/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cloneObject", function() { return cloneObject; });
3308/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepCloneObject", function() { return deepCloneObject; });
3309/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepCloneDefinition", function() { return deepCloneDefinition; });
3310/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProperty", function() { return getProperty; });
3311/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setProperty", function() { return setProperty; });
3312/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyPropertiesIfPresent", function() { return copyPropertiesIfPresent; });
3313/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyPropertyIfPresent", function() { return copyPropertyIfPresent; });
3314/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllKeysInObjects", function() { return getAllKeysInObjects; });
3315/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllValuesInObject", function() { return getAllValuesInObject; });
3316/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeDeep", function() { return mergeDeep; });
3317/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "missingOrEmptyObject", function() { return missingOrEmptyObject; });
3318/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
3319/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "set", function() { return set; });
3320/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepFreeze", function() { return deepFreeze; });
3321/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getValueUsingField", function() { return getValueUsingField; });
3322/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAllReferences", function() { return removeAllReferences; });
3323/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNonNullObject", function() { return isNonNullObject; });
3324/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
3325/**
3326 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3327 * @version v27.3.0
3328 * @link https://www.ag-grid.com/
3329 * @license MIT
3330 */
3331
3332function iterateObject(object, callback) {
3333 if (object == null) {
3334 return;
3335 }
3336 if (Array.isArray(object)) {
3337 object.forEach(function (value, index) { return callback("" + index, value); });
3338 }
3339 else {
3340 Object.keys(object).forEach(function (key) { return callback(key, object[key]); });
3341 }
3342}
3343function cloneObject(object) {
3344 var copy = {};
3345 var keys = Object.keys(object);
3346 for (var i = 0; i < keys.length; i++) {
3347 var key = keys[i];
3348 var value = object[key];
3349 copy[key] = value;
3350 }
3351 return copy;
3352}
3353function deepCloneObject(object) {
3354 return JSON.parse(JSON.stringify(object));
3355}
3356// returns copy of an object, doing a deep clone of any objects with that object.
3357// this is used for eg creating copies of Column Definitions, where we want to
3358// deep copy all objects, but do not want to deep copy functions (eg when user provides
3359// a function or class for colDef.cellRenderer)
3360function deepCloneDefinition(object, keysToSkip) {
3361 if (!object) {
3362 return;
3363 }
3364 var obj = object;
3365 var res = {};
3366 Object.keys(obj).forEach(function (key) {
3367 if (keysToSkip && keysToSkip.indexOf(key) >= 0) {
3368 return;
3369 }
3370 var value = obj[key];
3371 // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}. it does
3372 // NOT include the following:
3373 // 1) arrays
3374 // 2) functions or classes (eg ColumnAPI instance)
3375 var sourceIsSimpleObject = isNonNullObject(value) && value.constructor === Object;
3376 if (sourceIsSimpleObject) {
3377 res[key] = deepCloneDefinition(value);
3378 }
3379 else {
3380 res[key] = value;
3381 }
3382 });
3383 return res;
3384}
3385function getProperty(object, key) {
3386 return object[key];
3387}
3388function setProperty(object, key, value) {
3389 object[key] = value;
3390}
3391/**
3392 * Will copy the specified properties from `source` into the equivalent properties on `target`, ignoring properties with
3393 * a value of `undefined`.
3394 */
3395function copyPropertiesIfPresent(source, target) {
3396 var properties = [];
3397 for (var _i = 2; _i < arguments.length; _i++) {
3398 properties[_i - 2] = arguments[_i];
3399 }
3400 properties.forEach(function (p) { return copyPropertyIfPresent(source, target, p); });
3401}
3402/**
3403 * Will copy the specified property from `source` into the equivalent property on `target`, unless the property has a
3404 * value of `undefined`. If a transformation is provided, it will be applied to the value before being set on `target`.
3405 */
3406function copyPropertyIfPresent(source, target, property, transform) {
3407 var value = getProperty(source, property);
3408 if (value !== undefined) {
3409 setProperty(target, property, transform ? transform(value) : value);
3410 }
3411}
3412function getAllKeysInObjects(objects) {
3413 var allValues = {};
3414 objects.filter(function (obj) { return obj != null; }).forEach(function (obj) {
3415 Object.keys(obj).forEach(function (key) { return allValues[key] = null; });
3416 });
3417 return Object.keys(allValues);
3418}
3419function getAllValuesInObject(obj) {
3420 if (!obj) {
3421 return [];
3422 }
3423 var anyObject = Object;
3424 if (typeof anyObject.values === 'function') {
3425 return anyObject.values(obj);
3426 }
3427 var ret = [];
3428 for (var key in obj) {
3429 if (obj.hasOwnProperty(key) && obj.propertyIsEnumerable(key)) {
3430 ret.push(obj[key]);
3431 }
3432 }
3433 return ret;
3434}
3435function mergeDeep(dest, source, copyUndefined, makeCopyOfSimpleObjects) {
3436 if (copyUndefined === void 0) { copyUndefined = true; }
3437 if (makeCopyOfSimpleObjects === void 0) { makeCopyOfSimpleObjects = false; }
3438 if (!Object(_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(source)) {
3439 return;
3440 }
3441 iterateObject(source, function (key, sourceValue) {
3442 var destValue = dest[key];
3443 if (destValue === sourceValue) {
3444 return;
3445 }
3446 // when creating params, we don't want to just copy objects over. otherwise merging ColDefs (eg DefaultColDef
3447 // and Column Types) would result in params getting shared between objects.
3448 // by putting an empty value into destValue first, it means we end up copying over values from
3449 // the source object, rather than just copying in the source object in it's entirety.
3450 if (makeCopyOfSimpleObjects) {
3451 var objectIsDueToBeCopied = destValue == null && sourceValue != null;
3452 if (objectIsDueToBeCopied) {
3453 // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}, as opposed
3454 // to a Class instance (such as ColumnAPI instance).
3455 var sourceIsSimpleObject = typeof sourceValue === 'object' && sourceValue.constructor === Object;
3456 var dontCopy = sourceIsSimpleObject;
3457 if (dontCopy) {
3458 destValue = {};
3459 dest[key] = destValue;
3460 }
3461 }
3462 }
3463 if (isNonNullObject(sourceValue) && isNonNullObject(destValue) && !Array.isArray(destValue)) {
3464 mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);
3465 }
3466 else if (copyUndefined || sourceValue !== undefined) {
3467 dest[key] = sourceValue;
3468 }
3469 });
3470}
3471function missingOrEmptyObject(value) {
3472 return Object(_generic__WEBPACK_IMPORTED_MODULE_0__["missing"])(value) || Object.keys(value).length === 0;
3473}
3474function get(source, expression, defaultValue) {
3475 if (source == null) {
3476 return defaultValue;
3477 }
3478 var keys = expression.split('.');
3479 var objectToRead = source;
3480 while (keys.length > 1) {
3481 objectToRead = objectToRead[keys.shift()];
3482 if (objectToRead == null) {
3483 return defaultValue;
3484 }
3485 }
3486 var value = objectToRead[keys[0]];
3487 return value != null ? value : defaultValue;
3488}
3489function set(target, expression, value) {
3490 if (target == null) {
3491 return;
3492 }
3493 var keys = expression.split('.');
3494 var objectToUpdate = target;
3495 while (keys.length > 1) {
3496 objectToUpdate = objectToUpdate[keys.shift()];
3497 if (objectToUpdate == null) {
3498 return;
3499 }
3500 }
3501 objectToUpdate[keys[0]] = value;
3502}
3503function deepFreeze(object) {
3504 Object.freeze(object);
3505 Object(_generic__WEBPACK_IMPORTED_MODULE_0__["values"])(object).forEach(function (v) {
3506 if (isNonNullObject(v) || typeof v === 'function') {
3507 deepFreeze(v);
3508 }
3509 });
3510 return object;
3511}
3512function getValueUsingField(data, field, fieldContainsDots) {
3513 if (!field || !data) {
3514 return;
3515 }
3516 // if no '.', then it's not a deep value
3517 if (!fieldContainsDots) {
3518 return data[field];
3519 }
3520 // otherwise it is a deep value, so need to dig for it
3521 var fields = field.split('.');
3522 var currentObject = data;
3523 for (var i = 0; i < fields.length; i++) {
3524 if (currentObject == null) {
3525 return undefined;
3526 }
3527 currentObject = currentObject[fields[i]];
3528 }
3529 return currentObject;
3530}
3531// used by ColumnAPI and GridAPI to remove all references, so keeping grid in memory resulting in a
3532// memory leak if user is not disposing of the GridAPI or ColumnApi references
3533function removeAllReferences(obj, objectName) {
3534 Object.keys(obj).forEach(function (key) {
3535 var value = obj[key];
3536 // we want to replace all the @autowired services, which are objects. any simple types (boolean, string etc)
3537 // we don't care about
3538 if (typeof value === 'object') {
3539 obj[key] = undefined;
3540 }
3541 });
3542 var proto = Object.getPrototypeOf(obj);
3543 var properties = {};
3544 Object.keys(proto).forEach(function (key) {
3545 var value = proto[key];
3546 // leave all basic types - this is needed for GridAPI to leave the "destroyed: boolean" attribute alone
3547 if (typeof value === 'function') {
3548 var func = function () {
3549 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.");
3550 };
3551 properties[key] = { value: func, writable: true };
3552 }
3553 });
3554 Object.defineProperties(obj, properties);
3555}
3556function isNonNullObject(value) {
3557 return typeof value === 'object' && value !== null;
3558}
3559
3560
3561
3562
3563/***/ }),
3564/* 14 */
3565/***/ (function(module, __webpack_exports__, __webpack_require__) {
3566
3567"use strict";
3568__webpack_require__.r(__webpack_exports__);
3569/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "doOnce", function() { return doOnce; });
3570/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFunctionName", function() { return getFunctionName; });
3571/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFunctionParameters", function() { return getFunctionParameters; });
3572/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; });
3573/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeInAWhile", function() { return executeInAWhile; });
3574/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeNextVMTurn", function() { return executeNextVMTurn; });
3575/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeAfter", function() { return executeAfter; });
3576/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; });
3577/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; });
3578/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "waitUntil", function() { return waitUntil; });
3579/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return compose; });
3580/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "callIfPresent", function() { return callIfPresent; });
3581/**
3582 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3583 * @version v27.3.0
3584 * @link https://www.ag-grid.com/
3585 * @license MIT
3586 */
3587var FUNCTION_STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
3588var FUNCTION_ARGUMENT_NAMES = /([^\s,]+)/g;
3589var doOnceFlags = {};
3590/**
3591 * If the key was passed before, then doesn't execute the func
3592 * @param {Function} func
3593 * @param {string} key
3594 */
3595function doOnce(func, key) {
3596 if (doOnceFlags[key]) {
3597 return;
3598 }
3599 func();
3600 doOnceFlags[key] = true;
3601}
3602function getFunctionName(funcConstructor) {
3603 // for every other browser in the world
3604 if (funcConstructor.name) {
3605 return funcConstructor.name;
3606 }
3607 // for the pestilence that is ie11
3608 var matches = /function\s+([^\(]+)/.exec(funcConstructor.toString());
3609 return matches && matches.length === 2 ? matches[1].trim() : null;
3610}
3611/** @deprecated */
3612function getFunctionParameters(func) {
3613 var fnStr = func.toString().replace(FUNCTION_STRIP_COMMENTS, '');
3614 return fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(FUNCTION_ARGUMENT_NAMES) || [];
3615}
3616function isFunction(val) {
3617 return !!(val && val.constructor && val.call && val.apply);
3618}
3619function executeInAWhile(funcs) {
3620 executeAfter(funcs, 400);
3621}
3622var executeNextVMTurnFuncs = [];
3623var executeNextVMTurnPending = false;
3624function executeNextVMTurn(func) {
3625 executeNextVMTurnFuncs.push(func);
3626 if (executeNextVMTurnPending) {
3627 return;
3628 }
3629 executeNextVMTurnPending = true;
3630 window.setTimeout(function () {
3631 var funcsCopy = executeNextVMTurnFuncs.slice();
3632 executeNextVMTurnFuncs.length = 0;
3633 executeNextVMTurnPending = false;
3634 funcsCopy.forEach(function (func) { return func(); });
3635 }, 0);
3636}
3637function executeAfter(funcs, milliseconds) {
3638 if (milliseconds === void 0) { milliseconds = 0; }
3639 if (funcs.length > 0) {
3640 window.setTimeout(function () { return funcs.forEach(function (func) { return func(); }); }, milliseconds);
3641 }
3642}
3643/**
3644 * from https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript
3645 * @param {Function} func The function to be debounced
3646 * @param {number} wait The time in ms to debounce
3647 * @param {boolean} immediate If it should run immediately or wait for the initial debounce delay
3648 * @return {Function} The debounced function
3649 */
3650function debounce(func, wait, immediate) {
3651 if (immediate === void 0) { immediate = false; }
3652 // 'private' variable for instance
3653 // The returned function will be able to reference this due to closure.
3654 // Each call to the returned function will share this common timer.
3655 var timeout;
3656 // Calling debounce returns a new anonymous function
3657 return function () {
3658 var args = [];
3659 for (var _i = 0; _i < arguments.length; _i++) {
3660 args[_i] = arguments[_i];
3661 }
3662 // reference the context and args for the setTimeout function
3663 var context = this;
3664 // Should the function be called now? If immediate is true
3665 // and not already in a timeout then the answer is: Yes
3666 var callNow = immediate && !timeout;
3667 // This is the basic debounce behaviour where you can call this
3668 // function several times, but it will only execute once
3669 // [before or after imposing a delay].
3670 // Each time the returned function is called, the timer starts over.
3671 window.clearTimeout(timeout);
3672 // Set the new timeout
3673 timeout = window.setTimeout(function () {
3674 // Inside the timeout function, clear the timeout variable
3675 // which will let the next execution run when in 'immediate' mode
3676 timeout = null;
3677 // Check if the function already ran with the immediate flag
3678 if (!immediate) {
3679 // Call the original function with apply
3680 // apply lets you define the 'this' object as well as the arguments
3681 // (both captured before setTimeout)
3682 func.apply(context, args);
3683 }
3684 }, wait);
3685 // Immediate mode and no wait timer? Execute the function..
3686 if (callNow) {
3687 func.apply(context, args);
3688 }
3689 };
3690}
3691/**
3692 * @param {Function} func The function to be throttled
3693 * @param {number} wait The time in ms to throttle
3694 * @return {Function} The throttled function
3695 */
3696function throttle(func, wait) {
3697 var previousCall = 0;
3698 return function () {
3699 var args = [];
3700 for (var _i = 0; _i < arguments.length; _i++) {
3701 args[_i] = arguments[_i];
3702 }
3703 var context = this;
3704 var currentCall = new Date().getTime();
3705 if (currentCall - previousCall < wait) {
3706 return;
3707 }
3708 previousCall = currentCall;
3709 func.apply(context, args);
3710 };
3711}
3712function waitUntil(condition, callback, timeout, timeoutMessage) {
3713 if (timeout === void 0) { timeout = 100; }
3714 var timeStamp = new Date().getTime();
3715 var interval = null;
3716 var executed = false;
3717 var internalCallback = function () {
3718 var reachedTimeout = ((new Date().getTime()) - timeStamp) > timeout;
3719 if (condition() || reachedTimeout) {
3720 callback();
3721 executed = true;
3722 if (interval != null) {
3723 window.clearInterval(interval);
3724 interval = null;
3725 }
3726 if (reachedTimeout && timeoutMessage) {
3727 console.warn(timeoutMessage);
3728 }
3729 }
3730 };
3731 internalCallback();
3732 if (!executed) {
3733 interval = window.setInterval(internalCallback, 10);
3734 }
3735}
3736function compose() {
3737 var fns = [];
3738 for (var _i = 0; _i < arguments.length; _i++) {
3739 fns[_i] = arguments[_i];
3740 }
3741 return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };
3742}
3743function callIfPresent(func) {
3744 if (func) {
3745 func();
3746 }
3747}
3748
3749
3750
3751
3752/***/ }),
3753/* 15 */
3754/***/ (function(module, __webpack_exports__, __webpack_require__) {
3755
3756"use strict";
3757__webpack_require__.r(__webpack_exports__);
3758/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Constants", function() { return Constants; });
3759/**
3760 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3761 * @version v27.3.0
3762 * @link https://www.ag-grid.com/
3763 * @license MIT
3764 */
3765var Constants = /** @class */ (function () {
3766 function Constants() {
3767 }
3768 Constants.ROW_BUFFER_SIZE = 10;
3769 Constants.LAYOUT_INTERVAL = 500;
3770 Constants.BATCH_WAIT_MILLIS = 50;
3771 Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';
3772 Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';
3773 Constants.EXPORT_TYPE_EXCEL = 'excel';
3774 Constants.EXPORT_TYPE_CSV = 'csv';
3775 Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';
3776 Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';
3777 Constants.ROW_MODEL_TYPE_CLIENT_SIDE = 'clientSide';
3778 Constants.ROW_MODEL_TYPE_SERVER_SIDE = 'serverSide';
3779 Constants.ALWAYS = 'always';
3780 Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';
3781 Constants.PINNED_TOP = 'top';
3782 Constants.PINNED_BOTTOM = 'bottom';
3783 Constants.DOM_LAYOUT_NORMAL = 'normal';
3784 Constants.DOM_LAYOUT_PRINT = 'print';
3785 Constants.DOM_LAYOUT_AUTO_HEIGHT = 'autoHeight';
3786 Constants.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';
3787 Constants.SOURCE_PASTE = 'paste';
3788 Constants.PINNED_RIGHT = 'right';
3789 Constants.PINNED_LEFT = 'left';
3790 Constants.SORT_ASC = 'asc';
3791 Constants.SORT_DESC = 'desc';
3792 Constants.INPUT_SELECTOR = 'input, select, button, textarea';
3793 Constants.FOCUSABLE_SELECTOR = '[tabindex], input, select, button, textarea';
3794 Constants.FOCUSABLE_EXCLUDE = '.ag-hidden, .ag-hidden *, [disabled], .ag-disabled, .ag-disabled *';
3795 return Constants;
3796}());
3797
3798
3799
3800
3801
3802/***/ }),
3803/* 16 */
3804/***/ (function(module, __webpack_exports__, __webpack_require__) {
3805
3806"use strict";
3807__webpack_require__.r(__webpack_exports__);
3808/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModuleNames", function() { return ModuleNames; });
3809/**
3810 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3811 * @version v27.3.0
3812 * @link https://www.ag-grid.com/
3813 * @license MIT
3814 */
3815var ModuleNames;
3816(function (ModuleNames) {
3817 // when using modules, user references this
3818 ModuleNames["CommunityCoreModule"] = "@ag-grid-community/core";
3819 // when not using modules, user references this
3820 ModuleNames["CommunityAllModules"] = "@ag-grid-community/all";
3821 // community modules
3822 ModuleNames["InfiniteRowModelModule"] = "@ag-grid-community/infinite-row-model";
3823 ModuleNames["ClientSideRowModelModule"] = "@ag-grid-community/client-side-row-model";
3824 ModuleNames["CsvExportModule"] = "@ag-grid-community/csv-export";
3825 // enterprise core - users never import on this, but other enterprise modules do
3826 ModuleNames["EnterpriseCoreModule"] = "@ag-grid-enterprise/core";
3827 // when not using modules, user references this
3828 ModuleNames["EnterpriseAllModules"] = "@ag-grid-enterprise/all";
3829 // enterprise modules
3830 ModuleNames["RowGroupingModule"] = "@ag-grid-enterprise/row-grouping";
3831 ModuleNames["ColumnToolPanelModule"] = "@ag-grid-enterprise/column-tool-panel";
3832 ModuleNames["FiltersToolPanelModule"] = "@ag-grid-enterprise/filter-tool-panel";
3833 ModuleNames["MenuModule"] = "@ag-grid-enterprise/menu";
3834 ModuleNames["SetFilterModule"] = "@ag-grid-enterprise/set-filter";
3835 ModuleNames["MultiFilterModule"] = "@ag-grid-enterprise/multi-filter";
3836 ModuleNames["StatusBarModule"] = "@ag-grid-enterprise/status-bar";
3837 ModuleNames["SideBarModule"] = "@ag-grid-enterprise/side-bar";
3838 ModuleNames["RangeSelectionModule"] = "@ag-grid-enterprise/range-selection";
3839 ModuleNames["MasterDetailModule"] = "@ag-grid-enterprise/master-detail";
3840 ModuleNames["RichSelectModule"] = "@ag-grid-enterprise/rich-select";
3841 ModuleNames["GridChartsModule"] = "@ag-grid-enterprise/charts";
3842 ModuleNames["ViewportRowModelModule"] = "@ag-grid-enterprise/viewport-row-model";
3843 ModuleNames["ServerSideRowModelModule"] = "@ag-grid-enterprise/server-side-row-model";
3844 ModuleNames["ExcelExportModule"] = "@ag-grid-enterprise/excel-export";
3845 ModuleNames["ClipboardModule"] = "@ag-grid-enterprise/clipboard";
3846 ModuleNames["SparklinesModule"] = "@ag-grid-enterprise/sparklines";
3847 // framework wrappers currently don't provide beans, comps etc, so no need to be modules,
3848 // however i argue they should be as in theory they 'could' provide beans etc
3849 ModuleNames["AngularModule"] = "@ag-grid-community/angular";
3850 ModuleNames["ReactModule"] = "@ag-grid-community/react";
3851 ModuleNames["VueModule"] = "@ag-grid-community/vue";
3852 ModuleNames["PolymerModule"] = "@ag-grid-community/polymer";
3853 // and then this, which is definitely not a grid module, as it should not have any dependency
3854 // on the grid (ie shouldn't even reference the Module interface)
3855 // ChartsModule = "@ag-grid-community/charts-core",
3856})(ModuleNames || (ModuleNames = {}));
3857
3858
3859
3860
3861/***/ }),
3862/* 17 */
3863/***/ (function(module, __webpack_exports__, __webpack_require__) {
3864
3865"use strict";
3866__webpack_require__.r(__webpack_exports__);
3867/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModuleRegistry", function() { return ModuleRegistry; });
3868/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
3869/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
3870/**
3871 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3872 * @version v27.3.0
3873 * @link https://www.ag-grid.com/
3874 * @license MIT
3875 */
3876
3877
3878var ModuleRegistry = /** @class */ (function () {
3879 function ModuleRegistry() {
3880 }
3881 ModuleRegistry.register = function (module, moduleBased) {
3882 if (moduleBased === void 0) { moduleBased = true; }
3883 ModuleRegistry.modulesMap[module.moduleName] = module;
3884 if (ModuleRegistry.moduleBased === undefined) {
3885 ModuleRegistry.moduleBased = moduleBased;
3886 }
3887 else {
3888 if (ModuleRegistry.moduleBased !== moduleBased) {
3889 Object(_utils_function__WEBPACK_IMPORTED_MODULE_0__["doOnce"])(function () {
3890 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.");
3891 console.warn('Please see https://www.ag-grid.com/javascript-grid/packages-modules/ for more information.');
3892 }, 'ModulePackageCheck');
3893 }
3894 }
3895 };
3896 // noinspection JSUnusedGlobalSymbols
3897 ModuleRegistry.registerModules = function (modules, moduleBased) {
3898 if (moduleBased === void 0) { moduleBased = true; }
3899 if (!modules) {
3900 return;
3901 }
3902 modules.forEach(function (module) { return ModuleRegistry.register(module, moduleBased); });
3903 };
3904 ModuleRegistry.assertRegistered = function (moduleName, reason) {
3905 if (this.isRegistered(moduleName)) {
3906 return true;
3907 }
3908 var warningKey = reason + moduleName;
3909 var warningMessage;
3910 if (ModuleRegistry.moduleBased) {
3911 warningMessage = "AG Grid: unable to use " + reason + " as module " + moduleName + " is not present. Please see: https://www.ag-grid.com/javascript-grid/modules/";
3912 }
3913 else {
3914 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/";
3915 }
3916 Object(_utils_function__WEBPACK_IMPORTED_MODULE_0__["doOnce"])(function () {
3917 console.warn(warningMessage);
3918 }, warningKey);
3919 return false;
3920 };
3921 ModuleRegistry.isRegistered = function (moduleName) {
3922 return !!ModuleRegistry.modulesMap[moduleName];
3923 };
3924 ModuleRegistry.getRegisteredModules = function () {
3925 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_1__["values"])(ModuleRegistry.modulesMap);
3926 };
3927 ModuleRegistry.isPackageBased = function () {
3928 return !ModuleRegistry.moduleBased;
3929 };
3930 // having in a map a) removes duplicates and b) allows fast lookup
3931 ModuleRegistry.modulesMap = {};
3932 return ModuleRegistry;
3933}());
3934
3935
3936
3937
3938
3939/***/ }),
3940/* 18 */
3941/***/ (function(module, __webpack_exports__, __webpack_require__) {
3942
3943"use strict";
3944__webpack_require__.r(__webpack_exports__);
3945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "firstExistingValue", function() { return firstExistingValue; });
3946/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "existsAndNotEmpty", function() { return existsAndNotEmpty; });
3947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; });
3948/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "areEqual", function() { return areEqual; });
3949/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compareArrays", function() { return compareArrays; });
3950/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shallowCompare", function() { return shallowCompare; });
3951/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortNumerically", function() { return sortNumerically; });
3952/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeRepeatsFromArray", function() { return removeRepeatsFromArray; });
3953/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFromArray", function() { return removeFromArray; });
3954/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAllFromArray", function() { return removeAllFromArray; });
3955/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertIntoArray", function() { return insertIntoArray; });
3956/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertArrayIntoArray", function() { return insertArrayIntoArray; });
3957/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "moveInArray", function() { return moveInArray; });
3958/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return includes; });
3959/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return flatten; });
3960/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pushAll", function() { return pushAll; });
3961/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toStrings", function() { return toStrings; });
3962/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEachReverse", function() { return forEachReverse; });
3963/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
3964/**
3965 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3966 * @version v27.3.0
3967 * @link https://www.ag-grid.com/
3968 * @license MIT
3969 */
3970
3971function firstExistingValue() {
3972 var values = [];
3973 for (var _i = 0; _i < arguments.length; _i++) {
3974 values[_i] = arguments[_i];
3975 }
3976 for (var i = 0; i < values.length; i++) {
3977 var value = values[i];
3978 if (Object(_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(value)) {
3979 return value;
3980 }
3981 }
3982 return null;
3983}
3984function existsAndNotEmpty(value) {
3985 return value != null && value.length > 0;
3986}
3987function last(arr) {
3988 if (!arr || !arr.length) {
3989 return;
3990 }
3991 return arr[arr.length - 1];
3992}
3993function areEqual(a, b, comparator) {
3994 if (a == null && b == null) {
3995 return true;
3996 }
3997 return a != null &&
3998 b != null &&
3999 a.length === b.length &&
4000 a.every(function (value, index) { return comparator ? comparator(value, b[index]) : b[index] === value; });
4001}
4002/** @deprecated */
4003function compareArrays(array1, array2) {
4004 return areEqual(array1, array2);
4005}
4006/** @deprecated */
4007function shallowCompare(arr1, arr2) {
4008 return areEqual(arr1, arr2);
4009}
4010function sortNumerically(array) {
4011 return array.sort(function (a, b) { return a - b; });
4012}
4013function removeRepeatsFromArray(array, object) {
4014 if (!array) {
4015 return;
4016 }
4017 for (var index = array.length - 2; index >= 0; index--) {
4018 var thisOneMatches = array[index] === object;
4019 var nextOneMatches = array[index + 1] === object;
4020 if (thisOneMatches && nextOneMatches) {
4021 array.splice(index + 1, 1);
4022 }
4023 }
4024}
4025function removeFromArray(array, object) {
4026 var index = array.indexOf(object);
4027 if (index >= 0) {
4028 array.splice(index, 1);
4029 }
4030}
4031function removeAllFromArray(array, toRemove) {
4032 toRemove.forEach(function (item) { return removeFromArray(array, item); });
4033}
4034function insertIntoArray(array, object, toIndex) {
4035 array.splice(toIndex, 0, object);
4036}
4037function insertArrayIntoArray(dest, src, toIndex) {
4038 if (dest == null || src == null) {
4039 return;
4040 }
4041 // put items in backwards, otherwise inserted items end up in reverse order
4042 for (var i = src.length - 1; i >= 0; i--) {
4043 var item = src[i];
4044 insertIntoArray(dest, item, toIndex);
4045 }
4046}
4047function moveInArray(array, objectsToMove, toIndex) {
4048 // first take out items from the array
4049 removeAllFromArray(array, objectsToMove);
4050 // now add the objects, in same order as provided to us, that means we start at the end
4051 // as the objects will be pushed to the right as they are inserted
4052 objectsToMove.slice().reverse().forEach(function (obj) { return insertIntoArray(array, obj, toIndex); });
4053}
4054function includes(array, value) {
4055 return array.indexOf(value) > -1;
4056}
4057function flatten(arrayOfArrays) {
4058 return [].concat.apply([], arrayOfArrays);
4059}
4060function pushAll(target, source) {
4061 if (source == null || target == null) {
4062 return;
4063 }
4064 source.forEach(function (value) { return target.push(value); });
4065}
4066function toStrings(array) {
4067 return array.map(_generic__WEBPACK_IMPORTED_MODULE_0__["toStringOrNull"]);
4068}
4069function forEachReverse(list, action) {
4070 if (list == null) {
4071 return;
4072 }
4073 for (var i = list.length - 1; i >= 0; i--) {
4074 action(list[i], i);
4075 }
4076}
4077
4078
4079
4080
4081/***/ }),
4082/* 19 */
4083/***/ (function(module, __webpack_exports__, __webpack_require__) {
4084
4085"use strict";
4086__webpack_require__.r(__webpack_exports__);
4087/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultColumnTypes", function() { return DefaultColumnTypes; });
4088/**
4089 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
4090 * @version v27.3.0
4091 * @link https://www.ag-grid.com/
4092 * @license MIT
4093 */
4094var DefaultColumnTypes = {
4095 numericColumn: {
4096 headerClass: 'ag-right-aligned-header',
4097 cellClass: 'ag-right-aligned-cell'
4098 },
4099 rightAligned: {
4100 headerClass: 'ag-right-aligned-header',
4101 cellClass: 'ag-right-aligned-cell'
4102 }
4103};
4104
4105
4106
4107
4108/***/ }),
4109/* 20 */
4110/***/ (function(module, __webpack_exports__, __webpack_require__) {
4111
4112"use strict";
4113__webpack_require__.r(__webpack_exports__);
4114/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BeanStub", function() { return BeanStub; });
4115/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
4116/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
4117/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21);
4118/**
4119 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
4120 * @version v27.3.0
4121 * @link https://www.ag-grid.com/
4122 * @license MIT
4123 */
4124var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4125 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4126 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4127 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;
4128 return c > 3 && r && Object.defineProperty(target, key, r), r;
4129};
4130
4131
4132
4133var BeanStub = /** @class */ (function () {
4134 function BeanStub() {
4135 var _this = this;
4136 this.destroyFunctions = [];
4137 this.destroyed = false;
4138 // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive
4139 // prevents vue from creating proxies for created objects and prevents identity related issues
4140 this.__v_skip = true;
4141 this.isAlive = function () { return !_this.destroyed; };
4142 }
4143 // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are
4144 // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed
4145 // points to a bean or component that was not properly disposed of.
4146 // constructor() {
4147 // setTimeout(()=> {
4148 // if (this.isAlive()) {
4149 // let prototype: any = Object.getPrototypeOf(this);
4150 // const constructor: any = prototype.constructor;
4151 // const constructorString = constructor.toString();
4152 // const beanName = constructorString.substring(9, constructorString.indexOf("("));
4153 // console.log('is alive ' + beanName);
4154 // }
4155 // }, 5000);
4156 // }
4157 // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean
4158 BeanStub.prototype.getFrameworkOverrides = function () {
4159 return this.frameworkOverrides;
4160 };
4161 BeanStub.prototype.getContext = function () {
4162 return this.context;
4163 };
4164 BeanStub.prototype.destroy = function () {
4165 // let prototype: any = Object.getPrototypeOf(this);
4166 // const constructor: any = prototype.constructor;
4167 // const constructorString = constructor.toString();
4168 // const beanName = constructorString.substring(9, constructorString.indexOf("("));
4169 this.destroyFunctions.forEach(function (func) { return func(); });
4170 this.destroyFunctions.length = 0;
4171 this.destroyed = true;
4172 this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });
4173 };
4174 BeanStub.prototype.addEventListener = function (eventType, listener) {
4175 if (!this.localEventService) {
4176 this.localEventService = new _eventService__WEBPACK_IMPORTED_MODULE_0__["EventService"]();
4177 }
4178 this.localEventService.addEventListener(eventType, listener);
4179 };
4180 BeanStub.prototype.removeEventListener = function (eventType, listener) {
4181 if (this.localEventService) {
4182 this.localEventService.removeEventListener(eventType, listener);
4183 }
4184 };
4185 BeanStub.prototype.dispatchEventAsync = function (event) {
4186 var _this = this;
4187 window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);
4188 };
4189 BeanStub.prototype.dispatchEvent = function (event) {
4190 if (this.localEventService) {
4191 this.localEventService.dispatchEvent(event);
4192 }
4193 };
4194 BeanStub.prototype.addManagedListener = function (object, event, listener) {
4195 var _this = this;
4196 if (this.destroyed) {
4197 return;
4198 }
4199 if (object instanceof HTMLElement) {
4200 Object(_utils_event__WEBPACK_IMPORTED_MODULE_2__["addSafePassiveEventListener"])(this.getFrameworkOverrides(), object, event, listener);
4201 }
4202 else {
4203 object.addEventListener(event, listener);
4204 }
4205 var destroyFunc = function () {
4206 object.removeEventListener(event, listener);
4207 _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });
4208 return null;
4209 };
4210 this.destroyFunctions.push(destroyFunc);
4211 return destroyFunc;
4212 };
4213 BeanStub.prototype.addDestroyFunc = function (func) {
4214 // if we are already destroyed, we execute the func now
4215 if (this.isAlive()) {
4216 this.destroyFunctions.push(func);
4217 }
4218 else {
4219 func();
4220 }
4221 };
4222 BeanStub.prototype.createManagedBean = function (bean, context) {
4223 var res = this.createBean(bean, context);
4224 this.addDestroyFunc(this.destroyBean.bind(this, bean, context));
4225 return res;
4226 };
4227 BeanStub.prototype.createBean = function (bean, context, afterPreCreateCallback) {
4228 return (context || this.getContext()).createBean(bean, afterPreCreateCallback);
4229 };
4230 BeanStub.prototype.destroyBean = function (bean, context) {
4231 return (context || this.getContext()).destroyBean(bean);
4232 };
4233 BeanStub.prototype.destroyBeans = function (beans, context) {
4234 var _this = this;
4235 if (beans) {
4236 beans.forEach(function (bean) { return _this.destroyBean(bean, context); });
4237 }
4238 return [];
4239 };
4240 BeanStub.EVENT_DESTROYED = 'destroyed';
4241 __decorate([
4242 Object(_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('frameworkOverrides')
4243 ], BeanStub.prototype, "frameworkOverrides", void 0);
4244 __decorate([
4245 Object(_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('context')
4246 ], BeanStub.prototype, "context", void 0);
4247 __decorate([
4248 Object(_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('eventService')
4249 ], BeanStub.prototype, "eventService", void 0);
4250 __decorate([
4251 Object(_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
4252 ], BeanStub.prototype, "gridOptionsWrapper", void 0);
4253 __decorate([
4254 _context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
4255 ], BeanStub.prototype, "destroy", null);
4256 return BeanStub;
4257}());
4258
4259
4260
4261
4262
4263/***/ }),
4264/* 21 */
4265/***/ (function(module, __webpack_exports__, __webpack_require__) {
4266
4267"use strict";
4268__webpack_require__.r(__webpack_exports__);
4269/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stopPropagationForAgGrid", function() { return stopPropagationForAgGrid; });
4270/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isStopPropagationForAgGrid", function() { return isStopPropagationForAgGrid; });
4271/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEventSupported", function() { return isEventSupported; });
4272/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCtrlForEvent", function() { return getCtrlForEvent; });
4273/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addChangeListener", function() { return addChangeListener; });
4274/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isElementInEventPath", function() { return isElementInEventPath; });
4275/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createEventPath", function() { return createEventPath; });
4276/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addAgGridEventPath", function() { return addAgGridEventPath; });
4277/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getEventPath", function() { return getEventPath; });
4278/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addSafePassiveEventListener", function() { return addSafePassiveEventListener; });
4279/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
4280/**
4281 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
4282 * @version v27.3.0
4283 * @link https://www.ag-grid.com/
4284 * @license MIT
4285 */
4286
4287var AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';
4288var PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];
4289var supports = {};
4290/**
4291 * a user once raised an issue - they said that when you opened a popup (eg context menu)
4292 * and then clicked on a selection checkbox, the popup wasn't closed. this is because the
4293 * popup listens for clicks on the body, however ag-grid WAS stopping propagation on the
4294 * checkbox clicks (so the rows didn't pick them up as row selection selection clicks).
4295 * to get around this, we have a pattern to stop propagation for the purposes of AG Grid,
4296 * but we still let the event pass back to the body.
4297 * @param {Event} event
4298 */
4299function stopPropagationForAgGrid(event) {
4300 event[AG_GRID_STOP_PROPAGATION] = true;
4301}
4302function isStopPropagationForAgGrid(event) {
4303 return event[AG_GRID_STOP_PROPAGATION] === true;
4304}
4305var isEventSupported = (function () {
4306 var tags = {
4307 select: 'input',
4308 change: 'input',
4309 submit: 'form',
4310 reset: 'form',
4311 error: 'img',
4312 load: 'img',
4313 abort: 'img'
4314 };
4315 var eventChecker = function (eventName) {
4316 if (typeof supports[eventName] === 'boolean') {
4317 return supports[eventName];
4318 }
4319 var el = document.createElement(tags[eventName] || 'div');
4320 eventName = 'on' + eventName;
4321 return supports[eventName] = (eventName in el);
4322 };
4323 return eventChecker;
4324})();
4325function getCtrlForEvent(gridOptionsWrapper, event, type) {
4326 var sourceElement = event.target;
4327 while (sourceElement) {
4328 var renderedComp = gridOptionsWrapper.getDomData(sourceElement, type);
4329 if (renderedComp) {
4330 return renderedComp;
4331 }
4332 sourceElement = sourceElement.parentElement;
4333 }
4334 return null;
4335}
4336/**
4337 * @deprecated
4338 * Adds all type of change listeners to an element, intended to be a text field
4339 * @param {HTMLElement} element
4340 * @param {EventListener} listener
4341 */
4342function addChangeListener(element, listener) {
4343 element.addEventListener('changed', listener);
4344 element.addEventListener('paste', listener);
4345 element.addEventListener('input', listener);
4346}
4347function isElementInEventPath(element, event) {
4348 if (!event || !element) {
4349 return false;
4350 }
4351 return getEventPath(event).indexOf(element) >= 0;
4352}
4353function createEventPath(event) {
4354 var res = [];
4355 var pointer = event.target;
4356 while (pointer) {
4357 res.push(pointer);
4358 pointer = pointer.parentElement;
4359 }
4360 return res;
4361}
4362/**
4363 * firefox doesn't have event.path set, or any alternative to it, so we hack
4364 * it in. this is needed as it's to late to work out the path when the item is
4365 * removed from the dom. used by MouseEventService, where it works out if a click
4366 * was from the current grid, or a detail grid (master / detail).
4367 * @param {Event} event
4368 */
4369function addAgGridEventPath(event) {
4370 event.__agGridEventPath = getEventPath(event);
4371}
4372/**
4373 * Gets the path for an Event.
4374 * https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js
4375 * https://developer.mozilla.org/en-US/docs/Web/API/Event
4376 * @param {Event} event
4377 * @returns {EventTarget[]}
4378 */
4379function getEventPath(event) {
4380 var eventNoType = event;
4381 if (eventNoType.path) {
4382 // Chrome supports path
4383 return eventNoType.path;
4384 }
4385 if (eventNoType.composedPath) {
4386 // Firefox supports composePath
4387 return eventNoType.composedPath();
4388 }
4389 if (eventNoType.__agGridEventPath) {
4390 // Firefox supports composePath
4391 return eventNoType.__agGridEventPath;
4392 }
4393 // and finally, if none of the above worked,
4394 // we create the path ourselves
4395 return createEventPath(event);
4396}
4397function addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {
4398 var isPassive = Object(_array__WEBPACK_IMPORTED_MODULE_0__["includes"])(PASSIVE_EVENTS, event);
4399 var options = isPassive ? { passive: true } : undefined;
4400 // this check is here for certain scenarios where I believe the user must be destroying
4401 // the grid somehow but continuing for it to be used
4402 if (frameworkOverrides && frameworkOverrides.addEventListener) {
4403 frameworkOverrides.addEventListener(eElement, event, listener, options);
4404 }
4405}
4406
4407
4408
4409
4410/***/ }),
4411/* 22 */
4412/***/ (function(module, __webpack_exports__, __webpack_require__) {
4413
4414"use strict";
4415__webpack_require__.r(__webpack_exports__);
4416/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnModel", function() { return ColumnModel; });
4417/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
4418/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
4419/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
4420/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
4421/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
4422/* harmony import */ var _groupInstanceIdCreator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25);
4423/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12);
4424/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(15);
4425/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(18);
4426/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(7);
4427/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(26);
4428/* harmony import */ var _utils_map__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(27);
4429/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(14);
4430/**
4431 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
4432 * @version v27.3.0
4433 * @link https://www.ag-grid.com/
4434 * @license MIT
4435 */
4436var __extends = (undefined && undefined.__extends) || (function () {
4437 var extendStatics = function (d, b) {
4438 extendStatics = Object.setPrototypeOf ||
4439 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4440 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4441 return extendStatics(d, b);
4442 };
4443 return function (d, b) {
4444 extendStatics(d, b);
4445 function __() { this.constructor = d; }
4446 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4447 };
4448})();
4449var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4450 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4451 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4452 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;
4453 return c > 3 && r && Object.defineProperty(target, key, r), r;
4454};
4455var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
4456 return function (target, key) { decorator(target, key, paramIndex); }
4457};
4458var __values = (undefined && undefined.__values) || function(o) {
4459 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4460 if (m) return m.call(o);
4461 if (o && typeof o.length === "number") return {
4462 next: function () {
4463 if (o && i >= o.length) o = void 0;
4464 return { value: o && o[i++], done: !o };
4465 }
4466 };
4467 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
4468};
4469var __read = (undefined && undefined.__read) || function (o, n) {
4470 var m = typeof Symbol === "function" && o[Symbol.iterator];
4471 if (!m) return o;
4472 var i = m.call(o), r, ar = [], e;
4473 try {
4474 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
4475 }
4476 catch (error) { e = { error: error }; }
4477 finally {
4478 try {
4479 if (r && !r.done && (m = i["return"])) m.call(i);
4480 }
4481 finally { if (e) throw e.error; }
4482 }
4483 return ar;
4484};
4485var __spread = (undefined && undefined.__spread) || function () {
4486 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
4487 return ar;
4488};
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502var ColumnModel = /** @class */ (function (_super) {
4503 __extends(ColumnModel, _super);
4504 function ColumnModel() {
4505 var _this = _super !== null && _super.apply(this, arguments) || this;
4506 // header row count, based on user provided columns
4507 _this.primaryHeaderRowCount = 0;
4508 _this.secondaryHeaderRowCount = 0;
4509 // header row count, either above, or based on pivoting if we are pivoting
4510 _this.gridHeaderRowCount = 0;
4511 // leave level columns of the displayed trees
4512 _this.displayedColumnsLeft = [];
4513 _this.displayedColumnsRight = [];
4514 _this.displayedColumnsCenter = [];
4515 // all three lists above combined
4516 _this.displayedColumns = [];
4517 // for fast lookup, to see if a column or group is still displayed
4518 _this.displayedColumnsAndGroupsMap = {};
4519 // all columns to be rendered
4520 _this.viewportColumns = [];
4521 // all columns to be rendered in the centre
4522 _this.viewportColumnsCenter = [];
4523 _this.autoHeightActiveAtLeastOnce = false;
4524 _this.rowGroupColumns = [];
4525 _this.valueColumns = [];
4526 _this.pivotColumns = [];
4527 _this.ready = false;
4528 _this.autoGroupsNeedBuilding = false;
4529 _this.forceRecreateAutoGroups = false;
4530 _this.pivotMode = false;
4531 _this.bodyWidth = 0;
4532 _this.leftWidth = 0;
4533 _this.rightWidth = 0;
4534 _this.bodyWidthDirty = true;
4535 _this.colDefVersion = 0;
4536 _this.flexColsCalculatedAtLestOnce = false;
4537 return _this;
4538 }
4539 ColumnModel.prototype.init = function () {
4540 var _this = this;
4541 this.suppressColumnVirtualisation = this.gridOptionsWrapper.isSuppressColumnVirtualisation();
4542 var pivotMode = this.gridOptionsWrapper.isPivotMode();
4543 if (this.isPivotSettingAllowed(pivotMode)) {
4544 this.pivotMode = pivotMode;
4545 }
4546 this.usingTreeData = this.gridOptionsWrapper.isTreeData();
4547 this.addManagedListener(this.gridOptionsWrapper, 'autoGroupColumnDef', function () { return _this.onAutoGroupColumnDefChanged(); });
4548 this.addManagedListener(this.gridOptionsWrapper, 'defaultColDef', function () { return _this.onDefaultColDefChanged(); });
4549 };
4550 ColumnModel.prototype.onAutoGroupColumnDefChanged = function () {
4551 this.autoGroupsNeedBuilding = true;
4552 this.forceRecreateAutoGroups = true;
4553 this.updateGridColumns();
4554 this.updateDisplayedColumns('gridOptionsChanged');
4555 };
4556 ColumnModel.prototype.onDefaultColDefChanged = function () {
4557 // col def's should get revisited, even if specific column hasn't changed,
4558 // as the defaultColDef impacts all columns, so each column should assume it's Col Def has changed.
4559 this.colDefVersion++;
4560 // likewise for autoGroupCol, the default col def impacts this
4561 this.forceRecreateAutoGroups = true;
4562 this.createColumnsFromColumnDefs(true);
4563 };
4564 ColumnModel.prototype.getColDefVersion = function () {
4565 return this.colDefVersion;
4566 };
4567 ColumnModel.prototype.setColumnDefs = function (columnDefs, source) {
4568 if (source === void 0) { source = 'api'; }
4569 var colsPreviouslyExisted = !!this.columnDefs;
4570 this.colDefVersion++;
4571 this.columnDefs = columnDefs;
4572 this.createColumnsFromColumnDefs(colsPreviouslyExisted, source);
4573 };
4574 ColumnModel.prototype.createColumnsFromColumnDefs = function (colsPreviouslyExisted, source) {
4575 var _this = this;
4576 if (source === void 0) { source = 'api'; }
4577 // only need to raise before/after events if updating columns, never if setting columns for first time
4578 var raiseEventsFunc = colsPreviouslyExisted ? this.compareColumnStatesAndRaiseEvents(source) : undefined;
4579 // always invalidate cache on changing columns, as the column id's for the new columns
4580 // could overlap with the old id's, so the cache would return old values for new columns.
4581 this.valueCache.expire();
4582 // NOTE ==================
4583 // we should be destroying the existing columns and groups if they exist, for example, the original column
4584 // group adds a listener to the columns, it should be also removing the listeners
4585 this.autoGroupsNeedBuilding = true;
4586 var oldPrimaryColumns = this.primaryColumns;
4587 var oldPrimaryTree = this.primaryColumnTree;
4588 var balancedTreeResult = this.columnFactory.createColumnTree(this.columnDefs, true, oldPrimaryTree);
4589 this.primaryColumnTree = balancedTreeResult.columnTree;
4590 this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;
4591 this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);
4592 this.primaryColumnsMap = {};
4593 this.primaryColumns.forEach(function (col) { return _this.primaryColumnsMap[col.getId()] = col; });
4594 this.extractRowGroupColumns(source, oldPrimaryColumns);
4595 this.extractPivotColumns(source, oldPrimaryColumns);
4596 this.extractValueColumns(source, oldPrimaryColumns);
4597 this.ready = true;
4598 // if we are showing secondary columns, then no need to update grid columns
4599 // at this point, as it's the pivot service responsibility to change these
4600 // if we are no longer pivoting (ie and need to revert back to primary, otherwise
4601 // we shouldn't be touching the primary).
4602 var gridColsNotProcessed = this.gridColsArePrimary === undefined;
4603 var processGridCols = this.gridColsArePrimary || gridColsNotProcessed;
4604 if (processGridCols) {
4605 this.updateGridColumns();
4606 if (colsPreviouslyExisted && !this.gridOptionsWrapper.isMaintainColumnOrder()) {
4607 this.orderGridColumnsLikePrimary();
4608 }
4609 this.updateDisplayedColumns(source);
4610 this.checkViewportColumns();
4611 }
4612 // this event is not used by AG Grid, but left here for backwards compatibility,
4613 // in case applications use it
4614 this.dispatchEverythingChanged(source);
4615 raiseEventsFunc && raiseEventsFunc();
4616 this.dispatchNewColumnsLoaded();
4617 };
4618 ColumnModel.prototype.dispatchNewColumnsLoaded = function () {
4619 var newColumnsLoadedEvent = {
4620 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_NEW_COLUMNS_LOADED,
4621 api: this.gridApi,
4622 columnApi: this.columnApi
4623 };
4624 this.eventService.dispatchEvent(newColumnsLoadedEvent);
4625 };
4626 // this event is legacy, no grid code listens to it. instead the grid listens to New Columns Loaded
4627 ColumnModel.prototype.dispatchEverythingChanged = function (source) {
4628 if (source === void 0) { source = 'api'; }
4629 var eventEverythingChanged = {
4630 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_EVERYTHING_CHANGED,
4631 api: this.gridApi,
4632 columnApi: this.columnApi,
4633 source: source
4634 };
4635 this.eventService.dispatchEvent(eventEverythingChanged);
4636 };
4637 ColumnModel.prototype.orderGridColumnsLikePrimary = function () {
4638 var _this = this;
4639 var primaryColumns = this.primaryColumns;
4640 if (!primaryColumns) {
4641 return;
4642 }
4643 this.gridColumns.sort(function (colA, colB) {
4644 var primaryIndexA = primaryColumns.indexOf(colA);
4645 var primaryIndexB = primaryColumns.indexOf(colB);
4646 // if both cols are present in primary, then we just return the position,
4647 // so position is maintained.
4648 var indexAPresent = primaryIndexA >= 0;
4649 var indexBPresent = primaryIndexB >= 0;
4650 if (indexAPresent && indexBPresent) {
4651 return primaryIndexA - primaryIndexB;
4652 }
4653 if (indexAPresent) {
4654 // B is auto group column, so put B first
4655 return 1;
4656 }
4657 if (indexBPresent) {
4658 // A is auto group column, so put A first
4659 return -1;
4660 }
4661 // otherwise both A and B are auto-group columns. so we just keep the order
4662 // as they were already in.
4663 var gridIndexA = _this.gridColumns.indexOf(colA);
4664 var gridIndexB = _this.gridColumns.indexOf(colB);
4665 return gridIndexA - gridIndexB;
4666 });
4667 };
4668 ColumnModel.prototype.getAllDisplayedAutoHeightCols = function () {
4669 return this.displayedAutoHeightCols;
4670 };
4671 ColumnModel.prototype.setViewport = function () {
4672 if (this.gridOptionsWrapper.isEnableRtl()) {
4673 this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;
4674 this.viewportRight = this.bodyWidth - this.scrollPosition;
4675 }
4676 else {
4677 this.viewportLeft = this.scrollPosition;
4678 this.viewportRight = this.scrollWidth + this.scrollPosition;
4679 }
4680 };
4681 // used by clipboard service, to know what columns to paste into
4682 ColumnModel.prototype.getDisplayedColumnsStartingAt = function (column) {
4683 var currentColumn = column;
4684 var columns = [];
4685 while (currentColumn != null) {
4686 columns.push(currentColumn);
4687 currentColumn = this.getDisplayedColAfter(currentColumn);
4688 }
4689 return columns;
4690 };
4691 // checks what columns are currently displayed due to column virtualisation. fires an event
4692 // if the list of columns has changed.
4693 // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()
4694 ColumnModel.prototype.checkViewportColumns = function () {
4695 // check displayCenterColumnTree exists first, as it won't exist when grid is initialising
4696 if (this.displayedColumnsCenter == null) {
4697 return;
4698 }
4699 var hashBefore = this.viewportColumns.map(function (column) { return column.getId(); }).join('#');
4700 this.extractViewport();
4701 var hashAfter = this.viewportColumns.map(function (column) { return column.getId(); }).join('#');
4702 if (hashBefore !== hashAfter) {
4703 var event_1 = {
4704 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_VIRTUAL_COLUMNS_CHANGED,
4705 api: this.gridApi,
4706 columnApi: this.columnApi
4707 };
4708 this.eventService.dispatchEvent(event_1);
4709 }
4710 };
4711 ColumnModel.prototype.setViewportPosition = function (scrollWidth, scrollPosition) {
4712 if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {
4713 this.scrollWidth = scrollWidth;
4714 this.scrollPosition = scrollPosition;
4715 // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,
4716 // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the
4717 // virtual columns again
4718 this.bodyWidthDirty = true;
4719 this.setViewport();
4720 if (this.ready) {
4721 this.checkViewportColumns();
4722 }
4723 }
4724 };
4725 ColumnModel.prototype.isPivotMode = function () {
4726 return this.pivotMode;
4727 };
4728 ColumnModel.prototype.isPivotSettingAllowed = function (pivot) {
4729 if (pivot && this.gridOptionsWrapper.isTreeData()) {
4730 console.warn("AG Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'");
4731 return false;
4732 }
4733 return true;
4734 };
4735 ColumnModel.prototype.setPivotMode = function (pivotMode, source) {
4736 if (source === void 0) { source = 'api'; }
4737 if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {
4738 return;
4739 }
4740 this.pivotMode = pivotMode;
4741 // we need to update grid columns to cover the scenario where user has groupSuppressAutoColumn=true, as
4742 // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),
4743 // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed
4744 this.autoGroupsNeedBuilding = true;
4745 this.updateGridColumns();
4746 this.updateDisplayedColumns(source);
4747 var event = {
4748 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED,
4749 api: this.gridApi,
4750 columnApi: this.columnApi
4751 };
4752 this.eventService.dispatchEvent(event);
4753 };
4754 ColumnModel.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {
4755 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.secondaryColumns)) {
4756 return null;
4757 }
4758 var valueColumnToFind = this.getPrimaryColumn(valueColKey);
4759 var foundColumn = null;
4760 this.secondaryColumns.forEach(function (column) {
4761 var thisPivotKeys = column.getColDef().pivotKeys;
4762 var pivotValueColumn = column.getColDef().pivotValueColumn;
4763 var pivotKeyMatches = Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["areEqual"])(thisPivotKeys, pivotKeys);
4764 var pivotValueMatches = pivotValueColumn === valueColumnToFind;
4765 if (pivotKeyMatches && pivotValueMatches) {
4766 foundColumn = column;
4767 }
4768 });
4769 return foundColumn;
4770 };
4771 ColumnModel.prototype.setBeans = function (loggerFactory) {
4772 this.logger = loggerFactory.create('columnModel');
4773 };
4774 ColumnModel.prototype.setFirstRightAndLastLeftPinned = function (source) {
4775 var lastLeft;
4776 var firstRight;
4777 if (this.gridOptionsWrapper.isEnableRtl()) {
4778 lastLeft = this.displayedColumnsLeft ? this.displayedColumnsLeft[0] : null;
4779 firstRight = this.displayedColumnsRight ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["last"])(this.displayedColumnsRight) : null;
4780 }
4781 else {
4782 lastLeft = this.displayedColumnsLeft ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["last"])(this.displayedColumnsLeft) : null;
4783 firstRight = this.displayedColumnsRight ? this.displayedColumnsRight[0] : null;
4784 }
4785 this.gridColumns.forEach(function (column) {
4786 column.setLastLeftPinned(column === lastLeft, source);
4787 column.setFirstRightPinned(column === firstRight, source);
4788 });
4789 };
4790 ColumnModel.prototype.autoSizeColumns = function (params) {
4791 var _this = this;
4792 var columns = params.columns, skipHeader = params.skipHeader, skipHeaderGroups = params.skipHeaderGroups, stopAtGroup = params.stopAtGroup, _a = params.source, source = _a === void 0 ? 'api' : _a;
4793 // because of column virtualisation, we can only do this function on columns that are
4794 // actually rendered, as non-rendered columns (outside the viewport and not rendered
4795 // due to column virtualisation) are not present. this can result in all rendered columns
4796 // getting narrowed, which in turn introduces more rendered columns on the RHS which
4797 // did not get autosized in the original run, leaving the visible grid with columns on
4798 // the LHS sized, but RHS no. so we keep looping through the visible columns until
4799 // no more cols are available (rendered) to be resized
4800 // we autosize after animation frames finish in case any cell renderers need to complete first. this can
4801 // happen eg if client code is calling api.autoSizeAllColumns() straight after grid is initialised, but grid
4802 // hasn't fully drawn out all the cells yet (due to cell renderers in animation frames).
4803 this.animationFrameService.flushAllFrames();
4804 // keep track of which cols we have resized in here
4805 var columnsAutosized = [];
4806 // initialise with anything except 0 so that while loop executes at least once
4807 var changesThisTimeAround = -1;
4808 var shouldSkipHeader = skipHeader != null ? skipHeader : this.gridOptionsWrapper.isSkipHeaderOnAutoSize();
4809 var shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;
4810 while (changesThisTimeAround !== 0) {
4811 changesThisTimeAround = 0;
4812 this.actionOnGridColumns(columns, function (column) {
4813 // if already autosized, skip it
4814 if (columnsAutosized.indexOf(column) >= 0) {
4815 return false;
4816 }
4817 // get how wide this col should be
4818 var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);
4819 // preferredWidth = -1 if this col is not on the screen
4820 if (preferredWidth > 0) {
4821 var newWidth = _this.normaliseColumnWidth(column, preferredWidth);
4822 column.setActualWidth(newWidth, source);
4823 columnsAutosized.push(column);
4824 changesThisTimeAround++;
4825 }
4826 return true;
4827 }, source);
4828 }
4829 if (!shouldSkipHeaderGroups) {
4830 this.autoSizeColumnGroupsByColumns(columns, stopAtGroup);
4831 }
4832 this.fireColumnResizedEvent(columnsAutosized, true, 'autosizeColumns');
4833 };
4834 ColumnModel.prototype.fireColumnResizedEvent = function (columns, finished, source, flexColumns) {
4835 if (flexColumns === void 0) { flexColumns = null; }
4836 if (columns && columns.length) {
4837 var event_2 = {
4838 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_RESIZED,
4839 columns: columns,
4840 column: columns.length === 1 ? columns[0] : null,
4841 flexColumns: flexColumns,
4842 finished: finished,
4843 api: this.gridApi,
4844 columnApi: this.columnApi,
4845 source: source
4846 };
4847 this.eventService.dispatchEvent(event_2);
4848 }
4849 };
4850 ColumnModel.prototype.autoSizeColumn = function (key, skipHeader, source) {
4851 if (source === void 0) { source = "api"; }
4852 if (key) {
4853 this.autoSizeColumns({ columns: [key], skipHeader: skipHeader, skipHeaderGroups: true, source: source });
4854 }
4855 };
4856 ColumnModel.prototype.autoSizeColumnGroupsByColumns = function (keys, stopAtGroup) {
4857 var e_1, _a, e_2, _b;
4858 var columnGroups = new Set();
4859 var columns = this.getGridColumns(keys);
4860 columns.forEach(function (col) {
4861 var parent = col.getParent();
4862 while (parent && parent != stopAtGroup) {
4863 if (!parent.isPadding()) {
4864 columnGroups.add(parent);
4865 }
4866 parent = parent.getParent();
4867 }
4868 });
4869 var headerGroupCtrl;
4870 var resizedColumns = [];
4871 try {
4872 for (var columnGroups_1 = __values(columnGroups), columnGroups_1_1 = columnGroups_1.next(); !columnGroups_1_1.done; columnGroups_1_1 = columnGroups_1.next()) {
4873 var columnGroup = columnGroups_1_1.value;
4874 try {
4875 for (var _c = (e_2 = void 0, __values(this.ctrlsService.getHeaderRowContainerCtrls())), _d = _c.next(); !_d.done; _d = _c.next()) {
4876 var headerContainerCtrl = _d.value;
4877 headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);
4878 if (headerGroupCtrl) {
4879 break;
4880 }
4881 }
4882 }
4883 catch (e_2_1) { e_2 = { error: e_2_1 }; }
4884 finally {
4885 try {
4886 if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
4887 }
4888 finally { if (e_2) throw e_2.error; }
4889 }
4890 if (headerGroupCtrl) {
4891 headerGroupCtrl.resizeLeafColumnsToFit();
4892 }
4893 }
4894 }
4895 catch (e_1_1) { e_1 = { error: e_1_1 }; }
4896 finally {
4897 try {
4898 if (columnGroups_1_1 && !columnGroups_1_1.done && (_a = columnGroups_1.return)) _a.call(columnGroups_1);
4899 }
4900 finally { if (e_1) throw e_1.error; }
4901 }
4902 return resizedColumns;
4903 };
4904 ColumnModel.prototype.autoSizeAllColumns = function (skipHeader, source) {
4905 if (source === void 0) { source = "api"; }
4906 var allDisplayedColumns = this.getAllDisplayedColumns();
4907 this.autoSizeColumns({ columns: allDisplayedColumns, skipHeader: skipHeader, source: source });
4908 };
4909 // Possible candidate for reuse (alot of recursive traversal duplication)
4910 ColumnModel.prototype.getColumnsFromTree = function (rootColumns) {
4911 var result = [];
4912 var recursiveFindColumns = function (childColumns) {
4913 for (var i = 0; i < childColumns.length; i++) {
4914 var child = childColumns[i];
4915 if (child instanceof _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"]) {
4916 result.push(child);
4917 }
4918 else if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
4919 recursiveFindColumns(child.getChildren());
4920 }
4921 }
4922 };
4923 recursiveFindColumns(rootColumns);
4924 return result;
4925 };
4926 ColumnModel.prototype.getAllDisplayedTrees = function () {
4927 if (this.displayedTreeLeft && this.displayedTreeRight && this.displayedTreeCentre) {
4928 return this.displayedTreeLeft
4929 .concat(this.displayedTreeCentre)
4930 .concat(this.displayedTreeRight);
4931 }
4932 return null;
4933 };
4934 // + columnSelectPanel
4935 ColumnModel.prototype.getPrimaryColumnTree = function () {
4936 return this.primaryColumnTree;
4937 };
4938 // + gridPanel -> for resizing the body and setting top margin
4939 ColumnModel.prototype.getHeaderRowCount = function () {
4940 return this.gridHeaderRowCount;
4941 };
4942 // + headerRenderer -> setting pinned body width
4943 ColumnModel.prototype.getDisplayedTreeLeft = function () {
4944 return this.displayedTreeLeft;
4945 };
4946 // + headerRenderer -> setting pinned body width
4947 ColumnModel.prototype.getDisplayedTreeRight = function () {
4948 return this.displayedTreeRight;
4949 };
4950 // + headerRenderer -> setting pinned body width
4951 ColumnModel.prototype.getDisplayedTreeCentre = function () {
4952 return this.displayedTreeCentre;
4953 };
4954 // gridPanel -> ensureColumnVisible
4955 ColumnModel.prototype.isColumnDisplayed = function (column) {
4956 return this.getAllDisplayedColumns().indexOf(column) >= 0;
4957 };
4958 // + csvCreator
4959 ColumnModel.prototype.getAllDisplayedColumns = function () {
4960 return this.displayedColumns;
4961 };
4962 ColumnModel.prototype.getViewportColumns = function () {
4963 return this.viewportColumns;
4964 };
4965 ColumnModel.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {
4966 if (!this.colSpanActive) {
4967 return this.displayedColumnsLeft;
4968 }
4969 return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsLeft);
4970 };
4971 ColumnModel.prototype.getDisplayedRightColumnsForRow = function (rowNode) {
4972 if (!this.colSpanActive) {
4973 return this.displayedColumnsRight;
4974 }
4975 return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsRight);
4976 };
4977 ColumnModel.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {
4978 var result = [];
4979 var lastConsideredCol = null;
4980 var _loop_1 = function (i) {
4981 var col = displayedColumns[i];
4982 var maxAllowedColSpan = displayedColumns.length - i;
4983 var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);
4984 var columnsToCheckFilter = [col];
4985 if (colSpan > 1) {
4986 var colsToRemove = colSpan - 1;
4987 for (var j = 1; j <= colsToRemove; j++) {
4988 columnsToCheckFilter.push(displayedColumns[i + j]);
4989 }
4990 i += colsToRemove;
4991 }
4992 // see which cols we should take out for column virtualisation
4993 var filterPasses;
4994 if (filterCallback) {
4995 // if user provided a callback, means some columns may not be in the viewport.
4996 // the user will NOT provide a callback if we are talking about pinned areas,
4997 // as pinned areas have no horizontal scroll and do not virtualise the columns.
4998 // if lots of columns, that means column spanning, and we set filterPasses = true
4999 // if one or more of the columns spanned pass the filter.
5000 filterPasses = false;
5001 columnsToCheckFilter.forEach(function (colForFilter) {
5002 if (filterCallback(colForFilter)) {
5003 filterPasses = true;
5004 }
5005 });
5006 }
5007 else {
5008 filterPasses = true;
5009 }
5010 if (filterPasses) {
5011 if (result.length === 0 && lastConsideredCol) {
5012 var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;
5013 if (gapBeforeColumn) {
5014 result.push(lastConsideredCol);
5015 }
5016 }
5017 result.push(col);
5018 }
5019 lastConsideredCol = col;
5020 out_i_1 = i;
5021 };
5022 var out_i_1;
5023 for (var i = 0; i < displayedColumns.length; i++) {
5024 _loop_1(i);
5025 i = out_i_1;
5026 }
5027 return result;
5028 };
5029 // + rowRenderer
5030 // if we are not column spanning, this just returns back the virtual centre columns,
5031 // however if we are column spanning, then different rows can have different virtual
5032 // columns, so we have to work out the list for each individual row.
5033 ColumnModel.prototype.getViewportCenterColumnsForRow = function (rowNode) {
5034 var _this = this;
5035 if (!this.colSpanActive) {
5036 return this.viewportColumnsCenter;
5037 }
5038 var emptySpaceBeforeColumn = function (col) {
5039 var left = col.getLeft();
5040 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(left) && left > _this.viewportLeft;
5041 };
5042 // if doing column virtualisation, then we filter based on the viewport.
5043 var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInViewport.bind(this);
5044 return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsCenter, filterCallback, emptySpaceBeforeColumn);
5045 };
5046 ColumnModel.prototype.getAriaColumnIndex = function (col) {
5047 return this.getAllGridColumns().indexOf(col) + 1;
5048 };
5049 ColumnModel.prototype.isColumnInViewport = function (col) {
5050 // we never filter out autoHeight columns, as we need them in the DOM for calculating Auto Height
5051 if (col.isAutoHeight()) {
5052 return true;
5053 }
5054 var columnLeft = col.getLeft() || 0;
5055 var columnRight = columnLeft + col.getActualWidth();
5056 // adding 200 for buffer size, so some cols off viewport are rendered.
5057 // this helps horizontal scrolling so user rarely sees white space (unless
5058 // they scroll horizontally fast). however we are conservative, as the more
5059 // buffer the slower the vertical redraw speed
5060 var leftBounds = this.viewportLeft - 200;
5061 var rightBounds = this.viewportRight + 200;
5062 var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;
5063 var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;
5064 return !columnToMuchLeft && !columnToMuchRight;
5065 };
5066 // used by:
5067 // + angularGrid -> setting pinned body width
5068 // note: this should be cached
5069 ColumnModel.prototype.getDisplayedColumnsLeftWidth = function () {
5070 return this.getWidthOfColsInList(this.displayedColumnsLeft);
5071 };
5072 // note: this should be cached
5073 ColumnModel.prototype.getDisplayedColumnsRightWidth = function () {
5074 return this.getWidthOfColsInList(this.displayedColumnsRight);
5075 };
5076 ColumnModel.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {
5077 var _this = this;
5078 if (source === void 0) { source = "api"; }
5079 if (!keys || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(keys)) {
5080 return;
5081 }
5082 var atLeastOne = false;
5083 keys.forEach(function (key) {
5084 var columnToAdd = _this.getPrimaryColumn(key);
5085 if (!columnToAdd) {
5086 return;
5087 }
5088 if (actionIsAdd) {
5089 if (masterList.indexOf(columnToAdd) >= 0) {
5090 return;
5091 }
5092 masterList.push(columnToAdd);
5093 }
5094 else {
5095 if (masterList.indexOf(columnToAdd) < 0) {
5096 return;
5097 }
5098 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(masterList, columnToAdd);
5099 }
5100 columnCallback(columnToAdd);
5101 atLeastOne = true;
5102 });
5103 if (!atLeastOne) {
5104 return;
5105 }
5106 if (this.autoGroupsNeedBuilding) {
5107 this.updateGridColumns();
5108 }
5109 this.updateDisplayedColumns(source);
5110 var event = {
5111 type: eventType,
5112 columns: masterList,
5113 column: masterList.length === 1 ? masterList[0] : null,
5114 api: this.gridApi,
5115 columnApi: this.columnApi,
5116 source: source
5117 };
5118 this.eventService.dispatchEvent(event);
5119 };
5120 ColumnModel.prototype.setRowGroupColumns = function (colKeys, source) {
5121 if (source === void 0) { source = "api"; }
5122 this.autoGroupsNeedBuilding = true;
5123 this.setPrimaryColumnList(colKeys, this.rowGroupColumns, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);
5124 };
5125 ColumnModel.prototype.setRowGroupActive = function (active, column, source) {
5126 if (active === column.isRowGroupActive()) {
5127 return;
5128 }
5129 column.setRowGroupActive(active, source);
5130 if (!active && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup()) {
5131 column.setVisible(true, source);
5132 }
5133 };
5134 ColumnModel.prototype.addRowGroupColumn = function (key, source) {
5135 if (source === void 0) { source = "api"; }
5136 if (key) {
5137 this.addRowGroupColumns([key], source);
5138 }
5139 };
5140 ColumnModel.prototype.addRowGroupColumns = function (keys, source) {
5141 if (source === void 0) { source = "api"; }
5142 this.autoGroupsNeedBuilding = true;
5143 this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, source);
5144 };
5145 ColumnModel.prototype.removeRowGroupColumns = function (keys, source) {
5146 if (source === void 0) { source = "api"; }
5147 this.autoGroupsNeedBuilding = true;
5148 this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, source);
5149 };
5150 ColumnModel.prototype.removeRowGroupColumn = function (key, source) {
5151 if (source === void 0) { source = "api"; }
5152 if (key) {
5153 this.removeRowGroupColumns([key], source);
5154 }
5155 };
5156 ColumnModel.prototype.addPivotColumns = function (keys, source) {
5157 if (source === void 0) { source = "api"; }
5158 this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, source);
5159 };
5160 ColumnModel.prototype.setPivotColumns = function (colKeys, source) {
5161 if (source === void 0) { source = "api"; }
5162 this.setPrimaryColumnList(colKeys, this.pivotColumns, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {
5163 column.setPivotActive(added, source);
5164 }, source);
5165 };
5166 ColumnModel.prototype.addPivotColumn = function (key, source) {
5167 if (source === void 0) { source = "api"; }
5168 this.addPivotColumns([key], source);
5169 };
5170 ColumnModel.prototype.removePivotColumns = function (keys, source) {
5171 if (source === void 0) { source = "api"; }
5172 this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, source);
5173 };
5174 ColumnModel.prototype.removePivotColumn = function (key, source) {
5175 if (source === void 0) { source = "api"; }
5176 this.removePivotColumns([key], source);
5177 };
5178 ColumnModel.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {
5179 var _this = this;
5180 masterList.length = 0;
5181 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(colKeys)) {
5182 colKeys.forEach(function (key) {
5183 var column = _this.getPrimaryColumn(key);
5184 if (column) {
5185 masterList.push(column);
5186 }
5187 });
5188 }
5189 (this.primaryColumns || []).forEach(function (column) {
5190 var added = masterList.indexOf(column) >= 0;
5191 columnCallback(added, column);
5192 });
5193 if (this.autoGroupsNeedBuilding) {
5194 this.updateGridColumns();
5195 }
5196 this.updateDisplayedColumns(source);
5197 this.fireColumnEvent(eventName, masterList, source);
5198 };
5199 ColumnModel.prototype.setValueColumns = function (colKeys, source) {
5200 if (source === void 0) { source = "api"; }
5201 this.setPrimaryColumnList(colKeys, this.valueColumns, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);
5202 };
5203 ColumnModel.prototype.setValueActive = function (active, column, source) {
5204 if (active === column.isValueActive()) {
5205 return;
5206 }
5207 column.setValueActive(active, source);
5208 if (active && !column.getAggFunc()) {
5209 var initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);
5210 column.setAggFunc(initialAggFunc);
5211 }
5212 };
5213 ColumnModel.prototype.addValueColumns = function (keys, source) {
5214 if (source === void 0) { source = "api"; }
5215 this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, source);
5216 };
5217 ColumnModel.prototype.addValueColumn = function (colKey, source) {
5218 if (source === void 0) { source = "api"; }
5219 if (colKey) {
5220 this.addValueColumns([colKey], source);
5221 }
5222 };
5223 ColumnModel.prototype.removeValueColumn = function (colKey, source) {
5224 if (source === void 0) { source = "api"; }
5225 this.removeValueColumns([colKey], source);
5226 };
5227 ColumnModel.prototype.removeValueColumns = function (keys, source) {
5228 if (source === void 0) { source = "api"; }
5229 this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, source);
5230 };
5231 // returns the width we can set to this col, taking into consideration min and max widths
5232 ColumnModel.prototype.normaliseColumnWidth = function (column, newWidth) {
5233 var minWidth = column.getMinWidth();
5234 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(minWidth) && newWidth < minWidth) {
5235 newWidth = minWidth;
5236 }
5237 var maxWidth = column.getMaxWidth();
5238 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && column.isGreaterThanMax(newWidth)) {
5239 newWidth = maxWidth;
5240 }
5241 return newWidth;
5242 };
5243 ColumnModel.prototype.getPrimaryOrGridColumn = function (key) {
5244 var column = this.getPrimaryColumn(key);
5245 return column || this.getGridColumn(key);
5246 };
5247 ColumnModel.prototype.setColumnWidths = function (columnWidths, shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column
5248 finished, // @finished - ends up in the event, tells the user if more events are to come
5249 source) {
5250 var _this = this;
5251 if (source === void 0) { source = "api"; }
5252 var sets = [];
5253 columnWidths.forEach(function (columnWidth) {
5254 var col = _this.getPrimaryOrGridColumn(columnWidth.key);
5255 if (!col) {
5256 return;
5257 }
5258 sets.push({
5259 width: columnWidth.newWidth,
5260 ratios: [1],
5261 columns: [col]
5262 });
5263 // if user wants to do shift resize by default, then we invert the shift operation
5264 var defaultIsShift = _this.gridOptionsWrapper.getColResizeDefault() === 'shift';
5265 if (defaultIsShift) {
5266 shiftKey = !shiftKey;
5267 }
5268 if (shiftKey) {
5269 var otherCol = _this.getDisplayedColAfter(col);
5270 if (!otherCol) {
5271 return;
5272 }
5273 var widthDiff = col.getActualWidth() - columnWidth.newWidth;
5274 var otherColWidth = otherCol.getActualWidth() + widthDiff;
5275 sets.push({
5276 width: otherColWidth,
5277 ratios: [1],
5278 columns: [otherCol]
5279 });
5280 }
5281 });
5282 if (sets.length === 0) {
5283 return;
5284 }
5285 this.resizeColumnSets({
5286 resizeSets: sets,
5287 finished: finished,
5288 source: source
5289 });
5290 };
5291 ColumnModel.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {
5292 var columns = columnResizeSet.columns, width = columnResizeSet.width;
5293 // every col has a min width, so sum them all up and see if we have enough room
5294 // for all the min widths
5295 var minWidthAccumulated = 0;
5296 var maxWidthAccumulated = 0;
5297 var maxWidthActive = true;
5298 columns.forEach(function (col) {
5299 var minWidth = col.getMinWidth();
5300 minWidthAccumulated += minWidth || 0;
5301 var maxWidth = col.getMaxWidth();
5302 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && maxWidth > 0) {
5303 maxWidthAccumulated += maxWidth;
5304 }
5305 else {
5306 // if at least one columns has no max width, it means the group of columns
5307 // then has no max width, as at least one column can take as much width as possible
5308 maxWidthActive = false;
5309 }
5310 });
5311 var minWidthPasses = width >= minWidthAccumulated;
5312 var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);
5313 return minWidthPasses && maxWidthPasses;
5314 };
5315 // method takes sets of columns and resizes them. either all sets will be resized, or nothing
5316 // be resized. this is used for example when user tries to resize a group and holds shift key,
5317 // then both the current group (grows), and the adjacent group (shrinks), will get resized,
5318 // so that's two sets for this method.
5319 ColumnModel.prototype.resizeColumnSets = function (params) {
5320 var _this = this;
5321 var resizeSets = params.resizeSets, finished = params.finished, source = params.source;
5322 var passMinMaxCheck = !resizeSets || resizeSets.every(function (columnResizeSet) { return _this.checkMinAndMaxWidthsForSet(columnResizeSet); });
5323 if (!passMinMaxCheck) {
5324 // even though we are not going to resize beyond min/max size, we still need to raise event when finished
5325 if (finished) {
5326 var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;
5327 this.fireColumnResizedEvent(columns, finished, source);
5328 }
5329 return; // don't resize!
5330 }
5331 var changedCols = [];
5332 var allResizedCols = [];
5333 resizeSets.forEach(function (set) {
5334 var width = set.width, columns = set.columns, ratios = set.ratios;
5335 // keep track of pixels used, and last column gets the remaining,
5336 // to cater for rounding errors, and min width adjustments
5337 var newWidths = {};
5338 var finishedCols = {};
5339 columns.forEach(function (col) { return allResizedCols.push(col); });
5340 // the loop below goes through each col. if a col exceeds it's min/max width,
5341 // it then gets set to its min/max width and the column is removed marked as 'finished'
5342 // and the calculation is done again leaving this column out. take for example columns
5343 // {A, width: 50, maxWidth: 100}
5344 // {B, width: 50}
5345 // {C, width: 50}
5346 // and then the set is set to width 600 - on the first pass the grid tries to set each column
5347 // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked
5348 // as 'finished' and the calculation is done again with the remaining cols B and C, which end up
5349 // splitting the remaining 500 pixels.
5350 var finishedColsGrew = true;
5351 var loopCount = 0;
5352 var _loop_2 = function () {
5353 loopCount++;
5354 if (loopCount > 1000) {
5355 // this should never happen, but in the future, someone might introduce a bug here,
5356 // so we stop the browser from hanging and report bug properly
5357 console.error('AG Grid: infinite loop in resizeColumnSets');
5358 return "break";
5359 }
5360 finishedColsGrew = false;
5361 var subsetCols = [];
5362 var subsetRatioTotal = 0;
5363 var pixelsToDistribute = width;
5364 columns.forEach(function (col, index) {
5365 var thisColFinished = finishedCols[col.getId()];
5366 if (thisColFinished) {
5367 pixelsToDistribute -= newWidths[col.getId()];
5368 }
5369 else {
5370 subsetCols.push(col);
5371 var ratioThisCol = ratios[index];
5372 subsetRatioTotal += ratioThisCol;
5373 }
5374 });
5375 // because we are not using all of the ratios (cols can be missing),
5376 // we scale the ratio. if all columns are included, then subsetRatioTotal=1,
5377 // and so the ratioScale will be 1.
5378 var ratioScale = 1 / subsetRatioTotal;
5379 subsetCols.forEach(function (col, index) {
5380 var lastCol = index === (subsetCols.length - 1);
5381 var colNewWidth;
5382 if (lastCol) {
5383 colNewWidth = pixelsToDistribute;
5384 }
5385 else {
5386 colNewWidth = Math.round(ratios[index] * width * ratioScale);
5387 pixelsToDistribute -= colNewWidth;
5388 }
5389 var minWidth = col.getMinWidth();
5390 var maxWidth = col.getMaxWidth();
5391 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(minWidth) && colNewWidth < minWidth) {
5392 colNewWidth = minWidth;
5393 finishedCols[col.getId()] = true;
5394 finishedColsGrew = true;
5395 }
5396 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && maxWidth > 0 && colNewWidth > maxWidth) {
5397 colNewWidth = maxWidth;
5398 finishedCols[col.getId()] = true;
5399 finishedColsGrew = true;
5400 }
5401 newWidths[col.getId()] = colNewWidth;
5402 });
5403 };
5404 while (finishedColsGrew) {
5405 var state_1 = _loop_2();
5406 if (state_1 === "break")
5407 break;
5408 }
5409 columns.forEach(function (col) {
5410 var newWidth = newWidths[col.getId()];
5411 var actualWidth = col.getActualWidth();
5412 if (actualWidth !== newWidth) {
5413 col.setActualWidth(newWidth, source);
5414 changedCols.push(col);
5415 }
5416 });
5417 });
5418 // if no cols changed, then no need to update more or send event.
5419 var atLeastOneColChanged = changedCols.length > 0;
5420 var flexedCols = [];
5421 if (atLeastOneColChanged) {
5422 flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });
5423 this.setLeftValues(source);
5424 this.updateBodyWidths();
5425 this.checkViewportColumns();
5426 }
5427 // check for change first, to avoid unnecessary firing of events
5428 // however we always fire 'finished' events. this is important
5429 // when groups are resized, as if the group is changing slowly,
5430 // eg 1 pixel at a time, then each change will fire change events
5431 // in all the columns in the group, but only one with get the pixel.
5432 var colsForEvent = allResizedCols.concat(flexedCols);
5433 if (atLeastOneColChanged || finished) {
5434 this.fireColumnResizedEvent(colsForEvent, finished, source, flexedCols);
5435 }
5436 };
5437 ColumnModel.prototype.setColumnAggFunc = function (key, aggFunc, source) {
5438 if (source === void 0) { source = "api"; }
5439 if (!key) {
5440 return;
5441 }
5442 var column = this.getPrimaryColumn(key);
5443 if (!column) {
5444 return;
5445 }
5446 column.setAggFunc(aggFunc);
5447 this.fireColumnEvent(_events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, [column], source);
5448 };
5449 ColumnModel.prototype.fireColumnEvent = function (type, columns, source) {
5450 var event = {
5451 type: type,
5452 columns: columns,
5453 column: (columns && columns.length == 1) ? columns[0] : null,
5454 api: this.gridApi,
5455 columnApi: this.columnApi,
5456 source: source
5457 };
5458 this.eventService.dispatchEvent(event);
5459 };
5460 ColumnModel.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {
5461 if (source === void 0) { source = "api"; }
5462 var column = this.rowGroupColumns[fromIndex];
5463 this.rowGroupColumns.splice(fromIndex, 1);
5464 this.rowGroupColumns.splice(toIndex, 0, column);
5465 var event = {
5466 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED,
5467 columns: this.rowGroupColumns,
5468 column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,
5469 api: this.gridApi,
5470 columnApi: this.columnApi,
5471 source: source
5472 };
5473 this.eventService.dispatchEvent(event);
5474 };
5475 ColumnModel.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source) {
5476 if (source === void 0) { source = "api"; }
5477 this.columnAnimationService.start();
5478 if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {
5479 console.warn('AG Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);
5480 console.warn('AG Grid: remember that you should not count the moving columns when calculating the new index');
5481 return;
5482 }
5483 // we want to pull all the columns out first and put them into an ordered list
5484 var columnsToMove = this.getGridColumns(columnsToMoveKeys);
5485 var failedRules = !this.doesMovePassRules(columnsToMove, toIndex);
5486 if (failedRules) {
5487 return;
5488 }
5489 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["moveInArray"])(this.gridColumns, columnsToMove, toIndex);
5490 this.updateDisplayedColumns(source);
5491 var event = {
5492 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_MOVED,
5493 columns: columnsToMove,
5494 column: columnsToMove.length === 1 ? columnsToMove[0] : null,
5495 toIndex: toIndex,
5496 api: this.gridApi,
5497 columnApi: this.columnApi,
5498 source: source
5499 };
5500 this.eventService.dispatchEvent(event);
5501 this.columnAnimationService.finish();
5502 };
5503 ColumnModel.prototype.doesMovePassRules = function (columnsToMove, toIndex) {
5504 // make a copy of what the grid columns would look like after the move
5505 var proposedColumnOrder = this.gridColumns.slice();
5506 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["moveInArray"])(proposedColumnOrder, columnsToMove, toIndex);
5507 // then check that the new proposed order of the columns passes all rules
5508 if (!this.doesMovePassMarryChildren(proposedColumnOrder)) {
5509 return false;
5510 }
5511 if (!this.doesMovePassLockedPositions(proposedColumnOrder)) {
5512 return false;
5513 }
5514 return true;
5515 };
5516 // returns the provided cols sorted in same order as they appear in grid columns. eg if grid columns
5517 // contains [a,b,c,d,e] and col passed is [e,a] then the passed cols are sorted into [a,e]
5518 ColumnModel.prototype.sortColumnsLikeGridColumns = function (cols) {
5519 var _this = this;
5520 if (!cols || cols.length <= 1) {
5521 return;
5522 }
5523 var notAllColsInGridColumns = cols.filter(function (c) { return _this.gridColumns.indexOf(c) < 0; }).length > 0;
5524 if (notAllColsInGridColumns) {
5525 return;
5526 }
5527 cols.sort(function (a, b) {
5528 var indexA = _this.gridColumns.indexOf(a);
5529 var indexB = _this.gridColumns.indexOf(b);
5530 return indexA - indexB;
5531 });
5532 };
5533 ColumnModel.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {
5534 // Placement is a number indicating 'left' 'center' or 'right' as 0 1 2
5535 var lastPlacement = 0;
5536 var rulePassed = true;
5537 var lockPositionToPlacement = function (position) {
5538 if (!position) { // false or undefined
5539 return 1;
5540 }
5541 if (position === true) {
5542 return 0;
5543 }
5544 return position === 'left' ? 0 : 2; // Otherwise 'right'
5545 };
5546 proposedColumnOrder.forEach(function (col) {
5547 var placement = lockPositionToPlacement(col.getColDef().lockPosition);
5548 if (placement < lastPlacement) { // If placement goes down, we're not in the correct order
5549 rulePassed = false;
5550 }
5551 lastPlacement = placement;
5552 });
5553 return rulePassed;
5554 };
5555 ColumnModel.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {
5556 var rulePassed = true;
5557 this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {
5558 if (!(child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"])) {
5559 return;
5560 }
5561 var columnGroup = child;
5562 var colGroupDef = columnGroup.getColGroupDef();
5563 var marryChildren = colGroupDef && colGroupDef.marryChildren;
5564 if (!marryChildren) {
5565 return;
5566 }
5567 var newIndexes = [];
5568 columnGroup.getLeafColumns().forEach(function (col) {
5569 var newColIndex = allColumnsCopy.indexOf(col);
5570 newIndexes.push(newColIndex);
5571 });
5572 var maxIndex = Math.max.apply(Math, newIndexes);
5573 var minIndex = Math.min.apply(Math, newIndexes);
5574 // spread is how far the first column in this group is away from the last column
5575 var spread = maxIndex - minIndex;
5576 var maxSpread = columnGroup.getLeafColumns().length - 1;
5577 // if the columns
5578 if (spread > maxSpread) {
5579 rulePassed = false;
5580 }
5581 // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)
5582 // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));
5583 });
5584 return rulePassed;
5585 };
5586 ColumnModel.prototype.moveColumn = function (key, toIndex, source) {
5587 if (source === void 0) { source = "api"; }
5588 this.moveColumns([key], toIndex, source);
5589 };
5590 ColumnModel.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {
5591 if (source === void 0) { source = "api"; }
5592 var column = this.gridColumns[fromIndex];
5593 this.moveColumn(column, toIndex, source);
5594 };
5595 ColumnModel.prototype.getColumnDefs = function () {
5596 var _this = this;
5597 if (!this.primaryColumns) {
5598 return;
5599 }
5600 var cols = this.primaryColumns.slice();
5601 if (this.gridColsArePrimary) {
5602 cols.sort(function (a, b) { return _this.gridColumns.indexOf(a) - _this.gridColumns.indexOf(b); });
5603 }
5604 else if (this.lastPrimaryOrder) {
5605 cols.sort(function (a, b) { return _this.lastPrimaryOrder.indexOf(a) - _this.lastPrimaryOrder.indexOf(b); });
5606 }
5607 return this.columnDefFactory.buildColumnDefs(cols, this.rowGroupColumns, this.pivotColumns);
5608 };
5609 // used by:
5610 // + angularGrid -> for setting body width
5611 // + rowController -> setting main row widths (when inserting and resizing)
5612 // need to cache this
5613 ColumnModel.prototype.getBodyContainerWidth = function () {
5614 return this.bodyWidth;
5615 };
5616 ColumnModel.prototype.getContainerWidth = function (pinned) {
5617 switch (pinned) {
5618 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT:
5619 return this.leftWidth;
5620 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT:
5621 return this.rightWidth;
5622 default:
5623 return this.bodyWidth;
5624 }
5625 };
5626 // after setColumnWidth or updateGroupsAndDisplayedColumns
5627 ColumnModel.prototype.updateBodyWidths = function () {
5628 var newBodyWidth = this.getWidthOfColsInList(this.displayedColumnsCenter);
5629 var newLeftWidth = this.getWidthOfColsInList(this.displayedColumnsLeft);
5630 var newRightWidth = this.getWidthOfColsInList(this.displayedColumnsRight);
5631 // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed
5632 // columns, due to RTL inverting the y coordinates
5633 this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;
5634 var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;
5635 if (atLeastOneChanged) {
5636 this.bodyWidth = newBodyWidth;
5637 this.leftWidth = newLeftWidth;
5638 this.rightWidth = newRightWidth;
5639 // when this fires, it is picked up by the gridPanel, which ends up in
5640 // gridPanel calling setWidthAndScrollPosition(), which in turn calls setViewportPosition()
5641 var event_3 = {
5642 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,
5643 api: this.gridApi,
5644 columnApi: this.columnApi
5645 };
5646 this.eventService.dispatchEvent(event_3);
5647 }
5648 };
5649 // + rowController
5650 ColumnModel.prototype.getValueColumns = function () {
5651 return this.valueColumns ? this.valueColumns : [];
5652 };
5653 // + rowController
5654 ColumnModel.prototype.getPivotColumns = function () {
5655 return this.pivotColumns ? this.pivotColumns : [];
5656 };
5657 // + clientSideRowModel
5658 ColumnModel.prototype.isPivotActive = function () {
5659 return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;
5660 };
5661 // + toolPanel
5662 ColumnModel.prototype.getRowGroupColumns = function () {
5663 return this.rowGroupColumns ? this.rowGroupColumns : [];
5664 };
5665 // + rowController -> while inserting rows
5666 ColumnModel.prototype.getDisplayedCenterColumns = function () {
5667 return this.displayedColumnsCenter;
5668 };
5669 // + rowController -> while inserting rows
5670 ColumnModel.prototype.getDisplayedLeftColumns = function () {
5671 return this.displayedColumnsLeft;
5672 };
5673 ColumnModel.prototype.getDisplayedRightColumns = function () {
5674 return this.displayedColumnsRight;
5675 };
5676 ColumnModel.prototype.getDisplayedColumns = function (type) {
5677 switch (type) {
5678 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT:
5679 return this.getDisplayedLeftColumns();
5680 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT:
5681 return this.getDisplayedRightColumns();
5682 default:
5683 return this.getDisplayedCenterColumns();
5684 }
5685 };
5686 // used by:
5687 // + clientSideRowController -> sorting, building quick filter text
5688 // + headerRenderer -> sorting (clearing icon)
5689 ColumnModel.prototype.getAllPrimaryColumns = function () {
5690 return this.primaryColumns ? this.primaryColumns.slice() : null;
5691 };
5692 ColumnModel.prototype.getSecondaryColumns = function () {
5693 return this.secondaryColumns ? this.secondaryColumns.slice() : null;
5694 };
5695 ColumnModel.prototype.getAllColumnsForQuickFilter = function () {
5696 return this.columnsForQuickFilter;
5697 };
5698 // + moveColumnController
5699 ColumnModel.prototype.getAllGridColumns = function () {
5700 return this.gridColumns;
5701 };
5702 ColumnModel.prototype.isEmpty = function () {
5703 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(this.gridColumns);
5704 };
5705 ColumnModel.prototype.isRowGroupEmpty = function () {
5706 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(this.rowGroupColumns);
5707 };
5708 ColumnModel.prototype.setColumnVisible = function (key, visible, source) {
5709 if (source === void 0) { source = "api"; }
5710 this.setColumnsVisible([key], visible, source);
5711 };
5712 ColumnModel.prototype.setColumnsVisible = function (keys, visible, source) {
5713 var _this = this;
5714 if (visible === void 0) { visible = false; }
5715 if (source === void 0) { source = "api"; }
5716 this.columnAnimationService.start();
5717 this.actionOnGridColumns(keys, function (column) {
5718 if (column.isVisible() !== visible) {
5719 column.setVisible(visible, source);
5720 return true;
5721 }
5722 return false;
5723 }, source, function () {
5724 var event = {
5725 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VISIBLE,
5726 visible: visible,
5727 column: null,
5728 columns: null,
5729 api: _this.gridApi,
5730 columnApi: _this.columnApi,
5731 source: source
5732 };
5733 return event;
5734 });
5735 this.columnAnimationService.finish();
5736 };
5737 ColumnModel.prototype.setColumnPinned = function (key, pinned, source) {
5738 if (source === void 0) { source = "api"; }
5739 if (key) {
5740 this.setColumnsPinned([key], pinned, source);
5741 }
5742 };
5743 ColumnModel.prototype.setColumnsPinned = function (keys, pinned, source) {
5744 var _this = this;
5745 if (source === void 0) { source = "api"; }
5746 if (this.gridOptionsWrapper.getDomLayout() === 'print') {
5747 console.warn("Changing the column pinning status is not allowed with domLayout='print'");
5748 return;
5749 }
5750 this.columnAnimationService.start();
5751 var actualPinned;
5752 if (pinned === true || pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT) {
5753 actualPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT;
5754 }
5755 else if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT) {
5756 actualPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT;
5757 }
5758 else {
5759 actualPinned = null;
5760 }
5761 this.actionOnGridColumns(keys, function (col) {
5762 if (col.getPinned() !== actualPinned) {
5763 col.setPinned(actualPinned);
5764 return true;
5765 }
5766 return false;
5767 }, source, function () {
5768 var event = {
5769 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PINNED,
5770 pinned: actualPinned,
5771 column: null,
5772 columns: null,
5773 api: _this.gridApi,
5774 columnApi: _this.columnApi,
5775 source: source
5776 };
5777 return event;
5778 });
5779 this.columnAnimationService.finish();
5780 };
5781 // does an action on a set of columns. provides common functionality for looking up the
5782 // columns based on key, getting a list of effected columns, and then updated the event
5783 // with either one column (if it was just one col) or a list of columns
5784 // used by: autoResize, setVisible, setPinned
5785 ColumnModel.prototype.actionOnGridColumns = function (// the column keys this action will be on
5786 keys,
5787 // the action to do - if this returns false, the column was skipped
5788 // and won't be included in the event
5789 action,
5790 // should return back a column event of the right type
5791 source, createEvent) {
5792 var _this = this;
5793 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(keys)) {
5794 return;
5795 }
5796 var updatedColumns = [];
5797 keys.forEach(function (key) {
5798 var column = _this.getGridColumn(key);
5799 if (!column) {
5800 return;
5801 }
5802 // need to check for false with type (ie !== instead of !=)
5803 // as not returning anything (undefined) would also be false
5804 var resultOfAction = action(column);
5805 if (resultOfAction !== false) {
5806 updatedColumns.push(column);
5807 }
5808 });
5809 if (!updatedColumns.length) {
5810 return;
5811 }
5812 this.updateDisplayedColumns(source);
5813 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(createEvent) && createEvent) {
5814 var event_4 = createEvent();
5815 event_4.columns = updatedColumns;
5816 event_4.column = updatedColumns.length === 1 ? updatedColumns[0] : null;
5817 this.eventService.dispatchEvent(event_4);
5818 }
5819 };
5820 ColumnModel.prototype.getDisplayedColBefore = function (col) {
5821 var allDisplayedColumns = this.getAllDisplayedColumns();
5822 var oldIndex = allDisplayedColumns.indexOf(col);
5823 if (oldIndex > 0) {
5824 return allDisplayedColumns[oldIndex - 1];
5825 }
5826 return null;
5827 };
5828 // used by:
5829 // + rowRenderer -> for navigation
5830 ColumnModel.prototype.getDisplayedColAfter = function (col) {
5831 var allDisplayedColumns = this.getAllDisplayedColumns();
5832 var oldIndex = allDisplayedColumns.indexOf(col);
5833 if (oldIndex < (allDisplayedColumns.length - 1)) {
5834 return allDisplayedColumns[oldIndex + 1];
5835 }
5836 return null;
5837 };
5838 ColumnModel.prototype.getDisplayedGroupAfter = function (columnGroup) {
5839 return this.getDisplayedGroupAtDirection(columnGroup, 'After');
5840 };
5841 ColumnModel.prototype.getDisplayedGroupBefore = function (columnGroup) {
5842 return this.getDisplayedGroupAtDirection(columnGroup, 'Before');
5843 };
5844 ColumnModel.prototype.getDisplayedGroupAtDirection = function (columnGroup, direction) {
5845 // pick the last displayed column in this group
5846 var requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();
5847 var colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();
5848 var col = direction === 'After' ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["last"])(colGroupLeafColumns) : colGroupLeafColumns[0];
5849 var getDisplayColMethod = "getDisplayedCol" + direction;
5850 while (true) {
5851 // keep moving to the next col, until we get to another group
5852 var column = this[getDisplayColMethod](col);
5853 if (!column) {
5854 return null;
5855 }
5856 var groupPointer = this.getColumnGroupAtLevel(column, requiredLevel);
5857 if (groupPointer !== columnGroup) {
5858 return groupPointer;
5859 }
5860 }
5861 };
5862 ColumnModel.prototype.getColumnGroupAtLevel = function (column, level) {
5863 // get group at same level as the one we are looking for
5864 var groupPointer = column.getParent();
5865 var originalGroupLevel;
5866 var groupPointerLevel;
5867 while (true) {
5868 var groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();
5869 originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();
5870 groupPointerLevel = groupPointer.getPaddingLevel();
5871 if (originalGroupLevel + groupPointerLevel <= level) {
5872 break;
5873 }
5874 groupPointer = groupPointer.getParent();
5875 }
5876 return groupPointer;
5877 };
5878 ColumnModel.prototype.isPinningLeft = function () {
5879 return this.displayedColumnsLeft.length > 0;
5880 };
5881 ColumnModel.prototype.isPinningRight = function () {
5882 return this.displayedColumnsRight.length > 0;
5883 };
5884 ColumnModel.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {
5885 var _a;
5886 return (_a = []).concat.apply(_a, __spread([
5887 this.primaryColumns || [],
5888 this.groupAutoColumns || [],
5889 this.secondaryColumns || [],
5890 ]));
5891 };
5892 ColumnModel.prototype.getPrimaryAndAutoGroupCols = function () {
5893 var _a;
5894 return (_a = []).concat.apply(_a, __spread([
5895 this.primaryColumns || [],
5896 this.groupAutoColumns || [],
5897 ]));
5898 };
5899 ColumnModel.prototype.getPrimaryAndSecondaryColumns = function () {
5900 var _a;
5901 return (_a = []).concat.apply(_a, __spread([
5902 this.primaryColumns || [],
5903 this.secondaryColumns || [],
5904 ]));
5905 };
5906 ColumnModel.prototype.createStateItemFromColumn = function (column) {
5907 var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;
5908 var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;
5909 var aggFunc = column.isValueActive() ? column.getAggFunc() : null;
5910 var sort = column.getSort() != null ? column.getSort() : null;
5911 var sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;
5912 var flex = column.getFlex() != null && column.getFlex() > 0 ? column.getFlex() : null;
5913 var res = {
5914 colId: column.getColId(),
5915 width: column.getActualWidth(),
5916 hide: !column.isVisible(),
5917 pinned: column.getPinned(),
5918 sort: sort,
5919 sortIndex: sortIndex,
5920 aggFunc: aggFunc,
5921 rowGroup: column.isRowGroupActive(),
5922 rowGroupIndex: rowGroupIndex,
5923 pivot: column.isPivotActive(),
5924 pivotIndex: pivotIndex,
5925 flex: flex
5926 };
5927 return res;
5928 };
5929 ColumnModel.prototype.getColumnState = function () {
5930 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.primaryColumns) || !this.isAlive()) {
5931 return [];
5932 }
5933 var colsForState = this.getPrimaryAndSecondaryAndAutoColumns();
5934 var res = colsForState.map(this.createStateItemFromColumn.bind(this));
5935 this.orderColumnStateList(res);
5936 return res;
5937 };
5938 ColumnModel.prototype.orderColumnStateList = function (columnStateList) {
5939 // for fast looking, store the index of each column
5940 var colIdToGridIndexMap = Object(_utils_map__WEBPACK_IMPORTED_MODULE_11__["convertToMap"])(this.gridColumns.map(function (col, index) { return [col.getColId(), index]; }));
5941 columnStateList.sort(function (itemA, itemB) {
5942 var posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;
5943 var posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;
5944 return posA - posB;
5945 });
5946 };
5947 ColumnModel.prototype.resetColumnState = function (source) {
5948 // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,
5949 // this is ignored below when ordering the cols. to work, we should always put lockPosition cols first.
5950 // As a work around, developers should just put lockPosition columns first in their colDef list.
5951 if (source === void 0) { source = "api"; }
5952 // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list
5953 var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);
5954 var columnStates = [];
5955 // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.
5956 // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,
5957 // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000
5958 var letRowGroupIndex = 1000;
5959 var letPivotIndex = 1000;
5960 var colsToProcess = [];
5961 if (this.groupAutoColumns) {
5962 colsToProcess = colsToProcess.concat(this.groupAutoColumns);
5963 }
5964 if (primaryColumns) {
5965 colsToProcess = colsToProcess.concat(primaryColumns);
5966 }
5967 colsToProcess.forEach(function (column) {
5968 var getValueOrNull = function (a, b) { return a != null ? a : b != null ? b : null; };
5969 var colDef = column.getColDef();
5970 var sort = getValueOrNull(colDef.sort, colDef.initialSort);
5971 var sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);
5972 var hide = getValueOrNull(colDef.hide, colDef.initialHide);
5973 var pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);
5974 var width = getValueOrNull(colDef.width, colDef.initialWidth);
5975 var flex = getValueOrNull(colDef.flex, colDef.initialFlex);
5976 var rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);
5977 var rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);
5978 if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {
5979 rowGroupIndex = null;
5980 rowGroup = null;
5981 }
5982 var pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);
5983 var pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);
5984 if (pivotIndex == null && (pivot == null || pivot == false)) {
5985 pivotIndex = null;
5986 pivot = null;
5987 }
5988 var aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);
5989 var stateItem = {
5990 colId: column.getColId(),
5991 sort: sort,
5992 sortIndex: sortIndex,
5993 hide: hide,
5994 pinned: pinned,
5995 width: width,
5996 flex: flex,
5997 rowGroup: rowGroup,
5998 rowGroupIndex: rowGroupIndex,
5999 pivot: pivot,
6000 pivotIndex: pivotIndex,
6001 aggFunc: aggFunc,
6002 };
6003 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(rowGroupIndex) && rowGroup) {
6004 stateItem.rowGroupIndex = letRowGroupIndex++;
6005 }
6006 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(pivotIndex) && pivot) {
6007 stateItem.pivotIndex = letPivotIndex++;
6008 }
6009 columnStates.push(stateItem);
6010 });
6011 this.applyColumnState({ state: columnStates, applyOrder: true }, source);
6012 };
6013 ColumnModel.prototype.applyColumnState = function (params, source) {
6014 var _this = this;
6015 if (source === void 0) { source = "api"; }
6016 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(this.primaryColumns)) {
6017 return false;
6018 }
6019 if (params && params.state && !params.state.forEach) {
6020 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.');
6021 return false;
6022 }
6023 var applyStates = function (states, existingColumns, getById) {
6024 var raiseEventsFunc = _this.compareColumnStatesAndRaiseEvents(source);
6025 _this.autoGroupsNeedBuilding = true;
6026 // at the end below, this list will have all columns we got no state for
6027 var columnsWithNoState = existingColumns.slice();
6028 var rowGroupIndexes = {};
6029 var pivotIndexes = {};
6030 var autoGroupColumnStates = [];
6031 // If pivoting is modified, these are the states we try to reapply after
6032 // the secondary columns are re-generated
6033 var unmatchedAndAutoStates = [];
6034 var unmatchedCount = 0;
6035 var previousRowGroupCols = _this.rowGroupColumns.slice();
6036 var previousPivotCols = _this.pivotColumns.slice();
6037 states.forEach(function (state) {
6038 var colId = state.colId || '';
6039 // auto group columns are re-created so deferring syncing with ColumnState
6040 var isAutoGroupColumn = colId.startsWith(_constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].GROUP_AUTO_COLUMN_ID);
6041 if (isAutoGroupColumn) {
6042 autoGroupColumnStates.push(state);
6043 unmatchedAndAutoStates.push(state);
6044 return;
6045 }
6046 var column = getById(colId);
6047 if (!column) {
6048 unmatchedAndAutoStates.push(state);
6049 unmatchedCount += 1;
6050 }
6051 else {
6052 _this.syncColumnWithStateItem(column, state, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);
6053 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(columnsWithNoState, column);
6054 }
6055 });
6056 // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden
6057 var applyDefaultsFunc = function (col) {
6058 return _this.syncColumnWithStateItem(col, null, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);
6059 };
6060 columnsWithNoState.forEach(applyDefaultsFunc);
6061 // sort the lists according to the indexes that were provided
6062 var comparator = function (indexes, oldList, colA, colB) {
6063 var indexA = indexes[colA.getId()];
6064 var indexB = indexes[colB.getId()];
6065 var aHasIndex = indexA != null;
6066 var bHasIndex = indexB != null;
6067 if (aHasIndex && bHasIndex) {
6068 // both a and b are new cols with index, so sort on index
6069 return indexA - indexB;
6070 }
6071 if (aHasIndex) {
6072 // a has an index, so it should be before a
6073 return -1;
6074 }
6075 if (bHasIndex) {
6076 // b has an index, so it should be before a
6077 return 1;
6078 }
6079 var oldIndexA = oldList.indexOf(colA);
6080 var oldIndexB = oldList.indexOf(colB);
6081 var aHasOldIndex = oldIndexA >= 0;
6082 var bHasOldIndex = oldIndexB >= 0;
6083 if (aHasOldIndex && bHasOldIndex) {
6084 // both a and b are old cols, so sort based on last order
6085 return oldIndexA - oldIndexB;
6086 }
6087 if (aHasOldIndex) {
6088 // a is old, b is new, so b is first
6089 return -1;
6090 }
6091 // this bit does matter, means both are new cols
6092 // but without index or that b is old and a is new
6093 return 1;
6094 };
6095 _this.rowGroupColumns.sort(comparator.bind(_this, rowGroupIndexes, previousRowGroupCols));
6096 _this.pivotColumns.sort(comparator.bind(_this, pivotIndexes, previousPivotCols));
6097 _this.updateGridColumns();
6098 // sync newly created auto group columns with ColumnState
6099 var autoGroupColsCopy = _this.groupAutoColumns ? _this.groupAutoColumns.slice() : [];
6100 autoGroupColumnStates.forEach(function (stateItem) {
6101 var autoCol = _this.getAutoColumn(stateItem.colId);
6102 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(autoGroupColsCopy, autoCol);
6103 _this.syncColumnWithStateItem(autoCol, stateItem, params.defaultState, null, null, true, source);
6104 });
6105 // autogroup cols with nothing else, apply the default
6106 autoGroupColsCopy.forEach(applyDefaultsFunc);
6107 _this.applyOrderAfterApplyState(params);
6108 _this.updateDisplayedColumns(source);
6109 _this.dispatchEverythingChanged(source);
6110 raiseEventsFunc(); // Will trigger secondary column changes if pivoting modified
6111 return { unmatchedAndAutoStates: unmatchedAndAutoStates, unmatchedCount: unmatchedCount };
6112 };
6113 this.columnAnimationService.start();
6114 var _a = applyStates(params.state || [], this.primaryColumns || [], function (id) { return _this.getPrimaryColumn(id); }), unmatchedAndAutoStates = _a.unmatchedAndAutoStates, unmatchedCount = _a.unmatchedCount;
6115 // If there are still states left over, see if we can apply them to newly generated
6116 // secondary or auto columns. Also if defaults exist, ensure they are applied to secondary cols
6117 if (unmatchedAndAutoStates.length > 0 || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(params.defaultState)) {
6118 unmatchedCount = applyStates(unmatchedAndAutoStates, this.secondaryColumns || [], function (id) { return _this.getSecondaryColumn(id); }).unmatchedCount;
6119 }
6120 this.columnAnimationService.finish();
6121 return unmatchedCount === 0; // Successful if no states unaccounted for
6122 };
6123 ColumnModel.prototype.applyOrderAfterApplyState = function (params) {
6124 var _this = this;
6125 if (!params.applyOrder || !params.state) {
6126 return;
6127 }
6128 var newOrder = [];
6129 var processedColIds = {};
6130 params.state.forEach(function (item) {
6131 if (!item.colId || processedColIds[item.colId]) {
6132 return;
6133 }
6134 var col = _this.gridColumnsMap[item.colId];
6135 if (col) {
6136 newOrder.push(col);
6137 processedColIds[item.colId] = true;
6138 }
6139 });
6140 // add in all other columns
6141 var autoGroupInsertIndex = 0;
6142 this.gridColumns.forEach(function (col) {
6143 var colId = col.getColId();
6144 var alreadyProcessed = processedColIds[colId] != null;
6145 if (alreadyProcessed) {
6146 return;
6147 }
6148 var isAutoGroupCol = colId.startsWith(_constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].GROUP_AUTO_COLUMN_ID);
6149 if (isAutoGroupCol) {
6150 // auto group columns, if missing from state list, are added to the start.
6151 // it's common to have autoGroup missing, as grouping could be on by default
6152 // on a column, but the user could of since removed the grouping via the UI.
6153 // if we don't inc the insert index, autoGroups will be inserted in reverse order
6154 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["insertIntoArray"])(newOrder, col, autoGroupInsertIndex++);
6155 }
6156 else {
6157 // normal columns, if missing from state list, are added at the end
6158 newOrder.push(col);
6159 }
6160 });
6161 // this is already done in updateGridColumns, however we changed the order above (to match the order of the state
6162 // columns) so we need to do it again. we could of put logic into the order above to take into account fixed
6163 // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here
6164 // is less sexy for the code here, but it keeps consistency.
6165 newOrder = this.placeLockedColumns(newOrder);
6166 if (!this.doesMovePassMarryChildren(newOrder)) {
6167 console.warn('AG Grid: Applying column order broke a group where columns should be married together. Applying new order has been discarded.');
6168 return;
6169 }
6170 this.gridColumns = newOrder;
6171 };
6172 ColumnModel.prototype.compareColumnStatesAndRaiseEvents = function (source) {
6173 var _this = this;
6174 var startState = {
6175 rowGroupColumns: this.rowGroupColumns.slice(),
6176 pivotColumns: this.pivotColumns.slice(),
6177 valueColumns: this.valueColumns.slice()
6178 };
6179 var columnStateBefore = this.getColumnState();
6180 var columnStateBeforeMap = {};
6181 columnStateBefore.forEach(function (col) {
6182 columnStateBeforeMap[col.colId] = col;
6183 });
6184 return function () {
6185 if (_this.gridOptionsWrapper.isSuppressColumnStateEvents()) {
6186 return;
6187 }
6188 var colsForState = _this.getPrimaryAndSecondaryAndAutoColumns();
6189 // raises generic ColumnEvents where all columns are returned rather than what has changed
6190 var raiseWhenListsDifferent = function (eventType, colsBefore, colsAfter, idMapper) {
6191 var beforeList = colsBefore.map(idMapper);
6192 var afterList = colsAfter.map(idMapper);
6193 var unchanged = Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["areEqual"])(beforeList, afterList);
6194 if (unchanged) {
6195 return;
6196 }
6197 // returning all columns rather than what has changed!
6198 var event = {
6199 type: eventType,
6200 columns: colsAfter,
6201 column: colsAfter.length === 1 ? colsAfter[0] : null,
6202 api: _this.gridApi,
6203 columnApi: _this.columnApi,
6204 source: source
6205 };
6206 _this.eventService.dispatchEvent(event);
6207 };
6208 // determines which columns have changed according to supplied predicate
6209 var getChangedColumns = function (changedPredicate) {
6210 var changedColumns = [];
6211 colsForState.forEach(function (column) {
6212 var colStateBefore = columnStateBeforeMap[column.getColId()];
6213 if (colStateBefore && changedPredicate(colStateBefore, column)) {
6214 changedColumns.push(column);
6215 }
6216 });
6217 return changedColumns;
6218 };
6219 var columnIdMapper = function (c) { return c.getColId(); };
6220 raiseWhenListsDifferent(_events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, startState.rowGroupColumns, _this.rowGroupColumns, columnIdMapper);
6221 raiseWhenListsDifferent(_events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, startState.pivotColumns, _this.pivotColumns, columnIdMapper);
6222 var valueChangePredicate = function (cs, c) {
6223 var oldActive = cs.aggFunc != null;
6224 var activeChanged = oldActive != c.isValueActive();
6225 // we only check aggFunc if the agg is active
6226 var aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();
6227 return activeChanged || aggFuncChanged;
6228 };
6229 var changedValues = getChangedColumns(valueChangePredicate);
6230 if (changedValues.length > 0) {
6231 // we pass all value columns, now the ones that changed. this is the same
6232 // as pivot and rowGroup cols, but different to all other properties below.
6233 // this is more for backwards compatibility, as it's always been this way.
6234 // really it should be the other way, as the order of the cols makes no difference
6235 // for valueColumns (apart from displaying them in the tool panel).
6236 _this.fireColumnEvent(_events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, _this.valueColumns, source);
6237 }
6238 var resizeChangePredicate = function (cs, c) { return cs.width != c.getActualWidth(); };
6239 _this.fireColumnResizedEvent(getChangedColumns(resizeChangePredicate), true, source);
6240 var pinnedChangePredicate = function (cs, c) { return cs.pinned != c.getPinned(); };
6241 _this.raiseColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);
6242 var visibilityChangePredicate = function (cs, c) { return cs.hide == c.isVisible(); };
6243 _this.raiseColumnVisibleEvent(getChangedColumns(visibilityChangePredicate), source);
6244 var sortChangePredicate = function (cs, c) { return cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex(); };
6245 if (getChangedColumns(sortChangePredicate).length > 0) {
6246 _this.sortController.dispatchSortChangedEvents(source);
6247 }
6248 // special handling for moved column events
6249 _this.raiseColumnMovedEvent(columnStateBefore, source);
6250 };
6251 };
6252 ColumnModel.prototype.raiseColumnPinnedEvent = function (changedColumns, source) {
6253 if (!changedColumns.length) {
6254 return;
6255 }
6256 // if just one column, we use this, otherwise we don't include the col
6257 var column = changedColumns.length === 1 ? changedColumns[0] : null;
6258 // only include visible if it's common in all columns
6259 var pinned = this.getCommonValue(changedColumns, function (col) { return col.getPinned(); });
6260 var event = {
6261 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PINNED,
6262 // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'
6263 pinned: pinned != null ? pinned : null,
6264 columns: changedColumns,
6265 column: column,
6266 api: this.gridApi,
6267 columnApi: this.columnApi,
6268 source: source
6269 };
6270 this.eventService.dispatchEvent(event);
6271 };
6272 ColumnModel.prototype.getCommonValue = function (cols, valueGetter) {
6273 if (!cols || cols.length == 0) {
6274 return undefined;
6275 }
6276 // compare each value to the first value. if nothing differs, then value is common so return it.
6277 var firstValue = valueGetter(cols[0]);
6278 for (var i = 1; i < cols.length; i++) {
6279 if (firstValue !== valueGetter(cols[i])) {
6280 // values differ, no common value
6281 return undefined;
6282 }
6283 }
6284 return firstValue;
6285 };
6286 ColumnModel.prototype.raiseColumnVisibleEvent = function (changedColumns, source) {
6287 if (!changedColumns.length) {
6288 return;
6289 }
6290 // if just one column, we use this, otherwise we don't include the col
6291 var column = changedColumns.length === 1 ? changedColumns[0] : null;
6292 // only include visible if it's common in all columns
6293 var visible = this.getCommonValue(changedColumns, function (col) { return col.isVisible(); });
6294 var event = {
6295 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VISIBLE,
6296 visible: visible,
6297 columns: changedColumns,
6298 column: column,
6299 api: this.gridApi,
6300 columnApi: this.columnApi,
6301 source: source
6302 };
6303 this.eventService.dispatchEvent(event);
6304 };
6305 ColumnModel.prototype.raiseColumnMovedEvent = function (colStateBefore, source) {
6306 // we are only interested in columns that were both present and visible before and after
6307 var _this = this;
6308 var colStateAfter = this.getColumnState();
6309 var colStateAfterMapped = {};
6310 colStateAfter.forEach(function (s) { return colStateAfterMapped[s.colId] = s; });
6311 // get id's of cols in both before and after lists
6312 var colsIntersectIds = {};
6313 colStateBefore.forEach(function (s) {
6314 if (colStateAfterMapped[s.colId]) {
6315 colsIntersectIds[s.colId] = true;
6316 }
6317 });
6318 // filter state lists, so we only have cols that were present before and after
6319 var beforeFiltered = colStateBefore.filter(function (c) { return colsIntersectIds[c.colId]; });
6320 var afterFiltered = colStateAfter.filter(function (c) { return colsIntersectIds[c.colId]; });
6321 // see if any cols are in a different location
6322 var movedColumns = [];
6323 afterFiltered.forEach(function (csAfter, index) {
6324 var csBefore = beforeFiltered && beforeFiltered[index];
6325 if (csBefore && csBefore.colId !== csAfter.colId) {
6326 var gridCol = _this.getGridColumn(csBefore.colId);
6327 if (gridCol) {
6328 movedColumns.push(gridCol);
6329 }
6330 }
6331 });
6332 if (!movedColumns.length) {
6333 return;
6334 }
6335 var event = {
6336 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_MOVED,
6337 columns: movedColumns,
6338 column: null,
6339 api: this.gridApi,
6340 columnApi: this.columnApi,
6341 source: source
6342 };
6343 this.eventService.dispatchEvent(event);
6344 };
6345 ColumnModel.prototype.syncColumnWithStateItem = function (column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source) {
6346 if (!column) {
6347 return;
6348 }
6349 var getValue = function (key1, key2) {
6350 var obj = { value1: undefined, value2: undefined };
6351 var calculated = false;
6352 if (stateItem) {
6353 if (stateItem[key1] !== undefined) {
6354 obj.value1 = stateItem[key1];
6355 calculated = true;
6356 }
6357 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(key2) && stateItem[key2] !== undefined) {
6358 obj.value2 = stateItem[key2];
6359 calculated = true;
6360 }
6361 }
6362 if (!calculated && defaultState) {
6363 if (defaultState[key1] !== undefined) {
6364 obj.value1 = defaultState[key1];
6365 }
6366 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(key2) && defaultState[key2] !== undefined) {
6367 obj.value2 = defaultState[key2];
6368 }
6369 }
6370 return obj;
6371 };
6372 // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true
6373 var hide = getValue('hide').value1;
6374 if (hide !== undefined) {
6375 column.setVisible(!hide, source);
6376 }
6377 // sets pinned to 'left' or 'right'
6378 var pinned = getValue('pinned').value1;
6379 if (pinned !== undefined) {
6380 column.setPinned(pinned);
6381 }
6382 // if width provided and valid, use it, otherwise stick with the old width
6383 var minColWidth = this.columnUtils.calculateColMinWidth(column.getColDef());
6384 // flex
6385 var flex = getValue('flex').value1;
6386 if (flex !== undefined) {
6387 column.setFlex(flex);
6388 }
6389 // width - we only set width if column is not flexing
6390 var noFlexThisCol = column.getFlex() <= 0;
6391 if (noFlexThisCol) {
6392 // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)
6393 var width = getValue('width').value1;
6394 if (width != null) {
6395 if (minColWidth != null && width >= minColWidth) {
6396 column.setActualWidth(width, source);
6397 }
6398 }
6399 }
6400 var sort = getValue('sort').value1;
6401 if (sort !== undefined) {
6402 if (sort === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].SORT_DESC || sort === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].SORT_ASC) {
6403 column.setSort(sort, source);
6404 }
6405 else {
6406 column.setSort(undefined, source);
6407 }
6408 }
6409 var sortIndex = getValue('sortIndex').value1;
6410 if (sortIndex !== undefined) {
6411 column.setSortIndex(sortIndex);
6412 }
6413 // we do not do aggFunc, rowGroup or pivot for auto cols or secondary cols
6414 if (autoCol || !column.isPrimary()) {
6415 return;
6416 }
6417 var aggFunc = getValue('aggFunc').value1;
6418 if (aggFunc !== undefined) {
6419 if (typeof aggFunc === 'string') {
6420 column.setAggFunc(aggFunc);
6421 if (!column.isValueActive()) {
6422 column.setValueActive(true, source);
6423 this.valueColumns.push(column);
6424 }
6425 }
6426 else {
6427 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(aggFunc)) {
6428 console.warn('AG Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +
6429 'functions, register the functions first before using them in get/set state. This is because it is ' +
6430 'intended for the column state to be stored and retrieved as simple JSON.');
6431 }
6432 // Note: we do not call column.setAggFunc(null), so that next time we aggregate
6433 // by this column (eg drag the column to the agg section int he toolpanel) it will
6434 // default to the last aggregation function.
6435 if (column.isValueActive()) {
6436 column.setValueActive(false, source);
6437 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(this.valueColumns, column);
6438 }
6439 }
6440 }
6441 var _a = getValue('rowGroup', 'rowGroupIndex'), rowGroup = _a.value1, rowGroupIndex = _a.value2;
6442 if (rowGroup !== undefined || rowGroupIndex !== undefined) {
6443 if (typeof rowGroupIndex === 'number' || rowGroup) {
6444 if (!column.isRowGroupActive()) {
6445 column.setRowGroupActive(true, source);
6446 this.rowGroupColumns.push(column);
6447 }
6448 if (rowGroupIndexes && typeof rowGroupIndex === 'number') {
6449 rowGroupIndexes[column.getId()] = rowGroupIndex;
6450 }
6451 }
6452 else {
6453 if (column.isRowGroupActive()) {
6454 column.setRowGroupActive(false, source);
6455 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(this.rowGroupColumns, column);
6456 }
6457 }
6458 }
6459 var _b = getValue('pivot', 'pivotIndex'), pivot = _b.value1, pivotIndex = _b.value2;
6460 if (pivot !== undefined || pivotIndex !== undefined) {
6461 if (typeof pivotIndex === 'number' || pivot) {
6462 if (!column.isPivotActive()) {
6463 column.setPivotActive(true, source);
6464 this.pivotColumns.push(column);
6465 }
6466 if (pivotIndexes && typeof pivotIndex === 'number') {
6467 pivotIndexes[column.getId()] = pivotIndex;
6468 }
6469 }
6470 else {
6471 if (column.isPivotActive()) {
6472 column.setPivotActive(false, source);
6473 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(this.pivotColumns, column);
6474 }
6475 }
6476 }
6477 };
6478 ColumnModel.prototype.getGridColumns = function (keys) {
6479 return this.getColumns(keys, this.getGridColumn.bind(this));
6480 };
6481 ColumnModel.prototype.getColumns = function (keys, columnLookupCallback) {
6482 var foundColumns = [];
6483 if (keys) {
6484 keys.forEach(function (key) {
6485 var column = columnLookupCallback(key);
6486 if (column) {
6487 foundColumns.push(column);
6488 }
6489 });
6490 }
6491 return foundColumns;
6492 };
6493 // used by growGroupPanel
6494 ColumnModel.prototype.getColumnWithValidation = function (key) {
6495 if (key == null) {
6496 return null;
6497 }
6498 var column = this.getGridColumn(key);
6499 if (!column) {
6500 console.warn('AG Grid: could not find column ' + key);
6501 }
6502 return column;
6503 };
6504 ColumnModel.prototype.getPrimaryColumn = function (key) {
6505 if (!this.primaryColumns) {
6506 return null;
6507 }
6508 return this.getColumn(key, this.primaryColumns, this.primaryColumnsMap);
6509 };
6510 ColumnModel.prototype.getGridColumn = function (key) {
6511 return this.getColumn(key, this.gridColumns, this.gridColumnsMap);
6512 };
6513 ColumnModel.prototype.getSecondaryColumn = function (key) {
6514 if (!this.secondaryColumns) {
6515 return null;
6516 }
6517 return this.getColumn(key, this.secondaryColumns, this.secondaryColumnsMap);
6518 };
6519 ColumnModel.prototype.getColumn = function (key, columnList, columnMap) {
6520 if (!key) {
6521 return null;
6522 }
6523 // most of the time this method gets called the key is a string, so we put this shortcut in
6524 // for performance reasons, to see if we can match for ID (it doesn't do auto columns, that's done below)
6525 if (typeof key == 'string' && columnMap[key]) {
6526 return columnMap[key];
6527 }
6528 for (var i = 0; i < columnList.length; i++) {
6529 if (this.columnsMatch(columnList[i], key)) {
6530 return columnList[i];
6531 }
6532 }
6533 return this.getAutoColumn(key);
6534 };
6535 ColumnModel.prototype.getAutoColumn = function (key) {
6536 var _this = this;
6537 if (!this.groupAutoColumns ||
6538 !Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(this.groupAutoColumns) ||
6539 Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.groupAutoColumns)) {
6540 return null;
6541 }
6542 return this.groupAutoColumns.find(function (groupCol) { return _this.columnsMatch(groupCol, key); }) || null;
6543 };
6544 ColumnModel.prototype.columnsMatch = function (column, key) {
6545 var columnMatches = column === key;
6546 var colDefMatches = column.getColDef() === key;
6547 var idMatches = column.getColId() == key;
6548 return columnMatches || colDefMatches || idMatches;
6549 };
6550 ColumnModel.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {
6551 if (includeAggFunc === void 0) { includeAggFunc = false; }
6552 if (!column) {
6553 return null;
6554 }
6555 var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);
6556 if (includeAggFunc) {
6557 return this.wrapHeaderNameWithAggFunc(column, headerName);
6558 }
6559 return headerName;
6560 };
6561 ColumnModel.prototype.getDisplayNameForProvidedColumnGroup = function (columnGroup, providedColumnGroup, location) {
6562 var colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;
6563 if (colGroupDef) {
6564 return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);
6565 }
6566 return null;
6567 };
6568 ColumnModel.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {
6569 return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);
6570 };
6571 // location is where the column is going to appear, ie who is calling us
6572 ColumnModel.prototype.getHeaderName = function (colDef, column, columnGroup, providedColumnGroup, location) {
6573 var headerValueGetter = colDef.headerValueGetter;
6574 if (headerValueGetter) {
6575 var params = {
6576 colDef: colDef,
6577 column: column,
6578 columnGroup: columnGroup,
6579 providedColumnGroup: providedColumnGroup,
6580 location: location,
6581 api: this.gridOptionsWrapper.getApi(),
6582 columnApi: this.gridOptionsWrapper.getColumnApi(),
6583 context: this.gridOptionsWrapper.getContext()
6584 };
6585 if (typeof headerValueGetter === 'function') {
6586 // valueGetter is a function, so just call it
6587 return headerValueGetter(params);
6588 }
6589 else if (typeof headerValueGetter === 'string') {
6590 // valueGetter is an expression, so execute the expression
6591 return this.expressionService.evaluate(headerValueGetter, params);
6592 }
6593 console.warn('ag-grid: headerValueGetter must be a function or a string');
6594 return '';
6595 }
6596 else if (colDef.headerName != null) {
6597 return colDef.headerName;
6598 }
6599 else if (colDef.field) {
6600 return Object(_utils_string__WEBPACK_IMPORTED_MODULE_10__["camelCaseToHumanText"])(colDef.field);
6601 }
6602 return '';
6603 };
6604 ColumnModel.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {
6605 if (this.gridOptionsWrapper.isSuppressAggFuncInHeader()) {
6606 return headerName;
6607 }
6608 // only columns with aggregation active can have aggregations
6609 var pivotValueColumn = column.getColDef().pivotValueColumn;
6610 var pivotActiveOnThisColumn = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(pivotValueColumn);
6611 var aggFunc = null;
6612 var aggFuncFound;
6613 // otherwise we have a measure that is active, and we are doing aggregation on it
6614 if (pivotActiveOnThisColumn) {
6615 var isCollapsedHeaderEnabled = this.gridOptionsWrapper.isRemovePivotHeaderRowWhenSingleValueColumn() && this.valueColumns.length === 1;
6616 var isTotalColumn = column.getColDef().pivotTotalColumnIds !== undefined;
6617 if (isCollapsedHeaderEnabled && !isTotalColumn) {
6618 return headerName; // Skip decorating the header - in this case the label is the pivot key, not the value col
6619 }
6620 aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;
6621 aggFuncFound = true;
6622 }
6623 else {
6624 var measureActive = column.isValueActive();
6625 var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();
6626 if (measureActive && aggregationPresent) {
6627 aggFunc = column.getAggFunc();
6628 aggFuncFound = true;
6629 }
6630 else {
6631 aggFuncFound = false;
6632 }
6633 }
6634 if (aggFuncFound) {
6635 var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';
6636 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
6637 var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);
6638 return aggFuncStringTranslated + "(" + headerName + ")";
6639 }
6640 return headerName;
6641 };
6642 // returns the group with matching colId and instanceId. If instanceId is missing,
6643 // matches only on the colId.
6644 ColumnModel.prototype.getColumnGroup = function (colId, instanceId) {
6645 if (!colId) {
6646 return null;
6647 }
6648 if (colId instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
6649 return colId;
6650 }
6651 var allColumnGroups = this.getAllDisplayedTrees();
6652 var checkInstanceId = typeof instanceId === 'number';
6653 var result = null;
6654 this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {
6655 if (child instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
6656 var columnGroup = child;
6657 var matched = void 0;
6658 if (checkInstanceId) {
6659 matched = colId === columnGroup.getGroupId() && instanceId === columnGroup.getInstanceId();
6660 }
6661 else {
6662 matched = colId === columnGroup.getGroupId();
6663 }
6664 if (matched) {
6665 result = columnGroup;
6666 }
6667 }
6668 });
6669 return result;
6670 };
6671 ColumnModel.prototype.isReady = function () {
6672 return this.ready;
6673 };
6674 ColumnModel.prototype.extractValueColumns = function (source, oldPrimaryColumns) {
6675 this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); },
6676 // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null
6677 function () { return undefined; }, function () { return undefined; },
6678 // aggFunc is a string, so return it's existence
6679 function (colDef) {
6680 var aggFunc = colDef.aggFunc;
6681 // null or empty string means clear
6682 if (aggFunc === null || aggFunc === '') {
6683 return null;
6684 }
6685 if (aggFunc === undefined) {
6686 return;
6687 }
6688 return !!aggFunc;
6689 }, function (colDef) {
6690 // return false if any of the following: null, undefined, empty string
6691 return colDef.initialAggFunc != null && colDef.initialAggFunc != '';
6692 });
6693 // all new columns added will have aggFunc missing, so set it to what is in the colDef
6694 this.valueColumns.forEach(function (col) {
6695 var colDef = col.getColDef();
6696 // if aggFunc provided, we always override, as reactive property
6697 if (colDef.aggFunc != null && colDef.aggFunc != '') {
6698 col.setAggFunc(colDef.aggFunc);
6699 }
6700 else {
6701 // otherwise we use initialAggFunc only if no agg func set - which happens when new column only
6702 if (!col.getAggFunc()) {
6703 col.setAggFunc(colDef.initialAggFunc);
6704 }
6705 }
6706 });
6707 };
6708 ColumnModel.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {
6709 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; });
6710 };
6711 ColumnModel.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {
6712 if (oldPrimaryColumns === void 0) { oldPrimaryColumns = []; }
6713 if (previousCols === void 0) { previousCols = []; }
6714 var colsWithIndex = [];
6715 var colsWithValue = [];
6716 // go though all cols.
6717 // if value, change
6718 // if default only, change only if new
6719 (this.primaryColumns || []).forEach(function (col) {
6720 var colIsNew = oldPrimaryColumns.indexOf(col) < 0;
6721 var colDef = col.getColDef();
6722 var value = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["attrToBoolean"])(getValueFunc(colDef));
6723 var initialValue = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["attrToBoolean"])(getInitialValueFunc(colDef));
6724 var index = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["attrToNumber"])(getIndexFunc(colDef));
6725 var initialIndex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["attrToNumber"])(getInitialIndexFunc(colDef));
6726 var include;
6727 var valuePresent = value !== undefined;
6728 var indexPresent = index !== undefined;
6729 var initialValuePresent = initialValue !== undefined;
6730 var initialIndexPresent = initialIndex !== undefined;
6731 if (valuePresent) {
6732 include = value; // boolean value is guaranteed as attrToBoolean() is used above
6733 }
6734 else if (indexPresent) {
6735 if (index === null) {
6736 // if col is new we don't want to use the default / initial if index is set to null. Similarly,
6737 // we don't want to include the property for existing columns, i.e. we want to 'clear' it.
6738 include = false;
6739 }
6740 else {
6741 // note that 'null >= 0' evaluates to true which means 'rowGroupIndex = null' would enable row
6742 // grouping if the null check didn't exist above.
6743 include = index >= 0;
6744 }
6745 }
6746 else {
6747 if (colIsNew) {
6748 // as no value or index is 'present' we use the default / initial when col is new
6749 if (initialValuePresent) {
6750 include = initialValue;
6751 }
6752 else if (initialIndexPresent) {
6753 include = initialIndex != null && initialIndex >= 0;
6754 }
6755 else {
6756 include = false;
6757 }
6758 }
6759 else {
6760 // otherwise include it if included last time, e.g. if we are extracting row group cols and this col
6761 // is an existing row group col (i.e. it exists in 'previousCols') then we should include it.
6762 include = previousCols.indexOf(col) >= 0;
6763 }
6764 }
6765 if (include) {
6766 var useIndex = colIsNew ? (index != null || initialIndex != null) : index != null;
6767 useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);
6768 }
6769 });
6770 var getIndexForCol = function (col) {
6771 var index = getIndexFunc(col.getColDef());
6772 var defaultIndex = getInitialIndexFunc(col.getColDef());
6773 return index != null ? index : defaultIndex;
6774 };
6775 // sort cols with index, and add these first
6776 colsWithIndex.sort(function (colA, colB) {
6777 var indexA = getIndexForCol(colA);
6778 var indexB = getIndexForCol(colB);
6779 if (indexA === indexB) {
6780 return 0;
6781 }
6782 if (indexA < indexB) {
6783 return -1;
6784 }
6785 return 1;
6786 });
6787 var res = [].concat(colsWithIndex);
6788 // second add columns that were there before and in the same order as they were before,
6789 // so we are preserving order of current grouping of columns that simply have rowGroup=true
6790 previousCols.forEach(function (col) {
6791 if (colsWithValue.indexOf(col) >= 0) {
6792 res.push(col);
6793 }
6794 });
6795 // lastly put in all remaining cols
6796 colsWithValue.forEach(function (col) {
6797 if (res.indexOf(col) < 0) {
6798 res.push(col);
6799 }
6800 });
6801 // set flag=false for removed cols
6802 previousCols.forEach(function (col) {
6803 if (res.indexOf(col) < 0) {
6804 setFlagFunc(col, false);
6805 }
6806 });
6807 // set flag=true for newly added cols
6808 res.forEach(function (col) {
6809 if (previousCols.indexOf(col) < 0) {
6810 setFlagFunc(col, true);
6811 }
6812 });
6813 return res;
6814 };
6815 ColumnModel.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {
6816 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; });
6817 };
6818 ColumnModel.prototype.resetColumnGroupState = function (source) {
6819 if (source === void 0) { source = "api"; }
6820 var stateItems = [];
6821 this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {
6822 if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
6823 var colGroupDef = child.getColGroupDef();
6824 var groupState = {
6825 groupId: child.getGroupId(),
6826 open: !colGroupDef ? undefined : colGroupDef.openByDefault
6827 };
6828 stateItems.push(groupState);
6829 }
6830 });
6831 this.setColumnGroupState(stateItems, source);
6832 };
6833 ColumnModel.prototype.getColumnGroupState = function () {
6834 var columnGroupState = [];
6835 this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {
6836 if (node instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
6837 columnGroupState.push({
6838 groupId: node.getGroupId(),
6839 open: node.isExpanded()
6840 });
6841 }
6842 });
6843 return columnGroupState;
6844 };
6845 ColumnModel.prototype.setColumnGroupState = function (stateItems, source) {
6846 var _this = this;
6847 if (source === void 0) { source = "api"; }
6848 this.columnAnimationService.start();
6849 var impactedGroups = [];
6850 stateItems.forEach(function (stateItem) {
6851 var groupKey = stateItem.groupId;
6852 var newValue = stateItem.open;
6853 var providedColumnGroup = _this.getProvidedColumnGroup(groupKey);
6854 if (!providedColumnGroup) {
6855 return;
6856 }
6857 if (providedColumnGroup.isExpanded() === newValue) {
6858 return;
6859 }
6860 _this.logger.log('columnGroupOpened(' + providedColumnGroup.getGroupId() + ',' + newValue + ')');
6861 providedColumnGroup.setExpanded(newValue);
6862 impactedGroups.push(providedColumnGroup);
6863 });
6864 this.updateGroupsAndDisplayedColumns(source);
6865 this.setFirstRightAndLastLeftPinned(source);
6866 impactedGroups.forEach(function (providedColumnGroup) {
6867 var event = {
6868 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_GROUP_OPENED,
6869 columnGroup: providedColumnGroup,
6870 api: _this.gridApi,
6871 columnApi: _this.columnApi
6872 };
6873 _this.eventService.dispatchEvent(event);
6874 });
6875 this.columnAnimationService.finish();
6876 };
6877 // called by headerRenderer - when a header is opened or closed
6878 ColumnModel.prototype.setColumnGroupOpened = function (key, newValue, source) {
6879 if (source === void 0) { source = "api"; }
6880 var keyAsString;
6881 if (key instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
6882 keyAsString = key.getId();
6883 }
6884 else {
6885 keyAsString = key || '';
6886 }
6887 this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);
6888 };
6889 ColumnModel.prototype.getProvidedColumnGroup = function (key) {
6890 // if (key instanceof ProvidedColumnGroup) { return key; }
6891 if (typeof key !== 'string') {
6892 console.error('AG Grid: group key must be a string');
6893 }
6894 // otherwise, search for the column group by id
6895 var res = null;
6896 this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {
6897 if (node instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
6898 if (node.getId() === key) {
6899 res = node;
6900 }
6901 }
6902 });
6903 return res;
6904 };
6905 ColumnModel.prototype.calculateColumnsForDisplay = function () {
6906 var _this = this;
6907 var columnsForDisplay;
6908 if (this.pivotMode && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.secondaryColumns)) {
6909 // pivot mode is on, but we are not pivoting, so we only
6910 // show columns we are aggregating on
6911 columnsForDisplay = this.gridColumns.filter(function (column) {
6912 var isAutoGroupCol = _this.groupAutoColumns && Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["includes"])(_this.groupAutoColumns, column);
6913 var isValueCol = _this.valueColumns && Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["includes"])(_this.valueColumns, column);
6914 return isAutoGroupCol || isValueCol;
6915 });
6916 }
6917 else {
6918 // otherwise continue as normal. this can be working on the primary
6919 // or secondary columns, whatever the gridColumns are set to
6920 columnsForDisplay = this.gridColumns.filter(function (column) {
6921 // keep col if a) it's auto-group or b) it's visible
6922 var isAutoGroupCol = _this.groupAutoColumns && Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["includes"])(_this.groupAutoColumns, column);
6923 return isAutoGroupCol || column.isVisible();
6924 });
6925 }
6926 return columnsForDisplay;
6927 };
6928 ColumnModel.prototype.checkColSpanActiveInCols = function (columns) {
6929 var result = false;
6930 columns.forEach(function (col) {
6931 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(col.getColDef().colSpan)) {
6932 result = true;
6933 }
6934 });
6935 return result;
6936 };
6937 ColumnModel.prototype.calculateColumnsForGroupDisplay = function () {
6938 var _this = this;
6939 this.groupDisplayColumns = [];
6940 var checkFunc = function (col) {
6941 var colDef = col.getColDef();
6942 if (colDef && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(colDef.showRowGroup)) {
6943 _this.groupDisplayColumns.push(col);
6944 }
6945 };
6946 this.gridColumns.forEach(checkFunc);
6947 if (this.groupAutoColumns) {
6948 this.groupAutoColumns.forEach(checkFunc);
6949 }
6950 };
6951 ColumnModel.prototype.getGroupDisplayColumns = function () {
6952 return this.groupDisplayColumns;
6953 };
6954 ColumnModel.prototype.updateDisplayedColumns = function (source) {
6955 var columnsForDisplay = this.calculateColumnsForDisplay();
6956 this.buildDisplayedTrees(columnsForDisplay);
6957 this.calculateColumnsForGroupDisplay();
6958 // also called when group opened/closed
6959 this.updateGroupsAndDisplayedColumns(source);
6960 // also called when group opened/closed
6961 this.setFirstRightAndLastLeftPinned(source);
6962 };
6963 ColumnModel.prototype.isSecondaryColumnsPresent = function () {
6964 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(this.secondaryColumns);
6965 };
6966 ColumnModel.prototype.setSecondaryColumns = function (colDefs, source) {
6967 var _this = this;
6968 if (source === void 0) { source = "api"; }
6969 var newColsPresent = colDefs && colDefs.length > 0;
6970 // if not cols passed, and we had no cols anyway, then do nothing
6971 if (!newColsPresent && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.secondaryColumns)) {
6972 return;
6973 }
6974 if (newColsPresent) {
6975 this.processSecondaryColumnDefinitions(colDefs);
6976 var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false, this.secondaryBalancedTree || this.previousSecondaryColumns || undefined);
6977 this.secondaryBalancedTree = balancedTreeResult.columnTree;
6978 this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;
6979 this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);
6980 this.secondaryColumnsMap = {};
6981 this.secondaryColumns.forEach(function (col) { return _this.secondaryColumnsMap[col.getId()] = col; });
6982 this.previousSecondaryColumns = null;
6983 }
6984 else {
6985 this.previousSecondaryColumns = this.secondaryBalancedTree;
6986 this.secondaryBalancedTree = null;
6987 this.secondaryHeaderRowCount = -1;
6988 this.secondaryColumns = null;
6989 this.secondaryColumnsMap = {};
6990 }
6991 this.updateGridColumns();
6992 this.updateDisplayedColumns(source);
6993 };
6994 ColumnModel.prototype.processSecondaryColumnDefinitions = function (colDefs) {
6995 var columnCallback = this.gridOptionsWrapper.getProcessSecondaryColDefFunc();
6996 var groupCallback = this.gridOptionsWrapper.getProcessSecondaryColGroupDefFunc();
6997 if (!columnCallback && !groupCallback) {
6998 return undefined;
6999 }
7000 var searchForColDefs = function (colDefs2) {
7001 colDefs2.forEach(function (abstractColDef) {
7002 var isGroup = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(abstractColDef.children);
7003 if (isGroup) {
7004 var colGroupDef = abstractColDef;
7005 if (groupCallback) {
7006 groupCallback(colGroupDef);
7007 }
7008 searchForColDefs(colGroupDef.children);
7009 }
7010 else {
7011 var colDef = abstractColDef;
7012 if (columnCallback) {
7013 columnCallback(colDef);
7014 }
7015 }
7016 });
7017 };
7018 if (colDefs) {
7019 searchForColDefs(colDefs);
7020 }
7021 };
7022 // called from: setColumnState, setColumnDefs, setSecondaryColumns
7023 ColumnModel.prototype.updateGridColumns = function () {
7024 var _this = this;
7025 if (this.gridColsArePrimary) {
7026 this.lastPrimaryOrder = this.gridColumns;
7027 }
7028 else {
7029 this.lastSecondaryOrder = this.gridColumns;
7030 }
7031 if (this.secondaryColumns && this.secondaryBalancedTree) {
7032 var hasSameColumns = this.secondaryColumns.every(function (col) {
7033 return _this.gridColumnsMap[col.getColId()] !== undefined;
7034 });
7035 this.gridBalancedTree = this.secondaryBalancedTree.slice();
7036 this.gridHeaderRowCount = this.secondaryHeaderRowCount;
7037 this.gridColumns = this.secondaryColumns.slice();
7038 this.gridColsArePrimary = false;
7039 // If the current columns are the same or a subset of the previous
7040 // we keep the previous order, otherwise we go back to the order the pivot
7041 // cols are generated in
7042 if (hasSameColumns) {
7043 this.orderGridColsLike(this.lastSecondaryOrder);
7044 }
7045 }
7046 else if (this.primaryColumns) {
7047 this.gridBalancedTree = this.primaryColumnTree.slice();
7048 this.gridHeaderRowCount = this.primaryHeaderRowCount;
7049 this.gridColumns = this.primaryColumns.slice();
7050 this.gridColsArePrimary = true;
7051 // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns
7052 // when this happens (eg if user moved a column) rather than revert back to the original column order.
7053 // likewise if changing in/out of pivot mode, we want to maintain the order of the cols
7054 this.orderGridColsLike(this.lastPrimaryOrder);
7055 }
7056 this.addAutoGroupToGridColumns();
7057 this.gridColumns = this.placeLockedColumns(this.gridColumns);
7058 this.setupQuickFilterColumns();
7059 this.clearDisplayedAndViewportColumns();
7060 this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);
7061 this.gridColumnsMap = {};
7062 this.gridColumns.forEach(function (col) { return _this.gridColumnsMap[col.getId()] = col; });
7063 this.setAutoHeightActive();
7064 var event = {
7065 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_GRID_COLUMNS_CHANGED,
7066 api: this.gridApi,
7067 columnApi: this.columnApi
7068 };
7069 this.eventService.dispatchEvent(event);
7070 };
7071 ColumnModel.prototype.setAutoHeightActive = function () {
7072 this.autoHeightActive = this.gridColumns.filter(function (col) { return col.isAutoHeight(); }).length > 0;
7073 if (this.autoHeightActive) {
7074 this.autoHeightActiveAtLeastOnce = true;
7075 var rowModelType = this.rowModel.getType();
7076 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;
7077 if (!supportedRowModel) {
7078 var message_1 = 'AG Grid - autoHeight columns only work with Client Side Row Model and Server Side Row Model.';
7079 Object(_utils_function__WEBPACK_IMPORTED_MODULE_12__["doOnce"])(function () { return console.warn(message_1); }, 'autoHeightActive.wrongRowModel');
7080 }
7081 }
7082 };
7083 ColumnModel.prototype.orderGridColsLike = function (colsOrder) {
7084 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(colsOrder)) {
7085 return;
7086 }
7087 var lastOrderMapped = Object(_utils_map__WEBPACK_IMPORTED_MODULE_11__["convertToMap"])(colsOrder.map(function (col, index) { return [col, index]; }));
7088 // only do the sort if at least one column is accounted for. columns will be not accounted for
7089 // if changing from secondary to primary columns
7090 var noColsFound = true;
7091 this.gridColumns.forEach(function (col) {
7092 if (lastOrderMapped.has(col)) {
7093 noColsFound = false;
7094 }
7095 });
7096 if (noColsFound) {
7097 return;
7098 }
7099 // order cols in the same order as before. we need to make sure that all
7100 // cols still exists, so filter out any that no longer exist.
7101 var gridColsMap = Object(_utils_map__WEBPACK_IMPORTED_MODULE_11__["convertToMap"])(this.gridColumns.map(function (col) { return [col, true]; }));
7102 var oldColsOrdered = colsOrder.filter(function (col) { return gridColsMap.has(col); });
7103 var oldColsMap = Object(_utils_map__WEBPACK_IMPORTED_MODULE_11__["convertToMap"])(oldColsOrdered.map(function (col) { return [col, true]; }));
7104 var newColsOrdered = this.gridColumns.filter(function (col) { return !oldColsMap.has(col); });
7105 // add in the new columns, at the end (if no group), or at the end of the group (if a group)
7106 var newGridColumns = oldColsOrdered.slice();
7107 newColsOrdered.forEach(function (newCol) {
7108 var parent = newCol.getOriginalParent();
7109 // if no parent, means we are not grouping, so just add the column to the end
7110 if (!parent) {
7111 newGridColumns.push(newCol);
7112 return;
7113 }
7114 // find the group the column belongs to. if no siblings at the current level (eg col in group on it's
7115 // own) then go up one level and look for siblings there.
7116 var siblings = [];
7117 while (!siblings.length && parent) {
7118 var leafCols = parent.getLeafColumns();
7119 leafCols.forEach(function (leafCol) {
7120 var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;
7121 var noYetInSiblings = siblings.indexOf(leafCol) < 0;
7122 if (presentInNewGriColumns && noYetInSiblings) {
7123 siblings.push(leafCol);
7124 }
7125 });
7126 parent = parent.getOriginalParent();
7127 }
7128 // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own
7129 if (!siblings.length) {
7130 newGridColumns.push(newCol);
7131 return;
7132 }
7133 // find index of last column in the group
7134 var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });
7135 var lastIndex = Math.max.apply(Math, __spread(indexes));
7136 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["insertIntoArray"])(newGridColumns, newCol, lastIndex + 1);
7137 });
7138 this.gridColumns = newGridColumns;
7139 };
7140 ColumnModel.prototype.isPrimaryColumnGroupsPresent = function () {
7141 return this.primaryHeaderRowCount > 1;
7142 };
7143 // if we are using autoGroupCols, then they should be included for quick filter. this covers the
7144 // following scenarios:
7145 // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on
7146 // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this
7147 // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)
7148 ColumnModel.prototype.setupQuickFilterColumns = function () {
7149 if (this.groupAutoColumns) {
7150 this.columnsForQuickFilter = (this.primaryColumns || []).concat(this.groupAutoColumns);
7151 }
7152 else if (this.primaryColumns) {
7153 this.columnsForQuickFilter = this.primaryColumns;
7154 }
7155 };
7156 ColumnModel.prototype.placeLockedColumns = function (cols) {
7157 var left = [];
7158 var normal = [];
7159 var right = [];
7160 cols.forEach(function (col) {
7161 var position = col.getColDef().lockPosition;
7162 if (position === 'right') {
7163 right.push(col);
7164 }
7165 else if (position === 'left' || position === true) {
7166 left.push(col);
7167 }
7168 else {
7169 normal.push(col);
7170 }
7171 });
7172 return __spread(left, normal, right);
7173 };
7174 ColumnModel.prototype.addAutoGroupToGridColumns = function () {
7175 // add in auto-group here
7176 this.createGroupAutoColumnsIfNeeded();
7177 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.groupAutoColumns)) {
7178 return;
7179 }
7180 this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;
7181 var autoColBalancedTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);
7182 this.gridBalancedTree = autoColBalancedTree.concat(this.gridBalancedTree);
7183 };
7184 // gets called after we copy down grid columns, to make sure any part of the gui
7185 // that tries to draw, eg the header, it will get empty lists of columns rather
7186 // than stale columns. for example, the header will received gridColumnsChanged
7187 // event, so will try and draw, but it will draw successfully when it acts on the
7188 // virtualColumnsChanged event
7189 ColumnModel.prototype.clearDisplayedAndViewportColumns = function () {
7190 this.displayedTreeLeft = [];
7191 this.displayedTreeRight = [];
7192 this.displayedTreeCentre = [];
7193 this.viewportRowLeft = {};
7194 this.viewportRowRight = {};
7195 this.viewportRowCenter = {};
7196 this.displayedColumnsLeft = [];
7197 this.displayedColumnsRight = [];
7198 this.displayedColumnsCenter = [];
7199 this.displayedColumns = [];
7200 this.viewportColumns = [];
7201 };
7202 ColumnModel.prototype.updateGroupsAndDisplayedColumns = function (source) {
7203 this.updateOpenClosedVisibilityInColumnGroups();
7204 this.deriveDisplayedColumns(source);
7205 this.refreshFlexedColumns();
7206 this.extractViewport();
7207 this.updateBodyWidths();
7208 // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display
7209 var event = {
7210 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED,
7211 api: this.gridApi,
7212 columnApi: this.columnApi
7213 };
7214 this.eventService.dispatchEvent(event);
7215 };
7216 ColumnModel.prototype.deriveDisplayedColumns = function (source) {
7217 this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeLeft, this.displayedColumnsLeft);
7218 this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeCentre, this.displayedColumnsCenter);
7219 this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeRight, this.displayedColumnsRight);
7220 this.joinDisplayedColumns();
7221 this.setLeftValues(source);
7222 this.displayedAutoHeightCols = this.displayedColumns.filter(function (col) { return col.isAutoHeight(); });
7223 };
7224 ColumnModel.prototype.isAutoRowHeightActive = function () {
7225 return this.autoHeightActive;
7226 };
7227 ColumnModel.prototype.wasAutoRowHeightEverActive = function () {
7228 return this.autoHeightActiveAtLeastOnce;
7229 };
7230 ColumnModel.prototype.joinDisplayedColumns = function () {
7231 if (this.gridOptionsWrapper.isEnableRtl()) {
7232 this.displayedColumns = this.displayedColumnsRight
7233 .concat(this.displayedColumnsCenter)
7234 .concat(this.displayedColumnsLeft);
7235 }
7236 else {
7237 this.displayedColumns = this.displayedColumnsLeft
7238 .concat(this.displayedColumnsCenter)
7239 .concat(this.displayedColumnsRight);
7240 }
7241 };
7242 // sets the left pixel position of each column
7243 ColumnModel.prototype.setLeftValues = function (source) {
7244 this.setLeftValuesOfColumns(source);
7245 this.setLeftValuesOfGroups();
7246 };
7247 ColumnModel.prototype.setLeftValuesOfColumns = function (source) {
7248 var _this = this;
7249 if (!this.primaryColumns) {
7250 return;
7251 }
7252 // go through each list of displayed columns
7253 var allColumns = this.primaryColumns.slice(0);
7254 // let totalColumnWidth = this.getWidthOfColsInList()
7255 var doingRtl = this.gridOptionsWrapper.isEnableRtl();
7256 [
7257 this.displayedColumnsLeft,
7258 this.displayedColumnsRight,
7259 this.displayedColumnsCenter
7260 ].forEach(function (columns) {
7261 if (doingRtl) {
7262 // when doing RTL, we start at the top most pixel (ie RHS) and work backwards
7263 var left_1 = _this.getWidthOfColsInList(columns);
7264 columns.forEach(function (column) {
7265 left_1 -= column.getActualWidth();
7266 column.setLeft(left_1, source);
7267 });
7268 }
7269 else {
7270 // otherwise normal LTR, we start at zero
7271 var left_2 = 0;
7272 columns.forEach(function (column) {
7273 column.setLeft(left_2, source);
7274 left_2 += column.getActualWidth();
7275 });
7276 }
7277 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeAllFromArray"])(allColumns, columns);
7278 });
7279 // items left in allColumns are columns not displayed, so remove the left position. this is
7280 // important for the rows, as if a col is made visible, then taken out, then made visible again,
7281 // we don't want the animation of the cell floating in from the old position, whatever that was.
7282 allColumns.forEach(function (column) {
7283 column.setLeft(null, source);
7284 });
7285 };
7286 ColumnModel.prototype.setLeftValuesOfGroups = function () {
7287 // a groups left value is the lest left value of it's children
7288 [
7289 this.displayedTreeLeft,
7290 this.displayedTreeRight,
7291 this.displayedTreeCentre
7292 ].forEach(function (columns) {
7293 columns.forEach(function (column) {
7294 if (column instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
7295 var columnGroup = column;
7296 columnGroup.checkLeft();
7297 }
7298 });
7299 });
7300 };
7301 ColumnModel.prototype.derivedDisplayedColumnsFromDisplayedTree = function (tree, columns) {
7302 columns.length = 0;
7303 this.columnUtils.depthFirstDisplayedColumnTreeSearch(tree, function (child) {
7304 if (child instanceof _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"]) {
7305 columns.push(child);
7306 }
7307 });
7308 };
7309 ColumnModel.prototype.extractViewportColumns = function () {
7310 if (this.suppressColumnVirtualisation) {
7311 // no virtualisation, so don't filter
7312 this.viewportColumnsCenter = this.displayedColumnsCenter;
7313 }
7314 else {
7315 // filter out what should be visible
7316 this.viewportColumnsCenter = this.filterOutColumnsWithinViewport();
7317 }
7318 this.viewportColumns = this.viewportColumnsCenter
7319 .concat(this.displayedColumnsLeft)
7320 .concat(this.displayedColumnsRight);
7321 };
7322 ColumnModel.prototype.getVirtualHeaderGroupRow = function (type, dept) {
7323 var result;
7324 switch (type) {
7325 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT:
7326 result = this.viewportRowLeft[dept];
7327 break;
7328 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT:
7329 result = this.viewportRowRight[dept];
7330 break;
7331 default:
7332 result = this.viewportRowCenter[dept];
7333 break;
7334 }
7335 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(result)) {
7336 result = [];
7337 }
7338 return result;
7339 };
7340 ColumnModel.prototype.extractViewportRows = function () {
7341 // go through each group, see if any of it's cols are displayed, and if yes,
7342 // then this group is included
7343 this.viewportRowLeft = {};
7344 this.viewportRowRight = {};
7345 this.viewportRowCenter = {};
7346 // for easy lookup when building the groups.
7347 var virtualColIds = {};
7348 this.viewportColumns.forEach(function (col) { return virtualColIds[col.getId()] = true; });
7349 var testGroup = function (children, result, dept) {
7350 var returnValue = false;
7351 for (var i = 0; i < children.length; i++) {
7352 // see if this item is within viewport
7353 var child = children[i];
7354 var addThisItem = false;
7355 if (child instanceof _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"]) {
7356 // for column, test if column is included
7357 addThisItem = virtualColIds[child.getId()] === true;
7358 }
7359 else {
7360 // if group, base decision on children
7361 var columnGroup = child;
7362 var displayedChildren = columnGroup.getDisplayedChildren();
7363 if (displayedChildren) {
7364 addThisItem = testGroup(displayedChildren, result, dept + 1);
7365 }
7366 }
7367 if (addThisItem) {
7368 returnValue = true;
7369 if (!result[dept]) {
7370 result[dept] = [];
7371 }
7372 result[dept].push(child);
7373 }
7374 }
7375 return returnValue;
7376 };
7377 testGroup(this.displayedTreeLeft, this.viewportRowLeft, 0);
7378 testGroup(this.displayedTreeRight, this.viewportRowRight, 0);
7379 testGroup(this.displayedTreeCentre, this.viewportRowCenter, 0);
7380 };
7381 ColumnModel.prototype.extractViewport = function () {
7382 this.extractViewportColumns();
7383 this.extractViewportRows();
7384 };
7385 ColumnModel.prototype.filterOutColumnsWithinViewport = function () {
7386 return this.displayedColumnsCenter.filter(this.isColumnInViewport.bind(this));
7387 };
7388 ColumnModel.prototype.refreshFlexedColumns = function (params) {
7389 var _this = this;
7390 if (params === void 0) { params = {}; }
7391 var source = params.source ? params.source : 'flex';
7392 if (params.viewportWidth != null) {
7393 this.flexViewportWidth = params.viewportWidth;
7394 }
7395 if (!this.flexViewportWidth) {
7396 return [];
7397 }
7398 // If the grid has left-over space, divide it between flexing columns in proportion to their flex value.
7399 // A "flexing column" is one that has a 'flex' value set and is not currently being constrained by its
7400 // minWidth or maxWidth rules.
7401 var flexAfterDisplayIndex = -1;
7402 if (params.resizingCols) {
7403 params.resizingCols.forEach(function (col) {
7404 var indexOfCol = _this.displayedColumnsCenter.indexOf(col);
7405 if (flexAfterDisplayIndex < indexOfCol) {
7406 flexAfterDisplayIndex = indexOfCol;
7407 }
7408 });
7409 }
7410 var isColFlex = function (col) {
7411 var afterResizingCols = _this.displayedColumnsCenter.indexOf(col) > flexAfterDisplayIndex;
7412 return col.getFlex() && afterResizingCols;
7413 };
7414 var knownWidthColumns = this.displayedColumnsCenter.filter(function (col) { return !isColFlex(col); });
7415 var flexingColumns = this.displayedColumnsCenter.filter(function (col) { return isColFlex(col); });
7416 var changedColumns = [];
7417 if (!flexingColumns.length) {
7418 return [];
7419 }
7420 var flexingColumnSizes = [];
7421 var spaceForFlexingColumns;
7422 outer: while (true) {
7423 var totalFlex = flexingColumns.reduce(function (count, col) { return count + col.getFlex(); }, 0);
7424 spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);
7425 for (var i = 0; i < flexingColumns.length; i++) {
7426 var col = flexingColumns[i];
7427 var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;
7428 var constrainedWidth = 0;
7429 var minWidth = col.getMinWidth();
7430 var maxWidth = col.getMaxWidth();
7431 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(minWidth) && widthByFlexRule < minWidth) {
7432 constrainedWidth = minWidth;
7433 }
7434 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && widthByFlexRule > maxWidth) {
7435 constrainedWidth = maxWidth;
7436 }
7437 if (constrainedWidth) {
7438 // This column is not in fact flexing as it is being constrained to a specific size
7439 // so remove it from the list of flexing columns and start again
7440 col.setActualWidth(constrainedWidth, source);
7441 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(flexingColumns, col);
7442 changedColumns.push(col);
7443 knownWidthColumns.push(col);
7444 continue outer;
7445 }
7446 flexingColumnSizes[i] = Math.round(widthByFlexRule);
7447 }
7448 break;
7449 }
7450 var remainingSpace = spaceForFlexingColumns;
7451 flexingColumns.forEach(function (col, i) {
7452 col.setActualWidth(Math.min(flexingColumnSizes[i], remainingSpace), source);
7453 changedColumns.push(col);
7454 remainingSpace -= flexingColumnSizes[i];
7455 });
7456 if (!params.skipSetLeft) {
7457 this.setLeftValues(source);
7458 }
7459 if (params.updateBodyWidths) {
7460 this.updateBodyWidths();
7461 }
7462 if (params.fireResizedEvent) {
7463 this.fireColumnResizedEvent(changedColumns, true, source, flexingColumns);
7464 }
7465 // if the user sets rowData directly into GridOptions, then the row data is set before
7466 // grid is attached to the DOM. this means the columns are not flexed, and then the rows
7467 // have the wrong height (as they depend on column widths). so once the columns have
7468 // been flexed for the first time (only happens once grid is attached to DOM, as dependency
7469 // on getting the grid width, which only happens after attached after ResizeObserver fires)
7470 // we get get rows to re-calc their heights.
7471 if (!this.flexColsCalculatedAtLestOnce) {
7472 if (this.gridOptionsWrapper.isRowModelDefault()) {
7473 this.rowModel.resetRowHeights();
7474 }
7475 this.flexColsCalculatedAtLestOnce = true;
7476 }
7477 return flexingColumns;
7478 };
7479 // called from api
7480 ColumnModel.prototype.sizeColumnsToFit = function (gridWidth, source, silent) {
7481 if (source === void 0) { source = "sizeColumnsToFit"; }
7482 // avoid divide by zero
7483 var allDisplayedColumns = this.getAllDisplayedColumns();
7484 if (gridWidth <= 0 || !allDisplayedColumns.length) {
7485 return;
7486 }
7487 var colsToSpread = [];
7488 var colsToNotSpread = [];
7489 allDisplayedColumns.forEach(function (column) {
7490 if (column.getColDef().suppressSizeToFit === true) {
7491 colsToNotSpread.push(column);
7492 }
7493 else {
7494 colsToSpread.push(column);
7495 }
7496 });
7497 // make a copy of the cols that are going to be resized
7498 var colsToFireEventFor = colsToSpread.slice(0);
7499 var finishedResizing = false;
7500 var moveToNotSpread = function (column) {
7501 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(colsToSpread, column);
7502 colsToNotSpread.push(column);
7503 };
7504 // resetting cols to their original width makes the sizeColumnsToFit more deterministic,
7505 // rather than depending on the current size of the columns. most users call sizeColumnsToFit
7506 // immediately after grid is created, so will make no difference. however if application is calling
7507 // sizeColumnsToFit repeatedly (eg after column group is opened / closed repeatedly) we don't want
7508 // the columns to start shrinking / growing over time.
7509 //
7510 // NOTE: the process below will assign values to `this.actualWidth` of each column without firing events
7511 // for this reason we need to manually fire resize events after the resize has been done for each column.
7512 colsToSpread.forEach(function (column) { return column.resetActualWidth(source); });
7513 while (!finishedResizing) {
7514 finishedResizing = true;
7515 var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);
7516 if (availablePixels <= 0) {
7517 // no width, set everything to minimum
7518 colsToSpread.forEach(function (column) {
7519 column.setMinimum(source);
7520 });
7521 }
7522 else {
7523 var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);
7524 // we set the pixels for the last col based on what's left, as otherwise
7525 // we could be a pixel or two short or extra because of rounding errors.
7526 var pixelsForLastCol = availablePixels;
7527 // backwards through loop, as we are removing items as we go
7528 for (var i = colsToSpread.length - 1; i >= 0; i--) {
7529 var column = colsToSpread[i];
7530 var minWidth = column.getMinWidth();
7531 var maxWidth = column.getMaxWidth();
7532 var newWidth = Math.round(column.getActualWidth() * scale);
7533 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(minWidth) && newWidth < minWidth) {
7534 newWidth = minWidth;
7535 moveToNotSpread(column);
7536 finishedResizing = false;
7537 }
7538 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && column.isGreaterThanMax(newWidth)) {
7539 newWidth = maxWidth;
7540 moveToNotSpread(column);
7541 finishedResizing = false;
7542 }
7543 else if (i === 0) { // if this is the last column
7544 newWidth = pixelsForLastCol;
7545 }
7546 column.setActualWidth(newWidth, source, true);
7547 pixelsForLastCol -= newWidth;
7548 }
7549 }
7550 }
7551 // see notes above
7552 colsToFireEventFor.forEach(function (col) {
7553 col.fireColumnWidthChangedEvent(source);
7554 });
7555 this.setLeftValues(source);
7556 this.updateBodyWidths();
7557 if (silent) {
7558 return;
7559 }
7560 this.fireColumnResizedEvent(colsToFireEventFor, true, source);
7561 };
7562 ColumnModel.prototype.buildDisplayedTrees = function (visibleColumns) {
7563 var leftVisibleColumns = [];
7564 var rightVisibleColumns = [];
7565 var centerVisibleColumns = [];
7566 visibleColumns.forEach(function (column) {
7567 switch (column.getPinned()) {
7568 case "left":
7569 leftVisibleColumns.push(column);
7570 break;
7571 case "right":
7572 rightVisibleColumns.push(column);
7573 break;
7574 default:
7575 centerVisibleColumns.push(column);
7576 break;
7577 }
7578 });
7579 var groupInstanceIdCreator = new _groupInstanceIdCreator__WEBPACK_IMPORTED_MODULE_5__["GroupInstanceIdCreator"]();
7580 this.displayedTreeLeft = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT, this.displayedTreeLeft);
7581 this.displayedTreeRight = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT, this.displayedTreeRight);
7582 this.displayedTreeCentre = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedTreeCentre);
7583 this.updateDisplayedMap();
7584 };
7585 ColumnModel.prototype.updateDisplayedMap = function () {
7586 var _this = this;
7587 this.displayedColumnsAndGroupsMap = {};
7588 var func = function (child) {
7589 _this.displayedColumnsAndGroupsMap[child.getUniqueId()] = child;
7590 };
7591 this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeCentre, func);
7592 this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeLeft, func);
7593 this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeRight, func);
7594 };
7595 ColumnModel.prototype.isDisplayed = function (item) {
7596 var fromMap = this.displayedColumnsAndGroupsMap[item.getUniqueId()];
7597 // check for reference, in case new column / group with same id is now present
7598 return fromMap === item;
7599 };
7600 ColumnModel.prototype.updateOpenClosedVisibilityInColumnGroups = function () {
7601 var allColumnGroups = this.getAllDisplayedTrees();
7602 this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {
7603 if (child instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
7604 var columnGroup = child;
7605 columnGroup.calculateDisplayedColumns();
7606 }
7607 });
7608 };
7609 ColumnModel.prototype.getGroupAutoColumns = function () {
7610 return this.groupAutoColumns;
7611 };
7612 ColumnModel.prototype.createGroupAutoColumnsIfNeeded = function () {
7613 if (!this.autoGroupsNeedBuilding) {
7614 return;
7615 }
7616 this.autoGroupsNeedBuilding = false;
7617 var groupFullWidthRow = this.gridOptionsWrapper.isGroupUseEntireRow(this.pivotMode);
7618 // we need to allow suppressing auto-column separately for group and pivot as the normal situation
7619 // is CSRM and user provides group column themselves for normal view, but when they go into pivot the
7620 // columns are generated by the grid so no opportunity for user to provide group column. so need a way
7621 // to suppress auto-col for grouping only, and not pivot.
7622 // however if using Viewport RM or SSRM and user is providing the columns, the user may wish full control
7623 // of the group column in this instance.
7624 var suppressAutoColumn = this.pivotMode ?
7625 this.gridOptionsWrapper.isPivotSuppressAutoColumn() : this.gridOptionsWrapper.isGroupSuppressAutoColumn();
7626 var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;
7627 var needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow;
7628 if (needAutoColumns) {
7629 var existingCols = this.groupAutoColumns || [];
7630 var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(existingCols, this.rowGroupColumns);
7631 var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);
7632 // we force recreate when suppressColumnStateEvents changes, so new group cols pick up the new
7633 // definitions. otherwise we could ignore the new cols because they appear to be the same.
7634 if (autoColsDifferent || this.forceRecreateAutoGroups) {
7635 this.groupAutoColumns = newAutoGroupCols;
7636 }
7637 }
7638 else {
7639 this.groupAutoColumns = null;
7640 }
7641 };
7642 ColumnModel.prototype.autoColsEqual = function (colsA, colsB) {
7643 return Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["areEqual"])(colsA, colsB, function (a, b) { return a.getColId() === b.getColId(); });
7644 };
7645 ColumnModel.prototype.getWidthOfColsInList = function (columnList) {
7646 return columnList.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);
7647 };
7648 ColumnModel.prototype.getGridBalancedTree = function () {
7649 return this.gridBalancedTree;
7650 };
7651 ColumnModel.prototype.hasFloatingFilters = function () {
7652 if (!this.gridColumns) {
7653 return false;
7654 }
7655 var res = this.gridColumns.some(function (col) { return col.getColDef().floatingFilter; });
7656 return res;
7657 };
7658 ColumnModel.prototype.getFirstDisplayedColumn = function () {
7659 var isRtl = this.gridOptionsWrapper.isEnableRtl();
7660 var queryOrder = [
7661 'getDisplayedLeftColumns',
7662 'getDisplayedCenterColumns',
7663 'getDisplayedRightColumns'
7664 ];
7665 if (isRtl) {
7666 queryOrder.reverse();
7667 }
7668 for (var i = 0; i < queryOrder.length; i++) {
7669 var container = this[queryOrder[i]]();
7670 if (container.length) {
7671 return isRtl ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["last"])(container) : container[0];
7672 }
7673 }
7674 return null;
7675 };
7676 __decorate([
7677 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('expressionService')
7678 ], ColumnModel.prototype, "expressionService", void 0);
7679 __decorate([
7680 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnFactory')
7681 ], ColumnModel.prototype, "columnFactory", void 0);
7682 __decorate([
7683 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('displayedGroupCreator')
7684 ], ColumnModel.prototype, "displayedGroupCreator", void 0);
7685 __decorate([
7686 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('ctrlsService')
7687 ], ColumnModel.prototype, "ctrlsService", void 0);
7688 __decorate([
7689 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('autoWidthCalculator')
7690 ], ColumnModel.prototype, "autoWidthCalculator", void 0);
7691 __decorate([
7692 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnUtils')
7693 ], ColumnModel.prototype, "columnUtils", void 0);
7694 __decorate([
7695 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnAnimationService')
7696 ], ColumnModel.prototype, "columnAnimationService", void 0);
7697 __decorate([
7698 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('autoGroupColService')
7699 ], ColumnModel.prototype, "autoGroupColService", void 0);
7700 __decorate([
7701 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Optional"])('aggFuncService')
7702 ], ColumnModel.prototype, "aggFuncService", void 0);
7703 __decorate([
7704 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Optional"])('valueCache')
7705 ], ColumnModel.prototype, "valueCache", void 0);
7706 __decorate([
7707 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Optional"])('animationFrameService')
7708 ], ColumnModel.prototype, "animationFrameService", void 0);
7709 __decorate([
7710 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('rowModel')
7711 ], ColumnModel.prototype, "rowModel", void 0);
7712 __decorate([
7713 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnApi')
7714 ], ColumnModel.prototype, "columnApi", void 0);
7715 __decorate([
7716 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('gridApi')
7717 ], ColumnModel.prototype, "gridApi", void 0);
7718 __decorate([
7719 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('sortController')
7720 ], ColumnModel.prototype, "sortController", void 0);
7721 __decorate([
7722 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnDefFactory')
7723 ], ColumnModel.prototype, "columnDefFactory", void 0);
7724 __decorate([
7725 _context_context__WEBPACK_IMPORTED_MODULE_6__["PostConstruct"]
7726 ], ColumnModel.prototype, "init", null);
7727 __decorate([
7728 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Qualifier"])('loggerFactory'))
7729 ], ColumnModel.prototype, "setBeans", null);
7730 ColumnModel = __decorate([
7731 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Bean"])('columnModel')
7732 ], ColumnModel);
7733 return ColumnModel;
7734}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
7735
7736
7737
7738
7739
7740/***/ }),
7741/* 23 */
7742/***/ (function(module, __webpack_exports__, __webpack_require__) {
7743
7744"use strict";
7745__webpack_require__.r(__webpack_exports__);
7746/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24);
7747/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return _eventKeys__WEBPACK_IMPORTED_MODULE_0__["Events"]; });
7748
7749/**
7750 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
7751 * @version v27.3.0
7752 * @link https://www.ag-grid.com/
7753 * @license MIT
7754 */
7755
7756
7757
7758
7759
7760/***/ }),
7761/* 24 */
7762/***/ (function(module, __webpack_exports__, __webpack_require__) {
7763
7764"use strict";
7765__webpack_require__.r(__webpack_exports__);
7766/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return Events; });
7767/**
7768 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
7769 * @version v27.3.0
7770 * @link https://www.ag-grid.com/
7771 * @license MIT
7772 */
7773var Events = /** @class */ (function () {
7774 function Events() {
7775 }
7776 /** Everything has changed with the columns. Either complete new set of columns set, or user called setState() */
7777 /** @deprecated - grid no longer uses this, and setSate() also fires individual events */
7778 Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';
7779 /** User has set in new columns. */
7780 Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';
7781 /** The pivot mode flag was changed */
7782 Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';
7783 /** A row group column was added, removed or order changed. */
7784 Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';
7785 /** expandAll / collapseAll was called from the api. */
7786 Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';
7787 /** A pivot column was added, removed or order changed. */
7788 Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';
7789 /** The list of grid columns has changed. */
7790 Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';
7791 /** A value column was added, removed or agg function was changed. */
7792 Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';
7793 /** A column was moved */
7794 Events.EVENT_COLUMN_MOVED = 'columnMoved';
7795 /** One or more columns was shown / hidden */
7796 Events.EVENT_COLUMN_VISIBLE = 'columnVisible';
7797 /** One or more columns was pinned / unpinned*/
7798 Events.EVENT_COLUMN_PINNED = 'columnPinned';
7799 /** A column group was opened / closed */
7800 Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';
7801 /** One or more columns was resized. If just one, the column in the event is set. */
7802 Events.EVENT_COLUMN_RESIZED = 'columnResized';
7803 /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */
7804 Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';
7805 /** The list of virtual columns has changed, results from viewport changing */
7806 Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';
7807 /** Async Transactions Executed */
7808 Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED = 'asyncTransactionsFlushed';
7809 /** A row group was opened / closed */
7810 Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';
7811 /** The client has set new data into the grid */
7812 Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';
7813 /** The client has updated data for the grid */
7814 Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';
7815 /** The client has set new floating data into the grid */
7816 Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';
7817 /** Range selection has changed */
7818 Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';
7819 /** Chart was created */
7820 Events.EVENT_CHART_CREATED = 'chartCreated';
7821 /** Chart Range selection has changed */
7822 Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';
7823 /** Chart Options have changed */
7824 Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';
7825 /** Chart was destroyed */
7826 Events.EVENT_CHART_DESTROYED = 'chartDestroyed';
7827 /** For when the tool panel is shown / hidden */
7828 Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';
7829 Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START = 'columnPanelItemDragStart';
7830 Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END = 'columnPanelItemDragEnd';
7831 /** Model was updated - grid updates the drawn rows when this happens */
7832 Events.EVENT_MODEL_UPDATED = 'modelUpdated';
7833 Events.EVENT_PASTE_START = 'pasteStart';
7834 Events.EVENT_PASTE_END = 'pasteEnd';
7835 Events.EVENT_FILL_START = 'fillStart';
7836 Events.EVENT_FILL_END = 'fillEnd';
7837 Events.EVENT_CELL_CLICKED = 'cellClicked';
7838 Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';
7839 Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';
7840 Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';
7841 Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';
7842 Events.EVENT_CELL_EDIT_REQUEST = 'cellEditRequest';
7843 Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';
7844 Events.EVENT_CELL_FOCUSED = 'cellFocused';
7845 Events.EVENT_FULL_WIDTH_ROW_FOCUSED = 'fullWidthRowFocused';
7846 Events.EVENT_ROW_SELECTED = 'rowSelected';
7847 Events.EVENT_SELECTION_CHANGED = 'selectionChanged';
7848 Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';
7849 Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';
7850 Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';
7851 Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';
7852 /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */
7853 Events.EVENT_FILTER_CHANGED = 'filterChanged';
7854 /** Filter was change but not applied. Only useful if apply buttons are used in filters. */
7855 Events.EVENT_FILTER_MODIFIED = 'filterModified';
7856 Events.EVENT_FILTER_OPENED = 'filterOpened';
7857 Events.EVENT_SORT_CHANGED = 'sortChanged';
7858 /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */
7859 Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';
7860 Events.EVENT_ROW_CLICKED = 'rowClicked';
7861 Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';
7862 /** Gets called once after the grid has finished initialising. */
7863 Events.EVENT_GRID_READY = 'gridReady';
7864 /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's
7865 * changed, so always filling the space it was given. */
7866 Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';
7867 /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */
7868 Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';
7869 /* The width of the scrollbar has been calculated */
7870 Events.EVENT_SCROLLBAR_WIDTH_CHANGED = 'scrollbarWidthChanged';
7871 /** Rows were rendered for the first time (ie on async data load). */
7872 Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';
7873 /** A column drag has started, either resizing a column or moving a column. */
7874 Events.EVENT_DRAG_STARTED = 'dragStarted';
7875 /** A column drag has stopped */
7876 Events.EVENT_DRAG_STOPPED = 'dragStopped';
7877 Events.EVENT_CHECKBOX_CHANGED = 'checkboxChanged';
7878 Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';
7879 Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';
7880 Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';
7881 Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';
7882 /** Main body of grid has scrolled, either horizontally or vertically */
7883 Events.EVENT_BODY_SCROLL = 'bodyScroll';
7884 /** Main body of the grid has stopped scrolling, either horizontally or vertically */
7885 Events.EVENT_BODY_SCROLL_END = 'bodyScrollEnd';
7886 Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';
7887 /** The displayed page for pagination has changed. For example the data was filtered or sorted,
7888 * or the user has moved to a different page. */
7889 Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';
7890 /** Only used by React, Angular, Web Components and VueJS AG Grid components
7891 * (not used if doing plain JavaScript). If the grid receives changes due
7892 * to bound properties, this event fires after the grid has finished processing the change. */
7893 Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';
7894 /***************************** INTERNAL EVENTS: START ******************************************* */
7895 /** Please remember to add to ComponentUtil.EXCLUDED_INTERNAL_EVENTS to not have these events exposed to framework components. */
7896 /** All items from here down are used internally by the grid, not intended for external use. */
7897 // not documented, either experimental, or we just don't want users using an depending on them
7898 Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';
7899 Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';
7900 Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';
7901 Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';
7902 Events.EVENT_FLASH_CELLS = 'flashCells';
7903 Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED = 'paginationPixelOffsetChanged';
7904 Events.EVENT_DISPLAYED_ROWS_CHANGED = 'displayedRowsChanged';
7905 Events.EVENT_LEFT_PINNED_WIDTH_CHANGED = 'leftPinnedWidthChanged';
7906 Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED = 'rightPinnedWidthChanged';
7907 Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED = 'rowContainerHeightChanged';
7908 Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';
7909 Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';
7910 Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';
7911 Events.EVENT_ROW_DRAG_END = 'rowDragEnd';
7912 // primarily for charts
7913 Events.EVENT_POPUP_TO_FRONT = 'popupToFront';
7914 // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is
7915 // to design these better around server side functions and then release to general public when fully working with
7916 // all the row models.
7917 Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';
7918 Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';
7919 Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';
7920 Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';
7921 Events.EVENT_KEYBOARD_FOCUS = 'keyboardFocus';
7922 Events.EVENT_MOUSE_FOCUS = 'mouseFocus';
7923 Events.EVENT_STORE_UPDATED = 'storeUpdated';
7924 return Events;
7925}());
7926
7927
7928
7929
7930
7931/***/ }),
7932/* 25 */
7933/***/ (function(module, __webpack_exports__, __webpack_require__) {
7934
7935"use strict";
7936__webpack_require__.r(__webpack_exports__);
7937/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupInstanceIdCreator", function() { return GroupInstanceIdCreator; });
7938/**
7939 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
7940 * @version v27.3.0
7941 * @link https://www.ag-grid.com/
7942 * @license MIT
7943 */
7944// class returns unique instance id's for columns.
7945// eg, the following calls (in this order) will result in:
7946//
7947// getInstanceIdForKey('country') => 0
7948// getInstanceIdForKey('country') => 1
7949// getInstanceIdForKey('country') => 2
7950// getInstanceIdForKey('country') => 3
7951// getInstanceIdForKey('age') => 0
7952// getInstanceIdForKey('age') => 1
7953// getInstanceIdForKey('country') => 4
7954var GroupInstanceIdCreator = /** @class */ (function () {
7955 function GroupInstanceIdCreator() {
7956 // this map contains keys to numbers, so we remember what the last call was
7957 this.existingIds = {};
7958 }
7959 GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {
7960 var lastResult = this.existingIds[key];
7961 var result;
7962 if (typeof lastResult !== 'number') {
7963 // first time this key
7964 result = 0;
7965 }
7966 else {
7967 result = lastResult + 1;
7968 }
7969 this.existingIds[key] = result;
7970 return result;
7971 };
7972 return GroupInstanceIdCreator;
7973}());
7974
7975
7976
7977
7978
7979/***/ }),
7980/* 26 */
7981/***/ (function(module, __webpack_exports__, __webpack_require__) {
7982
7983"use strict";
7984__webpack_require__.r(__webpack_exports__);
7985/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utf8_encode", function() { return utf8_encode; });
7986/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "camelCaseToHyphen", function() { return camelCaseToHyphen; });
7987/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hyphenToCamelCase", function() { return hyphenToCamelCase; });
7988/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "capitalise", function() { return capitalise; });
7989/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "escapeString", function() { return escapeString; });
7990/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "camelCaseToHumanText", function() { return camelCaseToHumanText; });
7991/**
7992 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
7993 * @version v27.3.0
7994 * @link https://www.ag-grid.com/
7995 * @license MIT
7996 */
7997var reUnescapedHtml = /[&<>"']/g;
7998/**
7999 * HTML Escapes.
8000 */
8001var HTML_ESCAPES = {
8002 '&': '&amp;',
8003 '<': '&lt;',
8004 '>': '&gt;',
8005 '"': '&quot;',
8006 "'": '&#39;'
8007};
8008/**
8009 * It encodes any string in UTF-8 format
8010 * taken from https://github.com/mathiasbynens/utf8.js
8011 * @param {string} s
8012 * @returns {string}
8013 */
8014function utf8_encode(s) {
8015 var stringFromCharCode = String.fromCharCode;
8016 function ucs2decode(string) {
8017 var output = [];
8018 if (!string) {
8019 return [];
8020 }
8021 var len = string.length;
8022 var counter = 0;
8023 var value;
8024 var extra;
8025 while (counter < len) {
8026 value = string.charCodeAt(counter++);
8027 if (value >= 0xD800 && value <= 0xDBFF && counter < len) {
8028 // high surrogate, and there is a next character
8029 extra = string.charCodeAt(counter++);
8030 if ((extra & 0xFC00) == 0xDC00) { // low surrogate
8031 output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
8032 }
8033 else {
8034 // unmatched surrogate; only append this code unit, in case the next
8035 // code unit is the high surrogate of a surrogate pair
8036 output.push(value);
8037 counter--;
8038 }
8039 }
8040 else {
8041 output.push(value);
8042 }
8043 }
8044 return output;
8045 }
8046 function checkScalarValue(point) {
8047 if (point >= 0xD800 && point <= 0xDFFF) {
8048 throw Error('Lone surrogate U+' + point.toString(16).toUpperCase() +
8049 ' is not a scalar value');
8050 }
8051 }
8052 function createByte(point, shift) {
8053 return stringFromCharCode(((point >> shift) & 0x3F) | 0x80);
8054 }
8055 function encodeCodePoint(point) {
8056 if ((point >= 0 && point <= 31 && point !== 10)) {
8057 var convertedCode = point.toString(16).toUpperCase();
8058 var paddedCode = convertedCode.padStart(4, '0');
8059 return "_x" + paddedCode + "_";
8060 }
8061 if ((point & 0xFFFFFF80) == 0) { // 1-byte sequence
8062 return stringFromCharCode(point);
8063 }
8064 var symbol = '';
8065 if ((point & 0xFFFFF800) == 0) { // 2-byte sequence
8066 symbol = stringFromCharCode(((point >> 6) & 0x1F) | 0xC0);
8067 }
8068 else if ((point & 0xFFFF0000) == 0) { // 3-byte sequence
8069 checkScalarValue(point);
8070 symbol = stringFromCharCode(((point >> 12) & 0x0F) | 0xE0);
8071 symbol += createByte(point, 6);
8072 }
8073 else if ((point & 0xFFE00000) == 0) { // 4-byte sequence
8074 symbol = stringFromCharCode(((point >> 18) & 0x07) | 0xF0);
8075 symbol += createByte(point, 12);
8076 symbol += createByte(point, 6);
8077 }
8078 symbol += stringFromCharCode((point & 0x3F) | 0x80);
8079 return symbol;
8080 }
8081 var codePoints = ucs2decode(s);
8082 var length = codePoints.length;
8083 var index = -1;
8084 var codePoint;
8085 var byteString = '';
8086 while (++index < length) {
8087 codePoint = codePoints[index];
8088 byteString += encodeCodePoint(codePoint);
8089 }
8090 return byteString;
8091}
8092/**
8093 * Converts a camelCase string into hyphenated string
8094 * from https://gist.github.com/youssman/745578062609e8acac9f
8095 * @param {string} str
8096 * @return {string}
8097 */
8098function camelCaseToHyphen(str) {
8099 if (str === null || str === undefined) {
8100 return null;
8101 }
8102 return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });
8103}
8104/**
8105 * Converts a hyphenated string into camelCase string
8106 * from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase
8107 * @param {string} str
8108 * @return {string}
8109 */
8110function hyphenToCamelCase(str) {
8111 if (str === null || str === undefined) {
8112 return null;
8113 }
8114 return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
8115}
8116function capitalise(str) {
8117 return str[0].toUpperCase() + str.substr(1).toLowerCase();
8118}
8119function escapeString(toEscape) {
8120 // we call toString() twice, in case value is an object, where user provides
8121 // a toString() method, and first call to toString() returns back something other
8122 // than a string (eg a number to render)
8123 return toEscape == null ? null : toEscape.toString().toString().replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });
8124}
8125/**
8126 * Converts a camelCase string into regular text
8127 * from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression
8128 * @param {string} camelCase
8129 * @return {string}
8130 */
8131function camelCaseToHumanText(camelCase) {
8132 if (!camelCase || camelCase == null) {
8133 return null;
8134 }
8135 var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;
8136 var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');
8137 return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');
8138}
8139
8140
8141
8142
8143/***/ }),
8144/* 27 */
8145/***/ (function(module, __webpack_exports__, __webpack_require__) {
8146
8147"use strict";
8148__webpack_require__.r(__webpack_exports__);
8149/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "convertToMap", function() { return convertToMap; });
8150/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapById", function() { return mapById; });
8151/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return keys; });
8152/**
8153 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8154 * @version v27.3.0
8155 * @link https://www.ag-grid.com/
8156 * @license MIT
8157 */
8158function convertToMap(arr) {
8159 var map = new Map();
8160 arr.forEach(function (pair) { return map.set(pair[0], pair[1]); });
8161 return map;
8162}
8163// handy for organising a list into a map, where each item is mapped by an attribute, eg mapping Columns by ID
8164function mapById(arr, callback) {
8165 var map = new Map();
8166 arr.forEach(function (item) { return map.set(callback(item), item); });
8167 return map;
8168}
8169function keys(map) {
8170 var arr = [];
8171 map.forEach(function (_, key) { return arr.push(key); });
8172 return arr;
8173}
8174
8175
8176
8177
8178/***/ }),
8179/* 28 */
8180/***/ (function(module, __webpack_exports__, __webpack_require__) {
8181
8182"use strict";
8183__webpack_require__.r(__webpack_exports__);
8184/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnUtils", function() { return ColumnUtils; });
8185/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
8186/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
8187/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
8188/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
8189/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
8190/**
8191 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8192 * @version v27.3.0
8193 * @link https://www.ag-grid.com/
8194 * @license MIT
8195 */
8196var __extends = (undefined && undefined.__extends) || (function () {
8197 var extendStatics = function (d, b) {
8198 extendStatics = Object.setPrototypeOf ||
8199 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
8200 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
8201 return extendStatics(d, b);
8202 };
8203 return function (d, b) {
8204 extendStatics(d, b);
8205 function __() { this.constructor = d; }
8206 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
8207 };
8208})();
8209var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
8210 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8211 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8212 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;
8213 return c > 3 && r && Object.defineProperty(target, key, r), r;
8214};
8215
8216
8217
8218
8219
8220// takes in a list of columns, as specified by the column definitions, and returns column groups
8221var ColumnUtils = /** @class */ (function (_super) {
8222 __extends(ColumnUtils, _super);
8223 function ColumnUtils() {
8224 return _super !== null && _super.apply(this, arguments) || this;
8225 }
8226 ColumnUtils.prototype.calculateColMinWidth = function (colDef) {
8227 return colDef.minWidth != null ? colDef.minWidth : this.gridOptionsWrapper.getMinColWidth();
8228 };
8229 ColumnUtils.prototype.calculateColMaxWidth = function (colDef) {
8230 return colDef.maxWidth != null ? colDef.maxWidth : (this.gridOptionsWrapper.getMaxColWidth() || Number.MAX_SAFE_INTEGER);
8231 };
8232 ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {
8233 var minColWidth = this.calculateColMinWidth(colDef);
8234 var maxColWidth = this.calculateColMaxWidth(colDef);
8235 var width;
8236 var colDefWidth = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["attrToNumber"])(colDef.width);
8237 var colDefInitialWidth = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["attrToNumber"])(colDef.initialWidth);
8238 if (colDefWidth != null) {
8239 width = colDefWidth;
8240 }
8241 else if (colDefInitialWidth != null) {
8242 width = colDefInitialWidth;
8243 }
8244 else {
8245 width = this.gridOptionsWrapper.getColWidth();
8246 }
8247 return Math.max(Math.min(width, maxColWidth), minColWidth);
8248 };
8249 ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {
8250 var result = [];
8251 var found = false;
8252 var recursePath = function (balancedColumnTree, dept) {
8253 for (var i = 0; i < balancedColumnTree.length; i++) {
8254 if (found) {
8255 return;
8256 }
8257 // quit the search, so 'result' is kept with the found result
8258 var node = balancedColumnTree[i];
8259 if (node instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
8260 var nextNode = node;
8261 recursePath(nextNode.getChildren(), dept + 1);
8262 result[dept] = node;
8263 }
8264 else if (node === column) {
8265 found = true;
8266 }
8267 }
8268 };
8269 recursePath(originalBalancedTree, 0);
8270 // we should always find the path, but in case there is a bug somewhere, returning null
8271 // will make it fail rather than provide a 'hard to track down' bug
8272 return found ? result : null;
8273 };
8274 ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {
8275 var _this = this;
8276 if (!tree) {
8277 return;
8278 }
8279 tree.forEach(function (child) {
8280 if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
8281 _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);
8282 }
8283 callback(child, parent);
8284 });
8285 };
8286 ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {
8287 var _this = this;
8288 if (!tree) {
8289 return;
8290 }
8291 tree.forEach(function (child) {
8292 if (child instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
8293 _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);
8294 }
8295 callback(child);
8296 });
8297 };
8298 ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {
8299 var _this = this;
8300 if (!tree) {
8301 return;
8302 }
8303 tree.forEach(function (child) {
8304 if (child instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
8305 _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);
8306 }
8307 callback(child);
8308 });
8309 };
8310 ColumnUtils = __decorate([
8311 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('columnUtils')
8312 ], ColumnUtils);
8313 return ColumnUtils;
8314}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
8315
8316
8317
8318
8319
8320/***/ }),
8321/* 29 */
8322/***/ (function(module, __webpack_exports__, __webpack_require__) {
8323
8324"use strict";
8325__webpack_require__.r(__webpack_exports__);
8326/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DisplayedGroupCreator", function() { return DisplayedGroupCreator; });
8327/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
8328/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
8329/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
8330/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
8331/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
8332/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
8333/**
8334 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8335 * @version v27.3.0
8336 * @link https://www.ag-grid.com/
8337 * @license MIT
8338 */
8339var __extends = (undefined && undefined.__extends) || (function () {
8340 var extendStatics = function (d, b) {
8341 extendStatics = Object.setPrototypeOf ||
8342 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
8343 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
8344 return extendStatics(d, b);
8345 };
8346 return function (d, b) {
8347 extendStatics(d, b);
8348 function __() { this.constructor = d; }
8349 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
8350 };
8351})();
8352var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
8353 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8354 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8355 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;
8356 return c > 3 && r && Object.defineProperty(target, key, r), r;
8357};
8358
8359
8360
8361
8362
8363
8364// takes in a list of columns, as specified by the column definitions, and returns column groups
8365var DisplayedGroupCreator = /** @class */ (function (_super) {
8366 __extends(DisplayedGroupCreator, _super);
8367 function DisplayedGroupCreator() {
8368 return _super !== null && _super.apply(this, arguments) || this;
8369 }
8370 DisplayedGroupCreator.prototype.createDisplayedGroups = function (
8371 // all displayed columns sorted - this is the columns the grid should show
8372 sortedVisibleColumns,
8373 // the tree of columns, as provided by the users, used to know what groups columns roll up into
8374 balancedColumnTree,
8375 // creates unique id's for the group
8376 groupInstanceIdCreator,
8377 // whether it's left, right or center col
8378 pinned,
8379 // we try to reuse old groups if we can, to allow gui to do animation
8380 oldDisplayedGroups) {
8381 var _this = this;
8382 var result = [];
8383 var previousRealPath;
8384 var previousOriginalPath;
8385 var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);
8386 // go through each column, then do a bottom up comparison to the previous column, and start
8387 // to share groups if they converge at any point.
8388 sortedVisibleColumns.forEach(function (currentColumn) {
8389 var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);
8390 var currentRealPath = [];
8391 var firstColumn = !previousOriginalPath;
8392 for (var i = 0; i < currentOriginalPath.length; i++) {
8393 if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {
8394 // new group needed
8395 var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);
8396 currentRealPath[i] = newGroup;
8397 // if top level, add to result, otherwise add to parent
8398 if (i == 0) {
8399 result.push(newGroup);
8400 }
8401 else {
8402 currentRealPath[i - 1].addChild(newGroup);
8403 }
8404 }
8405 else {
8406 // reuse old group
8407 currentRealPath[i] = previousRealPath[i];
8408 }
8409 }
8410 var noColumnGroups = currentRealPath.length === 0;
8411 if (noColumnGroups) {
8412 // if we are not grouping, then the result of the above is an empty
8413 // path (no groups), and we just add the column to the root list.
8414 result.push(currentColumn);
8415 }
8416 else {
8417 var leafGroup = Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(currentRealPath);
8418 leafGroup.addChild(currentColumn);
8419 }
8420 previousRealPath = currentRealPath;
8421 previousOriginalPath = currentOriginalPath;
8422 });
8423 this.setupParentsIntoColumns(result, null);
8424 return result;
8425 };
8426 DisplayedGroupCreator.prototype.createColumnGroup = function (providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {
8427 var groupId = providedGroup.getGroupId();
8428 var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);
8429 var uniqueId = _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"].createUniqueId(groupId, instanceId);
8430 var columnGroup = oldColumnsMapped[uniqueId];
8431 // if the user is setting new colDefs, it is possible that the id's overlap, and we
8432 // would have a false match from above. so we double check we are talking about the
8433 // same original column group.
8434 if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {
8435 columnGroup = null;
8436 }
8437 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(columnGroup)) {
8438 // clean out the old column group here, as we will be adding children into it again
8439 columnGroup.reset();
8440 }
8441 else {
8442 columnGroup = new _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"](providedGroup, groupId, instanceId, pinned);
8443 this.context.createBean(columnGroup);
8444 }
8445 return columnGroup;
8446 };
8447 // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup
8448 DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {
8449 var result = {};
8450 var recursive = function (columnsOrGroups) {
8451 columnsOrGroups.forEach(function (columnOrGroup) {
8452 if (columnOrGroup instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
8453 var columnGroup = columnOrGroup;
8454 result[columnOrGroup.getUniqueId()] = columnGroup;
8455 recursive(columnGroup.getChildren());
8456 }
8457 });
8458 };
8459 if (displayedGroups) {
8460 recursive(displayedGroups);
8461 }
8462 return result;
8463 };
8464 DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {
8465 var _this = this;
8466 columnsOrGroups.forEach(function (columnsOrGroup) {
8467 columnsOrGroup.setParent(parent);
8468 if (columnsOrGroup instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
8469 var columnGroup = columnsOrGroup;
8470 _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);
8471 }
8472 });
8473 };
8474 DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {
8475 var result = [];
8476 var found = false;
8477 var recursePath = function (columnTree, dept) {
8478 for (var i = 0; i < columnTree.length; i++) {
8479 // quit the search, so 'result' is kept with the found result
8480 if (found) {
8481 return;
8482 }
8483 var node = columnTree[i];
8484 if (node instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
8485 recursePath(node.getChildren(), dept + 1);
8486 result[dept] = node;
8487 }
8488 else if (node === column) {
8489 found = true;
8490 }
8491 }
8492 };
8493 recursePath(balancedColumnTree, 0);
8494 // it's possible we didn't find a path. this happens if the column is generated
8495 // by the grid (auto-group), in that the definition didn't come from the client. in this case,
8496 // we create a fake original path.
8497 if (found) {
8498 return result;
8499 }
8500 console.warn('AG Grid: could not get path');
8501 return null;
8502 };
8503 DisplayedGroupCreator = __decorate([
8504 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('displayedGroupCreator')
8505 ], DisplayedGroupCreator);
8506 return DisplayedGroupCreator;
8507}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
8508
8509
8510
8511
8512
8513/***/ }),
8514/* 30 */
8515/***/ (function(module, __webpack_exports__, __webpack_require__) {
8516
8517"use strict";
8518__webpack_require__.r(__webpack_exports__);
8519/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentUtil", function() { return ComponentUtil; });
8520/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
8521/* harmony import */ var _propertyKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31);
8522/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
8523/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
8524/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
8525/**
8526 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8527 * @version v27.3.0
8528 * @link https://www.ag-grid.com/
8529 * @license MIT
8530 */
8531var __assign = (undefined && undefined.__assign) || function () {
8532 __assign = Object.assign || function(t) {
8533 for (var s, i = 1, n = arguments.length; i < n; i++) {
8534 s = arguments[i];
8535 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8536 t[p] = s[p];
8537 }
8538 return t;
8539 };
8540 return __assign.apply(this, arguments);
8541};
8542var __read = (undefined && undefined.__read) || function (o, n) {
8543 var m = typeof Symbol === "function" && o[Symbol.iterator];
8544 if (!m) return o;
8545 var i = m.call(o), r, ar = [], e;
8546 try {
8547 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8548 }
8549 catch (error) { e = { error: error }; }
8550 finally {
8551 try {
8552 if (r && !r.done && (m = i["return"])) m.call(i);
8553 }
8554 finally { if (e) throw e.error; }
8555 }
8556 return ar;
8557};
8558var __spread = (undefined && undefined.__spread) || function () {
8559 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
8560 return ar;
8561};
8562
8563
8564
8565
8566
8567var ComponentUtil = /** @class */ (function () {
8568 function ComponentUtil() {
8569 }
8570 ComponentUtil.getEventCallbacks = function () {
8571 if (!ComponentUtil.EVENT_CALLBACKS) {
8572 ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });
8573 }
8574 return ComponentUtil.EVENT_CALLBACKS;
8575 };
8576 ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, skipEventDeprecationCheck) {
8577 if (skipEventDeprecationCheck === void 0) { skipEventDeprecationCheck = false; }
8578 // create empty grid options if none were passed
8579 if (typeof gridOptions !== 'object') {
8580 gridOptions = {};
8581 }
8582 // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'
8583 var pGridOptions = gridOptions;
8584 var keyExists = function (key) { return typeof component[key] !== 'undefined'; };
8585 // if groupAggFiltering exists and isn't a function, handle as a boolean.
8586 if (keyExists('groupAggFiltering') && typeof component.groupAggFiltering !== 'function') {
8587 pGridOptions.groupAggFiltering = ComponentUtil.toBoolean(component.groupAggFiltering);
8588 delete component.groupAggFiltering;
8589 }
8590 // add in all the simple properties
8591 __spread(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)
8592 .forEach(function (key) { return pGridOptions[key] = component[key]; });
8593 ComponentUtil.BOOLEAN_PROPERTIES
8594 .filter(keyExists)
8595 .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(component[key]); });
8596 ComponentUtil.NUMBER_PROPERTIES
8597 .filter(keyExists)
8598 .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(component[key]); });
8599 return gridOptions;
8600 };
8601 ComponentUtil.getCallbackForEvent = function (eventName) {
8602 if (!eventName || eventName.length < 2) {
8603 return eventName;
8604 }
8605 return 'on' + eventName[0].toUpperCase() + eventName.substr(1);
8606 };
8607 ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {
8608 if (!changes) {
8609 return;
8610 }
8611 var changesToApply = __assign({}, changes);
8612 // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'
8613 var pGridOptions = gridOptions;
8614 var keyExists = function (key) { return changesToApply[key]; };
8615 // if groupAggFiltering exists and isn't a function, handle as a boolean.
8616 if (keyExists('groupAggFiltering')) {
8617 if (typeof changesToApply.groupAggFiltering === 'function') {
8618 pGridOptions.groupAggFiltering = changesToApply.groupAggFiltering;
8619 }
8620 else {
8621 pGridOptions.groupAggFiltering = ComponentUtil.toBoolean(changesToApply.groupAggFiltering);
8622 }
8623 delete changesToApply.groupAggFiltering;
8624 }
8625 // we need to do this before the generic handling, otherwise value gets set before we
8626 // try to set it, and the grid then doesn't refresh the rows as it doesn't see any change.
8627 // also it's possible we use the generic code setXXX below and put it up there instead,
8628 // cover all cases.
8629 if (changesToApply.rowClass) {
8630 api.setRowClass(changesToApply.rowClass.currentValue);
8631 delete changesToApply.rowClass;
8632 }
8633 // check if any change for the simple types, and if so, then just copy in the new value
8634 __spread(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)
8635 .forEach(function (key) { return pGridOptions[key] = changesToApply[key].currentValue; });
8636 ComponentUtil.BOOLEAN_PROPERTIES
8637 .filter(keyExists)
8638 .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(changesToApply[key].currentValue); });
8639 ComponentUtil.NUMBER_PROPERTIES
8640 .filter(keyExists)
8641 .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(changesToApply[key].currentValue); });
8642 if (changesToApply.enableCellTextSelection) {
8643 api.setEnableCellTextSelection(ComponentUtil.toBoolean(changesToApply.enableCellTextSelection.currentValue));
8644 delete changesToApply.enableCellTextSelection;
8645 }
8646 if (changesToApply.quickFilterText) {
8647 api.setQuickFilter(changesToApply.quickFilterText.currentValue);
8648 delete changesToApply.quickFilterText;
8649 }
8650 if (changesToApply.autoGroupColumnDef) {
8651 api.setAutoGroupColumnDef(changesToApply.autoGroupColumnDef.currentValue, "gridOptionsChanged");
8652 delete changesToApply.autoGroupColumnDef;
8653 }
8654 if (changesToApply.columnDefs) {
8655 api.setColumnDefs(changesToApply.columnDefs.currentValue, "gridOptionsChanged");
8656 delete changesToApply.columnDefs;
8657 }
8658 if (changesToApply.defaultColDef) {
8659 api.setDefaultColDef(changesToApply.defaultColDef.currentValue, "gridOptionsChanged");
8660 delete changesToApply.defaultColDef;
8661 }
8662 if (changesToApply.paginationPageSize) {
8663 api.paginationSetPageSize(ComponentUtil.toNumber(changesToApply.paginationPageSize.currentValue));
8664 delete changesToApply.paginationPageSize;
8665 }
8666 if (changesToApply.pivotMode) {
8667 columnApi.setPivotMode(ComponentUtil.toBoolean(changesToApply.pivotMode.currentValue));
8668 delete changesToApply.pivotMode;
8669 }
8670 if (changesToApply.groupRemoveSingleChildren) {
8671 api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changesToApply.groupRemoveSingleChildren.currentValue));
8672 delete changesToApply.groupRemoveSingleChildren;
8673 }
8674 if (changesToApply.suppressRowDrag) {
8675 api.setSuppressRowDrag(ComponentUtil.toBoolean(changesToApply.suppressRowDrag.currentValue));
8676 delete changesToApply.suppressRowDrag;
8677 }
8678 if (changesToApply.suppressMoveWhenRowDragging) {
8679 api.setSuppressMoveWhenRowDragging(ComponentUtil.toBoolean(changesToApply.suppressMoveWhenRowDragging.currentValue));
8680 delete changesToApply.suppressMoveWhenRowDragging;
8681 }
8682 if (changesToApply.suppressRowClickSelection) {
8683 api.setSuppressRowClickSelection(ComponentUtil.toBoolean(changesToApply.suppressRowClickSelection.currentValue));
8684 delete changesToApply.suppressRowClickSelection;
8685 }
8686 if (changesToApply.suppressClipboardPaste) {
8687 api.setSuppressClipboardPaste(ComponentUtil.toBoolean(changesToApply.suppressClipboardPaste.currentValue));
8688 delete changesToApply.suppressClipboardPaste;
8689 }
8690 if (changesToApply.headerHeight) {
8691 api.setHeaderHeight(ComponentUtil.toNumber(changesToApply.headerHeight.currentValue));
8692 delete changesToApply.headerHeight;
8693 }
8694 // any remaining properties can be set in a generic way
8695 // ie the setter takes the form of setXXX and the argument requires no formatting/translation first
8696 var dynamicApi = api;
8697 Object.keys(changesToApply)
8698 .forEach(function (property) {
8699 var setterName = "set" + property.charAt(0).toUpperCase() + property.substring(1);
8700 if (dynamicApi[setterName]) {
8701 dynamicApi[setterName](changes[property].currentValue);
8702 }
8703 });
8704 // copy changes into an event for dispatch
8705 var event = {
8706 type: _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COMPONENT_STATE_CHANGED,
8707 api: gridOptions.api,
8708 columnApi: gridOptions.columnApi
8709 };
8710 Object(_utils_object__WEBPACK_IMPORTED_MODULE_2__["iterateObject"])(changes, function (key, value) {
8711 event[key] = value;
8712 });
8713 api.dispatchEvent(event);
8714 };
8715 ComponentUtil.toBoolean = function (value) {
8716 if (typeof value === 'boolean') {
8717 return value;
8718 }
8719 if (typeof value === 'string') {
8720 // for boolean, compare to empty String to allow attributes appearing with
8721 // no value to be treated as 'true'
8722 return value.toUpperCase() === 'TRUE' || value == '';
8723 }
8724 return false;
8725 };
8726 ComponentUtil.toNumber = function (value) {
8727 if (typeof value === 'number') {
8728 return value;
8729 }
8730 if (typeof value === 'string') {
8731 return Number(value);
8732 }
8733 };
8734 // all the events are populated in here AFTER this class (at the bottom of the file).
8735 ComponentUtil.EVENTS = [];
8736 // events that are available for use by users of AG Grid and so should be documented
8737 ComponentUtil.PUBLIC_EVENTS = [];
8738 // events that are internal to AG Grid and should not be exposed to users via documentation or generated framework components
8739 ComponentUtil.EXCLUDED_INTERNAL_EVENTS = [];
8740 ComponentUtil.STRING_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].STRING_PROPERTIES;
8741 ComponentUtil.OBJECT_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].OBJECT_PROPERTIES;
8742 ComponentUtil.ARRAY_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].ARRAY_PROPERTIES;
8743 ComponentUtil.NUMBER_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].NUMBER_PROPERTIES;
8744 ComponentUtil.BOOLEAN_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].BOOLEAN_PROPERTIES;
8745 ComponentUtil.FUNCTION_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].FUNCTION_PROPERTIES;
8746 ComponentUtil.ALL_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].ALL_PROPERTIES;
8747 return ComponentUtil;
8748}());
8749
8750ComponentUtil.EVENTS = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["values"])(_events__WEBPACK_IMPORTED_MODULE_0__["Events"]);
8751/** Exclude the following internal events from code generation to prevent exposing these events via framework components */
8752ComponentUtil.EXCLUDED_INTERNAL_EVENTS = [
8753 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SCROLLBAR_WIDTH_CHANGED,
8754 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CHECKBOX_CHANGED,
8755 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_HEIGHT_SCALE_CHANGED,
8756 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_BODY_HEIGHT_CHANGED,
8757 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,
8758 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED,
8759 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_HOVER_CHANGED,
8760 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FLASH_CELLS,
8761 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_PAGINATION_PIXEL_OFFSET_CHANGED,
8762 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_DISPLAYED_ROWS_CHANGED,
8763 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_LEFT_PINNED_WIDTH_CHANGED,
8764 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_RIGHT_PINNED_WIDTH_CHANGED,
8765 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ROW_CONTAINER_HEIGHT_CHANGED,
8766 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_POPUP_TO_FRONT,
8767 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_KEYBOARD_FOCUS,
8768 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_MOUSE_FOCUS,
8769 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_STORE_UPDATED,
8770 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PANEL_ITEM_DRAG_START,
8771 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PANEL_ITEM_DRAG_END,
8772 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FILL_START,
8773 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FILL_END,
8774 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FULL_WIDTH_ROW_FOCUSED
8775];
8776/** EVENTS that should be exposed via code generation for the framework components. */
8777ComponentUtil.PUBLIC_EVENTS = ComponentUtil.EVENTS.filter(function (e) { return !Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["includes"])(ComponentUtil.EXCLUDED_INTERNAL_EVENTS, e); });
8778
8779
8780
8781
8782/***/ }),
8783/* 31 */
8784/***/ (function(module, __webpack_exports__, __webpack_require__) {
8785
8786"use strict";
8787__webpack_require__.r(__webpack_exports__);
8788/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PropertyKeys", function() { return PropertyKeys; });
8789/**
8790 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8791 * @version v27.3.0
8792 * @link https://www.ag-grid.com/
8793 * @license MIT
8794 */
8795var __read = (undefined && undefined.__read) || function (o, n) {
8796 var m = typeof Symbol === "function" && o[Symbol.iterator];
8797 if (!m) return o;
8798 var i = m.call(o), r, ar = [], e;
8799 try {
8800 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8801 }
8802 catch (error) { e = { error: error }; }
8803 finally {
8804 try {
8805 if (r && !r.done && (m = i["return"])) m.call(i);
8806 }
8807 finally { if (e) throw e.error; }
8808 }
8809 return ar;
8810};
8811var __spread = (undefined && undefined.__spread) || function () {
8812 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
8813 return ar;
8814};
8815/**
8816 * These keys are used for validating properties supplied on a gridOptions object, and for code generation.
8817 * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.
8818 */
8819var PropertyKeys = /** @class */ (function () {
8820 function PropertyKeys() {
8821 }
8822 PropertyKeys.STRING_PROPERTIES = [
8823 'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate', 'overlayNoRowsTemplate',
8824 'quickFilterText', 'rowModelType', 'editType', 'domLayout', 'clipboardDelimiter', 'rowGroupPanelShow',
8825 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow', 'fillHandleDirection',
8826 'serverSideStoreType', 'groupDisplayType', 'treeDataDisplayType'
8827 ];
8828 PropertyKeys.OBJECT_PROPERTIES = [
8829 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'localeText', 'icons',
8830 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs', 'fullWidthCellRendererParams',
8831 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'defaultCsvExportParams', 'defaultExcelExportParams', 'columnTypes',
8832 'rowClassRules', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',
8833 'noRowsOverlayComponentParams', 'popupParent', 'colResizeDefault', 'statusBar', 'sideBar', 'chartThemeOverrides',
8834 'customChartThemes'
8835 ];
8836 PropertyKeys.ARRAY_PROPERTIES = [
8837 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData', 'chartThemes'
8838 ];
8839 PropertyKeys.NUMBER_PROPERTIES = [
8840 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight', 'floatingFiltersHeight',
8841 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded', 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize',
8842 'viewportRowModelBufferSize', 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests', 'tooltipShowDelay',
8843 'tooltipHideDelay', 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount', 'scrollbarWidth',
8844 'batchUpdateWaitMillis', 'asyncTransactionWaitMillis', 'blockLoadDebounceMillis', 'keepDetailRowsCount',
8845 'undoRedoCellEditingLimit', 'cellFlashDelay', 'cellFadeDelay', 'tabIndex'
8846 ];
8847 PropertyKeys.BOOLEAN_PROPERTIES = [
8848 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection', 'suppressCellSelection', 'suppressCellFocus', 'suppressHorizontalScroll',
8849 'alwaysShowHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableCellExpressions',
8850 'angularCompileRows', 'angularCompileFilters', 'groupSuppressAutoColumn', 'groupSelectsChildren', 'groupIncludeFooter',
8851 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressBlankHeader', 'suppressMenuHide', 'suppressRowDeselection',
8852 'unSortIcon', 'suppressMultiSort', 'alwaysMultiSort', 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',
8853 'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'suppressColumnMoveAnimation', 'suppressMovableColumns',
8854 'suppressFieldDotNotation', 'enableRangeSelection', 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction',
8855 'deltaSort', 'suppressTouch', 'suppressAsyncEvents', 'allowContextMenuWithControlKey', 'suppressContextMenu',
8856 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns', 'suppressMiddleClickScrolls',
8857 'suppressPreventDefaultOnMouseWheel', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'copyGroupHeadersToClipboard',
8858 'pivotMode', 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh',
8859 'functionsPassive', 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren',
8860 'groupRemoveLowestSingleChildren', 'enableRtl', 'suppressClickEdit', 'rowDragEntireRow', 'rowDragManaged', 'suppressRowDrag',
8861 'suppressMoveWhenRowDragging', 'rowDragMultiRow', 'enableGroupEdit', 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows',
8862 'suppressPaginationPanel', 'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination',
8863 'stopEditingWhenGridLosesFocus', 'paginationAutoPageSize', 'suppressScrollOnNewData', 'suppressScrollWhenPopupsAreOpen',
8864 'purgeClosedRowNodes', 'cacheQuickFilter', 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'suppressChangeDetection',
8865 'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport',
8866 'suppressCsvExport', 'treeData', 'masterDetail', 'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown',
8867 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick', 'suppressEnterpriseResetOnNewColumns',
8868 'suppressRowHoverHighlight', 'suppressRowTransform', 'suppressClipboardPaste', 'suppressLastEmptyLineOnPaste',
8869 'serverSideSortingAlwaysResets', 'suppressSetColumnStateEvents', 'suppressColumnStateEvents', 'enableCharts', 'deltaColumnMode',
8870 'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction',
8871 'excludeChildrenWhenTreeDataFiltering', 'tooltipMouseTrack', 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu',
8872 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel', 'immutableData', 'immutableColumns', 'pivotSuppressAutoColumn',
8873 'suppressExpandablePivotGroups', 'applyColumnDefOrder', 'debounceVerticalScrollbar', 'detailRowAutoHeight',
8874 'serverSideFilteringAlwaysResets', 'suppressAggFilteredOnly', 'showOpenedGroup', 'suppressClipboardApi',
8875 'suppressModelUpdateAfterUpdateTransaction', 'stopEditingWhenCellsLoseFocus', 'maintainColumnOrder', 'groupMaintainOrder',
8876 'columnHoverHighlight', 'reactUi', 'suppressReactUi', 'readOnlyEdit', 'suppressRowVirtualisation',
8877 'resetRowDataOnUpdate', 'removePivotHeaderRowWhenSingleValueColumn', 'suppressCopySingleCellRanges'
8878 ];
8879 /** You do not need to include event callbacks in this list, as they are generated automatically. */
8880 PropertyKeys.FUNCTION_PROPERTIES = [
8881 'localeTextFunc', 'getLocaleText', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',
8882 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent', 'getRowHeight', 'doesExternalFilterPass',
8883 'getRowClass', 'getRowStyle', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',
8884 'groupRowAggNodes', 'getGroupRowAgg', 'getRowNodeId', 'isFullWidthCell', 'isFullWidthRow', 'fullWidthCellRenderer', 'fullWidthCellRendererFramework',
8885 'processSecondaryColDef', 'processSecondaryColGroupDef',
8886 'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextHeader',
8887 'tabToNextHeader', 'navigateToNextCell', 'tabToNextCell', 'processCellFromClipboard', 'getDocument', 'postProcessPopup',
8888 'getChildCount', 'getDataPath', 'loadingCellRenderer', 'loadingCellRendererFramework', 'loadingOverlayComponent',
8889 'loadingOverlayComponentFramework', 'noRowsOverlayComponent', 'noRowsOverlayComponentFramework', 'detailCellRenderer',
8890 'detailCellRendererFramework', 'isRowMaster', 'isRowSelectable', 'postSort', 'postSortRows', 'processHeaderForClipboard', 'processGroupHeaderForClipboard',
8891 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup', 'suppressKeyboardEvent',
8892 'createChartContainer', 'getChartToolbarItems', 'fillOperation', 'isApplyServerSideTransaction', 'getServerSideStoreParams',
8893 'isServerSideGroupOpenByDefault', 'isGroupOpenByDefault', 'defaultGroupSortComparator', 'defaultGroupOrderComparator', 'initialGroupOrderComparator',
8894 'loadingCellRendererSelector', 'getRowId', 'groupAggFiltering'
8895 ];
8896 PropertyKeys.ALL_PROPERTIES = __spread(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);
8897 /**
8898 * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own
8899 * framework-specific properties to colDefs, gridOptions etc.
8900 */
8901 PropertyKeys.FRAMEWORK_PROPERTIES = [
8902 '__ob__', '__v_skip', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'
8903 ];
8904 return PropertyKeys;
8905}());
8906
8907
8908
8909
8910
8911/***/ }),
8912/* 32 */
8913/***/ (function(module, __webpack_exports__, __webpack_require__) {
8914
8915"use strict";
8916__webpack_require__.r(__webpack_exports__);
8917/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgStackComponentsRegistry", function() { return AgStackComponentsRegistry; });
8918/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
8919/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
8920/**
8921 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8922 * @version v27.3.0
8923 * @link https://www.ag-grid.com/
8924 * @license MIT
8925 */
8926var __extends = (undefined && undefined.__extends) || (function () {
8927 var extendStatics = function (d, b) {
8928 extendStatics = Object.setPrototypeOf ||
8929 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
8930 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
8931 return extendStatics(d, b);
8932 };
8933 return function (d, b) {
8934 extendStatics(d, b);
8935 function __() { this.constructor = d; }
8936 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
8937 };
8938})();
8939var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
8940 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8941 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8942 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;
8943 return c > 3 && r && Object.defineProperty(target, key, r), r;
8944};
8945
8946
8947var AgStackComponentsRegistry = /** @class */ (function (_super) {
8948 __extends(AgStackComponentsRegistry, _super);
8949 function AgStackComponentsRegistry() {
8950 var _this = _super !== null && _super.apply(this, arguments) || this;
8951 _this.componentsMappedByName = {};
8952 return _this;
8953 }
8954 AgStackComponentsRegistry.prototype.setupComponents = function (components) {
8955 var _this = this;
8956 if (components) {
8957 components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });
8958 }
8959 };
8960 AgStackComponentsRegistry.prototype.addComponent = function (componentMeta) {
8961 // get name of the class as a string
8962 // let className = getNameOfClass(ComponentClass);
8963 // insert a dash after every capital letter
8964 // let classEscaped = className.replace(/([A-Z])/g, "-$1").toLowerCase();
8965 var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
8966 // put all to upper case
8967 var classUpperCase = classEscaped.toUpperCase();
8968 // finally store
8969 this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;
8970 };
8971 AgStackComponentsRegistry.prototype.getComponentClass = function (htmlTag) {
8972 return this.componentsMappedByName[htmlTag];
8973 };
8974 AgStackComponentsRegistry = __decorate([
8975 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('agStackComponentsRegistry')
8976 ], AgStackComponentsRegistry);
8977 return AgStackComponentsRegistry;
8978}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
8979
8980
8981
8982
8983
8984/***/ }),
8985/* 33 */
8986/***/ (function(module, __webpack_exports__, __webpack_require__) {
8987
8988"use strict";
8989__webpack_require__.r(__webpack_exports__);
8990/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColDefUtil", function() { return ColDefUtil; });
8991/**
8992 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8993 * @version v27.3.0
8994 * @link https://www.ag-grid.com/
8995 * @license MIT
8996 */
8997var __read = (undefined && undefined.__read) || function (o, n) {
8998 var m = typeof Symbol === "function" && o[Symbol.iterator];
8999 if (!m) return o;
9000 var i = m.call(o), r, ar = [], e;
9001 try {
9002 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
9003 }
9004 catch (error) { e = { error: error }; }
9005 finally {
9006 try {
9007 if (r && !r.done && (m = i["return"])) m.call(i);
9008 }
9009 finally { if (e) throw e.error; }
9010 }
9011 return ar;
9012};
9013var __spread = (undefined && undefined.__spread) || function () {
9014 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
9015 return ar;
9016};
9017var ColDefUtil = /** @class */ (function () {
9018 function ColDefUtil() {
9019 }
9020 ColDefUtil.STRING_PROPERTIES = [
9021 'headerName',
9022 'columnGroupShow',
9023 'headerClass',
9024 'toolPanelClass',
9025 'headerValueGetter',
9026 'pivotKeys',
9027 'groupId',
9028 'colId',
9029 'sort',
9030 'initialSort',
9031 'field',
9032 'type',
9033 'tooltipComponent',
9034 'tooltipField',
9035 'headerTooltip',
9036 'cellClass',
9037 'showRowGroup',
9038 'filter',
9039 'initialAggFunc',
9040 'defaultAggFunc',
9041 'aggFunc',
9042 'pinned',
9043 'initialPinned',
9044 'chartDataType',
9045 'cellEditorPopupPosition'
9046 ];
9047 ColDefUtil.OBJECT_PROPERTIES = [
9048 'headerGroupComponent',
9049 'headerGroupComponentFramework',
9050 'headerGroupComponentParams',
9051 'cellStyle',
9052 'cellRenderer',
9053 'cellRendererParams',
9054 'cellRendererFramework',
9055 'cellEditor',
9056 'cellEditorFramework',
9057 'cellEditorParams',
9058 'pinnedRowCellRendererFramework',
9059 'pinnedRowCellRendererParams',
9060 'filterFramework',
9061 'filterParams',
9062 'pivotValueColumn',
9063 'headerComponent',
9064 'headerComponentFramework',
9065 'headerComponentParams',
9066 'floatingFilterComponent',
9067 'floatingFilterComponentParams',
9068 'floatingFilterComponentFramework',
9069 'floatingFilterFramework',
9070 'tooltipComponent',
9071 'tooltipComponentParams',
9072 'tooltipComponentFramework',
9073 'refData',
9074 'columnsMenuParams'
9075 ];
9076 ColDefUtil.ARRAY_PROPERTIES = [
9077 'children',
9078 'sortingOrder',
9079 'allowedAggFuncs',
9080 'menuTabs',
9081 'pivotTotalColumnIds',
9082 'cellClassRules',
9083 'icons'
9084 ];
9085 ColDefUtil.NUMBER_PROPERTIES = [
9086 'sortedAt',
9087 'sortIndex',
9088 'initialSortIndex',
9089 'flex',
9090 'initialFlex',
9091 'width',
9092 'initialWidth',
9093 'minWidth',
9094 'maxWidth',
9095 'rowGroupIndex',
9096 'initialRowGroupIndex',
9097 'pivotIndex',
9098 'initialPivotIndex'
9099 ];
9100 ColDefUtil.BOOLEAN_PROPERTIES = [
9101 'suppressCellFlash',
9102 'suppressColumnsToolPanel',
9103 'suppressFiltersToolPanel',
9104 'openByDefault',
9105 'marryChildren',
9106 'hide',
9107 'initialHide',
9108 'rowGroup',
9109 'initialRowGroup',
9110 'pivot',
9111 'initialPivot',
9112 'checkboxSelection',
9113 'headerCheckboxSelection',
9114 'headerCheckboxSelectionFilteredOnly',
9115 'suppressMenu',
9116 'suppressMovable',
9117 'lockPosition',
9118 'lockVisible',
9119 'lockPinned',
9120 'unSortIcon',
9121 'suppressSizeToFit',
9122 'suppressAutoSize',
9123 'enableRowGroup',
9124 'enablePivot',
9125 'enableValue',
9126 'editable',
9127 'suppressPaste',
9128 'suppressNavigable',
9129 'enableCellChangeFlash',
9130 'rowDrag',
9131 'dndSource',
9132 'autoHeight',
9133 'wrapText',
9134 'sortable',
9135 'resizable',
9136 'singleClickEdit',
9137 'floatingFilter',
9138 'cellEditorPopup',
9139 'suppressFillHandle'
9140 ];
9141 ColDefUtil.FUNCTION_PROPERTIES = [
9142 'dndSourceOnRowDrag',
9143 'valueGetter',
9144 'valueSetter',
9145 'filterValueGetter',
9146 'keyCreator',
9147 'pinnedRowCellRenderer',
9148 'valueFormatter',
9149 'pinnedRowValueFormatter',
9150 'valueParser',
9151 'comparator',
9152 'equals',
9153 'pivotComparator',
9154 'suppressKeyboardEvent',
9155 'suppressHeaderKeyboardEvent',
9156 'colSpan',
9157 'rowSpan',
9158 'getQuickFilterText',
9159 'newValueHandler',
9160 'onCellValueChanged',
9161 'onCellClicked',
9162 'onCellDoubleClicked',
9163 'onCellContextMenu',
9164 'rowDragText',
9165 'tooltipValueGetter',
9166 'tooltipComponent',
9167 'tooltipComponentFramework',
9168 'cellRendererSelector',
9169 'cellEditorSelector'
9170 ];
9171 ColDefUtil.ALL_PROPERTIES = __spread(ColDefUtil.ARRAY_PROPERTIES, ColDefUtil.OBJECT_PROPERTIES, ColDefUtil.STRING_PROPERTIES, ColDefUtil.NUMBER_PROPERTIES, ColDefUtil.FUNCTION_PROPERTIES, ColDefUtil.BOOLEAN_PROPERTIES);
9172 // used when doing property checks - this causes noise when using frameworks which can add their own fw specific
9173 // properties to colDefs, gridOptions etc
9174 ColDefUtil.FRAMEWORK_PROPERTIES = [
9175 '__ob__',
9176 '__v_skip',
9177 '__metadata__',
9178 'mappedColumnProperties',
9179 'hasChildColumns',
9180 'toColDef',
9181 'createColDefFromGridColumn'
9182 ];
9183 return ColDefUtil;
9184}());
9185
9186
9187
9188
9189
9190/***/ }),
9191/* 34 */
9192/***/ (function(module, __webpack_exports__, __webpack_require__) {
9193
9194"use strict";
9195__webpack_require__.r(__webpack_exports__);
9196/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UserComponentRegistry", function() { return UserComponentRegistry; });
9197/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
9198/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
9199/* harmony import */ var _filter_floating_provided_readOnlyFloatingFilter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(35);
9200/* harmony import */ var _filter_provided_date_dateFilter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(58);
9201/* harmony import */ var _filter_provided_date_dateFloatingFilter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(73);
9202/* harmony import */ var _filter_provided_date_defaultDateComponent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(75);
9203/* harmony import */ var _filter_provided_number_numberFilter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76);
9204/* harmony import */ var _filter_provided_number_numberFloatingFilter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(77);
9205/* harmony import */ var _filter_provided_text_textFilter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(79);
9206/* harmony import */ var _filter_provided_text_textFloatingFilter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(80);
9207/* harmony import */ var _headerRendering_cells_column_headerComp__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(81);
9208/* harmony import */ var _headerRendering_cells_columnGroup_headerGroupComp__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(83);
9209/* harmony import */ var _rendering_cellEditors_largeTextCellEditor__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(84);
9210/* harmony import */ var _rendering_cellEditors_popupSelectCellEditor__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(86);
9211/* harmony import */ var _rendering_cellEditors_popupTextCellEditor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(88);
9212/* harmony import */ var _rendering_cellEditors_selectCellEditor__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(87);
9213/* harmony import */ var _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(89);
9214/* harmony import */ var _rendering_cellRenderers_animateShowChangeCellRenderer__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(90);
9215/* harmony import */ var _rendering_cellRenderers_animateSlideCellRenderer__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(91);
9216/* harmony import */ var _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(92);
9217/* harmony import */ var _rendering_cellRenderers_loadingCellRenderer__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(98);
9218/* harmony import */ var _rendering_overlays_loadingOverlayComponent__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(99);
9219/* harmony import */ var _rendering_overlays_noRowsOverlayComponent__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(100);
9220/* harmony import */ var _rendering_tooltipComponent__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(101);
9221/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(14);
9222/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(13);
9223/**
9224 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9225 * @version v27.3.0
9226 * @link https://www.ag-grid.com/
9227 * @license MIT
9228 */
9229var __extends = (undefined && undefined.__extends) || (function () {
9230 var extendStatics = function (d, b) {
9231 extendStatics = Object.setPrototypeOf ||
9232 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
9233 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
9234 return extendStatics(d, b);
9235 };
9236 return function (d, b) {
9237 extendStatics(d, b);
9238 function __() { this.constructor = d; }
9239 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9240 };
9241})();
9242var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
9243 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9244 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9245 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;
9246 return c > 3 && r && Object.defineProperty(target, key, r), r;
9247};
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274var UserComponentRegistry = /** @class */ (function (_super) {
9275 __extends(UserComponentRegistry, _super);
9276 function UserComponentRegistry() {
9277 var _this = _super !== null && _super.apply(this, arguments) || this;
9278 _this.agGridDefaults = {
9279 //date
9280 agDateInput: _filter_provided_date_defaultDateComponent__WEBPACK_IMPORTED_MODULE_5__["DefaultDateComponent"],
9281 //header
9282 agColumnHeader: _headerRendering_cells_column_headerComp__WEBPACK_IMPORTED_MODULE_10__["HeaderComp"],
9283 agColumnGroupHeader: _headerRendering_cells_columnGroup_headerGroupComp__WEBPACK_IMPORTED_MODULE_11__["HeaderGroupComp"],
9284 //floating filters
9285 agTextColumnFloatingFilter: _filter_provided_text_textFloatingFilter__WEBPACK_IMPORTED_MODULE_9__["TextFloatingFilter"],
9286 agNumberColumnFloatingFilter: _filter_provided_number_numberFloatingFilter__WEBPACK_IMPORTED_MODULE_7__["NumberFloatingFilter"],
9287 agDateColumnFloatingFilter: _filter_provided_date_dateFloatingFilter__WEBPACK_IMPORTED_MODULE_4__["DateFloatingFilter"],
9288 agReadOnlyFloatingFilter: _filter_floating_provided_readOnlyFloatingFilter__WEBPACK_IMPORTED_MODULE_2__["ReadOnlyFloatingFilter"],
9289 // renderers
9290 agAnimateShowChangeCellRenderer: _rendering_cellRenderers_animateShowChangeCellRenderer__WEBPACK_IMPORTED_MODULE_17__["AnimateShowChangeCellRenderer"],
9291 agAnimateSlideCellRenderer: _rendering_cellRenderers_animateSlideCellRenderer__WEBPACK_IMPORTED_MODULE_18__["AnimateSlideCellRenderer"],
9292 agGroupCellRenderer: _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_19__["GroupCellRenderer"],
9293 agGroupRowRenderer: _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_19__["GroupCellRenderer"],
9294 agLoadingCellRenderer: _rendering_cellRenderers_loadingCellRenderer__WEBPACK_IMPORTED_MODULE_20__["LoadingCellRenderer"],
9295 //editors
9296 agCellEditor: _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_16__["TextCellEditor"],
9297 agTextCellEditor: _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_16__["TextCellEditor"],
9298 agSelectCellEditor: _rendering_cellEditors_selectCellEditor__WEBPACK_IMPORTED_MODULE_15__["SelectCellEditor"],
9299 agPopupTextCellEditor: _rendering_cellEditors_popupTextCellEditor__WEBPACK_IMPORTED_MODULE_14__["PopupTextCellEditor"],
9300 agPopupSelectCellEditor: _rendering_cellEditors_popupSelectCellEditor__WEBPACK_IMPORTED_MODULE_13__["PopupSelectCellEditor"],
9301 agLargeTextCellEditor: _rendering_cellEditors_largeTextCellEditor__WEBPACK_IMPORTED_MODULE_12__["LargeTextCellEditor"],
9302 //filter
9303 agTextColumnFilter: _filter_provided_text_textFilter__WEBPACK_IMPORTED_MODULE_8__["TextFilter"],
9304 agNumberColumnFilter: _filter_provided_number_numberFilter__WEBPACK_IMPORTED_MODULE_6__["NumberFilter"],
9305 agDateColumnFilter: _filter_provided_date_dateFilter__WEBPACK_IMPORTED_MODULE_3__["DateFilter"],
9306 //overlays
9307 agLoadingOverlay: _rendering_overlays_loadingOverlayComponent__WEBPACK_IMPORTED_MODULE_21__["LoadingOverlayComponent"],
9308 agNoRowsOverlay: _rendering_overlays_noRowsOverlayComponent__WEBPACK_IMPORTED_MODULE_22__["NoRowsOverlayComponent"],
9309 // tooltips
9310 agTooltipComponent: _rendering_tooltipComponent__WEBPACK_IMPORTED_MODULE_23__["TooltipComponent"]
9311 };
9312 _this.agDeprecatedNames = {
9313 set: {
9314 newComponentName: 'agSetColumnFilter',
9315 propertyHolder: 'filter'
9316 },
9317 text: {
9318 newComponentName: 'agTextColumnFilter',
9319 propertyHolder: 'filter'
9320 },
9321 number: {
9322 newComponentName: 'agNumberColumnFilter',
9323 propertyHolder: 'filter'
9324 },
9325 date: {
9326 newComponentName: 'agDateColumnFilter',
9327 propertyHolder: 'filter'
9328 },
9329 group: {
9330 newComponentName: 'agGroupCellRenderer',
9331 propertyHolder: 'cellRenderer'
9332 },
9333 animateShowChange: {
9334 newComponentName: 'agAnimateShowChangeCellRenderer',
9335 propertyHolder: 'cellRenderer'
9336 },
9337 animateSlide: {
9338 newComponentName: 'agAnimateSlideCellRenderer',
9339 propertyHolder: 'cellRenderer'
9340 },
9341 select: {
9342 newComponentName: 'agSelectCellEditor',
9343 propertyHolder: 'cellEditor'
9344 },
9345 largeText: {
9346 newComponentName: 'agLargeTextCellEditor',
9347 propertyHolder: 'cellEditor'
9348 },
9349 popupSelect: {
9350 newComponentName: 'agPopupSelectCellEditor',
9351 propertyHolder: 'cellEditor'
9352 },
9353 popupText: {
9354 newComponentName: 'agPopupTextCellEditor',
9355 propertyHolder: 'cellEditor'
9356 },
9357 richSelect: {
9358 newComponentName: 'agRichSelectCellEditor',
9359 propertyHolder: 'cellEditor'
9360 },
9361 headerComponent: {
9362 newComponentName: 'agColumnHeader',
9363 propertyHolder: 'headerComponent'
9364 }
9365 };
9366 _this.jsComps = {};
9367 _this.fwComps = {};
9368 return _this;
9369 }
9370 UserComponentRegistry.prototype.init = function () {
9371 var _this = this;
9372 if (this.gridOptions.components != null) {
9373 Object(_utils_object__WEBPACK_IMPORTED_MODULE_25__["iterateObject"])(this.gridOptions.components, function (key, component) { return _this.registerJsComponent(key, component); });
9374 }
9375 if (this.gridOptions.frameworkComponents != null) {
9376 Object(_utils_object__WEBPACK_IMPORTED_MODULE_25__["iterateObject"])(this.gridOptions.frameworkComponents, function (key, component) { return _this.registerFwComponent(key, component); });
9377 }
9378 };
9379 UserComponentRegistry.prototype.registerDefaultComponent = function (rawName, component) {
9380 var name = this.translateIfDeprecated(rawName);
9381 if (this.agGridDefaults[name]) {
9382 console.error("Trying to overwrite a default component. You should call registerComponent");
9383 return;
9384 }
9385 this.agGridDefaults[name] = component;
9386 };
9387 UserComponentRegistry.prototype.registerJsComponent = function (rawName, component) {
9388 var name = this.translateIfDeprecated(rawName);
9389 if (this.fwComps[name]) {
9390 console.error("Trying to register a component that you have already registered for frameworks: " + name);
9391 return;
9392 }
9393 this.jsComps[name] = component;
9394 };
9395 /**
9396 * B the business interface (ie IHeader)
9397 * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid
9398 */
9399 UserComponentRegistry.prototype.registerFwComponent = function (rawName, component) {
9400 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.";
9401 Object(_utils_function__WEBPACK_IMPORTED_MODULE_24__["doOnce"])(function () { return console.warn(warningMessage); }, "UserComponentRegistry.frameworkComponentsDeprecated");
9402 var name = this.translateIfDeprecated(rawName);
9403 this.fwComps[name] = component;
9404 };
9405 UserComponentRegistry.prototype.retrieve = function (rawName) {
9406 var name = this.translateIfDeprecated(rawName);
9407 var createResult = function (component, componentFromFramework) { return ({ componentFromFramework: componentFromFramework, component: component }); };
9408 // FrameworkOverrides.frameworkComponent() is used in two locations:
9409 // 1) for Vue, user provided components get registered via a framework specific way.
9410 // 2) for React, it's how the React UI provides alternative default components (eg GroupCellRenderer and DetailCellRenderer)
9411 var registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(name);
9412 if (registeredViaFrameworkComp != null) {
9413 return createResult(registeredViaFrameworkComp, true);
9414 }
9415 var frameworkComponent = this.fwComps[name];
9416 if (frameworkComponent) {
9417 return createResult(frameworkComponent, true);
9418 }
9419 var jsComponent = this.jsComps[name];
9420 if (jsComponent) {
9421 var isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);
9422 return createResult(jsComponent, isFwkComp);
9423 }
9424 var defaultComponent = this.agGridDefaults[name];
9425 if (defaultComponent) {
9426 return createResult(defaultComponent, false);
9427 }
9428 if (Object.keys(this.agGridDefaults).indexOf(name) < 0) {
9429 console.warn("AG Grid: Looking for component [" + name + "] but it wasn't found.");
9430 }
9431 return null;
9432 };
9433 UserComponentRegistry.prototype.translateIfDeprecated = function (raw) {
9434 var deprecatedInfo = this.agDeprecatedNames[raw];
9435 if (deprecatedInfo != null) {
9436 Object(_utils_function__WEBPACK_IMPORTED_MODULE_24__["doOnce"])(function () {
9437 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);
9438 }, 'DEPRECATE_COMPONENT_' + raw);
9439 return deprecatedInfo.newComponentName;
9440 }
9441 return raw;
9442 };
9443 __decorate([
9444 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptions')
9445 ], UserComponentRegistry.prototype, "gridOptions", void 0);
9446 __decorate([
9447 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('agComponentUtils')
9448 ], UserComponentRegistry.prototype, "agComponentUtils", void 0);
9449 __decorate([
9450 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
9451 ], UserComponentRegistry.prototype, "init", null);
9452 UserComponentRegistry = __decorate([
9453 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('userComponentRegistry')
9454 ], UserComponentRegistry);
9455 return UserComponentRegistry;
9456}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
9457
9458
9459
9460
9461
9462/***/ }),
9463/* 35 */
9464/***/ (function(module, __webpack_exports__, __webpack_require__) {
9465
9466"use strict";
9467__webpack_require__.r(__webpack_exports__);
9468/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReadOnlyFloatingFilter", function() { return ReadOnlyFloatingFilter; });
9469/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
9470/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
9471/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
9472/**
9473 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9474 * @version v27.3.0
9475 * @link https://www.ag-grid.com/
9476 * @license MIT
9477 */
9478var __extends = (undefined && undefined.__extends) || (function () {
9479 var extendStatics = function (d, b) {
9480 extendStatics = Object.setPrototypeOf ||
9481 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
9482 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
9483 return extendStatics(d, b);
9484 };
9485 return function (d, b) {
9486 extendStatics(d, b);
9487 function __() { this.constructor = d; }
9488 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9489 };
9490})();
9491var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
9492 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9493 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9494 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;
9495 return c > 3 && r && Object.defineProperty(target, key, r), r;
9496};
9497
9498
9499
9500// optional floating filter for user provided filters - instead of providing a floating filter,
9501// they can provide a getModelAsString() method on the filter instead. this class just displays
9502// the string returned from getModelAsString()
9503var ReadOnlyFloatingFilter = /** @class */ (function (_super) {
9504 __extends(ReadOnlyFloatingFilter, _super);
9505 function ReadOnlyFloatingFilter() {
9506 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;
9507 }
9508 // this is a user component, and IComponent has "public destroy()" as part of the interface.
9509 // so we need to override destroy() just to make the method public.
9510 ReadOnlyFloatingFilter.prototype.destroy = function () {
9511 _super.prototype.destroy.call(this);
9512 };
9513 ReadOnlyFloatingFilter.prototype.init = function (params) {
9514 this.params = params;
9515 var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);
9516 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
9517 this.eFloatingFilterText
9518 .setDisabled(true)
9519 .setInputAriaLabel(displayName + " " + translate('ariaFilterInput', 'Filter Input'));
9520 };
9521 ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {
9522 var _this = this;
9523 if (!parentModel) {
9524 this.eFloatingFilterText.setValue('');
9525 return;
9526 }
9527 this.params.parentFilterInstance(function (filterInstance) {
9528 // it would be nice to check if getModelAsString was present before creating this component,
9529 // however that is not possible, as React Hooks and VueJS don't attached the methods to the Filter until
9530 // AFTER the filter is created, not allowing inspection before this (we create floating filters as columns
9531 // are drawn, but the parent filters are only created when needed).
9532 if (filterInstance.getModelAsString) {
9533 var modelAsString = filterInstance.getModelAsString(parentModel);
9534 _this.eFloatingFilterText.setValue(modelAsString);
9535 }
9536 });
9537 };
9538 __decorate([
9539 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eFloatingFilterText')
9540 ], ReadOnlyFloatingFilter.prototype, "eFloatingFilterText", void 0);
9541 __decorate([
9542 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
9543 ], ReadOnlyFloatingFilter.prototype, "columnModel", void 0);
9544 return ReadOnlyFloatingFilter;
9545}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
9546
9547
9548
9549
9550
9551/***/ }),
9552/* 36 */
9553/***/ (function(module, __webpack_exports__, __webpack_require__) {
9554
9555"use strict";
9556__webpack_require__.r(__webpack_exports__);
9557/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CssClassManager", function() { return CssClassManager; });
9558/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return Component; });
9559/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
9560/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
9561/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37);
9562/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
9563/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
9564/* harmony import */ var _customTooltipFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(56);
9565/**
9566 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9567 * @version v27.3.0
9568 * @link https://www.ag-grid.com/
9569 * @license MIT
9570 */
9571var __extends = (undefined && undefined.__extends) || (function () {
9572 var extendStatics = function (d, b) {
9573 extendStatics = Object.setPrototypeOf ||
9574 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
9575 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
9576 return extendStatics(d, b);
9577 };
9578 return function (d, b) {
9579 extendStatics(d, b);
9580 function __() { this.constructor = d; }
9581 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9582 };
9583})();
9584var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
9585 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9586 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9587 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;
9588 return c > 3 && r && Object.defineProperty(target, key, r), r;
9589};
9590
9591
9592
9593
9594
9595
9596var compIdSequence = new _utils__WEBPACK_IMPORTED_MODULE_2__["NumberSequence"]();
9597var CssClassManager = /** @class */ (function () {
9598 function CssClassManager(getGui) {
9599 // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already
9600 // there, or removing one that wasn't present, all takes CPU.
9601 this.cssClassStates = {};
9602 this.getGui = getGui;
9603 }
9604 CssClassManager.prototype.addCssClass = function (className) {
9605 var _this = this;
9606 var list = (className || '').split(' ');
9607 if (list.length > 1) {
9608 list.forEach(function (cls) { return _this.addCssClass(cls); });
9609 return;
9610 }
9611 var updateNeeded = this.cssClassStates[className] !== true;
9612 if (updateNeeded && className.length) {
9613 this.getGui().classList.add(className);
9614 this.cssClassStates[className] = true;
9615 }
9616 };
9617 CssClassManager.prototype.removeCssClass = function (className) {
9618 var _this = this;
9619 var list = (className || '').split(' ');
9620 if (list.length > 1) {
9621 list.forEach(function (cls) { return _this.removeCssClass(cls); });
9622 return;
9623 }
9624 var updateNeeded = this.cssClassStates[className] !== false;
9625 if (updateNeeded && className.length) {
9626 this.getGui().classList.remove(className);
9627 this.cssClassStates[className] = false;
9628 }
9629 };
9630 CssClassManager.prototype.containsCssClass = function (className) {
9631 return this.getGui().classList.contains(className);
9632 };
9633 CssClassManager.prototype.addOrRemoveCssClass = function (className, addOrRemove) {
9634 var _this = this;
9635 var list = (className || '').split(' ');
9636 if (list.length > 1) {
9637 list.forEach(function (cls) { return _this.addOrRemoveCssClass(cls, addOrRemove); });
9638 return;
9639 }
9640 var updateNeeded = this.cssClassStates[className] !== addOrRemove;
9641 if (updateNeeded && className.length) {
9642 this.getGui().classList.toggle(className, addOrRemove);
9643 this.cssClassStates[className] = addOrRemove;
9644 }
9645 };
9646 return CssClassManager;
9647}());
9648
9649var Component = /** @class */ (function (_super) {
9650 __extends(Component, _super);
9651 function Component(template) {
9652 var _this = _super.call(this) || this;
9653 // if false, then CSS class "ag-hidden" is applied, which sets "display: none"
9654 _this.displayed = true;
9655 // if false, then CSS class "ag-invisible" is applied, which sets "visibility: hidden"
9656 _this.visible = true;
9657 // unique id for this row component. this is used for getting a reference to the HTML dom.
9658 // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying
9659 // around as we create a new rowComp instance for the same row node).
9660 _this.compId = compIdSequence.next();
9661 _this.cssClassManager = new CssClassManager(function () { return _this.eGui; });
9662 if (template) {
9663 _this.setTemplate(template);
9664 }
9665 return _this;
9666 }
9667 Component.prototype.preConstructOnComponent = function () {
9668 this.usingBrowserTooltips = this.gridOptionsWrapper.isEnableBrowserTooltips();
9669 };
9670 Component.prototype.getCompId = function () {
9671 return this.compId;
9672 };
9673 Component.prototype.getTooltipParams = function () {
9674 return {
9675 value: this.tooltipText,
9676 location: 'UNKNOWN'
9677 };
9678 };
9679 Component.prototype.setTooltip = function (newTooltipText) {
9680 var _this = this;
9681 var removeTooltip = function () {
9682 if (_this.usingBrowserTooltips) {
9683 _this.getGui().removeAttribute('title');
9684 }
9685 else {
9686 _this.tooltipFeature = _this.destroyBean(_this.tooltipFeature);
9687 }
9688 };
9689 var addTooltip = function () {
9690 if (_this.usingBrowserTooltips) {
9691 _this.getGui().setAttribute('title', _this.tooltipText);
9692 }
9693 else {
9694 _this.tooltipFeature = _this.createBean(new _customTooltipFeature__WEBPACK_IMPORTED_MODULE_5__["CustomTooltipFeature"](_this));
9695 }
9696 };
9697 if (this.tooltipText != newTooltipText) {
9698 if (this.tooltipText) {
9699 removeTooltip();
9700 }
9701 if (newTooltipText != null) {
9702 this.tooltipText = newTooltipText;
9703 if (this.tooltipText) {
9704 addTooltip();
9705 }
9706 }
9707 }
9708 };
9709 // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag
9710 Component.prototype.createChildComponentsFromTags = function (parentNode, paramsMap) {
9711 var _this = this;
9712 // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM
9713 // which messes up the traversal order of the children.
9714 var childNodeList = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["copyNodeList"])(parentNode.childNodes);
9715 childNodeList.forEach(function (childNode) {
9716 if (!(childNode instanceof HTMLElement)) {
9717 return;
9718 }
9719 var childComp = _this.createComponentFromElement(childNode, function (childComp) {
9720 // copy over all attributes, including css classes, so any attributes user put on the tag
9721 // wll be carried across
9722 var childGui = childComp.getGui();
9723 if (childGui) {
9724 _this.copyAttributesFromNode(childNode, childComp.getGui());
9725 }
9726 }, paramsMap);
9727 if (childComp) {
9728 if (childComp.addItems && childNode.children.length) {
9729 _this.createChildComponentsFromTags(childNode, paramsMap);
9730 // converting from HTMLCollection to Array
9731 var items = Array.prototype.slice.call(childNode.children);
9732 childComp.addItems(items);
9733 }
9734 // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom
9735 _this.swapComponentForNode(childComp, parentNode, childNode);
9736 }
9737 else if (childNode.childNodes) {
9738 _this.createChildComponentsFromTags(childNode, paramsMap);
9739 }
9740 });
9741 };
9742 Component.prototype.createComponentFromElement = function (element, afterPreCreateCallback, paramsMap) {
9743 var key = element.nodeName;
9744 var componentParams = paramsMap ? paramsMap[element.getAttribute('ref')] : undefined;
9745 var ComponentClass = this.agStackComponentsRegistry.getComponentClass(key);
9746 if (ComponentClass) {
9747 Component.elementGettingCreated = element;
9748 var newComponent = new ComponentClass(componentParams);
9749 newComponent.setParentComponent(this);
9750 this.createBean(newComponent, null, afterPreCreateCallback);
9751 return newComponent;
9752 }
9753 return null;
9754 };
9755 Component.prototype.copyAttributesFromNode = function (source, dest) {
9756 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["iterateNamedNodeMap"])(source.attributes, function (name, value) { return dest.setAttribute(name, value); });
9757 };
9758 Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {
9759 var eComponent = newComponent.getGui();
9760 parentNode.replaceChild(eComponent, childNode);
9761 parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);
9762 this.addDestroyFunc(this.destroyBean.bind(this, newComponent));
9763 this.swapInComponentForQuerySelectors(newComponent, childNode);
9764 };
9765 Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {
9766 var thisNoType = this;
9767 this.iterateOverQuerySelectors(function (querySelector) {
9768 if (thisNoType[querySelector.attributeName] === childNode) {
9769 thisNoType[querySelector.attributeName] = newComponent;
9770 }
9771 });
9772 };
9773 Component.prototype.iterateOverQuerySelectors = function (action) {
9774 var thisPrototype = Object.getPrototypeOf(this);
9775 while (thisPrototype != null) {
9776 var metaData = thisPrototype.__agComponentMetaData;
9777 var currentProtoName = Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["getFunctionName"])(thisPrototype.constructor);
9778 if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {
9779 metaData[currentProtoName].querySelectors.forEach(function (querySelector) { return action(querySelector); });
9780 }
9781 thisPrototype = Object.getPrototypeOf(thisPrototype);
9782 }
9783 };
9784 Component.prototype.setTemplate = function (template, paramsMap) {
9785 var eGui = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["loadTemplate"])(template);
9786 this.setTemplateFromElement(eGui, paramsMap);
9787 };
9788 Component.prototype.setTemplateFromElement = function (element, paramsMap) {
9789 this.eGui = element;
9790 this.eGui.__agComponent = this;
9791 this.wireQuerySelectors();
9792 // context will not be available when user sets template in constructor
9793 if (!!this.getContext()) {
9794 this.createChildComponentsFromTags(this.getGui(), paramsMap);
9795 }
9796 };
9797 Component.prototype.createChildComponentsPreConstruct = function () {
9798 // ui exists if user sets template in constructor. when this happens, we have to wait for the context
9799 // to be autoWired first before we can create child components.
9800 if (!!this.getGui()) {
9801 this.createChildComponentsFromTags(this.getGui());
9802 }
9803 };
9804 Component.prototype.wireQuerySelectors = function () {
9805 var _this = this;
9806 if (!this.eGui) {
9807 return;
9808 }
9809 var thisNoType = this;
9810 this.iterateOverQuerySelectors(function (querySelector) {
9811 var setResult = function (result) { return thisNoType[querySelector.attributeName] = result; };
9812 // if it's a ref selector, and match is on top level component, we return
9813 // the element. otherwise no way of components putting ref=xxx on the top
9814 // level element as querySelector only looks at children.
9815 var topLevelRefMatch = querySelector.refSelector
9816 && _this.eGui.getAttribute('ref') === querySelector.refSelector;
9817 if (topLevelRefMatch) {
9818 setResult(_this.eGui);
9819 }
9820 else {
9821 // otherwise use querySelector, which looks at children
9822 var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);
9823 if (resultOfQuery) {
9824 setResult(resultOfQuery.__agComponent || resultOfQuery);
9825 }
9826 }
9827 });
9828 };
9829 Component.prototype.getGui = function () {
9830 return this.eGui;
9831 };
9832 Component.prototype.getFocusableElement = function () {
9833 return this.eGui;
9834 };
9835 Component.prototype.setParentComponent = function (component) {
9836 this.parentComponent = component;
9837 };
9838 Component.prototype.getParentComponent = function () {
9839 return this.parentComponent;
9840 };
9841 // this method is for older code, that wants to provide the gui element,
9842 // it is not intended for this to be in ag-Stack
9843 Component.prototype.setGui = function (eGui) {
9844 this.eGui = eGui;
9845 };
9846 Component.prototype.queryForHtmlElement = function (cssSelector) {
9847 return this.eGui.querySelector(cssSelector);
9848 };
9849 Component.prototype.queryForHtmlInputElement = function (cssSelector) {
9850 return this.eGui.querySelector(cssSelector);
9851 };
9852 Component.prototype.appendChild = function (newChild, container) {
9853 if (!container) {
9854 container = this.eGui;
9855 }
9856 if (newChild == null) {
9857 return;
9858 }
9859 if (Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["isNodeOrElement"])(newChild)) {
9860 container.appendChild(newChild);
9861 }
9862 else {
9863 var childComponent = newChild;
9864 container.appendChild(childComponent.getGui());
9865 this.addDestroyFunc(this.destroyBean.bind(this, childComponent));
9866 }
9867 };
9868 Component.prototype.isDisplayed = function () {
9869 return this.displayed;
9870 };
9871 Component.prototype.setVisible = function (visible) {
9872 if (visible !== this.visible) {
9873 this.visible = visible;
9874 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setVisible"])(this.eGui, visible);
9875 }
9876 };
9877 Component.prototype.setDisplayed = function (displayed) {
9878 if (displayed !== this.displayed) {
9879 this.displayed = displayed;
9880 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(this.eGui, displayed);
9881 var event_1 = {
9882 type: Component.EVENT_DISPLAYED_CHANGED,
9883 visible: this.displayed
9884 };
9885 this.dispatchEvent(event_1);
9886 }
9887 };
9888 Component.prototype.destroy = function () {
9889 if (this.tooltipFeature) {
9890 this.tooltipFeature = this.destroyBean(this.tooltipFeature);
9891 }
9892 _super.prototype.destroy.call(this);
9893 };
9894 Component.prototype.addGuiEventListener = function (event, listener) {
9895 var _this = this;
9896 this.eGui.addEventListener(event, listener);
9897 this.addDestroyFunc(function () { return _this.eGui.removeEventListener(event, listener); });
9898 };
9899 Component.prototype.addCssClass = function (className) {
9900 this.cssClassManager.addCssClass(className);
9901 };
9902 Component.prototype.removeCssClass = function (className) {
9903 this.cssClassManager.removeCssClass(className);
9904 };
9905 Component.prototype.containsCssClass = function (className) {
9906 return this.cssClassManager.containsCssClass(className);
9907 };
9908 Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {
9909 this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);
9910 };
9911 Component.prototype.getAttribute = function (key) {
9912 var eGui = this.eGui;
9913 return eGui ? eGui.getAttribute(key) : null;
9914 };
9915 Component.prototype.getRefElement = function (refName) {
9916 return this.queryForHtmlElement("[ref=\"" + refName + "\"]");
9917 };
9918 Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';
9919 __decorate([
9920 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('agStackComponentsRegistry')
9921 ], Component.prototype, "agStackComponentsRegistry", void 0);
9922 __decorate([
9923 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreConstruct"]
9924 ], Component.prototype, "preConstructOnComponent", null);
9925 __decorate([
9926 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreConstruct"]
9927 ], Component.prototype, "createChildComponentsPreConstruct", null);
9928 return Component;
9929}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
9930
9931
9932
9933
9934
9935/***/ }),
9936/* 37 */
9937/***/ (function(module, __webpack_exports__, __webpack_require__) {
9938
9939"use strict";
9940__webpack_require__.r(__webpack_exports__);
9941/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38);
9942/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return _color__WEBPACK_IMPORTED_MODULE_0__["Color"]; });
9943
9944/* harmony import */ var _csv__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39);
9945/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stringToArray", function() { return _csv__WEBPACK_IMPORTED_MODULE_1__["stringToArray"]; });
9946
9947/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(40);
9948/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_", function() { return _utils__WEBPACK_IMPORTED_MODULE_2__["_"]; });
9949
9950/* harmony import */ var _numberSequence__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53);
9951/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberSequence", function() { return _numberSequence__WEBPACK_IMPORTED_MODULE_3__["NumberSequence"]; });
9952
9953/* harmony import */ var _promise__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(54);
9954/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromiseStatus", function() { return _promise__WEBPACK_IMPORTED_MODULE_4__["AgPromiseStatus"]; });
9955
9956/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromise", function() { return _promise__WEBPACK_IMPORTED_MODULE_4__["AgPromise"]; });
9957
9958/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55);
9959/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _timer__WEBPACK_IMPORTED_MODULE_5__["Timer"]; });
9960
9961/**
9962 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9963 * @version v27.3.0
9964 * @link https://www.ag-grid.com/
9965 * @license MIT
9966 */
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977/***/ }),
9978/* 38 */
9979/***/ (function(module, __webpack_exports__, __webpack_require__) {
9980
9981"use strict";
9982__webpack_require__.r(__webpack_exports__);
9983/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return Color; });
9984/**
9985 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9986 * @version v27.3.0
9987 * @link https://www.ag-grid.com/
9988 * @license MIT
9989 */
9990var __read = (undefined && undefined.__read) || function (o, n) {
9991 var m = typeof Symbol === "function" && o[Symbol.iterator];
9992 if (!m) return o;
9993 var i = m.call(o), r, ar = [], e;
9994 try {
9995 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
9996 }
9997 catch (error) { e = { error: error }; }
9998 finally {
9999 try {
10000 if (r && !r.done && (m = i["return"])) m.call(i);
10001 }
10002 finally { if (e) throw e.error; }
10003 }
10004 return ar;
10005};
10006var Color = /** @class */ (function () {
10007 /**
10008 * Every color component should be in the [0, 1] range.
10009 * Some easing functions (such as elastic easing) can overshoot the target value by some amount.
10010 * So, when animating colors, if the source or target color components are already near
10011 * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color
10012 * component value to end up outside of that range mid-animation. For this reason the constructor
10013 * performs range checking/constraining.
10014 * @param r Red component.
10015 * @param g Green component.
10016 * @param b Blue component.
10017 * @param a Alpha (opacity) component.
10018 */
10019 function Color(r, g, b, a) {
10020 if (a === void 0) { a = 1; }
10021 // NaN is treated as 0.
10022 this.r = Math.min(1, Math.max(0, r || 0));
10023 this.g = Math.min(1, Math.max(0, g || 0));
10024 this.b = Math.min(1, Math.max(0, b || 0));
10025 this.a = Math.min(1, Math.max(0, a || 0));
10026 }
10027 /**
10028 * The given string can be in one of the following formats:
10029 * - #rgb
10030 * - #rrggbb
10031 * - rgb(r, g, b)
10032 * - rgba(r, g, b, a)
10033 * - CSS color name such as 'white', 'orange', 'cyan', etc.
10034 * @param str
10035 */
10036 Color.fromString = function (str) {
10037 // hexadecimal notation
10038 if (str.indexOf('#') >= 0) { // there can be some leading whitespace
10039 return Color.fromHexString(str);
10040 }
10041 // color name
10042 var hex = Color.nameToHex[str];
10043 if (hex) {
10044 return Color.fromHexString(hex);
10045 }
10046 // rgb(a) notation
10047 if (str.indexOf('rgb') >= 0) {
10048 return Color.fromRgbaString(str);
10049 }
10050 throw new Error("Invalid color string: '" + str + "'");
10051 };
10052 // See https://drafts.csswg.org/css-color/#hex-notation
10053 Color.parseHex = function (input) {
10054 input = input.replace(/ /g, '').slice(1);
10055 var parts;
10056 switch (input.length) {
10057 case 6:
10058 case 8:
10059 parts = [];
10060 for (var i = 0; i < input.length; i += 2) {
10061 parts.push(parseInt("" + input[i] + input[i + 1], 16));
10062 }
10063 break;
10064 case 3:
10065 case 4:
10066 parts = input.split('').map(function (p) { return parseInt(p, 16); }).map(function (p) { return p + p * 16; });
10067 break;
10068 }
10069 if (parts.length >= 3) {
10070 if (parts.every(function (p) { return p >= 0; })) {
10071 if (parts.length === 3) {
10072 parts.push(255);
10073 }
10074 return parts;
10075 }
10076 }
10077 };
10078 Color.fromHexString = function (str) {
10079 var values = Color.parseHex(str);
10080 if (values) {
10081 var _a = __read(values, 4), r = _a[0], g = _a[1], b = _a[2], a = _a[3];
10082 return new Color(r / 255, g / 255, b / 255, a / 255);
10083 }
10084 throw new Error("Malformed hexadecimal color string: '" + str + "'");
10085 };
10086 Color.stringToRgba = function (str) {
10087 // Find positions of opening and closing parentheses.
10088 var _a = __read([NaN, NaN], 2), po = _a[0], pc = _a[1];
10089 for (var i = 0; i < str.length; i++) {
10090 var c = str[i];
10091 if (!po && c === '(') {
10092 po = i;
10093 }
10094 else if (c === ')') {
10095 pc = i;
10096 break;
10097 }
10098 }
10099 var contents = po && pc && str.substring(po + 1, pc);
10100 if (!contents) {
10101 return;
10102 }
10103 var parts = contents.split(',');
10104 var rgba = [];
10105 for (var i = 0; i < parts.length; i++) {
10106 var part = parts[i];
10107 var value = parseFloat(part);
10108 if (isNaN(value)) {
10109 return;
10110 }
10111 if (part.indexOf('%') >= 0) { // percentage r, g, or b value
10112 value = Math.max(0, Math.min(100, value));
10113 value /= 100;
10114 }
10115 else {
10116 if (i === 3) { // alpha component
10117 value = Math.max(0, Math.min(1, value));
10118 }
10119 else { // absolute r, g, or b value
10120 value = Math.max(0, Math.min(255, value));
10121 value /= 255;
10122 }
10123 }
10124 rgba.push(value);
10125 }
10126 return rgba;
10127 };
10128 Color.fromRgbaString = function (str) {
10129 var rgba = Color.stringToRgba(str);
10130 if (rgba) {
10131 if (rgba.length === 3) {
10132 return new Color(rgba[0], rgba[1], rgba[2]);
10133 }
10134 else if (rgba.length === 4) {
10135 return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);
10136 }
10137 }
10138 throw new Error("Malformed rgb/rgba color string: '" + str + "'");
10139 };
10140 Color.fromArray = function (arr) {
10141 if (arr.length === 4) {
10142 return new Color(arr[0], arr[1], arr[2], arr[3]);
10143 }
10144 if (arr.length === 3) {
10145 return new Color(arr[0], arr[1], arr[2]);
10146 }
10147 throw new Error('The given array should contain 3 or 4 color components (numbers).');
10148 };
10149 Color.fromHSB = function (h, s, b, alpha) {
10150 if (alpha === void 0) { alpha = 1; }
10151 var rgb = Color.HSBtoRGB(h, s, b);
10152 return new Color(rgb[0], rgb[1], rgb[2], alpha);
10153 };
10154 Color.padHex = function (str) {
10155 // Can't use `padStart(2, '0')` here because of IE.
10156 return str.length === 1 ? '0' + str : str;
10157 };
10158 Color.prototype.toHexString = function () {
10159 var hex = '#'
10160 + Color.padHex(Math.round(this.r * 255).toString(16))
10161 + Color.padHex(Math.round(this.g * 255).toString(16))
10162 + Color.padHex(Math.round(this.b * 255).toString(16));
10163 if (this.a < 1) {
10164 hex += Color.padHex(Math.round(this.a * 255).toString(16));
10165 }
10166 return hex;
10167 };
10168 Color.prototype.toRgbaString = function (fractionDigits) {
10169 if (fractionDigits === void 0) { fractionDigits = 3; }
10170 var components = [
10171 Math.round(this.r * 255),
10172 Math.round(this.g * 255),
10173 Math.round(this.b * 255)
10174 ];
10175 var k = Math.pow(10, fractionDigits);
10176 if (this.a !== 1) {
10177 components.push(Math.round(this.a * k) / k);
10178 return "rgba(" + components.join(', ') + ")";
10179 }
10180 return "rgb(" + components.join(', ') + ")";
10181 };
10182 Color.prototype.toString = function () {
10183 if (this.a === 1) {
10184 return this.toHexString();
10185 }
10186 return this.toRgbaString();
10187 };
10188 Color.prototype.toHSB = function () {
10189 return Color.RGBtoHSB(this.r, this.g, this.b);
10190 };
10191 /**
10192 * Converts the given RGB triple to an array of HSB (HSV) components.
10193 * The hue component will be `NaN` for achromatic colors.
10194 */
10195 Color.RGBtoHSB = function (r, g, b) {
10196 var min = Math.min(r, g, b);
10197 var max = Math.max(r, g, b);
10198 var S = max !== 0 ? (max - min) / max : 0;
10199 var H = NaN;
10200 // min == max, means all components are the same
10201 // and the color is a shade of gray with no hue (H is NaN)
10202 if (min !== max) {
10203 var delta = max - min;
10204 var rc = (max - r) / delta;
10205 var gc = (max - g) / delta;
10206 var bc = (max - b) / delta;
10207 if (r === max) {
10208 H = bc - gc;
10209 }
10210 else if (g === max) {
10211 H = 2.0 + rc - bc;
10212 }
10213 else {
10214 H = 4.0 + gc - rc;
10215 }
10216 H /= 6.0;
10217 if (H < 0) {
10218 H = H + 1.0;
10219 }
10220 }
10221 return [H * 360, S, max];
10222 };
10223 /**
10224 * Converts the given HSB (HSV) triple to an array of RGB components.
10225 */
10226 Color.HSBtoRGB = function (H, S, B) {
10227 if (isNaN(H)) {
10228 H = 0;
10229 }
10230 H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]
10231 var r = 0;
10232 var g = 0;
10233 var b = 0;
10234 if (S === 0) {
10235 r = g = b = B;
10236 }
10237 else {
10238 var h = (H - Math.floor(H)) * 6;
10239 var f = h - Math.floor(h);
10240 var p = B * (1 - S);
10241 var q = B * (1 - S * f);
10242 var t = B * (1 - (S * (1 - f)));
10243 switch (h >> 0) { // discard the floating point part of the number
10244 case 0:
10245 r = B;
10246 g = t;
10247 b = p;
10248 break;
10249 case 1:
10250 r = q;
10251 g = B;
10252 b = p;
10253 break;
10254 case 2:
10255 r = p;
10256 g = B;
10257 b = t;
10258 break;
10259 case 3:
10260 r = p;
10261 g = q;
10262 b = B;
10263 break;
10264 case 4:
10265 r = t;
10266 g = p;
10267 b = B;
10268 break;
10269 case 5:
10270 r = B;
10271 g = p;
10272 b = q;
10273 break;
10274 }
10275 }
10276 return [r, g, b];
10277 };
10278 Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {
10279 var hsb = Color.RGBtoHSB(this.r, this.g, this.b);
10280 var b = hsb[2];
10281 if (b == 0 && brightnessFactor > 1.0) {
10282 b = 0.05;
10283 }
10284 var h = (((hsb[0] + hueShift) % 360) + 360) % 360;
10285 var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);
10286 b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);
10287 var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);
10288 var rgba = Color.HSBtoRGB(h, s, b);
10289 rgba.push(a);
10290 return Color.fromArray(rgba);
10291 };
10292 Color.prototype.brighter = function () {
10293 return this.derive(0, 1.0, 1.0 / 0.7, 1.0);
10294 };
10295 Color.prototype.darker = function () {
10296 return this.derive(0, 1.0, 0.7, 1.0);
10297 };
10298 /**
10299 * CSS Color Module Level 4:
10300 * https://drafts.csswg.org/css-color/#named-colors
10301 */
10302 Color.nameToHex = Object.freeze({
10303 aliceblue: '#F0F8FF',
10304 antiquewhite: '#FAEBD7',
10305 aqua: '#00FFFF',
10306 aquamarine: '#7FFFD4',
10307 azure: '#F0FFFF',
10308 beige: '#F5F5DC',
10309 bisque: '#FFE4C4',
10310 black: '#000000',
10311 blanchedalmond: '#FFEBCD',
10312 blue: '#0000FF',
10313 blueviolet: '#8A2BE2',
10314 brown: '#A52A2A',
10315 burlywood: '#DEB887',
10316 cadetblue: '#5F9EA0',
10317 chartreuse: '#7FFF00',
10318 chocolate: '#D2691E',
10319 coral: '#FF7F50',
10320 cornflowerblue: '#6495ED',
10321 cornsilk: '#FFF8DC',
10322 crimson: '#DC143C',
10323 cyan: '#00FFFF',
10324 darkblue: '#00008B',
10325 darkcyan: '#008B8B',
10326 darkgoldenrod: '#B8860B',
10327 darkgray: '#A9A9A9',
10328 darkgreen: '#006400',
10329 darkgrey: '#A9A9A9',
10330 darkkhaki: '#BDB76B',
10331 darkmagenta: '#8B008B',
10332 darkolivegreen: '#556B2F',
10333 darkorange: '#FF8C00',
10334 darkorchid: '#9932CC',
10335 darkred: '#8B0000',
10336 darksalmon: '#E9967A',
10337 darkseagreen: '#8FBC8F',
10338 darkslateblue: '#483D8B',
10339 darkslategray: '#2F4F4F',
10340 darkslategrey: '#2F4F4F',
10341 darkturquoise: '#00CED1',
10342 darkviolet: '#9400D3',
10343 deeppink: '#FF1493',
10344 deepskyblue: '#00BFFF',
10345 dimgray: '#696969',
10346 dimgrey: '#696969',
10347 dodgerblue: '#1E90FF',
10348 firebrick: '#B22222',
10349 floralwhite: '#FFFAF0',
10350 forestgreen: '#228B22',
10351 fuchsia: '#FF00FF',
10352 gainsboro: '#DCDCDC',
10353 ghostwhite: '#F8F8FF',
10354 gold: '#FFD700',
10355 goldenrod: '#DAA520',
10356 gray: '#808080',
10357 green: '#008000',
10358 greenyellow: '#ADFF2F',
10359 grey: '#808080',
10360 honeydew: '#F0FFF0',
10361 hotpink: '#FF69B4',
10362 indianred: '#CD5C5C',
10363 indigo: '#4B0082',
10364 ivory: '#FFFFF0',
10365 khaki: '#F0E68C',
10366 lavender: '#E6E6FA',
10367 lavenderblush: '#FFF0F5',
10368 lawngreen: '#7CFC00',
10369 lemonchiffon: '#FFFACD',
10370 lightblue: '#ADD8E6',
10371 lightcoral: '#F08080',
10372 lightcyan: '#E0FFFF',
10373 lightgoldenrodyellow: '#FAFAD2',
10374 lightgray: '#D3D3D3',
10375 lightgreen: '#90EE90',
10376 lightgrey: '#D3D3D3',
10377 lightpink: '#FFB6C1',
10378 lightsalmon: '#FFA07A',
10379 lightseagreen: '#20B2AA',
10380 lightskyblue: '#87CEFA',
10381 lightslategray: '#778899',
10382 lightslategrey: '#778899',
10383 lightsteelblue: '#B0C4DE',
10384 lightyellow: '#FFFFE0',
10385 lime: '#00FF00',
10386 limegreen: '#32CD32',
10387 linen: '#FAF0E6',
10388 magenta: '#FF00FF',
10389 maroon: '#800000',
10390 mediumaquamarine: '#66CDAA',
10391 mediumblue: '#0000CD',
10392 mediumorchid: '#BA55D3',
10393 mediumpurple: '#9370DB',
10394 mediumseagreen: '#3CB371',
10395 mediumslateblue: '#7B68EE',
10396 mediumspringgreen: '#00FA9A',
10397 mediumturquoise: '#48D1CC',
10398 mediumvioletred: '#C71585',
10399 midnightblue: '#191970',
10400 mintcream: '#F5FFFA',
10401 mistyrose: '#FFE4E1',
10402 moccasin: '#FFE4B5',
10403 navajowhite: '#FFDEAD',
10404 navy: '#000080',
10405 oldlace: '#FDF5E6',
10406 olive: '#808000',
10407 olivedrab: '#6B8E23',
10408 orange: '#FFA500',
10409 orangered: '#FF4500',
10410 orchid: '#DA70D6',
10411 palegoldenrod: '#EEE8AA',
10412 palegreen: '#98FB98',
10413 paleturquoise: '#AFEEEE',
10414 palevioletred: '#DB7093',
10415 papayawhip: '#FFEFD5',
10416 peachpuff: '#FFDAB9',
10417 peru: '#CD853F',
10418 pink: '#FFC0CB',
10419 plum: '#DDA0DD',
10420 powderblue: '#B0E0E6',
10421 purple: '#800080',
10422 rebeccapurple: '#663399',
10423 red: '#FF0000',
10424 rosybrown: '#BC8F8F',
10425 royalblue: '#4169E1',
10426 saddlebrown: '#8B4513',
10427 salmon: '#FA8072',
10428 sandybrown: '#F4A460',
10429 seagreen: '#2E8B57',
10430 seashell: '#FFF5EE',
10431 sienna: '#A0522D',
10432 silver: '#C0C0C0',
10433 skyblue: '#87CEEB',
10434 slateblue: '#6A5ACD',
10435 slategray: '#708090',
10436 slategrey: '#708090',
10437 snow: '#FFFAFA',
10438 springgreen: '#00FF7F',
10439 steelblue: '#4682B4',
10440 tan: '#D2B48C',
10441 teal: '#008080',
10442 thistle: '#D8BFD8',
10443 tomato: '#FF6347',
10444 turquoise: '#40E0D0',
10445 violet: '#EE82EE',
10446 wheat: '#F5DEB3',
10447 white: '#FFFFFF',
10448 whitesmoke: '#F5F5F5',
10449 yellow: '#FFFF00',
10450 yellowgreen: '#9ACD32'
10451 });
10452 return Color;
10453}());
10454
10455
10456
10457
10458
10459/***/ }),
10460/* 39 */
10461/***/ (function(module, __webpack_exports__, __webpack_require__) {
10462
10463"use strict";
10464__webpack_require__.r(__webpack_exports__);
10465/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stringToArray", function() { return stringToArray; });
10466/**
10467 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
10468 * @version v27.3.0
10469 * @link https://www.ag-grid.com/
10470 * @license MIT
10471 */
10472// Based on https://stackoverflow.com/a/14991797
10473// This will parse a delimited string into an array of arrays.
10474function stringToArray(strData, delimiter) {
10475 if (delimiter === void 0) { delimiter = ','; }
10476 var data = [];
10477 var isNewline = function (char) { return char === '\r' || char === '\n'; };
10478 var insideQuotedField = false;
10479 if (strData === '') {
10480 return [['']];
10481 }
10482 var _loop_1 = function (row, column, position) {
10483 var previousChar = strData[position - 1];
10484 var currentChar = strData[position];
10485 var nextChar = strData[position + 1];
10486 var ensureDataExists = function () {
10487 if (!data[row]) {
10488 // create row if it doesn't exist
10489 data[row] = [];
10490 }
10491 if (!data[row][column]) {
10492 // create column if it doesn't exist
10493 data[row][column] = '';
10494 }
10495 };
10496 ensureDataExists();
10497 if (currentChar === '"') {
10498 if (insideQuotedField) {
10499 if (nextChar === '"') {
10500 // unescape double quote
10501 data[row][column] += '"';
10502 position++;
10503 }
10504 else {
10505 // exit quoted field
10506 insideQuotedField = false;
10507 }
10508 return out_row_1 = row, out_column_1 = column, out_position_1 = position, "continue";
10509 }
10510 else if (previousChar === undefined || previousChar === delimiter || isNewline(previousChar)) {
10511 // enter quoted field
10512 insideQuotedField = true;
10513 return out_row_1 = row, out_column_1 = column, out_position_1 = position, "continue";
10514 }
10515 }
10516 if (!insideQuotedField) {
10517 if (currentChar === delimiter) {
10518 // move to next column
10519 column++;
10520 ensureDataExists();
10521 return out_row_1 = row, out_column_1 = column, out_position_1 = position, "continue";
10522 }
10523 else if (isNewline(currentChar)) {
10524 // move to next row
10525 column = 0;
10526 row++;
10527 ensureDataExists();
10528 if (currentChar === '\r' && nextChar === '\n') {
10529 // skip over second newline character if it exists
10530 position++;
10531 }
10532 return out_row_1 = row, out_column_1 = column, out_position_1 = position, "continue";
10533 }
10534 }
10535 // add current character to current column
10536 data[row][column] += currentChar;
10537 out_row_1 = row;
10538 out_column_1 = column;
10539 out_position_1 = position;
10540 };
10541 var out_row_1, out_column_1, out_position_1;
10542 // iterate over each character, keep track of current row and column (of the returned array)
10543 for (var row = 0, column = 0, position = 0; position < strData.length; position++) {
10544 _loop_1(row, column, position);
10545 row = out_row_1;
10546 column = out_column_1;
10547 position = out_position_1;
10548 }
10549 return data;
10550}
10551
10552
10553
10554
10555/***/ }),
10556/* 40 */
10557/***/ (function(module, __webpack_exports__, __webpack_require__) {
10558
10559"use strict";
10560__webpack_require__.r(__webpack_exports__);
10561/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_", function() { return _; });
10562/* harmony import */ var _general__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41);
10563/* harmony import */ var _aria__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
10564/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
10565/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
10566/* harmony import */ var _csv__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39);
10567/* harmony import */ var _date__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45);
10568/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
10569/* harmony import */ var _event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(21);
10570/* harmony import */ var _function__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14);
10571/* harmony import */ var _fuzzyMatch__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(47);
10572/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7);
10573/* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(48);
10574/* harmony import */ var _keyboard__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(49);
10575/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(27);
10576/* harmony import */ var _mouse__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(50);
10577/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(46);
10578/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(13);
10579/* harmony import */ var _rowNode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(51);
10580/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(52);
10581/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(26);
10582/**
10583 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
10584 * @version v27.3.0
10585 * @link https://www.ag-grid.com/
10586 * @license MIT
10587 */
10588var __assign = (undefined && undefined.__assign) || function () {
10589 __assign = Object.assign || function(t) {
10590 for (var s, i = 1, n = arguments.length; i < n; i++) {
10591 s = arguments[i];
10592 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10593 t[p] = s[p];
10594 }
10595 return t;
10596 };
10597 return __assign.apply(this, arguments);
10598};
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619var 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__);
10620var _ = utils;
10621
10622
10623
10624
10625/***/ }),
10626/* 41 */
10627/***/ (function(module, __webpack_exports__, __webpack_require__) {
10628
10629"use strict";
10630__webpack_require__.r(__webpack_exports__);
10631/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNameOfClass", function() { return getNameOfClass; });
10632/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findLineByLeastSquares", function() { return findLineByLeastSquares; });
10633/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cssStyleObjectToMarkup", function() { return cssStyleObjectToMarkup; });
10634/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "message", function() { return message; });
10635/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCellRendererToHtmlElement", function() { return bindCellRendererToHtmlElement; });
10636/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
10637/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
10638/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
10639/**
10640 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
10641 * @version v27.3.0
10642 * @link https://www.ag-grid.com/
10643 * @license MIT
10644 */
10645
10646
10647
10648/** @deprecated */
10649function getNameOfClass(theClass) {
10650 var funcNameRegex = /function (.{1,})\(/;
10651 var funcAsString = theClass.toString();
10652 var results = funcNameRegex.exec(funcAsString);
10653 return results && results.length > 1 ? results[1] : "";
10654}
10655function findLineByLeastSquares(values) {
10656 var len = values.length;
10657 var maxDecimals = 0;
10658 if (len <= 1) {
10659 return values;
10660 }
10661 for (var i = 0; i < values.length; i++) {
10662 var value = values[i];
10663 var splitExponent = value.toString().split('e-');
10664 if (splitExponent.length > 1) {
10665 maxDecimals = Math.max(maxDecimals, parseInt(splitExponent[1], 10));
10666 continue;
10667 }
10668 if (Math.floor(value) === value) {
10669 continue;
10670 }
10671 maxDecimals = Math.max(maxDecimals, value.toString().split('.')[1].length);
10672 }
10673 var sum_x = 0;
10674 var sum_y = 0;
10675 var sum_xy = 0;
10676 var sum_xx = 0;
10677 var y = 0;
10678 for (var x = 0; x < len; x++) {
10679 y = values[x];
10680 sum_x += x;
10681 sum_y += y;
10682 sum_xx += x * x;
10683 sum_xy += x * y;
10684 }
10685 var m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);
10686 var b = (sum_y / len) - (m * sum_x) / len;
10687 var result = [];
10688 for (var x = 0; x <= len; x++) {
10689 result.push(parseFloat((x * m + b).toFixed(maxDecimals)));
10690 }
10691 return result;
10692}
10693/**
10694 * Converts a CSS object into string
10695 * @param {Object} stylesToUse an object eg: {color: 'black', top: '25px'}
10696 * @return {string} A string like "color: black; top: 25px;" for html
10697 */
10698function cssStyleObjectToMarkup(stylesToUse) {
10699 if (!stylesToUse) {
10700 return '';
10701 }
10702 var resParts = [];
10703 Object(_object__WEBPACK_IMPORTED_MODULE_2__["iterateObject"])(stylesToUse, function (styleKey, styleValue) {
10704 var styleKeyDashed = Object(_string__WEBPACK_IMPORTED_MODULE_1__["camelCaseToHyphen"])(styleKey);
10705 resParts.push(styleKeyDashed + ": " + styleValue + ";");
10706 });
10707 return resParts.join(' ');
10708}
10709/**
10710 * Displays a message to the browser. this is useful in iPad, where you can't easily see the console.
10711 * so the javascript code can use this to give feedback. this is NOT intended to be called in production.
10712 * it is intended the AG Grid developer calls this to troubleshoot, but then takes out the calls before
10713 * checking in.
10714 * @param {string} msg
10715 */
10716function message(msg) {
10717 var eMessage = document.createElement('div');
10718 var eBox = document.querySelector('#__ag__message');
10719 eMessage.innerHTML = msg;
10720 if (!eBox) {
10721 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>";
10722 eBox = Object(_dom__WEBPACK_IMPORTED_MODULE_0__["loadTemplate"])(template);
10723 if (document.body) {
10724 document.body.appendChild(eBox);
10725 }
10726 }
10727 eBox.insertBefore(eMessage, eBox.children[0]);
10728}
10729/**
10730 * cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they
10731 * can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.
10732 * @param {AgPromise<ICellRendererComp>} cellRendererPromise
10733 * @param {HTMLElement} eTarget
10734 */
10735function bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {
10736 cellRendererPromise.then(function (cellRenderer) {
10737 var gui = cellRenderer.getGui();
10738 if (gui != null) {
10739 if (typeof gui === 'object') {
10740 eTarget.appendChild(gui);
10741 }
10742 else {
10743 eTarget.innerHTML = gui;
10744 }
10745 }
10746 });
10747}
10748
10749
10750
10751
10752/***/ }),
10753/* 42 */
10754/***/ (function(module, __webpack_exports__, __webpack_require__) {
10755
10756"use strict";
10757__webpack_require__.r(__webpack_exports__);
10758/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "radioCssClass", function() { return radioCssClass; });
10759/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFocusableFormField", function() { return isFocusableFormField; });
10760/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDisplayed", function() { return setDisplayed; });
10761/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setVisible", function() { return setVisible; });
10762/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDisabled", function() { return setDisabled; });
10763/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isElementChildOfClass", function() { return isElementChildOfClass; });
10764/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElementSize", function() { return getElementSize; });
10765/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getInnerHeight", function() { return getInnerHeight; });
10766/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getInnerWidth", function() { return getInnerWidth; });
10767/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAbsoluteHeight", function() { return getAbsoluteHeight; });
10768/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAbsoluteWidth", function() { return getAbsoluteWidth; });
10769/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isRtlNegativeScroll", function() { return isRtlNegativeScroll; });
10770/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScrollLeft", function() { return getScrollLeft; });
10771/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setScrollLeft", function() { return setScrollLeft; });
10772/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearElement", function() { return clearElement; });
10773/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeElement", function() { return removeElement; });
10774/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFromParent", function() { return removeFromParent; });
10775/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isVisible", function() { return isVisible; });
10776/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadTemplate", function() { return loadTemplate; });
10777/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appendHtml", function() { return appendHtml; });
10778/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElementAttribute", function() { return getElementAttribute; });
10779/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "offsetHeight", function() { return offsetHeight; });
10780/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "offsetWidth", function() { return offsetWidth; });
10781/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ensureDomOrder", function() { return ensureDomOrder; });
10782/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDomChildOrder", function() { return setDomChildOrder; });
10783/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertWithDomOrder", function() { return insertWithDomOrder; });
10784/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prependDC", function() { return prependDC; });
10785/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addStylesToElement", function() { return addStylesToElement; });
10786/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isHorizontalScrollShowing", function() { return isHorizontalScrollShowing; });
10787/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isVerticalScrollShowing", function() { return isVerticalScrollShowing; });
10788/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setElementWidth", function() { return setElementWidth; });
10789/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setFixedWidth", function() { return setFixedWidth; });
10790/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setElementHeight", function() { return setElementHeight; });
10791/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setFixedHeight", function() { return setFixedHeight; });
10792/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatSize", function() { return formatSize; });
10793/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNode", function() { return isNode; });
10794/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return isElement; });
10795/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNodeOrElement", function() { return isNodeOrElement; });
10796/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyNodeList", function() { return copyNodeList; });
10797/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterateNamedNodeMap", function() { return iterateNamedNodeMap; });
10798/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setCheckboxState", function() { return setCheckboxState; });
10799/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addOrRemoveAttribute", function() { return addOrRemoveAttribute; });
10800/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nodeListForEach", function() { return nodeListForEach; });
10801/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
10802/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
10803/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
10804/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
10805/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
10806/**
10807 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
10808 * @version v27.3.0
10809 * @link https://www.ag-grid.com/
10810 * @license MIT
10811 */
10812
10813
10814
10815
10816
10817var rtlNegativeScroll;
10818/**
10819 * This method adds a class to an element and remove that class from all siblings.
10820 * Useful for toggling state.
10821 * @param {HTMLElement} element The element to receive the class
10822 * @param {string} elementClass The class to be assigned to the element
10823 * @param {boolean} otherElementClass The class to be assigned to siblings of the element, but not the element itself
10824 */
10825function radioCssClass(element, elementClass, otherElementClass) {
10826 var parent = element.parentElement;
10827 var sibling = parent && parent.firstChild;
10828 while (sibling) {
10829 if (elementClass) {
10830 sibling.classList.toggle(elementClass, sibling === element);
10831 }
10832 if (otherElementClass) {
10833 sibling.classList.toggle(otherElementClass, sibling !== element);
10834 }
10835 sibling = sibling.nextSibling;
10836 }
10837}
10838function isFocusableFormField(element) {
10839 var matches = Element.prototype.matches || Element.prototype.msMatchesSelector;
10840 var isFocusable = matches.call(element, _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].INPUT_SELECTOR);
10841 var isNotFocusable = matches.call(element, _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].FOCUSABLE_EXCLUDE);
10842 var isElementVisible = isVisible(element);
10843 var focusable = isFocusable && !isNotFocusable && isElementVisible;
10844 return focusable;
10845}
10846function setDisplayed(element, displayed) {
10847 element.classList.toggle('ag-hidden', !displayed);
10848}
10849function setVisible(element, visible) {
10850 element.classList.toggle('ag-invisible', !visible);
10851}
10852function setDisabled(element, disabled) {
10853 var attributeName = 'disabled';
10854 var addOrRemoveDisabledAttribute = disabled ?
10855 function (e) { return e.setAttribute(attributeName, ''); } :
10856 function (e) { return e.removeAttribute(attributeName); };
10857 addOrRemoveDisabledAttribute(element);
10858 nodeListForEach(element.querySelectorAll('input'), function (input) { return addOrRemoveDisabledAttribute(input); });
10859}
10860function isElementChildOfClass(element, cls, maxNest) {
10861 var counter = 0;
10862 while (element) {
10863 if (element.classList.contains(cls)) {
10864 return true;
10865 }
10866 element = element.parentElement;
10867 if (maxNest && ++counter > maxNest) {
10868 break;
10869 }
10870 }
10871 return false;
10872}
10873// returns back sizes as doubles instead of strings. similar to
10874// getBoundingClientRect, however getBoundingClientRect does not:
10875// a) work with fractions (eg browser is zooming)
10876// b) has CSS transitions applied (eg CSS scale, browser zoom), which we don't want, we want the un-transitioned values
10877function getElementSize(el) {
10878 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;
10879 return {
10880 height: parseFloat(height),
10881 width: parseFloat(width),
10882 paddingTop: parseFloat(paddingTop),
10883 paddingRight: parseFloat(paddingRight),
10884 paddingBottom: parseFloat(paddingBottom),
10885 paddingLeft: parseFloat(paddingLeft),
10886 marginTop: parseFloat(marginTop),
10887 marginRight: parseFloat(marginRight),
10888 marginBottom: parseFloat(marginBottom),
10889 marginLeft: parseFloat(marginLeft),
10890 boxSizing: boxSizing
10891 };
10892}
10893function getInnerHeight(el) {
10894 var size = getElementSize(el);
10895 if (size.boxSizing === 'border-box') {
10896 return size.height - size.paddingTop - size.paddingBottom;
10897 }
10898 return size.height;
10899}
10900function getInnerWidth(el) {
10901 var size = getElementSize(el);
10902 if (size.boxSizing === 'border-box') {
10903 return size.width - size.paddingLeft - size.paddingRight;
10904 }
10905 return size.width;
10906}
10907function getAbsoluteHeight(el) {
10908 var size = getElementSize(el);
10909 var marginRight = size.marginBottom + size.marginTop;
10910 return Math.ceil(el.offsetHeight + marginRight);
10911}
10912function getAbsoluteWidth(el) {
10913 var size = getElementSize(el);
10914 var marginWidth = size.marginLeft + size.marginRight;
10915 return Math.ceil(el.offsetWidth + marginWidth);
10916}
10917function isRtlNegativeScroll() {
10918 if (typeof rtlNegativeScroll === "boolean") {
10919 return rtlNegativeScroll;
10920 }
10921 var template = document.createElement('div');
10922 template.style.direction = 'rtl';
10923 template.style.width = '1px';
10924 template.style.height = '1px';
10925 template.style.position = 'fixed';
10926 template.style.top = '0px';
10927 template.style.overflow = 'hidden';
10928 template.dir = 'rtl';
10929 template.innerHTML = /* html */
10930 "<div style=\"width: 2px\">\n <span style=\"display: inline-block; width: 1px\"></span>\n <span style=\"display: inline-block; width: 1px\"></span>\n </div>";
10931 document.body.appendChild(template);
10932 template.scrollLeft = 1;
10933 rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;
10934 document.body.removeChild(template);
10935 return rtlNegativeScroll;
10936}
10937function getScrollLeft(element, rtl) {
10938 var scrollLeft = element.scrollLeft;
10939 if (rtl) {
10940 // Absolute value - for FF that reports RTL scrolls in negative numbers
10941 scrollLeft = Math.abs(scrollLeft);
10942 if (Object(_browser__WEBPACK_IMPORTED_MODULE_0__["isBrowserChrome"])() && !isRtlNegativeScroll()) {
10943 scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;
10944 }
10945 }
10946 return scrollLeft;
10947}
10948function setScrollLeft(element, value, rtl) {
10949 if (rtl) {
10950 // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start
10951 if (isRtlNegativeScroll()) {
10952 value *= -1;
10953 }
10954 else if (Object(_browser__WEBPACK_IMPORTED_MODULE_0__["isBrowserSafari"])() || Object(_browser__WEBPACK_IMPORTED_MODULE_0__["isBrowserChrome"])()) {
10955 value = element.scrollWidth - element.clientWidth - value;
10956 }
10957 }
10958 element.scrollLeft = value;
10959}
10960function clearElement(el) {
10961 while (el && el.firstChild) {
10962 el.removeChild(el.firstChild);
10963 }
10964}
10965/** @deprecated */
10966function removeElement(parent, cssSelector) {
10967 removeFromParent(parent.querySelector(cssSelector));
10968}
10969function removeFromParent(node) {
10970 if (node && node.parentNode) {
10971 node.parentNode.removeChild(node);
10972 }
10973}
10974function isVisible(element) {
10975 return element.offsetParent !== null;
10976}
10977/**
10978 * Loads the template and returns it as an element. makes up for no simple way in
10979 * the dom api to load html directly, eg we cannot do this: document.createElement(template)
10980 * @param {string} template
10981 * @returns {HTMLElement}
10982 */
10983function loadTemplate(template) {
10984 // we try the DOMParser first, as SalesForce doesn't like using innerHTML on a div
10985 if (DOMParser !== null) {
10986 var parser = new DOMParser();
10987 var doc = parser.parseFromString(template, "text/html");
10988 return doc.body.firstChild;
10989 }
10990 var tempDiv = document.createElement('div');
10991 tempDiv.innerHTML = (template || '').trim();
10992 return tempDiv.firstChild;
10993}
10994function appendHtml(eContainer, htmlTemplate) {
10995 if (eContainer.lastChild) {
10996 // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
10997 // we put the items at the start, so new items appear underneath old items,
10998 // so when expanding/collapsing groups, the new rows don't go on top of the
10999 // rows below that are moving our of the way
11000 eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);
11001 }
11002 else {
11003 eContainer.innerHTML = htmlTemplate;
11004 }
11005}
11006/** @deprecated */
11007function getElementAttribute(element, attributeName) {
11008 if (element.attributes && element.attributes[attributeName]) {
11009 var attribute = element.attributes[attributeName];
11010 return attribute.value;
11011 }
11012 return null;
11013}
11014function offsetHeight(element) {
11015 return element && element.clientHeight ? element.clientHeight : 0;
11016}
11017function offsetWidth(element) {
11018 return element && element.clientWidth ? element.clientWidth : 0;
11019}
11020function ensureDomOrder(eContainer, eChild, eChildBefore) {
11021 // if already in right order, do nothing
11022 if (eChildBefore && eChildBefore.nextSibling === eChild) {
11023 return;
11024 }
11025 if (eChildBefore) {
11026 if (eChildBefore.nextSibling) {
11027 // insert between the eRowBefore and the row after it
11028 eContainer.insertBefore(eChild, eChildBefore.nextSibling);
11029 }
11030 else {
11031 // if nextSibling is missing, means other row is at end, so just append new row at the end
11032 eContainer.appendChild(eChild);
11033 }
11034 }
11035 else {
11036 // otherwise put at start
11037 if (eContainer.firstChild && eContainer.firstChild !== eChild) {
11038 // insert it at the first location
11039 eContainer.insertAdjacentElement('afterbegin', eChild);
11040 }
11041 }
11042}
11043function setDomChildOrder(eContainer, orderedChildren) {
11044 for (var i = 0; i < orderedChildren.length; i++) {
11045 var correctCellAtIndex = orderedChildren[i];
11046 var actualCellAtIndex = eContainer.children[i];
11047 if (actualCellAtIndex !== correctCellAtIndex) {
11048 eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);
11049 }
11050 }
11051}
11052function insertWithDomOrder(eContainer, eToInsert, eChildBefore) {
11053 if (eChildBefore) {
11054 // if previous element exists, just slot in after the previous element
11055 eChildBefore.insertAdjacentElement('afterend', eToInsert);
11056 }
11057 else {
11058 if (eContainer.firstChild) {
11059 // insert it at the first location
11060 eContainer.insertAdjacentElement('afterbegin', eToInsert);
11061 }
11062 else {
11063 // otherwise eContainer is empty, so just append it
11064 eContainer.appendChild(eToInsert);
11065 }
11066 }
11067}
11068/** @deprecated */
11069function prependDC(parent, documentFragment) {
11070 if (Object(_generic__WEBPACK_IMPORTED_MODULE_1__["exists"])(parent.firstChild)) {
11071 parent.insertBefore(documentFragment, parent.firstChild);
11072 }
11073 else {
11074 parent.appendChild(documentFragment);
11075 }
11076}
11077function addStylesToElement(eElement, styles) {
11078 if (!styles) {
11079 return;
11080 }
11081 Object.keys(styles).forEach(function (key) {
11082 var keyCamelCase = Object(_string__WEBPACK_IMPORTED_MODULE_3__["hyphenToCamelCase"])(key);
11083 if (keyCamelCase) {
11084 eElement.style[keyCamelCase] = styles[key];
11085 }
11086 });
11087}
11088function isHorizontalScrollShowing(element) {
11089 return element.clientWidth < element.scrollWidth;
11090}
11091function isVerticalScrollShowing(element) {
11092 return element.clientHeight < element.scrollHeight;
11093}
11094function setElementWidth(element, width) {
11095 if (width === 'flex') {
11096 element.style.removeProperty('width');
11097 element.style.removeProperty('minWidth');
11098 element.style.removeProperty('maxWidth');
11099 element.style.flex = '1 1 auto';
11100 }
11101 else {
11102 setFixedWidth(element, width);
11103 }
11104}
11105function setFixedWidth(element, width) {
11106 width = formatSize(width);
11107 element.style.width = width.toString();
11108 element.style.maxWidth = width.toString();
11109 element.style.minWidth = width.toString();
11110}
11111function setElementHeight(element, height) {
11112 if (height === 'flex') {
11113 element.style.removeProperty('height');
11114 element.style.removeProperty('minHeight');
11115 element.style.removeProperty('maxHeight');
11116 element.style.flex = '1 1 auto';
11117 }
11118 else {
11119 setFixedHeight(element, height);
11120 }
11121}
11122function setFixedHeight(element, height) {
11123 height = formatSize(height);
11124 element.style.height = height.toString();
11125 element.style.maxHeight = height.toString();
11126 element.style.minHeight = height.toString();
11127}
11128function formatSize(size) {
11129 if (typeof size === 'number') {
11130 return size + "px";
11131 }
11132 return size;
11133}
11134/**
11135 * Returns true if it is a DOM node
11136 * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
11137 * @param {any} o
11138 * @return {boolean}
11139 */
11140function isNode(o) {
11141 return (typeof Node === 'function'
11142 ? o instanceof Node
11143 : o && typeof o === 'object' && typeof o.nodeType === 'number' && typeof o.nodeName === 'string');
11144}
11145//
11146/**
11147 * Returns true if it is a DOM element
11148 * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
11149 * @param {any} o
11150 * @returns {boolean}
11151 */
11152function isElement(o) {
11153 return (typeof HTMLElement === 'function'
11154 ? o instanceof HTMLElement //DOM2
11155 : o && Object(_object__WEBPACK_IMPORTED_MODULE_2__["isNonNullObject"])(o) && o.nodeType === 1 && typeof o.nodeName === 'string');
11156}
11157function isNodeOrElement(o) {
11158 return isNode(o) || isElement(o);
11159}
11160/**
11161 * Makes a copy of a node list into a list
11162 * @param {NodeList} nodeList
11163 * @returns {Node[]}
11164 */
11165function copyNodeList(nodeList) {
11166 if (nodeList == null) {
11167 return [];
11168 }
11169 var result = [];
11170 nodeListForEach(nodeList, function (node) { return result.push(node); });
11171 return result;
11172}
11173function iterateNamedNodeMap(map, callback) {
11174 if (!map) {
11175 return;
11176 }
11177 for (var i = 0; i < map.length; i++) {
11178 var attr = map[i];
11179 callback(attr.name, attr.value);
11180 }
11181}
11182/** @deprecated */
11183function setCheckboxState(eCheckbox, state) {
11184 if (typeof state === 'boolean') {
11185 eCheckbox.checked = state;
11186 eCheckbox.indeterminate = false;
11187 }
11188 else {
11189 // isNodeSelected returns back undefined if it's a group and the children
11190 // are a mix of selected and unselected
11191 eCheckbox.indeterminate = true;
11192 }
11193}
11194function addOrRemoveAttribute(element, name, value) {
11195 if (value == null) {
11196 element.removeAttribute(name);
11197 }
11198 else {
11199 element.setAttribute(name, value.toString());
11200 }
11201}
11202function nodeListForEach(nodeList, action) {
11203 if (nodeList == null) {
11204 return;
11205 }
11206 for (var i = 0; i < nodeList.length; i++) {
11207 action(nodeList[i]);
11208 }
11209}
11210
11211
11212
11213
11214/***/ }),
11215/* 43 */
11216/***/ (function(module, __webpack_exports__, __webpack_require__) {
11217
11218"use strict";
11219__webpack_require__.r(__webpack_exports__);
11220/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBrowserEdge", function() { return isBrowserEdge; });
11221/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBrowserSafari", function() { return isBrowserSafari; });
11222/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBrowserChrome", function() { return isBrowserChrome; });
11223/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBrowserFirefox", function() { return isBrowserFirefox; });
11224/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIOSUserAgent", function() { return isIOSUserAgent; });
11225/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTabIndex", function() { return getTabIndex; });
11226/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMaxDivHeight", function() { return getMaxDivHeight; });
11227/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScrollbarWidth", function() { return getScrollbarWidth; });
11228/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInvisibleScrollbar", function() { return isInvisibleScrollbar; });
11229/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasOverflowScrolling", function() { return hasOverflowScrolling; });
11230/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBodyWidth", function() { return getBodyWidth; });
11231/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBodyHeight", function() { return getBodyHeight; });
11232/**
11233 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11234 * @version v27.3.0
11235 * @link https://www.ag-grid.com/
11236 * @license MIT
11237 */
11238var __values = (undefined && undefined.__values) || function(o) {
11239 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
11240 if (m) return m.call(o);
11241 if (o && typeof o.length === "number") return {
11242 next: function () {
11243 if (o && i >= o.length) o = void 0;
11244 return { value: o && o[i++], done: !o };
11245 }
11246 };
11247 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
11248};
11249/**
11250 * These variables are lazy loaded, as otherwise they try and get initialised when we are loading
11251 * unit tests and we don't have references to window or document in the unit tests
11252 * from http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
11253 */
11254var isSafari;
11255var isIE;
11256var isEdge;
11257var isChrome;
11258var isFirefox;
11259var isIOS;
11260var invisibleScrollbar;
11261var browserScrollbarWidth;
11262function isBrowserIE() {
11263 if (isIE === undefined) {
11264 isIE = /*@cc_on!@*/ false || !!document.documentMode; // At least IE6
11265 }
11266 return isIE;
11267}
11268function isBrowserEdge() {
11269 if (isEdge === undefined) {
11270 isEdge = !isBrowserIE() && !!window.StyleMedia;
11271 }
11272 return isEdge;
11273}
11274function isBrowserSafari() {
11275 if (isSafari === undefined) {
11276 // taken from https://stackoverflow.com/a/23522755/1388233
11277 isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
11278 }
11279 return isSafari;
11280}
11281function isBrowserChrome() {
11282 if (isChrome === undefined) {
11283 var win = window;
11284 isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||
11285 (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));
11286 }
11287 return isChrome;
11288}
11289function isBrowserFirefox() {
11290 if (isFirefox === undefined) {
11291 var win = window;
11292 isFirefox = typeof win.InstallTrigger !== 'undefined';
11293 }
11294 return isFirefox;
11295}
11296function isIOSUserAgent() {
11297 if (isIOS === undefined) {
11298 // taken from https://stackoverflow.com/a/58064481/1388233
11299 isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||
11300 // eslint-disable-next-line
11301 (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&
11302 // @ts-ignore
11303 !window.MSStream;
11304 }
11305 return isIOS;
11306}
11307function getTabIndex(el) {
11308 if (!el) {
11309 return null;
11310 }
11311 var numberTabIndex = el.tabIndex;
11312 var tabIndex = el.getAttribute('tabIndex');
11313 if (numberTabIndex === -1 && (tabIndex === null || (tabIndex === '' && !isBrowserFirefox()))) {
11314 return null;
11315 }
11316 return numberTabIndex.toString();
11317}
11318function getMaxDivHeight() {
11319 if (!document.body) {
11320 return -1;
11321 }
11322 var res = 1000000;
11323 // FF reports the height back but still renders blank after ~6M px
11324 var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;
11325 var div = document.createElement('div');
11326 document.body.appendChild(div);
11327 while (true) {
11328 var test = res * 2;
11329 div.style.height = test + 'px';
11330 if (test > testUpTo || div.clientHeight !== test) {
11331 break;
11332 }
11333 else {
11334 res = test;
11335 }
11336 }
11337 document.body.removeChild(div);
11338 return res;
11339}
11340function getScrollbarWidth() {
11341 if (browserScrollbarWidth == null) {
11342 initScrollbarWidthAndVisibility();
11343 }
11344 return browserScrollbarWidth;
11345}
11346function initScrollbarWidthAndVisibility() {
11347 var body = document.body;
11348 var div = document.createElement('div');
11349 div.style.width = div.style.height = '100px';
11350 div.style.opacity = '0';
11351 div.style.overflow = 'scroll';
11352 div.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps
11353 div.style.position = 'absolute';
11354 body.appendChild(div);
11355 var width = div.offsetWidth - div.clientWidth;
11356 // if width is 0 and client width is 0, means the DOM isn't ready
11357 if (width === 0 && div.clientWidth === 0) {
11358 width = null;
11359 }
11360 // remove div
11361 if (div.parentNode) {
11362 div.parentNode.removeChild(div);
11363 }
11364 if (width != null) {
11365 browserScrollbarWidth = width;
11366 invisibleScrollbar = width === 0;
11367 }
11368}
11369function isInvisibleScrollbar() {
11370 if (invisibleScrollbar == null) {
11371 initScrollbarWidthAndVisibility();
11372 }
11373 return invisibleScrollbar;
11374}
11375/** @deprecated */
11376function hasOverflowScrolling() {
11377 var e_1, _a;
11378 var prefixes = ['webkit', 'moz', 'o', 'ms'];
11379 var div = document.createElement('div');
11380 var body = document.getElementsByTagName('body')[0];
11381 var found = false;
11382 var p;
11383 body.appendChild(div);
11384 div.setAttribute('style', prefixes.map(function (prefix) { return "-" + prefix + "-overflow-scrolling: touch"; }).concat('overflow-scrolling: touch').join(';'));
11385 var computedStyle = window.getComputedStyle(div);
11386 if (computedStyle.overflowScrolling === 'touch') {
11387 found = true;
11388 }
11389 if (!found) {
11390 try {
11391 for (var prefixes_1 = __values(prefixes), prefixes_1_1 = prefixes_1.next(); !prefixes_1_1.done; prefixes_1_1 = prefixes_1.next()) {
11392 p = prefixes_1_1.value;
11393 if (computedStyle[p + "OverflowScrolling"] === 'touch') {
11394 found = true;
11395 break;
11396 }
11397 }
11398 }
11399 catch (e_1_1) { e_1 = { error: e_1_1 }; }
11400 finally {
11401 try {
11402 if (prefixes_1_1 && !prefixes_1_1.done && (_a = prefixes_1.return)) _a.call(prefixes_1);
11403 }
11404 finally { if (e_1) throw e_1.error; }
11405 }
11406 }
11407 if (div.parentNode) {
11408 div.parentNode.removeChild(div);
11409 }
11410 return found;
11411}
11412/**
11413 * Gets the document body width
11414 * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code
11415 * @returns {number}
11416 */
11417function getBodyWidth() {
11418 if (document.body) {
11419 return document.body.clientWidth;
11420 }
11421 if (window.innerHeight) {
11422 return window.innerWidth;
11423 }
11424 if (document.documentElement && document.documentElement.clientWidth) {
11425 return document.documentElement.clientWidth;
11426 }
11427 return -1;
11428}
11429/**
11430 * Gets the body height
11431 * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code
11432 * @returns {number}
11433 */
11434function getBodyHeight() {
11435 if (document.body) {
11436 return document.body.clientHeight;
11437 }
11438 if (window.innerHeight) {
11439 return window.innerHeight;
11440 }
11441 if (document.documentElement && document.documentElement.clientHeight) {
11442 return document.documentElement.clientHeight;
11443 }
11444 return -1;
11445}
11446
11447
11448
11449
11450/***/ }),
11451/* 44 */
11452/***/ (function(module, __webpack_exports__, __webpack_require__) {
11453
11454"use strict";
11455__webpack_require__.r(__webpack_exports__);
11456/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaRole", function() { return setAriaRole; });
11457/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAriaSortState", function() { return getAriaSortState; });
11458/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAriaLevel", function() { return getAriaLevel; });
11459/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAriaPosInSet", function() { return getAriaPosInSet; });
11460/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAriaDescribedBy", function() { return getAriaDescribedBy; });
11461/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaLabel", function() { return setAriaLabel; });
11462/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaLabelledBy", function() { return setAriaLabelledBy; });
11463/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaDescription", function() { return setAriaDescription; });
11464/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaDescribedBy", function() { return setAriaDescribedBy; });
11465/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaLevel", function() { return setAriaLevel; });
11466/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaDisabled", function() { return setAriaDisabled; });
11467/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaExpanded", function() { return setAriaExpanded; });
11468/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAriaExpanded", function() { return removeAriaExpanded; });
11469/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaSetSize", function() { return setAriaSetSize; });
11470/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaPosInSet", function() { return setAriaPosInSet; });
11471/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaMultiSelectable", function() { return setAriaMultiSelectable; });
11472/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaRowCount", function() { return setAriaRowCount; });
11473/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaRowIndex", function() { return setAriaRowIndex; });
11474/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaColCount", function() { return setAriaColCount; });
11475/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaColIndex", function() { return setAriaColIndex; });
11476/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaColSpan", function() { return setAriaColSpan; });
11477/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaSort", function() { return setAriaSort; });
11478/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAriaSort", function() { return removeAriaSort; });
11479/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaSelected", function() { return setAriaSelected; });
11480/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaChecked", function() { return setAriaChecked; });
11481/**
11482 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11483 * @version v27.3.0
11484 * @link https://www.ag-grid.com/
11485 * @license MIT
11486 */
11487// ARIA HELPER FUNCTIONS
11488function setAriaAttribute(element, attribute, value) {
11489 element.setAttribute(ariaAttributeName(attribute), value.toString());
11490}
11491function removeAriaAttribute(element, attribute) {
11492 element.removeAttribute(ariaAttributeName(attribute));
11493}
11494function ariaAttributeName(attribute) {
11495 return "aria-" + attribute;
11496}
11497function setAriaRole(element, role) {
11498 if (role) {
11499 element.setAttribute('role', role);
11500 }
11501 else {
11502 element.removeAttribute('role');
11503 }
11504}
11505function getAriaSortState(column) {
11506 var sort;
11507 if (column.isSortAscending()) {
11508 sort = 'ascending';
11509 }
11510 else if (column.isSortDescending()) {
11511 sort = 'descending';
11512 }
11513 else {
11514 sort = 'none';
11515 }
11516 return sort;
11517}
11518// ARIA ATTRIBUTE GETTERS
11519function getAriaLevel(element) {
11520 return parseInt(element.getAttribute('aria-level'), 10);
11521}
11522function getAriaPosInSet(element) {
11523 return parseInt(element.getAttribute('aria-posinset'), 10);
11524}
11525function getAriaDescribedBy(element) {
11526 return element.getAttribute('aria-describedby') || '';
11527}
11528// ARIA ATTRIBUTE SETTERS
11529function setAriaLabel(element, label) {
11530 var key = 'label';
11531 if (label) {
11532 setAriaAttribute(element, key, label);
11533 }
11534 else {
11535 removeAriaAttribute(element, key);
11536 }
11537}
11538function setAriaLabelledBy(element, labelledBy) {
11539 var key = 'labelledby';
11540 if (labelledBy) {
11541 setAriaAttribute(element, key, labelledBy);
11542 }
11543 else {
11544 removeAriaAttribute(element, key);
11545 }
11546}
11547function setAriaDescription(element, description) {
11548 var key = 'description';
11549 if (description) {
11550 setAriaAttribute(element, key, description);
11551 }
11552 else {
11553 removeAriaAttribute(element, key);
11554 }
11555}
11556function setAriaDescribedBy(element, describedby) {
11557 var key = 'describedby';
11558 if (describedby) {
11559 setAriaAttribute(element, key, describedby);
11560 }
11561 else {
11562 removeAriaAttribute(element, key);
11563 }
11564}
11565function setAriaLevel(element, level) {
11566 setAriaAttribute(element, 'level', level);
11567}
11568function setAriaDisabled(element, disabled) {
11569 setAriaAttribute(element, 'disabled', disabled);
11570}
11571function setAriaExpanded(element, expanded) {
11572 setAriaAttribute(element, 'expanded', expanded);
11573}
11574function removeAriaExpanded(element) {
11575 removeAriaAttribute(element, 'expanded');
11576}
11577function setAriaSetSize(element, setsize) {
11578 setAriaAttribute(element, 'setsize', setsize);
11579}
11580function setAriaPosInSet(element, position) {
11581 setAriaAttribute(element, 'posinset', position);
11582}
11583function setAriaMultiSelectable(element, multiSelectable) {
11584 setAriaAttribute(element, 'multiselectable', multiSelectable);
11585}
11586function setAriaRowCount(element, rowCount) {
11587 setAriaAttribute(element, 'rowcount', rowCount);
11588}
11589function setAriaRowIndex(element, rowIndex) {
11590 setAriaAttribute(element, 'rowindex', rowIndex);
11591}
11592function setAriaColCount(element, colCount) {
11593 setAriaAttribute(element, 'colcount', colCount);
11594}
11595function setAriaColIndex(element, colIndex) {
11596 setAriaAttribute(element, 'colindex', colIndex);
11597}
11598function setAriaColSpan(element, colSpan) {
11599 setAriaAttribute(element, 'colspan', colSpan);
11600}
11601function setAriaSort(element, sort) {
11602 setAriaAttribute(element, 'sort', sort);
11603}
11604function removeAriaSort(element) {
11605 removeAriaAttribute(element, 'sort');
11606}
11607function setAriaSelected(element, selected) {
11608 var attributeName = 'selected';
11609 if (selected) {
11610 setAriaAttribute(element, attributeName, selected);
11611 }
11612 else {
11613 removeAriaAttribute(element, attributeName);
11614 }
11615}
11616function setAriaChecked(element, checked) {
11617 setAriaAttribute(element, 'checked', checked === undefined ? 'mixed' : checked);
11618}
11619
11620
11621
11622
11623/***/ }),
11624/* 45 */
11625/***/ (function(module, __webpack_exports__, __webpack_require__) {
11626
11627"use strict";
11628__webpack_require__.r(__webpack_exports__);
11629/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "serialiseDate", function() { return serialiseDate; });
11630/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDateTimeFromString", function() { return parseDateTimeFromString; });
11631/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46);
11632/**
11633 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11634 * @version v27.3.0
11635 * @link https://www.ag-grid.com/
11636 * @license MIT
11637 */
11638var __read = (undefined && undefined.__read) || function (o, n) {
11639 var m = typeof Symbol === "function" && o[Symbol.iterator];
11640 if (!m) return o;
11641 var i = m.call(o), r, ar = [], e;
11642 try {
11643 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
11644 }
11645 catch (error) { e = { error: error }; }
11646 finally {
11647 try {
11648 if (r && !r.done && (m = i["return"])) m.call(i);
11649 }
11650 finally { if (e) throw e.error; }
11651 }
11652 return ar;
11653};
11654
11655/**
11656 * Serialises a Date to a string of format `yyyy-MM-dd HH:mm:ss`.
11657 * An alternative separator can be provided to be used instead of hyphens.
11658 * @param date The date to serialise
11659 * @param includeTime Whether to include the time in the serialised string
11660 * @param separator The separator to use between date parts
11661 */
11662function serialiseDate(date, includeTime, separator) {
11663 if (includeTime === void 0) { includeTime = true; }
11664 if (separator === void 0) { separator = '-'; }
11665 if (!date) {
11666 return null;
11667 }
11668 var serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(function (part) { return Object(_number__WEBPACK_IMPORTED_MODULE_0__["padStartWidthZeros"])(part, 2); }).join(separator);
11669 if (includeTime) {
11670 serialised += ' ' + [date.getHours(), date.getMinutes(), date.getSeconds()].map(function (part) { return Object(_number__WEBPACK_IMPORTED_MODULE_0__["padStartWidthZeros"])(part, 2); }).join(':');
11671 }
11672 return serialised;
11673}
11674/**
11675 * Parses a date and time from a string in the format `yyyy-MM-dd HH:mm:ss`
11676 */
11677function parseDateTimeFromString(value) {
11678 if (!value) {
11679 return null;
11680 }
11681 var _a = __read(value.split(' '), 2), dateStr = _a[0], timeStr = _a[1];
11682 if (!dateStr) {
11683 return null;
11684 }
11685 var fields = dateStr.split('-').map(function (f) { return parseInt(f, 10); });
11686 if (fields.filter(function (f) { return !isNaN(f); }).length !== 3) {
11687 return null;
11688 }
11689 var _b = __read(fields, 3), year = _b[0], month = _b[1], day = _b[2];
11690 var date = new Date(year, month - 1, day);
11691 if (date.getFullYear() !== year ||
11692 date.getMonth() !== month - 1 ||
11693 date.getDate() !== day) {
11694 // date was not parsed as expected so must have been invalid
11695 return null;
11696 }
11697 if (!timeStr || timeStr === '00:00:00') {
11698 return date;
11699 }
11700 var _c = __read(timeStr.split(':').map(function (part) { return parseInt(part, 10); }), 3), hours = _c[0], minutes = _c[1], seconds = _c[2];
11701 if (hours >= 0 && hours < 24) {
11702 date.setHours(hours);
11703 }
11704 if (minutes >= 0 && minutes < 60) {
11705 date.setMinutes(minutes);
11706 }
11707 if (seconds >= 0 && seconds < 60) {
11708 date.setSeconds(seconds);
11709 }
11710 return date;
11711}
11712
11713
11714
11715
11716/***/ }),
11717/* 46 */
11718/***/ (function(module, __webpack_exports__, __webpack_require__) {
11719
11720"use strict";
11721__webpack_require__.r(__webpack_exports__);
11722/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "padStartWidthZeros", function() { return padStartWidthZeros; });
11723/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createArrayOfNumbers", function() { return createArrayOfNumbers; });
11724/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumeric", function() { return isNumeric; });
11725/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cleanNumber", function() { return cleanNumber; });
11726/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decToHex", function() { return decToHex; });
11727/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatNumberTwoDecimalPlacesAndCommas", function() { return formatNumberTwoDecimalPlacesAndCommas; });
11728/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatNumberCommas", function() { return formatNumberCommas; });
11729/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sum", function() { return sum; });
11730/**
11731 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11732 * @version v27.3.0
11733 * @link https://www.ag-grid.com/
11734 * @license MIT
11735 */
11736function padStartWidthZeros(value, totalStringSize) {
11737 return value.toString().padStart(totalStringSize, '0');
11738}
11739function createArrayOfNumbers(first, last) {
11740 var result = [];
11741 for (var i = first; i <= last; i++) {
11742 result.push(i);
11743 }
11744 return result;
11745}
11746/**
11747 * Check if a value is numeric
11748 * from http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers
11749 * @param {any} value
11750 * @return {boolean}
11751 */
11752function isNumeric(value) {
11753 return value !== '' && !isNaN(parseFloat(value)) && isFinite(value);
11754}
11755function cleanNumber(value) {
11756 if (typeof value === 'string') {
11757 value = parseInt(value, 10);
11758 }
11759 if (typeof value === 'number') {
11760 return Math.floor(value);
11761 }
11762 return null;
11763}
11764function decToHex(number, bytes) {
11765 var hex = '';
11766 for (var i = 0; i < bytes; i++) {
11767 hex += String.fromCharCode(number & 0xff);
11768 number >>>= 8;
11769 }
11770 return hex;
11771}
11772function formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator) {
11773 if (typeof value !== 'number') {
11774 return '';
11775 }
11776 return formatNumberCommas(Math.round(value * 100) / 100, thousandSeparator, decimalSeparator);
11777}
11778/**
11779 * the native method number.toLocaleString(undefined, {minimumFractionDigits: 0})
11780 * puts in decimal places in IE, so we use this method instead
11781 * from: http://blog.tompawlak.org/number-currency-formatting-javascript
11782 * @param {number} value
11783 * @returns {string}
11784 */
11785function formatNumberCommas(value, thousandSeparator, decimalSeparator) {
11786 if (typeof value !== 'number') {
11787 return '';
11788 }
11789 return value.toString().replace('.', decimalSeparator).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1" + thousandSeparator);
11790}
11791function sum(values) {
11792 return values == null ? null : values.reduce(function (total, value) { return total + value; }, 0);
11793}
11794
11795
11796
11797
11798/***/ }),
11799/* 47 */
11800/***/ (function(module, __webpack_exports__, __webpack_require__) {
11801
11802"use strict";
11803__webpack_require__.r(__webpack_exports__);
11804/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fuzzyCheckStrings", function() { return fuzzyCheckStrings; });
11805/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fuzzySuggestions", function() { return fuzzySuggestions; });
11806/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get_bigrams", function() { return get_bigrams; });
11807/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "string_distances", function() { return string_distances; });
11808/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "string_weighted_distances", function() { return string_weighted_distances; });
11809/**
11810 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11811 * @version v27.3.0
11812 * @link https://www.ag-grid.com/
11813 * @license MIT
11814 */
11815function fuzzyCheckStrings(inputValues, validValues, allSuggestions) {
11816 var fuzzyMatches = {};
11817 var invalidInputs = inputValues.filter(function (inputValue) {
11818 return !validValues.some(function (validValue) { return validValue === inputValue; });
11819 });
11820 if (invalidInputs.length > 0) {
11821 invalidInputs.forEach(function (invalidInput) {
11822 return fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions);
11823 });
11824 }
11825 return fuzzyMatches;
11826}
11827/**
11828 *
11829 * @param {String} inputValue The value to be compared against a list of strings
11830 * @param allSuggestions The list of strings to be compared against
11831 * @param hideIrrelevant By default, fuzzy suggestions will just sort the allSuggestions list, set this to true
11832 * to filter out the irrelevant values
11833 * @param weighted Set this to true, to make letters matched in the order they were typed have priority in the results.
11834 */
11835function fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, weighted) {
11836 var search = weighted ? string_weighted_distances : string_distances;
11837 var thisSuggestions = allSuggestions.map(function (text) { return ({
11838 value: text,
11839 relevance: search(inputValue.toLowerCase(), text.toLocaleLowerCase())
11840 }); });
11841 thisSuggestions.sort(function (a, b) { return b.relevance - a.relevance; });
11842 if (hideIrrelevant) {
11843 thisSuggestions = thisSuggestions.filter(function (suggestion) { return suggestion.relevance !== 0; });
11844 }
11845 return thisSuggestions.map(function (suggestion) { return suggestion.value; });
11846}
11847/**
11848 * Algorithm to do fuzzy search
11849 * from https://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense
11850 * @param {string} from
11851 * @return {[]}
11852 */
11853function get_bigrams(from) {
11854 var s = from.toLowerCase();
11855 var v = new Array(s.length - 1);
11856 var i;
11857 var j;
11858 var ref;
11859 for (i = j = 0, ref = v.length; j <= ref; i = j += 1) {
11860 v[i] = s.slice(i, i + 2);
11861 }
11862 return v;
11863}
11864function string_distances(str1, str2) {
11865 if (str1.length === 0 && str2.length === 0) {
11866 return 0;
11867 }
11868 var pairs1 = get_bigrams(str1);
11869 var pairs2 = get_bigrams(str2);
11870 var union = pairs1.length + pairs2.length;
11871 var hit_count = 0;
11872 var j;
11873 var len;
11874 for (j = 0, len = pairs1.length; j < len; j++) {
11875 var x = pairs1[j];
11876 var k = void 0;
11877 var len1 = void 0;
11878 for (k = 0, len1 = pairs2.length; k < len1; k++) {
11879 var y = pairs2[k];
11880 if (x === y) {
11881 hit_count++;
11882 }
11883 }
11884 }
11885 return hit_count > 0 ? (2 * hit_count) / union : 0;
11886}
11887function string_weighted_distances(str1, str2) {
11888 var a = str1.replace(/\s/g, '');
11889 var b = str2.replace(/\s/g, '');
11890 var weight = 0;
11891 var lastIndex = 0;
11892 for (var i = 0; i < a.length; i++) {
11893 var idx = b.indexOf(a[i], lastIndex);
11894 if (idx === -1) {
11895 continue;
11896 }
11897 lastIndex = idx;
11898 weight += (100 - (lastIndex * 100 / 10000) * 100);
11899 }
11900 return weight;
11901}
11902
11903
11904
11905
11906/***/ }),
11907/* 48 */
11908/***/ (function(module, __webpack_exports__, __webpack_require__) {
11909
11910"use strict";
11911__webpack_require__.r(__webpack_exports__);
11912/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iconNameClassMap", function() { return iconNameClassMap; });
11913/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createIcon", function() { return createIcon; });
11914/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createIconNoSpan", function() { return createIconNoSpan; });
11915/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
11916/* harmony import */ var _aria__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
11917/**
11918 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11919 * @version v27.3.0
11920 * @link https://www.ag-grid.com/
11921 * @license MIT
11922 */
11923
11924
11925//
11926// IMPORTANT NOTE!
11927//
11928// If you change the list below, copy/paste the new content into the docs page javascript-grid-icons
11929//
11930var iconNameClassMap = {
11931 // header column group shown when expanded (click to contract)
11932 columnGroupOpened: 'expanded',
11933 // header column group shown when contracted (click to expand)
11934 columnGroupClosed: 'contracted',
11935 // tool panel column group contracted (click to expand)
11936 columnSelectClosed: 'tree-closed',
11937 // tool panel column group expanded (click to contract)
11938 columnSelectOpen: 'tree-open',
11939 // column tool panel header expand/collapse all button, shown when some children are expanded and
11940 // others are collapsed
11941 columnSelectIndeterminate: 'tree-indeterminate',
11942 // shown on ghost icon while dragging column to the side of the grid to pin
11943 columnMovePin: 'pin',
11944 // shown on ghost icon while dragging over part of the page that is not a drop zone
11945 columnMoveHide: 'eye-slash',
11946 // shown on ghost icon while dragging columns to reorder
11947 columnMoveMove: 'arrows',
11948 // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling
11949 columnMoveLeft: 'left',
11950 // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling
11951 columnMoveRight: 'right',
11952 // shown on ghost icon while dragging over Row Groups drop zone
11953 columnMoveGroup: 'group',
11954 // shown on ghost icon while dragging over Values drop zone
11955 columnMoveValue: 'aggregation',
11956 // shown on ghost icon while dragging over pivot drop zone
11957 columnMovePivot: 'pivot',
11958 // shown on ghost icon while dragging over drop zone that doesn't support it, e.g.
11959 // string column over aggregation drop zone
11960 dropNotAllowed: 'not-allowed',
11961 // shown on row group when contracted (click to expand)
11962 groupContracted: 'tree-closed',
11963 // shown on row group when expanded (click to contract)
11964 groupExpanded: 'tree-open',
11965 // context menu chart item
11966 chart: 'chart',
11967 // chart window title bar
11968 close: 'cross',
11969 // X (remove) on column 'pill' after adding it to a drop zone list
11970 cancel: 'cancel',
11971 // indicates the currently active pin state in the "Pin column" sub-menu of the column menu
11972 check: 'tick',
11973 // "go to first" button in pagination controls
11974 first: 'first',
11975 // "go to previous" button in pagination controls
11976 previous: 'previous',
11977 // "go to next" button in pagination controls
11978 next: 'next',
11979 // "go to last" button in pagination controls
11980 last: 'last',
11981 // shown on top right of chart when chart is linked to range data (click to unlink)
11982 linked: 'linked',
11983 // shown on top right of chart when chart is not linked to range data (click to link)
11984 unlinked: 'unlinked',
11985 // "Choose colour" button on chart settings tab
11986 colorPicker: 'color-picker',
11987 // rotating spinner shown by the loading cell renderer
11988 groupLoading: 'loading',
11989 // button to launch enterprise column menu
11990 menu: 'menu',
11991 // filter tool panel tab
11992 filter: 'filter',
11993 // column tool panel tab
11994 columns: 'columns',
11995 // button in chart regular size window title bar (click to maximise)
11996 maximize: 'maximize',
11997 // button in chart maximised window title bar (click to make regular size)
11998 minimize: 'minimize',
11999 // "Pin column" item in column header menu
12000 menuPin: 'pin',
12001 // "Value aggregation" column menu item (shown on numeric columns when grouping is active)"
12002 menuValue: 'aggregation',
12003 // "Group by {column-name}" item in column header menu
12004 menuAddRowGroup: 'group',
12005 // "Un-Group by {column-name}" item in column header menu
12006 menuRemoveRowGroup: 'group',
12007 // context menu copy item
12008 clipboardCopy: 'copy',
12009 // context menu paste item
12010 clipboardPaste: 'paste',
12011 // identifies the pivot drop zone
12012 pivotPanel: 'pivot',
12013 // "Row groups" drop zone in column tool panel
12014 rowGroupPanel: 'group',
12015 // columns tool panel Values drop zone
12016 valuePanel: 'aggregation',
12017 // drag handle used to pick up draggable columns
12018 columnDrag: 'grip',
12019 // drag handle used to pick up draggable rows
12020 rowDrag: 'grip',
12021 // context menu export item
12022 save: 'save',
12023 // csv export
12024 csvExport: 'csv',
12025 // excel export,
12026 excelExport: 'excel',
12027 // icon on dropdown editors
12028 smallDown: 'small-down',
12029 // version of small-right used in RTL mode
12030 smallLeft: 'small-left',
12031 // separater between column 'pills' when you add multiple columns to the header drop zone
12032 smallRight: 'small-right',
12033 smallUp: 'small-up',
12034 // show on column header when column is sorted ascending
12035 sortAscending: 'asc',
12036 // show on column header when column is sorted descending
12037 sortDescending: 'desc',
12038 // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true
12039 sortUnSort: 'none'
12040};
12041/**
12042 * If icon provided, use this (either a string, or a function callback).
12043 * if not, then use the default icon from the theme
12044 * @param {string} iconName
12045 * @param {GridOptionsWrapper} gridOptionsWrapper
12046 * @param {Column | null} [column]
12047 * @returns {HTMLElement}
12048 */
12049function createIcon(iconName, gridOptionsWrapper, column) {
12050 var iconContents = createIconNoSpan(iconName, gridOptionsWrapper, column);
12051 if (iconContents && iconContents.className.indexOf('ag-icon') > -1) {
12052 return iconContents;
12053 }
12054 var eResult = document.createElement('span');
12055 eResult.appendChild(iconContents);
12056 return eResult;
12057}
12058function createIconNoSpan(iconName, gridOptionsWrapper, column, forceCreate) {
12059 var userProvidedIcon = null;
12060 // check col for icon first
12061 var icons = column && column.getColDef().icons;
12062 if (icons) {
12063 userProvidedIcon = icons[iconName];
12064 }
12065 // if not in col, try grid options
12066 if (gridOptionsWrapper && !userProvidedIcon) {
12067 var optionsIcons = gridOptionsWrapper.getIcons();
12068 if (optionsIcons) {
12069 userProvidedIcon = optionsIcons[iconName];
12070 }
12071 }
12072 // now if user provided, use it
12073 if (userProvidedIcon) {
12074 var rendererResult = void 0;
12075 if (typeof userProvidedIcon === 'function') {
12076 rendererResult = userProvidedIcon();
12077 }
12078 else if (typeof userProvidedIcon === 'string') {
12079 rendererResult = userProvidedIcon;
12080 }
12081 else {
12082 throw new Error('icon from grid options needs to be a string or a function');
12083 }
12084 if (typeof rendererResult === 'string') {
12085 return Object(_dom__WEBPACK_IMPORTED_MODULE_0__["loadTemplate"])(rendererResult);
12086 }
12087 if (Object(_dom__WEBPACK_IMPORTED_MODULE_0__["isNodeOrElement"])(rendererResult)) {
12088 return rendererResult;
12089 }
12090 console.warn('AG Grid: iconRenderer should return back a string or a dom object');
12091 }
12092 else {
12093 var span = document.createElement('span');
12094 var cssClass = iconNameClassMap[iconName];
12095 if (!cssClass) {
12096 if (!forceCreate) {
12097 console.warn("AG Grid: Did not find icon " + iconName);
12098 cssClass = '';
12099 }
12100 else {
12101 cssClass = iconName;
12102 }
12103 }
12104 span.setAttribute('class', "ag-icon ag-icon-" + cssClass);
12105 span.setAttribute('unselectable', 'on');
12106 Object(_aria__WEBPACK_IMPORTED_MODULE_1__["setAriaRole"])(span, 'presentation');
12107 return span;
12108 }
12109}
12110
12111
12112
12113
12114/***/ }),
12115/* 49 */
12116/***/ (function(module, __webpack_exports__, __webpack_require__) {
12117
12118"use strict";
12119__webpack_require__.r(__webpack_exports__);
12120/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEventFromPrintableCharacter", function() { return isEventFromPrintableCharacter; });
12121/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUserSuppressingKeyboardEvent", function() { return isUserSuppressingKeyboardEvent; });
12122/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUserSuppressingHeaderKeyboardEvent", function() { return isUserSuppressingHeaderKeyboardEvent; });
12123/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
12124/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
12125/**
12126 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12127 * @version v27.3.0
12128 * @link https://www.ag-grid.com/
12129 * @license MIT
12130 */
12131
12132
12133var NUMPAD_DEL_NUMLOCK_ON_KEY = 'Del';
12134var NUMPAD_DEL_NUMLOCK_ON_CHARCODE = 46;
12135function isEventFromPrintableCharacter(event) {
12136 // no allowed printable chars have alt or ctrl key combinations
12137 if (event.altKey || event.ctrlKey || event.metaKey) {
12138 return false;
12139 }
12140 // if key is length 1, eg if it is 'a' for the a key, or '2' for the '2' key.
12141 // non-printable characters have names, eg 'Enter' or 'Backspace'.
12142 var printableCharacter = event.key.length === 1;
12143 // IE11 & Edge treat the numpad del key differently - with numlock on we get "Del" for key,
12144 // so this addition checks if its IE11/Edge and handles that specific case the same was as all other browsers
12145 var numpadDelWithNumlockOnForEdgeOrIe = isNumpadDelWithNumLockOnForEdge(event);
12146 return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;
12147}
12148/**
12149 * Allows user to tell the grid to skip specific keyboard events
12150 * @param {GridOptionsWrapper} gridOptionsWrapper
12151 * @param {KeyboardEvent} keyboardEvent
12152 * @param {RowNode} rowNode
12153 * @param {Column} column
12154 * @param {boolean} editing
12155 * @returns {boolean}
12156 */
12157function isUserSuppressingKeyboardEvent(gridOptionsWrapper, keyboardEvent, rowNode, column, editing) {
12158 var gridOptionsFunc = gridOptionsWrapper.getSuppressKeyboardEventFunc();
12159 var colDefFunc = column ? column.getColDef().suppressKeyboardEvent : undefined;
12160 // if no callbacks provided by user, then do nothing
12161 if (!gridOptionsFunc && !colDefFunc) {
12162 return false;
12163 }
12164 var params = {
12165 event: keyboardEvent,
12166 editing: editing,
12167 column: column,
12168 api: gridOptionsWrapper.getApi(),
12169 node: rowNode,
12170 data: rowNode.data,
12171 colDef: column.getColDef(),
12172 context: gridOptionsWrapper.getContext(),
12173 columnApi: gridOptionsWrapper.getColumnApi()
12174 };
12175 // colDef get first preference on suppressing events
12176 if (colDefFunc) {
12177 var colDefFuncResult = colDefFunc(params);
12178 // if colDef func suppressed, then return now, no need to call gridOption func
12179 if (colDefFuncResult) {
12180 return true;
12181 }
12182 }
12183 if (gridOptionsFunc) {
12184 // if gridOption func, return the result
12185 return gridOptionsFunc(params);
12186 }
12187 // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions
12188 return false;
12189}
12190function isUserSuppressingHeaderKeyboardEvent(gridOptionsWrapper, keyboardEvent, headerRowIndex, column) {
12191 var colDef = column.getDefinition();
12192 var colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;
12193 if (!Object(_generic__WEBPACK_IMPORTED_MODULE_1__["exists"])(colDefFunc)) {
12194 return false;
12195 }
12196 var params = {
12197 api: gridOptionsWrapper.getApi(),
12198 columnApi: gridOptionsWrapper.getColumnApi(),
12199 context: gridOptionsWrapper.getContext(),
12200 colDef: colDef,
12201 column: column,
12202 headerRowIndex: headerRowIndex,
12203 event: keyboardEvent
12204 };
12205 return !!colDefFunc(params);
12206}
12207function isNumpadDelWithNumLockOnForEdge(event) {
12208 return (Object(_browser__WEBPACK_IMPORTED_MODULE_0__["isBrowserEdge"])()) &&
12209 event.key === NUMPAD_DEL_NUMLOCK_ON_KEY &&
12210 event.charCode === NUMPAD_DEL_NUMLOCK_ON_CHARCODE;
12211}
12212
12213
12214
12215
12216/***/ }),
12217/* 50 */
12218/***/ (function(module, __webpack_exports__, __webpack_require__) {
12219
12220"use strict";
12221__webpack_require__.r(__webpack_exports__);
12222/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "areEventsNear", function() { return areEventsNear; });
12223/**
12224 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12225 * @version v27.3.0
12226 * @link https://www.ag-grid.com/
12227 * @license MIT
12228 */
12229/**
12230 * `True` if the event is close to the original event by X pixels either vertically or horizontally.
12231 * we only start dragging after X pixels so this allows us to know if we should start dragging yet.
12232 * @param {MouseEvent | TouchEvent} e1
12233 * @param {MouseEvent | TouchEvent} e2
12234 * @param {number} pixelCount
12235 * @returns {boolean}
12236 */
12237function areEventsNear(e1, e2, pixelCount) {
12238 // by default, we wait 4 pixels before starting the drag
12239 if (pixelCount === 0) {
12240 return false;
12241 }
12242 var diffX = Math.abs(e1.clientX - e2.clientX);
12243 var diffY = Math.abs(e1.clientY - e2.clientY);
12244 return Math.max(diffX, diffY) <= pixelCount;
12245}
12246
12247
12248
12249
12250/***/ }),
12251/* 51 */
12252/***/ (function(module, __webpack_exports__, __webpack_require__) {
12253
12254"use strict";
12255__webpack_require__.r(__webpack_exports__);
12256/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortRowNodesByOrder", function() { return sortRowNodesByOrder; });
12257/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "traverseNodesWithKey", function() { return traverseNodesWithKey; });
12258/**
12259 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12260 * @version v27.3.0
12261 * @link https://www.ag-grid.com/
12262 * @license MIT
12263 */
12264/**
12265 * Gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.
12266 * when in ClientSideNodeManager we always have indexes (as this sorts the items the
12267 * user provided) but when in GroupStage, the nodes can contain filler nodes that
12268 * don't have order id's
12269 * @param {RowNode[]} rowNodes
12270 * @param {Object} rowNodeOrder
12271 */
12272function sortRowNodesByOrder(rowNodes, rowNodeOrder) {
12273 if (!rowNodes) {
12274 return;
12275 }
12276 var comparator = function (nodeA, nodeB) {
12277 var positionA = rowNodeOrder[nodeA.id];
12278 var positionB = rowNodeOrder[nodeB.id];
12279 var aHasIndex = positionA !== undefined;
12280 var bHasIndex = positionB !== undefined;
12281 var bothNodesAreUserNodes = aHasIndex && bHasIndex;
12282 var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;
12283 if (bothNodesAreUserNodes) {
12284 // when comparing two nodes the user has provided, they always
12285 // have indexes
12286 return positionA - positionB;
12287 }
12288 if (bothNodesAreFillerNodes) {
12289 // when comparing two filler nodes, we have no index to compare them
12290 // against, however we want this sorting to be deterministic, so that
12291 // the rows don't jump around as the user does delta updates. so we
12292 // want the same sort result. so we use the __objectId - which doesn't make sense
12293 // from a sorting point of view, but does give consistent behaviour between
12294 // calls. otherwise groups jump around as delta updates are done.
12295 // note: previously here we used nodeId, however this gave a strange order
12296 // as string ordering of numbers is wrong, so using id based on creation order
12297 // as least gives better looking order.
12298 return nodeA.__objectId - nodeB.__objectId;
12299 }
12300 if (aHasIndex) {
12301 return 1;
12302 }
12303 return -1;
12304 };
12305 // check if the list first needs sorting
12306 var rowNodeA;
12307 var rowNodeB;
12308 var atLeastOneOutOfOrder = false;
12309 for (var i = 0; i < rowNodes.length - 1; i++) {
12310 rowNodeA = rowNodes[i];
12311 rowNodeB = rowNodes[i + 1];
12312 if (comparator(rowNodeA, rowNodeB) > 0) {
12313 atLeastOneOutOfOrder = true;
12314 break;
12315 }
12316 }
12317 if (atLeastOneOutOfOrder) {
12318 rowNodes.sort(comparator);
12319 }
12320}
12321function traverseNodesWithKey(nodes, callback) {
12322 var keyParts = [];
12323 recursiveSearchNodes(nodes);
12324 function recursiveSearchNodes(currentNodes) {
12325 if (!currentNodes) {
12326 return;
12327 }
12328 currentNodes.forEach(function (node) {
12329 // also checking for children for tree data
12330 if (node.group || node.hasChildren()) {
12331 keyParts.push(node.key);
12332 var key = keyParts.join('|');
12333 callback(node, key);
12334 recursiveSearchNodes(node.childrenAfterGroup);
12335 keyParts.pop();
12336 }
12337 });
12338 }
12339}
12340
12341
12342
12343
12344/***/ }),
12345/* 52 */
12346/***/ (function(module, __webpack_exports__, __webpack_require__) {
12347
12348"use strict";
12349__webpack_require__.r(__webpack_exports__);
12350/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "convertToSet", function() { return convertToSet; });
12351/**
12352 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12353 * @version v27.3.0
12354 * @link https://www.ag-grid.com/
12355 * @license MIT
12356 */
12357function convertToSet(list) {
12358 var set = new Set();
12359 list.forEach(function (x) { return set.add(x); });
12360 return set;
12361}
12362
12363
12364
12365
12366/***/ }),
12367/* 53 */
12368/***/ (function(module, __webpack_exports__, __webpack_require__) {
12369
12370"use strict";
12371__webpack_require__.r(__webpack_exports__);
12372/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NumberSequence", function() { return NumberSequence; });
12373/**
12374 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12375 * @version v27.3.0
12376 * @link https://www.ag-grid.com/
12377 * @license MIT
12378 */
12379var NumberSequence = /** @class */ (function () {
12380 function NumberSequence(initValue, step) {
12381 if (initValue === void 0) { initValue = 0; }
12382 if (step === void 0) { step = 1; }
12383 this.nextValue = initValue;
12384 this.step = step;
12385 }
12386 NumberSequence.prototype.next = function () {
12387 var valToReturn = this.nextValue;
12388 this.nextValue += this.step;
12389 return valToReturn;
12390 };
12391 NumberSequence.prototype.peek = function () {
12392 return this.nextValue;
12393 };
12394 NumberSequence.prototype.skip = function (count) {
12395 this.nextValue += count;
12396 };
12397 return NumberSequence;
12398}());
12399
12400
12401
12402
12403
12404/***/ }),
12405/* 54 */
12406/***/ (function(module, __webpack_exports__, __webpack_require__) {
12407
12408"use strict";
12409__webpack_require__.r(__webpack_exports__);
12410/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgPromiseStatus", function() { return AgPromiseStatus; });
12411/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgPromise", function() { return AgPromise; });
12412/**
12413 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12414 * @version v27.3.0
12415 * @link https://www.ag-grid.com/
12416 * @license MIT
12417 */
12418var AgPromiseStatus;
12419(function (AgPromiseStatus) {
12420 AgPromiseStatus[AgPromiseStatus["IN_PROGRESS"] = 0] = "IN_PROGRESS";
12421 AgPromiseStatus[AgPromiseStatus["RESOLVED"] = 1] = "RESOLVED";
12422})(AgPromiseStatus || (AgPromiseStatus = {}));
12423var AgPromise = /** @class */ (function () {
12424 function AgPromise(callback) {
12425 var _this = this;
12426 this.status = AgPromiseStatus.IN_PROGRESS;
12427 this.resolution = null;
12428 this.waiters = [];
12429 callback(function (value) { return _this.onDone(value); }, function (params) { return _this.onReject(params); });
12430 }
12431 AgPromise.all = function (promises) {
12432 return new AgPromise(function (resolve) {
12433 var remainingToResolve = promises.length;
12434 var combinedValues = new Array(remainingToResolve);
12435 promises.forEach(function (promise, index) {
12436 promise.then(function (value) {
12437 combinedValues[index] = value;
12438 remainingToResolve--;
12439 if (remainingToResolve === 0) {
12440 resolve(combinedValues);
12441 }
12442 });
12443 });
12444 });
12445 };
12446 AgPromise.resolve = function (value) {
12447 if (value === void 0) { value = null; }
12448 return new AgPromise(function (resolve) { return resolve(value); });
12449 };
12450 AgPromise.prototype.then = function (func) {
12451 var _this = this;
12452 return new AgPromise(function (resolve) {
12453 if (_this.status === AgPromiseStatus.RESOLVED) {
12454 resolve(func(_this.resolution));
12455 }
12456 else {
12457 _this.waiters.push(function (value) { return resolve(func(value)); });
12458 }
12459 });
12460 };
12461 AgPromise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {
12462 return this.status === AgPromiseStatus.RESOLVED ? ifResolved(this.resolution) : ifNotResolvedValue;
12463 };
12464 AgPromise.prototype.onDone = function (value) {
12465 this.status = AgPromiseStatus.RESOLVED;
12466 this.resolution = value;
12467 this.waiters.forEach(function (waiter) { return waiter(value); });
12468 };
12469 AgPromise.prototype.onReject = function (params) {
12470 console.warn('TBI');
12471 };
12472 return AgPromise;
12473}());
12474
12475
12476
12477
12478
12479/***/ }),
12480/* 55 */
12481/***/ (function(module, __webpack_exports__, __webpack_require__) {
12482
12483"use strict";
12484__webpack_require__.r(__webpack_exports__);
12485/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return Timer; });
12486/**
12487 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12488 * @version v27.3.0
12489 * @link https://www.ag-grid.com/
12490 * @license MIT
12491 */
12492/**
12493 * A Util Class only used when debugging for printing time to console
12494 */
12495var Timer = /** @class */ (function () {
12496 function Timer() {
12497 this.timestamp = new Date().getTime();
12498 }
12499 Timer.prototype.print = function (msg) {
12500 var duration = (new Date().getTime()) - this.timestamp;
12501 console.info(msg + " = " + duration);
12502 this.timestamp = new Date().getTime();
12503 };
12504 return Timer;
12505}());
12506
12507
12508
12509
12510
12511/***/ }),
12512/* 56 */
12513/***/ (function(module, __webpack_exports__, __webpack_require__) {
12514
12515"use strict";
12516__webpack_require__.r(__webpack_exports__);
12517/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CustomTooltipFeature", function() { return CustomTooltipFeature; });
12518/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
12519/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
12520/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
12521/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
12522/**
12523 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12524 * @version v27.3.0
12525 * @link https://www.ag-grid.com/
12526 * @license MIT
12527 */
12528var __extends = (undefined && undefined.__extends) || (function () {
12529 var extendStatics = function (d, b) {
12530 extendStatics = Object.setPrototypeOf ||
12531 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
12532 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
12533 return extendStatics(d, b);
12534 };
12535 return function (d, b) {
12536 extendStatics(d, b);
12537 function __() { this.constructor = d; }
12538 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12539 };
12540})();
12541var __assign = (undefined && undefined.__assign) || function () {
12542 __assign = Object.assign || function(t) {
12543 for (var s, i = 1, n = arguments.length; i < n; i++) {
12544 s = arguments[i];
12545 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12546 t[p] = s[p];
12547 }
12548 return t;
12549 };
12550 return __assign.apply(this, arguments);
12551};
12552var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
12553 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
12554 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12555 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;
12556 return c > 3 && r && Object.defineProperty(target, key, r), r;
12557};
12558
12559
12560
12561
12562var TooltipStates;
12563(function (TooltipStates) {
12564 TooltipStates[TooltipStates["NOTHING"] = 0] = "NOTHING";
12565 TooltipStates[TooltipStates["WAITING_TO_SHOW"] = 1] = "WAITING_TO_SHOW";
12566 TooltipStates[TooltipStates["SHOWING"] = 2] = "SHOWING";
12567})(TooltipStates || (TooltipStates = {}));
12568var CustomTooltipFeature = /** @class */ (function (_super) {
12569 __extends(CustomTooltipFeature, _super);
12570 function CustomTooltipFeature(parentComp) {
12571 var _this = _super.call(this) || this;
12572 _this.DEFAULT_SHOW_TOOLTIP_DELAY = 2000;
12573 _this.DEFAULT_HIDE_TOOLTIP_DELAY = 10000;
12574 _this.SHOW_QUICK_TOOLTIP_DIFF = 1000;
12575 _this.FADE_OUT_TOOLTIP_TIMEOUT = 1000;
12576 _this.state = TooltipStates.NOTHING;
12577 // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to
12578 // async we could request two tooltips before the first instance returns, in which case we should
12579 // disregard the second instance.
12580 _this.tooltipInstanceCount = 0;
12581 _this.tooltipMouseTrack = false;
12582 _this.parentComp = parentComp;
12583 return _this;
12584 }
12585 CustomTooltipFeature.prototype.postConstruct = function () {
12586 this.tooltipShowDelay = this.gridOptionsWrapper.getTooltipDelay('show') || this.DEFAULT_SHOW_TOOLTIP_DELAY;
12587 this.tooltipHideDelay = this.gridOptionsWrapper.getTooltipDelay('hide') || this.DEFAULT_HIDE_TOOLTIP_DELAY;
12588 this.tooltipMouseTrack = this.gridOptionsWrapper.isTooltipMouseTrack();
12589 var el = this.parentComp.getGui();
12590 this.addManagedListener(el, 'mouseenter', this.onMouseEnter.bind(this));
12591 this.addManagedListener(el, 'mouseleave', this.onMouseLeave.bind(this));
12592 this.addManagedListener(el, 'mousemove', this.onMouseMove.bind(this));
12593 this.addManagedListener(el, 'mousedown', this.onMouseDown.bind(this));
12594 this.addManagedListener(el, 'keydown', this.onKeyDown.bind(this));
12595 };
12596 CustomTooltipFeature.prototype.destroy = function () {
12597 // if this component gets destroyed while tooltip is showing, need to make sure
12598 // we don't end with no mouseLeave event resulting in zombie tooltip
12599 this.setToDoNothing();
12600 _super.prototype.destroy.call(this);
12601 };
12602 CustomTooltipFeature.prototype.onMouseEnter = function (e) {
12603 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["isIOSUserAgent"])()) {
12604 return;
12605 }
12606 // every mouseenter should be following by a mouseleave, however for some unkonwn, it's possible for
12607 // mouseenter to be called twice in a row, which can happen if editing the cell. this was reported
12608 // in https://ag-grid.atlassian.net/browse/AG-4422. to get around this, we check the state, and if
12609 // state is !=nothing, then we know mouseenter was already received.
12610 if (this.state != TooltipStates.NOTHING) {
12611 return;
12612 }
12613 // if another tooltip was hidden very recently, we only wait 200ms to show, not the normal waiting time
12614 var delay = this.isLastTooltipHiddenRecently() ? 200 : this.tooltipShowDelay;
12615 this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);
12616 this.lastMouseEvent = e;
12617 this.state = TooltipStates.WAITING_TO_SHOW;
12618 };
12619 CustomTooltipFeature.prototype.onMouseLeave = function () {
12620 this.setToDoNothing();
12621 };
12622 CustomTooltipFeature.prototype.onKeyDown = function () {
12623 this.setToDoNothing();
12624 };
12625 CustomTooltipFeature.prototype.setToDoNothing = function () {
12626 if (this.state === TooltipStates.SHOWING) {
12627 this.hideTooltip();
12628 }
12629 this.clearTimeouts();
12630 this.state = TooltipStates.NOTHING;
12631 };
12632 CustomTooltipFeature.prototype.onMouseMove = function (e) {
12633 // there is a delay from the time we mouseOver a component and the time the
12634 // tooltip is displayed, so we need to track mousemove to be able to correctly
12635 // position the tooltip when showTooltip is called.
12636 this.lastMouseEvent = e;
12637 if (this.tooltipMouseTrack &&
12638 this.state === TooltipStates.SHOWING &&
12639 this.tooltipComp) {
12640 this.positionTooltipUnderLastMouseEvent();
12641 }
12642 };
12643 CustomTooltipFeature.prototype.onMouseDown = function () {
12644 this.setToDoNothing();
12645 };
12646 CustomTooltipFeature.prototype.hideTooltip = function () {
12647 // check if comp exists - due to async, although we asked for
12648 // one, the instance may not be back yet
12649 if (this.tooltipComp) {
12650 this.destroyTooltipComp();
12651 CustomTooltipFeature.lastTooltipHideTime = new Date().getTime();
12652 }
12653 this.state = TooltipStates.NOTHING;
12654 };
12655 CustomTooltipFeature.prototype.destroyTooltipComp = function () {
12656 var _this = this;
12657 // add class to fade out the tooltip
12658 this.tooltipComp.getGui().classList.add('ag-tooltip-hiding');
12659 // make local copies of these variables, as we use them in the async function below,
12660 // and we clear then to 'undefined' later, so need to take a copy before they are undefined.
12661 var tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;
12662 var tooltipComp = this.tooltipComp;
12663 window.setTimeout(function () {
12664 tooltipPopupDestroyFunc();
12665 _this.getContext().destroyBean(tooltipComp);
12666 }, this.FADE_OUT_TOOLTIP_TIMEOUT);
12667 this.tooltipPopupDestroyFunc = undefined;
12668 this.tooltipComp = undefined;
12669 };
12670 CustomTooltipFeature.prototype.isLastTooltipHiddenRecently = function () {
12671 // return true if <1000ms since last time we hid a tooltip
12672 var now = new Date().getTime();
12673 var then = CustomTooltipFeature.lastTooltipHideTime;
12674 return (now - then) < this.SHOW_QUICK_TOOLTIP_DIFF;
12675 };
12676 CustomTooltipFeature.prototype.showTooltip = function () {
12677 var params = __assign({}, this.parentComp.getTooltipParams());
12678 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(params.value)) {
12679 this.setToDoNothing();
12680 return;
12681 }
12682 this.state = TooltipStates.SHOWING;
12683 this.tooltipInstanceCount++;
12684 // we pass in tooltipInstanceCount so the callback knows what the count was when
12685 // we requested the tooltip, so if another tooltip was requested in the mean time
12686 // we disregard it
12687 var callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);
12688 var userDetails = this.userComponentFactory.getTooltipCompDetails(params);
12689 userDetails.newAgStackInstance().then(callback);
12690 };
12691 CustomTooltipFeature.prototype.newTooltipComponentCallback = function (tooltipInstanceCopy, tooltipComp) {
12692 var compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;
12693 if (compNoLongerNeeded) {
12694 this.getContext().destroyBean(tooltipComp);
12695 return;
12696 }
12697 var eGui = tooltipComp.getGui();
12698 this.tooltipComp = tooltipComp;
12699 if (!eGui.classList.contains('ag-tooltip')) {
12700 eGui.classList.add('ag-tooltip-custom');
12701 }
12702 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
12703 var addPopupRes = this.popupService.addPopup({
12704 eChild: eGui,
12705 ariaLabel: translate('ariaLabelTooltip', 'Tooltip')
12706 });
12707 if (addPopupRes) {
12708 this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;
12709 }
12710 // this.tooltipPopupDestroyFunc = this.popupService.addPopup(false, eGui, false);
12711 this.positionTooltipUnderLastMouseEvent();
12712 this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.tooltipHideDelay);
12713 };
12714 CustomTooltipFeature.prototype.positionTooltipUnderLastMouseEvent = function () {
12715 this.popupService.positionPopupUnderMouseEvent({
12716 type: 'tooltip',
12717 mouseEvent: this.lastMouseEvent,
12718 ePopup: this.tooltipComp.getGui(),
12719 nudgeY: 18
12720 });
12721 };
12722 CustomTooltipFeature.prototype.clearTimeouts = function () {
12723 if (this.showTooltipTimeoutId) {
12724 window.clearTimeout(this.showTooltipTimeoutId);
12725 this.showTooltipTimeoutId = undefined;
12726 }
12727 if (this.hideTooltipTimeoutId) {
12728 window.clearTimeout(this.hideTooltipTimeoutId);
12729 this.hideTooltipTimeoutId = undefined;
12730 }
12731 };
12732 __decorate([
12733 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
12734 ], CustomTooltipFeature.prototype, "popupService", void 0);
12735 __decorate([
12736 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentFactory')
12737 ], CustomTooltipFeature.prototype, "userComponentFactory", void 0);
12738 __decorate([
12739 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
12740 ], CustomTooltipFeature.prototype, "columnApi", void 0);
12741 __decorate([
12742 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
12743 ], CustomTooltipFeature.prototype, "gridApi", void 0);
12744 __decorate([
12745 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
12746 ], CustomTooltipFeature.prototype, "postConstruct", null);
12747 return CustomTooltipFeature;
12748}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
12749
12750
12751
12752
12753
12754/***/ }),
12755/* 57 */
12756/***/ (function(module, __webpack_exports__, __webpack_require__) {
12757
12758"use strict";
12759__webpack_require__.r(__webpack_exports__);
12760/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QuerySelector", function() { return QuerySelector; });
12761/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RefSelector", function() { return RefSelector; });
12762/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
12763/**
12764 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12765 * @version v27.3.0
12766 * @link https://www.ag-grid.com/
12767 * @license MIT
12768 */
12769
12770function QuerySelector(selector) {
12771 return querySelectorFunc.bind(this, selector, undefined);
12772}
12773function RefSelector(ref) {
12774 return querySelectorFunc.bind(this, "[ref=" + ref + "]", ref);
12775}
12776function querySelectorFunc(selector, refSelector, classPrototype, methodOrAttributeName, index) {
12777 if (selector === null) {
12778 console.error('AG Grid: QuerySelector selector should not be null');
12779 return;
12780 }
12781 if (typeof index === 'number') {
12782 console.error('AG Grid: QuerySelector should be on an attribute');
12783 return;
12784 }
12785 addToObjectProps(classPrototype, 'querySelectors', {
12786 attributeName: methodOrAttributeName,
12787 querySelector: selector,
12788 refSelector: refSelector
12789 });
12790}
12791// // think we should take this out, put property bindings on the
12792// export function Method(eventName?: string): Function {
12793// return methodFunc.bind(this, eventName);
12794// }
12795//
12796// function methodFunc(alias: string, target: Object, methodName: string) {
12797// if (alias === null) {
12798// console.error("AG Grid: EventListener eventName should not be null");
12799// return;
12800// }
12801//
12802// addToObjectProps(target, 'methods', {
12803// methodName: methodName,
12804// alias: alias
12805// });
12806// }
12807function addToObjectProps(target, key, value) {
12808 // it's an attribute on the class
12809 var props = getOrCreateProps(target, Object(_utils_function__WEBPACK_IMPORTED_MODULE_0__["getFunctionName"])(target.constructor));
12810 if (!props[key]) {
12811 props[key] = [];
12812 }
12813 props[key].push(value);
12814}
12815function getOrCreateProps(target, instanceName) {
12816 if (!target.__agComponentMetaData) {
12817 target.__agComponentMetaData = {};
12818 }
12819 if (!target.__agComponentMetaData[instanceName]) {
12820 target.__agComponentMetaData[instanceName] = {};
12821 }
12822 return target.__agComponentMetaData[instanceName];
12823}
12824
12825
12826
12827
12828/***/ }),
12829/* 58 */
12830/***/ (function(module, __webpack_exports__, __webpack_require__) {
12831
12832"use strict";
12833__webpack_require__.r(__webpack_exports__);
12834/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DateFilter", function() { return DateFilter; });
12835/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
12836/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
12837/* harmony import */ var _dateCompWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59);
12838/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(60);
12839/* harmony import */ var _scalarFilter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(72);
12840/* harmony import */ var _utils_date__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45);
12841/**
12842 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12843 * @version v27.3.0
12844 * @link https://www.ag-grid.com/
12845 * @license MIT
12846 */
12847var __extends = (undefined && undefined.__extends) || (function () {
12848 var extendStatics = function (d, b) {
12849 extendStatics = Object.setPrototypeOf ||
12850 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
12851 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
12852 return extendStatics(d, b);
12853 };
12854 return function (d, b) {
12855 extendStatics(d, b);
12856 function __() { this.constructor = d; }
12857 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12858 };
12859})();
12860var __assign = (undefined && undefined.__assign) || function () {
12861 __assign = Object.assign || function(t) {
12862 for (var s, i = 1, n = arguments.length; i < n; i++) {
12863 s = arguments[i];
12864 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12865 t[p] = s[p];
12866 }
12867 return t;
12868 };
12869 return __assign.apply(this, arguments);
12870};
12871var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
12872 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
12873 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12874 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;
12875 return c > 3 && r && Object.defineProperty(target, key, r), r;
12876};
12877
12878
12879
12880
12881
12882
12883var DEFAULT_MIN_YEAR = 1000;
12884var DEFAULT_MAX_YEAR = Infinity;
12885var DateFilter = /** @class */ (function (_super) {
12886 __extends(DateFilter, _super);
12887 function DateFilter() {
12888 var _this = _super.call(this, 'dateFilter') || this;
12889 _this.minValidYear = DEFAULT_MIN_YEAR;
12890 _this.maxValidYear = DEFAULT_MAX_YEAR;
12891 return _this;
12892 }
12893 DateFilter.prototype.afterGuiAttached = function (params) {
12894 _super.prototype.afterGuiAttached.call(this, params);
12895 this.dateCondition1FromComp.afterGuiAttached(params);
12896 };
12897 DateFilter.prototype.mapValuesFromModel = function (filterModel) {
12898 // unlike the other filters, we do two things here:
12899 // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'
12900 // are in different locations in Date and Number filter models)
12901 // 2) convert the type (because Date filter uses Dates, however model is 'string')
12902 //
12903 // NOTE: The conversion of string to date also removes the timezone - i.e. when user picks
12904 // a date from the UI, it will have timezone info in it. This is lost when creating
12905 // the model. When we recreate the date again here, it's without a timezone.
12906 var _a = filterModel || {}, dateFrom = _a.dateFrom, dateTo = _a.dateTo, type = _a.type;
12907 return [
12908 dateFrom && Object(_utils_date__WEBPACK_IMPORTED_MODULE_5__["parseDateTimeFromString"])(dateFrom) || null,
12909 dateTo && Object(_utils_date__WEBPACK_IMPORTED_MODULE_5__["parseDateTimeFromString"])(dateTo) || null,
12910 ].slice(0, this.getNumberOfInputs(type));
12911 };
12912 DateFilter.prototype.comparator = function () {
12913 return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);
12914 };
12915 DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {
12916 // The default comparator assumes that the cellValue is a date
12917 var cellAsDate = cellValue;
12918 if (cellValue == null || cellAsDate < filterDate) {
12919 return -1;
12920 }
12921 if (cellAsDate > filterDate) {
12922 return 1;
12923 }
12924 return 0;
12925 };
12926 DateFilter.prototype.setParams = function (params) {
12927 _super.prototype.setParams.call(this, params);
12928 this.dateFilterParams = params;
12929 var yearParser = function (param, fallback) {
12930 if (params[param] != null) {
12931 if (!isNaN(params[param])) {
12932 return params[param] == null ? fallback : Number(params[param]);
12933 }
12934 else {
12935 console.warn("AG Grid: DateFilter " + param + " is not a number");
12936 }
12937 }
12938 return fallback;
12939 };
12940 this.minValidYear = yearParser('minValidYear', DEFAULT_MIN_YEAR);
12941 this.maxValidYear = yearParser('maxValidYear', DEFAULT_MAX_YEAR);
12942 if (this.minValidYear > this.maxValidYear) {
12943 console.warn("AG Grid: DateFilter minValidYear should be <= maxValidYear");
12944 }
12945 this.createDateComponents();
12946 };
12947 DateFilter.prototype.createDateComponents = function () {
12948 var _this = this;
12949 var createDateCompWrapper = function (element) {
12950 return new _dateCompWrapper__WEBPACK_IMPORTED_MODULE_2__["DateCompWrapper"](_this.getContext(), _this.userComponentFactory, {
12951 onDateChanged: function () { return _this.onUiChanged(); },
12952 filterParams: _this.dateFilterParams
12953 }, element);
12954 };
12955 this.dateCondition1FromComp = createDateCompWrapper(this.eCondition1PanelFrom);
12956 this.dateCondition1ToComp = createDateCompWrapper(this.eCondition1PanelTo);
12957 this.dateCondition2FromComp = createDateCompWrapper(this.eCondition2PanelFrom);
12958 this.dateCondition2ToComp = createDateCompWrapper(this.eCondition2PanelTo);
12959 this.addDestroyFunc(function () {
12960 _this.forEachInput(function (element) { return element.destroy(); });
12961 });
12962 };
12963 DateFilter.prototype.setElementValue = function (element, value, silent) {
12964 element.setDate(value);
12965 };
12966 DateFilter.prototype.setElementDisplayed = function (element, displayed) {
12967 element.setDisplayed(displayed);
12968 };
12969 DateFilter.prototype.setElementDisabled = function (element, disabled) {
12970 element.setDisabled(disabled);
12971 };
12972 DateFilter.prototype.getDefaultFilterOptions = function () {
12973 return DateFilter.DEFAULT_FILTER_OPTIONS;
12974 };
12975 DateFilter.prototype.createValueTemplate = function (position) {
12976 var pos = position === _simpleFilter__WEBPACK_IMPORTED_MODULE_3__["ConditionPosition"].One ? '1' : '2';
12977 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>";
12978 };
12979 DateFilter.prototype.isConditionUiComplete = function (position) {
12980 var _this = this;
12981 if (!_super.prototype.isConditionUiComplete.call(this, position)) {
12982 return false;
12983 }
12984 var isValidDate = function (value) { return value != null
12985 && value.getUTCFullYear() >= _this.minValidYear
12986 && value.getUTCFullYear() <= _this.maxValidYear; };
12987 var valid = true;
12988 this.forEachInput(function (element, index, elPosition, numberOfInputs) {
12989 if (elPosition !== position || !valid || index >= numberOfInputs) {
12990 return;
12991 }
12992 valid = valid && isValidDate(element.getDate());
12993 });
12994 return valid;
12995 };
12996 DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {
12997 return aSimple.dateFrom === bSimple.dateFrom
12998 && aSimple.dateTo === bSimple.dateTo
12999 && aSimple.type === bSimple.type;
13000 };
13001 DateFilter.prototype.getFilterType = function () {
13002 return 'date';
13003 };
13004 DateFilter.prototype.createCondition = function (position) {
13005 var type = this.getConditionTypes()[position];
13006 var model = {};
13007 var values = this.getValues(position);
13008 if (values.length > 0) {
13009 model.dateFrom = Object(_utils_date__WEBPACK_IMPORTED_MODULE_5__["serialiseDate"])(values[0]);
13010 }
13011 if (values.length > 1) {
13012 model.dateTo = Object(_utils_date__WEBPACK_IMPORTED_MODULE_5__["serialiseDate"])(values[1]);
13013 }
13014 return __assign({ dateFrom: null, dateTo: null, filterType: this.getFilterType(), type: type }, model);
13015 };
13016 DateFilter.prototype.resetPlaceholder = function () {
13017 var globalTranslate = this.gridOptionsWrapper.getLocaleTextFunc();
13018 var placeholder = this.translate('dateFormatOoo');
13019 var ariaLabel = globalTranslate('ariaFilterValue', 'Filter Value');
13020 this.forEachInput(function (element) {
13021 element.setInputPlaceholder(placeholder);
13022 element.setInputAriaLabel(ariaLabel);
13023 });
13024 };
13025 DateFilter.prototype.getInputs = function () {
13026 return [
13027 [this.dateCondition1FromComp, this.dateCondition1ToComp],
13028 [this.dateCondition2FromComp, this.dateCondition2ToComp],
13029 ];
13030 };
13031 DateFilter.prototype.getValues = function (position) {
13032 var result = [];
13033 this.forEachInput(function (element, index, elPosition, numberOfInputs) {
13034 if (position === elPosition && index < numberOfInputs) {
13035 result.push(element.getDate());
13036 }
13037 });
13038 return result;
13039 };
13040 DateFilter.DEFAULT_FILTER_OPTIONS = [
13041 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].EQUALS,
13042 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].GREATER_THAN,
13043 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].LESS_THAN,
13044 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].NOT_EQUAL,
13045 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].IN_RANGE,
13046 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].BLANK,
13047 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].NOT_BLANK,
13048 ];
13049 __decorate([
13050 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition1PanelFrom')
13051 ], DateFilter.prototype, "eCondition1PanelFrom", void 0);
13052 __decorate([
13053 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition1PanelTo')
13054 ], DateFilter.prototype, "eCondition1PanelTo", void 0);
13055 __decorate([
13056 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition2PanelFrom')
13057 ], DateFilter.prototype, "eCondition2PanelFrom", void 0);
13058 __decorate([
13059 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition2PanelTo')
13060 ], DateFilter.prototype, "eCondition2PanelTo", void 0);
13061 __decorate([
13062 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
13063 ], DateFilter.prototype, "userComponentFactory", void 0);
13064 return DateFilter;
13065}(_scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"]));
13066
13067
13068
13069
13070
13071/***/ }),
13072/* 59 */
13073/***/ (function(module, __webpack_exports__, __webpack_require__) {
13074
13075"use strict";
13076__webpack_require__.r(__webpack_exports__);
13077/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DateCompWrapper", function() { return DateCompWrapper; });
13078/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
13079/**
13080 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
13081 * @version v27.3.0
13082 * @link https://www.ag-grid.com/
13083 * @license MIT
13084 */
13085
13086/** Provides sync access to async component. Date component can be lazy created - this class encapsulates
13087 * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */
13088var DateCompWrapper = /** @class */ (function () {
13089 function DateCompWrapper(context, userComponentFactory, dateComponentParams, eParent) {
13090 var _this = this;
13091 this.alive = true;
13092 this.context = context;
13093 this.eParent = eParent;
13094 var compDetails = userComponentFactory.getDateCompDetails(dateComponentParams);
13095 var promise = compDetails.newAgStackInstance();
13096 promise.then(function (dateComp) {
13097 // because async, check the filter still exists after component comes back
13098 if (!_this.alive) {
13099 context.destroyBean(dateComp);
13100 return;
13101 }
13102 _this.dateComp = dateComp;
13103 if (!dateComp) {
13104 return;
13105 }
13106 eParent.appendChild(dateComp.getGui());
13107 if (dateComp.afterGuiAttached) {
13108 dateComp.afterGuiAttached();
13109 }
13110 if (_this.tempValue) {
13111 dateComp.setDate(_this.tempValue);
13112 }
13113 if (_this.disabled != null) {
13114 _this.setDateCompDisabled(_this.disabled);
13115 }
13116 });
13117 }
13118 DateCompWrapper.prototype.destroy = function () {
13119 this.alive = false;
13120 this.dateComp = this.context.destroyBean(this.dateComp);
13121 };
13122 DateCompWrapper.prototype.getDate = function () {
13123 return this.dateComp ? this.dateComp.getDate() : this.tempValue;
13124 };
13125 DateCompWrapper.prototype.setDate = function (value) {
13126 if (this.dateComp) {
13127 this.dateComp.setDate(value);
13128 }
13129 else {
13130 this.tempValue = value;
13131 }
13132 };
13133 DateCompWrapper.prototype.setDisabled = function (disabled) {
13134 if (this.dateComp) {
13135 this.setDateCompDisabled(disabled);
13136 }
13137 else {
13138 this.disabled = disabled;
13139 }
13140 };
13141 DateCompWrapper.prototype.setDisplayed = function (displayed) {
13142 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__["setDisplayed"])(this.eParent, displayed);
13143 };
13144 DateCompWrapper.prototype.setInputPlaceholder = function (placeholder) {
13145 if (this.dateComp && this.dateComp.setInputPlaceholder) {
13146 this.dateComp.setInputPlaceholder(placeholder);
13147 }
13148 };
13149 DateCompWrapper.prototype.setInputAriaLabel = function (label) {
13150 if (this.dateComp && this.dateComp.setInputAriaLabel) {
13151 this.dateComp.setInputAriaLabel(label);
13152 }
13153 };
13154 DateCompWrapper.prototype.afterGuiAttached = function (params) {
13155 if (this.dateComp && typeof this.dateComp.afterGuiAttached === 'function') {
13156 this.dateComp.afterGuiAttached(params);
13157 }
13158 };
13159 DateCompWrapper.prototype.setDateCompDisabled = function (disabled) {
13160 if (this.dateComp == null) {
13161 return;
13162 }
13163 if (this.dateComp.setDisabled == null) {
13164 return;
13165 }
13166 this.dateComp.setDisabled(disabled);
13167 };
13168 return DateCompWrapper;
13169}());
13170
13171
13172
13173
13174
13175/***/ }),
13176/* 60 */
13177/***/ (function(module, __webpack_exports__, __webpack_require__) {
13178
13179"use strict";
13180__webpack_require__.r(__webpack_exports__);
13181/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConditionPosition", function() { return ConditionPosition; });
13182/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleFilter", function() { return SimpleFilter; });
13183/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
13184/* harmony import */ var _optionsFactory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61);
13185/* harmony import */ var _providedFilter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62);
13186/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37);
13187/* harmony import */ var _widgets_agSelect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(66);
13188/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18);
13189/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
13190/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(36);
13191/* harmony import */ var _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(71);
13192/**
13193 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
13194 * @version v27.3.0
13195 * @link https://www.ag-grid.com/
13196 * @license MIT
13197 */
13198var __extends = (undefined && undefined.__extends) || (function () {
13199 var extendStatics = function (d, b) {
13200 extendStatics = Object.setPrototypeOf ||
13201 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
13202 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
13203 return extendStatics(d, b);
13204 };
13205 return function (d, b) {
13206 extendStatics(d, b);
13207 function __() { this.constructor = d; }
13208 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13209 };
13210})();
13211var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
13212 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13213 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
13214 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;
13215 return c > 3 && r && Object.defineProperty(target, key, r), r;
13216};
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226var ConditionPosition;
13227(function (ConditionPosition) {
13228 ConditionPosition[ConditionPosition["One"] = 0] = "One";
13229 ConditionPosition[ConditionPosition["Two"] = 1] = "Two";
13230})(ConditionPosition || (ConditionPosition = {}));
13231/**
13232 * Every filter with a dropdown where the user can specify a comparing type against the filter values.
13233 *
13234 * @param M type of filter-model managed by the concrete sub-class that extends this type
13235 * @param V type of value managed by the concrete sub-class that extends this type
13236 * @param E type of UI element used for collecting user-input
13237 */
13238var SimpleFilter = /** @class */ (function (_super) {
13239 __extends(SimpleFilter, _super);
13240 function SimpleFilter() {
13241 return _super !== null && _super.apply(this, arguments) || this;
13242 }
13243 SimpleFilter.prototype.getNumberOfInputs = function (type) {
13244 var customOpts = this.optionsFactory.getCustomOption(type);
13245 if (customOpts) {
13246 var numberOfInputs = customOpts.numberOfInputs;
13247 return numberOfInputs != null ? numberOfInputs : 1;
13248 }
13249 var zeroInputTypes = [
13250 SimpleFilter.EMPTY, SimpleFilter.NOT_BLANK, SimpleFilter.BLANK,
13251 ];
13252 if (type && zeroInputTypes.indexOf(type) >= 0) {
13253 return 0;
13254 }
13255 else if (type === SimpleFilter.IN_RANGE) {
13256 return 2;
13257 }
13258 return 1;
13259 };
13260 // floating filter calls this when user applies filter from floating filter
13261 SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {
13262 this.setTypeFromFloatingFilter(type);
13263 this.setValueFromFloatingFilter(value);
13264 this.onUiChanged(true);
13265 };
13266 SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {
13267 this.eType1.setValue(type);
13268 this.eType2.setValue(this.optionsFactory.getDefaultOption());
13269 (this.isDefaultOperator('AND') ? this.eJoinOperatorAnd : this.eJoinOperatorOr).setValue(true);
13270 };
13271 SimpleFilter.prototype.getModelFromUi = function () {
13272 if (!this.isConditionUiComplete(ConditionPosition.One)) {
13273 return null;
13274 }
13275 if (this.isAllowTwoConditions() && this.isConditionUiComplete(ConditionPosition.Two)) {
13276 return {
13277 filterType: this.getFilterType(),
13278 operator: this.getJoinOperator(),
13279 condition1: this.createCondition(ConditionPosition.One),
13280 condition2: this.createCondition(ConditionPosition.Two)
13281 };
13282 }
13283 return this.createCondition(ConditionPosition.One);
13284 };
13285 SimpleFilter.prototype.getConditionTypes = function () {
13286 return [
13287 this.eType1.getValue(),
13288 this.eType2.getValue(),
13289 ];
13290 };
13291 SimpleFilter.prototype.getJoinOperator = function () {
13292 return this.eJoinOperatorOr.getValue() === true ? 'OR' : 'AND';
13293 };
13294 SimpleFilter.prototype.areModelsEqual = function (a, b) {
13295 // both are missing
13296 if (!a && !b) {
13297 return true;
13298 }
13299 // one is missing, other present
13300 if ((!a && b) || (a && !b)) {
13301 return false;
13302 }
13303 // one is combined, the other is not
13304 var aIsSimple = !a.operator;
13305 var bIsSimple = !b.operator;
13306 var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);
13307 if (oneSimpleOneCombined) {
13308 return false;
13309 }
13310 var res;
13311 // otherwise both present, so compare
13312 if (aIsSimple) {
13313 var aSimple = a;
13314 var bSimple = b;
13315 res = this.areSimpleModelsEqual(aSimple, bSimple);
13316 }
13317 else {
13318 var aCombined = a;
13319 var bCombined = b;
13320 res = aCombined.operator === bCombined.operator
13321 && this.areSimpleModelsEqual(aCombined.condition1, bCombined.condition1)
13322 && this.areSimpleModelsEqual(aCombined.condition2, bCombined.condition2);
13323 }
13324 return res;
13325 };
13326 SimpleFilter.prototype.setModelIntoUi = function (model) {
13327 var isCombined = model.operator;
13328 if (isCombined) {
13329 var combinedModel = model;
13330 var orChecked = combinedModel.operator === 'OR';
13331 this.eJoinOperatorAnd.setValue(!orChecked);
13332 this.eJoinOperatorOr.setValue(orChecked);
13333 this.eType1.setValue(combinedModel.condition1.type);
13334 this.eType2.setValue(combinedModel.condition2.type);
13335 this.setConditionIntoUi(combinedModel.condition1, ConditionPosition.One);
13336 this.setConditionIntoUi(combinedModel.condition2, ConditionPosition.Two);
13337 }
13338 else {
13339 var simpleModel = model;
13340 this.eJoinOperatorAnd.setValue(this.isDefaultOperator('AND'));
13341 this.eJoinOperatorOr.setValue(this.isDefaultOperator('OR'));
13342 this.eType1.setValue(simpleModel.type);
13343 this.eType2.setValue(this.optionsFactory.getDefaultOption());
13344 this.setConditionIntoUi(simpleModel, ConditionPosition.One);
13345 this.setConditionIntoUi(null, ConditionPosition.Two);
13346 }
13347 return _utils__WEBPACK_IMPORTED_MODULE_3__["AgPromise"].resolve();
13348 };
13349 SimpleFilter.prototype.doesFilterPass = function (params) {
13350 var _this = this;
13351 var model = this.getModel();
13352 if (model == null) {
13353 return true;
13354 }
13355 var operator = model.operator;
13356 var models = [];
13357 if (operator) {
13358 var combinedModel = model;
13359 models.push(combinedModel.condition1, combinedModel.condition2);
13360 }
13361 else {
13362 models.push(model);
13363 }
13364 var combineFunction = operator && operator === 'OR' ? 'some' : 'every';
13365 return models[combineFunction](function (m) { return _this.individualConditionPasses(params, m); });
13366 };
13367 SimpleFilter.prototype.setParams = function (params) {
13368 _super.prototype.setParams.call(this, params);
13369 this.optionsFactory = new _optionsFactory__WEBPACK_IMPORTED_MODULE_1__["OptionsFactory"]();
13370 this.optionsFactory.init(params, this.getDefaultFilterOptions());
13371 this.allowTwoConditions = !params.suppressAndOrCondition;
13372 this.alwaysShowBothConditions = !!params.alwaysShowBothConditions;
13373 this.defaultJoinOperator = this.getDefaultJoinOperator(params.defaultJoinOperator);
13374 this.putOptionsIntoDropdown();
13375 this.addChangedListeners();
13376 };
13377 SimpleFilter.prototype.getDefaultJoinOperator = function (defaultJoinOperator) {
13378 return Object(_utils_array__WEBPACK_IMPORTED_MODULE_5__["includes"])(['AND', 'OR'], defaultJoinOperator) ? defaultJoinOperator : 'AND';
13379 };
13380 SimpleFilter.prototype.putOptionsIntoDropdown = function () {
13381 var _this = this;
13382 var filterOptions = this.optionsFactory.getFilterOptions();
13383 var eTypes = [this.eType1, this.eType2];
13384 // Add specified options to all condition drop-downs.
13385 filterOptions.forEach(function (option) {
13386 var listOption = typeof option === 'string' ?
13387 _this.createBoilerplateListOption(option) :
13388 _this.createCustomListOption(option);
13389 eTypes.forEach(function (eType) { return eType.addOption(listOption); });
13390 });
13391 // Make drop-downs read-only if there is only one option.
13392 eTypes.forEach(function (eType) { return eType.setDisabled(filterOptions.length <= 1); });
13393 };
13394 SimpleFilter.prototype.createBoilerplateListOption = function (option) {
13395 return { value: option, text: this.translate(option) };
13396 };
13397 SimpleFilter.prototype.createCustomListOption = function (option) {
13398 var displayKey = option.displayKey;
13399 var customOption = this.optionsFactory.getCustomOption(option.displayKey);
13400 return {
13401 value: displayKey,
13402 text: customOption ?
13403 this.gridOptionsWrapper.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) :
13404 this.translate(displayKey),
13405 };
13406 };
13407 SimpleFilter.prototype.isAllowTwoConditions = function () {
13408 return this.allowTwoConditions;
13409 };
13410 SimpleFilter.prototype.createBodyTemplate = function () {
13411 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);
13412 };
13413 SimpleFilter.prototype.getCssIdentifier = function () {
13414 return 'simple-filter';
13415 };
13416 SimpleFilter.prototype.updateUiVisibility = function () {
13417 var _this = this;
13418 var elementConditionGroups = [
13419 [this.eType1],
13420 [this.eType2, this.eJoinOperatorPanel, this.eJoinOperatorAnd, this.eJoinOperatorOr],
13421 ];
13422 var elementBodies = [this.eCondition1Body, this.eCondition2Body];
13423 elementConditionGroups.forEach(function (group, position) {
13424 var visible = _this.isConditionVisible(position);
13425 var disabled = _this.isConditionDisabled(position);
13426 group.forEach(function (element) {
13427 if (element instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"] || element instanceof _widgets_agSelect__WEBPACK_IMPORTED_MODULE_4__["AgSelect"]) {
13428 element.setDisabled(disabled);
13429 element.setDisplayed(visible);
13430 }
13431 else {
13432 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisabled"])(element, disabled);
13433 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisplayed"])(element, visible);
13434 }
13435 });
13436 });
13437 elementBodies.forEach(function (element, index) {
13438 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisplayed"])(element, _this.isConditionBodyVisible(index));
13439 });
13440 this.forEachInput(function (element, index, position, numberOfInputs) {
13441 _this.setElementDisplayed(element, index < numberOfInputs);
13442 _this.setElementDisabled(element, _this.isConditionDisabled(position));
13443 });
13444 this.resetPlaceholder();
13445 };
13446 SimpleFilter.prototype.afterGuiAttached = function (params) {
13447 _super.prototype.afterGuiAttached.call(this, params);
13448 this.resetPlaceholder();
13449 if (!params || (!params.suppressFocus && !this.isReadOnly())) {
13450 var firstInput = this.getInputs()[0][0];
13451 if (!firstInput) {
13452 return;
13453 }
13454 if (firstInput instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"]) {
13455 firstInput.getInputElement().focus();
13456 }
13457 }
13458 };
13459 // allow sub-classes to reset HTML placeholders after UI update.
13460 SimpleFilter.prototype.resetPlaceholder = function () {
13461 var _this = this;
13462 var globalTranslate = this.gridOptionsWrapper.getLocaleTextFunc();
13463 this.forEachInput(function (element, index, _, numberOfInputs) {
13464 if (!(element instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"])) {
13465 return;
13466 }
13467 var placeholder = index === 0 && numberOfInputs > 1 ? 'inRangeStart' :
13468 index === 0 ? 'filterOoo' :
13469 'inRangeEnd';
13470 var ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate('ariaFilterFromValue', 'Filter from value') :
13471 index === 0 ? globalTranslate('ariaFilterValue', 'Filter Value') :
13472 globalTranslate('ariaFilterToValue', 'Filter to Value');
13473 element.setInputPlaceholder(_this.translate(placeholder));
13474 element.setInputAriaLabel(ariaLabel);
13475 });
13476 };
13477 SimpleFilter.prototype.setElementValue = function (element, value, silent) {
13478 if (element instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"]) {
13479 element.setValue(value != null ? String(value) : null, silent);
13480 }
13481 };
13482 SimpleFilter.prototype.setElementDisplayed = function (element, displayed) {
13483 if (element instanceof _widgets_component__WEBPACK_IMPORTED_MODULE_7__["Component"]) {
13484 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisplayed"])(element.getGui(), displayed);
13485 }
13486 };
13487 SimpleFilter.prototype.setElementDisabled = function (element, disabled) {
13488 if (element instanceof _widgets_component__WEBPACK_IMPORTED_MODULE_7__["Component"]) {
13489 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisabled"])(element.getGui(), disabled);
13490 }
13491 };
13492 SimpleFilter.prototype.attachElementOnChange = function (element, listener) {
13493 if (element instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"]) {
13494 element.onValueChange(listener);
13495 }
13496 };
13497 SimpleFilter.prototype.forEachInput = function (cb) {
13498 var _this = this;
13499 var inputs = this.getInputs();
13500 this.getConditionTypes().forEach(function (type, position) {
13501 var numberOfInputs = _this.getNumberOfInputs(type);
13502 for (var index = 0; index < inputs[position].length; index++) {
13503 var input = inputs[position][index];
13504 if (input != null) {
13505 cb(input, index, position, numberOfInputs);
13506 }
13507 }
13508 });
13509 };
13510 SimpleFilter.prototype.isConditionVisible = function (position) {
13511 if (position === 0) {
13512 return true;
13513 } // Position 0 should always be visible.
13514 if (!this.allowTwoConditions) {
13515 return false;
13516 } // Short-circuit if no tail conditions.
13517 if (this.isReadOnly()) {
13518 // Only display a condition when read-only if the condition is complete.
13519 return this.isConditionUiComplete(position);
13520 }
13521 if (this.alwaysShowBothConditions) {
13522 return true;
13523 }
13524 // Only display a 2nd or later condition when the previous condition is complete.
13525 return this.isConditionUiComplete(position - 1);
13526 };
13527 SimpleFilter.prototype.isConditionDisabled = function (position) {
13528 if (this.isReadOnly()) {
13529 return true;
13530 } // Read-only mode trumps everything.
13531 if (!this.isConditionVisible(position)) {
13532 return true;
13533 } // Invisible implies disabled.
13534 if (position === 0) {
13535 return false;
13536 } // Position 0 should typically be editable.
13537 // Only allow editing of a 2nd or later condition if the previous condition is complete.
13538 return !this.isConditionUiComplete(position - 1);
13539 };
13540 SimpleFilter.prototype.isConditionBodyVisible = function (position) {
13541 if (!this.isConditionVisible(position)) {
13542 return false;
13543 }
13544 // Check that the condition needs inputs.
13545 var type = this.getConditionTypes()[position];
13546 var numberOfInputs = this.getNumberOfInputs(type);
13547 return numberOfInputs > 0;
13548 };
13549 // returns true if the UI represents a working filter, eg all parts are filled out.
13550 // eg if text filter and textfield blank then returns false.
13551 SimpleFilter.prototype.isConditionUiComplete = function (position) {
13552 var type = this.getConditionTypes()[position];
13553 if (type === SimpleFilter.EMPTY) {
13554 return false;
13555 }
13556 if (this.getValues(position).some(function (v) { return v == null; })) {
13557 return false;
13558 }
13559 return true;
13560 };
13561 SimpleFilter.prototype.resetUiToDefaults = function (silent) {
13562 var _this = this;
13563 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
13564 var filteringLabel = translate('ariaFilteringOperator', 'Filtering operator');
13565 var uniqueGroupId = 'ag-simple-filter-and-or-' + this.getCompId();
13566 var defaultOption = this.optionsFactory.getDefaultOption();
13567 this.eType1
13568 .setValue(defaultOption, silent)
13569 .setAriaLabel(filteringLabel)
13570 .setDisabled(this.isReadOnly());
13571 this.eType2
13572 .setValue(this.optionsFactory.getDefaultOption(), silent)
13573 .setAriaLabel(filteringLabel)
13574 .setDisabled(this.isReadOnly());
13575 this.eJoinOperatorAnd
13576 .setValue(this.isDefaultOperator('AND'), silent)
13577 .setName(uniqueGroupId)
13578 .setLabel(this.translate('andCondition'))
13579 .setDisabled(this.isReadOnly());
13580 this.eJoinOperatorOr
13581 .setValue(this.isDefaultOperator('OR'), silent)
13582 .setName(uniqueGroupId)
13583 .setLabel(this.translate('orCondition'))
13584 .setDisabled(this.isReadOnly());
13585 this.forEachInput(function (element) {
13586 _this.setElementValue(element, null, silent);
13587 _this.setElementDisabled(element, _this.isReadOnly());
13588 });
13589 this.resetPlaceholder();
13590 return _utils__WEBPACK_IMPORTED_MODULE_3__["AgPromise"].resolve();
13591 };
13592 // puts model values into the UI
13593 SimpleFilter.prototype.setConditionIntoUi = function (model, position) {
13594 var _this = this;
13595 var values = this.mapValuesFromModel(model);
13596 this.forEachInput(function (element, index, elPosition, _) {
13597 if (elPosition !== position) {
13598 return;
13599 }
13600 _this.setElementValue(element, values[index] != null ? values[index] : null);
13601 });
13602 };
13603 // after floating filter changes, this sets the 'value' section. this is implemented by the base class
13604 // (as that's where value is controlled), the 'type' part from the floating filter is dealt with in this class.
13605 SimpleFilter.prototype.setValueFromFloatingFilter = function (value) {
13606 var _this = this;
13607 this.forEachInput(function (element, index, position, _) {
13608 _this.setElementValue(element, index === 0 && position === 0 ? value : null);
13609 });
13610 };
13611 SimpleFilter.prototype.isDefaultOperator = function (operator) {
13612 return operator === this.defaultJoinOperator;
13613 };
13614 SimpleFilter.prototype.addChangedListeners = function () {
13615 var _this = this;
13616 if (this.isReadOnly()) {
13617 return;
13618 }
13619 var listener = function () { return _this.onUiChanged(); };
13620 this.eType1.onValueChange(listener);
13621 this.eType2.onValueChange(listener);
13622 this.eJoinOperatorOr.onValueChange(listener);
13623 this.eJoinOperatorAnd.onValueChange(listener);
13624 this.forEachInput(function (element) {
13625 _this.attachElementOnChange(element, listener);
13626 });
13627 };
13628 /** returns true if the row passes the said condition */
13629 SimpleFilter.prototype.individualConditionPasses = function (params, filterModel) {
13630 var cellValue = this.getCellValue(params.node);
13631 var values = this.mapValuesFromModel(filterModel);
13632 var customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);
13633 var customFilterResult = this.evaluateCustomFilter(customFilterOption, values, cellValue);
13634 if (customFilterResult != null) {
13635 return customFilterResult;
13636 }
13637 if (cellValue == null) {
13638 return this.evaluateNullValue(filterModel.type);
13639 }
13640 return this.evaluateNonNullValue(values, cellValue, filterModel, params);
13641 };
13642 SimpleFilter.prototype.evaluateCustomFilter = function (customFilterOption, values, cellValue) {
13643 if (customFilterOption == null) {
13644 return;
13645 }
13646 var predicate = customFilterOption.predicate;
13647 // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden
13648 if (predicate != null && !values.some(function (v) { return v == null; })) {
13649 return predicate(values, cellValue);
13650 }
13651 // No custom filter invocation, indicate that to the caller.
13652 return;
13653 };
13654 SimpleFilter.prototype.isBlank = function (cellValue) {
13655 return cellValue == null ||
13656 (typeof cellValue === 'string' && cellValue.trim().length === 0);
13657 };
13658 SimpleFilter.EMPTY = 'empty';
13659 SimpleFilter.BLANK = 'blank';
13660 SimpleFilter.NOT_BLANK = 'notBlank';
13661 SimpleFilter.EQUALS = 'equals';
13662 SimpleFilter.NOT_EQUAL = 'notEqual';
13663 SimpleFilter.LESS_THAN = 'lessThan';
13664 SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';
13665 SimpleFilter.GREATER_THAN = 'greaterThan';
13666 SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';
13667 SimpleFilter.IN_RANGE = 'inRange';
13668 SimpleFilter.CONTAINS = 'contains';
13669 SimpleFilter.NOT_CONTAINS = 'notContains';
13670 SimpleFilter.STARTS_WITH = 'startsWith';
13671 SimpleFilter.ENDS_WITH = 'endsWith';
13672 __decorate([
13673 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eOptions1')
13674 ], SimpleFilter.prototype, "eType1", void 0);
13675 __decorate([
13676 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eOptions2')
13677 ], SimpleFilter.prototype, "eType2", void 0);
13678 __decorate([
13679 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eJoinOperatorPanel')
13680 ], SimpleFilter.prototype, "eJoinOperatorPanel", void 0);
13681 __decorate([
13682 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eJoinOperatorAnd')
13683 ], SimpleFilter.prototype, "eJoinOperatorAnd", void 0);
13684 __decorate([
13685 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eJoinOperatorOr')
13686 ], SimpleFilter.prototype, "eJoinOperatorOr", void 0);
13687 __decorate([
13688 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition1Body')
13689 ], SimpleFilter.prototype, "eCondition1Body", void 0);
13690 __decorate([
13691 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition2Body')
13692 ], SimpleFilter.prototype, "eCondition2Body", void 0);
13693 return SimpleFilter;
13694}(_providedFilter__WEBPACK_IMPORTED_MODULE_2__["ProvidedFilter"]));
13695
13696
13697
13698
13699
13700/***/ }),
13701/* 61 */
13702/***/ (function(module, __webpack_exports__, __webpack_require__) {
13703
13704"use strict";
13705__webpack_require__.r(__webpack_exports__);
13706/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OptionsFactory", function() { return OptionsFactory; });
13707/**
13708 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
13709 * @version v27.3.0
13710 * @link https://www.ag-grid.com/
13711 * @license MIT
13712 */
13713var __assign = (undefined && undefined.__assign) || function () {
13714 __assign = Object.assign || function(t) {
13715 for (var s, i = 1, n = arguments.length; i < n; i++) {
13716 s = arguments[i];
13717 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
13718 t[p] = s[p];
13719 }
13720 return t;
13721 };
13722 return __assign.apply(this, arguments);
13723};
13724/* Common logic for options, used by both filters and floating filters. */
13725var OptionsFactory = /** @class */ (function () {
13726 function OptionsFactory() {
13727 this.customFilterOptions = {};
13728 }
13729 OptionsFactory.prototype.init = function (params, defaultOptions) {
13730 this.filterOptions = params.filterOptions || defaultOptions;
13731 this.mapCustomOptions();
13732 this.selectDefaultItem(params);
13733 this.checkForDeprecatedParams();
13734 };
13735 OptionsFactory.prototype.checkForDeprecatedParams = function () {
13736 if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.test != null; })) {
13737 console.warn("AG Grid: [IFilterOptionDef] since v26.2.0, test() has been replaced with predicate().");
13738 }
13739 if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.hideFilterInput != null; })) {
13740 console.warn("AG Grid: [IFilterOptionDef] since v26.2.0, useOfHideFilterInput has been replaced with numberOfInputs.");
13741 }
13742 };
13743 OptionsFactory.prototype.getFilterOptions = function () {
13744 return this.filterOptions;
13745 };
13746 OptionsFactory.prototype.mapCustomOptions = function () {
13747 var _this = this;
13748 if (!this.filterOptions) {
13749 return;
13750 }
13751 this.filterOptions.forEach(function (filterOption) {
13752 if (typeof filterOption === 'string') {
13753 return;
13754 }
13755 var requiredProperties = [['displayKey'], ['displayName'], ['predicate', 'test']];
13756 var propertyCheck = function (keys) {
13757 if (!keys.some(function (key) { return filterOption[key] != null; })) {
13758 console.warn("AG Grid: ignoring FilterOptionDef as it doesn't contain one of '" + keys + "'");
13759 return false;
13760 }
13761 return true;
13762 };
13763 if (!requiredProperties.every(propertyCheck)) {
13764 _this.filterOptions = _this.filterOptions.filter(function (v) { return v === filterOption; }) || [];
13765 return;
13766 }
13767 var test = filterOption.test;
13768 var mutatedFilterOptions = __assign({}, filterOption);
13769 if (test != null && filterOption.predicate == null) {
13770 mutatedFilterOptions.predicate = function (v, cv) { return test(v[0], cv); };
13771 delete mutatedFilterOptions.test;
13772 }
13773 if (mutatedFilterOptions.hideFilterInput && mutatedFilterOptions.numberOfInputs == null) {
13774 mutatedFilterOptions.numberOfInputs = 0;
13775 delete mutatedFilterOptions.hideFilterInput;
13776 }
13777 _this.customFilterOptions[filterOption.displayKey] = mutatedFilterOptions;
13778 });
13779 };
13780 OptionsFactory.prototype.selectDefaultItem = function (params) {
13781 if (params.defaultOption) {
13782 this.defaultOption = params.defaultOption;
13783 }
13784 else if (this.filterOptions.length >= 1) {
13785 var firstFilterOption = this.filterOptions[0];
13786 if (typeof firstFilterOption === 'string') {
13787 this.defaultOption = firstFilterOption;
13788 }
13789 else if (firstFilterOption.displayKey) {
13790 this.defaultOption = firstFilterOption.displayKey;
13791 }
13792 else {
13793 console.warn("AG Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'");
13794 }
13795 }
13796 else {
13797 console.warn('AG Grid: no filter options for filter');
13798 }
13799 };
13800 OptionsFactory.prototype.getDefaultOption = function () {
13801 return this.defaultOption;
13802 };
13803 OptionsFactory.prototype.getCustomOption = function (name) {
13804 return this.customFilterOptions[name];
13805 };
13806 return OptionsFactory;
13807}());
13808
13809
13810
13811
13812
13813/***/ }),
13814/* 62 */
13815/***/ (function(module, __webpack_exports__, __webpack_require__) {
13816
13817"use strict";
13818__webpack_require__.r(__webpack_exports__);
13819/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProvidedFilter", function() { return ProvidedFilter; });
13820/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
13821/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
13822/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
13823/* harmony import */ var _filterLocaleText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(63);
13824/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(64);
13825/* harmony import */ var _utils_set__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(52);
13826/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(36);
13827/**
13828 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
13829 * @version v27.3.0
13830 * @link https://www.ag-grid.com/
13831 * @license MIT
13832 */
13833var __extends = (undefined && undefined.__extends) || (function () {
13834 var extendStatics = function (d, b) {
13835 extendStatics = Object.setPrototypeOf ||
13836 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
13837 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
13838 return extendStatics(d, b);
13839 };
13840 return function (d, b) {
13841 extendStatics(d, b);
13842 function __() { this.constructor = d; }
13843 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13844 };
13845})();
13846var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
13847 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13848 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
13849 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;
13850 return c > 3 && r && Object.defineProperty(target, key, r), r;
13851};
13852
13853
13854
13855
13856
13857
13858
13859/**
13860 * Contains common logic to all provided filters (apply button, clear button, etc).
13861 * All the filters that come with AG Grid extend this class. User filters do not
13862 * extend this class.
13863 *
13864 * @param M type of filter-model managed by the concrete sub-class that extends this type
13865 * @param V type of value managed by the concrete sub-class that extends this type
13866 */
13867var ProvidedFilter = /** @class */ (function (_super) {
13868 __extends(ProvidedFilter, _super);
13869 function ProvidedFilter(filterNameKey) {
13870 var _this = _super.call(this) || this;
13871 _this.filterNameKey = filterNameKey;
13872 _this.applyActive = false;
13873 _this.hidePopup = null;
13874 // after the user hits 'apply' the model gets copied to here. this is then the model that we use for
13875 // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.
13876 // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is
13877 // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter
13878 // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter
13879 // not active) then this appliedModel will be null/undefined.
13880 _this.appliedModel = null;
13881 return _this;
13882 }
13883 ProvidedFilter.prototype.postConstruct = function () {
13884 this.resetTemplate(); // do this first to create the DOM
13885 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_4__["ManagedFocusFeature"](this.getFocusableElement(), {
13886 handleKeyDown: this.handleKeyDown.bind(this)
13887 }));
13888 };
13889 // override
13890 ProvidedFilter.prototype.handleKeyDown = function (e) { };
13891 ProvidedFilter.prototype.getFilterTitle = function () {
13892 return this.translate(this.filterNameKey);
13893 };
13894 ProvidedFilter.prototype.isFilterActive = function () {
13895 // filter is active if we have a valid applied model
13896 return !!this.appliedModel;
13897 };
13898 ProvidedFilter.prototype.resetTemplate = function (paramsMap) {
13899 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>";
13900 this.setTemplate(templateString, paramsMap);
13901 };
13902 ProvidedFilter.prototype.isReadOnly = function () {
13903 return !!this.providedFilterParams.readOnly;
13904 };
13905 ProvidedFilter.prototype.init = function (params) {
13906 var _this = this;
13907 this.setParams(params);
13908 this.resetUiToDefaults(true).then(function () {
13909 _this.updateUiVisibility();
13910 _this.setupOnBtApplyDebounce();
13911 });
13912 };
13913 ProvidedFilter.prototype.setParams = function (params) {
13914 this.providedFilterParams = params;
13915 this.applyActive = ProvidedFilter.isUseApplyButton(params);
13916 this.createButtonPanel();
13917 };
13918 ProvidedFilter.prototype.createButtonPanel = function () {
13919 var _this = this;
13920 var buttons = this.providedFilterParams.buttons;
13921 if (!buttons || buttons.length < 1 || this.isReadOnly()) {
13922 return;
13923 }
13924 var eButtonsPanel = document.createElement('div');
13925 eButtonsPanel.classList.add('ag-filter-apply-panel');
13926 var addButton = function (type) {
13927 var text;
13928 var clickListener;
13929 switch (type) {
13930 case 'apply':
13931 text = _this.translate('applyFilter');
13932 clickListener = function (e) { return _this.onBtApply(false, false, e); };
13933 break;
13934 case 'clear':
13935 text = _this.translate('clearFilter');
13936 clickListener = function () { return _this.onBtClear(); };
13937 break;
13938 case 'reset':
13939 text = _this.translate('resetFilter');
13940 clickListener = function () { return _this.onBtReset(); };
13941 break;
13942 case 'cancel':
13943 text = _this.translate('cancelFilter');
13944 clickListener = function (e) { _this.onBtCancel(e); };
13945 break;
13946 default:
13947 console.warn('AG Grid: Unknown button type specified');
13948 return;
13949 }
13950 var button = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["loadTemplate"])(
13951 /* html */
13952 "<button\n type=\"button\"\n ref=\"" + type + "FilterButton\"\n class=\"ag-standard-button ag-filter-apply-panel-button\"\n >" + text + "\n </button>");
13953 eButtonsPanel.appendChild(button);
13954 _this.addManagedListener(button, 'click', clickListener);
13955 };
13956 Object(_utils_set__WEBPACK_IMPORTED_MODULE_5__["convertToSet"])(buttons).forEach(function (type) { return addButton(type); });
13957 this.getGui().appendChild(eButtonsPanel);
13958 };
13959 // subclasses can override this to provide alternative debounce defaults
13960 ProvidedFilter.prototype.getDefaultDebounceMs = function () {
13961 return 0;
13962 };
13963 ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {
13964 var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());
13965 this.onBtApplyDebounce = Object(_utils_function__WEBPACK_IMPORTED_MODULE_2__["debounce"])(this.onBtApply.bind(this), debounceMs);
13966 };
13967 ProvidedFilter.prototype.getModel = function () {
13968 return this.appliedModel ? this.appliedModel : null;
13969 };
13970 ProvidedFilter.prototype.setModel = function (model) {
13971 var _this = this;
13972 var promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();
13973 return promise.then(function () {
13974 _this.updateUiVisibility();
13975 // we set the model from the GUI, rather than the provided model,
13976 // so the model is consistent, e.g. handling of null/undefined will be the same,
13977 // or if model is case insensitive, then casing is removed.
13978 _this.applyModel();
13979 });
13980 };
13981 ProvidedFilter.prototype.onBtCancel = function (e) {
13982 var _this = this;
13983 var currentModel = this.getModel();
13984 var afterAppliedFunc = function () {
13985 _this.onUiChanged(false, 'prevent');
13986 if (_this.providedFilterParams.closeOnApply) {
13987 _this.close(e);
13988 }
13989 };
13990 if (currentModel != null) {
13991 this.setModelIntoUi(currentModel).then(afterAppliedFunc);
13992 }
13993 else {
13994 this.resetUiToDefaults().then(afterAppliedFunc);
13995 }
13996 };
13997 ProvidedFilter.prototype.onBtClear = function () {
13998 var _this = this;
13999 this.resetUiToDefaults().then(function () { return _this.onUiChanged(); });
14000 };
14001 ProvidedFilter.prototype.onBtReset = function () {
14002 this.onBtClear();
14003 this.onBtApply();
14004 };
14005 /**
14006 * Applies changes made in the UI to the filter, and returns true if the model has changed.
14007 */
14008 ProvidedFilter.prototype.applyModel = function () {
14009 var newModel = this.getModelFromUi();
14010 if (!this.isModelValid(newModel)) {
14011 return false;
14012 }
14013 var previousModel = this.appliedModel;
14014 this.appliedModel = newModel;
14015 // models can be same if user pasted same content into text field, or maybe just changed the case
14016 // and it's a case insensitive filter
14017 return !this.areModelsEqual(previousModel, newModel);
14018 };
14019 ProvidedFilter.prototype.isModelValid = function (model) {
14020 return true;
14021 };
14022 ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter, afterDataChange, e) {
14023 if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }
14024 if (afterDataChange === void 0) { afterDataChange = false; }
14025 if (this.applyModel()) {
14026 // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change
14027 // came from floating filter
14028 this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter, afterDataChange: afterDataChange });
14029 }
14030 var closeOnApply = this.providedFilterParams.closeOnApply;
14031 // only close if an apply button is visible, otherwise we'd be closing every time a change was made!
14032 if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {
14033 this.close(e);
14034 }
14035 };
14036 ProvidedFilter.prototype.onNewRowsLoaded = function () {
14037 };
14038 ProvidedFilter.prototype.close = function (e) {
14039 if (!this.hidePopup) {
14040 return;
14041 }
14042 var keyboardEvent = e;
14043 var key = keyboardEvent && keyboardEvent.key;
14044 var params;
14045 if (key === 'Enter' || key === 'Space') {
14046 params = { keyboardEvent: keyboardEvent };
14047 }
14048 this.hidePopup(params);
14049 this.hidePopup = null;
14050 };
14051 /**
14052 * By default, if the change came from a floating filter it will be applied immediately, otherwise if there is no
14053 * apply button it will be applied after a debounce, otherwise it will not be applied at all. This behaviour can
14054 * be adjusted by using the apply parameter.
14055 */
14056 ProvidedFilter.prototype.onUiChanged = function (fromFloatingFilter, apply) {
14057 if (fromFloatingFilter === void 0) { fromFloatingFilter = false; }
14058 this.updateUiVisibility();
14059 this.providedFilterParams.filterModifiedCallback();
14060 if (this.applyActive && !this.isReadOnly) {
14061 var isValid = this.isModelValid(this.getModelFromUi());
14062 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDisabled"])(this.getRefElement('applyFilterButton'), !isValid);
14063 }
14064 if ((fromFloatingFilter && !apply) || apply === 'immediately') {
14065 this.onBtApply(fromFloatingFilter);
14066 }
14067 else if ((!this.applyActive && !apply) || apply === 'debounce') {
14068 this.onBtApplyDebounce();
14069 }
14070 };
14071 ProvidedFilter.prototype.afterGuiAttached = function (params) {
14072 if (params == null) {
14073 return;
14074 }
14075 this.hidePopup = params.hidePopup;
14076 };
14077 // static, as used by floating filter also
14078 ProvidedFilter.getDebounceMs = function (params, debounceDefault) {
14079 if (ProvidedFilter.isUseApplyButton(params)) {
14080 if (params.debounceMs != null) {
14081 console.warn('AG Grid: debounceMs is ignored when apply button is present');
14082 }
14083 return 0;
14084 }
14085 return params.debounceMs != null ? params.debounceMs : debounceDefault;
14086 };
14087 // static, as used by floating filter also
14088 ProvidedFilter.isUseApplyButton = function (params) {
14089 return !!params.buttons && params.buttons.indexOf('apply') >= 0;
14090 };
14091 ProvidedFilter.prototype.destroy = function () {
14092 this.hidePopup = null;
14093 _super.prototype.destroy.call(this);
14094 };
14095 ProvidedFilter.prototype.translate = function (key) {
14096 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
14097 return translate(key, _filterLocaleText__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_FILTER_LOCALE_TEXT"][key]);
14098 };
14099 ProvidedFilter.prototype.getCellValue = function (rowNode) {
14100 var _a = this.providedFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;
14101 return this.providedFilterParams.valueGetter({
14102 api: api,
14103 colDef: colDef,
14104 column: column,
14105 columnApi: columnApi,
14106 context: context,
14107 data: rowNode.data,
14108 getValue: function (field) { return rowNode.data[field]; },
14109 node: rowNode,
14110 });
14111 };
14112 __decorate([
14113 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
14114 ], ProvidedFilter.prototype, "rowModel", void 0);
14115 __decorate([
14116 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueService')
14117 ], ProvidedFilter.prototype, "valueService", void 0);
14118 __decorate([
14119 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
14120 ], ProvidedFilter.prototype, "postConstruct", null);
14121 return ProvidedFilter;
14122}(_widgets_component__WEBPACK_IMPORTED_MODULE_6__["Component"]));
14123
14124
14125
14126
14127
14128/***/ }),
14129/* 63 */
14130/***/ (function(module, __webpack_exports__, __webpack_require__) {
14131
14132"use strict";
14133__webpack_require__.r(__webpack_exports__);
14134/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_FILTER_LOCALE_TEXT", function() { return DEFAULT_FILTER_LOCALE_TEXT; });
14135/**
14136 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14137 * @version v27.3.0
14138 * @link https://www.ag-grid.com/
14139 * @license MIT
14140 */
14141var DEFAULT_FILTER_LOCALE_TEXT = {
14142 applyFilter: 'Apply',
14143 clearFilter: 'Clear',
14144 resetFilter: 'Reset',
14145 cancelFilter: 'Cancel',
14146 textFilter: 'Text Filter',
14147 numberFilter: 'Number Filter',
14148 dateFilter: 'Date Filter',
14149 setFilter: 'Set Filter',
14150 filterOoo: 'Filter...',
14151 empty: 'Choose One',
14152 equals: 'Equals',
14153 notEqual: 'Not equal',
14154 lessThan: 'Less than',
14155 greaterThan: 'Greater than',
14156 inRange: 'In range',
14157 inRangeStart: 'From',
14158 inRangeEnd: 'To',
14159 lessThanOrEqual: 'Less than or equals',
14160 greaterThanOrEqual: 'Greater than or equals',
14161 contains: 'Contains',
14162 notContains: 'Not contains',
14163 startsWith: 'Starts with',
14164 endsWith: 'Ends with',
14165 blank: 'Blank',
14166 notBlank: 'Not blank',
14167 andCondition: 'AND',
14168 orCondition: 'OR',
14169 dateFormatOoo: 'yyyy-mm-dd',
14170};
14171
14172
14173
14174
14175/***/ }),
14176/* 64 */
14177/***/ (function(module, __webpack_exports__, __webpack_require__) {
14178
14179"use strict";
14180__webpack_require__.r(__webpack_exports__);
14181/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ManagedFocusFeature", function() { return ManagedFocusFeature; });
14182/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
14183/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
14184/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21);
14185/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
14186/**
14187 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14188 * @version v27.3.0
14189 * @link https://www.ag-grid.com/
14190 * @license MIT
14191 */
14192var __extends = (undefined && undefined.__extends) || (function () {
14193 var extendStatics = function (d, b) {
14194 extendStatics = Object.setPrototypeOf ||
14195 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14196 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14197 return extendStatics(d, b);
14198 };
14199 return function (d, b) {
14200 extendStatics(d, b);
14201 function __() { this.constructor = d; }
14202 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14203 };
14204})();
14205var __assign = (undefined && undefined.__assign) || function () {
14206 __assign = Object.assign || function(t) {
14207 for (var s, i = 1, n = arguments.length; i < n; i++) {
14208 s = arguments[i];
14209 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
14210 t[p] = s[p];
14211 }
14212 return t;
14213 };
14214 return __assign.apply(this, arguments);
14215};
14216var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14217 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14218 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14219 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;
14220 return c > 3 && r && Object.defineProperty(target, key, r), r;
14221};
14222
14223
14224
14225
14226var ManagedFocusFeature = /** @class */ (function (_super) {
14227 __extends(ManagedFocusFeature, _super);
14228 function ManagedFocusFeature(eFocusableElement, callbacks) {
14229 if (callbacks === void 0) { callbacks = {}; }
14230 var _this = _super.call(this) || this;
14231 _this.eFocusableElement = eFocusableElement;
14232 _this.callbacks = callbacks;
14233 _this.callbacks = __assign({ shouldStopEventPropagation: function () { return false; }, onTabKeyDown: function (e) {
14234 if (e.defaultPrevented) {
14235 return;
14236 }
14237 var nextRoot = _this.focusService.findNextFocusableElement(_this.eFocusableElement, false, e.shiftKey);
14238 if (!nextRoot) {
14239 return;
14240 }
14241 nextRoot.focus();
14242 e.preventDefault();
14243 } }, callbacks);
14244 return _this;
14245 }
14246 ManagedFocusFeature.prototype.postConstruct = function () {
14247 this.eFocusableElement.classList.add(ManagedFocusFeature.FOCUS_MANAGED_CLASS);
14248 this.addKeyDownListeners(this.eFocusableElement);
14249 if (this.callbacks.onFocusIn) {
14250 this.addManagedListener(this.eFocusableElement, 'focusin', this.callbacks.onFocusIn);
14251 }
14252 if (this.callbacks.onFocusOut) {
14253 this.addManagedListener(this.eFocusableElement, 'focusout', this.callbacks.onFocusOut);
14254 }
14255 };
14256 ManagedFocusFeature.prototype.addKeyDownListeners = function (eGui) {
14257 var _this = this;
14258 this.addManagedListener(eGui, 'keydown', function (e) {
14259 if (e.defaultPrevented || Object(_utils_event__WEBPACK_IMPORTED_MODULE_2__["isStopPropagationForAgGrid"])(e)) {
14260 return;
14261 }
14262 if (_this.callbacks.shouldStopEventPropagation(e)) {
14263 Object(_utils_event__WEBPACK_IMPORTED_MODULE_2__["stopPropagationForAgGrid"])(e);
14264 return;
14265 }
14266 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].TAB) {
14267 _this.callbacks.onTabKeyDown(e);
14268 }
14269 else if (_this.callbacks.handleKeyDown) {
14270 _this.callbacks.handleKeyDown(e);
14271 }
14272 });
14273 };
14274 ManagedFocusFeature.FOCUS_MANAGED_CLASS = 'ag-focus-managed';
14275 __decorate([
14276 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
14277 ], ManagedFocusFeature.prototype, "focusService", void 0);
14278 __decorate([
14279 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
14280 ], ManagedFocusFeature.prototype, "postConstruct", null);
14281 return ManagedFocusFeature;
14282}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
14283
14284
14285
14286
14287
14288/***/ }),
14289/* 65 */
14290/***/ (function(module, __webpack_exports__, __webpack_require__) {
14291
14292"use strict";
14293__webpack_require__.r(__webpack_exports__);
14294/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyCode", function() { return KeyCode; });
14295/**
14296 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14297 * @version v27.3.0
14298 * @link https://www.ag-grid.com/
14299 * @license MIT
14300 */
14301var KeyCode = /** @class */ (function () {
14302 function KeyCode() {
14303 }
14304 KeyCode.BACKSPACE = 'Backspace';
14305 KeyCode.TAB = 'Tab';
14306 KeyCode.ENTER = 'Enter';
14307 KeyCode.ESCAPE = 'Escape';
14308 KeyCode.SPACE = ' ';
14309 KeyCode.LEFT = 'ArrowLeft';
14310 KeyCode.UP = 'ArrowUp';
14311 KeyCode.RIGHT = 'ArrowRight';
14312 KeyCode.DOWN = 'ArrowDown';
14313 KeyCode.DELETE = 'Delete';
14314 KeyCode.F2 = 'F2';
14315 KeyCode.PAGE_UP = 'PageUp';
14316 KeyCode.PAGE_DOWN = 'PageDown';
14317 KeyCode.PAGE_HOME = 'Home';
14318 KeyCode.PAGE_END = 'End';
14319 // these should be used with `event.code` instead of `event.key`
14320 // as `event.key` changes when non-latin keyboards are used
14321 KeyCode.A = 'KeyA';
14322 KeyCode.C = 'KeyC';
14323 KeyCode.V = 'KeyV';
14324 KeyCode.D = 'KeyD';
14325 KeyCode.Z = 'KeyZ';
14326 KeyCode.Y = 'KeyY';
14327 return KeyCode;
14328}());
14329
14330
14331
14332
14333
14334/***/ }),
14335/* 66 */
14336/***/ (function(module, __webpack_exports__, __webpack_require__) {
14337
14338"use strict";
14339__webpack_require__.r(__webpack_exports__);
14340/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgSelect", function() { return AgSelect; });
14341/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67);
14342/* harmony import */ var _agPickerField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69);
14343/* harmony import */ var _agList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(70);
14344/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
14345/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
14346/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44);
14347/**
14348 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14349 * @version v27.3.0
14350 * @link https://www.ag-grid.com/
14351 * @license MIT
14352 */
14353var __extends = (undefined && undefined.__extends) || (function () {
14354 var extendStatics = function (d, b) {
14355 extendStatics = Object.setPrototypeOf ||
14356 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14357 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14358 return extendStatics(d, b);
14359 };
14360 return function (d, b) {
14361 extendStatics(d, b);
14362 function __() { this.constructor = d; }
14363 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14364 };
14365})();
14366var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14367 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14368 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14369 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;
14370 return c > 3 && r && Object.defineProperty(target, key, r), r;
14371};
14372
14373
14374
14375
14376
14377
14378var AgSelect = /** @class */ (function (_super) {
14379 __extends(AgSelect, _super);
14380 function AgSelect(config) {
14381 return _super.call(this, config, 'ag-select', 'smallDown', 'listbox') || this;
14382 }
14383 AgSelect.prototype.init = function () {
14384 var _this = this;
14385 this.listComponent = this.createBean(new _agList__WEBPACK_IMPORTED_MODULE_2__["AgList"]('select'));
14386 this.listComponent.setParentComponent(this);
14387 this.eWrapper.tabIndex = 0;
14388 this.listComponent.addManagedListener(this.listComponent, _agList__WEBPACK_IMPORTED_MODULE_2__["AgList"].EVENT_ITEM_SELECTED, function () { if (_this.hideList) {
14389 _this.hideList();
14390 } });
14391 this.listComponent.addManagedListener(this.listComponent, _agAbstractField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractField"].EVENT_CHANGED, function () {
14392 _this.setValue(_this.listComponent.getValue(), false, true);
14393 if (_this.hideList) {
14394 _this.hideList();
14395 }
14396 });
14397 };
14398 AgSelect.prototype.showPicker = function () {
14399 var _this = this;
14400 var listGui = this.listComponent.getGui();
14401 var eDocument = this.gridOptionsWrapper.getDocument();
14402 var destroyMouseWheelFunc = this.addManagedListener(eDocument.body, 'wheel', function (e) {
14403 if (!listGui.contains(e.target) && _this.hideList) {
14404 _this.hideList();
14405 }
14406 });
14407 var destroyFocusOutFunc = this.addManagedListener(listGui, 'focusout', function (e) {
14408 if (!listGui.contains(e.relatedTarget) && _this.hideList) {
14409 _this.hideList();
14410 }
14411 });
14412 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
14413 var addPopupRes = this.popupService.addPopup({
14414 modal: true,
14415 eChild: listGui,
14416 closeOnEsc: true,
14417 closedCallback: function () {
14418 _this.hideList = null;
14419 _this.isPickerDisplayed = false;
14420 destroyFocusOutFunc();
14421 destroyMouseWheelFunc();
14422 if (_this.isAlive()) {
14423 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaExpanded"])(_this.eWrapper, false);
14424 _this.getFocusableElement().focus();
14425 }
14426 },
14427 ariaLabel: translate('ariaLabelSelectField', 'Select Field')
14428 });
14429 if (addPopupRes) {
14430 this.hideList = addPopupRes.hideFunc;
14431 }
14432 this.isPickerDisplayed = true;
14433 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setElementWidth"])(listGui, Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getAbsoluteWidth"])(this.eWrapper));
14434 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaExpanded"])(this.eWrapper, true);
14435 listGui.style.maxHeight = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getInnerHeight"])(this.popupService.getPopupParent()) + 'px';
14436 listGui.style.position = 'absolute';
14437 this.popupService.positionPopupUnderComponent({
14438 type: 'ag-list',
14439 eventSource: this.eWrapper,
14440 ePopup: listGui,
14441 keepWithinBounds: true
14442 });
14443 this.listComponent.refreshHighlighted();
14444 return this.listComponent;
14445 };
14446 AgSelect.prototype.addOptions = function (options) {
14447 var _this = this;
14448 options.forEach(function (option) { return _this.addOption(option); });
14449 return this;
14450 };
14451 AgSelect.prototype.addOption = function (option) {
14452 this.listComponent.addOption(option);
14453 return this;
14454 };
14455 AgSelect.prototype.setValue = function (value, silent, fromPicker) {
14456 if (this.value === value) {
14457 return this;
14458 }
14459 if (!fromPicker) {
14460 this.listComponent.setValue(value, true);
14461 }
14462 var newValue = this.listComponent.getValue();
14463 if (newValue === this.getValue()) {
14464 return this;
14465 }
14466 this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();
14467 return _super.prototype.setValue.call(this, value, silent);
14468 };
14469 AgSelect.prototype.destroy = function () {
14470 if (this.hideList) {
14471 this.hideList();
14472 }
14473 this.destroyBean(this.listComponent);
14474 _super.prototype.destroy.call(this);
14475 };
14476 __decorate([
14477 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('popupService')
14478 ], AgSelect.prototype, "popupService", void 0);
14479 __decorate([
14480 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
14481 ], AgSelect.prototype, "init", null);
14482 return AgSelect;
14483}(_agPickerField__WEBPACK_IMPORTED_MODULE_1__["AgPickerField"]));
14484
14485
14486
14487
14488
14489/***/ }),
14490/* 67 */
14491/***/ (function(module, __webpack_exports__, __webpack_require__) {
14492
14493"use strict";
14494__webpack_require__.r(__webpack_exports__);
14495/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgAbstractField", function() { return AgAbstractField; });
14496/* harmony import */ var _agAbstractLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(68);
14497/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
14498/**
14499 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14500 * @version v27.3.0
14501 * @link https://www.ag-grid.com/
14502 * @license MIT
14503 */
14504var __extends = (undefined && undefined.__extends) || (function () {
14505 var extendStatics = function (d, b) {
14506 extendStatics = Object.setPrototypeOf ||
14507 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14508 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14509 return extendStatics(d, b);
14510 };
14511 return function (d, b) {
14512 extendStatics(d, b);
14513 function __() { this.constructor = d; }
14514 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14515 };
14516})();
14517
14518
14519var AgAbstractField = /** @class */ (function (_super) {
14520 __extends(AgAbstractField, _super);
14521 function AgAbstractField(config, template, className) {
14522 var _this = _super.call(this, config, template) || this;
14523 _this.className = className;
14524 _this.disabled = false;
14525 return _this;
14526 }
14527 AgAbstractField.prototype.postConstruct = function () {
14528 _super.prototype.postConstruct.call(this);
14529 if (this.className) {
14530 this.addCssClass(this.className);
14531 }
14532 };
14533 AgAbstractField.prototype.onValueChange = function (callbackFn) {
14534 var _this = this;
14535 this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () { return callbackFn(_this.getValue()); });
14536 return this;
14537 };
14538 AgAbstractField.prototype.getWidth = function () {
14539 return this.getGui().clientWidth;
14540 };
14541 AgAbstractField.prototype.setWidth = function (width) {
14542 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setFixedWidth"])(this.getGui(), width);
14543 return this;
14544 };
14545 AgAbstractField.prototype.getPreviousValue = function () {
14546 return this.previousValue;
14547 };
14548 AgAbstractField.prototype.getValue = function () {
14549 return this.value;
14550 };
14551 AgAbstractField.prototype.setValue = function (value, silent) {
14552 if (this.value === value) {
14553 return this;
14554 }
14555 this.previousValue = this.value;
14556 this.value = value;
14557 if (!silent) {
14558 this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });
14559 }
14560 return this;
14561 };
14562 AgAbstractField.prototype.setDisabled = function (disabled) {
14563 disabled = !!disabled;
14564 var element = this.getGui();
14565 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDisabled"])(element, disabled);
14566 element.classList.toggle('ag-disabled', disabled);
14567 this.disabled = disabled;
14568 return this;
14569 };
14570 AgAbstractField.prototype.isDisabled = function () {
14571 return !!this.disabled;
14572 };
14573 AgAbstractField.EVENT_CHANGED = 'valueChange';
14574 return AgAbstractField;
14575}(_agAbstractLabel__WEBPACK_IMPORTED_MODULE_0__["AgAbstractLabel"]));
14576
14577
14578
14579
14580
14581/***/ }),
14582/* 68 */
14583/***/ (function(module, __webpack_exports__, __webpack_require__) {
14584
14585"use strict";
14586__webpack_require__.r(__webpack_exports__);
14587/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgAbstractLabel", function() { return AgAbstractLabel; });
14588/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
14589/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
14590/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
14591/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
14592/**
14593 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14594 * @version v27.3.0
14595 * @link https://www.ag-grid.com/
14596 * @license MIT
14597 */
14598var __extends = (undefined && undefined.__extends) || (function () {
14599 var extendStatics = function (d, b) {
14600 extendStatics = Object.setPrototypeOf ||
14601 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14602 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14603 return extendStatics(d, b);
14604 };
14605 return function (d, b) {
14606 extendStatics(d, b);
14607 function __() { this.constructor = d; }
14608 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14609 };
14610})();
14611var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14612 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14613 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14614 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;
14615 return c > 3 && r && Object.defineProperty(target, key, r), r;
14616};
14617
14618
14619
14620
14621var AgAbstractLabel = /** @class */ (function (_super) {
14622 __extends(AgAbstractLabel, _super);
14623 function AgAbstractLabel(config, template) {
14624 var _this = _super.call(this, template) || this;
14625 _this.labelSeparator = '';
14626 _this.labelAlignment = 'left';
14627 _this.label = '';
14628 _this.config = config || {};
14629 return _this;
14630 }
14631 AgAbstractLabel.prototype.postConstruct = function () {
14632 this.addCssClass('ag-labeled');
14633 this.eLabel.classList.add('ag-label');
14634 var _a = this.config, labelSeparator = _a.labelSeparator, label = _a.label, labelWidth = _a.labelWidth, labelAlignment = _a.labelAlignment;
14635 if (labelSeparator != null) {
14636 this.setLabelSeparator(labelSeparator);
14637 }
14638 if (label != null) {
14639 this.setLabel(label);
14640 }
14641 if (labelWidth != null) {
14642 this.setLabelWidth(labelWidth);
14643 }
14644 this.setLabelAlignment(labelAlignment || this.labelAlignment);
14645 this.refreshLabel();
14646 };
14647 AgAbstractLabel.prototype.refreshLabel = function () {
14648 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["clearElement"])(this.eLabel);
14649 if (typeof this.label === 'string') {
14650 this.eLabel.innerText = this.label + this.labelSeparator;
14651 }
14652 else if (this.label) {
14653 this.eLabel.appendChild(this.label);
14654 }
14655 if (this.label === '') {
14656 this.eLabel.classList.add('ag-hidden');
14657 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaRole"])(this.eLabel, 'presentation');
14658 }
14659 else {
14660 this.eLabel.classList.remove('ag-hidden');
14661 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaRole"])(this.eLabel, null);
14662 }
14663 };
14664 AgAbstractLabel.prototype.setLabelSeparator = function (labelSeparator) {
14665 if (this.labelSeparator === labelSeparator) {
14666 return this;
14667 }
14668 this.labelSeparator = labelSeparator;
14669 if (this.label != null) {
14670 this.refreshLabel();
14671 }
14672 return this;
14673 };
14674 AgAbstractLabel.prototype.getLabelId = function () {
14675 this.eLabel.id = this.eLabel.id || "ag-" + this.getCompId() + "-label";
14676 return this.eLabel.id;
14677 };
14678 AgAbstractLabel.prototype.getLabel = function () {
14679 return this.label;
14680 };
14681 AgAbstractLabel.prototype.setLabel = function (label) {
14682 if (this.label === label) {
14683 return this;
14684 }
14685 this.label = label;
14686 this.refreshLabel();
14687 return this;
14688 };
14689 AgAbstractLabel.prototype.setLabelAlignment = function (alignment) {
14690 var eGui = this.getGui();
14691 var eGuiClassList = eGui.classList;
14692 eGuiClassList.toggle('ag-label-align-left', alignment === 'left');
14693 eGuiClassList.toggle('ag-label-align-right', alignment === 'right');
14694 eGuiClassList.toggle('ag-label-align-top', alignment === 'top');
14695 return this;
14696 };
14697 AgAbstractLabel.prototype.setLabelWidth = function (width) {
14698 if (this.label == null) {
14699 return this;
14700 }
14701 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setElementWidth"])(this.eLabel, width);
14702 return this;
14703 };
14704 __decorate([
14705 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
14706 ], AgAbstractLabel.prototype, "postConstruct", null);
14707 return AgAbstractLabel;
14708}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
14709
14710
14711
14712
14713
14714/***/ }),
14715/* 69 */
14716/***/ (function(module, __webpack_exports__, __webpack_require__) {
14717
14718"use strict";
14719__webpack_require__.r(__webpack_exports__);
14720/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgPickerField", function() { return AgPickerField; });
14721/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67);
14722/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
14723/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
14724/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);
14725/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
14726/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42);
14727/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65);
14728/**
14729 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14730 * @version v27.3.0
14731 * @link https://www.ag-grid.com/
14732 * @license MIT
14733 */
14734var __extends = (undefined && undefined.__extends) || (function () {
14735 var extendStatics = function (d, b) {
14736 extendStatics = Object.setPrototypeOf ||
14737 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14738 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14739 return extendStatics(d, b);
14740 };
14741 return function (d, b) {
14742 extendStatics(d, b);
14743 function __() { this.constructor = d; }
14744 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14745 };
14746})();
14747var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14748 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14749 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14750 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;
14751 return c > 3 && r && Object.defineProperty(target, key, r), r;
14752};
14753
14754
14755
14756
14757
14758
14759
14760var AgPickerField = /** @class */ (function (_super) {
14761 __extends(AgPickerField, _super);
14762 function AgPickerField(config, className, pickerIcon, ariaRole) {
14763 var _this = _super.call(this, config,
14764 /* 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;
14765 _this.pickerIcon = pickerIcon;
14766 _this.isPickerDisplayed = false;
14767 _this.isDestroyingPicker = false;
14768 _this.skipClick = false;
14769 return _this;
14770 }
14771 AgPickerField.prototype.postConstruct = function () {
14772 var _this = this;
14773 _super.prototype.postConstruct.call(this);
14774 var displayId = this.getCompId() + "-display";
14775 this.eDisplayField.setAttribute('id', displayId);
14776 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaDescribedBy"])(this.eWrapper, displayId);
14777 var clickHandler = function () {
14778 if (_this.skipClick) {
14779 _this.skipClick = false;
14780 return;
14781 }
14782 if (_this.isDisabled()) {
14783 return;
14784 }
14785 _this.pickerComponent = _this.showPicker();
14786 };
14787 var eGui = this.getGui();
14788 this.addManagedListener(eGui, 'mousedown', function (e) {
14789 if (!_this.skipClick &&
14790 _this.pickerComponent &&
14791 _this.pickerComponent.isAlive() &&
14792 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["isVisible"])(_this.pickerComponent.getGui()) &&
14793 eGui.contains(e.target)) {
14794 _this.skipClick = true;
14795 }
14796 });
14797 this.addManagedListener(eGui, 'keydown', function (e) {
14798 switch (e.key) {
14799 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].UP:
14800 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].DOWN:
14801 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].ENTER:
14802 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].SPACE:
14803 clickHandler();
14804 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].ESCAPE:
14805 if (_this.isPickerDisplayed) {
14806 e.preventDefault();
14807 }
14808 break;
14809 }
14810 });
14811 this.addManagedListener(this.eWrapper, 'click', clickHandler);
14812 this.addManagedListener(this.eLabel, 'click', clickHandler);
14813 if (this.pickerIcon) {
14814 var icon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIconNoSpan"])(this.pickerIcon, this.gridOptionsWrapper);
14815 if (icon) {
14816 this.eIcon.appendChild(icon);
14817 }
14818 }
14819 };
14820 AgPickerField.prototype.refreshLabel = function () {
14821 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(this.getLabel())) {
14822 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaLabelledBy"])(this.eWrapper, this.getLabelId());
14823 }
14824 else {
14825 this.eWrapper.removeAttribute('aria-labelledby');
14826 }
14827 _super.prototype.refreshLabel.call(this);
14828 };
14829 AgPickerField.prototype.setAriaLabel = function (label) {
14830 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaLabel"])(this.eWrapper, label);
14831 return this;
14832 };
14833 AgPickerField.prototype.setInputWidth = function (width) {
14834 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["setElementWidth"])(this.eWrapper, width);
14835 return this;
14836 };
14837 AgPickerField.prototype.getFocusableElement = function () {
14838 return this.eWrapper;
14839 };
14840 __decorate([
14841 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLabel')
14842 ], AgPickerField.prototype, "eLabel", void 0);
14843 __decorate([
14844 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eWrapper')
14845 ], AgPickerField.prototype, "eWrapper", void 0);
14846 __decorate([
14847 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eDisplayField')
14848 ], AgPickerField.prototype, "eDisplayField", void 0);
14849 __decorate([
14850 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eIcon')
14851 ], AgPickerField.prototype, "eIcon", void 0);
14852 return AgPickerField;
14853}(_agAbstractField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractField"]));
14854
14855
14856
14857
14858
14859/***/ }),
14860/* 70 */
14861/***/ (function(module, __webpack_exports__, __webpack_require__) {
14862
14863"use strict";
14864__webpack_require__.r(__webpack_exports__);
14865/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgList", function() { return AgList; });
14866/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67);
14867/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
14868/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
14869/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
14870/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
14871/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44);
14872/**
14873 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14874 * @version v27.3.0
14875 * @link https://www.ag-grid.com/
14876 * @license MIT
14877 */
14878var __extends = (undefined && undefined.__extends) || (function () {
14879 var extendStatics = function (d, b) {
14880 extendStatics = Object.setPrototypeOf ||
14881 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14882 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14883 return extendStatics(d, b);
14884 };
14885 return function (d, b) {
14886 extendStatics(d, b);
14887 function __() { this.constructor = d; }
14888 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14889 };
14890})();
14891var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14892 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14893 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14894 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;
14895 return c > 3 && r && Object.defineProperty(target, key, r), r;
14896};
14897
14898
14899
14900
14901
14902
14903var AgList = /** @class */ (function (_super) {
14904 __extends(AgList, _super);
14905 function AgList(cssIdentifier) {
14906 if (cssIdentifier === void 0) { cssIdentifier = 'default'; }
14907 var _this = _super.call(this, /* html */ "<div class=\"ag-list ag-" + cssIdentifier + "-list\" role=\"listbox\"></div>") || this;
14908 _this.cssIdentifier = cssIdentifier;
14909 _this.options = [];
14910 _this.itemEls = [];
14911 return _this;
14912 }
14913 AgList.prototype.init = function () {
14914 this.addManagedListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));
14915 };
14916 AgList.prototype.handleKeyDown = function (e) {
14917 var key = e.key;
14918 switch (key) {
14919 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].ENTER:
14920 if (!this.highlightedEl) {
14921 this.setValue(this.getValue());
14922 }
14923 else {
14924 var pos = this.itemEls.indexOf(this.highlightedEl);
14925 this.setValueByIndex(pos);
14926 }
14927 break;
14928 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].DOWN:
14929 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].UP:
14930 var isDown = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].DOWN;
14931 var itemToHighlight = void 0;
14932 e.preventDefault();
14933 if (!this.highlightedEl) {
14934 itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];
14935 }
14936 else {
14937 var currentIdx = this.itemEls.indexOf(this.highlightedEl);
14938 var nextPos = currentIdx + (isDown ? 1 : -1);
14939 nextPos = Math.min(Math.max(nextPos, 0), this.itemEls.length - 1);
14940 itemToHighlight = this.itemEls[nextPos];
14941 }
14942 this.highlightItem(itemToHighlight);
14943 break;
14944 }
14945 };
14946 AgList.prototype.addOptions = function (listOptions) {
14947 var _this = this;
14948 listOptions.forEach(function (listOption) { return _this.addOption(listOption); });
14949 return this;
14950 };
14951 AgList.prototype.addOption = function (listOption) {
14952 var value = listOption.value, text = listOption.text;
14953 var sanitisedText = Object(_utils_string__WEBPACK_IMPORTED_MODULE_3__["escapeString"])(text || value);
14954 this.options.push({ value: value, text: sanitisedText });
14955 this.renderOption(value, sanitisedText);
14956 this.updateIndices();
14957 return this;
14958 };
14959 AgList.prototype.updateIndices = function () {
14960 var options = this.getGui().querySelectorAll('.ag-list-item');
14961 options.forEach(function (option, idx) {
14962 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaPosInSet"])(option, idx + 1);
14963 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaSetSize"])(option, options.length);
14964 });
14965 };
14966 AgList.prototype.renderOption = function (value, text) {
14967 var _this = this;
14968 var itemEl = document.createElement('div');
14969 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaRole"])(itemEl, 'option');
14970 itemEl.classList.add('ag-list-item', "ag-" + this.cssIdentifier + "-list-item");
14971 itemEl.innerHTML = "<span>" + text + "</span>";
14972 itemEl.tabIndex = -1;
14973 this.itemEls.push(itemEl);
14974 this.addManagedListener(itemEl, 'mouseover', function () { return _this.highlightItem(itemEl); });
14975 this.addManagedListener(itemEl, 'mouseleave', function () { return _this.clearHighlighted(); });
14976 this.addManagedListener(itemEl, 'click', function () { return _this.setValue(value); });
14977 this.getGui().appendChild(itemEl);
14978 };
14979 AgList.prototype.setValue = function (value, silent) {
14980 if (this.value === value) {
14981 this.fireItemSelected();
14982 return this;
14983 }
14984 if (value == null) {
14985 this.reset();
14986 return this;
14987 }
14988 var idx = this.options.findIndex(function (option) { return option.value === value; });
14989 if (idx !== -1) {
14990 var option = this.options[idx];
14991 this.value = option.value;
14992 this.displayValue = option.text != null ? option.text : option.value;
14993 this.highlightItem(this.itemEls[idx]);
14994 if (!silent) {
14995 this.fireChangeEvent();
14996 }
14997 }
14998 return this;
14999 };
15000 AgList.prototype.setValueByIndex = function (idx) {
15001 return this.setValue(this.options[idx].value);
15002 };
15003 AgList.prototype.getValue = function () {
15004 return this.value;
15005 };
15006 AgList.prototype.getDisplayValue = function () {
15007 return this.displayValue;
15008 };
15009 AgList.prototype.refreshHighlighted = function () {
15010 var _this = this;
15011 this.clearHighlighted();
15012 var idx = this.options.findIndex(function (option) { return option.value === _this.value; });
15013 if (idx !== -1) {
15014 this.highlightItem(this.itemEls[idx]);
15015 }
15016 };
15017 AgList.prototype.reset = function () {
15018 this.value = null;
15019 this.displayValue = null;
15020 this.clearHighlighted();
15021 this.fireChangeEvent();
15022 };
15023 AgList.prototype.highlightItem = function (el) {
15024 if (!el.offsetParent) {
15025 return;
15026 }
15027 this.clearHighlighted();
15028 this.highlightedEl = el;
15029 this.highlightedEl.classList.add(AgList.ACTIVE_CLASS);
15030 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaSelected"])(this.highlightedEl, true);
15031 this.highlightedEl.focus();
15032 };
15033 AgList.prototype.clearHighlighted = function () {
15034 if (!this.highlightedEl || !this.highlightedEl.offsetParent) {
15035 return;
15036 }
15037 this.highlightedEl.classList.remove(AgList.ACTIVE_CLASS);
15038 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaSelected"])(this.highlightedEl, false);
15039 this.highlightedEl = null;
15040 };
15041 AgList.prototype.fireChangeEvent = function () {
15042 this.dispatchEvent({ type: _agAbstractField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractField"].EVENT_CHANGED });
15043 this.fireItemSelected();
15044 };
15045 AgList.prototype.fireItemSelected = function () {
15046 this.dispatchEvent({ type: AgList.EVENT_ITEM_SELECTED });
15047 };
15048 AgList.EVENT_ITEM_SELECTED = 'selectedItem';
15049 AgList.ACTIVE_CLASS = 'ag-active-item';
15050 __decorate([
15051 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
15052 ], AgList.prototype, "init", null);
15053 return AgList;
15054}(_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
15055
15056
15057
15058
15059
15060/***/ }),
15061/* 71 */
15062/***/ (function(module, __webpack_exports__, __webpack_require__) {
15063
15064"use strict";
15065__webpack_require__.r(__webpack_exports__);
15066/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgAbstractInputField", function() { return AgAbstractInputField; });
15067/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
15068/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67);
15069/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
15070/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
15071/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
15072/**
15073 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15074 * @version v27.3.0
15075 * @link https://www.ag-grid.com/
15076 * @license MIT
15077 */
15078var __extends = (undefined && undefined.__extends) || (function () {
15079 var extendStatics = function (d, b) {
15080 extendStatics = Object.setPrototypeOf ||
15081 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15082 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15083 return extendStatics(d, b);
15084 };
15085 return function (d, b) {
15086 extendStatics(d, b);
15087 function __() { this.constructor = d; }
15088 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15089 };
15090})();
15091var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15092 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15093 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15094 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;
15095 return c > 3 && r && Object.defineProperty(target, key, r), r;
15096};
15097
15098
15099
15100
15101
15102var AgAbstractInputField = /** @class */ (function (_super) {
15103 __extends(AgAbstractInputField, _super);
15104 function AgAbstractInputField(config, className, inputType, displayFieldTag) {
15105 if (inputType === void 0) { inputType = 'text'; }
15106 if (displayFieldTag === void 0) { displayFieldTag = 'input'; }
15107 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;
15108 _this.inputType = inputType;
15109 _this.displayFieldTag = displayFieldTag;
15110 return _this;
15111 }
15112 AgAbstractInputField.prototype.postConstruct = function () {
15113 _super.prototype.postConstruct.call(this);
15114 this.setInputType();
15115 this.eLabel.classList.add(this.className + "-label");
15116 this.eWrapper.classList.add(this.className + "-input-wrapper");
15117 this.eInput.classList.add(this.className + "-input");
15118 this.addCssClass('ag-input-field');
15119 this.eInput.id = this.eInput.id || "ag-" + this.getCompId() + "-input";
15120 var _a = this.config, width = _a.width, value = _a.value;
15121 if (width != null) {
15122 this.setWidth(width);
15123 }
15124 if (value != null) {
15125 this.setValue(value);
15126 }
15127 this.addInputListeners();
15128 };
15129 AgAbstractInputField.prototype.refreshLabel = function () {
15130 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(this.getLabel())) {
15131 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaLabelledBy"])(this.eInput, this.getLabelId());
15132 }
15133 else {
15134 this.eInput.removeAttribute('aria-labelledby');
15135 }
15136 _super.prototype.refreshLabel.call(this);
15137 };
15138 AgAbstractInputField.prototype.addInputListeners = function () {
15139 var _this = this;
15140 this.addManagedListener(this.eInput, 'input', function (e) { return _this.setValue(e.target.value); });
15141 };
15142 AgAbstractInputField.prototype.setInputType = function () {
15143 if (this.displayFieldTag === 'input') {
15144 this.eInput.setAttribute('type', this.inputType);
15145 }
15146 };
15147 AgAbstractInputField.prototype.getInputElement = function () {
15148 return this.eInput;
15149 };
15150 AgAbstractInputField.prototype.setInputWidth = function (width) {
15151 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setElementWidth"])(this.eWrapper, width);
15152 return this;
15153 };
15154 AgAbstractInputField.prototype.setInputName = function (name) {
15155 this.getInputElement().setAttribute('name', name);
15156 return this;
15157 };
15158 AgAbstractInputField.prototype.getFocusableElement = function () {
15159 return this.eInput;
15160 };
15161 AgAbstractInputField.prototype.setMaxLength = function (length) {
15162 var eInput = this.eInput;
15163 eInput.maxLength = length;
15164 return this;
15165 };
15166 AgAbstractInputField.prototype.setInputPlaceholder = function (placeholder) {
15167 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["addOrRemoveAttribute"])(this.eInput, 'placeholder', placeholder);
15168 return this;
15169 };
15170 AgAbstractInputField.prototype.setInputAriaLabel = function (label) {
15171 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaLabel"])(this.eInput, label);
15172 return this;
15173 };
15174 AgAbstractInputField.prototype.setDisabled = function (disabled) {
15175 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisabled"])(this.eInput, disabled);
15176 return _super.prototype.setDisabled.call(this, disabled);
15177 };
15178 __decorate([
15179 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eLabel')
15180 ], AgAbstractInputField.prototype, "eLabel", void 0);
15181 __decorate([
15182 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eWrapper')
15183 ], AgAbstractInputField.prototype, "eWrapper", void 0);
15184 __decorate([
15185 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eInput')
15186 ], AgAbstractInputField.prototype, "eInput", void 0);
15187 return AgAbstractInputField;
15188}(_agAbstractField__WEBPACK_IMPORTED_MODULE_1__["AgAbstractField"]));
15189
15190
15191
15192
15193
15194/***/ }),
15195/* 72 */
15196/***/ (function(module, __webpack_exports__, __webpack_require__) {
15197
15198"use strict";
15199__webpack_require__.r(__webpack_exports__);
15200/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScalarFilter", function() { return ScalarFilter; });
15201/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60);
15202/**
15203 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15204 * @version v27.3.0
15205 * @link https://www.ag-grid.com/
15206 * @license MIT
15207 */
15208var __extends = (undefined && undefined.__extends) || (function () {
15209 var extendStatics = function (d, b) {
15210 extendStatics = Object.setPrototypeOf ||
15211 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15212 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15213 return extendStatics(d, b);
15214 };
15215 return function (d, b) {
15216 extendStatics(d, b);
15217 function __() { this.constructor = d; }
15218 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15219 };
15220})();
15221
15222var ScalarFilter = /** @class */ (function (_super) {
15223 __extends(ScalarFilter, _super);
15224 function ScalarFilter() {
15225 return _super !== null && _super.apply(this, arguments) || this;
15226 }
15227 ScalarFilter.prototype.setParams = function (params) {
15228 _super.prototype.setParams.call(this, params);
15229 this.scalarFilterParams = params;
15230 };
15231 ScalarFilter.prototype.evaluateNullValue = function (filterType) {
15232 switch (filterType) {
15233 case ScalarFilter.EQUALS:
15234 case ScalarFilter.NOT_EQUAL:
15235 if (this.scalarFilterParams.includeBlanksInEquals) {
15236 return true;
15237 }
15238 break;
15239 case ScalarFilter.GREATER_THAN:
15240 case ScalarFilter.GREATER_THAN_OR_EQUAL:
15241 if (this.scalarFilterParams.includeBlanksInGreaterThan) {
15242 return true;
15243 }
15244 break;
15245 case ScalarFilter.LESS_THAN:
15246 case ScalarFilter.LESS_THAN_OR_EQUAL:
15247 if (this.scalarFilterParams.includeBlanksInLessThan) {
15248 return true;
15249 }
15250 break;
15251 case ScalarFilter.IN_RANGE:
15252 if (this.scalarFilterParams.includeBlanksInRange) {
15253 return true;
15254 }
15255 break;
15256 case ScalarFilter.BLANK:
15257 return true;
15258 case ScalarFilter.NOT_BLANK:
15259 return false;
15260 }
15261 return false;
15262 };
15263 ScalarFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel) {
15264 var comparator = this.comparator();
15265 var compareResult = values[0] != null ? comparator(values[0], cellValue) : 0;
15266 switch (filterModel.type) {
15267 case ScalarFilter.EQUALS:
15268 return compareResult === 0;
15269 case ScalarFilter.NOT_EQUAL:
15270 return compareResult !== 0;
15271 case ScalarFilter.GREATER_THAN:
15272 return compareResult > 0;
15273 case ScalarFilter.GREATER_THAN_OR_EQUAL:
15274 return compareResult >= 0;
15275 case ScalarFilter.LESS_THAN:
15276 return compareResult < 0;
15277 case ScalarFilter.LESS_THAN_OR_EQUAL:
15278 return compareResult <= 0;
15279 case ScalarFilter.IN_RANGE: {
15280 var compareToResult = comparator(values[1], cellValue);
15281 return this.scalarFilterParams.inRangeInclusive ?
15282 compareResult >= 0 && compareToResult <= 0 :
15283 compareResult > 0 && compareToResult < 0;
15284 }
15285 case ScalarFilter.BLANK:
15286 return this.isBlank(cellValue);
15287 case ScalarFilter.NOT_BLANK:
15288 return !this.isBlank(cellValue);
15289 default:
15290 console.warn('AG Grid: Unexpected type of filter "' + filterModel.type + '", it looks like the filter was configured with incorrect Filter Options');
15291 return true;
15292 }
15293 };
15294 return ScalarFilter;
15295}(_simpleFilter__WEBPACK_IMPORTED_MODULE_0__["SimpleFilter"]));
15296
15297
15298
15299
15300
15301/***/ }),
15302/* 73 */
15303/***/ (function(module, __webpack_exports__, __webpack_require__) {
15304
15305"use strict";
15306__webpack_require__.r(__webpack_exports__);
15307/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DateFloatingFilter", function() { return DateFloatingFilter; });
15308/* harmony import */ var _dateFilter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58);
15309/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
15310/* harmony import */ var _dateCompWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59);
15311/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(57);
15312/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(60);
15313/* harmony import */ var _floating_provided_simpleFloatingFilter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74);
15314/* harmony import */ var _providedFilter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(62);
15315/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(42);
15316/* harmony import */ var _utils_date__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(45);
15317/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(14);
15318/**
15319 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15320 * @version v27.3.0
15321 * @link https://www.ag-grid.com/
15322 * @license MIT
15323 */
15324var __extends = (undefined && undefined.__extends) || (function () {
15325 var extendStatics = function (d, b) {
15326 extendStatics = Object.setPrototypeOf ||
15327 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15328 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15329 return extendStatics(d, b);
15330 };
15331 return function (d, b) {
15332 extendStatics(d, b);
15333 function __() { this.constructor = d; }
15334 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15335 };
15336})();
15337var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15338 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15339 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15340 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;
15341 return c > 3 && r && Object.defineProperty(target, key, r), r;
15342};
15343
15344
15345
15346
15347
15348
15349
15350
15351
15352
15353var DateFloatingFilter = /** @class */ (function (_super) {
15354 __extends(DateFloatingFilter, _super);
15355 function DateFloatingFilter() {
15356 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;
15357 }
15358 DateFloatingFilter.prototype.getDefaultFilterOptions = function () {
15359 return _dateFilter__WEBPACK_IMPORTED_MODULE_0__["DateFilter"].DEFAULT_FILTER_OPTIONS;
15360 };
15361 DateFloatingFilter.prototype.conditionToString = function (condition, options) {
15362 var type = condition.type;
15363 var numberOfInputs = (options || {}).numberOfInputs;
15364 var isRange = type == _simpleFilter__WEBPACK_IMPORTED_MODULE_4__["SimpleFilter"].IN_RANGE || numberOfInputs === 2;
15365 var dateFrom = Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["parseDateTimeFromString"])(condition.dateFrom);
15366 var dateTo = Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["parseDateTimeFromString"])(condition.dateTo);
15367 if (isRange) {
15368 return Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["serialiseDate"])(dateFrom, false) + "-" + Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["serialiseDate"])(dateTo, false);
15369 }
15370 if (dateFrom != null) {
15371 return "" + Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["serialiseDate"])(dateFrom, false);
15372 }
15373 // cater for when the type doesn't need a value
15374 return "" + type;
15375 };
15376 DateFloatingFilter.prototype.init = function (params) {
15377 _super.prototype.init.call(this, params);
15378 this.params = params;
15379 this.createDateComponent();
15380 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
15381 this.eReadOnlyText
15382 .setDisabled(true)
15383 .setInputAriaLabel(translate('ariaDateFilterInput', 'Date Filter Input'));
15384 };
15385 DateFloatingFilter.prototype.setEditable = function (editable) {
15386 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_7__["setDisplayed"])(this.eDateWrapper, editable);
15387 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_7__["setDisplayed"])(this.eReadOnlyText.getGui(), !editable);
15388 };
15389 DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {
15390 // We don't want to update the floating filter if the floating filter caused the change,
15391 // because the UI is already in sync. if we didn't do this, the UI would behave strangely
15392 // as it would be updating as the user is typing
15393 if (this.isEventFromFloatingFilter(event)) {
15394 return;
15395 }
15396 _super.prototype.setLastTypeFromModel.call(this, model);
15397 var allowEditing = !this.isReadOnly() &&
15398 this.canWeEditAfterModelFromParentFilter(model);
15399 this.setEditable(allowEditing);
15400 if (allowEditing) {
15401 if (model) {
15402 var dateModel = model;
15403 this.dateComp.setDate(Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["parseDateTimeFromString"])(dateModel.dateFrom));
15404 }
15405 else {
15406 this.dateComp.setDate(null);
15407 }
15408 this.eReadOnlyText.setValue('');
15409 }
15410 else {
15411 this.eReadOnlyText.setValue(this.getTextFromModel(model));
15412 this.dateComp.setDate(null);
15413 }
15414 };
15415 DateFloatingFilter.prototype.onDateChanged = function () {
15416 var _this = this;
15417 var filterValueDate = this.dateComp.getDate();
15418 var filterValueText = Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["serialiseDate"])(filterValueDate);
15419 this.params.parentFilterInstance(function (filterInstance) {
15420 if (filterInstance) {
15421 var date = Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["parseDateTimeFromString"])(filterValueText);
15422 filterInstance.onFloatingFilterChanged(_this.getLastType() || null, date);
15423 }
15424 });
15425 };
15426 DateFloatingFilter.prototype.createDateComponent = function () {
15427 var _this = this;
15428 var debounceMs = _providedFilter__WEBPACK_IMPORTED_MODULE_6__["ProvidedFilter"].getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());
15429 var dateComponentParams = {
15430 onDateChanged: Object(_utils_function__WEBPACK_IMPORTED_MODULE_9__["debounce"])(this.onDateChanged.bind(this), debounceMs),
15431 filterParams: this.params.column.getColDef().filterParams
15432 };
15433 this.dateComp = new _dateCompWrapper__WEBPACK_IMPORTED_MODULE_2__["DateCompWrapper"](this.getContext(), this.userComponentFactory, dateComponentParams, this.eDateWrapper);
15434 this.addDestroyFunc(function () { return _this.dateComp.destroy(); });
15435 };
15436 __decorate([
15437 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
15438 ], DateFloatingFilter.prototype, "userComponentFactory", void 0);
15439 __decorate([
15440 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eReadOnlyText')
15441 ], DateFloatingFilter.prototype, "eReadOnlyText", void 0);
15442 __decorate([
15443 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eDateWrapper')
15444 ], DateFloatingFilter.prototype, "eDateWrapper", void 0);
15445 return DateFloatingFilter;
15446}(_floating_provided_simpleFloatingFilter__WEBPACK_IMPORTED_MODULE_5__["SimpleFloatingFilter"]));
15447
15448
15449
15450
15451
15452/***/ }),
15453/* 74 */
15454/***/ (function(module, __webpack_exports__, __webpack_require__) {
15455
15456"use strict";
15457__webpack_require__.r(__webpack_exports__);
15458/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleFloatingFilter", function() { return SimpleFloatingFilter; });
15459/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
15460/* harmony import */ var _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60);
15461/* harmony import */ var _provided_optionsFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61);
15462/**
15463 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15464 * @version v27.3.0
15465 * @link https://www.ag-grid.com/
15466 * @license MIT
15467 */
15468var __extends = (undefined && undefined.__extends) || (function () {
15469 var extendStatics = function (d, b) {
15470 extendStatics = Object.setPrototypeOf ||
15471 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15472 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15473 return extendStatics(d, b);
15474 };
15475 return function (d, b) {
15476 extendStatics(d, b);
15477 function __() { this.constructor = d; }
15478 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15479 };
15480})();
15481
15482
15483
15484var SimpleFloatingFilter = /** @class */ (function (_super) {
15485 __extends(SimpleFloatingFilter, _super);
15486 function SimpleFloatingFilter() {
15487 return _super !== null && _super.apply(this, arguments) || this;
15488 }
15489 SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {
15490 return 0;
15491 };
15492 // this is a user component, and IComponent has "public destroy()" as part of the interface.
15493 // so we need to override destroy() just to make the method public.
15494 SimpleFloatingFilter.prototype.destroy = function () {
15495 _super.prototype.destroy.call(this);
15496 };
15497 // used by:
15498 // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.
15499 // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)
15500 SimpleFloatingFilter.prototype.getTextFromModel = function (model) {
15501 if (!model) {
15502 return null;
15503 }
15504 var isCombined = model.operator != null;
15505 if (isCombined) {
15506 var combinedModel = model;
15507 var _a = combinedModel || {}, condition1 = _a.condition1, condition2 = _a.condition2;
15508 var customOption1 = this.optionsFactory.getCustomOption(condition1.type);
15509 var customOption2 = this.optionsFactory.getCustomOption(condition2.type);
15510 return [
15511 this.conditionToString(condition1, customOption1),
15512 combinedModel.operator,
15513 this.conditionToString(condition2, customOption2),
15514 ].join(' ');
15515 }
15516 else {
15517 var condition = model;
15518 var customOption = this.optionsFactory.getCustomOption(condition.type);
15519 // For custom filter options we display the Name of the filter instead
15520 // of displaying the `from` value, as it wouldn't be relevant
15521 var _b = customOption || {}, displayKey = _b.displayKey, displayName = _b.displayName, numberOfInputs = _b.numberOfInputs;
15522 if (displayKey && displayName && numberOfInputs === 0) {
15523 this.gridOptionsWrapper.getLocaleTextFunc()(displayKey, displayName);
15524 return displayName;
15525 }
15526 return this.conditionToString(condition, customOption);
15527 }
15528 };
15529 SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {
15530 return event && event.afterFloatingFilter;
15531 };
15532 SimpleFloatingFilter.prototype.getLastType = function () {
15533 return this.lastType;
15534 };
15535 SimpleFloatingFilter.prototype.isReadOnly = function () {
15536 return this.readOnly;
15537 };
15538 SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {
15539 // if no model provided by the parent filter use default
15540 if (!model) {
15541 this.lastType = this.optionsFactory.getDefaultOption();
15542 return;
15543 }
15544 var isCombined = model.operator;
15545 var condition;
15546 if (isCombined) {
15547 var combinedModel = model;
15548 condition = combinedModel.condition1;
15549 }
15550 else {
15551 condition = model;
15552 }
15553 this.lastType = condition.type;
15554 };
15555 SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {
15556 if (!model) {
15557 // if no model, then we can edit as long as the lastType is something we can edit, as this
15558 // is the type we will provide to the parent filter if the user decides to use the floating filter.
15559 return this.isTypeEditable(this.lastType);
15560 }
15561 // never allow editing if the filter is combined (ie has two parts)
15562 var isCombined = model.operator;
15563 if (isCombined) {
15564 return false;
15565 }
15566 var simpleModel = model;
15567 return this.isTypeEditable(simpleModel.type);
15568 };
15569 SimpleFloatingFilter.prototype.init = function (params) {
15570 this.optionsFactory = new _provided_optionsFactory__WEBPACK_IMPORTED_MODULE_2__["OptionsFactory"]();
15571 this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());
15572 this.lastType = this.optionsFactory.getDefaultOption();
15573 // readOnly is a property of IProvidedFilterParams - we need to find a better (type-safe)
15574 // way to support reading this in the future.
15575 this.readOnly = !!params.filterParams.readOnly;
15576 // we are editable if:
15577 // 1) there is a type (user has configured filter wrong if not type)
15578 // AND
15579 // 2) the default type is not 'in range'
15580 var editable = this.isTypeEditable(this.lastType);
15581 this.setEditable(editable);
15582 };
15583 SimpleFloatingFilter.prototype.doesFilterHaveSingleInput = function (filterType) {
15584 var customFilterOption = this.optionsFactory.getCustomOption(filterType);
15585 var numberOfInputs = (customFilterOption || {}).numberOfInputs;
15586 return numberOfInputs == null || numberOfInputs == 1;
15587 };
15588 SimpleFloatingFilter.prototype.isTypeEditable = function (type) {
15589 var uneditableTypes = [
15590 _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,
15591 ];
15592 return !!type &&
15593 !this.isReadOnly() &&
15594 this.doesFilterHaveSingleInput(type) &&
15595 uneditableTypes.indexOf(type) < 0;
15596 };
15597 return SimpleFloatingFilter;
15598}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
15599
15600
15601
15602
15603
15604/***/ }),
15605/* 75 */
15606/***/ (function(module, __webpack_exports__, __webpack_require__) {
15607
15608"use strict";
15609__webpack_require__.r(__webpack_exports__);
15610/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultDateComponent", function() { return DefaultDateComponent; });
15611/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
15612/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
15613/* harmony import */ var _utils_date__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45);
15614/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
15615/**
15616 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15617 * @version v27.3.0
15618 * @link https://www.ag-grid.com/
15619 * @license MIT
15620 */
15621var __extends = (undefined && undefined.__extends) || (function () {
15622 var extendStatics = function (d, b) {
15623 extendStatics = Object.setPrototypeOf ||
15624 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15625 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15626 return extendStatics(d, b);
15627 };
15628 return function (d, b) {
15629 extendStatics(d, b);
15630 function __() { this.constructor = d; }
15631 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15632 };
15633})();
15634var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15635 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15636 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15637 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;
15638 return c > 3 && r && Object.defineProperty(target, key, r), r;
15639};
15640
15641
15642
15643
15644var DefaultDateComponent = /** @class */ (function (_super) {
15645 __extends(DefaultDateComponent, _super);
15646 function DefaultDateComponent() {
15647 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;
15648 }
15649 // this is a user component, and IComponent has "public destroy()" as part of the interface.
15650 // so we need to override destroy() just to make the method public.
15651 DefaultDateComponent.prototype.destroy = function () {
15652 _super.prototype.destroy.call(this);
15653 };
15654 DefaultDateComponent.prototype.init = function (params) {
15655 var _this = this;
15656 var eDocument = this.gridOptionsWrapper.getDocument();
15657 var inputElement = this.eDateInput.getInputElement();
15658 if (this.shouldUseBrowserDatePicker(params)) {
15659 inputElement.type = 'date';
15660 }
15661 // ensures that the input element is focussed when a clear button is clicked
15662 this.addManagedListener(inputElement, 'mousedown', function () {
15663 if (_this.eDateInput.isDisabled()) {
15664 return;
15665 }
15666 inputElement.focus();
15667 });
15668 this.addManagedListener(inputElement, 'input', function (e) {
15669 if (e.target !== eDocument.activeElement) {
15670 return;
15671 }
15672 if (_this.eDateInput.isDisabled()) {
15673 return;
15674 }
15675 params.onDateChanged();
15676 });
15677 var _a = params.filterParams || {}, minValidYear = _a.minValidYear, maxValidYear = _a.maxValidYear;
15678 if (minValidYear) {
15679 inputElement.min = minValidYear + "-01-01";
15680 }
15681 if (maxValidYear) {
15682 inputElement.max = maxValidYear + "-12-31";
15683 }
15684 };
15685 DefaultDateComponent.prototype.getDate = function () {
15686 return Object(_utils_date__WEBPACK_IMPORTED_MODULE_2__["parseDateTimeFromString"])(this.eDateInput.getValue());
15687 };
15688 DefaultDateComponent.prototype.setDate = function (date) {
15689 this.eDateInput.setValue(Object(_utils_date__WEBPACK_IMPORTED_MODULE_2__["serialiseDate"])(date, false));
15690 };
15691 DefaultDateComponent.prototype.setInputPlaceholder = function (placeholder) {
15692 this.eDateInput.setInputPlaceholder(placeholder);
15693 };
15694 DefaultDateComponent.prototype.setDisabled = function (disabled) {
15695 this.eDateInput.setDisabled(disabled);
15696 };
15697 DefaultDateComponent.prototype.afterGuiAttached = function (params) {
15698 if (!params || !params.suppressFocus) {
15699 this.eDateInput.getInputElement().focus();
15700 }
15701 };
15702 DefaultDateComponent.prototype.shouldUseBrowserDatePicker = function (params) {
15703 if (params.filterParams && params.filterParams.browserDatePicker != null) {
15704 return params.filterParams.browserDatePicker;
15705 }
15706 return Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["isBrowserChrome"])() || Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["isBrowserFirefox"])();
15707 };
15708 __decorate([
15709 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eDateInput')
15710 ], DefaultDateComponent.prototype, "eDateInput", void 0);
15711 return DefaultDateComponent;
15712}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
15713
15714
15715
15716
15717
15718/***/ }),
15719/* 76 */
15720/***/ (function(module, __webpack_exports__, __webpack_require__) {
15721
15722"use strict";
15723__webpack_require__.r(__webpack_exports__);
15724/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NumberFilter", function() { return NumberFilter; });
15725/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
15726/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60);
15727/* harmony import */ var _scalarFilter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(72);
15728/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
15729/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
15730/**
15731 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15732 * @version v27.3.0
15733 * @link https://www.ag-grid.com/
15734 * @license MIT
15735 */
15736var __extends = (undefined && undefined.__extends) || (function () {
15737 var extendStatics = function (d, b) {
15738 extendStatics = Object.setPrototypeOf ||
15739 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15740 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15741 return extendStatics(d, b);
15742 };
15743 return function (d, b) {
15744 extendStatics(d, b);
15745 function __() { this.constructor = d; }
15746 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15747 };
15748})();
15749var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15750 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15751 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15752 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;
15753 return c > 3 && r && Object.defineProperty(target, key, r), r;
15754};
15755
15756
15757
15758
15759
15760var NumberFilter = /** @class */ (function (_super) {
15761 __extends(NumberFilter, _super);
15762 function NumberFilter() {
15763 return _super.call(this, 'numberFilter') || this;
15764 }
15765 NumberFilter.prototype.mapValuesFromModel = function (filterModel) {
15766 var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;
15767 return [
15768 filter == null ? null : filter,
15769 filterTo == null ? null : filterTo,
15770 ].slice(0, this.getNumberOfInputs(type));
15771 };
15772 NumberFilter.prototype.getDefaultDebounceMs = function () {
15773 return 500;
15774 };
15775 NumberFilter.prototype.comparator = function () {
15776 return function (left, right) {
15777 if (left === right) {
15778 return 0;
15779 }
15780 return left < right ? 1 : -1;
15781 };
15782 };
15783 NumberFilter.prototype.setParams = function (params) {
15784 this.numberFilterParams = params;
15785 var allowedCharPattern = this.getAllowedCharPattern();
15786 if (allowedCharPattern) {
15787 var config = { allowedCharPattern: allowedCharPattern };
15788 this.resetTemplate({
15789 'eValue-index0-1': config,
15790 'eValue-index1-1': config,
15791 'eValue-index0-2': config,
15792 'eValue-index1-2': config,
15793 });
15794 }
15795 _super.prototype.setParams.call(this, params);
15796 };
15797 NumberFilter.prototype.getDefaultFilterOptions = function () {
15798 return NumberFilter.DEFAULT_FILTER_OPTIONS;
15799 };
15800 NumberFilter.prototype.createValueTemplate = function (position) {
15801 var pos = position === _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["ConditionPosition"].One ? '1' : '2';
15802 var allowedCharPattern = this.getAllowedCharPattern();
15803 var agElementTag = allowedCharPattern ? 'ag-input-text-field' : 'ag-input-number-field';
15804 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>";
15805 };
15806 NumberFilter.prototype.getValues = function (position) {
15807 var _this = this;
15808 var result = [];
15809 this.forEachInput(function (element, index, elPosition, numberOfInputs) {
15810 if (position === elPosition && index < numberOfInputs) {
15811 result.push(_this.stringToFloat(element.getValue()));
15812 }
15813 });
15814 return result;
15815 };
15816 NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {
15817 return aSimple.filter === bSimple.filter
15818 && aSimple.filterTo === bSimple.filterTo
15819 && aSimple.type === bSimple.type;
15820 };
15821 NumberFilter.prototype.getFilterType = function () {
15822 return 'number';
15823 };
15824 NumberFilter.prototype.stringToFloat = function (value) {
15825 if (typeof value === 'number') {
15826 return value;
15827 }
15828 var filterText = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["makeNull"])(value);
15829 if (filterText != null && filterText.trim() === '') {
15830 filterText = null;
15831 }
15832 if (this.numberFilterParams.numberParser) {
15833 return this.numberFilterParams.numberParser(filterText);
15834 }
15835 return filterText == null || filterText.trim() === '-' ? null : parseFloat(filterText);
15836 };
15837 NumberFilter.prototype.createCondition = function (position) {
15838 var type = this.getConditionTypes()[position];
15839 var model = {
15840 filterType: this.getFilterType(),
15841 type: type
15842 };
15843 var values = this.getValues(position);
15844 if (values.length > 0) {
15845 model.filter = values[0];
15846 }
15847 if (values.length > 1) {
15848 model.filterTo = values[1];
15849 }
15850 return model;
15851 };
15852 NumberFilter.prototype.getInputs = function () {
15853 return [
15854 [this.eValueFrom1, this.eValueTo1],
15855 [this.eValueFrom2, this.eValueTo2],
15856 ];
15857 };
15858 NumberFilter.prototype.getAllowedCharPattern = function () {
15859 var allowedCharPattern = (this.numberFilterParams || {}).allowedCharPattern;
15860 if (allowedCharPattern) {
15861 return allowedCharPattern;
15862 }
15863 if (!Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["isBrowserChrome"])() && !Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["isBrowserEdge"])()) {
15864 // only Chrome and Edge support the HTML5 number field, so for other browsers we provide an equivalent
15865 // constraint instead
15866 return '\\d\\-\\.';
15867 }
15868 return null;
15869 };
15870 NumberFilter.DEFAULT_FILTER_OPTIONS = [
15871 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].EQUALS,
15872 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].NOT_EQUAL,
15873 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].LESS_THAN,
15874 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].LESS_THAN_OR_EQUAL,
15875 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].GREATER_THAN,
15876 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].GREATER_THAN_OR_EQUAL,
15877 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].IN_RANGE,
15878 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].BLANK,
15879 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].NOT_BLANK,
15880 ];
15881 __decorate([
15882 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index0-1')
15883 ], NumberFilter.prototype, "eValueFrom1", void 0);
15884 __decorate([
15885 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index1-1')
15886 ], NumberFilter.prototype, "eValueTo1", void 0);
15887 __decorate([
15888 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index0-2')
15889 ], NumberFilter.prototype, "eValueFrom2", void 0);
15890 __decorate([
15891 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index1-2')
15892 ], NumberFilter.prototype, "eValueTo2", void 0);
15893 return NumberFilter;
15894}(_scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"]));
15895
15896
15897
15898
15899
15900/***/ }),
15901/* 77 */
15902/***/ (function(module, __webpack_exports__, __webpack_require__) {
15903
15904"use strict";
15905__webpack_require__.r(__webpack_exports__);
15906/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NumberFloatingFilter", function() { return NumberFloatingFilter; });
15907/* harmony import */ var _numberFilter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76);
15908/* harmony import */ var _floating_provided_textInputFloatingFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78);
15909/**
15910 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15911 * @version v27.3.0
15912 * @link https://www.ag-grid.com/
15913 * @license MIT
15914 */
15915var __extends = (undefined && undefined.__extends) || (function () {
15916 var extendStatics = function (d, b) {
15917 extendStatics = Object.setPrototypeOf ||
15918 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15919 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15920 return extendStatics(d, b);
15921 };
15922 return function (d, b) {
15923 extendStatics(d, b);
15924 function __() { this.constructor = d; }
15925 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15926 };
15927})();
15928
15929
15930var NumberFloatingFilter = /** @class */ (function (_super) {
15931 __extends(NumberFloatingFilter, _super);
15932 function NumberFloatingFilter() {
15933 return _super !== null && _super.apply(this, arguments) || this;
15934 }
15935 NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {
15936 return _numberFilter__WEBPACK_IMPORTED_MODULE_0__["NumberFilter"].DEFAULT_FILTER_OPTIONS;
15937 };
15938 return NumberFloatingFilter;
15939}(_floating_provided_textInputFloatingFilter__WEBPACK_IMPORTED_MODULE_1__["TextInputFloatingFilter"]));
15940
15941
15942
15943
15944
15945/***/ }),
15946/* 78 */
15947/***/ (function(module, __webpack_exports__, __webpack_require__) {
15948
15949"use strict";
15950__webpack_require__.r(__webpack_exports__);
15951/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextInputFloatingFilter", function() { return TextInputFloatingFilter; });
15952/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
15953/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
15954/* harmony import */ var _provided_providedFilter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62);
15955/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
15956/* harmony import */ var _simpleFloatingFilter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74);
15957/* harmony import */ var _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(60);
15958/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65);
15959/* harmony import */ var _provided_text_textFilter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(79);
15960/**
15961 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15962 * @version v27.3.0
15963 * @link https://www.ag-grid.com/
15964 * @license MIT
15965 */
15966var __extends = (undefined && undefined.__extends) || (function () {
15967 var extendStatics = function (d, b) {
15968 extendStatics = Object.setPrototypeOf ||
15969 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15970 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15971 return extendStatics(d, b);
15972 };
15973 return function (d, b) {
15974 extendStatics(d, b);
15975 function __() { this.constructor = d; }
15976 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15977 };
15978})();
15979var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15980 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15981 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15982 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;
15983 return c > 3 && r && Object.defineProperty(target, key, r), r;
15984};
15985
15986
15987
15988
15989
15990
15991
15992
15993var TextInputFloatingFilter = /** @class */ (function (_super) {
15994 __extends(TextInputFloatingFilter, _super);
15995 function TextInputFloatingFilter() {
15996 return _super !== null && _super.apply(this, arguments) || this;
15997 }
15998 TextInputFloatingFilter.prototype.postConstruct = function () {
15999 this.resetTemplate();
16000 };
16001 TextInputFloatingFilter.prototype.resetTemplate = function (paramsMap) {
16002 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);
16003 };
16004 TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {
16005 return 500;
16006 };
16007 TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {
16008 if (this.isEventFromFloatingFilter(event)) {
16009 // if the floating filter triggered the change, it is already in sync
16010 return;
16011 }
16012 this.setLastTypeFromModel(model);
16013 this.eFloatingFilterInput.setValue(this.getTextFromModel(model));
16014 this.setEditable(this.canWeEditAfterModelFromParentFilter(model));
16015 };
16016 TextInputFloatingFilter.prototype.init = function (params) {
16017 _super.prototype.init.call(this, params);
16018 this.params = params;
16019 this.applyActive = _provided_providedFilter__WEBPACK_IMPORTED_MODULE_2__["ProvidedFilter"].isUseApplyButton(this.params.filterParams);
16020 var allowedCharPattern = this.params.filterParams.allowedCharPattern;
16021 if (allowedCharPattern != null) {
16022 this.resetTemplate({ eFloatingFilterInput: { allowedCharPattern: allowedCharPattern } });
16023 }
16024 if (!this.isReadOnly()) {
16025 var debounceMs = _provided_providedFilter__WEBPACK_IMPORTED_MODULE_2__["ProvidedFilter"].getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());
16026 var toDebounce = Object(_utils_function__WEBPACK_IMPORTED_MODULE_1__["debounce"])(this.syncUpWithParentFilter.bind(this), debounceMs);
16027 var filterGui = this.eFloatingFilterInput.getGui();
16028 this.addManagedListener(filterGui, 'input', toDebounce);
16029 this.addManagedListener(filterGui, 'keypress', toDebounce);
16030 this.addManagedListener(filterGui, 'keydown', toDebounce);
16031 }
16032 var columnDef = params.column.getDefinition();
16033 if (this.isReadOnly() || (columnDef.filterParams &&
16034 columnDef.filterParams.filterOptions &&
16035 columnDef.filterParams.filterOptions.length === 1 &&
16036 columnDef.filterParams.filterOptions[0] === 'inRange')) {
16037 this.eFloatingFilterInput.setDisabled(true);
16038 }
16039 var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);
16040 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
16041 this.eFloatingFilterInput.setInputAriaLabel(displayName + " " + translate('ariaFilterInput', 'Filter Input'));
16042 };
16043 TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {
16044 var _this = this;
16045 var enterKeyPressed = e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].ENTER;
16046 if (this.applyActive && !enterKeyPressed) {
16047 return;
16048 }
16049 var value = this.eFloatingFilterInput.getValue();
16050 if (this.params.filterParams.trimInput) {
16051 value = _provided_text_textFilter__WEBPACK_IMPORTED_MODULE_7__["TextFilter"].trimInput(value);
16052 this.eFloatingFilterInput.setValue(value, true); // ensure visible value is trimmed
16053 }
16054 this.params.parentFilterInstance(function (filterInstance) {
16055 if (filterInstance) {
16056 filterInstance.onFloatingFilterChanged(_this.getLastType() || null, value || null);
16057 }
16058 });
16059 };
16060 TextInputFloatingFilter.prototype.conditionToString = function (condition, options) {
16061 var numberOfInputs = (options || {}).numberOfInputs;
16062 var isRange = condition.type == _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_5__["SimpleFilter"].IN_RANGE || numberOfInputs === 2;
16063 if (isRange) {
16064 return condition.filter + "-" + condition.filterTo;
16065 }
16066 // cater for when the type doesn't need a value
16067 if (condition.filter != null) {
16068 return "" + condition.filter;
16069 }
16070 return "" + condition.type;
16071 };
16072 TextInputFloatingFilter.prototype.setEditable = function (editable) {
16073 this.eFloatingFilterInput.setDisabled(!editable);
16074 };
16075 __decorate([
16076 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('columnModel')
16077 ], TextInputFloatingFilter.prototype, "columnModel", void 0);
16078 __decorate([
16079 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eFloatingFilterInput')
16080 ], TextInputFloatingFilter.prototype, "eFloatingFilterInput", void 0);
16081 __decorate([
16082 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
16083 ], TextInputFloatingFilter.prototype, "postConstruct", null);
16084 return TextInputFloatingFilter;
16085}(_simpleFloatingFilter__WEBPACK_IMPORTED_MODULE_4__["SimpleFloatingFilter"]));
16086
16087
16088
16089
16090
16091/***/ }),
16092/* 79 */
16093/***/ (function(module, __webpack_exports__, __webpack_require__) {
16094
16095"use strict";
16096__webpack_require__.r(__webpack_exports__);
16097/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextFilter", function() { return TextFilter; });
16098/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
16099/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60);
16100/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
16101/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37);
16102/**
16103 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16104 * @version v27.3.0
16105 * @link https://www.ag-grid.com/
16106 * @license MIT
16107 */
16108var __extends = (undefined && undefined.__extends) || (function () {
16109 var extendStatics = function (d, b) {
16110 extendStatics = Object.setPrototypeOf ||
16111 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16112 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16113 return extendStatics(d, b);
16114 };
16115 return function (d, b) {
16116 extendStatics(d, b);
16117 function __() { this.constructor = d; }
16118 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16119 };
16120})();
16121var __assign = (undefined && undefined.__assign) || function () {
16122 __assign = Object.assign || function(t) {
16123 for (var s, i = 1, n = arguments.length; i < n; i++) {
16124 s = arguments[i];
16125 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
16126 t[p] = s[p];
16127 }
16128 return t;
16129 };
16130 return __assign.apply(this, arguments);
16131};
16132var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
16133 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16134 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16135 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;
16136 return c > 3 && r && Object.defineProperty(target, key, r), r;
16137};
16138
16139
16140
16141
16142var TextFilter = /** @class */ (function (_super) {
16143 __extends(TextFilter, _super);
16144 function TextFilter() {
16145 return _super.call(this, 'textFilter') || this;
16146 }
16147 TextFilter.trimInput = function (value) {
16148 var trimmedInput = value && value.trim();
16149 // trim the input, unless it is all whitespace (this is consistent with Excel behaviour)
16150 return trimmedInput === '' ? value : trimmedInput;
16151 };
16152 TextFilter.prototype.getDefaultDebounceMs = function () {
16153 return 500;
16154 };
16155 TextFilter.prototype.setParams = function (params) {
16156 _super.prototype.setParams.call(this, params);
16157 this.textFilterParams = params;
16158 this.matcher = this.getTextMatcher();
16159 this.formatter = this.textFilterParams.textFormatter ||
16160 (this.textFilterParams.caseSensitive ? TextFilter.DEFAULT_FORMATTER : TextFilter.DEFAULT_LOWERCASE_FORMATTER);
16161 };
16162 TextFilter.prototype.getTextMatcher = function () {
16163 var legacyComparator = this.textFilterParams.textCustomComparator;
16164 if (legacyComparator) {
16165 _utils__WEBPACK_IMPORTED_MODULE_3__["_"].doOnce(function () { return console.warn('AG Grid - textCustomComparator is deprecated, use textMatcher instead.'); }, 'textCustomComparator.deprecated');
16166 return function (_a) {
16167 var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;
16168 return legacyComparator(filterOption, value, filterText);
16169 };
16170 }
16171 return this.textFilterParams.textMatcher || TextFilter.DEFAULT_MATCHER;
16172 };
16173 TextFilter.prototype.createCondition = function (position) {
16174 var type = this.getConditionTypes()[position];
16175 var model = {
16176 filterType: this.getFilterType(),
16177 type: type,
16178 };
16179 var values = this.getValues(position);
16180 if (values.length > 0) {
16181 model.filter = values[0];
16182 }
16183 if (values.length > 1) {
16184 model.filterTo = values[1];
16185 }
16186 return model;
16187 };
16188 TextFilter.prototype.getFilterType = function () {
16189 return 'text';
16190 };
16191 TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {
16192 return aSimple.filter === bSimple.filter &&
16193 aSimple.filterTo === bSimple.filterTo &&
16194 aSimple.type === bSimple.type;
16195 };
16196 TextFilter.prototype.getInputs = function () {
16197 return [
16198 [this.eValueFrom1, this.eValueTo1],
16199 [this.eValueFrom2, this.eValueTo2],
16200 ];
16201 };
16202 TextFilter.prototype.getValues = function (position) {
16203 var _this = this;
16204 var result = [];
16205 this.forEachInput(function (element, index, elPosition, numberOfInputs) {
16206 if (position === elPosition && index < numberOfInputs) {
16207 var value = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["makeNull"])(element.getValue());
16208 var cleanValue = (_this.textFilterParams.trimInput ? TextFilter.trimInput(value) : value) || null;
16209 result.push(cleanValue);
16210 element.setValue(cleanValue, true); // ensure clean value is visible
16211 }
16212 });
16213 return result;
16214 };
16215 TextFilter.prototype.getDefaultFilterOptions = function () {
16216 return TextFilter.DEFAULT_FILTER_OPTIONS;
16217 };
16218 TextFilter.prototype.createValueTemplate = function (position) {
16219 var pos = position === _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["ConditionPosition"].One ? '1' : '2';
16220 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>";
16221 };
16222 TextFilter.prototype.mapValuesFromModel = function (filterModel) {
16223 var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;
16224 return [
16225 filter || null,
16226 filterTo || null,
16227 ].slice(0, this.getNumberOfInputs(type));
16228 };
16229 TextFilter.prototype.evaluateNullValue = function (filterType) {
16230 var filterTypesAllowNulls = [
16231 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_EQUAL, _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_CONTAINS, _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].BLANK,
16232 ];
16233 return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;
16234 };
16235 TextFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel, params) {
16236 var _this = this;
16237 var formattedValues = values.map(function (v) { return _this.formatter(v); }) || [];
16238 var cellValueFormatted = this.formatter(cellValue);
16239 var _a = this.textFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context, textFormatter = _a.textFormatter;
16240 if (filterModel.type === _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].BLANK) {
16241 return this.isBlank(cellValue);
16242 }
16243 else if (filterModel.type === _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_BLANK) {
16244 return !this.isBlank(cellValue);
16245 }
16246 var matcherParams = {
16247 api: api,
16248 colDef: colDef,
16249 column: column,
16250 columnApi: columnApi,
16251 context: context,
16252 node: params.node,
16253 data: params.data,
16254 filterOption: filterModel.type,
16255 value: cellValueFormatted,
16256 textFormatter: textFormatter,
16257 };
16258 return formattedValues.some(function (v) { return _this.matcher(__assign(__assign({}, matcherParams), { filterText: v })); });
16259 };
16260 TextFilter.DEFAULT_FILTER_OPTIONS = [
16261 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].CONTAINS,
16262 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_CONTAINS,
16263 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].EQUALS,
16264 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_EQUAL,
16265 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].STARTS_WITH,
16266 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].ENDS_WITH,
16267 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].BLANK,
16268 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_BLANK,
16269 ];
16270 TextFilter.DEFAULT_FORMATTER = function (from) { return from; };
16271 TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) { return from == null ? null : from.toString().toLowerCase(); };
16272 TextFilter.DEFAULT_MATCHER = function (_a) {
16273 var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;
16274 if (filterText == null) {
16275 return false;
16276 }
16277 switch (filterOption) {
16278 case TextFilter.CONTAINS:
16279 return value.indexOf(filterText) >= 0;
16280 case TextFilter.NOT_CONTAINS:
16281 return value.indexOf(filterText) < 0;
16282 case TextFilter.EQUALS:
16283 return value === filterText;
16284 case TextFilter.NOT_EQUAL:
16285 return value != filterText;
16286 case TextFilter.STARTS_WITH:
16287 return value.indexOf(filterText) === 0;
16288 case TextFilter.ENDS_WITH:
16289 var index = value.lastIndexOf(filterText);
16290 return index >= 0 && index === (value.length - filterText.length);
16291 default:
16292 return false;
16293 }
16294 };
16295 __decorate([
16296 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index0-1')
16297 ], TextFilter.prototype, "eValueFrom1", void 0);
16298 __decorate([
16299 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index1-1')
16300 ], TextFilter.prototype, "eValueTo1", void 0);
16301 __decorate([
16302 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index0-2')
16303 ], TextFilter.prototype, "eValueFrom2", void 0);
16304 __decorate([
16305 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index1-2')
16306 ], TextFilter.prototype, "eValueTo2", void 0);
16307 return TextFilter;
16308}(_simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"]));
16309
16310
16311
16312
16313
16314/***/ }),
16315/* 80 */
16316/***/ (function(module, __webpack_exports__, __webpack_require__) {
16317
16318"use strict";
16319__webpack_require__.r(__webpack_exports__);
16320/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextFloatingFilter", function() { return TextFloatingFilter; });
16321/* harmony import */ var _textFilter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79);
16322/* harmony import */ var _floating_provided_textInputFloatingFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78);
16323/**
16324 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16325 * @version v27.3.0
16326 * @link https://www.ag-grid.com/
16327 * @license MIT
16328 */
16329var __extends = (undefined && undefined.__extends) || (function () {
16330 var extendStatics = function (d, b) {
16331 extendStatics = Object.setPrototypeOf ||
16332 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16333 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16334 return extendStatics(d, b);
16335 };
16336 return function (d, b) {
16337 extendStatics(d, b);
16338 function __() { this.constructor = d; }
16339 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16340 };
16341})();
16342
16343
16344var TextFloatingFilter = /** @class */ (function (_super) {
16345 __extends(TextFloatingFilter, _super);
16346 function TextFloatingFilter() {
16347 return _super !== null && _super.apply(this, arguments) || this;
16348 }
16349 TextFloatingFilter.prototype.getDefaultFilterOptions = function () {
16350 return _textFilter__WEBPACK_IMPORTED_MODULE_0__["TextFilter"].DEFAULT_FILTER_OPTIONS;
16351 };
16352 return TextFloatingFilter;
16353}(_floating_provided_textInputFloatingFilter__WEBPACK_IMPORTED_MODULE_1__["TextInputFloatingFilter"]));
16354
16355
16356
16357
16358
16359/***/ }),
16360/* 81 */
16361/***/ (function(module, __webpack_exports__, __webpack_require__) {
16362
16363"use strict";
16364__webpack_require__.r(__webpack_exports__);
16365/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderComp", function() { return HeaderComp; });
16366/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
16367/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
16368/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
16369/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
16370/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
16371/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42);
16372/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
16373/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48);
16374/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(26);
16375/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(36);
16376/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(57);
16377/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(82);
16378/**
16379 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16380 * @version v27.3.0
16381 * @link https://www.ag-grid.com/
16382 * @license MIT
16383 */
16384var __extends = (undefined && undefined.__extends) || (function () {
16385 var extendStatics = function (d, b) {
16386 extendStatics = Object.setPrototypeOf ||
16387 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16388 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16389 return extendStatics(d, b);
16390 };
16391 return function (d, b) {
16392 extendStatics(d, b);
16393 function __() { this.constructor = d; }
16394 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16395 };
16396})();
16397var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
16398 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16399 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16400 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;
16401 return c > 3 && r && Object.defineProperty(target, key, r), r;
16402};
16403
16404
16405
16406
16407
16408
16409
16410
16411
16412
16413
16414
16415var HeaderComp = /** @class */ (function (_super) {
16416 __extends(HeaderComp, _super);
16417 function HeaderComp() {
16418 var _this = _super !== null && _super.apply(this, arguments) || this;
16419 _this.lastMovingChanged = 0;
16420 return _this;
16421 }
16422 // this is a user component, and IComponent has "public destroy()" as part of the interface.
16423 // so we need to override destroy() just to make the method public.
16424 HeaderComp.prototype.destroy = function () {
16425 _super.prototype.destroy.call(this);
16426 };
16427 HeaderComp.prototype.refresh = function (params) {
16428 this.params = params;
16429 // if template changed, then recreate the whole comp, the code required to manage
16430 // a changing template is to difficult for what it's worth.
16431 if (this.workOutTemplate() != this.currentTemplate) {
16432 return false;
16433 }
16434 if (this.workOutShowMenu() != this.currentShowMenu) {
16435 return false;
16436 }
16437 if (this.workOutSort() != this.currentSort) {
16438 return false;
16439 }
16440 this.setDisplayName(params);
16441 return true;
16442 };
16443 HeaderComp.prototype.workOutTemplate = function () {
16444 var template = Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["firstExistingValue"])(this.params.template, HeaderComp.TEMPLATE);
16445 // take account of any newlines & whitespace before/after the actual template
16446 template = template && template.trim ? template.trim() : template;
16447 return template;
16448 };
16449 HeaderComp.prototype.init = function (params) {
16450 this.params = params;
16451 this.currentTemplate = this.workOutTemplate();
16452 this.setTemplate(this.currentTemplate);
16453 this.setupTap();
16454 this.setupIcons(params.column);
16455 this.setMenu();
16456 this.setupSort();
16457 this.setupFilterIcon();
16458 this.setDisplayName(params);
16459 };
16460 HeaderComp.prototype.setDisplayName = function (params) {
16461 if (this.currentDisplayName != params.displayName) {
16462 this.currentDisplayName = params.displayName;
16463 var displayNameSanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_8__["escapeString"])(this.currentDisplayName);
16464 if (this.eText) {
16465 this.eText.innerHTML = displayNameSanitised;
16466 }
16467 }
16468 };
16469 HeaderComp.prototype.setupIcons = function (column) {
16470 this.addInIcon('sortAscending', this.eSortAsc, column);
16471 this.addInIcon('sortDescending', this.eSortDesc, column);
16472 this.addInIcon('sortUnSort', this.eSortNone, column);
16473 this.addInIcon('menu', this.eMenu, column);
16474 this.addInIcon('filter', this.eFilter, column);
16475 };
16476 HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {
16477 if (eParent == null) {
16478 return;
16479 }
16480 var eIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_7__["createIconNoSpan"])(iconName, this.gridOptionsWrapper, column);
16481 if (eIcon) {
16482 eParent.appendChild(eIcon);
16483 }
16484 };
16485 HeaderComp.prototype.setupTap = function () {
16486 var _this = this;
16487 var options = this.gridOptionsWrapper;
16488 if (options.isSuppressTouch()) {
16489 return;
16490 }
16491 var touchListener = new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__["TouchListener"](this.getGui(), true);
16492 var suppressMenuHide = options.isSuppressMenuHide();
16493 var tapMenuButton = suppressMenuHide && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(this.eMenu);
16494 var menuTouchListener = tapMenuButton ? new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__["TouchListener"](this.eMenu, true) : touchListener;
16495 if (this.params.enableMenu) {
16496 var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';
16497 var showMenuFn = function (event) {
16498 options.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);
16499 };
16500 this.addManagedListener(menuTouchListener, _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__["TouchListener"][eventType], showMenuFn);
16501 }
16502 if (this.params.enableSorting) {
16503 var tapListener = function (event) {
16504 var target = event.touchStart.target;
16505 // When suppressMenuHide is true, a tap on the menu icon will bubble up
16506 // to the header container, in that case we should not sort
16507 if (suppressMenuHide && _this.eMenu.contains(target)) {
16508 return;
16509 }
16510 _this.sortController.progressSort(_this.params.column, false, "uiColumnSorted");
16511 };
16512 this.addManagedListener(touchListener, _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__["TouchListener"].EVENT_TAP, tapListener);
16513 }
16514 // if tapMenuButton is true `touchListener` and `menuTouchListener` are different
16515 // so we need to make sure to destroy both listeners here
16516 this.addDestroyFunc(function () { return touchListener.destroy(); });
16517 if (tapMenuButton) {
16518 this.addDestroyFunc(function () { return menuTouchListener.destroy(); });
16519 }
16520 };
16521 HeaderComp.prototype.workOutShowMenu = function () {
16522 // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device/
16523 // However if suppressMenuHide is set to true the menu will be displayed alwasys, so it's ok
16524 // to show it on iPad in this case (as hover isn't needed). If suppressMenuHide
16525 // is false (default) user will need to use longpress to display the menu.
16526 var menuHides = !this.gridOptionsWrapper.isSuppressMenuHide();
16527 var onIpadAndMenuHides = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["isIOSUserAgent"])() && menuHides;
16528 var showMenu = this.params.enableMenu && !onIpadAndMenuHides;
16529 return showMenu;
16530 };
16531 HeaderComp.prototype.setMenu = function () {
16532 var _this = this;
16533 // if no menu provided in template, do nothing
16534 if (!this.eMenu) {
16535 return;
16536 }
16537 this.currentShowMenu = this.workOutShowMenu();
16538 if (!this.currentShowMenu) {
16539 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eMenu);
16540 return;
16541 }
16542 var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();
16543 this.addManagedListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });
16544 this.eMenu.classList.toggle('ag-header-menu-always-show', suppressMenuHide);
16545 };
16546 HeaderComp.prototype.showMenu = function (eventSource) {
16547 if (!eventSource) {
16548 eventSource = this.eMenu;
16549 }
16550 this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource, 'columnMenu');
16551 };
16552 HeaderComp.prototype.removeSortIcons = function () {
16553 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eSortAsc);
16554 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eSortDesc);
16555 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eSortNone);
16556 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eSortOrder);
16557 };
16558 HeaderComp.prototype.workOutSort = function () {
16559 return this.params.enableSorting;
16560 };
16561 HeaderComp.prototype.setupSort = function () {
16562 var _this = this;
16563 this.currentSort = this.params.enableSorting;
16564 if (!this.currentSort) {
16565 this.removeSortIcons();
16566 return;
16567 }
16568 var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();
16569 // keep track of last time the moving changed flag was set
16570 this.addManagedListener(this.params.column, _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"].EVENT_MOVING_CHANGED, function () {
16571 _this.lastMovingChanged = new Date().getTime();
16572 });
16573 // add the event on the header, so when clicked, we do sorting
16574 if (this.eLabel) {
16575 this.addManagedListener(this.eLabel, 'click', function (event) {
16576 // sometimes when moving a column via dragging, this was also firing a clicked event.
16577 // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076
16578 // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)
16579 var moving = _this.params.column.isMoving();
16580 var nowTime = new Date().getTime();
16581 // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn
16582 var movedRecently = (nowTime - _this.lastMovingChanged) < 50;
16583 var columnMoving = moving || movedRecently;
16584 if (!columnMoving) {
16585 var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;
16586 _this.params.progressSort(multiSort);
16587 }
16588 });
16589 }
16590 this.addManagedListener(this.params.column, _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"].EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
16591 this.onSortChanged();
16592 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));
16593 this.setMultiSortOrder();
16594 };
16595 HeaderComp.prototype.onSortChanged = function () {
16596 this.addOrRemoveCssClass('ag-header-cell-sorted-asc', this.params.column.isSortAscending());
16597 this.addOrRemoveCssClass('ag-header-cell-sorted-desc', this.params.column.isSortDescending());
16598 this.addOrRemoveCssClass('ag-header-cell-sorted-none', this.params.column.isSortNone());
16599 if (this.eSortAsc) {
16600 this.eSortAsc.classList.toggle('ag-hidden', !this.params.column.isSortAscending());
16601 }
16602 if (this.eSortDesc) {
16603 this.eSortDesc.classList.toggle('ag-hidden', !this.params.column.isSortDescending());
16604 }
16605 if (this.eSortNone) {
16606 var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();
16607 this.eSortNone.classList.toggle('ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());
16608 }
16609 };
16610 // we listen here for global sort events, NOT column sort events, as we want to do this
16611 // when sorting has been set on all column (if we listened just for our col (where we
16612 // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.
16613 HeaderComp.prototype.setMultiSortOrder = function () {
16614 if (!this.eSortOrder) {
16615 return;
16616 }
16617 var col = this.params.column;
16618 var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();
16619 var indexThisCol = allColumnsWithSorting.indexOf(col);
16620 var moreThanOneColSorting = allColumnsWithSorting.length > 1;
16621 var showIndex = col.isSorting() && moreThanOneColSorting;
16622 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["setDisplayed"])(this.eSortOrder, showIndex);
16623 if (indexThisCol >= 0) {
16624 this.eSortOrder.innerHTML = (indexThisCol + 1).toString();
16625 }
16626 else {
16627 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["clearElement"])(this.eSortOrder);
16628 }
16629 };
16630 HeaderComp.prototype.setupFilterIcon = function () {
16631 if (!this.eFilter) {
16632 return;
16633 }
16634 this.addManagedListener(this.params.column, _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"].EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
16635 this.onFilterChanged();
16636 };
16637 HeaderComp.prototype.onFilterChanged = function () {
16638 var filterPresent = this.params.column.isFilterActive();
16639 this.eFilter.classList.toggle('ag-hidden', !filterPresent);
16640 };
16641 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>";
16642 __decorate([
16643 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortController')
16644 ], HeaderComp.prototype, "sortController", void 0);
16645 __decorate([
16646 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('menuFactory')
16647 ], HeaderComp.prototype, "menuFactory", void 0);
16648 __decorate([
16649 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eFilter')
16650 ], HeaderComp.prototype, "eFilter", void 0);
16651 __decorate([
16652 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eSortAsc')
16653 ], HeaderComp.prototype, "eSortAsc", void 0);
16654 __decorate([
16655 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eSortDesc')
16656 ], HeaderComp.prototype, "eSortDesc", void 0);
16657 __decorate([
16658 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eSortNone')
16659 ], HeaderComp.prototype, "eSortNone", void 0);
16660 __decorate([
16661 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eSortOrder')
16662 ], HeaderComp.prototype, "eSortOrder", void 0);
16663 __decorate([
16664 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eMenu')
16665 ], HeaderComp.prototype, "eMenu", void 0);
16666 __decorate([
16667 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eLabel')
16668 ], HeaderComp.prototype, "eLabel", void 0);
16669 __decorate([
16670 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eText')
16671 ], HeaderComp.prototype, "eText", void 0);
16672 return HeaderComp;
16673}(_widgets_component__WEBPACK_IMPORTED_MODULE_9__["Component"]));
16674
16675
16676
16677
16678
16679/***/ }),
16680/* 82 */
16681/***/ (function(module, __webpack_exports__, __webpack_require__) {
16682
16683"use strict";
16684__webpack_require__.r(__webpack_exports__);
16685/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchListener", function() { return TouchListener; });
16686/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
16687/* harmony import */ var _utils_mouse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50);
16688/**
16689 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16690 * @version v27.3.0
16691 * @link https://www.ag-grid.com/
16692 * @license MIT
16693 */
16694
16695
16696var TouchListener = /** @class */ (function () {
16697 function TouchListener(eElement, preventMouseClick) {
16698 var _this = this;
16699 if (preventMouseClick === void 0) { preventMouseClick = false; }
16700 this.destroyFuncs = [];
16701 this.touching = false;
16702 this.eventService = new _eventService__WEBPACK_IMPORTED_MODULE_0__["EventService"]();
16703 this.eElement = eElement;
16704 this.preventMouseClick = preventMouseClick;
16705 var startListener = this.onTouchStart.bind(this);
16706 var moveListener = this.onTouchMove.bind(this);
16707 var endListener = this.onTouchEnd.bind(this);
16708 this.eElement.addEventListener("touchstart", startListener, { passive: true });
16709 this.eElement.addEventListener("touchmove", moveListener, { passive: true });
16710 // we set passive=false, as we want to prevent default on this event
16711 this.eElement.addEventListener("touchend", endListener, { passive: false });
16712 this.destroyFuncs.push(function () {
16713 _this.eElement.removeEventListener("touchstart", startListener, { passive: true });
16714 _this.eElement.removeEventListener("touchmove", moveListener, { passive: true });
16715 _this.eElement.removeEventListener("touchend", endListener, { passive: false });
16716 });
16717 }
16718 TouchListener.prototype.getActiveTouch = function (touchList) {
16719 for (var i = 0; i < touchList.length; i++) {
16720 var matches = touchList[i].identifier === this.touchStart.identifier;
16721 if (matches) {
16722 return touchList[i];
16723 }
16724 }
16725 return null;
16726 };
16727 TouchListener.prototype.addEventListener = function (eventType, listener) {
16728 this.eventService.addEventListener(eventType, listener);
16729 };
16730 TouchListener.prototype.removeEventListener = function (eventType, listener) {
16731 this.eventService.removeEventListener(eventType, listener);
16732 };
16733 TouchListener.prototype.onTouchStart = function (touchEvent) {
16734 var _this = this;
16735 // only looking at one touch point at any time
16736 if (this.touching) {
16737 return;
16738 }
16739 this.touchStart = touchEvent.touches[0];
16740 this.touching = true;
16741 this.moved = false;
16742 var touchStartCopy = this.touchStart;
16743 window.setTimeout(function () {
16744 var touchesMatch = _this.touchStart === touchStartCopy;
16745 if (_this.touching && touchesMatch && !_this.moved) {
16746 _this.moved = true;
16747 var event_1 = {
16748 type: TouchListener.EVENT_LONG_TAP,
16749 touchStart: _this.touchStart,
16750 touchEvent: touchEvent
16751 };
16752 _this.eventService.dispatchEvent(event_1);
16753 }
16754 }, 500);
16755 };
16756 TouchListener.prototype.onTouchMove = function (touchEvent) {
16757 if (!this.touching) {
16758 return;
16759 }
16760 var touch = this.getActiveTouch(touchEvent.touches);
16761 if (!touch) {
16762 return;
16763 }
16764 var eventIsFarAway = !Object(_utils_mouse__WEBPACK_IMPORTED_MODULE_1__["areEventsNear"])(touch, this.touchStart, 4);
16765 if (eventIsFarAway) {
16766 this.moved = true;
16767 }
16768 };
16769 TouchListener.prototype.onTouchEnd = function (touchEvent) {
16770 if (!this.touching) {
16771 return;
16772 }
16773 if (!this.moved) {
16774 var event_2 = {
16775 type: TouchListener.EVENT_TAP,
16776 touchStart: this.touchStart
16777 };
16778 this.eventService.dispatchEvent(event_2);
16779 this.checkForDoubleTap();
16780 }
16781 // stops the tap from also been processed as a mouse click
16782 if (this.preventMouseClick) {
16783 touchEvent.preventDefault();
16784 }
16785 this.touching = false;
16786 };
16787 TouchListener.prototype.checkForDoubleTap = function () {
16788 var now = new Date().getTime();
16789 if (this.lastTapTime && this.lastTapTime > 0) {
16790 // if previous tap, see if duration is short enough to be considered double tap
16791 var interval = now - this.lastTapTime;
16792 if (interval > TouchListener.DOUBLE_TAP_MILLIS) {
16793 // dispatch double tap event
16794 var event_3 = {
16795 type: TouchListener.EVENT_DOUBLE_TAP,
16796 touchStart: this.touchStart
16797 };
16798 this.eventService.dispatchEvent(event_3);
16799 // this stops a tripple tap ending up as two double taps
16800 this.lastTapTime = null;
16801 }
16802 else {
16803 this.lastTapTime = now;
16804 }
16805 }
16806 else {
16807 this.lastTapTime = now;
16808 }
16809 };
16810 TouchListener.prototype.destroy = function () {
16811 this.destroyFuncs.forEach(function (func) { return func(); });
16812 };
16813 TouchListener.EVENT_TAP = "tap";
16814 TouchListener.EVENT_DOUBLE_TAP = "doubleTap";
16815 TouchListener.EVENT_LONG_TAP = "longTap";
16816 TouchListener.DOUBLE_TAP_MILLIS = 500;
16817 return TouchListener;
16818}());
16819
16820
16821
16822
16823
16824/***/ }),
16825/* 83 */
16826/***/ (function(module, __webpack_exports__, __webpack_require__) {
16827
16828"use strict";
16829__webpack_require__.r(__webpack_exports__);
16830/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupComp", function() { return HeaderGroupComp; });
16831/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
16832/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
16833/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
16834/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
16835/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
16836/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
16837/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(48);
16838/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(26);
16839/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(36);
16840/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(57);
16841/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(82);
16842/**
16843 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16844 * @version v27.3.0
16845 * @link https://www.ag-grid.com/
16846 * @license MIT
16847 */
16848var __extends = (undefined && undefined.__extends) || (function () {
16849 var extendStatics = function (d, b) {
16850 extendStatics = Object.setPrototypeOf ||
16851 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16852 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16853 return extendStatics(d, b);
16854 };
16855 return function (d, b) {
16856 extendStatics(d, b);
16857 function __() { this.constructor = d; }
16858 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16859 };
16860})();
16861var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
16862 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16863 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16864 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;
16865 return c > 3 && r && Object.defineProperty(target, key, r), r;
16866};
16867
16868
16869
16870
16871
16872
16873
16874
16875
16876
16877
16878var HeaderGroupComp = /** @class */ (function (_super) {
16879 __extends(HeaderGroupComp, _super);
16880 function HeaderGroupComp() {
16881 return _super.call(this, HeaderGroupComp.TEMPLATE) || this;
16882 }
16883 // this is a user component, and IComponent has "public destroy()" as part of the interface.
16884 // so we need to override destroy() just to make the method public.
16885 HeaderGroupComp.prototype.destroy = function () {
16886 _super.prototype.destroy.call(this);
16887 };
16888 HeaderGroupComp.prototype.init = function (params) {
16889 this.params = params;
16890 this.checkWarnings();
16891 this.setupLabel();
16892 this.addGroupExpandIcon();
16893 this.setupExpandIcons();
16894 };
16895 HeaderGroupComp.prototype.checkWarnings = function () {
16896 var paramsAny = this.params;
16897 if (paramsAny.template) {
16898 var message_1 = "AG Grid: A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)";
16899 Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["doOnce"])(function () { return console.warn(message_1); }, 'HeaderGroupComp.templateNotSupported');
16900 }
16901 };
16902 HeaderGroupComp.prototype.setupExpandIcons = function () {
16903 var _this = this;
16904 this.addInIcon("columnGroupOpened", "agOpened");
16905 this.addInIcon("columnGroupClosed", "agClosed");
16906 var expandAction = function (event) {
16907 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_3__["isStopPropagationForAgGrid"])(event)) {
16908 return;
16909 }
16910 var newExpandedValue = !_this.params.columnGroup.isExpanded();
16911 _this.columnModel.setColumnGroupOpened(_this.params.columnGroup.getProvidedColumnGroup(), newExpandedValue, "uiColumnExpanded");
16912 };
16913 this.addTouchAndClickListeners(this.eCloseIcon, expandAction);
16914 this.addTouchAndClickListeners(this.eOpenIcon, expandAction);
16915 var stopPropagationAction = function (event) {
16916 Object(_utils_event__WEBPACK_IMPORTED_MODULE_3__["stopPropagationForAgGrid"])(event);
16917 };
16918 // adding stopPropagation to the double click for the icons prevents double click action happening
16919 // when the icons are clicked. if the icons are double clicked, then the groups should open and
16920 // then close again straight away. if we also listened to double click, then the group would open,
16921 // close, then open, which is not what we want. double click should only action if the user double
16922 // clicks outside of the icons.
16923 this.addManagedListener(this.eCloseIcon, "dblclick", stopPropagationAction);
16924 this.addManagedListener(this.eOpenIcon, "dblclick", stopPropagationAction);
16925 this.addManagedListener(this.getGui(), "dblclick", expandAction);
16926 this.updateIconVisibility();
16927 var providedColumnGroup = this.params.columnGroup.getProvidedColumnGroup();
16928 this.addManagedListener(providedColumnGroup, _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"].EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));
16929 this.addManagedListener(providedColumnGroup, _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"].EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));
16930 };
16931 HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {
16932 var touchListener = new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_10__["TouchListener"](eElement, true);
16933 this.addManagedListener(touchListener, _widgets_touchListener__WEBPACK_IMPORTED_MODULE_10__["TouchListener"].EVENT_TAP, action);
16934 this.addDestroyFunc(function () { return touchListener.destroy(); });
16935 this.addManagedListener(eElement, "click", action);
16936 };
16937 HeaderGroupComp.prototype.updateIconVisibility = function () {
16938 var columnGroup = this.params.columnGroup;
16939 if (columnGroup.isExpandable()) {
16940 var expanded = this.params.columnGroup.isExpanded();
16941 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eOpenIcon, expanded);
16942 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eCloseIcon, !expanded);
16943 }
16944 else {
16945 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eOpenIcon, false);
16946 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eCloseIcon, false);
16947 }
16948 };
16949 HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {
16950 var eIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_6__["createIconNoSpan"])(iconName, this.gridOptionsWrapper, null);
16951 if (eIcon) {
16952 this.getRefElement(refName).appendChild(eIcon);
16953 }
16954 };
16955 HeaderGroupComp.prototype.addGroupExpandIcon = function () {
16956 if (!this.params.columnGroup.isExpandable()) {
16957 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eOpenIcon, false);
16958 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eCloseIcon, false);
16959 return;
16960 }
16961 };
16962 HeaderGroupComp.prototype.setupLabel = function () {
16963 // no renderer, default text render
16964 var displayName = this.params.displayName;
16965 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(displayName)) {
16966 var displayNameSanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_7__["escapeString"])(displayName);
16967 this.getRefElement('agLabel').innerHTML = displayNameSanitised;
16968 }
16969 };
16970 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>";
16971 __decorate([
16972 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("columnModel")
16973 ], HeaderGroupComp.prototype, "columnModel", void 0);
16974 __decorate([
16975 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_9__["RefSelector"])("agOpened")
16976 ], HeaderGroupComp.prototype, "eOpenIcon", void 0);
16977 __decorate([
16978 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_9__["RefSelector"])("agClosed")
16979 ], HeaderGroupComp.prototype, "eCloseIcon", void 0);
16980 return HeaderGroupComp;
16981}(_widgets_component__WEBPACK_IMPORTED_MODULE_8__["Component"]));
16982
16983
16984
16985
16986
16987/***/ }),
16988/* 84 */
16989/***/ (function(module, __webpack_exports__, __webpack_require__) {
16990
16991"use strict";
16992__webpack_require__.r(__webpack_exports__);
16993/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LargeTextCellEditor", function() { return LargeTextCellEditor; });
16994/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85);
16995/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
16996/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
16997/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65);
16998/**
16999 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17000 * @version v27.3.0
17001 * @link https://www.ag-grid.com/
17002 * @license MIT
17003 */
17004var __extends = (undefined && undefined.__extends) || (function () {
17005 var extendStatics = function (d, b) {
17006 extendStatics = Object.setPrototypeOf ||
17007 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17008 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17009 return extendStatics(d, b);
17010 };
17011 return function (d, b) {
17012 extendStatics(d, b);
17013 function __() { this.constructor = d; }
17014 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17015 };
17016})();
17017var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17018 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17019 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17020 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;
17021 return c > 3 && r && Object.defineProperty(target, key, r), r;
17022};
17023
17024
17025
17026
17027var LargeTextCellEditor = /** @class */ (function (_super) {
17028 __extends(LargeTextCellEditor, _super);
17029 function LargeTextCellEditor() {
17030 return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;
17031 }
17032 LargeTextCellEditor.prototype.init = function (params) {
17033 this.params = params;
17034 this.focusAfterAttached = params.cellStartedEdit;
17035 this.eTextArea
17036 .setMaxLength(params.maxLength || 200)
17037 .setCols(params.cols || 60)
17038 .setRows(params.rows || 10);
17039 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(params.value)) {
17040 this.eTextArea.setValue(params.value.toString(), true);
17041 }
17042 this.addGuiEventListener('keydown', this.onKeyDown.bind(this));
17043 };
17044 LargeTextCellEditor.prototype.onKeyDown = function (event) {
17045 var key = event.key;
17046 if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].LEFT ||
17047 key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP ||
17048 key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].RIGHT ||
17049 key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].DOWN ||
17050 (event.shiftKey && key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].ENTER)) { // shift+enter allows for newlines
17051 event.stopPropagation();
17052 }
17053 };
17054 LargeTextCellEditor.prototype.afterGuiAttached = function () {
17055 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
17056 this.eTextArea.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));
17057 if (this.focusAfterAttached) {
17058 this.eTextArea.getFocusableElement().focus();
17059 }
17060 };
17061 LargeTextCellEditor.prototype.getValue = function () {
17062 return this.params.parseValue(this.eTextArea.getValue());
17063 };
17064 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>";
17065 __decorate([
17066 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])("eTextArea")
17067 ], LargeTextCellEditor.prototype, "eTextArea", void 0);
17068 return LargeTextCellEditor;
17069}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__["PopupComponent"]));
17070
17071
17072
17073
17074
17075/***/ }),
17076/* 85 */
17077/***/ (function(module, __webpack_exports__, __webpack_require__) {
17078
17079"use strict";
17080__webpack_require__.r(__webpack_exports__);
17081/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupComponent", function() { return PopupComponent; });
17082/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
17083/**
17084 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17085 * @version v27.3.0
17086 * @link https://www.ag-grid.com/
17087 * @license MIT
17088 */
17089var __extends = (undefined && undefined.__extends) || (function () {
17090 var extendStatics = function (d, b) {
17091 extendStatics = Object.setPrototypeOf ||
17092 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17093 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17094 return extendStatics(d, b);
17095 };
17096 return function (d, b) {
17097 extendStatics(d, b);
17098 function __() { this.constructor = d; }
17099 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17100 };
17101})();
17102
17103var PopupComponent = /** @class */ (function (_super) {
17104 __extends(PopupComponent, _super);
17105 function PopupComponent() {
17106 return _super !== null && _super.apply(this, arguments) || this;
17107 }
17108 PopupComponent.prototype.isPopup = function () {
17109 return true;
17110 };
17111 PopupComponent.prototype.setParentComponent = function (container) {
17112 container.addCssClass('ag-has-popup');
17113 _super.prototype.setParentComponent.call(this, container);
17114 };
17115 PopupComponent.prototype.destroy = function () {
17116 var parentComp = this.parentComponent;
17117 var hasParent = parentComp && parentComp.isAlive();
17118 if (hasParent) {
17119 parentComp.getGui().classList.remove('ag-has-popup');
17120 }
17121 _super.prototype.destroy.call(this);
17122 };
17123 return PopupComponent;
17124}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
17125
17126
17127
17128
17129
17130/***/ }),
17131/* 86 */
17132/***/ (function(module, __webpack_exports__, __webpack_require__) {
17133
17134"use strict";
17135__webpack_require__.r(__webpack_exports__);
17136/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupSelectCellEditor", function() { return PopupSelectCellEditor; });
17137/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
17138/* harmony import */ var _selectCellEditor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(87);
17139/**
17140 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17141 * @version v27.3.0
17142 * @link https://www.ag-grid.com/
17143 * @license MIT
17144 */
17145var __extends = (undefined && undefined.__extends) || (function () {
17146 var extendStatics = function (d, b) {
17147 extendStatics = Object.setPrototypeOf ||
17148 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17149 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17150 return extendStatics(d, b);
17151 };
17152 return function (d, b) {
17153 extendStatics(d, b);
17154 function __() { this.constructor = d; }
17155 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17156 };
17157})();
17158
17159
17160var PopupSelectCellEditor = /** @class */ (function (_super) {
17161 __extends(PopupSelectCellEditor, _super);
17162 function PopupSelectCellEditor() {
17163 var _this = _super.call(this) || this;
17164 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');
17165 return _this;
17166 }
17167 PopupSelectCellEditor.prototype.isPopup = function () {
17168 return true;
17169 };
17170 return PopupSelectCellEditor;
17171}(_selectCellEditor__WEBPACK_IMPORTED_MODULE_1__["SelectCellEditor"]));
17172
17173
17174
17175
17176
17177/***/ }),
17178/* 87 */
17179/***/ (function(module, __webpack_exports__, __webpack_require__) {
17180
17181"use strict";
17182__webpack_require__.r(__webpack_exports__);
17183/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectCellEditor", function() { return SelectCellEditor; });
17184/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
17185/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(85);
17186/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
17187/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
17188/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
17189/**
17190 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17191 * @version v27.3.0
17192 * @link https://www.ag-grid.com/
17193 * @license MIT
17194 */
17195var __extends = (undefined && undefined.__extends) || (function () {
17196 var extendStatics = function (d, b) {
17197 extendStatics = Object.setPrototypeOf ||
17198 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17199 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17200 return extendStatics(d, b);
17201 };
17202 return function (d, b) {
17203 extendStatics(d, b);
17204 function __() { this.constructor = d; }
17205 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17206 };
17207})();
17208var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17209 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17210 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17211 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;
17212 return c > 3 && r && Object.defineProperty(target, key, r), r;
17213};
17214
17215
17216
17217
17218
17219var SelectCellEditor = /** @class */ (function (_super) {
17220 __extends(SelectCellEditor, _super);
17221 function SelectCellEditor() {
17222 var _this = _super.call(this, '<div class="ag-cell-edit-wrapper"><ag-select class="ag-cell-editor" ref="eSelect"></ag-select></div>') || this;
17223 _this.startedByEnter = false;
17224 return _this;
17225 }
17226 SelectCellEditor.prototype.init = function (params) {
17227 var _this = this;
17228 this.focusAfterAttached = params.cellStartedEdit;
17229 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(params.values)) {
17230 console.warn('AG Grid: no values found for select cellEditor');
17231 return;
17232 }
17233 this.startedByEnter = params.eventKey != null ? params.eventKey === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].ENTER : false;
17234 var hasValue = false;
17235 params.values.forEach(function (value) {
17236 var option = { value: value };
17237 var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, null, value);
17238 var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;
17239 option.text = valueFormattedExits ? valueFormatted : value;
17240 _this.eSelect.addOption(option);
17241 hasValue = hasValue || params.value === value;
17242 });
17243 if (hasValue) {
17244 this.eSelect.setValue(params.value, true);
17245 }
17246 else if (params.values.length) {
17247 this.eSelect.setValue(params.values[0], true);
17248 }
17249 // we don't want to add this if full row editing, otherwise selecting will stop the
17250 // full row editing.
17251 if (!this.gridOptionsWrapper.isFullRowEdit()) {
17252 this.eSelect.onValueChange(function () { return params.stopEditing(); });
17253 }
17254 };
17255 SelectCellEditor.prototype.afterGuiAttached = function () {
17256 if (this.focusAfterAttached) {
17257 this.eSelect.getFocusableElement().focus();
17258 }
17259 if (this.startedByEnter) {
17260 this.eSelect.showPicker();
17261 }
17262 };
17263 SelectCellEditor.prototype.focusIn = function () {
17264 this.eSelect.getFocusableElement().focus();
17265 };
17266 SelectCellEditor.prototype.getValue = function () {
17267 return this.eSelect.getValue();
17268 };
17269 SelectCellEditor.prototype.isPopup = function () {
17270 return false;
17271 };
17272 __decorate([
17273 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueFormatterService')
17274 ], SelectCellEditor.prototype, "valueFormatterService", void 0);
17275 __decorate([
17276 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('eSelect')
17277 ], SelectCellEditor.prototype, "eSelect", void 0);
17278 return SelectCellEditor;
17279}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_1__["PopupComponent"]));
17280
17281
17282
17283
17284
17285/***/ }),
17286/* 88 */
17287/***/ (function(module, __webpack_exports__, __webpack_require__) {
17288
17289"use strict";
17290__webpack_require__.r(__webpack_exports__);
17291/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupTextCellEditor", function() { return PopupTextCellEditor; });
17292/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
17293/* harmony import */ var _textCellEditor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89);
17294/**
17295 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17296 * @version v27.3.0
17297 * @link https://www.ag-grid.com/
17298 * @license MIT
17299 */
17300var __extends = (undefined && undefined.__extends) || (function () {
17301 var extendStatics = function (d, b) {
17302 extendStatics = Object.setPrototypeOf ||
17303 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17304 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17305 return extendStatics(d, b);
17306 };
17307 return function (d, b) {
17308 extendStatics(d, b);
17309 function __() { this.constructor = d; }
17310 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17311 };
17312})();
17313
17314
17315var PopupTextCellEditor = /** @class */ (function (_super) {
17316 __extends(PopupTextCellEditor, _super);
17317 function PopupTextCellEditor() {
17318 var _this = _super.call(this) || this;
17319 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');
17320 return _this;
17321 }
17322 PopupTextCellEditor.prototype.isPopup = function () {
17323 return true;
17324 };
17325 return PopupTextCellEditor;
17326}(_textCellEditor__WEBPACK_IMPORTED_MODULE_1__["TextCellEditor"]));
17327
17328
17329
17330
17331
17332/***/ }),
17333/* 89 */
17334/***/ (function(module, __webpack_exports__, __webpack_require__) {
17335
17336"use strict";
17337__webpack_require__.r(__webpack_exports__);
17338/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextCellEditor", function() { return TextCellEditor; });
17339/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85);
17340/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
17341/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
17342/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
17343/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
17344/**
17345 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17346 * @version v27.3.0
17347 * @link https://www.ag-grid.com/
17348 * @license MIT
17349 */
17350var __extends = (undefined && undefined.__extends) || (function () {
17351 var extendStatics = function (d, b) {
17352 extendStatics = Object.setPrototypeOf ||
17353 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17354 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17355 return extendStatics(d, b);
17356 };
17357 return function (d, b) {
17358 extendStatics(d, b);
17359 function __() { this.constructor = d; }
17360 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17361 };
17362})();
17363var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17364 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17365 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17366 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;
17367 return c > 3 && r && Object.defineProperty(target, key, r), r;
17368};
17369
17370
17371
17372
17373
17374var TextCellEditor = /** @class */ (function (_super) {
17375 __extends(TextCellEditor, _super);
17376 function TextCellEditor() {
17377 return _super.call(this, TextCellEditor.TEMPLATE) || this;
17378 }
17379 TextCellEditor.prototype.init = function (params) {
17380 this.params = params;
17381 var eInput = this.eInput;
17382 var startValue;
17383 // cellStartedEdit is only false if we are doing fullRow editing
17384 if (params.cellStartedEdit) {
17385 this.focusAfterAttached = true;
17386 if (params.eventKey === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].BACKSPACE || params.eventKey === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].DELETE) {
17387 startValue = '';
17388 }
17389 else if (params.charPress) {
17390 startValue = params.charPress;
17391 }
17392 else {
17393 startValue = this.getStartValue(params);
17394 if (params.eventKey !== _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].F2) {
17395 this.highlightAllOnFocus = true;
17396 }
17397 }
17398 }
17399 else {
17400 this.focusAfterAttached = false;
17401 startValue = this.getStartValue(params);
17402 }
17403 if (startValue != null) {
17404 eInput.setValue(startValue, true);
17405 }
17406 this.addManagedListener(eInput.getGui(), 'keydown', function (event) {
17407 var key = event.key;
17408 if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_UP || key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_DOWN) {
17409 event.preventDefault();
17410 }
17411 });
17412 };
17413 TextCellEditor.prototype.afterGuiAttached = function () {
17414 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
17415 var eInput = this.eInput;
17416 eInput.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));
17417 if (!this.focusAfterAttached) {
17418 return;
17419 }
17420 // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input
17421 // to be focused before setSelectionRange will work. But it triggers a bug in Safari where
17422 // explicitly focusing then blurring an empty field will cause the parent container to scroll.
17423 if (!Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["isBrowserSafari"])()) {
17424 eInput.getFocusableElement().focus();
17425 }
17426 var inputEl = eInput.getInputElement();
17427 if (this.highlightAllOnFocus) {
17428 inputEl.select();
17429 }
17430 else {
17431 // when we started editing, we want the caret at the end, not the start.
17432 // this comes into play in two scenarios:
17433 // a) when user hits F2
17434 // b) when user hits a printable character
17435 var value = eInput.getValue();
17436 var len = (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(value) && value.length) || 0;
17437 if (len) {
17438 inputEl.setSelectionRange(len, len);
17439 }
17440 }
17441 };
17442 // gets called when tabbing trough cells and in full row edit mode
17443 TextCellEditor.prototype.focusIn = function () {
17444 var eInput = this.eInput;
17445 var focusEl = eInput.getFocusableElement();
17446 var inputEl = eInput.getInputElement();
17447 focusEl.focus();
17448 inputEl.select();
17449 };
17450 TextCellEditor.prototype.getValue = function () {
17451 var eInput = this.eInput;
17452 return this.params.parseValue(eInput.getValue());
17453 };
17454 TextCellEditor.prototype.getStartValue = function (params) {
17455 var formatValue = params.useFormatter || params.column.getColDef().refData;
17456 return formatValue ? params.formatValue(params.value) : params.value;
17457 };
17458 TextCellEditor.prototype.isPopup = function () {
17459 return false;
17460 };
17461 TextCellEditor.TEMPLATE = '<div class="ag-cell-edit-wrapper"><ag-input-text-field class="ag-cell-editor" ref="eInput"></ag-input-text-field></div>';
17462 __decorate([
17463 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eInput')
17464 ], TextCellEditor.prototype, "eInput", void 0);
17465 return TextCellEditor;
17466}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__["PopupComponent"]));
17467
17468
17469
17470
17471
17472/***/ }),
17473/* 90 */
17474/***/ (function(module, __webpack_exports__, __webpack_require__) {
17475
17476"use strict";
17477__webpack_require__.r(__webpack_exports__);
17478/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimateShowChangeCellRenderer", function() { return AnimateShowChangeCellRenderer; });
17479/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
17480/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
17481/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
17482/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
17483/**
17484 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17485 * @version v27.3.0
17486 * @link https://www.ag-grid.com/
17487 * @license MIT
17488 */
17489var __extends = (undefined && undefined.__extends) || (function () {
17490 var extendStatics = function (d, b) {
17491 extendStatics = Object.setPrototypeOf ||
17492 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17493 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17494 return extendStatics(d, b);
17495 };
17496 return function (d, b) {
17497 extendStatics(d, b);
17498 function __() { this.constructor = d; }
17499 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17500 };
17501})();
17502var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17503 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17504 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17505 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;
17506 return c > 3 && r && Object.defineProperty(target, key, r), r;
17507};
17508
17509
17510
17511
17512var ARROW_UP = '\u2191';
17513var ARROW_DOWN = '\u2193';
17514var AnimateShowChangeCellRenderer = /** @class */ (function (_super) {
17515 __extends(AnimateShowChangeCellRenderer, _super);
17516 function AnimateShowChangeCellRenderer() {
17517 var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;
17518 _this.refreshCount = 0;
17519 return _this;
17520 }
17521 AnimateShowChangeCellRenderer.prototype.init = function (params) {
17522 // this.params = params;
17523 this.eValue = this.queryForHtmlElement('.ag-value-change-value');
17524 this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');
17525 this.refresh(params);
17526 };
17527 AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {
17528 var absDelta = Math.abs(delta);
17529 var valueFormatted = params.formatValue(absDelta);
17530 var valueToUse = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(valueFormatted) ? valueFormatted : absDelta;
17531 var deltaUp = (delta >= 0);
17532 if (deltaUp) {
17533 this.eDelta.innerHTML = ARROW_UP + valueToUse;
17534 }
17535 else {
17536 // because negative, use ABS to remove sign
17537 this.eDelta.innerHTML = ARROW_DOWN + valueToUse;
17538 }
17539 this.eDelta.classList.toggle('ag-value-change-delta-up', deltaUp);
17540 this.eDelta.classList.toggle('ag-value-change-delta-down', !deltaUp);
17541 };
17542 AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {
17543 var _this = this;
17544 // the refreshCount makes sure that if the value updates again while
17545 // the below timer is waiting, then the below timer will realise it
17546 // is not the most recent and will not try to remove the delta value.
17547 this.refreshCount++;
17548 var refreshCountCopy = this.refreshCount;
17549 window.setTimeout(function () {
17550 if (refreshCountCopy === _this.refreshCount) {
17551 _this.hideDeltaValue();
17552 }
17553 }, 2000);
17554 };
17555 AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {
17556 this.eValue.classList.remove('ag-value-change-value-highlight');
17557 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["clearElement"])(this.eDelta);
17558 };
17559 AnimateShowChangeCellRenderer.prototype.refresh = function (params) {
17560 var value = params.value;
17561 if (value === this.lastValue) {
17562 return false;
17563 }
17564 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(params.valueFormatted)) {
17565 this.eValue.innerHTML = params.valueFormatted;
17566 }
17567 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(params.value)) {
17568 this.eValue.innerHTML = value;
17569 }
17570 else {
17571 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["clearElement"])(this.eValue);
17572 }
17573 // we don't show the delta if we are in the middle of a filter. see comment on FilterManager
17574 // with regards processingFilterChange
17575 if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {
17576 return false;
17577 }
17578 if (typeof value === 'number' && typeof this.lastValue === 'number') {
17579 var delta = value - this.lastValue;
17580 this.showDelta(params, delta);
17581 }
17582 // highlight the current value, but only if it's not new, otherwise it
17583 // would get highlighted first time the value is shown
17584 if (this.lastValue) {
17585 this.eValue.classList.add('ag-value-change-value-highlight');
17586 }
17587 this.setTimerToRemoveDelta();
17588 this.lastValue = value;
17589 return true;
17590 };
17591 AnimateShowChangeCellRenderer.TEMPLATE = '<span>' +
17592 '<span class="ag-value-change-delta"></span>' +
17593 '<span class="ag-value-change-value"></span>' +
17594 '</span>';
17595 __decorate([
17596 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
17597 ], AnimateShowChangeCellRenderer.prototype, "filterManager", void 0);
17598 return AnimateShowChangeCellRenderer;
17599}(_widgets_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
17600
17601
17602
17603
17604
17605/***/ }),
17606/* 91 */
17607/***/ (function(module, __webpack_exports__, __webpack_require__) {
17608
17609"use strict";
17610__webpack_require__.r(__webpack_exports__);
17611/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimateSlideCellRenderer", function() { return AnimateSlideCellRenderer; });
17612/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
17613/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
17614/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
17615/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
17616/**
17617 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17618 * @version v27.3.0
17619 * @link https://www.ag-grid.com/
17620 * @license MIT
17621 */
17622var __extends = (undefined && undefined.__extends) || (function () {
17623 var extendStatics = function (d, b) {
17624 extendStatics = Object.setPrototypeOf ||
17625 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17626 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17627 return extendStatics(d, b);
17628 };
17629 return function (d, b) {
17630 extendStatics(d, b);
17631 function __() { this.constructor = d; }
17632 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17633 };
17634})();
17635var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17636 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17637 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17638 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;
17639 return c > 3 && r && Object.defineProperty(target, key, r), r;
17640};
17641
17642
17643
17644
17645var AnimateSlideCellRenderer = /** @class */ (function (_super) {
17646 __extends(AnimateSlideCellRenderer, _super);
17647 function AnimateSlideCellRenderer() {
17648 var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;
17649 _this.refreshCount = 0;
17650 _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');
17651 return _this;
17652 }
17653 AnimateSlideCellRenderer.prototype.init = function (params) {
17654 this.refresh(params);
17655 };
17656 AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {
17657 var _this = this;
17658 this.refreshCount++;
17659 // below we keep checking this, and stop working on the animation
17660 // if it no longer matches - this means another animation has started
17661 // and this one is stale.
17662 var refreshCountCopy = this.refreshCount;
17663 // if old animation, remove it
17664 if (this.ePrevious) {
17665 this.getGui().removeChild(this.ePrevious);
17666 }
17667 this.ePrevious = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["loadTemplate"])('<span class="ag-value-slide-previous ag-value-slide-out"></span>');
17668 this.ePrevious.innerHTML = this.eCurrent.innerHTML;
17669 this.getGui().insertBefore(this.ePrevious, this.eCurrent);
17670 // having timeout of 0 allows use to skip to the next css turn,
17671 // so we know the previous css classes have been applied. so the
17672 // complex set of setTimeout below creates the animation
17673 window.setTimeout(function () {
17674 if (refreshCountCopy !== _this.refreshCount) {
17675 return;
17676 }
17677 _this.ePrevious.classList.add('ag-value-slide-out-end');
17678 }, 50);
17679 window.setTimeout(function () {
17680 if (refreshCountCopy !== _this.refreshCount) {
17681 return;
17682 }
17683 _this.getGui().removeChild(_this.ePrevious);
17684 _this.ePrevious = null;
17685 }, 3000);
17686 };
17687 AnimateSlideCellRenderer.prototype.refresh = function (params) {
17688 var value = params.value;
17689 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(value)) {
17690 value = '';
17691 }
17692 if (value === this.lastValue) {
17693 return false;
17694 }
17695 // we don't show the delta if we are in the middle of a filter. see comment on FilterManager
17696 // with regards processingFilterChange
17697 if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {
17698 return false;
17699 }
17700 this.addSlideAnimation();
17701 this.lastValue = value;
17702 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(params.valueFormatted)) {
17703 this.eCurrent.innerHTML = params.valueFormatted;
17704 }
17705 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(params.value)) {
17706 this.eCurrent.innerHTML = value;
17707 }
17708 else {
17709 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["clearElement"])(this.eCurrent);
17710 }
17711 return true;
17712 };
17713 AnimateSlideCellRenderer.TEMPLATE = "<span>\n <span class=\"ag-value-slide-current\"></span>\n </span>";
17714 __decorate([
17715 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
17716 ], AnimateSlideCellRenderer.prototype, "filterManager", void 0);
17717 return AnimateSlideCellRenderer;
17718}(_widgets_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
17719
17720
17721
17722
17723
17724/***/ }),
17725/* 92 */
17726/***/ (function(module, __webpack_exports__, __webpack_require__) {
17727
17728"use strict";
17729__webpack_require__.r(__webpack_exports__);
17730/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupCellRenderer", function() { return GroupCellRenderer; });
17731/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44);
17732/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
17733/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36);
17734/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(57);
17735/* harmony import */ var _groupCellRendererCtrl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(93);
17736/**
17737 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17738 * @version v27.3.0
17739 * @link https://www.ag-grid.com/
17740 * @license MIT
17741 */
17742var __extends = (undefined && undefined.__extends) || (function () {
17743 var extendStatics = function (d, b) {
17744 extendStatics = Object.setPrototypeOf ||
17745 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17746 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17747 return extendStatics(d, b);
17748 };
17749 return function (d, b) {
17750 extendStatics(d, b);
17751 function __() { this.constructor = d; }
17752 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17753 };
17754})();
17755var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17756 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17757 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17758 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;
17759 return c > 3 && r && Object.defineProperty(target, key, r), r;
17760};
17761
17762
17763
17764
17765
17766var GroupCellRenderer = /** @class */ (function (_super) {
17767 __extends(GroupCellRenderer, _super);
17768 function GroupCellRenderer() {
17769 return _super.call(this, GroupCellRenderer.TEMPLATE) || this;
17770 }
17771 GroupCellRenderer.prototype.init = function (params) {
17772 var _this = this;
17773 var compProxy = {
17774 setInnerRenderer: function (compDetails, valueToDisplay) { return _this.setRenderDetails(compDetails, valueToDisplay); },
17775 setChildCount: function (count) { return _this.eChildCount.innerHTML = count; },
17776 addOrRemoveCssClass: function (cssClass, value) { return _this.addOrRemoveCssClass(cssClass, value); },
17777 setContractedDisplayed: function (expanded) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDisplayed"])(_this.eContracted, expanded); },
17778 setExpandedDisplayed: function (expanded) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDisplayed"])(_this.eExpanded, expanded); },
17779 setCheckboxVisible: function (visible) { return _this.eCheckbox.classList.toggle('ag-invisible', !visible); }
17780 };
17781 var ctrl = this.createManagedBean(new _groupCellRendererCtrl__WEBPACK_IMPORTED_MODULE_4__["GroupCellRendererCtrl"]());
17782 var fullWidth = !params.colDef;
17783 var eGui = this.getGui();
17784 ctrl.init(compProxy, eGui, this.eCheckbox, this.eExpanded, this.eContracted, this.constructor, params);
17785 if (fullWidth) {
17786 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_0__["setAriaRole"])(eGui, 'gridcell');
17787 }
17788 };
17789 GroupCellRenderer.prototype.setRenderDetails = function (compDetails, valueToDisplay) {
17790 var _this = this;
17791 if (compDetails) {
17792 var componentPromise = compDetails.newAgStackInstance();
17793 if (!componentPromise) {
17794 return;
17795 }
17796 componentPromise.then(function (comp) {
17797 if (!comp) {
17798 return;
17799 }
17800 var destroyComp = function () { return _this.context.destroyBean(comp); };
17801 if (_this.isAlive()) {
17802 _this.eValue.appendChild(comp.getGui());
17803 _this.addDestroyFunc(destroyComp);
17804 }
17805 else {
17806 destroyComp();
17807 }
17808 });
17809 }
17810 else {
17811 this.eValue.innerText = valueToDisplay;
17812 }
17813 };
17814 // this is a user component, and IComponent has "public destroy()" as part of the interface.
17815 // so we need to have public here instead of private or protected
17816 GroupCellRenderer.prototype.destroy = function () {
17817 this.getContext().destroyBean(this.innerCellRenderer);
17818 _super.prototype.destroy.call(this);
17819 };
17820 GroupCellRenderer.prototype.refresh = function () {
17821 return false;
17822 };
17823 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>";
17824 __decorate([
17825 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eExpanded')
17826 ], GroupCellRenderer.prototype, "eExpanded", void 0);
17827 __decorate([
17828 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eContracted')
17829 ], GroupCellRenderer.prototype, "eContracted", void 0);
17830 __decorate([
17831 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eCheckbox')
17832 ], GroupCellRenderer.prototype, "eCheckbox", void 0);
17833 __decorate([
17834 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eValue')
17835 ], GroupCellRenderer.prototype, "eValue", void 0);
17836 __decorate([
17837 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eChildCount')
17838 ], GroupCellRenderer.prototype, "eChildCount", void 0);
17839 return GroupCellRenderer;
17840}(_widgets_component__WEBPACK_IMPORTED_MODULE_2__["Component"]));
17841
17842
17843
17844
17845
17846/***/ }),
17847/* 93 */
17848/***/ (function(module, __webpack_exports__, __webpack_require__) {
17849
17850"use strict";
17851__webpack_require__.r(__webpack_exports__);
17852/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupCellRendererCtrl", function() { return GroupCellRendererCtrl; });
17853/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
17854/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
17855/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
17856/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
17857/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(94);
17858/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
17859/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
17860/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
17861/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7);
17862/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(48);
17863/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(13);
17864/* harmony import */ var _checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(95);
17865/* harmony import */ var _row_rowDragComp__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(96);
17866/**
17867 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17868 * @version v27.3.0
17869 * @link https://www.ag-grid.com/
17870 * @license MIT
17871 */
17872var __extends = (undefined && undefined.__extends) || (function () {
17873 var extendStatics = function (d, b) {
17874 extendStatics = Object.setPrototypeOf ||
17875 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17876 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17877 return extendStatics(d, b);
17878 };
17879 return function (d, b) {
17880 extendStatics(d, b);
17881 function __() { this.constructor = d; }
17882 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17883 };
17884})();
17885var __assign = (undefined && undefined.__assign) || function () {
17886 __assign = Object.assign || function(t) {
17887 for (var s, i = 1, n = arguments.length; i < n; i++) {
17888 s = arguments[i];
17889 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
17890 t[p] = s[p];
17891 }
17892 return t;
17893 };
17894 return __assign.apply(this, arguments);
17895};
17896var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17897 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17898 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17899 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;
17900 return c > 3 && r && Object.defineProperty(target, key, r), r;
17901};
17902
17903
17904
17905
17906
17907
17908
17909
17910
17911
17912
17913
17914
17915var GroupCellRendererCtrl = /** @class */ (function (_super) {
17916 __extends(GroupCellRendererCtrl, _super);
17917 function GroupCellRendererCtrl() {
17918 return _super !== null && _super.apply(this, arguments) || this;
17919 }
17920 GroupCellRendererCtrl.prototype.init = function (comp, eGui, eCheckbox, eExpanded, eContracted, compClass, params) {
17921 this.params = params;
17922 this.eGui = eGui;
17923 this.eCheckbox = eCheckbox;
17924 this.eExpanded = eExpanded;
17925 this.eContracted = eContracted;
17926 this.comp = comp;
17927 this.compClass = compClass;
17928 var topLevelFooter = this.isTopLevelFooter();
17929 var embeddedRowMismatch = this.isEmbeddedRowMismatch();
17930 // This allows for empty strings to appear as groups since
17931 // it will only return for null or undefined.
17932 var nullValue = params.value == null;
17933 var skipCell = false;
17934 // if the groupCellRenderer is inside of a footer and groupHideOpenParents is true
17935 // we should only display the groupCellRenderer if the current column is the rowGroupedColumn
17936 if (this.gridOptionsWrapper.isGroupIncludeFooter() && this.gridOptionsWrapper.isGroupHideOpenParents()) {
17937 var node = params.node;
17938 if (node.footer) {
17939 var showRowGroup = params.colDef && params.colDef.showRowGroup;
17940 var rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();
17941 skipCell = showRowGroup !== rowGroupColumnId;
17942 }
17943 }
17944 this.cellIsBlank = topLevelFooter ? false : (embeddedRowMismatch || nullValue || skipCell);
17945 if (this.cellIsBlank) {
17946 return;
17947 }
17948 this.setupShowingValueForOpenedParent();
17949 this.findDisplayedGroupNode();
17950 this.addFullWidthRowDraggerIfNeeded();
17951 this.addExpandAndContract();
17952 this.addCheckboxIfNeeded();
17953 this.addValueElement();
17954 this.setupIndent();
17955 this.refreshAriaExpanded();
17956 };
17957 GroupCellRendererCtrl.prototype.destroy = function () {
17958 _super.prototype.destroy.call(this);
17959 // property cleanup to avoid memory leaks
17960 this.expandListener = null;
17961 };
17962 GroupCellRendererCtrl.prototype.refreshAriaExpanded = function () {
17963 var _a = this.params, node = _a.node, eParentOfValue = _a.eParentOfValue;
17964 if (this.expandListener) {
17965 this.expandListener = this.expandListener();
17966 }
17967 if (!this.isExpandable()) {
17968 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["removeAriaExpanded"])(eParentOfValue);
17969 return;
17970 }
17971 var listener = function () {
17972 // for react, we don't use JSX, as setting attributes via jsx is slower
17973 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["setAriaExpanded"])(eParentOfValue, !!node.expanded);
17974 };
17975 this.expandListener = this.addManagedListener(node, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_EXPANDED_CHANGED, listener) || null;
17976 listener();
17977 };
17978 GroupCellRendererCtrl.prototype.isTopLevelFooter = function () {
17979 if (!this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {
17980 return false;
17981 }
17982 if (this.params.value != null || this.params.node.level != -1) {
17983 return false;
17984 }
17985 // at this point, we know it's the root node and there is no value present, so it's a footer cell.
17986 // the only thing to work out is if we are displaying groups across multiple
17987 // columns (groupMultiAutoColumn=true), we only want 'total' to appear in the first column.
17988 var colDef = this.params.colDef;
17989 var doingFullWidth = colDef == null;
17990 if (doingFullWidth) {
17991 return true;
17992 }
17993 if (colDef.showRowGroup === true) {
17994 return true;
17995 }
17996 var rowGroupCols = this.columnModel.getRowGroupColumns();
17997 // this is a sanity check, rowGroupCols should always be present
17998 if (!rowGroupCols || rowGroupCols.length === 0) {
17999 return true;
18000 }
18001 var firstRowGroupCol = rowGroupCols[0];
18002 return firstRowGroupCol.getId() === colDef.showRowGroup;
18003 };
18004 // if we are doing embedded full width rows, we only show the renderer when
18005 // in the body, or if pinning in the pinned section, or if pinning and RTL,
18006 // in the right section. otherwise we would have the cell repeated in each section.
18007 GroupCellRendererCtrl.prototype.isEmbeddedRowMismatch = function () {
18008 if (!this.params.fullWidth || !this.gridOptionsWrapper.isEmbedFullWidthRows()) {
18009 return false;
18010 }
18011 var pinnedLeftCell = this.params.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT;
18012 var pinnedRightCell = this.params.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT;
18013 var bodyCell = !pinnedLeftCell && !pinnedRightCell;
18014 if (this.gridOptionsWrapper.isEnableRtl()) {
18015 if (this.columnModel.isPinningLeft()) {
18016 return !pinnedRightCell;
18017 }
18018 return !bodyCell;
18019 }
18020 if (this.columnModel.isPinningLeft()) {
18021 return !pinnedLeftCell;
18022 }
18023 return !bodyCell;
18024 };
18025 GroupCellRendererCtrl.prototype.findDisplayedGroupNode = function () {
18026 var column = this.params.column;
18027 var rowNode = this.params.node;
18028 if (this.showingValueForOpenedParent) {
18029 var pointer = rowNode.parent;
18030 while (pointer != null) {
18031 if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {
18032 this.displayedGroupNode = pointer;
18033 break;
18034 }
18035 pointer = pointer.parent;
18036 }
18037 }
18038 // if we didn't find a displayed group, set it to the row node
18039 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["missing"])(this.displayedGroupNode)) {
18040 this.displayedGroupNode = rowNode;
18041 }
18042 };
18043 GroupCellRendererCtrl.prototype.setupShowingValueForOpenedParent = function () {
18044 // note - this code depends on sortService.updateGroupDataForHiddenOpenParents, where group data
18045 // is updated to reflect the dragged down parents
18046 var rowNode = this.params.node;
18047 var column = this.params.column;
18048 if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {
18049 this.showingValueForOpenedParent = false;
18050 return;
18051 }
18052 // hideOpenParents means rowNode.groupData can have data for the group this column is displaying, even though
18053 // this rowNode isn't grouping by the column we are displaying
18054 // if no groupData at all, we are not showing a parent value
18055 if (!rowNode.groupData) {
18056 this.showingValueForOpenedParent = false;
18057 return;
18058 }
18059 // this is the normal case, in that we are showing a group for which this column is configured. note that
18060 // this means the Row Group is closed (if it was open, we would not be displaying it)
18061 var showingGroupNode = rowNode.rowGroupColumn != null;
18062 if (showingGroupNode) {
18063 var keyOfGroupingColumn = rowNode.rowGroupColumn.getId();
18064 var configuredToShowThisGroupLevel = column.isRowGroupDisplayed(keyOfGroupingColumn);
18065 // if showing group as normal, we didn't take group info from parent
18066 if (configuredToShowThisGroupLevel) {
18067 this.showingValueForOpenedParent = false;
18068 return;
18069 }
18070 }
18071 // see if we are showing a Group Value for the Displayed Group. if we are showing a group value, and this Row Node
18072 // is not grouping by this Displayed Group, we must of gotten the value from a parent node
18073 var valPresent = rowNode.groupData[column.getId()] != null;
18074 this.showingValueForOpenedParent = valPresent;
18075 };
18076 GroupCellRendererCtrl.prototype.addValueElement = function () {
18077 if (this.displayedGroupNode.footer) {
18078 this.addFooterValue();
18079 }
18080 else {
18081 this.addGroupValue();
18082 this.addChildCount();
18083 }
18084 };
18085 GroupCellRendererCtrl.prototype.addGroupValue = function () {
18086 // we try and use the cellRenderer of the column used for the grouping if we can
18087 var paramsAdjusted = this.adjustParamsWithDetailsFromRelatedColumn();
18088 var innerCompDetails = this.getInnerCompDetails(paramsAdjusted);
18089 var valueFormatted = paramsAdjusted.valueFormatted, value = paramsAdjusted.value;
18090 var valueWhenNoRenderer = valueFormatted != null ? valueFormatted : value;
18091 this.comp.setInnerRenderer(innerCompDetails, valueWhenNoRenderer);
18092 };
18093 GroupCellRendererCtrl.prototype.adjustParamsWithDetailsFromRelatedColumn = function () {
18094 var relatedColumn = this.displayedGroupNode.rowGroupColumn;
18095 var column = this.params.column;
18096 if (!relatedColumn) {
18097 return this.params;
18098 }
18099 var notFullWidth = column != null;
18100 if (notFullWidth) {
18101 var showingThisRowGroup = column.isRowGroupDisplayed(relatedColumn.getId());
18102 if (!showingThisRowGroup) {
18103 return this.params;
18104 }
18105 }
18106 var params = this.params;
18107 var _a = this.params, value = _a.value, node = _a.node;
18108 var valueFormatted = this.valueFormatterService.formatValue(relatedColumn, node, value);
18109 // we don't update the original params, as they could of come through React,
18110 // as react has RowGroupCellRenderer, which means the params could be props which
18111 // would be read only
18112 var paramsAdjusted = __assign(__assign({}, params), { valueFormatted: valueFormatted });
18113 return paramsAdjusted;
18114 };
18115 GroupCellRendererCtrl.prototype.addFooterValue = function () {
18116 var footerValueGetter = this.params.footerValueGetter;
18117 var footerValue = '';
18118 if (footerValueGetter) {
18119 // params is same as we were given, except we set the value as the item to display
18120 var paramsClone = Object(_utils_object__WEBPACK_IMPORTED_MODULE_10__["cloneObject"])(this.params);
18121 paramsClone.value = this.params.value;
18122 if (typeof footerValueGetter === 'function') {
18123 footerValue = footerValueGetter(paramsClone);
18124 }
18125 else if (typeof footerValueGetter === 'string') {
18126 footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);
18127 }
18128 else {
18129 console.warn('AG Grid: footerValueGetter should be either a function or a string (expression)');
18130 }
18131 }
18132 else {
18133 footerValue = 'Total ' + (this.params.value != null ? this.params.value : '');
18134 }
18135 var innerCompDetails = this.getInnerCompDetails(this.params);
18136 this.comp.setInnerRenderer(innerCompDetails, footerValue);
18137 };
18138 GroupCellRendererCtrl.prototype.getInnerCompDetails = function (params) {
18139 var _this = this;
18140 // for full width rows, we don't do any of the below
18141 if (params.fullWidth) {
18142 return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptions.groupRowRendererParams, params);
18143 }
18144 // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country
18145 // and then rating, we will use the country cell renderer for each country group row and likewise the rating
18146 // cell renderer for each rating group row.
18147 //
18148 // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers
18149 // of the grouped columns.
18150 //
18151 // so we check and use in the following order:
18152 //
18153 // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)
18154 // 2) groupedColDef.cellRenderer of the grouped column
18155 // 3) groupedColDef.cellRendererParams.innerRenderer
18156 // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer
18157 var innerCompDetails = this.userComponentFactory
18158 .getInnerRendererDetails(params, params);
18159 // avoid using GroupCellRenderer again, otherwise stack overflow, as we insert same renderer again and again.
18160 // this covers off chance user is grouping by a column that is also configured with GroupCellRenderer
18161 var isGroupRowRenderer = function (details) { return details && details.componentClass == _this.compClass; };
18162 if (innerCompDetails && !isGroupRowRenderer(innerCompDetails)) {
18163 // use the renderer defined in cellRendererParams.innerRenderer
18164 return innerCompDetails;
18165 }
18166 var relatedColumn = this.displayedGroupNode.rowGroupColumn;
18167 var relatedColDef = relatedColumn ? relatedColumn.getColDef() : undefined;
18168 if (!relatedColDef) {
18169 return;
18170 }
18171 // otherwise see if we can use the cellRenderer of the column we are grouping by
18172 var relatedCompDetails = this.userComponentFactory
18173 .getCellRendererDetails(relatedColDef, params);
18174 if (relatedCompDetails && !isGroupRowRenderer(relatedCompDetails)) {
18175 // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it
18176 return relatedCompDetails;
18177 }
18178 if (isGroupRowRenderer(relatedCompDetails) &&
18179 relatedColDef.cellRendererParams &&
18180 relatedColDef.cellRendererParams.innerRenderer) {
18181 // edge case - this comes from a column which has been grouped dynamically, that has a renderer 'group'
18182 // and has an inner cell renderer
18183 var res = this.userComponentFactory.getInnerRendererDetails(relatedColDef.cellRendererParams, params);
18184 return res;
18185 }
18186 };
18187 GroupCellRendererCtrl.prototype.addChildCount = function () {
18188 // only include the child count if it's included, eg if user doing custom aggregation,
18189 // then this could be left out, or set to -1, ie no child count
18190 if (this.params.suppressCount) {
18191 return;
18192 }
18193 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));
18194 // filtering changes the child count, so need to cater for it
18195 this.updateChildCount();
18196 };
18197 GroupCellRendererCtrl.prototype.updateChildCount = function () {
18198 var allChildrenCount = this.displayedGroupNode.allChildrenCount;
18199 var showingGroupForThisNode = this.isShowRowGroupForThisRow();
18200 var showCount = showingGroupForThisNode && allChildrenCount != null && allChildrenCount >= 0;
18201 var countString = showCount ? "(" + allChildrenCount + ")" : "";
18202 this.comp.setChildCount(countString);
18203 };
18204 GroupCellRendererCtrl.prototype.isShowRowGroupForThisRow = function () {
18205 if (this.gridOptionsWrapper.isTreeData()) {
18206 return true;
18207 }
18208 var rowGroupColumn = this.displayedGroupNode.rowGroupColumn;
18209 if (!rowGroupColumn) {
18210 return false;
18211 }
18212 // column is null for fullWidthRows
18213 var column = this.params.column;
18214 var thisColumnIsInterested = column == null || column.isRowGroupDisplayed(rowGroupColumn.getId());
18215 return thisColumnIsInterested;
18216 };
18217 GroupCellRendererCtrl.prototype.addExpandAndContract = function () {
18218 var params = this.params;
18219 var eExpandedIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_9__["createIconNoSpan"])('groupExpanded', this.gridOptionsWrapper, null);
18220 var eContractedIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_9__["createIconNoSpan"])('groupContracted', this.gridOptionsWrapper, null);
18221 if (eExpandedIcon) {
18222 this.eExpanded.appendChild(eExpandedIcon);
18223 }
18224 if (eContractedIcon) {
18225 this.eContracted.appendChild(eContractedIcon);
18226 }
18227 var eGroupCell = params.eGridCell;
18228 // if editing groups, then double click is to start editing
18229 if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {
18230 this.addManagedListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));
18231 }
18232 this.addManagedListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));
18233 this.addManagedListener(this.eContracted, 'click', this.onExpandClicked.bind(this));
18234 // expand / contract as the user hits enter
18235 this.addManagedListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));
18236 this.addManagedListener(params.node, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));
18237 this.showExpandAndContractIcons();
18238 // because we don't show the expand / contract when there are no children, we need to check every time
18239 // the number of children change.
18240 var expandableChangedListener = this.onRowNodeIsExpandableChanged.bind(this);
18241 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_ALL_CHILDREN_COUNT_CHANGED, expandableChangedListener);
18242 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_MASTER_CHANGED, expandableChangedListener);
18243 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_GROUP_CHANGED, expandableChangedListener);
18244 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_HAS_CHILDREN_CHANGED, expandableChangedListener);
18245 };
18246 GroupCellRendererCtrl.prototype.onExpandClicked = function (mouseEvent) {
18247 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isStopPropagationForAgGrid"])(mouseEvent)) {
18248 return;
18249 }
18250 // so if we expand a node, it does not also get selected.
18251 Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["stopPropagationForAgGrid"])(mouseEvent);
18252 this.onExpandOrContract(mouseEvent);
18253 };
18254 GroupCellRendererCtrl.prototype.onExpandOrContract = function (e) {
18255 // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row
18256 var rowNode = this.displayedGroupNode;
18257 var nextExpandState = !rowNode.expanded;
18258 rowNode.setExpanded(nextExpandState, e);
18259 };
18260 GroupCellRendererCtrl.prototype.isExpandable = function () {
18261 if (this.showingValueForOpenedParent) {
18262 return true;
18263 }
18264 var rowNode = this.displayedGroupNode;
18265 var reducedLeafNode = this.columnModel.isPivotMode() && rowNode.leafGroup;
18266 var expandableGroup = rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode;
18267 if (!expandableGroup) {
18268 return false;
18269 }
18270 // column is null for fullWidthRows
18271 var column = this.params.column;
18272 var displayingForOneColumnOnly = column != null && typeof column.getColDef().showRowGroup === 'string';
18273 if (displayingForOneColumnOnly) {
18274 var showing = this.isShowRowGroupForThisRow();
18275 return showing;
18276 }
18277 return true;
18278 };
18279 GroupCellRendererCtrl.prototype.showExpandAndContractIcons = function () {
18280 var _a = this, params = _a.params, displayedGroup = _a.displayedGroupNode, columnModel = _a.columnModel;
18281 var node = params.node;
18282 var isExpandable = this.isExpandable();
18283 if (isExpandable) {
18284 // if expandable, show one based on expand state.
18285 // if we were dragged down, means our parent is always expanded
18286 var expanded = this.showingValueForOpenedParent ? true : node.expanded;
18287 this.comp.setExpandedDisplayed(expanded);
18288 this.comp.setContractedDisplayed(!expanded);
18289 }
18290 else {
18291 // it not expandable, show neither
18292 this.comp.setExpandedDisplayed(false);
18293 this.comp.setContractedDisplayed(false);
18294 }
18295 // compensation padding for leaf nodes, so there is blank space instead of the expand icon
18296 var pivotMode = columnModel.isPivotMode();
18297 var pivotModeAndLeafGroup = pivotMode && displayedGroup.leafGroup;
18298 var addExpandableCss = isExpandable && !pivotModeAndLeafGroup;
18299 var isTotalFooterNode = node.footer && node.level === -1;
18300 this.comp.addOrRemoveCssClass('ag-cell-expandable', addExpandableCss);
18301 this.comp.addOrRemoveCssClass('ag-row-group', addExpandableCss);
18302 if (pivotMode) {
18303 this.comp.addOrRemoveCssClass('ag-pivot-leaf-group', pivotModeAndLeafGroup);
18304 }
18305 else if (!isTotalFooterNode) {
18306 this.comp.addOrRemoveCssClass('ag-row-group-leaf-indent', !addExpandableCss);
18307 }
18308 };
18309 GroupCellRendererCtrl.prototype.onRowNodeIsExpandableChanged = function () {
18310 // maybe if no children now, we should hide the expand / contract icons
18311 this.showExpandAndContractIcons();
18312 // if we have no children, this impacts the indent
18313 this.setIndent();
18314 this.refreshAriaExpanded();
18315 };
18316 GroupCellRendererCtrl.prototype.setupIndent = function () {
18317 // only do this if an indent - as this overwrites the padding that
18318 // the theme set, which will make things look 'not aligned' for the
18319 // first group level.
18320 var node = this.params.node;
18321 var suppressPadding = this.params.suppressPadding;
18322 if (!suppressPadding) {
18323 this.addManagedListener(node, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));
18324 this.setIndent();
18325 }
18326 };
18327 GroupCellRendererCtrl.prototype.setIndent = function () {
18328 if (this.gridOptionsWrapper.isGroupHideOpenParents()) {
18329 return;
18330 }
18331 var params = this.params;
18332 var rowNode = params.node;
18333 // if we are only showing one group column, we don't want to be indenting based on level
18334 var fullWithRow = !!params.colDef;
18335 var treeData = this.gridOptionsWrapper.isTreeData();
18336 var manyDimensionThisColumn = !fullWithRow || treeData || params.colDef.showRowGroup === true;
18337 var paddingCount = manyDimensionThisColumn ? rowNode.uiLevel : 0;
18338 var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;
18339 if (userProvidedPaddingPixelsTheDeprecatedWay) {
18340 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');
18341 }
18342 if (this.indentClass) {
18343 this.comp.addOrRemoveCssClass(this.indentClass, false);
18344 }
18345 this.indentClass = 'ag-row-group-indent-' + paddingCount;
18346 this.comp.addOrRemoveCssClass(this.indentClass, true);
18347 };
18348 GroupCellRendererCtrl.prototype.addFullWidthRowDraggerIfNeeded = function () {
18349 var _this = this;
18350 if (!this.params.fullWidth || !this.params.rowDrag) {
18351 return;
18352 }
18353 var rowDragComp = new _row_rowDragComp__WEBPACK_IMPORTED_MODULE_12__["RowDragComp"](function () { return _this.params.value; }, this.params.node);
18354 this.createManagedBean(rowDragComp, this.context);
18355 this.eGui.insertAdjacentElement('afterbegin', rowDragComp.getGui());
18356 };
18357 GroupCellRendererCtrl.prototype.isUserWantsSelected = function () {
18358 var paramsCheckbox = this.params.checkbox;
18359 if (typeof paramsCheckbox === 'function') {
18360 return paramsCheckbox(this.params);
18361 }
18362 return paramsCheckbox === true;
18363 };
18364 GroupCellRendererCtrl.prototype.addCheckboxIfNeeded = function () {
18365 var _this = this;
18366 var rowNode = this.displayedGroupNode;
18367 var checkboxNeeded = this.isUserWantsSelected() &&
18368 // footers cannot be selected
18369 !rowNode.footer &&
18370 // pinned rows cannot be selected
18371 !rowNode.rowPinned &&
18372 // details cannot be selected
18373 !rowNode.detail;
18374 if (checkboxNeeded) {
18375 var cbSelectionComponent_1 = new _checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_11__["CheckboxSelectionComponent"]();
18376 this.getContext().createBean(cbSelectionComponent_1);
18377 cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });
18378 this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());
18379 this.addDestroyFunc(function () { return _this.getContext().destroyBean(cbSelectionComponent_1); });
18380 }
18381 this.comp.setCheckboxVisible(checkboxNeeded);
18382 };
18383 GroupCellRendererCtrl.prototype.onKeyDown = function (event) {
18384 var enterKeyPressed = event.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ENTER;
18385 if (!enterKeyPressed || this.params.suppressEnterExpand) {
18386 return;
18387 }
18388 var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);
18389 if (cellEditable) {
18390 return;
18391 }
18392 this.onExpandOrContract(event);
18393 };
18394 GroupCellRendererCtrl.prototype.onCellDblClicked = function (mouseEvent) {
18395 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isStopPropagationForAgGrid"])(mouseEvent)) {
18396 return;
18397 }
18398 // we want to avoid acting on double click events on the expand / contract icon,
18399 // as that icons already has expand / collapse functionality on it. otherwise if
18400 // the icon was double clicked, we would get 'click', 'click', 'dblclick' which
18401 // is open->close->open, however double click should be open->close only.
18402 var targetIsExpandIcon = Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isElementInEventPath"])(this.eExpanded, mouseEvent)
18403 || Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isElementInEventPath"])(this.eContracted, mouseEvent);
18404 if (!targetIsExpandIcon) {
18405 this.onExpandOrContract(mouseEvent);
18406 }
18407 };
18408 __decorate([
18409 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('expressionService')
18410 ], GroupCellRendererCtrl.prototype, "expressionService", void 0);
18411 __decorate([
18412 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('valueFormatterService')
18413 ], GroupCellRendererCtrl.prototype, "valueFormatterService", void 0);
18414 __decorate([
18415 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('columnModel')
18416 ], GroupCellRendererCtrl.prototype, "columnModel", void 0);
18417 __decorate([
18418 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('userComponentFactory')
18419 ], GroupCellRendererCtrl.prototype, "userComponentFactory", void 0);
18420 __decorate([
18421 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('gridOptions')
18422 ], GroupCellRendererCtrl.prototype, "gridOptions", void 0);
18423 return GroupCellRendererCtrl;
18424}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
18425
18426
18427
18428
18429
18430/***/ }),
18431/* 94 */
18432/***/ (function(module, __webpack_exports__, __webpack_require__) {
18433
18434"use strict";
18435__webpack_require__.r(__webpack_exports__);
18436/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowHighlightPosition", function() { return RowHighlightPosition; });
18437/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNode", function() { return RowNode; });
18438/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
18439/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
18440/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
18441/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
18442/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
18443/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14);
18444/**
18445 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
18446 * @version v27.3.0
18447 * @link https://www.ag-grid.com/
18448 * @license MIT
18449 */
18450
18451
18452
18453
18454
18455
18456var RowHighlightPosition;
18457(function (RowHighlightPosition) {
18458 RowHighlightPosition[RowHighlightPosition["Above"] = 0] = "Above";
18459 RowHighlightPosition[RowHighlightPosition["Below"] = 1] = "Below";
18460})(RowHighlightPosition || (RowHighlightPosition = {}));
18461var RowNode = /** @class */ (function () {
18462 function RowNode(beans) {
18463 /** The current row index. If the row is filtered out or in a collapsed group, this value will be `null`. */
18464 this.rowIndex = null;
18465 /** The key for the group eg Ireland, UK, USA */
18466 this.key = null;
18467 /** Children mapped by the pivot columns. */
18468 this.childrenMapped = {};
18469 /**
18470 * This will be `true` if it has a rowIndex assigned, otherwise `false`.
18471 */
18472 this.displayed = false;
18473 /** The row top position in pixels. */
18474 this.rowTop = null;
18475 /** The top pixel for this row last time, makes sense if data set was ordered or filtered,
18476 * it is used so new rows can animate in from their old position. */
18477 this.oldRowTop = null;
18478 /** `true` by default - can be overridden via gridOptions.isRowSelectable(rowNode) */
18479 this.selectable = true;
18480 /** Used by sorting service - to give deterministic sort to groups. Previously we
18481 * just id for this, however id is a string and had slower sorting compared to numbers. */
18482 this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;
18483 /** When one or more Columns are using autoHeight, this keeps track of height of each autoHeight Cell,
18484 * indexed by the Column ID. */
18485 this.__autoHeights = {};
18486 /** `true` when nodes with the same id are being removed and added as part of the same batch transaction */
18487 this.alreadyRendered = false;
18488 this.highlighted = null;
18489 this.selected = false;
18490 this.onRowHeightChangedDebounced = Object(_utils_function__WEBPACK_IMPORTED_MODULE_5__["debounce"])(this.onRowHeightChanged.bind(this), 100);
18491 this.beans = beans;
18492 }
18493 /** Replaces the data on the `rowNode`. When complete, the grid will refresh the the entire rendered row if it is showing. */
18494 RowNode.prototype.setData = function (data) {
18495 this.setDataCommon(data, false);
18496 };
18497 // similar to setRowData, however it is expected that the data is the same data item. this
18498 // is intended to be used with Redux type stores, where the whole data can be changed. we are
18499 // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the
18500 // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving
18501 // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).
18502 RowNode.prototype.updateData = function (data) {
18503 this.setDataCommon(data, true);
18504 };
18505 RowNode.prototype.setDataCommon = function (data, update) {
18506 var oldData = this.data;
18507 this.data = data;
18508 this.beans.valueCache.onDataChanged();
18509 this.updateDataOnDetailNode();
18510 this.checkRowSelectable();
18511 var event = this.createDataChangedEvent(data, oldData, update);
18512 this.dispatchLocalEvent(event);
18513 };
18514 // when we are doing master / detail, the detail node is lazy created, but then kept around.
18515 // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data
18516 // in sync, otherwise expand/collapse of the detail would still show the old values.
18517 RowNode.prototype.updateDataOnDetailNode = function () {
18518 if (this.detailNode) {
18519 this.detailNode.data = this.data;
18520 }
18521 };
18522 RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {
18523 return {
18524 type: RowNode.EVENT_DATA_CHANGED,
18525 node: this,
18526 oldData: oldData,
18527 newData: newData,
18528 update: update
18529 };
18530 };
18531 RowNode.prototype.createLocalRowEvent = function (type) {
18532 return {
18533 type: type,
18534 node: this
18535 };
18536 };
18537 RowNode.prototype.getRowIndexString = function () {
18538 if (this.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP) {
18539 return 't-' + this.rowIndex;
18540 }
18541 if (this.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM) {
18542 return 'b-' + this.rowIndex;
18543 }
18544 return this.rowIndex.toString();
18545 };
18546 RowNode.prototype.createDaemonNode = function () {
18547 var oldNode = new RowNode(this.beans);
18548 // just copy the id and data, this is enough for the node to be used
18549 // in the selection controller (the selection controller is the only
18550 // place where daemon nodes can live).
18551 oldNode.id = this.id;
18552 oldNode.data = this.data;
18553 oldNode.daemon = true;
18554 oldNode.selected = this.selected;
18555 oldNode.level = this.level;
18556 return oldNode;
18557 };
18558 RowNode.prototype.setDataAndId = function (data, id) {
18559 var oldNode = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(this.id) ? this.createDaemonNode() : null;
18560 var oldData = this.data;
18561 this.data = data;
18562 this.updateDataOnDetailNode();
18563 this.setId(id);
18564 this.beans.selectionService.syncInRowNode(this, oldNode);
18565 this.checkRowSelectable();
18566 var event = this.createDataChangedEvent(data, oldData, false);
18567 this.dispatchLocalEvent(event);
18568 };
18569 RowNode.prototype.checkRowSelectable = function () {
18570 var isRowSelectableFunc = this.beans.gridOptionsWrapper.getIsRowSelectableFunc();
18571 this.setRowSelectable(isRowSelectableFunc ? isRowSelectableFunc(this) : true);
18572 };
18573 RowNode.prototype.setRowSelectable = function (newVal) {
18574 if (this.selectable !== newVal) {
18575 this.selectable = newVal;
18576 if (this.eventService) {
18577 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));
18578 }
18579 }
18580 };
18581 RowNode.prototype.setId = function (id) {
18582 // see if user is providing the id's
18583 var getRowIdFunc = this.beans.gridOptionsWrapper.getRowIdFunc();
18584 if (getRowIdFunc) {
18585 // if user is providing the id's, then we set the id only after the data has been set.
18586 // this is important for virtual pagination and viewport, where empty rows exist.
18587 if (this.data) {
18588 // we pass 'true' as we skip this level when generating keys,
18589 // as we don't always have the key for this level (eg when updating
18590 // data via transaction on SSRM, we are getting key to look up the
18591 // RowNode, don't have the RowNode yet, thus no way to get the current key)
18592 var parentKeys = this.getGroupKeys(true);
18593 this.id = getRowIdFunc({
18594 data: this.data,
18595 parentKeys: parentKeys.length > 0 ? parentKeys : undefined,
18596 level: this.level
18597 });
18598 // make sure id provided doesn't start with 'row-group-' as this is reserved. also check that
18599 // it has 'startsWith' in case the user provided a number.
18600 if (this.id !== null && typeof this.id === 'string' && this.id.startsWith(RowNode.ID_PREFIX_ROW_GROUP)) {
18601 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.");
18602 }
18603 // force id to be a string
18604 if (this.id !== null && typeof this.id !== 'string') {
18605 this.id = '' + this.id;
18606 }
18607 }
18608 else {
18609 // this can happen if user has set blank into the rowNode after the row previously
18610 // having data. this happens in virtual page row model, when data is delete and
18611 // the page is refreshed.
18612 this.id = undefined;
18613 }
18614 }
18615 else {
18616 this.id = id;
18617 }
18618 };
18619 RowNode.prototype.getGroupKeys = function (excludeSelf) {
18620 if (excludeSelf === void 0) { excludeSelf = false; }
18621 var keys = [];
18622 var pointer = this;
18623 if (excludeSelf) {
18624 pointer = pointer.parent;
18625 }
18626 while (pointer && pointer.level >= 0) {
18627 keys.push(pointer.key);
18628 pointer = pointer.parent;
18629 }
18630 keys.reverse();
18631 return keys;
18632 };
18633 RowNode.prototype.isPixelInRange = function (pixel) {
18634 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(this.rowTop) || !Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(this.rowHeight)) {
18635 return false;
18636 }
18637 return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);
18638 };
18639 RowNode.prototype.setFirstChild = function (firstChild) {
18640 if (this.firstChild === firstChild) {
18641 return;
18642 }
18643 this.firstChild = firstChild;
18644 if (this.eventService) {
18645 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));
18646 }
18647 };
18648 RowNode.prototype.setLastChild = function (lastChild) {
18649 if (this.lastChild === lastChild) {
18650 return;
18651 }
18652 this.lastChild = lastChild;
18653 if (this.eventService) {
18654 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));
18655 }
18656 };
18657 RowNode.prototype.setChildIndex = function (childIndex) {
18658 if (this.childIndex === childIndex) {
18659 return;
18660 }
18661 this.childIndex = childIndex;
18662 if (this.eventService) {
18663 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));
18664 }
18665 };
18666 RowNode.prototype.setRowTop = function (rowTop) {
18667 this.oldRowTop = this.rowTop;
18668 if (this.rowTop === rowTop) {
18669 return;
18670 }
18671 this.rowTop = rowTop;
18672 if (this.eventService) {
18673 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));
18674 }
18675 this.setDisplayed(rowTop !== null);
18676 };
18677 RowNode.prototype.clearRowTopAndRowIndex = function () {
18678 this.oldRowTop = null;
18679 this.setRowTop(null);
18680 this.setRowIndex(null);
18681 };
18682 RowNode.prototype.setDisplayed = function (displayed) {
18683 if (this.displayed === displayed) {
18684 return;
18685 }
18686 this.displayed = displayed;
18687 if (this.eventService) {
18688 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DISPLAYED_CHANGED));
18689 }
18690 };
18691 RowNode.prototype.setDragging = function (dragging) {
18692 if (this.dragging === dragging) {
18693 return;
18694 }
18695 this.dragging = dragging;
18696 if (this.eventService) {
18697 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));
18698 }
18699 };
18700 RowNode.prototype.setHighlighted = function (highlighted) {
18701 if (highlighted === this.highlighted) {
18702 return;
18703 }
18704 this.highlighted = highlighted;
18705 if (this.eventService) {
18706 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HIGHLIGHT_CHANGED));
18707 }
18708 };
18709 RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {
18710 if (this.allChildrenCount === allChildrenCount) {
18711 return;
18712 }
18713 this.allChildrenCount = allChildrenCount;
18714 if (this.eventService) {
18715 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));
18716 }
18717 };
18718 RowNode.prototype.setMaster = function (master) {
18719 if (this.master === master) {
18720 return;
18721 }
18722 // if changing AWAY from master, then unexpand, otherwise
18723 // next time it's shown it is expanded again
18724 if (this.master && !master) {
18725 this.expanded = false;
18726 }
18727 this.master = master;
18728 if (this.eventService) {
18729 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_MASTER_CHANGED));
18730 }
18731 };
18732 RowNode.prototype.setGroup = function (group) {
18733 if (this.group === group) {
18734 return;
18735 }
18736 // if we used to be a group, and no longer, then close the node
18737 if (this.group && !group) {
18738 this.expanded = false;
18739 }
18740 this.group = group;
18741 this.updateHasChildren();
18742 if (this.eventService) {
18743 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_GROUP_CHANGED));
18744 }
18745 };
18746 /**
18747 * Sets the row height.
18748 * Call if you want to change the height initially assigned to the row.
18749 * After calling, you must call `api.onRowHeightChanged()` so the grid knows it needs to work out the placement of the rows. */
18750 RowNode.prototype.setRowHeight = function (rowHeight, estimated) {
18751 if (estimated === void 0) { estimated = false; }
18752 this.rowHeight = rowHeight;
18753 this.rowHeightEstimated = estimated;
18754 if (this.eventService) {
18755 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));
18756 }
18757 };
18758 RowNode.prototype.setRowAutoHeight = function (cellHeight, column) {
18759 if (!this.__autoHeights) {
18760 this.__autoHeights = {};
18761 }
18762 var autoHeights = this.__autoHeights;
18763 autoHeights[column.getId()] = cellHeight;
18764 if (cellHeight != null) {
18765 if (this.checkAutoHeightsDebounced == null) {
18766 this.checkAutoHeightsDebounced = Object(_utils_function__WEBPACK_IMPORTED_MODULE_5__["debounce"])(this.checkAutoHeights.bind(this), 1);
18767 }
18768 this.checkAutoHeightsDebounced();
18769 }
18770 };
18771 RowNode.prototype.checkAutoHeights = function () {
18772 var notAllPresent = false;
18773 var nonePresent = true;
18774 var newRowHeight = 0;
18775 var autoHeights = this.__autoHeights;
18776 if (autoHeights == null) {
18777 return;
18778 }
18779 var displayedAutoHeightCols = this.beans.columnModel.getAllDisplayedAutoHeightCols();
18780 displayedAutoHeightCols.forEach(function (col) {
18781 var cellHeight = autoHeights[col.getId()];
18782 if (cellHeight == null) {
18783 notAllPresent = true;
18784 return;
18785 }
18786 nonePresent = false;
18787 if (cellHeight > newRowHeight) {
18788 newRowHeight = cellHeight;
18789 }
18790 });
18791 if (notAllPresent) {
18792 return;
18793 }
18794 // we take min of 10, so we don't adjust for empty rows. if <10, we put to default.
18795 // this prevents the row starting very small when waiting for async components,
18796 // which would then mean the grid squashes in far to many rows (as small heights
18797 // means more rows fit in) which looks crap. so best ignore small values and assume
18798 // we are still waiting for values to render.
18799 if (nonePresent || newRowHeight < 10) {
18800 newRowHeight = this.beans.gridOptionsWrapper.getRowHeightForNode(this).height;
18801 }
18802 if (newRowHeight == this.rowHeight) {
18803 return;
18804 }
18805 this.setRowHeight(newRowHeight);
18806 this.onRowHeightChangedDebounced();
18807 };
18808 /** This method is debounced. It is used for row auto-height. If we don't debounce,
18809 * then the Row Models will end up recalculating each row position
18810 * for each row height change and result in the Row Renderer laying out rows.
18811 * This is particularly bad if using print layout, and showing eg 1,000 rows,
18812 * each row will change it's height, causing Row Model to update 1,000 times.
18813 */
18814 RowNode.prototype.onRowHeightChanged = function () {
18815 var rowModel = this.beans.rowModel;
18816 if (rowModel.onRowHeightChanged) {
18817 rowModel.onRowHeightChanged();
18818 }
18819 };
18820 RowNode.prototype.setRowIndex = function (rowIndex) {
18821 if (this.rowIndex === rowIndex) {
18822 return;
18823 }
18824 this.rowIndex = rowIndex;
18825 if (this.eventService) {
18826 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));
18827 }
18828 };
18829 RowNode.prototype.setUiLevel = function (uiLevel) {
18830 if (this.uiLevel === uiLevel) {
18831 return;
18832 }
18833 this.uiLevel = uiLevel;
18834 if (this.eventService) {
18835 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));
18836 }
18837 };
18838 RowNode.prototype.setExpanded = function (expanded, e) {
18839 if (this.expanded === expanded) {
18840 return;
18841 }
18842 this.expanded = expanded;
18843 if (this.eventService) {
18844 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));
18845 }
18846 var event = Object.assign({}, this.createGlobalRowEvent(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_GROUP_OPENED), {
18847 expanded: expanded,
18848 event: e || null
18849 });
18850 this.beans.rowNodeEventThrottle.dispatchExpanded(event);
18851 // when using footers we need to refresh the group row, as the aggregation
18852 // values jump between group and footer
18853 if (this.beans.gridOptionsWrapper.isGroupIncludeFooter()) {
18854 this.beans.rowRenderer.refreshCells({ rowNodes: [this] });
18855 }
18856 };
18857 RowNode.prototype.createGlobalRowEvent = function (type) {
18858 return {
18859 type: type,
18860 node: this,
18861 data: this.data,
18862 rowIndex: this.rowIndex,
18863 rowPinned: this.rowPinned,
18864 context: this.beans.gridOptionsWrapper.getContext(),
18865 api: this.beans.gridOptionsWrapper.getApi(),
18866 columnApi: this.beans.gridOptionsWrapper.getColumnApi()
18867 };
18868 };
18869 RowNode.prototype.dispatchLocalEvent = function (event) {
18870 if (this.eventService) {
18871 this.eventService.dispatchEvent(event);
18872 }
18873 };
18874 /**
18875 * Replaces the value on the `rowNode` for the specified column. When complete,
18876 * the grid will refresh the rendered cell on the required row only.
18877 *
18878 * @param colKey The column where the value should be updated
18879 * @param newValue The new value
18880 * @param eventSource The source of the event
18881 * @returns `True` if the value was changed, otherwise `False`.
18882 */
18883 RowNode.prototype.setDataValue = function (colKey, newValue, eventSource) {
18884 // When it is done via the editors, no 'cell changed' event gets fired, as it's assumed that
18885 // the cell knows about the change given it's in charge of the editing.
18886 // this method is for the client to call, so the cell listens for the change
18887 // event, and also flashes the cell when the change occurs.
18888 var column = this.beans.columnModel.getPrimaryColumn(colKey);
18889 var oldValue = this.beans.valueService.getValue(column, this);
18890 var valueChanged = this.beans.valueService.setValue(this, column, newValue, eventSource);
18891 this.dispatchCellChangedEvent(column, newValue, oldValue);
18892 return valueChanged;
18893 };
18894 RowNode.prototype.setGroupValue = function (colKey, newValue) {
18895 var column = this.beans.columnModel.getGridColumn(colKey);
18896 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(this.groupData)) {
18897 this.groupData = {};
18898 }
18899 var columnId = column.getColId();
18900 var oldValue = this.groupData[columnId];
18901 if (oldValue === newValue) {
18902 return;
18903 }
18904 this.groupData[columnId] = newValue;
18905 this.dispatchCellChangedEvent(column, newValue, oldValue);
18906 };
18907 // sets the data for an aggregation
18908 RowNode.prototype.setAggData = function (newAggData) {
18909 var _this = this;
18910 // find out all keys that could potentially change
18911 var colIds = Object(_utils_object__WEBPACK_IMPORTED_MODULE_4__["getAllKeysInObjects"])([this.aggData, newAggData]);
18912 var oldAggData = this.aggData;
18913 this.aggData = newAggData;
18914 // if no event service, nobody has registered for events, so no need fire event
18915 if (this.eventService) {
18916 colIds.forEach(function (colId) {
18917 var column = _this.beans.columnModel.getGridColumn(colId);
18918 var value = _this.aggData ? _this.aggData[colId] : undefined;
18919 var oldValue = oldAggData ? oldAggData[colId] : undefined;
18920 _this.dispatchCellChangedEvent(column, value, oldValue);
18921 });
18922 }
18923 };
18924 RowNode.prototype.updateHasChildren = function () {
18925 // we need to return true when this.group=true, as this is used by server side row model
18926 // (as children are lazy loaded and stored in a cache anyway). otherwise we return true
18927 // if children exist.
18928 var newValue = (this.group && !this.footer) || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);
18929 if (newValue !== this.__hasChildren) {
18930 this.__hasChildren = !!newValue;
18931 if (this.eventService) {
18932 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HAS_CHILDREN_CHANGED));
18933 }
18934 }
18935 };
18936 RowNode.prototype.hasChildren = function () {
18937 if (this.__hasChildren == null) {
18938 this.updateHasChildren();
18939 }
18940 return this.__hasChildren;
18941 };
18942 RowNode.prototype.isEmptyRowGroupNode = function () {
18943 return this.group && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missingOrEmpty"])(this.childrenAfterGroup);
18944 };
18945 RowNode.prototype.dispatchCellChangedEvent = function (column, newValue, oldValue) {
18946 var cellChangedEvent = {
18947 type: RowNode.EVENT_CELL_CHANGED,
18948 node: this,
18949 column: column,
18950 newValue: newValue,
18951 oldValue: oldValue
18952 };
18953 this.dispatchLocalEvent(cellChangedEvent);
18954 };
18955 /**
18956 * The first time `quickFilter` runs, the grid creates a one-off string representation of the row.
18957 * This string is then used for the quick filter instead of hitting each column separately.
18958 * When you edit, using grid editing, this string gets cleared down.
18959 * 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.
18960 * Otherwise new values will not work with the `quickFilter`. */
18961 RowNode.prototype.resetQuickFilterAggregateText = function () {
18962 this.quickFilterAggregateText = null;
18963 };
18964 RowNode.prototype.isExpandable = function () {
18965 return (this.hasChildren() && !this.footer) || this.master ? true : false;
18966 };
18967 /** Returns:
18968 * - `true` if node is selected,
18969 * - `false` if the node isn't selected
18970 * - `undefined` if it's partially selected (group where not all children are selected). */
18971 RowNode.prototype.isSelected = function () {
18972 // for footers, we just return what our sibling selected state is, as cannot select a footer
18973 if (this.footer) {
18974 return this.sibling.isSelected();
18975 }
18976 return this.selected;
18977 };
18978 /** Perform a depth-first search of this node and its children. */
18979 RowNode.prototype.depthFirstSearch = function (callback) {
18980 if (this.childrenAfterGroup) {
18981 this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });
18982 }
18983 callback(this);
18984 };
18985 // + rowController.updateGroupsInSelection()
18986 // + selectionController.calculatedSelectedForAllGroupNodes()
18987 RowNode.prototype.calculateSelectedFromChildren = function () {
18988 var _a;
18989 var atLeastOneSelected = false;
18990 var atLeastOneDeSelected = false;
18991 var atLeastOneMixed = false;
18992 var newSelectedValue;
18993 if (!((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {
18994 return;
18995 }
18996 for (var i = 0; i < this.childrenAfterGroup.length; i++) {
18997 var child = this.childrenAfterGroup[i];
18998 // skip non-selectable nodes to prevent inconsistent selection values
18999 if (!child.selectable) {
19000 continue;
19001 }
19002 var childState = child.isSelected();
19003 switch (childState) {
19004 case true:
19005 atLeastOneSelected = true;
19006 break;
19007 case false:
19008 atLeastOneDeSelected = true;
19009 break;
19010 default:
19011 atLeastOneMixed = true;
19012 break;
19013 }
19014 }
19015 if (atLeastOneMixed) {
19016 newSelectedValue = undefined;
19017 }
19018 else if (atLeastOneSelected && !atLeastOneDeSelected) {
19019 newSelectedValue = true;
19020 }
19021 else if (!atLeastOneSelected && atLeastOneDeSelected) {
19022 newSelectedValue = false;
19023 }
19024 else {
19025 newSelectedValue = undefined;
19026 }
19027 this.selectThisNode(newSelectedValue);
19028 };
19029 RowNode.prototype.setSelectedInitialValue = function (selected) {
19030 this.selected = selected;
19031 };
19032 /**
19033 * Select (or deselect) the node.
19034 * @param newValue -`true` for selection, `false` for deselection.
19035 * @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.
19036 * @param suppressFinishActions - Pass `true` to prevent the `selectionChanged` from being fired. Note that the `rowSelected` event will still be fired.
19037 */
19038 RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {
19039 if (clearSelection === void 0) { clearSelection = false; }
19040 if (suppressFinishActions === void 0) { suppressFinishActions = false; }
19041 this.setSelectedParams({
19042 newValue: newValue,
19043 clearSelection: clearSelection,
19044 suppressFinishActions: suppressFinishActions,
19045 rangeSelect: false
19046 });
19047 };
19048 RowNode.prototype.isRowPinned = function () {
19049 return this.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP || this.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM;
19050 };
19051 // to make calling code more readable, this is the same method as setSelected except it takes names parameters
19052 RowNode.prototype.setSelectedParams = function (params) {
19053 var _a;
19054 var groupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();
19055 var newValue = params.newValue === true;
19056 var clearSelection = params.clearSelection === true;
19057 var suppressFinishActions = params.suppressFinishActions === true;
19058 var rangeSelect = params.rangeSelect === true;
19059 // groupSelectsFiltered only makes sense when group selects children
19060 var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);
19061 if (this.id === undefined) {
19062 console.warn('AG Grid: cannot select node until id for node is known');
19063 return 0;
19064 }
19065 if (this.rowPinned) {
19066 console.warn('AG Grid: cannot select pinned rows');
19067 return 0;
19068 }
19069 // if we are a footer, we don't do selection, just pass the info
19070 // to the sibling (the parent of the group)
19071 if (this.footer) {
19072 return this.sibling.setSelectedParams(params);
19073 }
19074 if (rangeSelect && this.beans.selectionService.getLastSelectedNode()) {
19075 var newRowClicked = this.beans.selectionService.getLastSelectedNode() !== this;
19076 var allowMultiSelect = this.beans.gridOptionsWrapper.isRowSelectionMulti();
19077 if (newRowClicked && allowMultiSelect) {
19078 var nodesChanged = this.doRowRangeSelection(params.newValue);
19079 this.beans.selectionService.setLastSelectedNode(this);
19080 return nodesChanged;
19081 }
19082 }
19083 var updatedCount = 0;
19084 // when groupSelectsFiltered, then this node may end up intermediate despite
19085 // trying to set it to true / false. this group will be calculated further on
19086 // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it
19087 // here, otherwise the updatedCount would include it.
19088 var skipThisNode = groupSelectsFiltered && this.group;
19089 if (!skipThisNode) {
19090 var thisNodeWasSelected = this.selectThisNode(newValue);
19091 if (thisNodeWasSelected) {
19092 updatedCount++;
19093 }
19094 }
19095 if (groupSelectsChildren && ((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {
19096 updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);
19097 }
19098 // clear other nodes if not doing multi select
19099 if (!suppressFinishActions) {
19100 var clearOtherNodes = newValue && (clearSelection || !this.beans.gridOptionsWrapper.isRowSelectionMulti());
19101 if (clearOtherNodes) {
19102 updatedCount += this.beans.selectionService.clearOtherNodes(this);
19103 }
19104 // only if we selected something, then update groups and fire events
19105 if (updatedCount > 0) {
19106 this.beans.selectionService.updateGroupsFromChildrenSelections();
19107 // this is the very end of the 'action node', so we are finished all the updates,
19108 // include any parent / child changes that this method caused
19109 var event_1 = {
19110 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_SELECTION_CHANGED,
19111 api: this.beans.gridApi,
19112 columnApi: this.beans.columnApi
19113 };
19114 this.beans.eventService.dispatchEvent(event_1);
19115 }
19116 // so if user next does shift-select, we know where to start the selection from
19117 if (newValue) {
19118 this.beans.selectionService.setLastSelectedNode(this);
19119 }
19120 }
19121 return updatedCount;
19122 };
19123 // selects all rows between this node and the last selected node (or the top if this is the first selection).
19124 // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by
19125 // holding down 'shift'.
19126 RowNode.prototype.doRowRangeSelection = function (value) {
19127 var _this = this;
19128 if (value === void 0) { value = true; }
19129 var groupsSelectChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();
19130 var lastSelectedNode = this.beans.selectionService.getLastSelectedNode();
19131 var nodesToSelect = this.beans.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);
19132 var updatedCount = 0;
19133 nodesToSelect.forEach(function (rowNode) {
19134 if (rowNode.group && groupsSelectChildren || (value === false && _this === rowNode)) {
19135 return;
19136 }
19137 var nodeWasSelected = rowNode.selectThisNode(value);
19138 if (nodeWasSelected) {
19139 updatedCount++;
19140 }
19141 });
19142 this.beans.selectionService.updateGroupsFromChildrenSelections();
19143 var event = {
19144 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_SELECTION_CHANGED,
19145 api: this.beans.gridApi,
19146 columnApi: this.beans.columnApi
19147 };
19148 this.beans.eventService.dispatchEvent(event);
19149 return updatedCount;
19150 };
19151 RowNode.prototype.isParentOfNode = function (potentialParent) {
19152 var parentNode = this.parent;
19153 while (parentNode) {
19154 if (parentNode === potentialParent) {
19155 return true;
19156 }
19157 parentNode = parentNode.parent;
19158 }
19159 return false;
19160 };
19161 RowNode.prototype.selectThisNode = function (newValue) {
19162 // we only check selectable when newValue=true (ie selecting) to allow unselecting values,
19163 // as selectable is dynamic, need a way to unselect rows when selectable becomes false.
19164 var selectionNotAllowed = !this.selectable && newValue;
19165 var selectionNotChanged = this.selected === newValue;
19166 if (selectionNotAllowed || selectionNotChanged) {
19167 return false;
19168 }
19169 this.selected = newValue;
19170 if (this.eventService) {
19171 this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));
19172 }
19173 var event = this.createGlobalRowEvent(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_SELECTED);
19174 this.beans.eventService.dispatchEvent(event);
19175 return true;
19176 };
19177 RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {
19178 var children = groupSelectsFiltered ? this.childrenAfterAggFilter : this.childrenAfterGroup;
19179 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(children)) {
19180 return 0;
19181 }
19182 var updatedCount = 0;
19183 for (var i = 0; i < children.length; i++) {
19184 updatedCount += children[i].setSelectedParams({
19185 newValue: newValue,
19186 clearSelection: false,
19187 suppressFinishActions: true,
19188 groupSelectsFiltered: groupSelectsFiltered
19189 });
19190 }
19191 return updatedCount;
19192 };
19193 /** Add an event listener. */
19194 RowNode.prototype.addEventListener = function (eventType, listener) {
19195 if (!this.eventService) {
19196 this.eventService = new _eventService__WEBPACK_IMPORTED_MODULE_0__["EventService"]();
19197 }
19198 this.eventService.addEventListener(eventType, listener);
19199 };
19200 /** Remove event listener. */
19201 RowNode.prototype.removeEventListener = function (eventType, listener) {
19202 if (!this.eventService) {
19203 return;
19204 }
19205 this.eventService.removeEventListener(eventType, listener);
19206 if (this.eventService.noRegisteredListenersExist()) {
19207 this.eventService = null;
19208 }
19209 };
19210 RowNode.prototype.onMouseEnter = function () {
19211 this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));
19212 };
19213 RowNode.prototype.onMouseLeave = function () {
19214 this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));
19215 };
19216 RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {
19217 var currentRowNode = this;
19218 var isCandidate = true;
19219 var foundFirstChildPath = false;
19220 var nodeToSwapIn = null;
19221 // if we are hiding groups, then if we are the first child, of the first child,
19222 // all the way up to the column we are interested in, then we show the group cell.
19223 while (isCandidate && !foundFirstChildPath) {
19224 var parentRowNode = currentRowNode.parent;
19225 var firstChild = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(parentRowNode) && currentRowNode.firstChild;
19226 if (firstChild) {
19227 if (parentRowNode.rowGroupColumn === rowGroupColumn) {
19228 foundFirstChildPath = true;
19229 nodeToSwapIn = parentRowNode;
19230 }
19231 }
19232 else {
19233 isCandidate = false;
19234 }
19235 currentRowNode = parentRowNode;
19236 }
19237 return foundFirstChildPath ? nodeToSwapIn : null;
19238 };
19239 RowNode.prototype.isFullWidthCell = function () {
19240 var isFullWidthCellFunc = this.beans.gridOptionsWrapper.getIsFullWidthCellFunc();
19241 return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this }) : false;
19242 };
19243 /**
19244 * Returns the route of the row node. If the Row Node is a group, it returns the route to that Row Node.
19245 * If the Row Node is not a group, it returns `undefined`.
19246 */
19247 RowNode.prototype.getRoute = function () {
19248 if (this.key == null) {
19249 return;
19250 }
19251 var res = [];
19252 var pointer = this;
19253 while (pointer.key != null) {
19254 res.push(pointer.key);
19255 pointer = pointer.parent;
19256 }
19257 return res.reverse();
19258 };
19259 RowNode.ID_PREFIX_ROW_GROUP = 'row-group-';
19260 RowNode.ID_PREFIX_TOP_PINNED = 't-';
19261 RowNode.ID_PREFIX_BOTTOM_PINNED = 'b-';
19262 RowNode.OBJECT_ID_SEQUENCE = 0;
19263 RowNode.EVENT_ROW_SELECTED = 'rowSelected';
19264 RowNode.EVENT_DATA_CHANGED = 'dataChanged';
19265 RowNode.EVENT_CELL_CHANGED = 'cellChanged';
19266 RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';
19267 RowNode.EVENT_MASTER_CHANGED = 'masterChanged';
19268 RowNode.EVENT_GROUP_CHANGED = 'groupChanged';
19269 RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';
19270 RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';
19271 RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';
19272 RowNode.EVENT_TOP_CHANGED = 'topChanged';
19273 RowNode.EVENT_DISPLAYED_CHANGED = 'displayedChanged';
19274 RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';
19275 RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';
19276 RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';
19277 RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';
19278 RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';
19279 RowNode.EVENT_HAS_CHILDREN_CHANGED = 'hasChildrenChanged';
19280 RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';
19281 RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';
19282 RowNode.EVENT_HIGHLIGHT_CHANGED = 'rowHighlightChanged';
19283 RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';
19284 return RowNode;
19285}());
19286
19287
19288
19289
19290
19291/***/ }),
19292/* 95 */
19293/***/ (function(module, __webpack_exports__, __webpack_require__) {
19294
19295"use strict";
19296__webpack_require__.r(__webpack_exports__);
19297/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CheckboxSelectionComponent", function() { return CheckboxSelectionComponent; });
19298/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
19299/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
19300/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
19301/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(57);
19302/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(94);
19303/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
19304/**
19305 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
19306 * @version v27.3.0
19307 * @link https://www.ag-grid.com/
19308 * @license MIT
19309 */
19310var __extends = (undefined && undefined.__extends) || (function () {
19311 var extendStatics = function (d, b) {
19312 extendStatics = Object.setPrototypeOf ||
19313 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
19314 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
19315 return extendStatics(d, b);
19316 };
19317 return function (d, b) {
19318 extendStatics(d, b);
19319 function __() { this.constructor = d; }
19320 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19321 };
19322})();
19323var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
19324 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19325 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19326 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;
19327 return c > 3 && r && Object.defineProperty(target, key, r), r;
19328};
19329
19330
19331
19332
19333
19334
19335var CheckboxSelectionComponent = /** @class */ (function (_super) {
19336 __extends(CheckboxSelectionComponent, _super);
19337 function CheckboxSelectionComponent() {
19338 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;
19339 }
19340 CheckboxSelectionComponent.prototype.postConstruct = function () {
19341 this.eCheckbox.setPassive(true);
19342 };
19343 CheckboxSelectionComponent.prototype.getCheckboxId = function () {
19344 return this.eCheckbox.getInputElement().id;
19345 };
19346 CheckboxSelectionComponent.prototype.onDataChanged = function () {
19347 // when rows are loaded for the second time, this can impact the selection, as a row
19348 // could be loaded as already selected (if user scrolls down, and then up again).
19349 this.onSelectionChanged();
19350 };
19351 CheckboxSelectionComponent.prototype.onSelectableChanged = function () {
19352 this.showOrHideSelect();
19353 };
19354 CheckboxSelectionComponent.prototype.onSelectionChanged = function () {
19355 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
19356 var state = this.rowNode.isSelected();
19357 var stateName = state === undefined
19358 ? translate('ariaIndeterminate', 'indeterminate')
19359 : (state === true
19360 ? translate('ariaChecked', 'checked')
19361 : translate('ariaUnchecked', 'unchecked'));
19362 var ariaLabel = translate('ariaRowToggleSelection', 'Press Space to toggle row selection');
19363 this.eCheckbox.setValue(state, true);
19364 this.eCheckbox.setInputAriaLabel(ariaLabel + " (" + stateName + ")");
19365 };
19366 CheckboxSelectionComponent.prototype.onCheckedClicked = function (event) {
19367 var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();
19368 var updatedCount = this.rowNode.setSelectedParams({ newValue: false, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });
19369 return updatedCount;
19370 };
19371 CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {
19372 var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();
19373 var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });
19374 return updatedCount;
19375 };
19376 CheckboxSelectionComponent.prototype.init = function (params) {
19377 var _this = this;
19378 this.rowNode = params.rowNode;
19379 this.column = params.column;
19380 this.onSelectionChanged();
19381 // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row
19382 // would possibly get selected twice
19383 this.addGuiEventListener('click', function (event) { return Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["stopPropagationForAgGrid"])(event); });
19384 // likewise we don't want double click on this icon to open a group
19385 this.addGuiEventListener('dblclick', function (event) { return Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["stopPropagationForAgGrid"])(event); });
19386 this.addManagedListener(this.eCheckbox.getInputElement(), 'click', function (event) {
19387 var isSelected = _this.eCheckbox.getValue();
19388 var previousValue = _this.eCheckbox.getPreviousValue();
19389 if (previousValue === undefined || isSelected === undefined) {
19390 // Indeterminate state - try toggling children to determine action.
19391 var result = _this.onUncheckedClicked(event || {});
19392 if (result === 0) {
19393 _this.onCheckedClicked(event);
19394 }
19395 }
19396 else if (isSelected) {
19397 _this.onCheckedClicked(event);
19398 }
19399 else {
19400 _this.onUncheckedClicked(event || {});
19401 }
19402 });
19403 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));
19404 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_DATA_CHANGED, this.onDataChanged.bind(this));
19405 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));
19406 var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();
19407 var checkboxVisibleIsDynamic = isRowSelectableFunc || this.checkboxCallbackExists();
19408 if (checkboxVisibleIsDynamic) {
19409 var showOrHideSelectListener = this.showOrHideSelect.bind(this);
19410 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, showOrHideSelectListener);
19411 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_DATA_CHANGED, showOrHideSelectListener);
19412 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_CELL_CHANGED, showOrHideSelectListener);
19413 this.showOrHideSelect();
19414 }
19415 this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');
19416 };
19417 CheckboxSelectionComponent.prototype.showOrHideSelect = function () {
19418 // if the isRowSelectable() is not provided the row node is selectable by default
19419 var selectable = this.rowNode.selectable;
19420 // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.
19421 // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need
19422 // to call the colDef callback.
19423 if (selectable && this.checkboxCallbackExists()) {
19424 selectable = this.column.isCellCheckboxSelection(this.rowNode);
19425 }
19426 // show checkbox if both conditions are true
19427 this.setVisible(selectable);
19428 };
19429 CheckboxSelectionComponent.prototype.checkboxCallbackExists = function () {
19430 // column will be missing if groupUseEntireRow=true
19431 var colDef = this.column ? this.column.getColDef() : null;
19432 return !!colDef && typeof colDef.checkboxSelection === 'function';
19433 };
19434 __decorate([
19435 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eCheckbox')
19436 ], CheckboxSelectionComponent.prototype, "eCheckbox", void 0);
19437 __decorate([
19438 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
19439 ], CheckboxSelectionComponent.prototype, "postConstruct", null);
19440 return CheckboxSelectionComponent;
19441}(_widgets_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
19442
19443
19444
19445
19446
19447/***/ }),
19448/* 96 */
19449/***/ (function(module, __webpack_exports__, __webpack_require__) {
19450
19451"use strict";
19452__webpack_require__.r(__webpack_exports__);
19453/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowDragComp", function() { return RowDragComp; });
19454/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
19455/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
19456/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94);
19457/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97);
19458/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
19459/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
19460/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(48);
19461/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
19462/**
19463 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
19464 * @version v27.3.0
19465 * @link https://www.ag-grid.com/
19466 * @license MIT
19467 */
19468var __extends = (undefined && undefined.__extends) || (function () {
19469 var extendStatics = function (d, b) {
19470 extendStatics = Object.setPrototypeOf ||
19471 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
19472 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
19473 return extendStatics(d, b);
19474 };
19475 return function (d, b) {
19476 extendStatics(d, b);
19477 function __() { this.constructor = d; }
19478 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19479 };
19480})();
19481var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
19482 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19483 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19484 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;
19485 return c > 3 && r && Object.defineProperty(target, key, r), r;
19486};
19487
19488
19489
19490
19491
19492
19493
19494
19495var RowDragComp = /** @class */ (function (_super) {
19496 __extends(RowDragComp, _super);
19497 function RowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {
19498 var _this = _super.call(this) || this;
19499 _this.cellValueFn = cellValueFn;
19500 _this.rowNode = rowNode;
19501 _this.column = column;
19502 _this.customGui = customGui;
19503 _this.dragStartPixels = dragStartPixels;
19504 _this.suppressVisibilityChange = suppressVisibilityChange;
19505 _this.dragSource = null;
19506 return _this;
19507 }
19508 RowDragComp.prototype.isCustomGui = function () {
19509 return this.customGui != null;
19510 };
19511 RowDragComp.prototype.postConstruct = function () {
19512 if (!this.customGui) {
19513 this.setTemplate(/* html */ "<div class=\"ag-drag-handle ag-row-drag\" aria-hidden=\"true\"></div>");
19514 this.getGui().appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_6__["createIconNoSpan"])('rowDrag', this.beans.gridOptionsWrapper, null));
19515 this.addDragSource();
19516 }
19517 else {
19518 this.setDragElement(this.customGui, this.dragStartPixels);
19519 }
19520 this.checkCompatibility();
19521 if (!this.suppressVisibilityChange) {
19522 var strategy = this.beans.gridOptionsWrapper.isRowDragManaged() ?
19523 new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) :
19524 new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);
19525 this.createManagedBean(strategy, this.beans.context);
19526 }
19527 };
19528 RowDragComp.prototype.setDragElement = function (dragElement, dragStartPixels) {
19529 this.setTemplateFromElement(dragElement);
19530 this.addDragSource(dragStartPixels);
19531 };
19532 RowDragComp.prototype.getSelectedCount = function () {
19533 var isRowDragMultiRow = this.beans.gridOptionsWrapper.isRowDragMultiRow();
19534 if (!isRowDragMultiRow) {
19535 return 1;
19536 }
19537 var selection = this.beans.selectionService.getSelectedNodes();
19538 return selection.indexOf(this.rowNode) !== -1 ? selection.length : 1;
19539 };
19540 // returns true if all compatibility items work out
19541 RowDragComp.prototype.checkCompatibility = function () {
19542 var managed = this.beans.gridOptionsWrapper.isRowDragManaged();
19543 var treeData = this.beans.gridOptionsWrapper.isTreeData();
19544 if (treeData && managed) {
19545 Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["doOnce"])(function () {
19546 return console.warn('AG Grid: If using row drag with tree data, you cannot have rowDragManaged=true');
19547 }, 'RowDragComp.managedAndTreeData');
19548 }
19549 };
19550 RowDragComp.prototype.addDragSource = function (dragStartPixels) {
19551 var _this = this;
19552 if (dragStartPixels === void 0) { dragStartPixels = 4; }
19553 // if this is changing the drag element, delete the previous dragSource
19554 if (this.dragSource) {
19555 this.removeDragSource();
19556 }
19557 var dragItem = {
19558 rowNode: this.rowNode,
19559 columns: this.column ? [this.column] : undefined,
19560 defaultTextValue: this.cellValueFn(),
19561 };
19562 var rowDragText = this.column && this.column.getColDef().rowDragText;
19563 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
19564 this.dragSource = {
19565 type: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_3__["DragSourceType"].RowDrag,
19566 eElement: this.getGui(),
19567 dragItemName: function () {
19568 var dragItemCount = _this.getSelectedCount();
19569 if (rowDragText) {
19570 return rowDragText(dragItem, dragItemCount);
19571 }
19572 return dragItemCount === 1 ? _this.cellValueFn() : dragItemCount + " " + translate('rowDragRows', 'rows');
19573 },
19574 getDragItem: function () { return dragItem; },
19575 dragStartPixels: dragStartPixels,
19576 dragSourceDomDataKey: this.beans.gridOptionsWrapper.getDomDataKey()
19577 };
19578 this.beans.dragAndDropService.addDragSource(this.dragSource, true);
19579 };
19580 RowDragComp.prototype.removeDragSource = function () {
19581 if (this.dragSource) {
19582 this.beans.dragAndDropService.removeDragSource(this.dragSource);
19583 }
19584 this.dragSource = null;
19585 };
19586 __decorate([
19587 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('beans')
19588 ], RowDragComp.prototype, "beans", void 0);
19589 __decorate([
19590 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
19591 ], RowDragComp.prototype, "postConstruct", null);
19592 __decorate([
19593 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
19594 ], RowDragComp.prototype, "removeDragSource", null);
19595 return RowDragComp;
19596}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
19597
19598var VisibilityStrategy = /** @class */ (function (_super) {
19599 __extends(VisibilityStrategy, _super);
19600 function VisibilityStrategy(parent, rowNode, column) {
19601 var _this = _super.call(this) || this;
19602 _this.parent = parent;
19603 _this.rowNode = rowNode;
19604 _this.column = column;
19605 return _this;
19606 }
19607 VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {
19608 if (neverDisplayed) {
19609 this.parent.setDisplayed(false);
19610 }
19611 else {
19612 var shown = true;
19613 var isShownSometimes = false;
19614 if (this.column) {
19615 shown = this.column.isRowDrag(this.rowNode) || this.parent.isCustomGui();
19616 isShownSometimes = Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["isFunction"])(this.column.getColDef().rowDrag);
19617 }
19618 // if shown sometimes, them some rows can have drag handle while other don't,
19619 // so we use setVisible to keep the handles horizontally aligned (as setVisible
19620 // keeps the empty space, whereas setDisplayed looses the space)
19621 if (isShownSometimes) {
19622 this.parent.setDisplayed(true);
19623 this.parent.setVisible(shown);
19624 }
19625 else {
19626 this.parent.setDisplayed(shown);
19627 this.parent.setVisible(true);
19628 }
19629 }
19630 };
19631 return VisibilityStrategy;
19632}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
19633// when non managed, the visibility depends on suppressRowDrag property only
19634var NonManagedVisibilityStrategy = /** @class */ (function (_super) {
19635 __extends(NonManagedVisibilityStrategy, _super);
19636 function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {
19637 var _this = _super.call(this, parent, rowNode, column) || this;
19638 _this.beans = beans;
19639 return _this;
19640 }
19641 NonManagedVisibilityStrategy.prototype.postConstruct = function () {
19642 this.addManagedListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));
19643 // in case data changes, then we need to update visibility of drag item
19644 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));
19645 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
19646 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
19647 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));
19648 this.workOutVisibility();
19649 };
19650 NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {
19651 this.workOutVisibility();
19652 };
19653 NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {
19654 // only show the drag if both sort and filter are not present
19655 var neverDisplayed = this.beans.gridOptionsWrapper.isSuppressRowDrag();
19656 this.setDisplayedOrVisible(neverDisplayed);
19657 };
19658 __decorate([
19659 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
19660 ], NonManagedVisibilityStrategy.prototype, "postConstruct", null);
19661 return NonManagedVisibilityStrategy;
19662}(VisibilityStrategy));
19663// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property
19664var ManagedVisibilityStrategy = /** @class */ (function (_super) {
19665 __extends(ManagedVisibilityStrategy, _super);
19666 function ManagedVisibilityStrategy(parent, beans, rowNode, column) {
19667 var _this = _super.call(this, parent, rowNode, column) || this;
19668 _this.beans = beans;
19669 return _this;
19670 }
19671 ManagedVisibilityStrategy.prototype.postConstruct = function () {
19672 // we do not show the component if sort, filter or grouping is active
19673 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_SORT_CHANGED, this.workOutVisibility.bind(this));
19674 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_FILTER_CHANGED, this.workOutVisibility.bind(this));
19675 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.workOutVisibility.bind(this));
19676 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));
19677 // in case data changes, then we need to update visibility of drag item
19678 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));
19679 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
19680 this.addManagedListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));
19681 this.workOutVisibility();
19682 };
19683 ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {
19684 this.workOutVisibility();
19685 };
19686 ManagedVisibilityStrategy.prototype.workOutVisibility = function () {
19687 // only show the drag if both sort and filter are not present
19688 var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();
19689 var rowDragFeature = gridBodyCon.getRowDragFeature();
19690 var shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();
19691 var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();
19692 var hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();
19693 var neverDisplayed = (shouldPreventRowMove && !hasExternalDropZones) || suppressRowDrag;
19694 this.setDisplayedOrVisible(neverDisplayed);
19695 };
19696 __decorate([
19697 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
19698 ], ManagedVisibilityStrategy.prototype, "postConstruct", null);
19699 return ManagedVisibilityStrategy;
19700}(VisibilityStrategy));
19701
19702
19703
19704
19705/***/ }),
19706/* 97 */
19707/***/ (function(module, __webpack_exports__, __webpack_require__) {
19708
19709"use strict";
19710__webpack_require__.r(__webpack_exports__);
19711/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragSourceType", function() { return DragSourceType; });
19712/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VerticalDirection", function() { return VerticalDirection; });
19713/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HorizontalDirection", function() { return HorizontalDirection; });
19714/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragAndDropService", function() { return DragAndDropService; });
19715/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
19716/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
19717/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26);
19718/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);
19719/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
19720/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43);
19721/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
19722/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
19723/**
19724 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
19725 * @version v27.3.0
19726 * @link https://www.ag-grid.com/
19727 * @license MIT
19728 */
19729var __extends = (undefined && undefined.__extends) || (function () {
19730 var extendStatics = function (d, b) {
19731 extendStatics = Object.setPrototypeOf ||
19732 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
19733 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
19734 return extendStatics(d, b);
19735 };
19736 return function (d, b) {
19737 extendStatics(d, b);
19738 function __() { this.constructor = d; }
19739 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19740 };
19741})();
19742var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
19743 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19744 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19745 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;
19746 return c > 3 && r && Object.defineProperty(target, key, r), r;
19747};
19748var __values = (undefined && undefined.__values) || function(o) {
19749 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
19750 if (m) return m.call(o);
19751 if (o && typeof o.length === "number") return {
19752 next: function () {
19753 if (o && i >= o.length) o = void 0;
19754 return { value: o && o[i++], done: !o };
19755 }
19756 };
19757 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
19758};
19759
19760
19761
19762
19763
19764
19765
19766
19767var DragSourceType;
19768(function (DragSourceType) {
19769 DragSourceType[DragSourceType["ToolPanel"] = 0] = "ToolPanel";
19770 DragSourceType[DragSourceType["HeaderCell"] = 1] = "HeaderCell";
19771 DragSourceType[DragSourceType["RowDrag"] = 2] = "RowDrag";
19772 DragSourceType[DragSourceType["ChartPanel"] = 3] = "ChartPanel";
19773})(DragSourceType || (DragSourceType = {}));
19774var VerticalDirection;
19775(function (VerticalDirection) {
19776 VerticalDirection[VerticalDirection["Up"] = 0] = "Up";
19777 VerticalDirection[VerticalDirection["Down"] = 1] = "Down";
19778})(VerticalDirection || (VerticalDirection = {}));
19779var HorizontalDirection;
19780(function (HorizontalDirection) {
19781 HorizontalDirection[HorizontalDirection["Left"] = 0] = "Left";
19782 HorizontalDirection[HorizontalDirection["Right"] = 1] = "Right";
19783})(HorizontalDirection || (HorizontalDirection = {}));
19784var DragAndDropService = /** @class */ (function (_super) {
19785 __extends(DragAndDropService, _super);
19786 function DragAndDropService() {
19787 var _this = _super !== null && _super.apply(this, arguments) || this;
19788 _this.dragSourceAndParamsList = [];
19789 _this.dropTargets = [];
19790 return _this;
19791 }
19792 DragAndDropService_1 = DragAndDropService;
19793 DragAndDropService.prototype.init = function () {
19794 this.ePinnedIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMovePin', this.gridOptionsWrapper, null);
19795 this.eHideIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveHide', this.gridOptionsWrapper, null);
19796 this.eMoveIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveMove', this.gridOptionsWrapper, null);
19797 this.eLeftIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveLeft', this.gridOptionsWrapper, null);
19798 this.eRightIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveRight', this.gridOptionsWrapper, null);
19799 this.eGroupIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveGroup', this.gridOptionsWrapper, null);
19800 this.eAggregateIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveValue', this.gridOptionsWrapper, null);
19801 this.ePivotIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMovePivot', this.gridOptionsWrapper, null);
19802 this.eDropNotAllowedIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('dropNotAllowed', this.gridOptionsWrapper, null);
19803 };
19804 DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {
19805 if (allowTouch === void 0) { allowTouch = false; }
19806 var params = {
19807 eElement: dragSource.eElement,
19808 dragStartPixels: dragSource.dragStartPixels,
19809 onDragStart: this.onDragStart.bind(this, dragSource),
19810 onDragStop: this.onDragStop.bind(this),
19811 onDragging: this.onDragging.bind(this)
19812 };
19813 this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });
19814 this.dragService.addDragSource(params, allowTouch);
19815 };
19816 DragAndDropService.prototype.removeDragSource = function (dragSource) {
19817 var sourceAndParams = this.dragSourceAndParamsList.find(function (item) { return item.dragSource === dragSource; });
19818 if (sourceAndParams) {
19819 this.dragService.removeDragSource(sourceAndParams.params);
19820 Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["removeFromArray"])(this.dragSourceAndParamsList, sourceAndParams);
19821 }
19822 };
19823 DragAndDropService.prototype.clearDragSourceParamsList = function () {
19824 var _this = this;
19825 this.dragSourceAndParamsList.forEach(function (sourceAndParams) { return _this.dragService.removeDragSource(sourceAndParams.params); });
19826 this.dragSourceAndParamsList.length = 0;
19827 };
19828 DragAndDropService.prototype.nudge = function () {
19829 if (this.dragging) {
19830 this.onDragging(this.eventLastTime, true);
19831 }
19832 };
19833 DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {
19834 this.dragging = true;
19835 this.dragSource = dragSource;
19836 this.eventLastTime = mouseEvent;
19837 this.dragItem = this.dragSource.getDragItem();
19838 this.lastDropTarget = this.dragSource.dragSourceDropTarget;
19839 if (this.dragSource.onDragStarted) {
19840 this.dragSource.onDragStarted();
19841 }
19842 this.createGhost();
19843 };
19844 DragAndDropService.prototype.onDragStop = function (mouseEvent) {
19845 this.eventLastTime = null;
19846 this.dragging = false;
19847 if (this.dragSource.onDragStopped) {
19848 this.dragSource.onDragStopped();
19849 }
19850 if (this.lastDropTarget && this.lastDropTarget.onDragStop) {
19851 var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);
19852 this.lastDropTarget.onDragStop(draggingEvent);
19853 }
19854 this.lastDropTarget = null;
19855 this.dragItem = null;
19856 this.removeGhost();
19857 };
19858 DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {
19859 var _this = this;
19860 var hDirection = this.getHorizontalDirection(mouseEvent);
19861 var vDirection = this.getVerticalDirection(mouseEvent);
19862 this.eventLastTime = mouseEvent;
19863 this.positionGhost(mouseEvent);
19864 // check if mouseEvent intersects with any of the drop targets
19865 var validDropTargets = this.dropTargets.filter(function (target) { return _this.isMouseOnDropTarget(mouseEvent, target); });
19866 var len = validDropTargets.length;
19867 var dropTarget = null;
19868 if (len > 0) {
19869 dropTarget = len === 1
19870 ? validDropTargets[0]
19871 // the current mouse position could intersect with more than 1 element
19872 // if they are nested. In that case we need to get the most specific
19873 // container, which is the one that does not contain any other targets.
19874 : validDropTargets.reduce(function (prevTarget, currTarget) {
19875 if (!prevTarget) {
19876 return currTarget;
19877 }
19878 var prevContainer = prevTarget.getContainer();
19879 var currContainer = currTarget.getContainer();
19880 if (prevContainer.contains(currContainer)) {
19881 return currTarget;
19882 }
19883 return prevTarget;
19884 });
19885 }
19886 if (dropTarget !== this.lastDropTarget) {
19887 this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);
19888 this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
19889 this.lastDropTarget = dropTarget;
19890 }
19891 else if (dropTarget && dropTarget.onDragging) {
19892 var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
19893 dropTarget.onDragging(draggingEvent);
19894 }
19895 };
19896 DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {
19897 if (!dropTarget) {
19898 return;
19899 }
19900 if (dropTarget.onDragEnter) {
19901 var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
19902 dropTarget.onDragEnter(dragEnterEvent);
19903 }
19904 this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);
19905 };
19906 DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {
19907 if (!this.lastDropTarget) {
19908 return;
19909 }
19910 if (this.lastDropTarget.onDragLeave) {
19911 var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);
19912 this.lastDropTarget.onDragLeave(dragLeaveEvent);
19913 }
19914 this.setGhostIcon(null);
19915 };
19916 DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {
19917 var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;
19918 var containers = [[dropTarget.getContainer()]];
19919 return secondaryContainers ? containers.concat(secondaryContainers) : containers;
19920 };
19921 DragAndDropService.prototype.allContainersIntersect = function (mouseEvent, containers) {
19922 var e_1, _a;
19923 try {
19924 for (var containers_1 = __values(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {
19925 var container = containers_1_1.value;
19926 var rect = container.getBoundingClientRect();
19927 // if element is not visible, then width and height are zero
19928 if (rect.width === 0 || rect.height === 0) {
19929 return false;
19930 }
19931 var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX < rect.right;
19932 var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY < rect.bottom;
19933 if (!horizontalFit || !verticalFit) {
19934 return false;
19935 }
19936 }
19937 }
19938 catch (e_1_1) { e_1 = { error: e_1_1 }; }
19939 finally {
19940 try {
19941 if (containers_1_1 && !containers_1_1.done && (_a = containers_1.return)) _a.call(containers_1);
19942 }
19943 finally { if (e_1) throw e_1.error; }
19944 }
19945 return true;
19946 };
19947 // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers
19948 DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {
19949 var e_2, _a;
19950 var allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);
19951 var mouseOverTarget = false;
19952 try {
19953 for (var allContainersFromDropTarget_1 = __values(allContainersFromDropTarget), allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next(); !allContainersFromDropTarget_1_1.done; allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next()) {
19954 var currentContainers = allContainersFromDropTarget_1_1.value;
19955 if (this.allContainersIntersect(mouseEvent, currentContainers)) {
19956 mouseOverTarget = true;
19957 break;
19958 }
19959 }
19960 }
19961 catch (e_2_1) { e_2 = { error: e_2_1 }; }
19962 finally {
19963 try {
19964 if (allContainersFromDropTarget_1_1 && !allContainersFromDropTarget_1_1.done && (_a = allContainersFromDropTarget_1.return)) _a.call(allContainersFromDropTarget_1);
19965 }
19966 finally { if (e_2) throw e_2.error; }
19967 }
19968 if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(this.dragSource.eElement)) {
19969 return false;
19970 }
19971 return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type, this.dragSource.eElement);
19972 };
19973 DragAndDropService.prototype.addDropTarget = function (dropTarget) {
19974 this.dropTargets.push(dropTarget);
19975 };
19976 DragAndDropService.prototype.removeDropTarget = function (dropTarget) {
19977 this.dropTargets = this.dropTargets.filter(function (target) { return target.getContainer() !== dropTarget.getContainer(); });
19978 };
19979 DragAndDropService.prototype.hasExternalDropZones = function () {
19980 return this.dropTargets.some(function (zones) { return zones.external; });
19981 };
19982 DragAndDropService.prototype.findExternalZone = function (params) {
19983 var externalTargets = this.dropTargets.filter(function (target) { return target.external; });
19984 return externalTargets.find(function (zone) { return zone.getContainer() === params.getContainer(); }) || null;
19985 };
19986 DragAndDropService.prototype.getHorizontalDirection = function (event) {
19987 var clientX = this.eventLastTime && this.eventLastTime.clientX;
19988 var eClientX = event.clientX;
19989 if (clientX === eClientX) {
19990 return null;
19991 }
19992 return clientX > eClientX ? HorizontalDirection.Left : HorizontalDirection.Right;
19993 };
19994 DragAndDropService.prototype.getVerticalDirection = function (event) {
19995 var clientY = this.eventLastTime && this.eventLastTime.clientY;
19996 var eClientY = event.clientY;
19997 if (clientY === eClientY) {
19998 return null;
19999 }
20000 return clientY > eClientY ? VerticalDirection.Up : VerticalDirection.Down;
20001 };
20002 DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {
20003 // localise x and y to the target
20004 var dropZoneTarget = dropTarget.getContainer();
20005 var rect = dropZoneTarget.getBoundingClientRect();
20006 var _a = this, api = _a.gridApi, columnApi = _a.columnApi, dragItem = _a.dragItem, dragSource = _a.dragSource;
20007 var x = event.clientX - rect.left;
20008 var y = event.clientY - rect.top;
20009 return { event: event, x: x, y: y, vDirection: vDirection, hDirection: hDirection, dragSource: dragSource, fromNudge: fromNudge, dragItem: dragItem, api: api, columnApi: columnApi, dropZoneTarget: dropZoneTarget };
20010 };
20011 DragAndDropService.prototype.positionGhost = function (event) {
20012 var ghost = this.eGhost;
20013 if (!ghost) {
20014 return;
20015 }
20016 var ghostRect = ghost.getBoundingClientRect();
20017 var ghostHeight = ghostRect.height;
20018 // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which
20019 // then brought in scrollbars to the browser. no idea why, but putting in -2 here
20020 // works around it which is good enough for me.
20021 var browserWidth = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_5__["getBodyWidth"])() - 2;
20022 var browserHeight = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_5__["getBodyHeight"])() - 2;
20023 var top = event.pageY - (ghostHeight / 2);
20024 var left = event.pageX - 10;
20025 var eDocument = this.gridOptionsWrapper.getDocument();
20026 var win = (eDocument.defaultView || window);
20027 var windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;
20028 var windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;
20029 // check ghost is not positioned outside of the browser
20030 if (browserWidth > 0 && ((left + ghost.clientWidth) > (browserWidth + windowScrollX))) {
20031 left = browserWidth + windowScrollX - ghost.clientWidth;
20032 }
20033 if (left < 0) {
20034 left = 0;
20035 }
20036 if (browserHeight > 0 && ((top + ghost.clientHeight) > (browserHeight + windowScrollY))) {
20037 top = browserHeight + windowScrollY - ghost.clientHeight;
20038 }
20039 if (top < 0) {
20040 top = 0;
20041 }
20042 ghost.style.left = left + "px";
20043 ghost.style.top = top + "px";
20044 };
20045 DragAndDropService.prototype.removeGhost = function () {
20046 if (this.eGhost && this.eGhostParent) {
20047 this.eGhostParent.removeChild(this.eGhost);
20048 }
20049 this.eGhost = null;
20050 };
20051 DragAndDropService.prototype.createGhost = function () {
20052 this.eGhost = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(DragAndDropService_1.GHOST_TEMPLATE);
20053 var theme = this.environment.getTheme().theme;
20054 if (theme) {
20055 this.eGhost.classList.add(theme);
20056 }
20057 this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');
20058 this.setGhostIcon(null);
20059 var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');
20060 var dragItemName = this.dragSource.dragItemName;
20061 if (Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["isFunction"])(dragItemName)) {
20062 dragItemName = dragItemName();
20063 }
20064 eText.innerHTML = Object(_utils_string__WEBPACK_IMPORTED_MODULE_2__["escapeString"])(dragItemName) || '';
20065 this.eGhost.style.height = '25px';
20066 this.eGhost.style.top = '20px';
20067 this.eGhost.style.left = '20px';
20068 var eDocument = this.gridOptionsWrapper.getDocument();
20069 var targetEl = null;
20070 try {
20071 targetEl = eDocument.fullscreenElement;
20072 }
20073 catch (e) {
20074 // some environments like SalesForce will throw errors
20075 // simply by trying to read the fullscreenElement property
20076 }
20077 finally {
20078 if (!targetEl) {
20079 targetEl = eDocument.querySelector('body');
20080 }
20081 }
20082 this.eGhostParent = targetEl;
20083 if (!this.eGhostParent) {
20084 console.warn('AG Grid: could not find document body, it is needed for dragging columns');
20085 }
20086 else {
20087 this.eGhostParent.appendChild(this.eGhost);
20088 }
20089 };
20090 DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {
20091 if (shake === void 0) { shake = false; }
20092 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["clearElement"])(this.eGhostIcon);
20093 var eIcon = null;
20094 if (!iconName) {
20095 iconName = this.dragSource.defaultIconName || DragAndDropService_1.ICON_NOT_ALLOWED;
20096 }
20097 switch (iconName) {
20098 case DragAndDropService_1.ICON_PINNED:
20099 eIcon = this.ePinnedIcon;
20100 break;
20101 case DragAndDropService_1.ICON_MOVE:
20102 eIcon = this.eMoveIcon;
20103 break;
20104 case DragAndDropService_1.ICON_LEFT:
20105 eIcon = this.eLeftIcon;
20106 break;
20107 case DragAndDropService_1.ICON_RIGHT:
20108 eIcon = this.eRightIcon;
20109 break;
20110 case DragAndDropService_1.ICON_GROUP:
20111 eIcon = this.eGroupIcon;
20112 break;
20113 case DragAndDropService_1.ICON_AGGREGATE:
20114 eIcon = this.eAggregateIcon;
20115 break;
20116 case DragAndDropService_1.ICON_PIVOT:
20117 eIcon = this.ePivotIcon;
20118 break;
20119 case DragAndDropService_1.ICON_NOT_ALLOWED:
20120 eIcon = this.eDropNotAllowedIcon;
20121 break;
20122 case DragAndDropService_1.ICON_HIDE:
20123 eIcon = this.eHideIcon;
20124 break;
20125 }
20126 this.eGhostIcon.classList.toggle('ag-shake-left-to-right', shake);
20127 if (eIcon === this.eHideIcon && this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns()) {
20128 return;
20129 }
20130 if (eIcon) {
20131 this.eGhostIcon.appendChild(eIcon);
20132 }
20133 };
20134 var DragAndDropService_1;
20135 DragAndDropService.ICON_PINNED = 'pinned';
20136 DragAndDropService.ICON_MOVE = 'move';
20137 DragAndDropService.ICON_LEFT = 'left';
20138 DragAndDropService.ICON_RIGHT = 'right';
20139 DragAndDropService.ICON_GROUP = 'group';
20140 DragAndDropService.ICON_AGGREGATE = 'aggregate';
20141 DragAndDropService.ICON_PIVOT = 'pivot';
20142 DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';
20143 DragAndDropService.ICON_HIDE = 'hide';
20144 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>";
20145 __decorate([
20146 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragService')
20147 ], DragAndDropService.prototype, "dragService", void 0);
20148 __decorate([
20149 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('environment')
20150 ], DragAndDropService.prototype, "environment", void 0);
20151 __decorate([
20152 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
20153 ], DragAndDropService.prototype, "columnApi", void 0);
20154 __decorate([
20155 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
20156 ], DragAndDropService.prototype, "gridApi", void 0);
20157 __decorate([
20158 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
20159 ], DragAndDropService.prototype, "init", null);
20160 __decorate([
20161 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
20162 ], DragAndDropService.prototype, "clearDragSourceParamsList", null);
20163 DragAndDropService = DragAndDropService_1 = __decorate([
20164 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('dragAndDropService')
20165 ], DragAndDropService);
20166 return DragAndDropService;
20167}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
20168
20169
20170
20171
20172
20173/***/ }),
20174/* 98 */
20175/***/ (function(module, __webpack_exports__, __webpack_require__) {
20176
20177"use strict";
20178__webpack_require__.r(__webpack_exports__);
20179/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoadingCellRenderer", function() { return LoadingCellRenderer; });
20180/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
20181/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
20182/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48);
20183/**
20184 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20185 * @version v27.3.0
20186 * @link https://www.ag-grid.com/
20187 * @license MIT
20188 */
20189var __extends = (undefined && undefined.__extends) || (function () {
20190 var extendStatics = function (d, b) {
20191 extendStatics = Object.setPrototypeOf ||
20192 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20193 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20194 return extendStatics(d, b);
20195 };
20196 return function (d, b) {
20197 extendStatics(d, b);
20198 function __() { this.constructor = d; }
20199 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20200 };
20201})();
20202var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
20203 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20204 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20205 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;
20206 return c > 3 && r && Object.defineProperty(target, key, r), r;
20207};
20208
20209
20210
20211var LoadingCellRenderer = /** @class */ (function (_super) {
20212 __extends(LoadingCellRenderer, _super);
20213 function LoadingCellRenderer() {
20214 return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;
20215 }
20216 LoadingCellRenderer.prototype.init = function (params) {
20217 params.node.failedLoad ? this.setupFailed() : this.setupLoading();
20218 };
20219 LoadingCellRenderer.prototype.setupFailed = function () {
20220 this.eLoadingText.innerText = 'ERR';
20221 };
20222 LoadingCellRenderer.prototype.setupLoading = function () {
20223 var eLoadingIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_2__["createIconNoSpan"])('groupLoading', this.gridOptionsWrapper, null);
20224 if (eLoadingIcon) {
20225 this.eLoadingIcon.appendChild(eLoadingIcon);
20226 }
20227 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
20228 this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');
20229 };
20230 LoadingCellRenderer.prototype.refresh = function (params) {
20231 return false;
20232 };
20233 // this is a user component, and IComponent has "public destroy()" as part of the interface.
20234 // so we need to override destroy() just to make the method public.
20235 LoadingCellRenderer.prototype.destroy = function () {
20236 _super.prototype.destroy.call(this);
20237 };
20238 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>";
20239 __decorate([
20240 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLoadingIcon')
20241 ], LoadingCellRenderer.prototype, "eLoadingIcon", void 0);
20242 __decorate([
20243 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLoadingText')
20244 ], LoadingCellRenderer.prototype, "eLoadingText", void 0);
20245 return LoadingCellRenderer;
20246}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
20247
20248
20249
20250
20251
20252/***/ }),
20253/* 99 */
20254/***/ (function(module, __webpack_exports__, __webpack_require__) {
20255
20256"use strict";
20257__webpack_require__.r(__webpack_exports__);
20258/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoadingOverlayComponent", function() { return LoadingOverlayComponent; });
20259/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
20260/**
20261 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20262 * @version v27.3.0
20263 * @link https://www.ag-grid.com/
20264 * @license MIT
20265 */
20266var __extends = (undefined && undefined.__extends) || (function () {
20267 var extendStatics = function (d, b) {
20268 extendStatics = Object.setPrototypeOf ||
20269 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20270 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20271 return extendStatics(d, b);
20272 };
20273 return function (d, b) {
20274 extendStatics(d, b);
20275 function __() { this.constructor = d; }
20276 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20277 };
20278})();
20279
20280var LoadingOverlayComponent = /** @class */ (function (_super) {
20281 __extends(LoadingOverlayComponent, _super);
20282 function LoadingOverlayComponent() {
20283 return _super.call(this) || this;
20284 }
20285 // this is a user component, and IComponent has "public destroy()" as part of the interface.
20286 // so we need to override destroy() just to make the method public.
20287 LoadingOverlayComponent.prototype.destroy = function () {
20288 _super.prototype.destroy.call(this);
20289 };
20290 LoadingOverlayComponent.prototype.init = function (params) {
20291 var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?
20292 this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;
20293 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
20294 var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));
20295 this.setTemplate(localisedTemplate);
20296 };
20297 LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '<span class="ag-overlay-loading-center">[LOADING...]</span>';
20298 return LoadingOverlayComponent;
20299}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
20300
20301
20302
20303
20304
20305/***/ }),
20306/* 100 */
20307/***/ (function(module, __webpack_exports__, __webpack_require__) {
20308
20309"use strict";
20310__webpack_require__.r(__webpack_exports__);
20311/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoRowsOverlayComponent", function() { return NoRowsOverlayComponent; });
20312/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
20313/**
20314 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20315 * @version v27.3.0
20316 * @link https://www.ag-grid.com/
20317 * @license MIT
20318 */
20319var __extends = (undefined && undefined.__extends) || (function () {
20320 var extendStatics = function (d, b) {
20321 extendStatics = Object.setPrototypeOf ||
20322 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20323 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20324 return extendStatics(d, b);
20325 };
20326 return function (d, b) {
20327 extendStatics(d, b);
20328 function __() { this.constructor = d; }
20329 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20330 };
20331})();
20332
20333var NoRowsOverlayComponent = /** @class */ (function (_super) {
20334 __extends(NoRowsOverlayComponent, _super);
20335 function NoRowsOverlayComponent() {
20336 return _super.call(this) || this;
20337 }
20338 // this is a user component, and IComponent has "public destroy()" as part of the interface.
20339 // so we need to override destroy() just to make the method public.
20340 NoRowsOverlayComponent.prototype.destroy = function () {
20341 _super.prototype.destroy.call(this);
20342 };
20343 NoRowsOverlayComponent.prototype.init = function (params) {
20344 var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?
20345 this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;
20346 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
20347 var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));
20348 this.setTemplate(localisedTemplate);
20349 };
20350 NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '<span class="ag-overlay-no-rows-center">[NO_ROWS_TO_SHOW]</span>';
20351 return NoRowsOverlayComponent;
20352}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
20353
20354
20355
20356
20357
20358/***/ }),
20359/* 101 */
20360/***/ (function(module, __webpack_exports__, __webpack_require__) {
20361
20362"use strict";
20363__webpack_require__.r(__webpack_exports__);
20364/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TooltipComponent", function() { return TooltipComponent; });
20365/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85);
20366/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
20367/**
20368 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20369 * @version v27.3.0
20370 * @link https://www.ag-grid.com/
20371 * @license MIT
20372 */
20373var __extends = (undefined && undefined.__extends) || (function () {
20374 var extendStatics = function (d, b) {
20375 extendStatics = Object.setPrototypeOf ||
20376 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20377 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20378 return extendStatics(d, b);
20379 };
20380 return function (d, b) {
20381 extendStatics(d, b);
20382 function __() { this.constructor = d; }
20383 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20384 };
20385})();
20386
20387
20388var TooltipComponent = /** @class */ (function (_super) {
20389 __extends(TooltipComponent, _super);
20390 function TooltipComponent() {
20391 return _super.call(this, /* html */ "<div class=\"ag-tooltip\"></div>") || this;
20392 }
20393 // will need to type params
20394 TooltipComponent.prototype.init = function (params) {
20395 var value = params.value;
20396 this.getGui().innerHTML = Object(_utils_string__WEBPACK_IMPORTED_MODULE_1__["escapeString"])(value);
20397 };
20398 return TooltipComponent;
20399}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__["PopupComponent"]));
20400
20401
20402
20403
20404
20405/***/ }),
20406/* 102 */
20407/***/ (function(module, __webpack_exports__, __webpack_require__) {
20408
20409"use strict";
20410__webpack_require__.r(__webpack_exports__);
20411/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UserComponentFactory", function() { return UserComponentFactory; });
20412/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
20413/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
20414/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37);
20415/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
20416/* harmony import */ var _componentTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(103);
20417/* harmony import */ var _filter_floating_floatingFilterMapper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(104);
20418/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16);
20419/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(17);
20420/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14);
20421/**
20422 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20423 * @version v27.3.0
20424 * @link https://www.ag-grid.com/
20425 * @license MIT
20426 */
20427var __extends = (undefined && undefined.__extends) || (function () {
20428 var extendStatics = function (d, b) {
20429 extendStatics = Object.setPrototypeOf ||
20430 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20431 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20432 return extendStatics(d, b);
20433 };
20434 return function (d, b) {
20435 extendStatics(d, b);
20436 function __() { this.constructor = d; }
20437 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20438 };
20439})();
20440var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
20441 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20442 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20443 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;
20444 return c > 3 && r && Object.defineProperty(target, key, r), r;
20445};
20446
20447
20448
20449
20450
20451
20452
20453
20454
20455var ANNOTATIONS = '__annotations__';
20456var UserComponentFactory = /** @class */ (function (_super) {
20457 __extends(UserComponentFactory, _super);
20458 function UserComponentFactory() {
20459 return _super !== null && _super.apply(this, arguments) || this;
20460 }
20461 UserComponentFactory.prototype.getHeaderCompDetails = function (colDef, params) {
20462 return this.getCompDetails(colDef, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["HeaderComponent"], 'agColumnHeader', params);
20463 };
20464 UserComponentFactory.prototype.getHeaderGroupCompDetails = function (params) {
20465 var colGroupDef = params.columnGroup.getColGroupDef();
20466 return this.getCompDetails(colGroupDef, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["HeaderGroupComponent"], 'agColumnGroupHeader', params);
20467 };
20468 // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.
20469 // so we have to pass the type in.
20470 UserComponentFactory.prototype.getFullWidthCellRendererDetails = function (params) {
20471 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FullWidth"], null, params, true);
20472 };
20473 UserComponentFactory.prototype.getFullWidthLoadingCellRendererDetails = function (params) {
20474 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FullWidthLoading"], 'agLoadingCellRenderer', params, true);
20475 };
20476 UserComponentFactory.prototype.getFullWidthGroupCellRendererDetails = function (params) {
20477 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FullWidthGroup"], 'agGroupRowRenderer', params, true);
20478 };
20479 UserComponentFactory.prototype.getFullWidthDetailCellRendererDetails = function (params) {
20480 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FullWidthDetail"], 'agDetailCellRenderer', params, true);
20481 };
20482 // CELL RENDERER
20483 UserComponentFactory.prototype.getInnerRendererDetails = function (def, params) {
20484 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["InnerRendererComponent"], null, params);
20485 };
20486 UserComponentFactory.prototype.getFullWidthGroupRowInnerCellRenderer = function (def, params) {
20487 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["InnerRendererComponent"], null, params);
20488 };
20489 UserComponentFactory.prototype.getCellRendererDetails = function (def, params) {
20490 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["CellRendererComponent"], null, params);
20491 };
20492 // CELL EDITOR
20493 UserComponentFactory.prototype.getCellEditorDetails = function (def, params) {
20494 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["CellEditorComponent"], 'agCellEditor', params, true);
20495 };
20496 // FILTER
20497 UserComponentFactory.prototype.getFilterDetails = function (def, params, defaultFilter) {
20498 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FilterComponent"], defaultFilter, params, true);
20499 };
20500 UserComponentFactory.prototype.getDateCompDetails = function (params) {
20501 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["DateComponent"], 'agDateInput', params, true);
20502 };
20503 UserComponentFactory.prototype.getLoadingOverlayCompDetails = function (params) {
20504 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["LoadingOverlayComponent"], 'agLoadingOverlay', params, true);
20505 };
20506 UserComponentFactory.prototype.getNoRowsOverlayCompDetails = function (params) {
20507 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["NoRowsOverlayComponent"], 'agNoRowsOverlay', params, true);
20508 };
20509 UserComponentFactory.prototype.getTooltipCompDetails = function (params) {
20510 return this.getCompDetails(params.colDef, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["TooltipComponent"], 'agTooltipComponent', params, true);
20511 };
20512 UserComponentFactory.prototype.getSetFilterCellRendererDetails = function (def, params) {
20513 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["CellRendererComponent"], null, params);
20514 };
20515 UserComponentFactory.prototype.getFloatingFilterCompDetails = function (def, params, defaultFloatingFilter) {
20516 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FloatingFilterComponent"], defaultFloatingFilter, params);
20517 };
20518 UserComponentFactory.prototype.getToolPanelCompDetails = function (toolPanelDef, params) {
20519 return this.getCompDetails(toolPanelDef, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["ToolPanelComponent"], null, params, true);
20520 };
20521 UserComponentFactory.prototype.getStatusPanelCompDetails = function (def, params) {
20522 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["StatusPanelComponent"], null, params, true);
20523 };
20524 UserComponentFactory.prototype.getCompDetails = function (defObject, type, defaultName, params, mandatory) {
20525 var _this = this;
20526 if (mandatory === void 0) { mandatory = false; }
20527 var propertyName = type.propertyName, cellRenderer = type.cellRenderer;
20528 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;
20529 var lookupFromRegistry = function (key) {
20530 var item = _this.userComponentRegistry.retrieve(key);
20531 if (item) {
20532 jsComp = !item.componentFromFramework ? item.component : undefined;
20533 fwComp = item.componentFromFramework ? item.component : undefined;
20534 }
20535 };
20536 // if compOption is a string, means we need to look the item up
20537 if (compName != null) {
20538 lookupFromRegistry(compName);
20539 }
20540 // if lookup brought nothing back, and we have a default, lookup the default
20541 if (jsComp == null && fwComp == null && defaultName != null) {
20542 lookupFromRegistry(defaultName);
20543 }
20544 // if we have a comp option, and it's a function, replace it with an object equivalent adaptor
20545 if (jsComp && cellRenderer && !this.agComponentUtils.doesImplementIComponent(jsComp)) {
20546 jsComp = this.agComponentUtils.adaptFunction(propertyName, jsComp);
20547 }
20548 if (!jsComp && !fwComp) {
20549 if (mandatory) {
20550 console.error("Could not find component " + compName + ", did you forget to configure this component?");
20551 }
20552 return;
20553 }
20554 var paramsMerged = this.mergeParamsWithApplicationProvidedParams(defObject, type, params, paramsFromSelector);
20555 var componentFromFramework = jsComp == null;
20556 var componentClass = jsComp ? jsComp : fwComp;
20557 return {
20558 componentFromFramework: componentFromFramework,
20559 componentClass: componentClass,
20560 params: paramsMerged,
20561 type: type,
20562 popupFromSelector: popupFromSelector,
20563 popupPositionFromSelector: popupPositionFromSelector,
20564 newAgStackInstance: function () { return _this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type); }
20565 };
20566 };
20567 UserComponentFactory.prototype.getCompKeys = function (defObject, type, params) {
20568 var _this = this;
20569 var propertyName = type.propertyName;
20570 var compName;
20571 var jsComp;
20572 var fwComp;
20573 var paramsFromSelector;
20574 var popupFromSelector;
20575 var popupPositionFromSelector;
20576 // there are two types of js comps, class based and func based. we can only check for
20577 // class based, by checking if getGui() exists. no way to differentiate js func based vs eg react func based
20578 // const isJsClassComp = (comp: any) => this.agComponentUtils.doesImplementIComponent(comp);
20579 // const fwActive = this.frameworkComponentWrapper != null;
20580 // pull from defObject if available
20581 if (defObject) {
20582 var defObjectAny = defObject;
20583 // if selector, use this
20584 var selectorFunc = defObjectAny[propertyName + 'Selector'];
20585 var selectorRes = selectorFunc ? selectorFunc(params) : null;
20586 var assignComp = function (providedJsComp, providedFwComp) {
20587 var xxxFrameworkDeprecatedWarn = function () {
20588 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.";
20589 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(warningMessage); }, "UserComponentFactory." + propertyName + "FrameworkDeprecated");
20590 };
20591 if (typeof providedJsComp === 'string') {
20592 compName = providedJsComp;
20593 }
20594 else if (typeof providedFwComp === 'string') {
20595 xxxFrameworkDeprecatedWarn();
20596 compName = providedFwComp;
20597 // comp===true for filters, which means use the default comp
20598 }
20599 else if (providedJsComp != null && providedJsComp !== true) {
20600 var isFwkComp = _this.getFrameworkOverrides().isFrameworkComponent(providedJsComp);
20601 if (isFwkComp) {
20602 fwComp = providedJsComp;
20603 }
20604 else {
20605 jsComp = providedJsComp;
20606 }
20607 }
20608 else if (providedFwComp != null) {
20609 xxxFrameworkDeprecatedWarn();
20610 fwComp = providedFwComp;
20611 }
20612 };
20613 if (selectorRes) {
20614 if (selectorRes.frameworkComponent != null) {
20615 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.";
20616 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(warningMessage_1); }, "UserComponentFactory." + propertyName + "FrameworkSelectorDeprecated");
20617 assignComp(selectorRes.frameworkComponent, undefined);
20618 }
20619 else {
20620 assignComp(selectorRes.component, undefined);
20621 }
20622 paramsFromSelector = selectorRes.params;
20623 popupFromSelector = selectorRes.popup;
20624 popupPositionFromSelector = selectorRes.popupPosition;
20625 }
20626 else {
20627 // if no selector, or result of selector is empty, take from defObject
20628 assignComp(defObjectAny[propertyName], defObjectAny[propertyName + 'Framework']);
20629 }
20630 }
20631 return { compName: compName, jsComp: jsComp, fwComp: fwComp, paramsFromSelector: paramsFromSelector, popupFromSelector: popupFromSelector, popupPositionFromSelector: popupPositionFromSelector };
20632 };
20633 UserComponentFactory.prototype.newAgStackInstance = function (ComponentClass, componentFromFramework, params, type) {
20634 var propertyName = type.propertyName;
20635 var jsComponent = !componentFromFramework;
20636 // using javascript component
20637 var instance;
20638 if (jsComponent) {
20639 instance = new ComponentClass();
20640 }
20641 else {
20642 // Using framework component
20643 var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);
20644 instance = this.frameworkComponentWrapper.wrap(ComponentClass, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, type);
20645 }
20646 var deferredInit = this.initComponent(instance, params);
20647 if (deferredInit == null) {
20648 return _utils__WEBPACK_IMPORTED_MODULE_2__["AgPromise"].resolve(instance);
20649 }
20650 return deferredInit.then(function () { return instance; });
20651 };
20652 // used by Floating Filter
20653 UserComponentFactory.prototype.mergeParamsWithApplicationProvidedParams = function (defObject, type, paramsFromGrid, paramsFromSelector) {
20654 if (paramsFromSelector === void 0) { paramsFromSelector = null; }
20655 var params = {
20656 context: this.gridOptionsWrapper.getContext(),
20657 columnApi: this.gridOptionsWrapper.getColumnApi(),
20658 api: this.gridOptionsWrapper.getApi()
20659 };
20660 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["mergeDeep"])(params, paramsFromGrid);
20661 // pull user params from either the old prop name and new prop name
20662 // eg either cellRendererParams and cellCompParams
20663 var defObjectAny = defObject;
20664 var userParams = defObjectAny && defObjectAny[type.propertyName + 'Params'];
20665 if (typeof userParams === 'function') {
20666 var userParamsFromFunc = userParams(paramsFromGrid);
20667 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["mergeDeep"])(params, userParamsFromFunc);
20668 }
20669 else if (typeof userParams === 'object') {
20670 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["mergeDeep"])(params, userParams);
20671 }
20672 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["mergeDeep"])(params, paramsFromSelector);
20673 return params;
20674 };
20675 UserComponentFactory.prototype.initComponent = function (component, params) {
20676 this.context.createBean(component);
20677 if (component.init == null) {
20678 return;
20679 }
20680 return component.init(params);
20681 };
20682 UserComponentFactory.prototype.getDefaultFloatingFilterType = function (def) {
20683 if (def == null) {
20684 return null;
20685 }
20686 var defaultFloatingFilterType = null;
20687 var _a = this.getCompKeys(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FilterComponent"]), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp;
20688 if (compName) {
20689 // will be undefined if not in the map
20690 defaultFloatingFilterType = _filter_floating_floatingFilterMapper__WEBPACK_IMPORTED_MODULE_5__["FloatingFilterMapper"].getFloatingFilterType(compName);
20691 }
20692 else {
20693 var usingDefaultFilter = (jsComp == null && fwComp == null) && (def.filter === true);
20694 if (usingDefaultFilter) {
20695 var setFilterModuleLoaded = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].SetFilterModule);
20696 defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';
20697 }
20698 }
20699 return defaultFloatingFilterType;
20700 };
20701 __decorate([
20702 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptions')
20703 ], UserComponentFactory.prototype, "gridOptions", void 0);
20704 __decorate([
20705 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('agComponentUtils')
20706 ], UserComponentFactory.prototype, "agComponentUtils", void 0);
20707 __decorate([
20708 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('componentMetadataProvider')
20709 ], UserComponentFactory.prototype, "componentMetadataProvider", void 0);
20710 __decorate([
20711 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentRegistry')
20712 ], UserComponentFactory.prototype, "userComponentRegistry", void 0);
20713 __decorate([
20714 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('frameworkComponentWrapper')
20715 ], UserComponentFactory.prototype, "frameworkComponentWrapper", void 0);
20716 UserComponentFactory = __decorate([
20717 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('userComponentFactory')
20718 ], UserComponentFactory);
20719 return UserComponentFactory;
20720}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
20721
20722
20723
20724
20725
20726/***/ }),
20727/* 103 */
20728/***/ (function(module, __webpack_exports__, __webpack_require__) {
20729
20730"use strict";
20731__webpack_require__.r(__webpack_exports__);
20732/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DateComponent", function() { return DateComponent; });
20733/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderComponent", function() { return HeaderComponent; });
20734/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupComponent", function() { return HeaderGroupComponent; });
20735/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellRendererComponent", function() { return CellRendererComponent; });
20736/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellEditorComponent", function() { return CellEditorComponent; });
20737/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InnerRendererComponent", function() { return InnerRendererComponent; });
20738/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoadingOverlayComponent", function() { return LoadingOverlayComponent; });
20739/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoRowsOverlayComponent", function() { return NoRowsOverlayComponent; });
20740/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TooltipComponent", function() { return TooltipComponent; });
20741/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterComponent", function() { return FilterComponent; });
20742/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FloatingFilterComponent", function() { return FloatingFilterComponent; });
20743/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ToolPanelComponent", function() { return ToolPanelComponent; });
20744/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StatusPanelComponent", function() { return StatusPanelComponent; });
20745/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullWidth", function() { return FullWidth; });
20746/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullWidthLoading", function() { return FullWidthLoading; });
20747/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullWidthGroup", function() { return FullWidthGroup; });
20748/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullWidthDetail", function() { return FullWidthDetail; });
20749/**
20750 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20751 * @version v27.3.0
20752 * @link https://www.ag-grid.com/
20753 * @license MIT
20754 */
20755var DateComponent = {
20756 propertyName: 'dateComponent',
20757 cellRenderer: false
20758};
20759var HeaderComponent = {
20760 propertyName: 'headerComponent',
20761 cellRenderer: false
20762};
20763var HeaderGroupComponent = {
20764 propertyName: 'headerGroupComponent',
20765 cellRenderer: false
20766};
20767var CellRendererComponent = {
20768 propertyName: 'cellRenderer',
20769 cellRenderer: true
20770};
20771var CellEditorComponent = {
20772 propertyName: 'cellEditor',
20773 cellRenderer: false
20774};
20775var InnerRendererComponent = {
20776 propertyName: 'innerRenderer',
20777 cellRenderer: true
20778};
20779var LoadingOverlayComponent = {
20780 propertyName: 'loadingOverlayComponent',
20781 cellRenderer: false
20782};
20783var NoRowsOverlayComponent = {
20784 propertyName: 'noRowsOverlayComponent',
20785 cellRenderer: false
20786};
20787var TooltipComponent = {
20788 propertyName: 'tooltipComponent',
20789 cellRenderer: false
20790};
20791var FilterComponent = {
20792 propertyName: 'filter',
20793 cellRenderer: false
20794};
20795var FloatingFilterComponent = {
20796 propertyName: 'floatingFilterComponent',
20797 cellRenderer: false
20798};
20799var ToolPanelComponent = {
20800 propertyName: 'toolPanel',
20801 cellRenderer: false
20802};
20803var StatusPanelComponent = {
20804 propertyName: 'statusPanel',
20805 cellRenderer: false
20806};
20807var FullWidth = {
20808 propertyName: 'fullWidthCellRenderer',
20809 cellRenderer: true
20810};
20811var FullWidthLoading = {
20812 propertyName: 'loadingCellRenderer',
20813 cellRenderer: true
20814};
20815var FullWidthGroup = {
20816 propertyName: 'groupRowRenderer',
20817 cellRenderer: true
20818};
20819var FullWidthDetail = {
20820 propertyName: 'detailCellRenderer',
20821 cellRenderer: true
20822};
20823
20824
20825
20826
20827/***/ }),
20828/* 104 */
20829/***/ (function(module, __webpack_exports__, __webpack_require__) {
20830
20831"use strict";
20832__webpack_require__.r(__webpack_exports__);
20833/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FloatingFilterMapper", function() { return FloatingFilterMapper; });
20834/**
20835 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20836 * @version v27.3.0
20837 * @link https://www.ag-grid.com/
20838 * @license MIT
20839 */
20840var FloatingFilterMapper = /** @class */ (function () {
20841 function FloatingFilterMapper() {
20842 }
20843 FloatingFilterMapper.getFloatingFilterType = function (filterType) {
20844 return this.filterToFloatingFilterMapping[filterType];
20845 };
20846 FloatingFilterMapper.filterToFloatingFilterMapping = {
20847 set: 'agSetColumnFloatingFilter',
20848 agSetColumnFilter: 'agSetColumnFloatingFilter',
20849 multi: 'agMultiColumnFloatingFilter',
20850 agMultiColumnFilter: 'agMultiColumnFloatingFilter',
20851 number: 'agNumberColumnFloatingFilter',
20852 agNumberColumnFilter: 'agNumberColumnFloatingFilter',
20853 date: 'agDateColumnFloatingFilter',
20854 agDateColumnFilter: 'agDateColumnFloatingFilter',
20855 text: 'agTextColumnFloatingFilter',
20856 agTextColumnFilter: 'agTextColumnFloatingFilter'
20857 };
20858 return FloatingFilterMapper;
20859}());
20860
20861
20862
20863
20864
20865/***/ }),
20866/* 105 */
20867/***/ (function(module, __webpack_exports__, __webpack_require__) {
20868
20869"use strict";
20870__webpack_require__.r(__webpack_exports__);
20871/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExcelFactoryMode", function() { return ExcelFactoryMode; });
20872/**
20873 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20874 * @version v27.3.0
20875 * @link https://www.ag-grid.com/
20876 * @license MIT
20877 */
20878// Excel Export
20879var ExcelFactoryMode;
20880(function (ExcelFactoryMode) {
20881 ExcelFactoryMode[ExcelFactoryMode["SINGLE_SHEET"] = 0] = "SINGLE_SHEET";
20882 ExcelFactoryMode[ExcelFactoryMode["MULTI_SHEET"] = 1] = "MULTI_SHEET";
20883})(ExcelFactoryMode || (ExcelFactoryMode = {}));
20884
20885
20886
20887
20888/***/ }),
20889/* 106 */
20890/***/ (function(module, __webpack_exports__, __webpack_require__) {
20891
20892"use strict";
20893__webpack_require__.r(__webpack_exports__);
20894/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragService", function() { return DragService; });
20895/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
20896/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
20897/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
20898/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
20899/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
20900/* harmony import */ var _utils_mouse__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50);
20901/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(43);
20902/**
20903 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20904 * @version v27.3.0
20905 * @link https://www.ag-grid.com/
20906 * @license MIT
20907 */
20908var __extends = (undefined && undefined.__extends) || (function () {
20909 var extendStatics = function (d, b) {
20910 extendStatics = Object.setPrototypeOf ||
20911 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20912 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20913 return extendStatics(d, b);
20914 };
20915 return function (d, b) {
20916 extendStatics(d, b);
20917 function __() { this.constructor = d; }
20918 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20919 };
20920})();
20921var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
20922 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20923 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20924 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;
20925 return c > 3 && r && Object.defineProperty(target, key, r), r;
20926};
20927
20928
20929
20930
20931
20932
20933
20934/** Adds drag listening onto an element. In AG Grid this is used twice, first is resizing columns,
20935 * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */
20936var DragService = /** @class */ (function (_super) {
20937 __extends(DragService, _super);
20938 function DragService() {
20939 var _this = _super !== null && _super.apply(this, arguments) || this;
20940 _this.dragEndFunctions = [];
20941 _this.dragSources = [];
20942 return _this;
20943 }
20944 DragService.prototype.init = function () {
20945 this.logger = this.loggerFactory.create('DragService');
20946 };
20947 DragService.prototype.removeAllListeners = function () {
20948 this.dragSources.forEach(this.removeListener.bind(this));
20949 this.dragSources.length = 0;
20950 };
20951 DragService.prototype.removeListener = function (dragSourceAndListener) {
20952 var element = dragSourceAndListener.dragSource.eElement;
20953 var mouseDownListener = dragSourceAndListener.mouseDownListener;
20954 element.removeEventListener('mousedown', mouseDownListener);
20955 // remove touch listener only if it exists
20956 if (dragSourceAndListener.touchEnabled) {
20957 var touchStartListener = dragSourceAndListener.touchStartListener;
20958 element.removeEventListener('touchstart', touchStartListener, { passive: true });
20959 }
20960 };
20961 DragService.prototype.removeDragSource = function (params) {
20962 var dragSourceAndListener = this.dragSources.find(function (item) { return item.dragSource === params; });
20963 if (!dragSourceAndListener) {
20964 return;
20965 }
20966 this.removeListener(dragSourceAndListener);
20967 Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["removeFromArray"])(this.dragSources, dragSourceAndListener);
20968 };
20969 DragService.prototype.isDragging = function () {
20970 return this.dragging;
20971 };
20972 DragService.prototype.addDragSource = function (params, includeTouch) {
20973 var _this = this;
20974 if (includeTouch === void 0) { includeTouch = false; }
20975 var mouseListener = this.onMouseDown.bind(this, params);
20976 params.eElement.addEventListener('mousedown', mouseListener);
20977 var touchListener = null;
20978 var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();
20979 if (includeTouch && !suppressTouch) {
20980 touchListener = function (touchEvent) {
20981 if (touchEvent.cancelable) {
20982 touchEvent.preventDefault();
20983 }
20984 _this.onTouchStart(params, touchEvent);
20985 };
20986 params.eElement.addEventListener('touchstart', touchListener, { passive: true });
20987 }
20988 this.dragSources.push({
20989 dragSource: params,
20990 mouseDownListener: mouseListener,
20991 touchStartListener: touchListener,
20992 touchEnabled: includeTouch
20993 });
20994 };
20995 // gets called whenever mouse down on any drag source
20996 DragService.prototype.onTouchStart = function (params, touchEvent) {
20997 var _this = this;
20998 this.currentDragParams = params;
20999 this.dragging = false;
21000 var touch = touchEvent.touches[0];
21001 this.touchLastTime = touch;
21002 this.touchStart = touch;
21003 var touchMoveEvent = function (e) { return _this.onTouchMove(e, params.eElement); };
21004 var touchEndEvent = function (e) { return _this.onTouchUp(e, params.eElement); };
21005 var documentTouchMove = function (e) { if (e.cancelable) {
21006 e.preventDefault();
21007 } };
21008 var target = params.eElement;
21009 var events = [
21010 // Prevents the page document from moving while we are dragging items around.
21011 // preventDefault needs to be called in the touchmove listener and never inside the
21012 // touchstart, because using touchstart causes the click event to be cancelled on touch devices.
21013 { target: document, type: 'touchmove', listener: documentTouchMove, options: { passive: false } },
21014 { target: target, type: 'touchmove', listener: touchMoveEvent, options: { passive: true } },
21015 { target: target, type: 'touchend', listener: touchEndEvent, options: { passive: true } },
21016 { target: target, type: 'touchcancel', listener: touchEndEvent, options: { passive: true } }
21017 ];
21018 // temporally add these listeners, for the duration of the drag
21019 this.addTemporaryEvents(events);
21020 // see if we want to start dragging straight away
21021 if (params.dragStartPixels === 0) {
21022 this.onCommonMove(touch, this.touchStart, params.eElement);
21023 }
21024 };
21025 // gets called whenever mouse down on any drag source
21026 DragService.prototype.onMouseDown = function (params, mouseEvent) {
21027 var _this = this;
21028 var e = mouseEvent;
21029 if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {
21030 return;
21031 }
21032 // if there are two elements with parent / child relationship, and both are draggable,
21033 // when we drag the child, we should NOT drag the parent. an example of this is row moving
21034 // and range selection - row moving should get preference when use drags the rowDrag component.
21035 if (e._alreadyProcessedByDragService) {
21036 return;
21037 }
21038 e._alreadyProcessedByDragService = true;
21039 // only interested in left button clicks
21040 if (mouseEvent.button !== 0) {
21041 return;
21042 }
21043 this.currentDragParams = params;
21044 this.dragging = false;
21045 this.mouseStartEvent = mouseEvent;
21046 var eDocument = this.gridOptionsWrapper.getDocument();
21047 var mouseMoveEvent = function (event) { return _this.onMouseMove(event, params.eElement); };
21048 var mouseUpEvent = function (event) { return _this.onMouseUp(event, params.eElement); };
21049 var contextEvent = function (event) { return event.preventDefault(); };
21050 var target = eDocument;
21051 var events = [
21052 { target: target, type: 'mousemove', listener: mouseMoveEvent },
21053 { target: target, type: 'mouseup', listener: mouseUpEvent },
21054 { target: target, type: 'contextmenu', listener: contextEvent }
21055 ];
21056 // temporally add these listeners, for the duration of the drag
21057 this.addTemporaryEvents(events);
21058 //see if we want to start dragging straight away
21059 if (params.dragStartPixels === 0) {
21060 this.onMouseMove(mouseEvent, params.eElement);
21061 }
21062 };
21063 DragService.prototype.addTemporaryEvents = function (events) {
21064 events.forEach(function (currentEvent) {
21065 var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;
21066 target.addEventListener(type, listener, options);
21067 });
21068 this.dragEndFunctions.push(function () {
21069 events.forEach(function (currentEvent) {
21070 var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;
21071 target.removeEventListener(type, listener, options);
21072 });
21073 });
21074 };
21075 // returns true if the event is close to the original event by X pixels either vertically or horizontally.
21076 // we only start dragging after X pixels so this allows us to know if we should start dragging yet.
21077 DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {
21078 // by default, we wait 4 pixels before starting the drag
21079 var dragStartPixels = this.currentDragParams.dragStartPixels;
21080 var requiredPixelDiff = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(dragStartPixels) ? dragStartPixels : 4;
21081 return Object(_utils_mouse__WEBPACK_IMPORTED_MODULE_5__["areEventsNear"])(currentEvent, startEvent, requiredPixelDiff);
21082 };
21083 DragService.prototype.getFirstActiveTouch = function (touchList) {
21084 for (var i = 0; i < touchList.length; i++) {
21085 if (touchList[i].identifier === this.touchStart.identifier) {
21086 return touchList[i];
21087 }
21088 }
21089 return null;
21090 };
21091 DragService.prototype.onCommonMove = function (currentEvent, startEvent, el) {
21092 if (!this.dragging) {
21093 // if mouse hasn't travelled from the start position enough, do nothing
21094 if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {
21095 return;
21096 }
21097 this.dragging = true;
21098 var event_1 = {
21099 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DRAG_STARTED,
21100 api: this.gridApi,
21101 columnApi: this.columnApi,
21102 target: el
21103 };
21104 this.eventService.dispatchEvent(event_1);
21105 this.currentDragParams.onDragStart(startEvent);
21106 // we need ONE drag action at the startEvent, so that we are guaranteed the drop target
21107 // at the start gets notified. this is because the drag can start outside of the element
21108 // that started it, as the mouse is allowed drag away from the mouse down before it's
21109 // considered a drag (the isEventNearStartEvent() above). if we didn't do this, then
21110 // it would be possible to click a column by the edge, then drag outside of the drop zone
21111 // in less than 4 pixels and the drag officially starts outside of the header but the header
21112 // wouldn't be notified of the dragging.
21113 this.currentDragParams.onDragging(startEvent);
21114 }
21115 this.currentDragParams.onDragging(currentEvent);
21116 };
21117 DragService.prototype.onTouchMove = function (touchEvent, el) {
21118 var touch = this.getFirstActiveTouch(touchEvent.touches);
21119 if (!touch) {
21120 return;
21121 }
21122 // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');
21123 this.onCommonMove(touch, this.touchStart, el);
21124 };
21125 // only gets called after a mouse down - as this is only added after mouseDown
21126 // and is removed when mouseUp happens
21127 DragService.prototype.onMouseMove = function (mouseEvent, el) {
21128 // The event type can be `mousedown` when `dragStartPixels=0`
21129 // we should only preventDefault on `mousemove`.
21130 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_6__["isBrowserSafari"])() &&
21131 mouseEvent.type === 'mousemove' &&
21132 mouseEvent.cancelable &&
21133 this.mouseEventService.isEventFromThisGrid(mouseEvent) &&
21134 !this.isOverFormFieldElement(mouseEvent)) {
21135 mouseEvent.preventDefault();
21136 }
21137 this.onCommonMove(mouseEvent, this.mouseStartEvent, el);
21138 };
21139 DragService.prototype.isOverFormFieldElement = function (mouseEvent) {
21140 var _a, _b;
21141 var el = mouseEvent.target;
21142 var tagName = (_a = el) === null || _a === void 0 ? void 0 : _a.tagName.toLocaleLowerCase();
21143 return !!((_b = tagName) === null || _b === void 0 ? void 0 : _b.match('^a$|textarea|input|select|button'));
21144 };
21145 DragService.prototype.onTouchUp = function (touchEvent, el) {
21146 var touch = this.getFirstActiveTouch(touchEvent.changedTouches);
21147 // i haven't worked this out yet, but there is no matching touch
21148 // when we get the touch up event. to get around this, we swap in
21149 // the last touch. this is a hack to 'get it working' while we
21150 // figure out what's going on, why we are not getting a touch in
21151 // current event.
21152 if (!touch) {
21153 touch = this.touchLastTime;
21154 }
21155 // if mouse was left up before we started to move, then this is a tap.
21156 // we check this before onUpCommon as onUpCommon resets the dragging
21157 // let tap = !this.dragging;
21158 // let tapTarget = this.currentDragParams.eElement;
21159 this.onUpCommon(touch, el);
21160 // if tap, tell user
21161 // console.log(`${Math.random()} tap = ${tap}`);
21162 // if (tap) {
21163 // tapTarget.click();
21164 // }
21165 };
21166 DragService.prototype.onMouseUp = function (mouseEvent, el) {
21167 this.onUpCommon(mouseEvent, el);
21168 };
21169 DragService.prototype.onUpCommon = function (eventOrTouch, el) {
21170 if (this.dragging) {
21171 this.dragging = false;
21172 this.currentDragParams.onDragStop(eventOrTouch);
21173 var event_2 = {
21174 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DRAG_STOPPED,
21175 api: this.gridApi,
21176 columnApi: this.columnApi,
21177 target: el
21178 };
21179 this.eventService.dispatchEvent(event_2);
21180 }
21181 this.mouseStartEvent = null;
21182 this.touchStart = null;
21183 this.touchLastTime = null;
21184 this.currentDragParams = null;
21185 this.dragEndFunctions.forEach(function (func) { return func(); });
21186 this.dragEndFunctions.length = 0;
21187 };
21188 __decorate([
21189 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('loggerFactory')
21190 ], DragService.prototype, "loggerFactory", void 0);
21191 __decorate([
21192 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
21193 ], DragService.prototype, "columnApi", void 0);
21194 __decorate([
21195 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
21196 ], DragService.prototype, "gridApi", void 0);
21197 __decorate([
21198 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('mouseEventService')
21199 ], DragService.prototype, "mouseEventService", void 0);
21200 __decorate([
21201 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
21202 ], DragService.prototype, "init", null);
21203 __decorate([
21204 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
21205 ], DragService.prototype, "removeAllListeners", null);
21206 DragService = __decorate([
21207 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('dragService')
21208 ], DragService);
21209 return DragService;
21210}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
21211
21212
21213
21214
21215
21216/***/ }),
21217/* 107 */
21218/***/ (function(module, __webpack_exports__, __webpack_require__) {
21219
21220"use strict";
21221__webpack_require__.r(__webpack_exports__);
21222/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterManager", function() { return FilterManager; });
21223/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37);
21224/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
21225/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
21226/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
21227/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
21228/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
21229/* harmony import */ var _utils_set__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(52);
21230/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7);
21231/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(13);
21232/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(42);
21233/**
21234 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
21235 * @version v27.3.0
21236 * @link https://www.ag-grid.com/
21237 * @license MIT
21238 */
21239var __extends = (undefined && undefined.__extends) || (function () {
21240 var extendStatics = function (d, b) {
21241 extendStatics = Object.setPrototypeOf ||
21242 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
21243 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
21244 return extendStatics(d, b);
21245 };
21246 return function (d, b) {
21247 extendStatics(d, b);
21248 function __() { this.constructor = d; }
21249 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
21250 };
21251})();
21252var __assign = (undefined && undefined.__assign) || function () {
21253 __assign = Object.assign || function(t) {
21254 for (var s, i = 1, n = arguments.length; i < n; i++) {
21255 s = arguments[i];
21256 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
21257 t[p] = s[p];
21258 }
21259 return t;
21260 };
21261 return __assign.apply(this, arguments);
21262};
21263var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
21264 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
21265 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21266 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;
21267 return c > 3 && r && Object.defineProperty(target, key, r), r;
21268};
21269
21270
21271
21272
21273
21274
21275
21276
21277
21278
21279var FilterManager = /** @class */ (function (_super) {
21280 __extends(FilterManager, _super);
21281 function FilterManager() {
21282 var _this = _super !== null && _super.apply(this, arguments) || this;
21283 _this.allColumnFilters = new Map();
21284 _this.activeAggregateFilters = [];
21285 _this.activeColumnFilters = [];
21286 _this.quickFilter = null;
21287 _this.quickFilterParts = null;
21288 // this is true when the grid is processing the filter change. this is used by the cell comps, so that they
21289 // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the
21290 // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where
21291 // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)
21292 // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.
21293 _this.processingFilterChange = false;
21294 return _this;
21295 }
21296 FilterManager_1 = FilterManager;
21297 FilterManager.prototype.init = function () {
21298 var _this = this;
21299 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_GRID_COLUMNS_CHANGED, function () { return _this.onColumnsChanged(); });
21300 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, function () { return _this.refreshFiltersForAggregations(); });
21301 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, function () { return _this.refreshFiltersForAggregations(); });
21302 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, function () { return _this.refreshFiltersForAggregations(); });
21303 this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());
21304 this.setQuickFilterParts();
21305 this.allowShowChangeAfterFilter = this.gridOptionsWrapper.isAllowShowChangeAfterFilter();
21306 };
21307 FilterManager.prototype.setQuickFilterParts = function () {
21308 this.quickFilterParts = this.quickFilter ? this.quickFilter.split(' ') : null;
21309 };
21310 FilterManager.prototype.setFilterModel = function (model) {
21311 var _this = this;
21312 var allPromises = [];
21313 var previousModel = this.getFilterModel();
21314 if (model) {
21315 // mark the filters as we set them, so any active filters left over we stop
21316 var modelKeys_1 = Object(_utils_set__WEBPACK_IMPORTED_MODULE_6__["convertToSet"])(Object.keys(model));
21317 this.allColumnFilters.forEach(function (filterWrapper, colId) {
21318 var newModel = model[colId];
21319 allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));
21320 modelKeys_1.delete(colId);
21321 });
21322 // at this point, processedFields contains data for which we don't have a filter working yet
21323 modelKeys_1.forEach(function (colId) {
21324 var column = _this.columnModel.getPrimaryColumn(colId) || _this.columnModel.getGridColumn(colId);
21325 if (!column) {
21326 console.warn('AG Grid: setFilterModel() - no column found for colId: ' + colId);
21327 return;
21328 }
21329 if (!column.isFilterAllowed()) {
21330 console.warn('AG Grid: setFilterModel() - unable to fully apply model, filtering disabled for colId: ' + colId);
21331 return;
21332 }
21333 var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');
21334 if (!filterWrapper) {
21335 console.warn('AG-Grid: setFilterModel() - unable to fully apply model, unable to create filter for colId: ' + colId);
21336 return;
21337 }
21338 allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));
21339 });
21340 }
21341 else {
21342 this.allColumnFilters.forEach(function (filterWrapper) {
21343 allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, null));
21344 });
21345 }
21346 _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"].all(allPromises).then(function () {
21347 var currentModel = _this.getFilterModel();
21348 var columns = [];
21349 _this.allColumnFilters.forEach(function (filterWrapper, colId) {
21350 var before = previousModel ? previousModel[colId] : null;
21351 var after = currentModel ? currentModel[colId] : null;
21352 if (!_utils__WEBPACK_IMPORTED_MODULE_0__["_"].jsonEquals(before, after)) {
21353 columns.push(filterWrapper.column);
21354 }
21355 });
21356 if (columns.length > 0) {
21357 _this.onFilterChanged({ columns: columns });
21358 }
21359 });
21360 };
21361 FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {
21362 return new _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"](function (resolve) {
21363 filterPromise.then(function (filter) {
21364 if (typeof filter.setModel !== 'function') {
21365 console.warn('AG Grid: filter missing setModel method, which is needed for setFilterModel');
21366 resolve();
21367 }
21368 (filter.setModel(newModel) || _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"].resolve()).then(function () { return resolve(); });
21369 });
21370 });
21371 };
21372 FilterManager.prototype.getFilterModel = function () {
21373 var result = {};
21374 this.allColumnFilters.forEach(function (filterWrapper, key) {
21375 // because user can provide filters, we provide useful error checking and messages
21376 var filterPromise = filterWrapper.filterPromise;
21377 var filter = filterPromise.resolveNow(null, function (promiseFilter) { return promiseFilter; });
21378 if (filter == null) {
21379 return null;
21380 }
21381 if (typeof filter.getModel !== 'function') {
21382 console.warn('AG Grid: filter API missing getModel method, which is needed for getFilterModel');
21383 return;
21384 }
21385 var model = filter.getModel();
21386 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(model)) {
21387 result[key] = model;
21388 }
21389 });
21390 return result;
21391 };
21392 FilterManager.prototype.isColumnFilterPresent = function () {
21393 return this.activeColumnFilters.length > 0;
21394 };
21395 FilterManager.prototype.isAggregateFilterPresent = function () {
21396 return !!this.activeAggregateFilters.length;
21397 };
21398 FilterManager.prototype.doAggregateFiltersPass = function (node, filterToSkip) {
21399 return this.doColumnFiltersPass(node, filterToSkip, true);
21400 };
21401 // called by:
21402 // 1) onFilterChanged()
21403 // 2) onNewRowsLoaded()
21404 FilterManager.prototype.updateActiveFilters = function () {
21405 var _this = this;
21406 this.activeColumnFilters.length = 0;
21407 this.activeAggregateFilters.length = 0;
21408 var isFilterActive = function (filter) {
21409 if (!filter) {
21410 return false;
21411 } // this never happens, including to avoid compile error
21412 if (!filter.isFilterActive) {
21413 console.warn('AG Grid: Filter is missing isFilterActive() method');
21414 return false;
21415 }
21416 return filter.isFilterActive();
21417 };
21418 var groupFilterEnabled = !!this.gridOptionsWrapper.getGroupAggFiltering();
21419 var isAggFilter = function (column) {
21420 var isSecondary = !column.isPrimary();
21421 // the only filters that can appear on secondary columns are groupAgg filters
21422 if (isSecondary) {
21423 return true;
21424 }
21425 var isShowingPrimaryColumns = !_this.columnModel.isPivotActive();
21426 var isValueActive = column.isValueActive();
21427 // primary columns are only ever groupAgg filters if a) value is active and b) showing primary columns
21428 if (!isValueActive || !isShowingPrimaryColumns) {
21429 return false;
21430 }
21431 // from here on we know: isPrimary=true, isValueActive=true, isShowingPrimaryColumns=true
21432 if (_this.columnModel.isPivotMode()) {
21433 // primary column is pretending to be a pivot column, ie pivotMode=true, but we are
21434 // still showing primary columns
21435 return true;
21436 }
21437 else {
21438 // we are not pivoting, so we groupFilter when it's an agg column
21439 return groupFilterEnabled;
21440 }
21441 };
21442 this.allColumnFilters.forEach(function (filterWrapper) {
21443 if (filterWrapper.filterPromise.resolveNow(false, isFilterActive)) {
21444 var filterComp = filterWrapper.filterPromise.resolveNow(null, function (filter) { return filter; });
21445 if (isAggFilter(filterWrapper.column)) {
21446 _this.activeAggregateFilters.push(filterComp);
21447 }
21448 else {
21449 _this.activeColumnFilters.push(filterComp);
21450 }
21451 }
21452 });
21453 };
21454 FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {
21455 this.allColumnFilters.forEach(function (filterWrapper) {
21456 var isFilterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });
21457 filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);
21458 });
21459 };
21460 FilterManager.prototype.isAnyFilterPresent = function () {
21461 return this.isQuickFilterPresent() || this.isColumnFilterPresent() || this.isAggregateFilterPresent() || this.gridOptionsWrapper.isExternalFilterPresent();
21462 };
21463 FilterManager.prototype.doColumnFiltersPass = function (node, filterToSkip, targetAggregates) {
21464 var data = node.data, aggData = node.aggData;
21465 var targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;
21466 var targetedData = targetAggregates ? aggData : data;
21467 for (var i = 0; i < targetedFilters.length; i++) {
21468 var filter = targetedFilters[i];
21469 if (filter == null || filter === filterToSkip) {
21470 continue;
21471 }
21472 if (typeof filter.doesFilterPass !== 'function') {
21473 // because users can do custom filters, give nice error message
21474 throw new Error('Filter is missing method doesFilterPass');
21475 }
21476 if (!filter.doesFilterPass({ node: node, data: targetedData })) {
21477 return false;
21478 }
21479 }
21480 return true;
21481 };
21482 FilterManager.prototype.parseQuickFilter = function (newFilter) {
21483 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(newFilter)) {
21484 return null;
21485 }
21486 if (!this.gridOptionsWrapper.isRowModelDefault()) {
21487 console.warn('AG Grid - Quick filtering only works with the Client-Side Row Model');
21488 return null;
21489 }
21490 return newFilter.toUpperCase();
21491 };
21492 FilterManager.prototype.setQuickFilter = function (newFilter) {
21493 if (newFilter != null && typeof newFilter !== 'string') {
21494 console.warn("AG Grid - setQuickFilter() only supports string inputs, received: " + typeof newFilter);
21495 return;
21496 }
21497 var parsedFilter = this.parseQuickFilter(newFilter);
21498 if (this.quickFilter !== parsedFilter) {
21499 this.quickFilter = parsedFilter;
21500 this.setQuickFilterParts();
21501 this.onFilterChanged();
21502 }
21503 };
21504 FilterManager.prototype.refreshFiltersForAggregations = function () {
21505 var isAggFiltering = this.gridOptionsWrapper.getGroupAggFiltering();
21506 if (isAggFiltering) {
21507 this.onFilterChanged();
21508 }
21509 };
21510 // sometimes (especially in React) the filter can call onFilterChanged when we are in the middle
21511 // of a render cycle. this would be bad, so we wait for render cycle to complete when this happens.
21512 // this happens in react when we change React State in the grid (eg setting RowCtrl's in RowContainer)
21513 // which results in React State getting applied in the main application, triggering a useEffect() to
21514 // be kicked off adn then the application calling the grid's API. in AG-6554, the custom filter was
21515 // getting it's useEffect() triggered in this way.
21516 FilterManager.prototype.callOnFilterChangedOutsideRenderCycle = function (params) {
21517 var _this = this;
21518 if (params === void 0) { params = {}; }
21519 var action = function () { return _this.onFilterChanged(params); };
21520 if (this.rowRenderer.isRefreshInProgress()) {
21521 setTimeout(action, 0);
21522 }
21523 else {
21524 action();
21525 }
21526 };
21527 FilterManager.prototype.onFilterChanged = function (params) {
21528 if (params === void 0) { params = {}; }
21529 var filterInstance = params.filterInstance, additionalEventAttributes = params.additionalEventAttributes, columns = params.columns;
21530 this.updateActiveFilters();
21531 this.updateFilterFlagInColumns('filterChanged', additionalEventAttributes);
21532 this.allColumnFilters.forEach(function (filterWrapper) {
21533 if (!filterWrapper.filterPromise) {
21534 return;
21535 }
21536 filterWrapper.filterPromise.then(function (filter) {
21537 if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {
21538 filter.onAnyFilterChanged();
21539 }
21540 });
21541 });
21542 var filterChangedEvent = {
21543 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_FILTER_CHANGED,
21544 api: this.gridApi,
21545 columnApi: this.columnApi,
21546 columns: columns || [],
21547 };
21548 if (additionalEventAttributes) {
21549 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["mergeDeep"])(filterChangedEvent, additionalEventAttributes);
21550 }
21551 // because internal events are not async in ag-grid, when the dispatchEvent
21552 // method comes back, we know all listeners have finished executing.
21553 this.processingFilterChange = true;
21554 this.eventService.dispatchEvent(filterChangedEvent);
21555 this.processingFilterChange = false;
21556 };
21557 FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {
21558 // if user has elected to always flash cell changes, then always return false, otherwise we suppress flashing
21559 // changes when filtering
21560 return !this.allowShowChangeAfterFilter && this.processingFilterChange;
21561 };
21562 FilterManager.prototype.isQuickFilterPresent = function () {
21563 return this.quickFilter !== null;
21564 };
21565 FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {
21566 return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });
21567 };
21568 FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {
21569 var _this = this;
21570 var columns = this.columnModel.getAllColumnsForQuickFilter();
21571 return columns.some(function (column) {
21572 var part = _this.getQuickFilterTextForColumn(column, node);
21573 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(part) && part.indexOf(filterPart) >= 0;
21574 });
21575 };
21576 FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {
21577 if (!node.quickFilterAggregateText) {
21578 this.aggregateRowForQuickFilter(node);
21579 }
21580 return node.quickFilterAggregateText.indexOf(filterPart) >= 0;
21581 };
21582 FilterManager.prototype.doesRowPassQuickFilter = function (node) {
21583 var _this = this;
21584 var usingCache = this.gridOptionsWrapper.isCacheQuickFilter();
21585 // each part must pass, if any fails, then the whole filter fails
21586 return this.quickFilterParts.every(function (part) {
21587 return usingCache ? _this.doesRowPassQuickFilterCache(node, part) : _this.doesRowPassQuickFilterNoCache(node, part);
21588 });
21589 };
21590 FilterManager.prototype.doesRowPassAggregateFilters = function (params) {
21591 if (this.isAggregateFilterPresent() && !this.doAggregateFiltersPass(params.rowNode, params.filterInstanceToSkip)) {
21592 return false;
21593 }
21594 // got this far, all filters pass
21595 return true;
21596 };
21597 FilterManager.prototype.doesRowPassFilter = function (params) {
21598 // the row must pass ALL of the filters, so if any of them fail,
21599 // we return true. that means if a row passes the quick filter,
21600 // but fails the column filter, it fails overall
21601 // first up, check quick filter
21602 if (this.isQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {
21603 return false;
21604 }
21605 // secondly, give the client a chance to reject this row
21606 if (this.gridOptionsWrapper.isExternalFilterPresent() && !this.gridOptionsWrapper.doesExternalFilterPass(params.rowNode)) {
21607 return false;
21608 }
21609 // lastly, check column filter
21610 if (this.isColumnFilterPresent() && !this.doColumnFiltersPass(params.rowNode, params.filterInstanceToSkip)) {
21611 return false;
21612 }
21613 // got this far, all filters pass
21614 return true;
21615 };
21616 FilterManager.prototype.getQuickFilterTextForColumn = function (column, node) {
21617 var value = this.valueService.getValue(column, node, true);
21618 var colDef = column.getColDef();
21619 if (colDef.getQuickFilterText) {
21620 var params = {
21621 value: value,
21622 node: node,
21623 data: node.data,
21624 column: column,
21625 colDef: colDef,
21626 api: this.gridOptionsWrapper.getApi(),
21627 columnApi: this.gridOptionsWrapper.getColumnApi(),
21628 context: this.gridOptionsWrapper.getContext()
21629 };
21630 value = colDef.getQuickFilterText(params);
21631 }
21632 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(value) ? value.toString().toUpperCase() : null;
21633 };
21634 FilterManager.prototype.aggregateRowForQuickFilter = function (node) {
21635 var _this = this;
21636 var stringParts = [];
21637 var columns = this.columnModel.getAllColumnsForQuickFilter();
21638 columns.forEach(function (column) {
21639 var part = _this.getQuickFilterTextForColumn(column, node);
21640 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(part)) {
21641 stringParts.push(part);
21642 }
21643 });
21644 node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);
21645 };
21646 FilterManager.prototype.onNewRowsLoaded = function (source) {
21647 this.allColumnFilters.forEach(function (filterWrapper) {
21648 filterWrapper.filterPromise.then(function (filter) {
21649 if (filter.onNewRowsLoaded) {
21650 filter.onNewRowsLoaded();
21651 }
21652 });
21653 });
21654 this.updateFilterFlagInColumns(source);
21655 this.updateActiveFilters();
21656 };
21657 FilterManager.prototype.createValueGetter = function (column) {
21658 var _this = this;
21659 return function (_a) {
21660 var node = _a.node;
21661 return _this.valueService.getValue(column, node, true);
21662 };
21663 };
21664 FilterManager.prototype.getFilterComponent = function (column, source, createIfDoesNotExist) {
21665 if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }
21666 var _a;
21667 if (createIfDoesNotExist) {
21668 return ((_a = this.getOrCreateFilterWrapper(column, source)) === null || _a === void 0 ? void 0 : _a.filterPromise) || null;
21669 }
21670 var filterWrapper = this.cachedFilter(column);
21671 return filterWrapper ? filterWrapper.filterPromise : null;
21672 };
21673 FilterManager.prototype.isFilterActive = function (column) {
21674 var filterWrapper = this.cachedFilter(column);
21675 return !!filterWrapper && filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });
21676 };
21677 FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {
21678 if (!column.isFilterAllowed()) {
21679 return null;
21680 }
21681 var filterWrapper = this.cachedFilter(column);
21682 if (!filterWrapper) {
21683 filterWrapper = this.createFilterWrapper(column, source);
21684 this.allColumnFilters.set(column.getColId(), filterWrapper);
21685 }
21686 else if (source !== 'NO_UI') {
21687 this.putIntoGui(filterWrapper, source);
21688 }
21689 return filterWrapper;
21690 };
21691 FilterManager.prototype.cachedFilter = function (column) {
21692 return this.allColumnFilters.get(column.getColId());
21693 };
21694 FilterManager.prototype.createFilterInstance = function (column) {
21695 var _this = this;
21696 var defaultFilter = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].SetFilterModule) ? 'agSetColumnFilter' : 'agTextColumnFilter';
21697 var colDef = column.getColDef();
21698 var filterInstance;
21699 var params = __assign(__assign({}, this.createFilterParams(column, colDef)), { filterModifiedCallback: function () {
21700 var event = {
21701 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_FILTER_MODIFIED,
21702 api: _this.gridApi,
21703 columnApi: _this.columnApi,
21704 column: column,
21705 filterInstance: filterInstance
21706 };
21707 _this.eventService.dispatchEvent(event);
21708 }, filterChangedCallback: function (additionalEventAttributes) {
21709 var params = { filterInstance: filterInstance, additionalEventAttributes: additionalEventAttributes, columns: [column] };
21710 _this.callOnFilterChangedOutsideRenderCycle(params);
21711 }, doesRowPassOtherFilter: function (node) { return _this.doesRowPassOtherFilters(filterInstance, node); } });
21712 var compDetails = this.userComponentFactory.getFilterDetails(colDef, params, defaultFilter);
21713 if (!compDetails) {
21714 return null;
21715 }
21716 var componentPromise = compDetails.newAgStackInstance();
21717 if (componentPromise) {
21718 componentPromise.then(function (r) { return filterInstance = r; });
21719 }
21720 return componentPromise;
21721 };
21722 FilterManager.prototype.createFilterParams = function (column, colDef) {
21723 var params = {
21724 api: this.gridOptionsWrapper.getApi(),
21725 columnApi: this.gridOptionsWrapper.getColumnApi(),
21726 column: column,
21727 colDef: Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["cloneObject"])(colDef),
21728 rowModel: this.rowModel,
21729 filterChangedCallback: function () { },
21730 filterModifiedCallback: function () { },
21731 valueGetter: this.createValueGetter(column),
21732 context: this.gridOptionsWrapper.getContext(),
21733 doesRowPassOtherFilter: function () { return true; },
21734 };
21735 return params;
21736 };
21737 FilterManager.prototype.createFilterWrapper = function (column, source) {
21738 var filterWrapper = {
21739 column: column,
21740 filterPromise: null,
21741 compiledElement: null,
21742 guiPromise: _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"].resolve(null)
21743 };
21744 filterWrapper.filterPromise = this.createFilterInstance(column);
21745 if (filterWrapper.filterPromise) {
21746 this.putIntoGui(filterWrapper, source);
21747 }
21748 return filterWrapper;
21749 };
21750 FilterManager.prototype.putIntoGui = function (filterWrapper, source) {
21751 var _this = this;
21752 var eFilterGui = document.createElement('div');
21753 eFilterGui.className = 'ag-filter';
21754 filterWrapper.guiPromise = new _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"](function (resolve) {
21755 filterWrapper.filterPromise.then(function (filter) {
21756 var guiFromFilter = filter.getGui();
21757 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(guiFromFilter)) {
21758 console.warn("AG Grid: getGui method from filter returned " + guiFromFilter + ", it should be a DOM element or an HTML template string.");
21759 }
21760 // for backwards compatibility with Angular 1 - we
21761 // used to allow providing back HTML from getGui().
21762 // once we move away from supporting Angular 1
21763 // directly, we can change this.
21764 if (typeof guiFromFilter === 'string') {
21765 guiFromFilter = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_9__["loadTemplate"])(guiFromFilter);
21766 }
21767 eFilterGui.appendChild(guiFromFilter);
21768 resolve(eFilterGui);
21769 _this.eventService.dispatchEvent({
21770 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_FILTER_OPENED,
21771 column: filterWrapper.column,
21772 source: source,
21773 eGui: eFilterGui,
21774 api: _this.gridApi,
21775 columnApi: _this.columnApi
21776 });
21777 });
21778 });
21779 };
21780 FilterManager.prototype.onColumnsChanged = function () {
21781 var _this = this;
21782 var columns = [];
21783 this.allColumnFilters.forEach(function (wrapper, colId) {
21784 var currentColumn;
21785 if (wrapper.column.isPrimary()) {
21786 currentColumn = _this.columnModel.getPrimaryColumn(colId);
21787 }
21788 else {
21789 currentColumn = _this.columnModel.getGridColumn(colId);
21790 }
21791 if (currentColumn) {
21792 return;
21793 }
21794 columns.push(wrapper.column);
21795 _this.disposeFilterWrapper(wrapper, 'filterDestroyed');
21796 });
21797 if (columns.length > 0) {
21798 this.onFilterChanged({ columns: columns });
21799 }
21800 };
21801 // destroys the filter, so it not longer takes part
21802 FilterManager.prototype.destroyFilter = function (column, source) {
21803 if (source === void 0) { source = 'api'; }
21804 var filterWrapper = this.allColumnFilters.get(column.getColId());
21805 if (filterWrapper) {
21806 this.disposeFilterWrapper(filterWrapper, source);
21807 this.onFilterChanged({ columns: [column] });
21808 }
21809 };
21810 FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {
21811 var _this = this;
21812 filterWrapper.filterPromise.then(function (filter) {
21813 (filter.setModel(null) || _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"].resolve()).then(function () {
21814 _this.getContext().destroyBean(filter);
21815 filterWrapper.column.setFilterActive(false, source);
21816 _this.allColumnFilters.delete(filterWrapper.column.getColId());
21817 });
21818 });
21819 };
21820 FilterManager.prototype.destroy = function () {
21821 var _this = this;
21822 _super.prototype.destroy.call(this);
21823 this.allColumnFilters.forEach(function (filterWrapper) { return _this.disposeFilterWrapper(filterWrapper, 'filterDestroyed'); });
21824 };
21825 var FilterManager_1;
21826 FilterManager.QUICK_FILTER_SEPARATOR = '\n';
21827 __decorate([
21828 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('valueService')
21829 ], FilterManager.prototype, "valueService", void 0);
21830 __decorate([
21831 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
21832 ], FilterManager.prototype, "columnModel", void 0);
21833 __decorate([
21834 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowModel')
21835 ], FilterManager.prototype, "rowModel", void 0);
21836 __decorate([
21837 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
21838 ], FilterManager.prototype, "columnApi", void 0);
21839 __decorate([
21840 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
21841 ], FilterManager.prototype, "gridApi", void 0);
21842 __decorate([
21843 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
21844 ], FilterManager.prototype, "userComponentFactory", void 0);
21845 __decorate([
21846 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
21847 ], FilterManager.prototype, "rowRenderer", void 0);
21848 __decorate([
21849 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
21850 ], FilterManager.prototype, "init", null);
21851 __decorate([
21852 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
21853 ], FilterManager.prototype, "destroy", null);
21854 FilterManager = FilterManager_1 = __decorate([
21855 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('filterManager')
21856 ], FilterManager);
21857 return FilterManager;
21858}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
21859
21860
21861
21862
21863
21864/***/ }),
21865/* 108 */
21866/***/ (function(module, __webpack_exports__, __webpack_require__) {
21867
21868"use strict";
21869__webpack_require__.r(__webpack_exports__);
21870/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellComp", function() { return HeaderFilterCellComp; });
21871/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
21872/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
21873/* harmony import */ var _abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(109);
21874/**
21875 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
21876 * @version v27.3.0
21877 * @link https://www.ag-grid.com/
21878 * @license MIT
21879 */
21880var __extends = (undefined && undefined.__extends) || (function () {
21881 var extendStatics = function (d, b) {
21882 extendStatics = Object.setPrototypeOf ||
21883 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
21884 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
21885 return extendStatics(d, b);
21886 };
21887 return function (d, b) {
21888 extendStatics(d, b);
21889 function __() { this.constructor = d; }
21890 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
21891 };
21892})();
21893var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
21894 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
21895 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21896 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;
21897 return c > 3 && r && Object.defineProperty(target, key, r), r;
21898};
21899
21900
21901
21902var HeaderFilterCellComp = /** @class */ (function (_super) {
21903 __extends(HeaderFilterCellComp, _super);
21904 function HeaderFilterCellComp(ctrl) {
21905 return _super.call(this, HeaderFilterCellComp.TEMPLATE, ctrl) || this;
21906 }
21907 HeaderFilterCellComp.prototype.postConstruct = function () {
21908 var _this = this;
21909 var eGui = this.getGui();
21910 var compProxy = {
21911 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
21912 addOrRemoveBodyCssClass: function (cssClassName, on) { return _this.eFloatingFilterBody.classList.toggle(cssClassName, on); },
21913 addOrRemoveButtonWrapperCssClass: function (cssClassName, on) { return _this.eButtonWrapper.classList.toggle(cssClassName, on); },
21914 setCompDetails: function (compDetails) { return _this.setCompDetails(compDetails); },
21915 getFloatingFilterComp: function () { return _this.compPromise; },
21916 setWidth: function (width) { return eGui.style.width = width; },
21917 setMenuIcon: function (eIcon) { return _this.eButtonShowMainFilter.appendChild(eIcon); }
21918 };
21919 this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody);
21920 };
21921 HeaderFilterCellComp.prototype.setCompDetails = function (compDetails) {
21922 var _this = this;
21923 // because we are providing defaultFloatingFilterType, we know it will never be undefined;
21924 this.compPromise = compDetails.newAgStackInstance();
21925 this.compPromise.then(function (comp) { return _this.afterCompCreated(comp); });
21926 };
21927 HeaderFilterCellComp.prototype.afterCompCreated = function (comp) {
21928 var _this = this;
21929 if (!comp) {
21930 return;
21931 }
21932 this.addDestroyFunc(function () { return _this.context.destroyBean(comp); });
21933 if (!this.isAlive()) {
21934 return;
21935 }
21936 this.eFloatingFilterBody.appendChild(comp.getGui());
21937 if (comp.afterGuiAttached) {
21938 comp.afterGuiAttached();
21939 }
21940 };
21941 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>";
21942 __decorate([
21943 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eFloatingFilterBody')
21944 ], HeaderFilterCellComp.prototype, "eFloatingFilterBody", void 0);
21945 __decorate([
21946 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eButtonWrapper')
21947 ], HeaderFilterCellComp.prototype, "eButtonWrapper", void 0);
21948 __decorate([
21949 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eButtonShowMainFilter')
21950 ], HeaderFilterCellComp.prototype, "eButtonShowMainFilter", void 0);
21951 __decorate([
21952 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
21953 ], HeaderFilterCellComp.prototype, "postConstruct", null);
21954 return HeaderFilterCellComp;
21955}(_abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_2__["AbstractHeaderCellComp"]));
21956
21957
21958
21959
21960
21961/***/ }),
21962/* 109 */
21963/***/ (function(module, __webpack_exports__, __webpack_require__) {
21964
21965"use strict";
21966__webpack_require__.r(__webpack_exports__);
21967/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractHeaderCellComp", function() { return AbstractHeaderCellComp; });
21968/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
21969/**
21970 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
21971 * @version v27.3.0
21972 * @link https://www.ag-grid.com/
21973 * @license MIT
21974 */
21975var __extends = (undefined && undefined.__extends) || (function () {
21976 var extendStatics = function (d, b) {
21977 extendStatics = Object.setPrototypeOf ||
21978 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
21979 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
21980 return extendStatics(d, b);
21981 };
21982 return function (d, b) {
21983 extendStatics(d, b);
21984 function __() { this.constructor = d; }
21985 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
21986 };
21987})();
21988
21989var AbstractHeaderCellComp = /** @class */ (function (_super) {
21990 __extends(AbstractHeaderCellComp, _super);
21991 function AbstractHeaderCellComp(template, ctrl) {
21992 var _this = _super.call(this, template) || this;
21993 _this.ctrl = ctrl;
21994 return _this;
21995 }
21996 AbstractHeaderCellComp.prototype.getCtrl = function () {
21997 return this.ctrl;
21998 };
21999 return AbstractHeaderCellComp;
22000}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
22001
22002
22003
22004
22005
22006/***/ }),
22007/* 110 */
22008/***/ (function(module, __webpack_exports__, __webpack_require__) {
22009
22010"use strict";
22011__webpack_require__.r(__webpack_exports__);
22012/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridBodyComp", function() { return GridBodyComp; });
22013/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
22014/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(111);
22015/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
22016/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36);
22017/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(57);
22018/* harmony import */ var _gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(114);
22019/* harmony import */ var _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(118);
22020/**
22021 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
22022 * @version v27.3.0
22023 * @link https://www.ag-grid.com/
22024 * @license MIT
22025 */
22026var __extends = (undefined && undefined.__extends) || (function () {
22027 var extendStatics = function (d, b) {
22028 extendStatics = Object.setPrototypeOf ||
22029 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
22030 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
22031 return extendStatics(d, b);
22032 };
22033 return function (d, b) {
22034 extendStatics(d, b);
22035 function __() { this.constructor = d; }
22036 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
22037 };
22038})();
22039var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
22040 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22041 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
22042 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;
22043 return c > 3 && r && Object.defineProperty(target, key, r), r;
22044};
22045
22046
22047
22048
22049
22050
22051
22052var 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>";
22053var GridBodyComp = /** @class */ (function (_super) {
22054 __extends(GridBodyComp, _super);
22055 function GridBodyComp() {
22056 return _super.call(this, GRID_BODY_TEMPLATE) || this;
22057 }
22058 GridBodyComp.prototype.init = function () {
22059 var _this = this;
22060 var setHeight = function (height, element) {
22061 var heightString = height + "px";
22062 element.style.minHeight = heightString;
22063 element.style.height = heightString;
22064 };
22065 var compProxy = {
22066 setRowAnimationCssOnBodyViewport: function (cssClass, animate) { return _this.setRowAnimationCssOnBodyViewport(cssClass, animate); },
22067 setColumnCount: function (count) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaColCount"])(_this.getGui(), count); },
22068 setRowCount: function (count) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaRowCount"])(_this.getGui(), count); },
22069 setTopHeight: function (height) { return setHeight(height, _this.eTop); },
22070 setBottomHeight: function (height) { return setHeight(height, _this.eBottom); },
22071 setTopDisplay: function (display) { return _this.eTop.style.display = display; },
22072 setBottomDisplay: function (display) { return _this.eBottom.style.display = display; },
22073 setColumnMovingCss: function (cssClass, flag) { return _this.addOrRemoveCssClass(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["CSS_CLASS_COLUMN_MOVING"], flag); },
22074 updateLayoutClasses: function (cssClass, params) {
22075 var bodyViewportClassList = _this.eBodyViewport.classList;
22076 bodyViewportClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
22077 bodyViewportClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].NORMAL, params.normal);
22078 bodyViewportClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].PRINT, params.print);
22079 _this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
22080 _this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].NORMAL, params.normal);
22081 _this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].PRINT, params.print);
22082 },
22083 setAlwaysVerticalScrollClass: function (cssClass, on) {
22084 return _this.eBodyViewport.classList.toggle(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["CSS_CLASS_FORCE_VERTICAL_SCROLL"], on);
22085 },
22086 registerBodyViewportResizeListener: function (listener) {
22087 var unsubscribeFromResize = _this.resizeObserverService.observeResize(_this.eBodyViewport, listener);
22088 _this.addDestroyFunc(function () { return unsubscribeFromResize(); });
22089 },
22090 setPinnedTopBottomOverflowY: function (overflow) { return _this.eTop.style.overflowY = _this.eBottom.style.overflowY = overflow; },
22091 setCellSelectableCss: function (cssClass, selectable) {
22092 [_this.eTop, _this.eBodyViewport, _this.eBottom]
22093 .forEach(function (ct) { return ct.classList.toggle(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["CSS_CLASS_CELL_SELECTABLE"], selectable); });
22094 },
22095 };
22096 this.ctrl = this.createManagedBean(new _gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["GridBodyCtrl"]());
22097 this.ctrl.setComp(compProxy, this.getGui(), this.eBodyViewport, this.eTop, this.eBottom);
22098 if (this.rangeService || this.gridOptionsWrapper.isRowSelectionMulti()) {
22099 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaMultiSelectable"])(this.getGui(), true);
22100 }
22101 };
22102 GridBodyComp.prototype.setRowAnimationCssOnBodyViewport = function (cssClass, animateRows) {
22103 var bodyViewportClassList = this.eBodyViewport.classList;
22104 bodyViewportClassList.toggle(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["RowAnimationCssClasses"].ANIMATION_ON, animateRows);
22105 bodyViewportClassList.toggle(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["RowAnimationCssClasses"].ANIMATION_OFF, !animateRows);
22106 };
22107 GridBodyComp.prototype.getFloatingTopBottom = function () {
22108 return [this.eTop, this.eBottom];
22109 };
22110 __decorate([
22111 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('resizeObserverService')
22112 ], GridBodyComp.prototype, "resizeObserverService", void 0);
22113 __decorate([
22114 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('rangeService')
22115 ], GridBodyComp.prototype, "rangeService", void 0);
22116 __decorate([
22117 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__["RefSelector"])('eBodyViewport')
22118 ], GridBodyComp.prototype, "eBodyViewport", void 0);
22119 __decorate([
22120 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__["RefSelector"])('eTop')
22121 ], GridBodyComp.prototype, "eTop", void 0);
22122 __decorate([
22123 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__["RefSelector"])('eBottom')
22124 ], GridBodyComp.prototype, "eBottom", void 0);
22125 __decorate([
22126 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__["RefSelector"])('gridHeader')
22127 ], GridBodyComp.prototype, "headerRootComp", void 0);
22128 __decorate([
22129 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
22130 ], GridBodyComp.prototype, "init", null);
22131 return GridBodyComp;
22132}(_widgets_component__WEBPACK_IMPORTED_MODULE_3__["Component"]));
22133
22134
22135
22136
22137
22138/***/ }),
22139/* 111 */
22140/***/ (function(module, __webpack_exports__, __webpack_require__) {
22141
22142"use strict";
22143__webpack_require__.r(__webpack_exports__);
22144/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LayoutCssClasses", function() { return LayoutCssClasses; });
22145/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LayoutFeature", function() { return LayoutFeature; });
22146/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
22147/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
22148/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112);
22149/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
22150/**
22151 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
22152 * @version v27.3.0
22153 * @link https://www.ag-grid.com/
22154 * @license MIT
22155 */
22156var __extends = (undefined && undefined.__extends) || (function () {
22157 var extendStatics = function (d, b) {
22158 extendStatics = Object.setPrototypeOf ||
22159 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
22160 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
22161 return extendStatics(d, b);
22162 };
22163 return function (d, b) {
22164 extendStatics(d, b);
22165 function __() { this.constructor = d; }
22166 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
22167 };
22168})();
22169var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
22170 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22171 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
22172 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;
22173 return c > 3 && r && Object.defineProperty(target, key, r), r;
22174};
22175
22176
22177
22178
22179var LayoutCssClasses;
22180(function (LayoutCssClasses) {
22181 LayoutCssClasses["AUTO_HEIGHT"] = "ag-layout-auto-height";
22182 LayoutCssClasses["NORMAL"] = "ag-layout-normal";
22183 LayoutCssClasses["PRINT"] = "ag-layout-print";
22184})(LayoutCssClasses || (LayoutCssClasses = {}));
22185var LayoutFeature = /** @class */ (function (_super) {
22186 __extends(LayoutFeature, _super);
22187 function LayoutFeature(view) {
22188 var _this = _super.call(this) || this;
22189 _this.view = view;
22190 return _this;
22191 }
22192 LayoutFeature.prototype.postConstruct = function () {
22193 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__["GridOptionsWrapper"].PROP_DOM_LAYOUT, this.updateLayoutClasses.bind(this));
22194 this.updateLayoutClasses();
22195 };
22196 LayoutFeature.prototype.updateLayoutClasses = function () {
22197 var domLayout = this.gridOptionsWrapper.getDomLayout();
22198 var params = {
22199 autoHeight: domLayout === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_AUTO_HEIGHT,
22200 normal: domLayout === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_NORMAL,
22201 print: domLayout === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_PRINT
22202 };
22203 var cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT :
22204 params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;
22205 this.view.updateLayoutClasses(cssClass, params);
22206 };
22207 __decorate([
22208 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
22209 ], LayoutFeature.prototype, "gridOptionsWrapper", void 0);
22210 __decorate([
22211 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
22212 ], LayoutFeature.prototype, "postConstruct", null);
22213 return LayoutFeature;
22214}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
22215
22216
22217
22218
22219
22220/***/ }),
22221/* 112 */
22222/***/ (function(module, __webpack_exports__, __webpack_require__) {
22223
22224"use strict";
22225__webpack_require__.r(__webpack_exports__);
22226/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridOptionsWrapper", function() { return GridOptionsWrapper; });
22227/* harmony import */ var _components_colDefUtil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33);
22228/* harmony import */ var _components_componentUtil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
22229/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
22230/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
22231/* harmony import */ var _entities_sideBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(113);
22232/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24);
22233/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(11);
22234/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16);
22235/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(17);
22236/* harmony import */ var _propertyKeys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(31);
22237/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(43);
22238/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(14);
22239/* harmony import */ var _utils_fuzzyMatch__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(47);
22240/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7);
22241/* harmony import */ var _utils_number__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(46);
22242/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(13);
22243/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(26);
22244/**
22245 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
22246 * @version v27.3.0
22247 * @link https://www.ag-grid.com/
22248 * @license MIT
22249 */
22250var __assign = (undefined && undefined.__assign) || function () {
22251 __assign = Object.assign || function(t) {
22252 for (var s, i = 1, n = arguments.length; i < n; i++) {
22253 s = arguments[i];
22254 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22255 t[p] = s[p];
22256 }
22257 return t;
22258 };
22259 return __assign.apply(this, arguments);
22260};
22261var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
22262 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22263 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
22264 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;
22265 return c > 3 && r && Object.defineProperty(target, key, r), r;
22266};
22267var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
22268 return function (target, key) { decorator(target, key, paramIndex); }
22269};
22270var __read = (undefined && undefined.__read) || function (o, n) {
22271 var m = typeof Symbol === "function" && o[Symbol.iterator];
22272 if (!m) return o;
22273 var i = m.call(o), r, ar = [], e;
22274 try {
22275 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22276 }
22277 catch (error) { e = { error: error }; }
22278 finally {
22279 try {
22280 if (r && !r.done && (m = i["return"])) m.call(i);
22281 }
22282 finally { if (e) throw e.error; }
22283 }
22284 return ar;
22285};
22286var __spread = (undefined && undefined.__spread) || function () {
22287 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
22288 return ar;
22289};
22290
22291
22292
22293
22294
22295
22296
22297
22298
22299
22300
22301
22302
22303
22304
22305
22306
22307var DEFAULT_ROW_HEIGHT = 25;
22308var DEFAULT_DETAIL_ROW_HEIGHT = 300;
22309var DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;
22310var DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;
22311var DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;
22312function isTrue(value) {
22313 return value === true || value === 'true';
22314}
22315function toNumber(value) {
22316 if (typeof value == 'number') {
22317 return value;
22318 }
22319 if (typeof value == 'string') {
22320 return parseInt(value, 10);
22321 }
22322}
22323function zeroOrGreater(value, defaultValue) {
22324 if (value >= 0) {
22325 return value;
22326 }
22327 // zero gets returned if number is missing or the wrong type
22328 return defaultValue;
22329}
22330function oneOrGreater(value, defaultValue) {
22331 var valueNumber = parseInt(value, 10);
22332 if (Object(_utils_number__WEBPACK_IMPORTED_MODULE_14__["isNumeric"])(valueNumber) && valueNumber > 0) {
22333 return valueNumber;
22334 }
22335 return defaultValue;
22336}
22337var GridOptionsWrapper = /** @class */ (function () {
22338 function GridOptionsWrapper() {
22339 this.propertyEventService = new _eventService__WEBPACK_IMPORTED_MODULE_6__["EventService"]();
22340 this.domDataKey = '__AG_' + Math.random().toString();
22341 this.destroyed = false;
22342 }
22343 GridOptionsWrapper_1 = GridOptionsWrapper;
22344 GridOptionsWrapper.prototype.agWire = function (gridApi, columnApi) {
22345 this.gridOptions.api = gridApi;
22346 this.gridOptions.columnApi = columnApi;
22347 this.checkForDeprecated();
22348 this.checkForViolations();
22349 };
22350 GridOptionsWrapper.prototype.destroy = function () {
22351 // need to remove these, as we don't own the lifecycle of the gridOptions, we need to
22352 // remove the references in case the user keeps the grid options, we want the rest
22353 // of the grid to be picked up by the garbage collector
22354 this.gridOptions.api = null;
22355 this.gridOptions.columnApi = null;
22356 this.destroyed = true;
22357 };
22358 GridOptionsWrapper.prototype.init = function () {
22359 var _this = this;
22360 if (this.gridOptions.suppressPropertyNamesCheck !== true) {
22361 this.checkGridOptionsProperties();
22362 this.checkColumnDefProperties();
22363 }
22364 // parse side bar options into correct format
22365 if (this.gridOptions.sideBar != null) {
22366 this.gridOptions.sideBar = _entities_sideBar__WEBPACK_IMPORTED_MODULE_4__["SideBarDefParser"].parse(this.gridOptions.sideBar);
22367 }
22368 var async = this.useAsyncEvents();
22369 this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);
22370 if (this.isGroupSelectsChildren() && this.isSuppressParentsInRowNodes()) {
22371 console.warn("AG Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work");
22372 }
22373 if (this.isGroupSelectsChildren()) {
22374 if (!this.isRowSelectionMulti()) {
22375 console.warn("AG Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense");
22376 }
22377 if (this.isRowModelServerSide()) {
22378 console.warn('AG Grid: group selects children is NOT support for Server Side Row Model. ' +
22379 'This is because the rows are lazy loaded, so selecting a group is not possible as' +
22380 'the grid has no way of knowing what the children are.');
22381 }
22382 }
22383 if (this.isGroupRemoveSingleChildren() && this.isGroupHideOpenParents()) {
22384 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!");
22385 }
22386 if (this.isRowModelServerSide()) {
22387 var msg = function (prop) { return "AG Grid: '" + prop + "' is not supported on the Server-Side Row Model"; };
22388 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.groupDefaultExpanded)) {
22389 console.warn(msg('groupDefaultExpanded'));
22390 }
22391 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.groupDefaultExpanded)) {
22392 console.warn(msg('groupIncludeFooter'));
22393 }
22394 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.groupDefaultExpanded)) {
22395 console.warn(msg('groupIncludeTotalFooter'));
22396 }
22397 }
22398 if (this.isEnableRangeSelection()) {
22399 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].RangeSelectionModule, 'enableRangeSelection');
22400 }
22401 if (!this.isEnableRangeSelection() && (this.isEnableRangeHandle() || this.isEnableFillHandle())) {
22402 console.warn("AG Grid: 'enableRangeHandle' and 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true");
22403 }
22404 var warnOfDeprecaredIcon = function (name) {
22405 if (_this.gridOptions.icons && _this.gridOptions.icons[name]) {
22406 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/");
22407 }
22408 };
22409 warnOfDeprecaredIcon('radioButtonOff');
22410 warnOfDeprecaredIcon('radioButtonOn');
22411 warnOfDeprecaredIcon('checkboxChecked');
22412 warnOfDeprecaredIcon('checkboxUnchecked');
22413 warnOfDeprecaredIcon('checkboxIndeterminate');
22414 // sets an initial calculation for the scrollbar width
22415 this.getScrollbarWidth();
22416 };
22417 GridOptionsWrapper.prototype.checkColumnDefProperties = function () {
22418 var _this = this;
22419 if (this.gridOptions.columnDefs == null) {
22420 return;
22421 }
22422 this.gridOptions.columnDefs.forEach(function (colDef) {
22423 var userProperties = Object.getOwnPropertyNames(colDef);
22424 var validProperties = __spread(_components_colDefUtil__WEBPACK_IMPORTED_MODULE_0__["ColDefUtil"].ALL_PROPERTIES, _components_colDefUtil__WEBPACK_IMPORTED_MODULE_0__["ColDefUtil"].FRAMEWORK_PROPERTIES);
22425 _this.checkProperties(userProperties, validProperties, validProperties, 'colDef', 'https://www.ag-grid.com/javascript-grid-column-properties/');
22426 });
22427 };
22428 GridOptionsWrapper.prototype.checkGridOptionsProperties = function () {
22429 var userProperties = Object.getOwnPropertyNames(this.gridOptions);
22430 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); }));
22431 var validPropertiesAndExceptions = __spread(validProperties, ['api', 'columnApi']);
22432 this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-data-grid/grid-options/');
22433 };
22434 GridOptionsWrapper.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {
22435 var invalidProperties = Object(_utils_fuzzyMatch__WEBPACK_IMPORTED_MODULE_12__["fuzzyCheckStrings"])(userProperties, validPropertiesAndExceptions, validProperties);
22436 Object(_utils_object__WEBPACK_IMPORTED_MODULE_15__["iterateObject"])(invalidProperties, function (key, value) {
22437 console.warn("ag-grid: invalid " + containerName + " property '" + key + "' did you mean any of these: " + value.slice(0, 8).join(", "));
22438 });
22439 if (Object.keys(invalidProperties).length > 0) {
22440 console.warn("ag-grid: to see all the valid " + containerName + " properties please check: " + docsUrl);
22441 }
22442 };
22443 /**
22444 * Wrap the user callback and attach the api, columnApi and context to the params object on the way through.
22445 * @param callback User provided callback
22446 * @returns Wrapped callback where the params object not require api, columnApi and context
22447 */
22448 GridOptionsWrapper.prototype.mergeGridCommonParams = function (callback) {
22449 var _this = this;
22450 if (callback) {
22451 var wrapped = function (callbackParams) {
22452 var mergedParams = __assign(__assign({}, callbackParams), { api: _this.getApi(), columnApi: _this.getColumnApi(), context: _this.getContext() });
22453 return callback(mergedParams);
22454 };
22455 return wrapped;
22456 }
22457 return callback;
22458 };
22459 GridOptionsWrapper.prototype.getDomDataKey = function () {
22460 return this.domDataKey;
22461 };
22462 // returns the dom data, or undefined if not found
22463 GridOptionsWrapper.prototype.getDomData = function (element, key) {
22464 var domData = element[this.getDomDataKey()];
22465 return domData ? domData[key] : undefined;
22466 };
22467 GridOptionsWrapper.prototype.setDomData = function (element, key, value) {
22468 var domDataKey = this.getDomDataKey();
22469 var domData = element[domDataKey];
22470 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(domData)) {
22471 domData = {};
22472 element[domDataKey] = domData;
22473 }
22474 domData[key] = value;
22475 };
22476 GridOptionsWrapper.prototype.isRowSelection = function () {
22477 return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';
22478 };
22479 GridOptionsWrapper.prototype.isSuppressRowDeselection = function () {
22480 return isTrue(this.gridOptions.suppressRowDeselection);
22481 };
22482 GridOptionsWrapper.prototype.isRowSelectionMulti = function () {
22483 return this.gridOptions.rowSelection === 'multiple';
22484 };
22485 GridOptionsWrapper.prototype.isRowMultiSelectWithClick = function () {
22486 return isTrue(this.gridOptions.rowMultiSelectWithClick);
22487 };
22488 GridOptionsWrapper.prototype.getContext = function () {
22489 return this.gridOptions.context;
22490 };
22491 GridOptionsWrapper.prototype.isPivotMode = function () {
22492 return isTrue(this.gridOptions.pivotMode);
22493 };
22494 GridOptionsWrapper.prototype.isSuppressExpandablePivotGroups = function () {
22495 return isTrue(this.gridOptions.suppressExpandablePivotGroups);
22496 };
22497 GridOptionsWrapper.prototype.getPivotColumnGroupTotals = function () {
22498 return this.gridOptions.pivotColumnGroupTotals;
22499 };
22500 GridOptionsWrapper.prototype.getPivotRowTotals = function () {
22501 return this.gridOptions.pivotRowTotals;
22502 };
22503 GridOptionsWrapper.prototype.isRowModelInfinite = function () {
22504 return this.gridOptions.rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_MODEL_TYPE_INFINITE;
22505 };
22506 GridOptionsWrapper.prototype.isRowModelViewport = function () {
22507 return this.gridOptions.rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_MODEL_TYPE_VIEWPORT;
22508 };
22509 GridOptionsWrapper.prototype.isRowModelServerSide = function () {
22510 return this.gridOptions.rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE;
22511 };
22512 GridOptionsWrapper.prototype.isRowModelDefault = function () {
22513 return (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.gridOptions.rowModelType) ||
22514 this.gridOptions.rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE);
22515 };
22516 GridOptionsWrapper.prototype.isFullRowEdit = function () {
22517 return this.gridOptions.editType === 'fullRow';
22518 };
22519 GridOptionsWrapper.prototype.isSuppressFocusAfterRefresh = function () {
22520 return isTrue(this.gridOptions.suppressFocusAfterRefresh);
22521 };
22522 GridOptionsWrapper.prototype.isSuppressBrowserResizeObserver = function () {
22523 return isTrue(this.gridOptions.suppressBrowserResizeObserver);
22524 };
22525 GridOptionsWrapper.prototype.isSuppressMaintainUnsortedOrder = function () {
22526 return isTrue(this.gridOptions.suppressMaintainUnsortedOrder);
22527 };
22528 GridOptionsWrapper.prototype.isSuppressClearOnFillReduction = function () {
22529 return isTrue(this.gridOptions.suppressClearOnFillReduction);
22530 };
22531 GridOptionsWrapper.prototype.isShowToolPanel = function () {
22532 return isTrue(this.gridOptions.sideBar && Array.isArray(this.getSideBar().toolPanels));
22533 };
22534 GridOptionsWrapper.prototype.getSideBar = function () {
22535 return this.gridOptions.sideBar;
22536 };
22537 GridOptionsWrapper.prototype.isSuppressTouch = function () {
22538 return isTrue(this.gridOptions.suppressTouch);
22539 };
22540 GridOptionsWrapper.prototype.isMaintainColumnOrder = function () {
22541 return isTrue(this.gridOptions.maintainColumnOrder);
22542 };
22543 GridOptionsWrapper.prototype.isSuppressRowTransform = function () {
22544 return isTrue(this.gridOptions.suppressRowTransform);
22545 };
22546 GridOptionsWrapper.prototype.isSuppressColumnStateEvents = function () {
22547 return isTrue(this.gridOptions.suppressColumnStateEvents);
22548 };
22549 GridOptionsWrapper.prototype.isAllowDragFromColumnsToolPanel = function () {
22550 return isTrue(this.gridOptions.allowDragFromColumnsToolPanel);
22551 };
22552 GridOptionsWrapper.prototype.useAsyncEvents = function () {
22553 return !isTrue(this.gridOptions.suppressAsyncEvents);
22554 };
22555 GridOptionsWrapper.prototype.isEnableCellChangeFlash = function () {
22556 return isTrue(this.gridOptions.enableCellChangeFlash);
22557 };
22558 GridOptionsWrapper.prototype.getCellFlashDelay = function () {
22559 return this.gridOptions.cellFlashDelay || 500;
22560 };
22561 GridOptionsWrapper.prototype.getCellFadeDelay = function () {
22562 return this.gridOptions.cellFadeDelay || 1000;
22563 };
22564 GridOptionsWrapper.prototype.isGroupSelectsChildren = function () {
22565 return isTrue(this.gridOptions.groupSelectsChildren);
22566 };
22567 GridOptionsWrapper.prototype.isSuppressRowHoverHighlight = function () {
22568 return isTrue(this.gridOptions.suppressRowHoverHighlight);
22569 };
22570 GridOptionsWrapper.prototype.isColumnHoverHighlight = function () {
22571 return isTrue(this.gridOptions.columnHoverHighlight);
22572 };
22573 GridOptionsWrapper.prototype.isGroupSelectsFiltered = function () {
22574 return isTrue(this.gridOptions.groupSelectsFiltered);
22575 };
22576 GridOptionsWrapper.prototype.isGroupHideOpenParents = function () {
22577 return isTrue(this.gridOptions.groupHideOpenParents);
22578 };
22579 GridOptionsWrapper.prototype.isGroupMaintainOrder = function () {
22580 return isTrue(this.gridOptions.groupMaintainOrder);
22581 };
22582 GridOptionsWrapper.prototype.getAutoGroupColumnDef = function () {
22583 return this.gridOptions.autoGroupColumnDef;
22584 };
22585 GridOptionsWrapper.prototype.isGroupMultiAutoColumn = function () {
22586 if (this.gridOptions.groupDisplayType) {
22587 return this.matchesGroupDisplayType('multipleColumns', this.gridOptions.groupDisplayType);
22588 }
22589 // if we are doing hideOpenParents we also show multiple columns, otherwise hideOpenParents would not work
22590 return isTrue(this.gridOptions.groupHideOpenParents);
22591 };
22592 GridOptionsWrapper.prototype.isGroupUseEntireRow = function (pivotMode) {
22593 // we never allow groupUseEntireRow if in pivot mode, otherwise we won't see the pivot values.
22594 if (pivotMode) {
22595 return false;
22596 }
22597 return this.gridOptions.groupDisplayType ?
22598 this.matchesGroupDisplayType('groupRows', this.gridOptions.groupDisplayType) : false;
22599 };
22600 GridOptionsWrapper.prototype.isGroupSuppressAutoColumn = function () {
22601 var isCustomRowGroups = this.gridOptions.groupDisplayType ?
22602 this.matchesGroupDisplayType('custom', this.gridOptions.groupDisplayType) : false;
22603 if (isCustomRowGroups) {
22604 return true;
22605 }
22606 return this.gridOptions.treeDataDisplayType ?
22607 this.matchesTreeDataDisplayType('custom', this.gridOptions.treeDataDisplayType) : false;
22608 };
22609 GridOptionsWrapper.prototype.isGroupRemoveSingleChildren = function () {
22610 return isTrue(this.gridOptions.groupRemoveSingleChildren);
22611 };
22612 GridOptionsWrapper.prototype.isGroupRemoveLowestSingleChildren = function () {
22613 return isTrue(this.gridOptions.groupRemoveLowestSingleChildren);
22614 };
22615 GridOptionsWrapper.prototype.isGroupIncludeFooter = function () {
22616 return isTrue(this.gridOptions.groupIncludeFooter);
22617 };
22618 GridOptionsWrapper.prototype.isGroupIncludeTotalFooter = function () {
22619 return isTrue(this.gridOptions.groupIncludeTotalFooter);
22620 };
22621 GridOptionsWrapper.prototype.isGroupSuppressBlankHeader = function () {
22622 return isTrue(this.gridOptions.groupSuppressBlankHeader);
22623 };
22624 GridOptionsWrapper.prototype.isSuppressRowClickSelection = function () {
22625 return isTrue(this.gridOptions.suppressRowClickSelection);
22626 };
22627 GridOptionsWrapper.prototype.isSuppressCellFocus = function () {
22628 return isTrue(this.gridOptions.suppressCellFocus);
22629 };
22630 GridOptionsWrapper.prototype.isSuppressMultiSort = function () {
22631 return isTrue(this.gridOptions.suppressMultiSort);
22632 };
22633 GridOptionsWrapper.prototype.isAlwaysMultiSort = function () {
22634 return isTrue(this.gridOptions.alwaysMultiSort);
22635 };
22636 GridOptionsWrapper.prototype.isMultiSortKeyCtrl = function () {
22637 return this.gridOptions.multiSortKey === 'ctrl';
22638 };
22639 GridOptionsWrapper.prototype.isPivotSuppressAutoColumn = function () {
22640 return isTrue(this.gridOptions.pivotSuppressAutoColumn);
22641 };
22642 GridOptionsWrapper.prototype.isSuppressDragLeaveHidesColumns = function () {
22643 return isTrue(this.gridOptions.suppressDragLeaveHidesColumns);
22644 };
22645 GridOptionsWrapper.prototype.isSuppressScrollOnNewData = function () {
22646 return isTrue(this.gridOptions.suppressScrollOnNewData);
22647 };
22648 GridOptionsWrapper.prototype.isSuppressScrollWhenPopupsAreOpen = function () {
22649 return isTrue(this.gridOptions.suppressScrollWhenPopupsAreOpen);
22650 };
22651 GridOptionsWrapper.prototype.isRowDragEntireRow = function () {
22652 return isTrue(this.gridOptions.rowDragEntireRow);
22653 };
22654 GridOptionsWrapper.prototype.isSuppressRowDrag = function () {
22655 return isTrue(this.gridOptions.suppressRowDrag);
22656 };
22657 GridOptionsWrapper.prototype.isRowDragManaged = function () {
22658 return isTrue(this.gridOptions.rowDragManaged);
22659 };
22660 GridOptionsWrapper.prototype.isSuppressMoveWhenRowDragging = function () {
22661 return isTrue(this.gridOptions.suppressMoveWhenRowDragging);
22662 };
22663 GridOptionsWrapper.prototype.isRowDragMultiRow = function () {
22664 return isTrue(this.gridOptions.rowDragMultiRow);
22665 };
22666 // returns either 'print', 'autoHeight' or 'normal' (normal is the default)
22667 GridOptionsWrapper.prototype.getDomLayout = function () {
22668 var domLayout = this.gridOptions.domLayout || _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL;
22669 var validLayouts = [
22670 _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_PRINT,
22671 _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_AUTO_HEIGHT,
22672 _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL
22673 ];
22674 if (validLayouts.indexOf(domLayout) === -1) {
22675 Object(_utils_function__WEBPACK_IMPORTED_MODULE_11__["doOnce"])(function () {
22676 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);
22677 }, 'warn about dom layout values');
22678 return _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL;
22679 }
22680 return domLayout;
22681 };
22682 GridOptionsWrapper.prototype.isSuppressHorizontalScroll = function () {
22683 return isTrue(this.gridOptions.suppressHorizontalScroll);
22684 };
22685 GridOptionsWrapper.prototype.isSuppressMaxRenderedRowRestriction = function () {
22686 return isTrue(this.gridOptions.suppressMaxRenderedRowRestriction);
22687 };
22688 GridOptionsWrapper.prototype.isExcludeChildrenWhenTreeDataFiltering = function () {
22689 return isTrue(this.gridOptions.excludeChildrenWhenTreeDataFiltering);
22690 };
22691 GridOptionsWrapper.prototype.isAlwaysShowHorizontalScroll = function () {
22692 return isTrue(this.gridOptions.alwaysShowHorizontalScroll);
22693 };
22694 GridOptionsWrapper.prototype.isAlwaysShowVerticalScroll = function () {
22695 return isTrue(this.gridOptions.alwaysShowVerticalScroll);
22696 };
22697 GridOptionsWrapper.prototype.isDebounceVerticalScrollbar = function () {
22698 return isTrue(this.gridOptions.debounceVerticalScrollbar);
22699 };
22700 GridOptionsWrapper.prototype.isSuppressLoadingOverlay = function () {
22701 return isTrue(this.gridOptions.suppressLoadingOverlay);
22702 };
22703 GridOptionsWrapper.prototype.isSuppressNoRowsOverlay = function () {
22704 return isTrue(this.gridOptions.suppressNoRowsOverlay);
22705 };
22706 GridOptionsWrapper.prototype.isSuppressFieldDotNotation = function () {
22707 return isTrue(this.gridOptions.suppressFieldDotNotation);
22708 };
22709 GridOptionsWrapper.prototype.getPinnedTopRowData = function () {
22710 return this.gridOptions.pinnedTopRowData;
22711 };
22712 GridOptionsWrapper.prototype.getPinnedBottomRowData = function () {
22713 return this.gridOptions.pinnedBottomRowData;
22714 };
22715 GridOptionsWrapper.prototype.isFunctionsPassive = function () {
22716 return isTrue(this.gridOptions.functionsPassive);
22717 };
22718 GridOptionsWrapper.prototype.isSuppressChangeDetection = function () {
22719 return isTrue(this.gridOptions.suppressChangeDetection);
22720 };
22721 GridOptionsWrapper.prototype.isSuppressAnimationFrame = function () {
22722 return isTrue(this.gridOptions.suppressAnimationFrame);
22723 };
22724 GridOptionsWrapper.prototype.getQuickFilterText = function () {
22725 return this.gridOptions.quickFilterText;
22726 };
22727 GridOptionsWrapper.prototype.isCacheQuickFilter = function () {
22728 return isTrue(this.gridOptions.cacheQuickFilter);
22729 };
22730 GridOptionsWrapper.prototype.isUnSortIcon = function () {
22731 return isTrue(this.gridOptions.unSortIcon);
22732 };
22733 GridOptionsWrapper.prototype.isSuppressMenuHide = function () {
22734 return isTrue(this.gridOptions.suppressMenuHide);
22735 };
22736 GridOptionsWrapper.prototype.isEnterMovesDownAfterEdit = function () {
22737 return isTrue(this.gridOptions.enterMovesDownAfterEdit);
22738 };
22739 GridOptionsWrapper.prototype.isEnterMovesDown = function () {
22740 return isTrue(this.gridOptions.enterMovesDown);
22741 };
22742 GridOptionsWrapper.prototype.isUndoRedoCellEditing = function () {
22743 return isTrue(this.gridOptions.undoRedoCellEditing);
22744 };
22745 GridOptionsWrapper.prototype.getUndoRedoCellEditingLimit = function () {
22746 return toNumber(this.gridOptions.undoRedoCellEditingLimit);
22747 };
22748 GridOptionsWrapper.prototype.getRowStyle = function () {
22749 return this.gridOptions.rowStyle;
22750 };
22751 GridOptionsWrapper.prototype.getRowClass = function () {
22752 return this.gridOptions.rowClass;
22753 };
22754 GridOptionsWrapper.prototype.getRowStyleFunc = function () {
22755 return this.mergeGridCommonParams(this.gridOptions.getRowStyle);
22756 };
22757 GridOptionsWrapper.prototype.getRowClassFunc = function () {
22758 return this.mergeGridCommonParams(this.gridOptions.getRowClass);
22759 };
22760 GridOptionsWrapper.prototype.rowClassRules = function () {
22761 return this.gridOptions.rowClassRules;
22762 };
22763 GridOptionsWrapper.prototype.getServerSideStoreType = function () {
22764 return this.gridOptions.serverSideStoreType;
22765 };
22766 GridOptionsWrapper.prototype.getServerSideStoreParamsFunc = function () {
22767 return this.mergeGridCommonParams(this.gridOptions.getServerSideStoreParams);
22768 };
22769 GridOptionsWrapper.prototype.getCreateChartContainerFunc = function () {
22770 return this.mergeGridCommonParams(this.gridOptions.createChartContainer);
22771 };
22772 GridOptionsWrapper.prototype.getPopupParent = function () {
22773 return this.gridOptions.popupParent;
22774 };
22775 GridOptionsWrapper.prototype.getBlockLoadDebounceMillis = function () {
22776 return this.gridOptions.blockLoadDebounceMillis;
22777 };
22778 GridOptionsWrapper.prototype.getPostProcessPopupFunc = function () {
22779 return this.mergeGridCommonParams(this.gridOptions.postProcessPopup);
22780 };
22781 GridOptionsWrapper.prototype.getPaginationNumberFormatterFunc = function () {
22782 return this.mergeGridCommonParams(this.gridOptions.paginationNumberFormatter);
22783 };
22784 GridOptionsWrapper.prototype.getChildCountFunc = function () {
22785 return this.gridOptions.getChildCount;
22786 };
22787 GridOptionsWrapper.prototype.getIsApplyServerSideTransactionFunc = function () {
22788 return this.mergeGridCommonParams(this.gridOptions.isApplyServerSideTransaction);
22789 };
22790 GridOptionsWrapper.prototype.getInitialGroupOrderComparator = function () {
22791 var _a = this.gridOptions, initialGroupOrderComparator = _a.initialGroupOrderComparator, defaultGroupOrderComparator = _a.defaultGroupOrderComparator;
22792 if (initialGroupOrderComparator) {
22793 return this.mergeGridCommonParams(initialGroupOrderComparator);
22794 }
22795 // this is the deprecated way, so provide a proxy to make it compatible
22796 if (defaultGroupOrderComparator) {
22797 return function (params) { return defaultGroupOrderComparator(params.nodeA, params.nodeB); };
22798 }
22799 };
22800 GridOptionsWrapper.prototype.getIsFullWidthCellFunc = function () {
22801 var _a = this.gridOptions, isFullWidthRow = _a.isFullWidthRow, isFullWidthCell = _a.isFullWidthCell;
22802 if (isFullWidthRow) {
22803 return this.mergeGridCommonParams(isFullWidthRow);
22804 }
22805 // this is the deprecated way, so provide a proxy to make it compatible
22806 if (isFullWidthCell) {
22807 return function (params) { return isFullWidthCell(params.rowNode); };
22808 }
22809 };
22810 GridOptionsWrapper.prototype.getFullWidthCellRendererParams = function () {
22811 return this.gridOptions.fullWidthCellRendererParams;
22812 };
22813 GridOptionsWrapper.prototype.isEmbedFullWidthRows = function () {
22814 return isTrue(this.gridOptions.embedFullWidthRows) || isTrue(this.gridOptions.deprecatedEmbedFullWidthRows);
22815 };
22816 GridOptionsWrapper.prototype.isDetailRowAutoHeight = function () {
22817 return isTrue(this.gridOptions.detailRowAutoHeight);
22818 };
22819 GridOptionsWrapper.prototype.getSuppressKeyboardEventFunc = function () {
22820 return this.gridOptions.suppressKeyboardEvent;
22821 };
22822 GridOptionsWrapper.prototype.getBusinessKeyForNodeFunc = function () {
22823 return this.gridOptions.getBusinessKeyForNode;
22824 };
22825 GridOptionsWrapper.prototype.getApi = function () {
22826 return this.gridOptions.api;
22827 };
22828 GridOptionsWrapper.prototype.getColumnApi = function () {
22829 return this.gridOptions.columnApi;
22830 };
22831 GridOptionsWrapper.prototype.isReadOnlyEdit = function () {
22832 return isTrue(this.gridOptions.readOnlyEdit);
22833 ;
22834 };
22835 GridOptionsWrapper.prototype.isImmutableData = function () {
22836 // we used to have a property immutableData for this. however this was deprecated
22837 // in favour of having Immutable Data on by default when getRowId is provided
22838 var getRowIdProvided = this.gridOptions.getRowId != null;
22839 var immutableData = isTrue(this.gridOptions.immutableData);
22840 // this property is a backwards compatibility property, for those who want
22841 // the old behaviour of Row ID's but NOT Immutable Data.
22842 var resetRowDataOnUpdate = isTrue(this.gridOptions.resetRowDataOnUpdate);
22843 if (resetRowDataOnUpdate) {
22844 return false;
22845 }
22846 return getRowIdProvided || immutableData;
22847 };
22848 GridOptionsWrapper.prototype.isEnsureDomOrder = function () {
22849 return isTrue(this.gridOptions.ensureDomOrder);
22850 };
22851 GridOptionsWrapper.prototype.isEnableCharts = function () {
22852 if (isTrue(this.gridOptions.enableCharts)) {
22853 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].GridChartsModule, 'enableCharts');
22854 }
22855 return false;
22856 };
22857 GridOptionsWrapper.prototype.getColResizeDefault = function () {
22858 return this.gridOptions.colResizeDefault;
22859 };
22860 GridOptionsWrapper.prototype.isSingleClickEdit = function () {
22861 return isTrue(this.gridOptions.singleClickEdit);
22862 };
22863 GridOptionsWrapper.prototype.isSuppressClickEdit = function () {
22864 return isTrue(this.gridOptions.suppressClickEdit);
22865 };
22866 GridOptionsWrapper.prototype.isStopEditingWhenCellsLoseFocus = function () {
22867 return isTrue(this.gridOptions.stopEditingWhenCellsLoseFocus);
22868 };
22869 GridOptionsWrapper.prototype.getGroupDefaultExpanded = function () {
22870 return this.gridOptions.groupDefaultExpanded;
22871 };
22872 GridOptionsWrapper.prototype.getMaxConcurrentDatasourceRequests = function () {
22873 var res = toNumber(this.gridOptions.maxConcurrentDatasourceRequests);
22874 if (res == null) {
22875 return 2;
22876 } // 2 is the default
22877 if (res <= 0) {
22878 return;
22879 } // negative number, eg -1, means no max restriction
22880 return res;
22881 };
22882 GridOptionsWrapper.prototype.getMaxBlocksInCache = function () {
22883 return this.gridOptions.maxBlocksInCache;
22884 };
22885 GridOptionsWrapper.prototype.getCacheOverflowSize = function () {
22886 return this.gridOptions.cacheOverflowSize;
22887 };
22888 GridOptionsWrapper.prototype.getPaginationPageSize = function () {
22889 return toNumber(this.gridOptions.paginationPageSize);
22890 };
22891 GridOptionsWrapper.prototype.isPaginateChildRows = function () {
22892 var shouldPaginate = this.isGroupRemoveSingleChildren() || this.isGroupRemoveLowestSingleChildren();
22893 if (shouldPaginate) {
22894 return true;
22895 }
22896 return isTrue(this.gridOptions.paginateChildRows);
22897 };
22898 GridOptionsWrapper.prototype.getCacheBlockSize = function () {
22899 return oneOrGreater(this.gridOptions.cacheBlockSize);
22900 };
22901 GridOptionsWrapper.prototype.getInfiniteInitialRowCount = function () {
22902 return this.gridOptions.infiniteInitialRowCount;
22903 };
22904 GridOptionsWrapper.prototype.isPurgeClosedRowNodes = function () {
22905 return isTrue(this.gridOptions.purgeClosedRowNodes);
22906 };
22907 GridOptionsWrapper.prototype.isSuppressPaginationPanel = function () {
22908 return isTrue(this.gridOptions.suppressPaginationPanel);
22909 };
22910 GridOptionsWrapper.prototype.getRowData = function () {
22911 return this.gridOptions.rowData;
22912 };
22913 GridOptionsWrapper.prototype.isEnableRtl = function () {
22914 return isTrue(this.gridOptions.enableRtl);
22915 };
22916 GridOptionsWrapper.prototype.getRowGroupPanelShow = function () {
22917 return this.gridOptions.rowGroupPanelShow;
22918 };
22919 GridOptionsWrapper.prototype.getPivotPanelShow = function () {
22920 return this.gridOptions.pivotPanelShow;
22921 };
22922 GridOptionsWrapper.prototype.isAngularCompileRows = function () {
22923 return isTrue(this.gridOptions.angularCompileRows);
22924 };
22925 GridOptionsWrapper.prototype.isAngularCompileFilters = function () {
22926 return isTrue(this.gridOptions.angularCompileFilters);
22927 };
22928 GridOptionsWrapper.prototype.isDebug = function () {
22929 return isTrue(this.gridOptions.debug);
22930 };
22931 GridOptionsWrapper.prototype.getColumnDefs = function () {
22932 return this.gridOptions.columnDefs;
22933 };
22934 GridOptionsWrapper.prototype.getColumnTypes = function () {
22935 return this.gridOptions.columnTypes;
22936 };
22937 GridOptionsWrapper.prototype.getDatasource = function () {
22938 return this.gridOptions.datasource;
22939 };
22940 GridOptionsWrapper.prototype.getViewportDatasource = function () {
22941 return this.gridOptions.viewportDatasource;
22942 };
22943 GridOptionsWrapper.prototype.getServerSideDatasource = function () {
22944 return this.gridOptions.serverSideDatasource;
22945 };
22946 GridOptionsWrapper.prototype.isAccentedSort = function () {
22947 return isTrue(this.gridOptions.accentedSort);
22948 };
22949 GridOptionsWrapper.prototype.isEnableBrowserTooltips = function () {
22950 return isTrue(this.gridOptions.enableBrowserTooltips);
22951 };
22952 GridOptionsWrapper.prototype.isEnableCellExpressions = function () {
22953 return isTrue(this.gridOptions.enableCellExpressions);
22954 };
22955 GridOptionsWrapper.prototype.isEnableGroupEdit = function () {
22956 return isTrue(this.gridOptions.enableGroupEdit);
22957 };
22958 GridOptionsWrapper.prototype.isSuppressMiddleClickScrolls = function () {
22959 return isTrue(this.gridOptions.suppressMiddleClickScrolls);
22960 };
22961 GridOptionsWrapper.prototype.isPreventDefaultOnContextMenu = function () {
22962 return isTrue(this.gridOptions.preventDefaultOnContextMenu);
22963 };
22964 GridOptionsWrapper.prototype.isSuppressPreventDefaultOnMouseWheel = function () {
22965 return isTrue(this.gridOptions.suppressPreventDefaultOnMouseWheel);
22966 };
22967 GridOptionsWrapper.prototype.isSuppressColumnVirtualisation = function () {
22968 return isTrue(this.gridOptions.suppressColumnVirtualisation);
22969 };
22970 GridOptionsWrapper.prototype.isSuppressRowVirtualisation = function () {
22971 return isTrue(this.gridOptions.suppressRowVirtualisation);
22972 };
22973 GridOptionsWrapper.prototype.isSuppressContextMenu = function () {
22974 return isTrue(this.gridOptions.suppressContextMenu);
22975 };
22976 GridOptionsWrapper.prototype.isAllowContextMenuWithControlKey = function () {
22977 return isTrue(this.gridOptions.allowContextMenuWithControlKey);
22978 };
22979 GridOptionsWrapper.prototype.isSuppressCopyRowsToClipboard = function () {
22980 return isTrue(this.gridOptions.suppressCopyRowsToClipboard);
22981 };
22982 GridOptionsWrapper.prototype.isSuppressCopySingleCellRanges = function () {
22983 return isTrue(this.gridOptions.suppressCopySingleCellRanges);
22984 };
22985 GridOptionsWrapper.prototype.isCopyHeadersToClipboard = function () {
22986 return isTrue(this.gridOptions.copyHeadersToClipboard);
22987 };
22988 GridOptionsWrapper.prototype.isCopyGroupHeadersToClipboard = function () {
22989 return isTrue(this.gridOptions.copyGroupHeadersToClipboard);
22990 };
22991 GridOptionsWrapper.prototype.isSuppressClipboardPaste = function () {
22992 return isTrue(this.gridOptions.suppressClipboardPaste);
22993 };
22994 GridOptionsWrapper.prototype.isSuppressLastEmptyLineOnPaste = function () {
22995 return isTrue(this.gridOptions.suppressLastEmptyLineOnPaste);
22996 };
22997 GridOptionsWrapper.prototype.isPagination = function () {
22998 return isTrue(this.gridOptions.pagination);
22999 };
23000 GridOptionsWrapper.prototype.isSuppressEnterpriseResetOnNewColumns = function () {
23001 return isTrue(this.gridOptions.suppressEnterpriseResetOnNewColumns);
23002 };
23003 GridOptionsWrapper.prototype.getProcessDataFromClipboardFunc = function () {
23004 return this.mergeGridCommonParams(this.gridOptions.processDataFromClipboard);
23005 };
23006 GridOptionsWrapper.prototype.getAsyncTransactionWaitMillis = function () {
23007 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;
23008 };
23009 GridOptionsWrapper.prototype.isSuppressMovableColumns = function () {
23010 return isTrue(this.gridOptions.suppressMovableColumns);
23011 };
23012 GridOptionsWrapper.prototype.isAnimateRows = function () {
23013 // never allow animating if enforcing the row order
23014 if (this.isEnsureDomOrder()) {
23015 return false;
23016 }
23017 return isTrue(this.gridOptions.animateRows);
23018 };
23019 GridOptionsWrapper.prototype.isSuppressColumnMoveAnimation = function () {
23020 return isTrue(this.gridOptions.suppressColumnMoveAnimation);
23021 };
23022 GridOptionsWrapper.prototype.isSuppressAggFuncInHeader = function () {
23023 return isTrue(this.gridOptions.suppressAggFuncInHeader);
23024 };
23025 GridOptionsWrapper.prototype.isSuppressAggAtRootLevel = function () {
23026 return isTrue(this.gridOptions.suppressAggAtRootLevel);
23027 };
23028 GridOptionsWrapper.prototype.isSuppressAggFilteredOnly = function () {
23029 var isGroupAggFiltering = this.getGroupAggFiltering() !== undefined;
23030 return isGroupAggFiltering || isTrue(this.gridOptions.suppressAggFilteredOnly);
23031 };
23032 GridOptionsWrapper.prototype.isRemovePivotHeaderRowWhenSingleValueColumn = function () {
23033 return isTrue(this.gridOptions.removePivotHeaderRowWhenSingleValueColumn);
23034 };
23035 GridOptionsWrapper.prototype.isShowOpenedGroup = function () {
23036 return isTrue(this.gridOptions.showOpenedGroup);
23037 };
23038 GridOptionsWrapper.prototype.isReactUi = function () {
23039 return isTrue(this.gridOptions.reactUi);
23040 };
23041 GridOptionsWrapper.prototype.isSuppressReactUi = function () {
23042 return isTrue(this.gridOptions.suppressReactUi);
23043 };
23044 GridOptionsWrapper.prototype.isEnableRangeSelection = function () {
23045 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].RangeSelectionModule) && isTrue(this.gridOptions.enableRangeSelection);
23046 };
23047 GridOptionsWrapper.prototype.isEnableRangeHandle = function () {
23048 return isTrue(this.gridOptions.enableRangeHandle);
23049 };
23050 GridOptionsWrapper.prototype.isEnableFillHandle = function () {
23051 return isTrue(this.gridOptions.enableFillHandle);
23052 };
23053 GridOptionsWrapper.prototype.getFillHandleDirection = function () {
23054 var direction = this.gridOptions.fillHandleDirection;
23055 if (!direction) {
23056 return 'xy';
23057 }
23058 if (direction !== 'x' && direction !== 'y' && direction !== 'xy') {
23059 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');
23060 return 'xy';
23061 }
23062 return direction;
23063 };
23064 GridOptionsWrapper.prototype.getFillOperation = function () {
23065 return this.mergeGridCommonParams(this.gridOptions.fillOperation);
23066 };
23067 GridOptionsWrapper.prototype.isSuppressMultiRangeSelection = function () {
23068 return isTrue(this.gridOptions.suppressMultiRangeSelection);
23069 };
23070 GridOptionsWrapper.prototype.isPaginationAutoPageSize = function () {
23071 return isTrue(this.gridOptions.paginationAutoPageSize);
23072 };
23073 GridOptionsWrapper.prototype.isRememberGroupStateWhenNewData = function () {
23074 return isTrue(this.gridOptions.rememberGroupStateWhenNewData);
23075 };
23076 GridOptionsWrapper.prototype.getIcons = function () {
23077 return this.gridOptions.icons;
23078 };
23079 GridOptionsWrapper.prototype.getGroupAggFiltering = function () {
23080 var userValue = this.gridOptions.groupAggFiltering;
23081 if (typeof userValue === 'function') {
23082 return this.mergeGridCommonParams(userValue);
23083 }
23084 if (isTrue(userValue)) {
23085 return function () { return true; };
23086 }
23087 return undefined;
23088 };
23089 GridOptionsWrapper.prototype.getAggFuncs = function () {
23090 return this.gridOptions.aggFuncs;
23091 };
23092 GridOptionsWrapper.prototype.getSortingOrder = function () {
23093 return this.gridOptions.sortingOrder;
23094 };
23095 GridOptionsWrapper.prototype.getAlignedGrids = function () {
23096 return this.gridOptions.alignedGrids;
23097 };
23098 GridOptionsWrapper.prototype.isMasterDetail = function () {
23099 var masterDetail = isTrue(this.gridOptions.masterDetail);
23100 if (masterDetail) {
23101 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].MasterDetailModule, 'masterDetail');
23102 }
23103 else {
23104 return false;
23105 }
23106 };
23107 GridOptionsWrapper.prototype.isKeepDetailRows = function () {
23108 return isTrue(this.gridOptions.keepDetailRows);
23109 };
23110 GridOptionsWrapper.prototype.getKeepDetailRowsCount = function () {
23111 var keepDetailRowsCount = this.gridOptions.keepDetailRowsCount;
23112 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(keepDetailRowsCount) && keepDetailRowsCount > 0) {
23113 return this.gridOptions.keepDetailRowsCount;
23114 }
23115 return DEFAULT_KEEP_DETAIL_ROW_COUNT;
23116 };
23117 GridOptionsWrapper.prototype.getIsRowMasterFunc = function () {
23118 return this.gridOptions.isRowMaster;
23119 };
23120 GridOptionsWrapper.prototype.getIsRowSelectableFunc = function () {
23121 return this.gridOptions.isRowSelectable;
23122 };
23123 GridOptionsWrapper.prototype.getGroupRowRendererParams = function () {
23124 return this.gridOptions.groupRowRendererParams;
23125 };
23126 GridOptionsWrapper.prototype.getOverlayLoadingTemplate = function () {
23127 return this.gridOptions.overlayLoadingTemplate;
23128 };
23129 GridOptionsWrapper.prototype.getOverlayNoRowsTemplate = function () {
23130 return this.gridOptions.overlayNoRowsTemplate;
23131 };
23132 GridOptionsWrapper.prototype.isSuppressAutoSize = function () {
23133 return isTrue(this.gridOptions.suppressAutoSize);
23134 };
23135 GridOptionsWrapper.prototype.isEnableCellTextSelection = function () {
23136 return isTrue(this.gridOptions.enableCellTextSelection);
23137 };
23138 GridOptionsWrapper.prototype.isSuppressParentsInRowNodes = function () {
23139 return isTrue(this.gridOptions.suppressParentsInRowNodes);
23140 };
23141 GridOptionsWrapper.prototype.isSuppressClipboardApi = function () {
23142 return isTrue(this.gridOptions.suppressClipboardApi);
23143 };
23144 GridOptionsWrapper.prototype.isFunctionsReadOnly = function () {
23145 return isTrue(this.gridOptions.functionsReadOnly);
23146 };
23147 GridOptionsWrapper.prototype.isEnableCellTextSelect = function () {
23148 return isTrue(this.gridOptions.enableCellTextSelection);
23149 };
23150 GridOptionsWrapper.prototype.getDefaultColDef = function () {
23151 return this.gridOptions.defaultColDef;
23152 };
23153 GridOptionsWrapper.prototype.getDefaultColGroupDef = function () {
23154 return this.gridOptions.defaultColGroupDef;
23155 };
23156 GridOptionsWrapper.prototype.getDefaultExportParams = function (type) {
23157 if (this.gridOptions.defaultExportParams) {
23158 console.warn("AG Grid: Since v25.2 `defaultExportParams` has been replaced by `default" + Object(_utils_string__WEBPACK_IMPORTED_MODULE_16__["capitalise"])(type) + "ExportParams`'");
23159 if (type === 'csv') {
23160 return this.gridOptions.defaultExportParams;
23161 }
23162 return this.gridOptions.defaultExportParams;
23163 }
23164 if (type === 'csv' && this.gridOptions.defaultCsvExportParams) {
23165 return this.gridOptions.defaultCsvExportParams;
23166 }
23167 if (type === 'excel' && this.gridOptions.defaultExcelExportParams) {
23168 return this.gridOptions.defaultExcelExportParams;
23169 }
23170 };
23171 GridOptionsWrapper.prototype.isSuppressCsvExport = function () {
23172 return isTrue(this.gridOptions.suppressCsvExport);
23173 };
23174 GridOptionsWrapper.prototype.isAllowShowChangeAfterFilter = function () {
23175 return isTrue(this.gridOptions.allowShowChangeAfterFilter);
23176 };
23177 GridOptionsWrapper.prototype.isSuppressExcelExport = function () {
23178 return isTrue(this.gridOptions.suppressExcelExport);
23179 };
23180 GridOptionsWrapper.prototype.isSuppressMakeColumnVisibleAfterUnGroup = function () {
23181 return isTrue(this.gridOptions.suppressMakeColumnVisibleAfterUnGroup);
23182 };
23183 GridOptionsWrapper.prototype.getDataPathFunc = function () {
23184 return this.gridOptions.getDataPath;
23185 };
23186 GridOptionsWrapper.prototype.getIsServerSideGroupFunc = function () {
23187 return this.gridOptions.isServerSideGroup;
23188 };
23189 GridOptionsWrapper.prototype.getIsServerSideGroupOpenByDefaultFunc = function () {
23190 return this.mergeGridCommonParams(this.gridOptions.isServerSideGroupOpenByDefault);
23191 };
23192 GridOptionsWrapper.prototype.getIsGroupOpenByDefaultFunc = function () {
23193 return this.mergeGridCommonParams(this.gridOptions.isGroupOpenByDefault);
23194 };
23195 GridOptionsWrapper.prototype.getServerSideGroupKeyFunc = function () {
23196 return this.gridOptions.getServerSideGroupKey;
23197 };
23198 GridOptionsWrapper.prototype.getGroupRowAggFunc = function () {
23199 var _a = this.gridOptions, getGroupRowAgg = _a.getGroupRowAgg, groupRowAggNodes = _a.groupRowAggNodes;
23200 if (getGroupRowAgg) {
23201 return this.mergeGridCommonParams(getGroupRowAgg);
23202 }
23203 // this is the deprecated way, so provide a proxy to make it compatible
23204 if (groupRowAggNodes) {
23205 return function (params) { return groupRowAggNodes(params.nodes); };
23206 }
23207 };
23208 GridOptionsWrapper.prototype.getContextMenuItemsFunc = function () {
23209 return this.mergeGridCommonParams(this.gridOptions.getContextMenuItems);
23210 };
23211 GridOptionsWrapper.prototype.getMainMenuItemsFunc = function () {
23212 return this.mergeGridCommonParams(this.gridOptions.getMainMenuItems);
23213 };
23214 GridOptionsWrapper.prototype.getRowIdFunc = function () {
23215 var _a = this.gridOptions, getRowId = _a.getRowId, getRowNodeId = _a.getRowNodeId;
23216 if (getRowId) {
23217 return this.mergeGridCommonParams(getRowId);
23218 }
23219 // this is the deprecated way, so provide a proxy to make it compatible
23220 if (getRowNodeId) {
23221 return function (params) { return getRowNodeId(params.data); };
23222 }
23223 };
23224 GridOptionsWrapper.prototype.getNavigateToNextHeaderFunc = function () {
23225 return this.mergeGridCommonParams(this.gridOptions.navigateToNextHeader);
23226 };
23227 GridOptionsWrapper.prototype.getTabToNextHeaderFunc = function () {
23228 return this.mergeGridCommonParams(this.gridOptions.tabToNextHeader);
23229 };
23230 GridOptionsWrapper.prototype.getNavigateToNextCellFunc = function () {
23231 return this.mergeGridCommonParams(this.gridOptions.navigateToNextCell);
23232 };
23233 GridOptionsWrapper.prototype.getTabToNextCellFunc = function () {
23234 return this.mergeGridCommonParams(this.gridOptions.tabToNextCell);
23235 };
23236 GridOptionsWrapper.prototype.getGridTabIndex = function () {
23237 return (this.gridOptions.tabIndex || 0).toString();
23238 };
23239 GridOptionsWrapper.prototype.isTreeData = function () {
23240 var usingTreeData = isTrue(this.gridOptions.treeData);
23241 if (usingTreeData) {
23242 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].RowGroupingModule, 'Tree Data');
23243 }
23244 return false;
23245 };
23246 GridOptionsWrapper.prototype.isValueCache = function () {
23247 return isTrue(this.gridOptions.valueCache);
23248 };
23249 GridOptionsWrapper.prototype.isValueCacheNeverExpires = function () {
23250 return isTrue(this.gridOptions.valueCacheNeverExpires);
23251 };
23252 GridOptionsWrapper.prototype.isDeltaSort = function () {
23253 return isTrue(this.gridOptions.deltaSort);
23254 };
23255 GridOptionsWrapper.prototype.isAggregateOnlyChangedColumns = function () {
23256 return isTrue(this.gridOptions.aggregateOnlyChangedColumns);
23257 };
23258 GridOptionsWrapper.prototype.getProcessSecondaryColDefFunc = function () {
23259 return this.gridOptions.processSecondaryColDef;
23260 };
23261 GridOptionsWrapper.prototype.getProcessSecondaryColGroupDefFunc = function () {
23262 return this.gridOptions.processSecondaryColGroupDef;
23263 };
23264 GridOptionsWrapper.prototype.getSendToClipboardFunc = function () {
23265 return this.mergeGridCommonParams(this.gridOptions.sendToClipboard);
23266 };
23267 GridOptionsWrapper.prototype.getProcessRowPostCreateFunc = function () {
23268 return this.mergeGridCommonParams(this.gridOptions.processRowPostCreate);
23269 };
23270 GridOptionsWrapper.prototype.getProcessCellForClipboardFunc = function () {
23271 return this.mergeGridCommonParams(this.gridOptions.processCellForClipboard);
23272 };
23273 GridOptionsWrapper.prototype.getProcessHeaderForClipboardFunc = function () {
23274 return this.mergeGridCommonParams(this.gridOptions.processHeaderForClipboard);
23275 };
23276 GridOptionsWrapper.prototype.getProcessGroupHeaderForClipboardFunc = function () {
23277 return this.mergeGridCommonParams(this.gridOptions.processGroupHeaderForClipboard);
23278 };
23279 GridOptionsWrapper.prototype.getProcessCellFromClipboardFunc = function () {
23280 return this.mergeGridCommonParams(this.gridOptions.processCellFromClipboard);
23281 };
23282 GridOptionsWrapper.prototype.getViewportRowModelPageSize = function () {
23283 return oneOrGreater(this.gridOptions.viewportRowModelPageSize, DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);
23284 };
23285 GridOptionsWrapper.prototype.getViewportRowModelBufferSize = function () {
23286 return zeroOrGreater(this.gridOptions.viewportRowModelBufferSize, DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);
23287 };
23288 GridOptionsWrapper.prototype.isServerSideSortingAlwaysResets = function () {
23289 return isTrue(this.gridOptions.serverSideSortingAlwaysResets);
23290 };
23291 GridOptionsWrapper.prototype.isServerSideFilteringAlwaysResets = function () {
23292 return isTrue(this.gridOptions.serverSideFilteringAlwaysResets);
23293 };
23294 GridOptionsWrapper.prototype.getPostSortFunc = function () {
23295 var _a = this.gridOptions, postSortRows = _a.postSortRows, postSort = _a.postSort;
23296 if (postSortRows) {
23297 return this.mergeGridCommonParams(postSortRows);
23298 }
23299 // this is the deprecated way, so provide a proxy to make it compatible
23300 if (postSort) {
23301 return function (params) { return postSort(params.nodes); };
23302 }
23303 };
23304 GridOptionsWrapper.prototype.getChartToolbarItemsFunc = function () {
23305 return this.mergeGridCommonParams(this.gridOptions.getChartToolbarItems);
23306 };
23307 GridOptionsWrapper.prototype.getChartThemeOverrides = function () {
23308 return this.gridOptions.chartThemeOverrides;
23309 };
23310 GridOptionsWrapper.prototype.getCustomChartThemes = function () {
23311 return this.gridOptions.customChartThemes;
23312 };
23313 GridOptionsWrapper.prototype.getChartThemes = function () {
23314 // return default themes if user hasn't supplied any
23315 return this.gridOptions.chartThemes || ['ag-default', 'ag-material', 'ag-pastel', 'ag-vivid', 'ag-solar'];
23316 };
23317 GridOptionsWrapper.prototype.getClipboardDelimiter = function () {
23318 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.clipboardDelimiter) ? this.gridOptions.clipboardDelimiter : '\t';
23319 };
23320 GridOptionsWrapper.prototype.setProperty = function (key, value, force) {
23321 if (force === void 0) { force = false; }
23322 var gridOptionsNoType = this.gridOptions;
23323 var previousValue = gridOptionsNoType[key];
23324 if (force || previousValue !== value) {
23325 gridOptionsNoType[key] = value;
23326 var event_1 = {
23327 type: key,
23328 currentValue: value,
23329 previousValue: previousValue
23330 };
23331 this.propertyEventService.dispatchEvent(event_1);
23332 }
23333 };
23334 GridOptionsWrapper.prototype.addEventListener = function (key, listener) {
23335 this.propertyEventService.addEventListener(key, listener);
23336 };
23337 GridOptionsWrapper.prototype.removeEventListener = function (key, listener) {
23338 this.propertyEventService.removeEventListener(key, listener);
23339 };
23340 GridOptionsWrapper.prototype.isSkipHeaderOnAutoSize = function () {
23341 return !!this.gridOptions.skipHeaderOnAutoSize;
23342 };
23343 GridOptionsWrapper.prototype.getAutoSizePadding = function () {
23344 var value = this.gridOptions.autoSizePadding;
23345 return value != null && value >= 0 ? value : 20;
23346 };
23347 // properties
23348 GridOptionsWrapper.prototype.getHeaderHeight = function () {
23349 if (typeof this.gridOptions.headerHeight === 'number') {
23350 return this.gridOptions.headerHeight;
23351 }
23352 return this.getFromTheme(25, 'headerHeight');
23353 };
23354 GridOptionsWrapper.prototype.getFloatingFiltersHeight = function () {
23355 if (typeof this.gridOptions.floatingFiltersHeight === 'number') {
23356 return this.gridOptions.floatingFiltersHeight;
23357 }
23358 return this.getFromTheme(25, 'headerHeight');
23359 };
23360 GridOptionsWrapper.prototype.getGroupHeaderHeight = function () {
23361 if (typeof this.gridOptions.groupHeaderHeight === 'number') {
23362 return this.gridOptions.groupHeaderHeight;
23363 }
23364 return this.getHeaderHeight();
23365 };
23366 GridOptionsWrapper.prototype.getPivotHeaderHeight = function () {
23367 if (typeof this.gridOptions.pivotHeaderHeight === 'number') {
23368 return this.gridOptions.pivotHeaderHeight;
23369 }
23370 return this.getHeaderHeight();
23371 };
23372 GridOptionsWrapper.prototype.getPivotGroupHeaderHeight = function () {
23373 if (typeof this.gridOptions.pivotGroupHeaderHeight === 'number') {
23374 return this.gridOptions.pivotGroupHeaderHeight;
23375 }
23376 return this.getGroupHeaderHeight();
23377 };
23378 GridOptionsWrapper.prototype.isExternalFilterPresent = function () {
23379 if (typeof this.gridOptions.isExternalFilterPresent === 'function') {
23380 return this.gridOptions.isExternalFilterPresent({ api: this.getApi(), columnApi: this.getColumnApi(), context: this.getContext() });
23381 }
23382 return false;
23383 };
23384 GridOptionsWrapper.prototype.doesExternalFilterPass = function (node) {
23385 if (typeof this.gridOptions.doesExternalFilterPass === 'function') {
23386 return this.gridOptions.doesExternalFilterPass(node);
23387 }
23388 return false;
23389 };
23390 GridOptionsWrapper.prototype.getTooltipDelay = function (type) {
23391 var _a = this.gridOptions, tooltipShowDelay = _a.tooltipShowDelay, tooltipHideDelay = _a.tooltipHideDelay;
23392 var delay = type === 'show' ? tooltipShowDelay : tooltipHideDelay;
23393 var capitalisedType = Object(_utils_string__WEBPACK_IMPORTED_MODULE_16__["capitalise"])(type);
23394 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(delay)) {
23395 if (delay < 0) {
23396 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");
23397 }
23398 return Math.max(200, delay);
23399 }
23400 return null;
23401 };
23402 GridOptionsWrapper.prototype.isTooltipMouseTrack = function () {
23403 return isTrue(this.gridOptions.tooltipMouseTrack);
23404 };
23405 GridOptionsWrapper.prototype.isSuppressModelUpdateAfterUpdateTransaction = function () {
23406 return isTrue(this.gridOptions.suppressModelUpdateAfterUpdateTransaction);
23407 };
23408 GridOptionsWrapper.prototype.getDocument = function () {
23409 // if user is providing document, we use the users one,
23410 // otherwise we use the document on the global namespace.
23411 var result = null;
23412 if (this.gridOptions.getDocument && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.getDocument)) {
23413 result = this.gridOptions.getDocument();
23414 }
23415 else if (this.eGridDiv) {
23416 result = this.eGridDiv.ownerDocument;
23417 }
23418 if (result && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(result)) {
23419 return result;
23420 }
23421 return document;
23422 };
23423 GridOptionsWrapper.prototype.getMinColWidth = function () {
23424 var minColWidth = this.gridOptions.minColWidth;
23425 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(minColWidth) && minColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {
23426 return this.gridOptions.minColWidth;
23427 }
23428 var measuredMin = this.getFromTheme(null, 'headerCellMinWidth');
23429 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(measuredMin) ? Math.max(measuredMin, GridOptionsWrapper_1.MIN_COL_WIDTH) : GridOptionsWrapper_1.MIN_COL_WIDTH;
23430 };
23431 GridOptionsWrapper.prototype.getMaxColWidth = function () {
23432 if (this.gridOptions.maxColWidth && this.gridOptions.maxColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {
23433 return this.gridOptions.maxColWidth;
23434 }
23435 return null;
23436 };
23437 GridOptionsWrapper.prototype.getColWidth = function () {
23438 if (typeof this.gridOptions.colWidth !== 'number' || this.gridOptions.colWidth < GridOptionsWrapper_1.MIN_COL_WIDTH) {
23439 return 200;
23440 }
23441 return this.gridOptions.colWidth;
23442 };
23443 GridOptionsWrapper.prototype.getRowBuffer = function () {
23444 var rowBuffer = this.gridOptions.rowBuffer;
23445 if (typeof rowBuffer === 'number') {
23446 if (rowBuffer < 0) {
23447 Object(_utils_function__WEBPACK_IMPORTED_MODULE_11__["doOnce"])(function () { return console.warn("AG Grid: rowBuffer should not be negative"); }, 'warn rowBuffer negative');
23448 this.gridOptions.rowBuffer = rowBuffer = 0;
23449 }
23450 }
23451 else {
23452 rowBuffer = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_BUFFER_SIZE;
23453 }
23454 return rowBuffer;
23455 };
23456 GridOptionsWrapper.prototype.getRowBufferInPixels = function () {
23457 var rowsToBuffer = this.getRowBuffer();
23458 var defaultRowHeight = this.getRowHeightAsNumber();
23459 return rowsToBuffer * defaultRowHeight;
23460 };
23461 // the user might be using some non-standard scrollbar, eg a scrollbar that has zero
23462 // width and overlays (like the Safari scrollbar, but presented in Chrome). so we
23463 // allow the user to provide the scroll width before we work it out.
23464 GridOptionsWrapper.prototype.getScrollbarWidth = function () {
23465 if (this.scrollbarWidth == null) {
23466 var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;
23467 var scrollbarWidth = useGridOptions ? this.gridOptions.scrollbarWidth : Object(_utils_browser__WEBPACK_IMPORTED_MODULE_10__["getScrollbarWidth"])();
23468 if (scrollbarWidth != null) {
23469 this.scrollbarWidth = scrollbarWidth;
23470 this.eventService.dispatchEvent({
23471 type: _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_SCROLLBAR_WIDTH_CHANGED
23472 });
23473 }
23474 }
23475 return this.scrollbarWidth;
23476 };
23477 GridOptionsWrapper.prototype.checkForDeprecated = function () {
23478 // casting to generic object, so typescript compiles even though
23479 // we are looking for attributes that don't exist
23480 var options = this.gridOptions;
23481 if (options.deprecatedEmbedFullWidthRows) {
23482 console.warn("AG Grid: since v21.2, deprecatedEmbedFullWidthRows has been replaced with embedFullWidthRows.");
23483 }
23484 if (options.rowDeselection) {
23485 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.');
23486 }
23487 if (options.enableMultiRowDragging) {
23488 options.rowDragMultiRow = true;
23489 delete options.enableMultiRowDragging;
23490 console.warn('AG Grid: since v26.1, `enableMultiRowDragging` is deprecated. Please use `rowDragMultiRow`.');
23491 }
23492 var checkRenamedProperty = function (oldProp, newProp, version) {
23493 if (options[oldProp] != null) {
23494 console.warn("AG Grid: since version " + version + ", '" + oldProp + "' is deprecated / renamed, please use the new property name '" + newProp + "' instead.");
23495 if (options[newProp] == null) {
23496 options[newProp] = options[oldProp];
23497 }
23498 }
23499 };
23500 checkRenamedProperty('batchUpdateWaitMillis', 'asyncTransactionWaitMillis', '23.1.x');
23501 checkRenamedProperty('deltaRowDataMode', 'immutableData', '23.1.x');
23502 if (options.immutableColumns || options.deltaColumnMode) {
23503 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');
23504 }
23505 checkRenamedProperty('suppressSetColumnStateEvents', 'suppressColumnStateEvents', '24.0.x');
23506 if (options.groupRowInnerRenderer || options.groupRowInnerRendererParams || options.groupRowInnerRendererFramework) {
23507 console.warn('AG Grid: since v24.0, grid properties groupRowInnerRenderer, groupRowInnerRendererFramework and groupRowInnerRendererParams are no longer used.');
23508 console.warn(' Instead use the grid properties groupRowRendererParams.innerRenderer, groupRowRendererParams.innerRendererFramework and groupRowRendererParams.innerRendererParams.');
23509 console.warn(' For example instead of this:');
23510 console.warn(' groupRowInnerRenderer: "myRenderer"');
23511 console.warn(' groupRowInnerRendererParams: {x: a}');
23512 console.warn(' Replace with this:');
23513 console.warn(' groupRowRendererParams: {');
23514 console.warn(' innerRenderer: "myRenderer",');
23515 console.warn(' innerRendererParams: {x: a}');
23516 console.warn(' }');
23517 console.warn(' We have copied the properties over for you. However to stop this error message, please change your application code.');
23518 if (!options.groupRowRendererParams) {
23519 options.groupRowRendererParams = {};
23520 }
23521 var params = options.groupRowRendererParams;
23522 if (options.groupRowInnerRenderer) {
23523 params.innerRenderer = options.groupRowInnerRenderer;
23524 }
23525 if (options.groupRowInnerRendererParams) {
23526 params.innerRendererParams = options.groupRowInnerRendererParams;
23527 }
23528 if (options.groupRowInnerRendererFramework) {
23529 params.innerRendererFramework = options.groupRowInnerRendererFramework;
23530 }
23531 }
23532 if (options.rememberGroupStateWhenNewData) {
23533 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.');
23534 }
23535 if (options.detailCellRendererParams && options.detailCellRendererParams.autoHeight) {
23536 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');
23537 options.detailRowAutoHeight = true;
23538 }
23539 if (options.suppressKeyboardEvent) {
23540 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.");
23541 }
23542 if (options.suppressEnterpriseResetOnNewColumns) {
23543 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.');
23544 }
23545 if (options.suppressColumnStateEvents) {
23546 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');
23547 }
23548 if (options.defaultExportParams) {
23549 console.warn('AG Grid: since v25.2, the grid property `defaultExportParams` has been replaced by `defaultCsvExportParams` and `defaultExcelExportParams`.');
23550 }
23551 if (options.stopEditingWhenGridLosesFocus) {
23552 console.warn('AG Grid: since v25.2.2, the grid property `stopEditingWhenGridLosesFocus` has been replaced by `stopEditingWhenCellsLoseFocus`.');
23553 options.stopEditingWhenCellsLoseFocus = true;
23554 }
23555 if (options.applyColumnDefOrder) {
23556 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');
23557 }
23558 if (options.groupMultiAutoColumn) {
23559 console.warn("AG Grid: since v26.0, the grid property `groupMultiAutoColumn` has been replaced by `groupDisplayType = 'multipleColumns'`");
23560 options.groupDisplayType = 'multipleColumns';
23561 }
23562 if (options.groupUseEntireRow) {
23563 console.warn("AG Grid: since v26.0, the grid property `groupUseEntireRow` has been replaced by `groupDisplayType = 'groupRows'`");
23564 options.groupDisplayType = 'groupRows';
23565 }
23566 if (options.groupSuppressAutoColumn) {
23567 var propName = options.treeData ? 'treeDataDisplayType' : 'groupDisplayType';
23568 console.warn("AG Grid: since v26.0, the grid property `groupSuppressAutoColumn` has been replaced by `" + propName + " = 'custom'`");
23569 options.groupDisplayType = 'custom';
23570 }
23571 if (options.defaultGroupOrderComparator) {
23572 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.");
23573 }
23574 if (options.defaultGroupSortComparator) {
23575 console.warn("AG Grid: since v26.0, the grid property `defaultGroupSortComparator` has been replaced by `initialGroupOrderComparator`");
23576 options.defaultGroupOrderComparator = options.defaultGroupSortComparator;
23577 }
23578 if (options.groupRowAggNodes) {
23579 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.");
23580 }
23581 if (options.postSort) {
23582 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.");
23583 }
23584 if (options.isFullWidthCell) {
23585 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.");
23586 }
23587 if (options.localeTextFunc) {
23588 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.");
23589 }
23590 if (options.colWidth) {
23591 console.warn('AG Grid: since v26.1, the grid property `colWidth` is deprecated and should be set via `defaultColDef.width`.');
23592 }
23593 if (options.minColWidth) {
23594 console.warn('AG Grid: since v26.1, the grid property `minColWidth` is deprecated and should be set via `defaultColDef.minWidth`.');
23595 }
23596 if (options.maxColWidth) {
23597 console.warn('AG Grid: since v26.1, the grid property `maxColWidth` is deprecated and should be set via `defaultColDef.maxWidth`.');
23598 }
23599 if (options.reactUi) {
23600 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.');
23601 }
23602 if (options.suppressReactUi) {
23603 console.warn('AG Grid: The legacy React rendering engine is deprecated and will be removed in the next major version of the grid.');
23604 }
23605 if (options.suppressCellSelection) {
23606 console.warn('AG Grid: since v27.0, `suppressCellSelection` has been replaced by `suppressCellFocus`.');
23607 options.suppressCellFocus = options.suppressCellSelection;
23608 }
23609 if (options.getRowNodeId) {
23610 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.');
23611 }
23612 if (options.immutableData) {
23613 if (options.getRowId) {
23614 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`.');
23615 }
23616 else {
23617 console.warn('AG Grid: since v27.1, `immutableData` is deprecated. To enable immutable data you must implement the `getRowId()` callback.');
23618 }
23619 }
23620 if (options.clipboardDeliminator) {
23621 console.warn('AG Grid: since v27.1, `clipboardDeliminator` has been replaced by `clipboardDelimiter`.');
23622 options.clipboardDelimiter = options.clipboardDeliminator;
23623 }
23624 };
23625 GridOptionsWrapper.prototype.checkForViolations = function () {
23626 if (this.isTreeData()) {
23627 this.treeDataViolations();
23628 }
23629 };
23630 GridOptionsWrapper.prototype.treeDataViolations = function () {
23631 if (this.isRowModelDefault()) {
23632 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.getDataPathFunc())) {
23633 console.warn('AG Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +
23634 'provide getDataPath function, please provide getDataPath function if using tree data.');
23635 }
23636 }
23637 if (this.isRowModelServerSide()) {
23638 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.getIsServerSideGroupFunc())) {
23639 console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +
23640 'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');
23641 }
23642 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.getServerSideGroupKeyFunc())) {
23643 console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +
23644 'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');
23645 }
23646 }
23647 };
23648 GridOptionsWrapper.prototype.getLocaleTextFunc = function () {
23649 var _this = this;
23650 var _a = this.gridOptions, localeText = _a.localeText, getLocaleText = _a.getLocaleText, localeTextFunc = _a.localeTextFunc;
23651 if (getLocaleText) {
23652 //key: string, defaultValue: string, variableValues?: string[]
23653 return function (key, defaultValue, variableValues) {
23654 var params = {
23655 key: key,
23656 defaultValue: defaultValue,
23657 variableValues: variableValues,
23658 api: _this.getApi(),
23659 columnApi: _this.getColumnApi(),
23660 context: _this.getContext()
23661 };
23662 return getLocaleText(params);
23663 };
23664 }
23665 if (localeTextFunc) {
23666 return localeTextFunc;
23667 }
23668 return function (key, defaultValue, variableValues) {
23669 var localisedText = localeText && localeText[key];
23670 if (localisedText && variableValues && variableValues.length) {
23671 var found = 0;
23672 while (true) {
23673 if (found >= variableValues.length) {
23674 break;
23675 }
23676 var idx = localisedText.indexOf('${variable}');
23677 if (idx === -1) {
23678 break;
23679 }
23680 localisedText = localisedText.replace('${variable}', variableValues[found++]);
23681 }
23682 }
23683 return (localisedText !== null && localisedText !== void 0 ? localisedText : defaultValue);
23684 };
23685 };
23686 // responsible for calling the onXXX functions on gridOptions
23687 GridOptionsWrapper.prototype.globalEventHandler = function (eventName, event) {
23688 // prevent events from being fired _after_ the grid has been destroyed
23689 if (this.destroyed) {
23690 return;
23691 }
23692 var callbackMethodName = _components_componentUtil__WEBPACK_IMPORTED_MODULE_1__["ComponentUtil"].getCallbackForEvent(eventName);
23693 if (typeof this.gridOptions[callbackMethodName] === 'function') {
23694 this.gridOptions[callbackMethodName](event);
23695 }
23696 };
23697 GridOptionsWrapper.prototype.setRowHeightVariable = function (height) {
23698 var oldRowHeight = this.eGridDiv.style.getPropertyValue('--ag-line-height').trim();
23699 var newRowHeight = height + "px";
23700 if (oldRowHeight != newRowHeight) {
23701 this.eGridDiv.style.setProperty('--ag-line-height', newRowHeight);
23702 }
23703 };
23704 // we don't allow dynamic row height for virtual paging
23705 GridOptionsWrapper.prototype.getRowHeightAsNumber = function () {
23706 if (!this.gridOptions.rowHeight || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.gridOptions.rowHeight)) {
23707 return this.getDefaultRowHeight();
23708 }
23709 var rowHeight = this.gridOptions.rowHeight;
23710 if (rowHeight && this.isNumeric(rowHeight)) {
23711 this.setRowHeightVariable(rowHeight);
23712 return rowHeight;
23713 }
23714 console.warn('AG Grid row height must be a number if not using standard row model');
23715 return this.getDefaultRowHeight();
23716 };
23717 GridOptionsWrapper.prototype.isGetRowHeightFunction = function () {
23718 return typeof this.gridOptions.getRowHeight === 'function';
23719 };
23720 GridOptionsWrapper.prototype.getRowHeightForNode = function (rowNode, allowEstimate, defaultRowHeight) {
23721 if (allowEstimate === void 0) { allowEstimate = false; }
23722 if (defaultRowHeight == null) {
23723 defaultRowHeight = this.getDefaultRowHeight();
23724 }
23725 // check the function first, in case use set both function and
23726 // number, when using virtual pagination then function can be
23727 // used for pinned rows and the number for the body rows.
23728 if (this.isGetRowHeightFunction()) {
23729 if (allowEstimate) {
23730 return { height: defaultRowHeight, estimated: true };
23731 }
23732 var params = {
23733 node: rowNode,
23734 data: rowNode.data
23735 };
23736 var height = this.mergeGridCommonParams(this.gridOptions.getRowHeight)(params);
23737 if (this.isNumeric(height)) {
23738 if (height === 0) {
23739 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');
23740 }
23741 return { height: Math.max(1, height), estimated: false };
23742 }
23743 }
23744 if (rowNode.detail && this.isMasterDetail()) {
23745 // if autoHeight, we want the height to grow to the new height starting at 1, as otherwise a flicker would happen,
23746 // as the detail goes to the default (eg 200px) and then immediately shrink up/down to the new measured height
23747 // (due to auto height) which looks bad, especially if doing row animation.
23748 if (this.isDetailRowAutoHeight()) {
23749 return { height: 1, estimated: false };
23750 }
23751 if (this.isNumeric(this.gridOptions.detailRowHeight)) {
23752 return { height: this.gridOptions.detailRowHeight, estimated: false };
23753 }
23754 return { height: DEFAULT_DETAIL_ROW_HEIGHT, estimated: false };
23755 }
23756 var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;
23757 return { height: rowHeight, estimated: false };
23758 };
23759 GridOptionsWrapper.prototype.isDynamicRowHeight = function () {
23760 return typeof this.gridOptions.getRowHeight === 'function';
23761 };
23762 GridOptionsWrapper.prototype.getListItemHeight = function () {
23763 return this.getFromTheme(20, 'listItemHeight');
23764 };
23765 GridOptionsWrapper.prototype.chartMenuPanelWidth = function () {
23766 return this.environment.chartMenuPanelWidth();
23767 };
23768 GridOptionsWrapper.prototype.isNumeric = function (value) {
23769 return !isNaN(value) && typeof value === 'number' && isFinite(value);
23770 };
23771 GridOptionsWrapper.prototype.getFromTheme = function (defaultValue, sassVariableName) {
23772 var theme = this.environment.getTheme().theme;
23773 if (theme && theme.indexOf('ag-theme') === 0) {
23774 return this.environment.getSassVariable(theme, sassVariableName);
23775 }
23776 return defaultValue;
23777 };
23778 GridOptionsWrapper.prototype.getDefaultRowHeight = function () {
23779 return this.getFromTheme(DEFAULT_ROW_HEIGHT, 'rowHeight');
23780 };
23781 GridOptionsWrapper.prototype.matchesGroupDisplayType = function (toMatch, supplied) {
23782 var groupDisplayTypeValues = ['groupRows', 'multipleColumns', 'custom', 'singleColumn'];
23783 if (groupDisplayTypeValues.indexOf(supplied) < 0) {
23784 console.warn("AG Grid: '" + supplied + "' is not a valid groupDisplayType value - possible values are: '" + groupDisplayTypeValues.join("', '") + "'");
23785 return false;
23786 }
23787 return supplied === toMatch;
23788 };
23789 GridOptionsWrapper.prototype.matchesTreeDataDisplayType = function (toMatch, supplied) {
23790 var treeDataDisplayTypeValues = ['auto', 'custom'];
23791 if (treeDataDisplayTypeValues.indexOf(supplied) < 0) {
23792 console.warn("AG Grid: '" + supplied + "' is not a valid treeDataDisplayType value - possible values are: '" + treeDataDisplayTypeValues.join("', '") + "'");
23793 return false;
23794 }
23795 return supplied === toMatch;
23796 };
23797 var GridOptionsWrapper_1;
23798 GridOptionsWrapper.MIN_COL_WIDTH = 10;
23799 GridOptionsWrapper.PROP_HEADER_HEIGHT = 'headerHeight';
23800 GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN = 'groupRemoveSingleChildren';
23801 GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN = 'groupRemoveLowestSingleChildren';
23802 GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT = 'pivotHeaderHeight';
23803 GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE = 'suppressClipboardPaste';
23804 GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT = 'groupHeaderHeight';
23805 GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT = 'pivotGroupHeaderHeight';
23806 GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_CELL = 'navigateToNextCell';
23807 GridOptionsWrapper.PROP_TAB_TO_NEXT_CELL = 'tabToNextCell';
23808 GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_HEADER = 'navigateToNextHeader';
23809 GridOptionsWrapper.PROP_TAB_TO_NEXT_HEADER = 'tabToNextHeader';
23810 GridOptionsWrapper.PROP_IS_EXTERNAL_FILTER_PRESENT = 'isExternalFilterPresent';
23811 GridOptionsWrapper.PROP_DOES_EXTERNAL_FILTER_PASS = 'doesExternalFilterPass';
23812 GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT = 'floatingFiltersHeight';
23813 GridOptionsWrapper.PROP_SUPPRESS_ROW_CLICK_SELECTION = 'suppressRowClickSelection';
23814 GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG = 'suppressRowDrag';
23815 GridOptionsWrapper.PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG = 'suppressMoveWhenRowDragging';
23816 GridOptionsWrapper.PROP_GET_ROW_CLASS = 'getRowClass';
23817 GridOptionsWrapper.PROP_GET_ROW_STYLE = 'getRowStyle';
23818 GridOptionsWrapper.PROP_GET_ROW_HEIGHT = 'getRowHeight';
23819 GridOptionsWrapper.PROP_POPUP_PARENT = 'popupParent';
23820 GridOptionsWrapper.PROP_DOM_LAYOUT = 'domLayout';
23821 GridOptionsWrapper.PROP_ROW_CLASS = 'rowClass';
23822 GridOptionsWrapper.PROP_FILL_HANDLE_DIRECTION = 'fillHandleDirection';
23823 GridOptionsWrapper.PROP_GROUP_ROW_AGG_NODES = 'groupRowAggNodes';
23824 GridOptionsWrapper.PROP_GET_GROUP_ROW_AGG = 'getGroupRowAgg';
23825 GridOptionsWrapper.PROP_GET_BUSINESS_KEY_FOR_NODE = 'getBusinessKeyForNode';
23826 GridOptionsWrapper.PROP_GET_CHILD_COUNT = 'getChildCount';
23827 GridOptionsWrapper.PROP_PROCESS_ROW_POST_CREATE = 'processRowPostCreate';
23828 GridOptionsWrapper.PROP_GET_ROW_NODE_ID = 'getRowNodeId';
23829 GridOptionsWrapper.PROP_GET_ROW_ID = 'getRowId';
23830 GridOptionsWrapper.PROP_IS_FULL_WIDTH_CELL = 'isFullWidthCell';
23831 GridOptionsWrapper.PROP_IS_FULL_WIDTH_ROW = 'isFullWidthRow';
23832 GridOptionsWrapper.PROP_IS_ROW_SELECTABLE = 'isRowSelectable';
23833 GridOptionsWrapper.PROP_IS_ROW_MASTER = 'isRowMaster';
23834 GridOptionsWrapper.PROP_POST_SORT = 'postSort';
23835 GridOptionsWrapper.PROP_POST_SORT_ROWS = 'postSortRows';
23836 GridOptionsWrapper.PROP_GET_DOCUMENT = 'getDocument';
23837 GridOptionsWrapper.PROP_POST_PROCESS_POPUP = 'postProcessPopup';
23838 GridOptionsWrapper.PROP_DEFAULT_GROUP_ORDER_COMPARATOR = 'defaultGroupOrderComparator';
23839 GridOptionsWrapper.PROP_INITIAL_GROUP_ORDER_COMPARATOR = 'initialGroupOrderComparator';
23840 GridOptionsWrapper.PROP_PAGINATION_NUMBER_FORMATTER = 'paginationNumberFormatter';
23841 GridOptionsWrapper.PROP_GET_CONTEXT_MENU_ITEMS = 'getContextMenuItems';
23842 GridOptionsWrapper.PROP_GET_MAIN_MENU_ITEMS = 'getMainMenuItems';
23843 GridOptionsWrapper.PROP_PROCESS_CELL_FOR_CLIPBOARD = 'processCellForClipboard';
23844 GridOptionsWrapper.PROP_PROCESS_CELL_FROM_CLIPBOARD = 'processCellFromClipboard';
23845 GridOptionsWrapper.PROP_SEND_TO_CLIPBOARD = 'sendToClipboard';
23846 GridOptionsWrapper.PROP_PROCESS_TO_SECONDARY_COLDEF = 'processSecondaryColDef';
23847 GridOptionsWrapper.PROP_PROCESS_SECONDARY_COL_GROUP_DEF = 'processSecondaryColGroupDef';
23848 GridOptionsWrapper.PROP_GET_CHART_TOOLBAR_ITEMS = 'getChartToolbarItems';
23849 GridOptionsWrapper.PROP_GET_SERVER_SIDE_STORE_PARAMS = 'getServerSideStoreParams';
23850 GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT = 'isServerSideGroupOpenByDefault';
23851 GridOptionsWrapper.PROP_IS_APPLY_SERVER_SIDE_TRANSACTION = 'isApplyServerSideTransaction';
23852 GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUP = 'isServerSideGroup';
23853 GridOptionsWrapper.PROP_GET_SERVER_SIDE_GROUP_KEY = 'getServerSideGroupKey';
23854 __decorate([
23855 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('gridOptions')
23856 ], GridOptionsWrapper.prototype, "gridOptions", void 0);
23857 __decorate([
23858 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('eventService')
23859 ], GridOptionsWrapper.prototype, "eventService", void 0);
23860 __decorate([
23861 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('environment')
23862 ], GridOptionsWrapper.prototype, "environment", void 0);
23863 __decorate([
23864 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('eGridDiv')
23865 ], GridOptionsWrapper.prototype, "eGridDiv", void 0);
23866 __decorate([
23867 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Qualifier"])('gridApi')), __param(1, Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Qualifier"])('columnApi'))
23868 ], GridOptionsWrapper.prototype, "agWire", null);
23869 __decorate([
23870 _context_context__WEBPACK_IMPORTED_MODULE_3__["PreDestroy"]
23871 ], GridOptionsWrapper.prototype, "destroy", null);
23872 __decorate([
23873 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
23874 ], GridOptionsWrapper.prototype, "init", null);
23875 GridOptionsWrapper = GridOptionsWrapper_1 = __decorate([
23876 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Bean"])('gridOptionsWrapper')
23877 ], GridOptionsWrapper);
23878 return GridOptionsWrapper;
23879}());
23880
23881
23882
23883
23884
23885/***/ }),
23886/* 113 */
23887/***/ (function(module, __webpack_exports__, __webpack_require__) {
23888
23889"use strict";
23890__webpack_require__.r(__webpack_exports__);
23891/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SideBarDefParser", function() { return SideBarDefParser; });
23892/**
23893 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
23894 * @version v27.3.0
23895 * @link https://www.ag-grid.com/
23896 * @license MIT
23897 */
23898var SideBarDefParser = /** @class */ (function () {
23899 function SideBarDefParser() {
23900 }
23901 SideBarDefParser.parse = function (toParse) {
23902 if (!toParse) {
23903 return null;
23904 }
23905 if (toParse === true) {
23906 return {
23907 toolPanels: [
23908 SideBarDefParser.DEFAULT_COLUMN_COMP,
23909 SideBarDefParser.DEFAULT_FILTER_COMP,
23910 ],
23911 defaultToolPanel: 'columns'
23912 };
23913 }
23914 if (typeof toParse === 'string') {
23915 return SideBarDefParser.parse([toParse]);
23916 }
23917 if (Array.isArray(toParse)) {
23918 var comps_1 = [];
23919 toParse.forEach(function (key) {
23920 var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];
23921 if (!lookupResult) {
23922 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(','));
23923 return;
23924 }
23925 comps_1.push(lookupResult);
23926 });
23927 if (comps_1.length === 0) {
23928 return null;
23929 }
23930 return {
23931 toolPanels: comps_1,
23932 defaultToolPanel: comps_1[0].id
23933 };
23934 }
23935 var result = {
23936 toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),
23937 defaultToolPanel: toParse.defaultToolPanel,
23938 hiddenByDefault: toParse.hiddenByDefault,
23939 position: toParse.position
23940 };
23941 return result;
23942 };
23943 SideBarDefParser.parseComponents = function (from) {
23944 var result = [];
23945 if (!from) {
23946 return result;
23947 }
23948 from.forEach(function (it) {
23949 var toAdd = null;
23950 if (typeof it === 'string') {
23951 var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];
23952 if (!lookupResult) {
23953 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(','));
23954 return;
23955 }
23956 toAdd = lookupResult;
23957 }
23958 else {
23959 toAdd = it;
23960 }
23961 result.push(toAdd);
23962 });
23963 return result;
23964 };
23965 SideBarDefParser.DEFAULT_COLUMN_COMP = {
23966 id: 'columns',
23967 labelDefault: 'Columns',
23968 labelKey: 'columns',
23969 iconKey: 'columns',
23970 toolPanel: 'agColumnsToolPanel',
23971 };
23972 SideBarDefParser.DEFAULT_FILTER_COMP = {
23973 id: 'filters',
23974 labelDefault: 'Filters',
23975 labelKey: 'filters',
23976 iconKey: 'filter',
23977 toolPanel: 'agFiltersToolPanel',
23978 };
23979 SideBarDefParser.DEFAULT_BY_KEY = {
23980 columns: SideBarDefParser.DEFAULT_COLUMN_COMP,
23981 filters: SideBarDefParser.DEFAULT_FILTER_COMP
23982 };
23983 return SideBarDefParser;
23984}());
23985
23986
23987
23988
23989
23990/***/ }),
23991/* 114 */
23992/***/ (function(module, __webpack_exports__, __webpack_require__) {
23993
23994"use strict";
23995__webpack_require__.r(__webpack_exports__);
23996/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowAnimationCssClasses", function() { return RowAnimationCssClasses; });
23997/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CSS_CLASS_CELL_SELECTABLE", function() { return CSS_CLASS_CELL_SELECTABLE; });
23998/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CSS_CLASS_FORCE_VERTICAL_SCROLL", function() { return CSS_CLASS_FORCE_VERTICAL_SCROLL; });
23999/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CSS_CLASS_COLUMN_MOVING", function() { return CSS_CLASS_COLUMN_MOVING; });
24000/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridBodyCtrl", function() { return GridBodyCtrl; });
24001/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
24002/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
24003/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111);
24004/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
24005/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
24006/* harmony import */ var _gridBodyScrollFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(115);
24007/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
24008/* harmony import */ var _rowDragFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(116);
24009/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(43);
24010/**
24011 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
24012 * @version v27.3.0
24013 * @link https://www.ag-grid.com/
24014 * @license MIT
24015 */
24016var __extends = (undefined && undefined.__extends) || (function () {
24017 var extendStatics = function (d, b) {
24018 extendStatics = Object.setPrototypeOf ||
24019 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
24020 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
24021 return extendStatics(d, b);
24022 };
24023 return function (d, b) {
24024 extendStatics(d, b);
24025 function __() { this.constructor = d; }
24026 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
24027 };
24028})();
24029var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
24030 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24031 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
24032 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;
24033 return c > 3 && r && Object.defineProperty(target, key, r), r;
24034};
24035
24036
24037
24038
24039
24040
24041
24042
24043
24044var RowAnimationCssClasses;
24045(function (RowAnimationCssClasses) {
24046 RowAnimationCssClasses["ANIMATION_ON"] = "ag-row-animation";
24047 RowAnimationCssClasses["ANIMATION_OFF"] = "ag-row-no-animation";
24048})(RowAnimationCssClasses || (RowAnimationCssClasses = {}));
24049var CSS_CLASS_CELL_SELECTABLE = 'ag-selectable';
24050var CSS_CLASS_FORCE_VERTICAL_SCROLL = 'ag-force-vertical-scroll';
24051var CSS_CLASS_COLUMN_MOVING = 'ag-column-moving';
24052var GridBodyCtrl = /** @class */ (function (_super) {
24053 __extends(GridBodyCtrl, _super);
24054 function GridBodyCtrl() {
24055 return _super !== null && _super.apply(this, arguments) || this;
24056 }
24057 GridBodyCtrl.prototype.getScrollFeature = function () {
24058 return this.bodyScrollFeature;
24059 };
24060 GridBodyCtrl.prototype.getBodyViewportElement = function () {
24061 return this.eBodyViewport;
24062 };
24063 GridBodyCtrl.prototype.setComp = function (comp, eGridBody, eBodyViewport, eTop, eBottom) {
24064 this.comp = comp;
24065 this.eGridBody = eGridBody;
24066 this.eBodyViewport = eBodyViewport;
24067 this.eTop = eTop;
24068 this.eBottom = eBottom;
24069 this.setCellTextSelection(this.gridOptionsWrapper.isEnableCellTextSelect());
24070 this.createManagedBean(new _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_2__["LayoutFeature"](this.comp));
24071 this.bodyScrollFeature = this.createManagedBean(new _gridBodyScrollFeature__WEBPACK_IMPORTED_MODULE_5__["GridBodyScrollFeature"](this.eBodyViewport));
24072 this.addRowDragListener();
24073 this.setupRowAnimationCssClass();
24074 this.addEventListeners();
24075 this.addFocusListeners([eTop, eBodyViewport, eBottom]);
24076 this.onGridColumnsChanged();
24077 this.addBodyViewportListener();
24078 this.setFloatingHeights();
24079 this.disableBrowserDragging();
24080 this.addStopEditingWhenGridLosesFocus();
24081 this.ctrlsService.registerGridBodyCtrl(this);
24082 };
24083 GridBodyCtrl.prototype.getComp = function () {
24084 return this.comp;
24085 };
24086 GridBodyCtrl.prototype.addEventListeners = function () {
24087 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));
24088 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));
24089 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_PINNED_ROW_DATA_CHANGED, this.setFloatingHeights.bind(this));
24090 };
24091 GridBodyCtrl.prototype.addFocusListeners = function (elements) {
24092 var _this = this;
24093 elements.forEach(function (element) {
24094 _this.addManagedListener(element, 'focusin', function () {
24095 element.classList.add('ag-has-focus');
24096 });
24097 _this.addManagedListener(element, 'focusout', function (e) {
24098 if (!element.contains(e.relatedTarget)) {
24099 element.classList.remove('ag-has-focus');
24100 }
24101 });
24102 });
24103 };
24104 // used by ColumnAnimationService
24105 GridBodyCtrl.prototype.setColumnMovingCss = function (moving) {
24106 this.comp.setColumnMovingCss(moving ? CSS_CLASS_COLUMN_MOVING : null, moving);
24107 };
24108 GridBodyCtrl.prototype.setCellTextSelection = function (selectable) {
24109 if (selectable === void 0) { selectable = false; }
24110 var cssClass = selectable ? CSS_CLASS_CELL_SELECTABLE : null;
24111 this.comp.setCellSelectableCss(cssClass, selectable);
24112 };
24113 GridBodyCtrl.prototype.onScrollVisibilityChanged = function () {
24114 var visible = this.scrollVisibleService.isVerticalScrollShowing();
24115 this.setVerticalScrollPaddingVisible(visible);
24116 };
24117 GridBodyCtrl.prototype.onGridColumnsChanged = function () {
24118 var columns = this.columnModel.getAllGridColumns();
24119 this.comp.setColumnCount(columns ? columns.length : 0);
24120 };
24121 // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)
24122 // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.
24123 GridBodyCtrl.prototype.disableBrowserDragging = function () {
24124 this.addManagedListener(this.eGridBody, 'dragstart', function (event) {
24125 if (event.target instanceof HTMLImageElement) {
24126 event.preventDefault();
24127 return false;
24128 }
24129 });
24130 };
24131 GridBodyCtrl.prototype.addStopEditingWhenGridLosesFocus = function () {
24132 var _this = this;
24133 if (!this.gridOptionsWrapper.isStopEditingWhenCellsLoseFocus()) {
24134 return;
24135 }
24136 var focusOutListener = function (event) {
24137 // this is the element the focus is moving to
24138 var elementWithFocus = event.relatedTarget;
24139 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_8__["getTabIndex"])(elementWithFocus) === null) {
24140 _this.rowRenderer.stopEditing();
24141 return;
24142 }
24143 var clickInsideGrid =
24144 // see if click came from inside the viewports
24145 viewports.some(function (viewport) { return viewport.contains(elementWithFocus); })
24146 // and also that it's not from a detail grid
24147 && _this.mouseEventService.isElementInThisGrid(elementWithFocus);
24148 if (!clickInsideGrid) {
24149 var popupService = _this.popupService;
24150 clickInsideGrid =
24151 popupService.getActivePopups().some(function (popup) { return popup.contains(elementWithFocus); }) ||
24152 popupService.isElementWithinCustomPopup(elementWithFocus);
24153 }
24154 if (!clickInsideGrid) {
24155 _this.rowRenderer.stopEditing();
24156 }
24157 };
24158 var viewports = [this.eBodyViewport, this.eBottom, this.eTop];
24159 viewports.forEach(function (viewport) { return _this.addManagedListener(viewport, 'focusout', focusOutListener); });
24160 };
24161 GridBodyCtrl.prototype.updateRowCount = function () {
24162 var headerCount = this.headerNavigationService.getHeaderRowCount();
24163 var modelType = this.paginationProxy.getType();
24164 var rowCount = -1;
24165 if (modelType === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
24166 rowCount = 0;
24167 this.paginationProxy.forEachNode(function (node) {
24168 if (!node.group) {
24169 rowCount++;
24170 }
24171 });
24172 }
24173 var total = rowCount === -1 ? -1 : (headerCount + rowCount);
24174 this.comp.setRowCount(total);
24175 };
24176 GridBodyCtrl.prototype.registerBodyViewportResizeListener = function (listener) {
24177 this.comp.registerBodyViewportResizeListener(listener);
24178 };
24179 GridBodyCtrl.prototype.setVerticalScrollPaddingVisible = function (visible) {
24180 var overflowY = visible ? 'scroll' : 'hidden';
24181 this.comp.setPinnedTopBottomOverflowY(overflowY);
24182 };
24183 GridBodyCtrl.prototype.isVerticalScrollShowing = function () {
24184 var show = this.gridOptionsWrapper.isAlwaysShowVerticalScroll();
24185 var cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;
24186 this.comp.setAlwaysVerticalScrollClass(cssClass, show);
24187 return show || Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["isVerticalScrollShowing"])(this.eBodyViewport);
24188 };
24189 GridBodyCtrl.prototype.setupRowAnimationCssClass = function () {
24190 var _this = this;
24191 var listener = function () {
24192 // we don't want to use row animation if scaling, as rows jump strangely as you scroll,
24193 // when scaling and doing row animation.
24194 var animateRows = _this.gridOptionsWrapper.isAnimateRows() && !_this.rowContainerHeightService.isStretching();
24195 var animateRowsCssClass = animateRows ? RowAnimationCssClasses.ANIMATION_ON : RowAnimationCssClasses.ANIMATION_OFF;
24196 _this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);
24197 };
24198 listener();
24199 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_HEIGHT_SCALE_CHANGED, listener);
24200 };
24201 GridBodyCtrl.prototype.getGridBodyElement = function () {
24202 return this.eGridBody;
24203 };
24204 GridBodyCtrl.prototype.addBodyViewportListener = function () {
24205 var _this = this;
24206 // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing
24207 // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell
24208 var listener = function (mouseEvent) {
24209 if (_this.gridOptionsWrapper.isPreventDefaultOnContextMenu()) {
24210 mouseEvent.preventDefault();
24211 }
24212 var target = mouseEvent.target;
24213 if (target === _this.eBodyViewport || target === _this.ctrlsService.getCenterRowContainerCtrl().getViewportElement()) {
24214 // show it
24215 if (_this.contextMenuFactory) {
24216 _this.contextMenuFactory.onContextMenu(mouseEvent, null, null, null, null, _this.eGridBody);
24217 }
24218 }
24219 };
24220 this.addManagedListener(this.eBodyViewport, 'contextmenu', listener);
24221 this.addManagedListener(this.eBodyViewport, 'wheel', this.onWheel.bind(this));
24222 };
24223 GridBodyCtrl.prototype.onWheel = function (e) {
24224 if (!this.gridOptionsWrapper.isSuppressScrollWhenPopupsAreOpen()) {
24225 return;
24226 }
24227 if (this.popupService.hasAnchoredPopup()) {
24228 e.preventDefault();
24229 }
24230 };
24231 GridBodyCtrl.prototype.getGui = function () {
24232 return this.eGridBody;
24233 };
24234 // called by rowDragFeature
24235 GridBodyCtrl.prototype.scrollVertically = function (pixels) {
24236 var oldScrollPosition = this.eBodyViewport.scrollTop;
24237 this.bodyScrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);
24238 return this.eBodyViewport.scrollTop - oldScrollPosition;
24239 };
24240 GridBodyCtrl.prototype.addRowDragListener = function () {
24241 this.rowDragFeature = this.createManagedBean(new _rowDragFeature__WEBPACK_IMPORTED_MODULE_7__["RowDragFeature"](this.eBodyViewport));
24242 this.dragAndDropService.addDropTarget(this.rowDragFeature);
24243 };
24244 GridBodyCtrl.prototype.getRowDragFeature = function () {
24245 return this.rowDragFeature;
24246 };
24247 GridBodyCtrl.prototype.setFloatingHeights = function () {
24248 var pinnedRowModel = this.pinnedRowModel;
24249 var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();
24250 if (floatingTopHeight) {
24251 // adding 1px for cell bottom border
24252 floatingTopHeight += 1;
24253 }
24254 var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();
24255 if (floatingBottomHeight) {
24256 // adding 1px for cell bottom border
24257 floatingBottomHeight += 1;
24258 }
24259 this.comp.setTopHeight(floatingTopHeight);
24260 this.comp.setBottomHeight(floatingBottomHeight);
24261 this.comp.setTopDisplay(floatingTopHeight ? 'inherit' : 'none');
24262 this.comp.setBottomDisplay(floatingBottomHeight ? 'inherit' : 'none');
24263 };
24264 // method will call itself if no available width. this covers if the grid
24265 // isn't visible, but is just about to be visible.
24266 GridBodyCtrl.prototype.sizeColumnsToFit = function (nextTimeout) {
24267 var _this = this;
24268 var removeScrollWidth = this.isVerticalScrollShowing();
24269 var scrollWidthToRemove = removeScrollWidth ? this.gridOptionsWrapper.getScrollbarWidth() : 0;
24270 var bodyViewportWidth = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["getInnerWidth"])(this.eBodyViewport);
24271 var availableWidth = bodyViewportWidth - scrollWidthToRemove;
24272 if (availableWidth > 0) {
24273 this.columnModel.sizeColumnsToFit(availableWidth, "sizeColumnsToFit");
24274 return;
24275 }
24276 if (nextTimeout === undefined) {
24277 window.setTimeout(function () {
24278 _this.sizeColumnsToFit(100);
24279 }, 0);
24280 }
24281 else if (nextTimeout === 100) {
24282 window.setTimeout(function () {
24283 _this.sizeColumnsToFit(500);
24284 }, 100);
24285 }
24286 else if (nextTimeout === 500) {
24287 window.setTimeout(function () {
24288 _this.sizeColumnsToFit(-1);
24289 }, 500);
24290 }
24291 else {
24292 console.warn('AG Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +
24293 'zero width, maybe the grid is not visible yet on the screen?');
24294 }
24295 };
24296 // + rangeService
24297 GridBodyCtrl.prototype.addScrollEventListener = function (listener) {
24298 this.eBodyViewport.addEventListener('scroll', listener);
24299 };
24300 // + focusService
24301 GridBodyCtrl.prototype.removeScrollEventListener = function (listener) {
24302 this.eBodyViewport.removeEventListener('scroll', listener);
24303 };
24304 __decorate([
24305 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowContainerHeightService')
24306 ], GridBodyCtrl.prototype, "rowContainerHeightService", void 0);
24307 __decorate([
24308 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
24309 ], GridBodyCtrl.prototype, "ctrlsService", void 0);
24310 __decorate([
24311 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
24312 ], GridBodyCtrl.prototype, "columnModel", void 0);
24313 __decorate([
24314 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('scrollVisibleService')
24315 ], GridBodyCtrl.prototype, "scrollVisibleService", void 0);
24316 __decorate([
24317 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('contextMenuFactory')
24318 ], GridBodyCtrl.prototype, "contextMenuFactory", void 0);
24319 __decorate([
24320 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('headerNavigationService')
24321 ], GridBodyCtrl.prototype, "headerNavigationService", void 0);
24322 __decorate([
24323 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('paginationProxy')
24324 ], GridBodyCtrl.prototype, "paginationProxy", void 0);
24325 __decorate([
24326 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
24327 ], GridBodyCtrl.prototype, "dragAndDropService", void 0);
24328 __decorate([
24329 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('pinnedRowModel')
24330 ], GridBodyCtrl.prototype, "pinnedRowModel", void 0);
24331 __decorate([
24332 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
24333 ], GridBodyCtrl.prototype, "rowRenderer", void 0);
24334 __decorate([
24335 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('popupService')
24336 ], GridBodyCtrl.prototype, "popupService", void 0);
24337 __decorate([
24338 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('mouseEventService')
24339 ], GridBodyCtrl.prototype, "mouseEventService", void 0);
24340 return GridBodyCtrl;
24341}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
24342
24343
24344
24345
24346
24347/***/ }),
24348/* 115 */
24349/***/ (function(module, __webpack_exports__, __webpack_require__) {
24350
24351"use strict";
24352__webpack_require__.r(__webpack_exports__);
24353/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridBodyScrollFeature", function() { return GridBodyScrollFeature; });
24354/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
24355/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
24356/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
24357/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
24358/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
24359/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43);
24360/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15);
24361/**
24362 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
24363 * @version v27.3.0
24364 * @link https://www.ag-grid.com/
24365 * @license MIT
24366 */
24367var __extends = (undefined && undefined.__extends) || (function () {
24368 var extendStatics = function (d, b) {
24369 extendStatics = Object.setPrototypeOf ||
24370 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
24371 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
24372 return extendStatics(d, b);
24373 };
24374 return function (d, b) {
24375 extendStatics(d, b);
24376 function __() { this.constructor = d; }
24377 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
24378 };
24379})();
24380var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
24381 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24382 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
24383 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;
24384 return c > 3 && r && Object.defineProperty(target, key, r), r;
24385};
24386
24387
24388
24389
24390
24391
24392
24393var GridBodyScrollFeature = /** @class */ (function (_super) {
24394 __extends(GridBodyScrollFeature, _super);
24395 function GridBodyScrollFeature(eBodyViewport) {
24396 var _this = _super.call(this) || this;
24397 _this.scrollLeft = -1;
24398 _this.nextScrollTop = -1;
24399 _this.scrollTop = -1;
24400 _this.eBodyViewport = eBodyViewport;
24401 _this.resetLastHorizontalScrollElementDebounced = Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["debounce"])(_this.resetLastHorizontalScrollElement.bind(_this), 500);
24402 return _this;
24403 }
24404 GridBodyScrollFeature.prototype.postConstruct = function () {
24405 var _this = this;
24406 this.enableRtl = this.gridOptionsWrapper.isEnableRtl();
24407 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));
24408 this.ctrlsService.whenReady(function (p) {
24409 _this.centerRowContainerCtrl = p.centerRowContainerCtrl;
24410 _this.onDisplayedColumnsWidthChanged();
24411 _this.addScrollListener();
24412 });
24413 };
24414 GridBodyScrollFeature.prototype.addScrollListener = function () {
24415 var fakeHScroll = this.ctrlsService.getFakeHScrollCtrl();
24416 this.addManagedListener(this.centerRowContainerCtrl.getViewportElement(), 'scroll', this.onCenterViewportScroll.bind(this));
24417 this.addManagedListener(fakeHScroll.getViewport(), 'scroll', this.onFakeHorizontalScroll.bind(this));
24418 var onVerticalScroll = this.gridOptionsWrapper.isDebounceVerticalScrollbar() ?
24419 Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["debounce"])(this.onVerticalScroll.bind(this), 100)
24420 : this.onVerticalScroll.bind(this);
24421 this.addManagedListener(this.eBodyViewport, 'scroll', onVerticalScroll);
24422 };
24423 GridBodyScrollFeature.prototype.onDisplayedColumnsWidthChanged = function () {
24424 if (this.enableRtl) {
24425 // because RTL is all backwards, a change in the width of the row
24426 // can cause a change in the scroll position, without a scroll event,
24427 // because the scroll position in RTL is a function that depends on
24428 // the width. to be convinced of this, take out this line, enable RTL,
24429 // scroll all the way to the left and then resize a column
24430 this.horizontallyScrollHeaderCenterAndFloatingCenter();
24431 }
24432 };
24433 GridBodyScrollFeature.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {
24434 // when doing RTL, this method gets called once prematurely
24435 var notYetInitialised = this.centerRowContainerCtrl == null;
24436 if (notYetInitialised) {
24437 return;
24438 }
24439 if (scrollLeft === undefined) {
24440 scrollLeft = this.centerRowContainerCtrl.getCenterViewportScrollLeft();
24441 }
24442 var offset = this.enableRtl ? scrollLeft : -scrollLeft;
24443 var topCenterContainer = this.ctrlsService.getTopCenterRowContainerCtrl();
24444 var bottomCenterContainer = this.ctrlsService.getBottomCenterRowContainerCtrl();
24445 var fakeHScroll = this.ctrlsService.getFakeHScrollCtrl();
24446 var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
24447 centerHeaderContainer.setHorizontalScroll(offset);
24448 bottomCenterContainer.setContainerTranslateX(offset);
24449 topCenterContainer.setContainerTranslateX(offset);
24450 var partner = this.lastHorizontalScrollElement === this.centerRowContainerCtrl.getViewportElement() ?
24451 fakeHScroll.getViewport() : this.centerRowContainerCtrl.getViewportElement();
24452 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setScrollLeft"])(partner, Math.abs(scrollLeft), this.enableRtl);
24453 };
24454 GridBodyScrollFeature.prototype.isControllingScroll = function (eDiv) {
24455 if (!this.lastHorizontalScrollElement) {
24456 this.lastHorizontalScrollElement = eDiv;
24457 return true;
24458 }
24459 return eDiv === this.lastHorizontalScrollElement;
24460 };
24461 GridBodyScrollFeature.prototype.onFakeHorizontalScroll = function () {
24462 var fakeHScrollViewport = this.ctrlsService.getFakeHScrollCtrl().getViewport();
24463 if (!this.isControllingScroll(fakeHScrollViewport)) {
24464 return;
24465 }
24466 this.onBodyHorizontalScroll(fakeHScrollViewport);
24467 };
24468 GridBodyScrollFeature.prototype.onCenterViewportScroll = function () {
24469 var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();
24470 if (!this.isControllingScroll(centerContainerViewport)) {
24471 return;
24472 }
24473 this.onBodyHorizontalScroll(centerContainerViewport);
24474 };
24475 GridBodyScrollFeature.prototype.onBodyHorizontalScroll = function (eSource) {
24476 var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();
24477 var scrollLeft = centerContainerViewport.scrollLeft;
24478 if (this.shouldBlockScrollUpdate('horizontal', scrollLeft, true)) {
24479 return;
24480 }
24481 // we do Math.round() rather than Math.floor(), to mirror how scroll values are applied.
24482 // eg if a scale is applied (ie user has zoomed the browser), then applying scroll=200
24483 // could result in 199.88, which then floor(199.88) = 199, however round(199.88) = 200.
24484 // initially Math.floor() was used, however this caused (almost) infinite loop with aligned grids,
24485 // as the scroll would move 1px at at time bouncing from one grid to the next (eg one grid would cause
24486 // scroll to 200px, the next to 199px, then the first back to 198px and so on).
24487 this.doHorizontalScroll(Math.round(Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getScrollLeft"])(eSource, this.enableRtl)));
24488 this.resetLastHorizontalScrollElementDebounced();
24489 };
24490 GridBodyScrollFeature.prototype.onVerticalScroll = function () {
24491 var scrollTop = this.eBodyViewport.scrollTop;
24492 if (this.shouldBlockScrollUpdate('vertical', scrollTop, true)) {
24493 return;
24494 }
24495 this.animationFrameService.setScrollTop(scrollTop);
24496 this.nextScrollTop = scrollTop;
24497 if (this.gridOptionsWrapper.isSuppressAnimationFrame()) {
24498 this.scrollTop = this.nextScrollTop;
24499 this.redrawRowsAfterScroll();
24500 }
24501 else {
24502 this.animationFrameService.schedule();
24503 }
24504 };
24505 GridBodyScrollFeature.prototype.resetLastHorizontalScrollElement = function () {
24506 this.lastHorizontalScrollElement = null;
24507 };
24508 GridBodyScrollFeature.prototype.doHorizontalScroll = function (scrollLeft) {
24509 var fakeHScrollViewport = this.ctrlsService.getFakeHScrollCtrl().getViewport();
24510 var fakeScrollLeft = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getScrollLeft"])(fakeHScrollViewport, this.enableRtl);
24511 if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {
24512 return;
24513 }
24514 this.scrollLeft = scrollLeft;
24515 this.fireScrollEvent('horizontal');
24516 this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);
24517 this.onHorizontalViewportChanged();
24518 };
24519 GridBodyScrollFeature.prototype.fireScrollEvent = function (direction) {
24520 var _this = this;
24521 var bodyScrollEvent = {
24522 type: _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL,
24523 api: this.gridApi,
24524 columnApi: this.columnApi,
24525 direction: direction,
24526 left: this.scrollLeft,
24527 top: this.scrollTop
24528 };
24529 this.eventService.dispatchEvent(bodyScrollEvent);
24530 window.clearTimeout(this.scrollTimer);
24531 this.scrollTimer = undefined;
24532 this.scrollTimer = window.setTimeout(function () {
24533 var bodyScrollEndEvent = Object.assign({}, bodyScrollEvent, {
24534 type: _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL_END
24535 });
24536 _this.eventService.dispatchEvent(bodyScrollEndEvent);
24537 }, 100);
24538 };
24539 GridBodyScrollFeature.prototype.shouldBlockScrollUpdate = function (direction, scrollTo, touchOnly) {
24540 // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport
24541 // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually
24542 // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,
24543 // as otherwise it was causing the rows and header to flicker.
24544 if (touchOnly === void 0) { touchOnly = false; }
24545 // sometimes when scrolling, we got values that extended the maximum scroll allowed. we used to
24546 // ignore these scrolls. problem is the max scroll position could be skipped (eg the previous scroll event
24547 // could be 10px before the max position, and then current scroll event could be 20px after the max position).
24548 // if we just ignored the last event, we would be setting the scroll to 10px before the max position, when in
24549 // actual fact the user has exceeded the max scroll and thus scroll should be set to the max.
24550 if (touchOnly && !Object(_utils_browser__WEBPACK_IMPORTED_MODULE_5__["isIOSUserAgent"])()) {
24551 return false;
24552 }
24553 if (direction === 'vertical') {
24554 var clientHeight = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getInnerHeight"])(this.eBodyViewport);
24555 var scrollHeight = this.eBodyViewport.scrollHeight;
24556 if (scrollTo < 0 || (scrollTo + clientHeight > scrollHeight)) {
24557 return true;
24558 }
24559 }
24560 if (direction === 'horizontal') {
24561 var clientWidth = this.centerRowContainerCtrl.getCenterWidth();
24562 var scrollWidth = this.centerRowContainerCtrl.getViewportElement().scrollWidth;
24563 if (this.enableRtl && Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isRtlNegativeScroll"])()) {
24564 if (scrollTo > 0) {
24565 return true;
24566 }
24567 }
24568 else if (scrollTo < 0) {
24569 return true;
24570 }
24571 if (Math.abs(scrollTo) + clientWidth > scrollWidth) {
24572 return true;
24573 }
24574 }
24575 return false;
24576 };
24577 GridBodyScrollFeature.prototype.redrawRowsAfterScroll = function () {
24578 this.fireScrollEvent('vertical');
24579 };
24580 GridBodyScrollFeature.prototype.onHorizontalViewportChanged = function () {
24581 this.centerRowContainerCtrl.onHorizontalViewportChanged();
24582 };
24583 // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.
24584 // (which happens with some implementations of tabbing). this can result in horizontal scroll getting
24585 // reset back to the left, however no scroll event is fired. so we need to get header to also scroll
24586 // back to the left to be kept in sync.
24587 // adding and removing the grid from the DOM both resets the scroll position and
24588 // triggers a resize event, so notify listeners if the scroll position has changed
24589 GridBodyScrollFeature.prototype.checkScrollLeft = function () {
24590 if (this.scrollLeft !== this.centerRowContainerCtrl.getCenterViewportScrollLeft()) {
24591 this.onBodyHorizontalScroll(this.centerRowContainerCtrl.getViewportElement());
24592 }
24593 };
24594 GridBodyScrollFeature.prototype.executeAnimationFrameScroll = function () {
24595 var frameNeeded = this.scrollTop != this.nextScrollTop;
24596 if (frameNeeded) {
24597 this.scrollTop = this.nextScrollTop;
24598 this.redrawRowsAfterScroll();
24599 }
24600 return frameNeeded;
24601 };
24602 // called by scrollHorizontally method and alignedGridsService
24603 GridBodyScrollFeature.prototype.setHorizontalScrollPosition = function (hScrollPosition) {
24604 var minScrollLeft = 0;
24605 var maxScrollLeft = this.centerRowContainerCtrl.getViewportElement().scrollWidth - this.centerRowContainerCtrl.getCenterWidth();
24606 if (this.shouldBlockScrollUpdate('horizontal', hScrollPosition)) {
24607 if (this.enableRtl && Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isRtlNegativeScroll"])()) {
24608 hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;
24609 }
24610 else {
24611 hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);
24612 }
24613 }
24614 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setScrollLeft"])(this.centerRowContainerCtrl.getViewportElement(), Math.abs(hScrollPosition), this.enableRtl);
24615 // we need to manually do the event handling (rather than wait for the event)
24616 // for the alignedGridsService, as if we don't, the aligned grid service gets
24617 // notified async, and then it's 'consuming' flag doesn't get used right, and
24618 // we can end up with an infinite loop
24619 this.doHorizontalScroll(hScrollPosition);
24620 };
24621 GridBodyScrollFeature.prototype.setVerticalScrollPosition = function (vScrollPosition) {
24622 this.eBodyViewport.scrollTop = vScrollPosition;
24623 };
24624 GridBodyScrollFeature.prototype.getVScrollPosition = function () {
24625 var result = {
24626 top: this.eBodyViewport.scrollTop,
24627 bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight
24628 };
24629 return result;
24630 };
24631 GridBodyScrollFeature.prototype.getHScrollPosition = function () {
24632 return this.centerRowContainerCtrl.getHScrollPosition();
24633 };
24634 GridBodyScrollFeature.prototype.isHorizontalScrollShowing = function () {
24635 return this.centerRowContainerCtrl.isHorizontalScrollShowing();
24636 };
24637 // called by the headerRootComp and moveColumnController
24638 GridBodyScrollFeature.prototype.scrollHorizontally = function (pixels) {
24639 var oldScrollPosition = this.centerRowContainerCtrl.getViewportElement().scrollLeft;
24640 this.setHorizontalScrollPosition(oldScrollPosition + pixels);
24641 return this.centerRowContainerCtrl.getViewportElement().scrollLeft - oldScrollPosition;
24642 };
24643 // gets called by rowRenderer when new data loaded, as it will want to scroll to the top
24644 GridBodyScrollFeature.prototype.scrollToTop = function () {
24645 this.eBodyViewport.scrollTop = 0;
24646 };
24647 // Valid values for position are bottom, middle and top
24648 GridBodyScrollFeature.prototype.ensureNodeVisible = function (comparator, position) {
24649 if (position === void 0) { position = null; }
24650 // look for the node index we want to display
24651 var rowCount = this.rowModel.getRowCount();
24652 var comparatorIsAFunction = typeof comparator === 'function';
24653 var indexToSelect = -1;
24654 // go through all the nodes, find the one we want to show
24655 for (var i = 0; i < rowCount; i++) {
24656 var node = this.rowModel.getRow(i);
24657 if (comparatorIsAFunction) {
24658 if (comparator(node)) {
24659 indexToSelect = i;
24660 break;
24661 }
24662 }
24663 else {
24664 // check object equality against node and data
24665 if (comparator === node || comparator === node.data) {
24666 indexToSelect = i;
24667 break;
24668 }
24669 }
24670 }
24671 if (indexToSelect >= 0) {
24672 this.ensureIndexVisible(indexToSelect, position);
24673 }
24674 };
24675 // Valid values for position are bottom, middle and top
24676 // position should be {'top','middle','bottom', or undefined/null}.
24677 // if undefined/null, then the grid will to the minimal amount of scrolling,
24678 // eg if grid needs to scroll up, it scrolls until row is on top,
24679 // if grid needs to scroll down, it scrolls until row is on bottom,
24680 // if row is already in view, grid does not scroll
24681 GridBodyScrollFeature.prototype.ensureIndexVisible = function (index, position) {
24682 // if for print or auto height, everything is always visible
24683 if (this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].DOM_LAYOUT_PRINT) {
24684 return;
24685 }
24686 var rowCount = this.paginationProxy.getRowCount();
24687 if (typeof index !== 'number' || index < 0 || index >= rowCount) {
24688 console.warn('invalid row index for ensureIndexVisible: ' + index);
24689 return;
24690 }
24691 var isPaging = this.gridOptionsWrapper.isPagination();
24692 var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();
24693 if (!paginationPanelEnabled) {
24694 this.paginationProxy.goToPageWithIndex(index);
24695 }
24696 var rowNode = this.paginationProxy.getRow(index);
24697 var rowGotShiftedDuringOperation;
24698 do {
24699 var startingRowTop = rowNode.rowTop;
24700 var startingRowHeight = rowNode.rowHeight;
24701 var paginationOffset = this.paginationProxy.getPixelOffset();
24702 var rowTopPixel = rowNode.rowTop - paginationOffset;
24703 var rowBottomPixel = rowTopPixel + rowNode.rowHeight;
24704 var scrollPosition = this.getVScrollPosition();
24705 var heightOffset = this.heightScaler.getDivStretchOffset();
24706 var vScrollTop = scrollPosition.top + heightOffset;
24707 var vScrollBottom = scrollPosition.bottom + heightOffset;
24708 var viewportHeight = vScrollBottom - vScrollTop;
24709 // work out the pixels for top, middle and bottom up front,
24710 // make the if/else below easier to read
24711 var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);
24712 var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);
24713 // make sure if middle, the row is not outside the top of the grid
24714 var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);
24715 var rowBelowViewport = vScrollTop > rowTopPixel;
24716 var rowAboveViewport = vScrollBottom < rowBottomPixel;
24717 var newScrollPosition = null;
24718 if (position === 'top') {
24719 newScrollPosition = pxTop;
24720 }
24721 else if (position === 'bottom') {
24722 newScrollPosition = pxBottom;
24723 }
24724 else if (position === 'middle') {
24725 newScrollPosition = pxMiddle;
24726 }
24727 else if (rowBelowViewport) {
24728 // if row is before, scroll up with row at top
24729 newScrollPosition = pxTop;
24730 }
24731 else if (rowAboveViewport) {
24732 // if row is below, scroll down with row at bottom
24733 newScrollPosition = pxBottom;
24734 }
24735 if (newScrollPosition !== null) {
24736 this.eBodyViewport.scrollTop = newScrollPosition;
24737 this.rowRenderer.redrawAfterScroll();
24738 }
24739 // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),
24740 // the height of a row changes due to lazy calculation of row heights when using
24741 // colDef.autoHeight or gridOptions.getRowHeight.
24742 // if row was shifted, then the position we scrolled to is incorrect.
24743 rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)
24744 || (startingRowHeight !== rowNode.rowHeight);
24745 } while (rowGotShiftedDuringOperation);
24746 // so when we return back to user, the cells have rendered
24747 this.animationFrameService.flushAllFrames();
24748 };
24749 GridBodyScrollFeature.prototype.ensureColumnVisible = function (key, position) {
24750 if (position === void 0) { position = 'auto'; }
24751 var column = this.columnModel.getGridColumn(key);
24752 if (!column) {
24753 return;
24754 }
24755 // calling ensureColumnVisible on a pinned column doesn't make sense
24756 if (column.isPinned()) {
24757 return;
24758 }
24759 // defensive
24760 if (!this.columnModel.isColumnDisplayed(column)) {
24761 return;
24762 }
24763 var newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);
24764 if (newHorizontalScroll !== null) {
24765 this.centerRowContainerCtrl.setCenterViewportScrollLeft(newHorizontalScroll);
24766 }
24767 // this will happen anyway, as the move will cause a 'scroll' event on the body, however
24768 // it is possible that the ensureColumnVisible method is called from within AG Grid and
24769 // the caller will need to have the columns rendered to continue, which will be before
24770 // the event has been worked on (which is the case for cell navigation).
24771 this.centerRowContainerCtrl.onHorizontalViewportChanged();
24772 // so when we return back to user, the cells have rendered
24773 this.animationFrameService.flushAllFrames();
24774 };
24775 GridBodyScrollFeature.prototype.getPositionedHorizontalScroll = function (column, position) {
24776 var _a = this.isColumnOutsideViewport(column), columnBeforeStart = _a.columnBeforeStart, columnAfterEnd = _a.columnAfterEnd;
24777 var viewportTooSmallForColumn = this.centerRowContainerCtrl.getCenterWidth() < column.getActualWidth();
24778 var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();
24779 var isRtl = this.enableRtl;
24780 var alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;
24781 var alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;
24782 if (position !== 'auto') {
24783 alignColToStart = position === 'start';
24784 alignColToEnd = position === 'end';
24785 }
24786 var isMiddle = position === 'middle';
24787 if (alignColToStart || alignColToEnd || isMiddle) {
24788 var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colMiddle = _b.colMiddle, colRight = _b.colRight;
24789 if (isMiddle) {
24790 return colMiddle - viewportWidth / 2;
24791 }
24792 if (alignColToStart) {
24793 return isRtl ? colRight : colLeft;
24794 }
24795 return isRtl ? (colLeft - viewportWidth) : (colRight - viewportWidth);
24796 }
24797 return null;
24798 };
24799 GridBodyScrollFeature.prototype.isColumnOutsideViewport = function (column) {
24800 var _a = this.getViewportBounds(), viewportStart = _a.start, viewportEnd = _a.end;
24801 var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colRight = _b.colRight;
24802 var isRtl = this.enableRtl;
24803 var columnBeforeStart = isRtl ? (viewportStart > colRight) : (viewportEnd < colRight);
24804 var columnAfterEnd = isRtl ? (viewportEnd < colLeft) : (viewportStart > colLeft);
24805 return { columnBeforeStart: columnBeforeStart, columnAfterEnd: columnAfterEnd };
24806 };
24807 GridBodyScrollFeature.prototype.getColumnBounds = function (column) {
24808 var isRtl = this.enableRtl;
24809 var bodyWidth = this.columnModel.getBodyContainerWidth();
24810 var colWidth = column.getActualWidth();
24811 var colLeft = column.getLeft();
24812 var multiplier = isRtl ? -1 : 1;
24813 var colLeftPixel = isRtl ? (bodyWidth - colLeft) : colLeft;
24814 var colRightPixel = colLeftPixel + colWidth * multiplier;
24815 var colMidPixel = colLeftPixel + colWidth / 2 * multiplier;
24816 return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };
24817 };
24818 GridBodyScrollFeature.prototype.getViewportBounds = function () {
24819 var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();
24820 var scrollPosition = this.centerRowContainerCtrl.getCenterViewportScrollLeft();
24821 var viewportStartPixel = scrollPosition;
24822 var viewportEndPixel = viewportWidth + scrollPosition;
24823 return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };
24824 };
24825 __decorate([
24826 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
24827 ], GridBodyScrollFeature.prototype, "ctrlsService", void 0);
24828 __decorate([
24829 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('animationFrameService')
24830 ], GridBodyScrollFeature.prototype, "animationFrameService", void 0);
24831 __decorate([
24832 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
24833 ], GridBodyScrollFeature.prototype, "columnApi", void 0);
24834 __decorate([
24835 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
24836 ], GridBodyScrollFeature.prototype, "gridApi", void 0);
24837 __decorate([
24838 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
24839 ], GridBodyScrollFeature.prototype, "paginationProxy", void 0);
24840 __decorate([
24841 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
24842 ], GridBodyScrollFeature.prototype, "rowModel", void 0);
24843 __decorate([
24844 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowContainerHeightService')
24845 ], GridBodyScrollFeature.prototype, "heightScaler", void 0);
24846 __decorate([
24847 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
24848 ], GridBodyScrollFeature.prototype, "rowRenderer", void 0);
24849 __decorate([
24850 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
24851 ], GridBodyScrollFeature.prototype, "columnModel", void 0);
24852 __decorate([
24853 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
24854 ], GridBodyScrollFeature.prototype, "postConstruct", null);
24855 return GridBodyScrollFeature;
24856}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
24857
24858
24859
24860
24861
24862/***/ }),
24863/* 116 */
24864/***/ (function(module, __webpack_exports__, __webpack_require__) {
24865
24866"use strict";
24867__webpack_require__.r(__webpack_exports__);
24868/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowDragFeature", function() { return RowDragFeature; });
24869/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97);
24870/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
24871/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
24872/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(94);
24873/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
24874/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
24875/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
24876/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
24877/* harmony import */ var _autoScrollService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(117);
24878/**
24879 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
24880 * @version v27.3.0
24881 * @link https://www.ag-grid.com/
24882 * @license MIT
24883 */
24884var __extends = (undefined && undefined.__extends) || (function () {
24885 var extendStatics = function (d, b) {
24886 extendStatics = Object.setPrototypeOf ||
24887 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
24888 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
24889 return extendStatics(d, b);
24890 };
24891 return function (d, b) {
24892 extendStatics(d, b);
24893 function __() { this.constructor = d; }
24894 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
24895 };
24896})();
24897var __assign = (undefined && undefined.__assign) || function () {
24898 __assign = Object.assign || function(t) {
24899 for (var s, i = 1, n = arguments.length; i < n; i++) {
24900 s = arguments[i];
24901 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
24902 t[p] = s[p];
24903 }
24904 return t;
24905 };
24906 return __assign.apply(this, arguments);
24907};
24908var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
24909 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24910 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
24911 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;
24912 return c > 3 && r && Object.defineProperty(target, key, r), r;
24913};
24914var __read = (undefined && undefined.__read) || function (o, n) {
24915 var m = typeof Symbol === "function" && o[Symbol.iterator];
24916 if (!m) return o;
24917 var i = m.call(o), r, ar = [], e;
24918 try {
24919 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
24920 }
24921 catch (error) { e = { error: error }; }
24922 finally {
24923 try {
24924 if (r && !r.done && (m = i["return"])) m.call(i);
24925 }
24926 finally { if (e) throw e.error; }
24927 }
24928 return ar;
24929};
24930var __spread = (undefined && undefined.__spread) || function () {
24931 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
24932 return ar;
24933};
24934
24935
24936
24937
24938
24939
24940
24941
24942
24943var RowDragFeature = /** @class */ (function (_super) {
24944 __extends(RowDragFeature, _super);
24945 function RowDragFeature(eContainer) {
24946 var _this = _super.call(this) || this;
24947 _this.isMultiRowDrag = false;
24948 _this.isGridSorted = false;
24949 _this.isGridFiltered = false;
24950 _this.isRowGroupActive = false;
24951 _this.eContainer = eContainer;
24952 return _this;
24953 }
24954 RowDragFeature.prototype.postConstruct = function () {
24955 var _this = this;
24956 if (this.gridOptionsWrapper.isRowModelDefault()) {
24957 this.clientSideRowModel = this.rowModel;
24958 }
24959 var refreshStatus = function () {
24960 _this.onSortChanged();
24961 _this.onFilterChanged();
24962 _this.onRowGroupChanged();
24963 };
24964 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
24965 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
24966 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));
24967 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_MODEL_UPDATED, function () {
24968 refreshStatus();
24969 });
24970 refreshStatus();
24971 this.ctrlsService.whenReady(function () {
24972 var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
24973 _this.autoScrollService = new _autoScrollService__WEBPACK_IMPORTED_MODULE_8__["AutoScrollService"]({
24974 scrollContainer: gridBodyCon.getBodyViewportElement(),
24975 scrollAxis: 'y',
24976 getVerticalPosition: function () { return gridBodyCon.getScrollFeature().getVScrollPosition().top; },
24977 setVerticalPosition: function (position) { return gridBodyCon.getScrollFeature().setVerticalScrollPosition(position); },
24978 onScrollCallback: function () { _this.onDragging(_this.lastDraggingEvent); }
24979 });
24980 });
24981 };
24982 RowDragFeature.prototype.onSortChanged = function () {
24983 this.isGridSorted = this.sortController.isSortActive();
24984 };
24985 RowDragFeature.prototype.onFilterChanged = function () {
24986 this.isGridFiltered = this.filterManager.isAnyFilterPresent();
24987 };
24988 RowDragFeature.prototype.onRowGroupChanged = function () {
24989 var rowGroups = this.columnModel.getRowGroupColumns();
24990 this.isRowGroupActive = !Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["missingOrEmpty"])(rowGroups);
24991 };
24992 RowDragFeature.prototype.getContainer = function () {
24993 return this.eContainer;
24994 };
24995 RowDragFeature.prototype.isInterestedIn = function (type) {
24996 return type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].RowDrag;
24997 };
24998 RowDragFeature.prototype.getIconName = function () {
24999 var managedDrag = this.gridOptionsWrapper.isRowDragManaged();
25000 if (managedDrag && this.shouldPreventRowMove()) {
25001 return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_NOT_ALLOWED;
25002 }
25003 return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_MOVE;
25004 };
25005 RowDragFeature.prototype.shouldPreventRowMove = function () {
25006 return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;
25007 };
25008 RowDragFeature.prototype.getRowNodes = function (draggingEvent) {
25009 var _this = this;
25010 if (!this.isFromThisGrid(draggingEvent)) {
25011 return draggingEvent.dragItem.rowNodes || [];
25012 }
25013 var isRowDragMultiRow = this.gridOptionsWrapper.isRowDragMultiRow();
25014 var selectedNodes = __spread(this.selectionService.getSelectedNodes()).sort(function (a, b) { return _this.getRowIndexNumber(a) - _this.getRowIndexNumber(b); });
25015 var currentNode = draggingEvent.dragItem.rowNode;
25016 if (isRowDragMultiRow && selectedNodes.indexOf(currentNode) !== -1) {
25017 this.isMultiRowDrag = true;
25018 return selectedNodes;
25019 }
25020 this.isMultiRowDrag = false;
25021 return [currentNode];
25022 };
25023 RowDragFeature.prototype.onDragEnter = function (draggingEvent) {
25024 // builds a lits of all rows being dragged before firing events
25025 draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);
25026 // when entering, we fire the enter event, then in onEnterOrDragging,
25027 // we also fire the move event. so we get both events when entering.
25028 this.dispatchGridEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_ENTER, draggingEvent);
25029 this.getRowNodes(draggingEvent).forEach(function (rowNode) {
25030 rowNode.setDragging(true);
25031 });
25032 this.onEnterOrDragging(draggingEvent);
25033 };
25034 RowDragFeature.prototype.onDragging = function (draggingEvent) {
25035 this.onEnterOrDragging(draggingEvent);
25036 };
25037 RowDragFeature.prototype.isFromThisGrid = function (draggingEvent) {
25038 var dragSourceDomDataKey = draggingEvent.dragSource.dragSourceDomDataKey;
25039 return dragSourceDomDataKey === this.gridOptionsWrapper.getDomDataKey();
25040 };
25041 RowDragFeature.prototype.isDropZoneWithinThisGrid = function (draggingEvent) {
25042 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
25043 var gridGui = gridBodyCon.getGui();
25044 var dropZoneTarget = draggingEvent.dropZoneTarget;
25045 return !gridGui.contains(dropZoneTarget);
25046 };
25047 RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {
25048 // this event is fired for enter and move
25049 this.dispatchGridEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_MOVE, draggingEvent);
25050 this.lastDraggingEvent = draggingEvent;
25051 var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
25052 var managedDrag = this.gridOptionsWrapper.isRowDragManaged();
25053 if (managedDrag) {
25054 this.doManagedDrag(draggingEvent, pixel);
25055 }
25056 this.autoScrollService.check(draggingEvent.event);
25057 };
25058 RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {
25059 var isFromThisGrid = this.isFromThisGrid(draggingEvent);
25060 var managedDrag = this.gridOptionsWrapper.isRowDragManaged();
25061 var rowNodes = draggingEvent.dragItem.rowNodes;
25062 if (managedDrag && this.shouldPreventRowMove()) {
25063 return;
25064 }
25065 if (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !isFromThisGrid) {
25066 if (!this.isDropZoneWithinThisGrid(draggingEvent)) {
25067 this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);
25068 }
25069 }
25070 else {
25071 this.moveRows(rowNodes, pixel);
25072 }
25073 };
25074 RowDragFeature.prototype.getRowIndexNumber = function (rowNode) {
25075 return parseInt(Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(rowNode.getRowIndexString().split('-')), 10);
25076 };
25077 RowDragFeature.prototype.moveRowAndClearHighlight = function (draggingEvent) {
25078 var _this = this;
25079 var lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();
25080 var isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === _entities_rowNode__WEBPACK_IMPORTED_MODULE_3__["RowHighlightPosition"].Below;
25081 var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
25082 var rowNodes = draggingEvent.dragItem.rowNodes;
25083 var increment = isBelow ? 1 : 0;
25084 if (this.isFromThisGrid(draggingEvent)) {
25085 rowNodes.forEach(function (rowNode) {
25086 if (rowNode.rowTop < pixel) {
25087 increment -= 1;
25088 }
25089 });
25090 this.moveRows(rowNodes, pixel, increment);
25091 }
25092 else {
25093 var getRowIdFunc_1 = this.gridOptionsWrapper.getRowIdFunc();
25094 var addIndex = this.clientSideRowModel.getRowIndexAtPixel(pixel) + 1;
25095 if (this.clientSideRowModel.getHighlightPosition(pixel) === _entities_rowNode__WEBPACK_IMPORTED_MODULE_3__["RowHighlightPosition"].Above) {
25096 addIndex--;
25097 }
25098 this.clientSideRowModel.updateRowData({
25099 add: rowNodes
25100 .map(function (node) { return node.data; })
25101 .filter(function (data) { return !_this.clientSideRowModel.getRowNode(getRowIdFunc_1 ? getRowIdFunc_1({ data: data, level: 0 }) : data.id); }),
25102 addIndex: addIndex
25103 });
25104 }
25105 this.clearRowHighlight();
25106 };
25107 RowDragFeature.prototype.clearRowHighlight = function () {
25108 this.clientSideRowModel.highlightRowAtPixel(null);
25109 };
25110 RowDragFeature.prototype.moveRows = function (rowNodes, pixel, increment) {
25111 if (increment === void 0) { increment = 0; }
25112 var rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);
25113 if (rowWasMoved) {
25114 this.focusService.clearFocusedCell();
25115 if (this.rangeService) {
25116 this.rangeService.removeAllCellRanges();
25117 }
25118 }
25119 };
25120 RowDragFeature.prototype.addRowDropZone = function (params) {
25121 var _this = this;
25122 if (!params.getContainer()) {
25123 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');
25124 return;
25125 }
25126 if (this.dragAndDropService.findExternalZone(params)) {
25127 console.warn('AG Grid: addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.');
25128 return;
25129 }
25130 var processedParams = {
25131 getContainer: params.getContainer
25132 };
25133 if (params.fromGrid) {
25134 params.fromGrid = undefined;
25135 processedParams = params;
25136 }
25137 else {
25138 if (params.onDragEnter) {
25139 processedParams.onDragEnter = function (e) {
25140 params.onDragEnter(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_ENTER, e));
25141 };
25142 }
25143 if (params.onDragLeave) {
25144 processedParams.onDragLeave = function (e) {
25145 params.onDragLeave(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_LEAVE, e));
25146 };
25147 }
25148 if (params.onDragging) {
25149 processedParams.onDragging = function (e) {
25150 params.onDragging(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_MOVE, e));
25151 };
25152 }
25153 if (params.onDragStop) {
25154 processedParams.onDragStop = function (e) {
25155 params.onDragStop(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_END, e));
25156 };
25157 }
25158 }
25159 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));
25160 };
25161 RowDragFeature.prototype.getRowDropZone = function (events) {
25162 var _this = this;
25163 var getContainer = this.getContainer.bind(this);
25164 var onDragEnter = this.onDragEnter.bind(this);
25165 var onDragLeave = this.onDragLeave.bind(this);
25166 var onDragging = this.onDragging.bind(this);
25167 var onDragStop = this.onDragStop.bind(this);
25168 if (!events) {
25169 return { getContainer: getContainer, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDragging: onDragging, onDragStop: onDragStop, /* @private */ fromGrid: true };
25170 }
25171 return {
25172 getContainer: getContainer,
25173 onDragEnter: events.onDragEnter
25174 ? (function (e) {
25175 onDragEnter(e);
25176 events.onDragEnter(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_ENTER, e));
25177 })
25178 : onDragEnter,
25179 onDragLeave: events.onDragLeave
25180 ? (function (e) {
25181 onDragLeave(e);
25182 events.onDragLeave(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_LEAVE, e));
25183 })
25184 : onDragLeave,
25185 onDragging: events.onDragging
25186 ? (function (e) {
25187 onDragging(e);
25188 events.onDragging(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_MOVE, e));
25189 })
25190 : onDragging,
25191 onDragStop: events.onDragStop
25192 ? (function (e) {
25193 onDragStop(e);
25194 events.onDragStop(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_END, e));
25195 })
25196 : onDragStop,
25197 fromGrid: true /* @private */
25198 };
25199 };
25200 RowDragFeature.prototype.draggingToRowDragEvent = function (type, draggingEvent) {
25201 var yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
25202 var mouseIsPastLastRow = yNormalised > this.paginationProxy.getCurrentPageHeight();
25203 var overIndex = -1;
25204 var overNode;
25205 if (!mouseIsPastLastRow) {
25206 overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);
25207 overNode = this.rowModel.getRow(overIndex);
25208 }
25209 var vDirectionString;
25210 switch (draggingEvent.vDirection) {
25211 case _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["VerticalDirection"].Down:
25212 vDirectionString = 'down';
25213 break;
25214 case _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["VerticalDirection"].Up:
25215 vDirectionString = 'up';
25216 break;
25217 default:
25218 vDirectionString = null;
25219 break;
25220 }
25221 var event = {
25222 type: type,
25223 api: this.gridOptionsWrapper.getApi(),
25224 columnApi: this.gridOptionsWrapper.getColumnApi(),
25225 event: draggingEvent.event,
25226 node: draggingEvent.dragItem.rowNode,
25227 nodes: draggingEvent.dragItem.rowNodes,
25228 overIndex: overIndex,
25229 overNode: overNode,
25230 y: yNormalised,
25231 vDirection: vDirectionString
25232 };
25233 return event;
25234 };
25235 RowDragFeature.prototype.dispatchGridEvent = function (type, draggingEvent) {
25236 var event = this.draggingToRowDragEvent(type, draggingEvent);
25237 this.eventService.dispatchEvent(event);
25238 };
25239 RowDragFeature.prototype.onDragLeave = function (draggingEvent) {
25240 this.dispatchGridEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_LEAVE, draggingEvent);
25241 this.stopDragging(draggingEvent);
25242 if (this.gridOptionsWrapper.isRowDragManaged()) {
25243 this.clearRowHighlight();
25244 }
25245 if (this.isFromThisGrid(draggingEvent)) {
25246 this.isMultiRowDrag = false;
25247 }
25248 };
25249 RowDragFeature.prototype.onDragStop = function (draggingEvent) {
25250 this.dispatchGridEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_END, draggingEvent);
25251 this.stopDragging(draggingEvent);
25252 if (this.gridOptionsWrapper.isRowDragManaged() &&
25253 (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !this.isFromThisGrid(draggingEvent)) &&
25254 !this.isDropZoneWithinThisGrid(draggingEvent)) {
25255 this.moveRowAndClearHighlight(draggingEvent);
25256 }
25257 };
25258 RowDragFeature.prototype.stopDragging = function (draggingEvent) {
25259 this.autoScrollService.ensureCleared();
25260 this.getRowNodes(draggingEvent).forEach(function (rowNode) {
25261 rowNode.setDragging(false);
25262 });
25263 };
25264 __decorate([
25265 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
25266 ], RowDragFeature.prototype, "dragAndDropService", void 0);
25267 __decorate([
25268 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowModel')
25269 ], RowDragFeature.prototype, "rowModel", void 0);
25270 __decorate([
25271 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('paginationProxy')
25272 ], RowDragFeature.prototype, "paginationProxy", void 0);
25273 __decorate([
25274 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
25275 ], RowDragFeature.prototype, "columnModel", void 0);
25276 __decorate([
25277 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
25278 ], RowDragFeature.prototype, "focusService", void 0);
25279 __decorate([
25280 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('sortController')
25281 ], RowDragFeature.prototype, "sortController", void 0);
25282 __decorate([
25283 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('filterManager')
25284 ], RowDragFeature.prototype, "filterManager", void 0);
25285 __decorate([
25286 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('selectionService')
25287 ], RowDragFeature.prototype, "selectionService", void 0);
25288 __decorate([
25289 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('mouseEventService')
25290 ], RowDragFeature.prototype, "mouseEventService", void 0);
25291 __decorate([
25292 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
25293 ], RowDragFeature.prototype, "ctrlsService", void 0);
25294 __decorate([
25295 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('rangeService')
25296 ], RowDragFeature.prototype, "rangeService", void 0);
25297 __decorate([
25298 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
25299 ], RowDragFeature.prototype, "columnApi", void 0);
25300 __decorate([
25301 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
25302 ], RowDragFeature.prototype, "gridApi", void 0);
25303 __decorate([
25304 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
25305 ], RowDragFeature.prototype, "postConstruct", null);
25306 return RowDragFeature;
25307}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
25308
25309
25310
25311
25312
25313/***/ }),
25314/* 117 */
25315/***/ (function(module, __webpack_exports__, __webpack_require__) {
25316
25317"use strict";
25318__webpack_require__.r(__webpack_exports__);
25319/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AutoScrollService", function() { return AutoScrollService; });
25320/**
25321 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
25322 * @version v27.3.0
25323 * @link https://www.ag-grid.com/
25324 * @license MIT
25325 */
25326var AutoScrollService = /** @class */ (function () {
25327 function AutoScrollService(params) {
25328 this.tickingInterval = null;
25329 this.onScrollCallback = null;
25330 this.scrollContainer = params.scrollContainer;
25331 this.scrollHorizontally = params.scrollAxis.indexOf('x') !== -1;
25332 this.scrollVertically = params.scrollAxis.indexOf('y') !== -1;
25333 this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;
25334 if (params.onScrollCallback) {
25335 this.onScrollCallback = params.onScrollCallback;
25336 }
25337 if (this.scrollVertically) {
25338 this.getVerticalPosition = params.getVerticalPosition;
25339 this.setVerticalPosition = params.setVerticalPosition;
25340 }
25341 if (this.scrollHorizontally) {
25342 this.getHorizontalPosition = params.getHorizontalPosition;
25343 this.setHorizontalPosition = params.setHorizontalPosition;
25344 }
25345 this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || (function () { return false; });
25346 this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (function () { return false; });
25347 }
25348 AutoScrollService.prototype.check = function (mouseEvent, forceSkipVerticalScroll) {
25349 if (forceSkipVerticalScroll === void 0) { forceSkipVerticalScroll = false; }
25350 var skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();
25351 if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {
25352 return;
25353 }
25354 var rect = this.scrollContainer.getBoundingClientRect();
25355 var scrollTick = this.scrollByTick;
25356 this.tickLeft = mouseEvent.clientX < (rect.left + scrollTick);
25357 this.tickRight = mouseEvent.clientX > (rect.right - scrollTick);
25358 this.tickUp = mouseEvent.clientY < (rect.top + scrollTick) && !skipVerticalScroll;
25359 this.tickDown = mouseEvent.clientY > (rect.bottom - scrollTick) && !skipVerticalScroll;
25360 if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {
25361 this.ensureTickingStarted();
25362 }
25363 else {
25364 this.ensureCleared();
25365 }
25366 };
25367 AutoScrollService.prototype.ensureTickingStarted = function () {
25368 if (this.tickingInterval === null) {
25369 this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);
25370 this.tickCount = 0;
25371 }
25372 };
25373 AutoScrollService.prototype.doTick = function () {
25374 this.tickCount++;
25375 var tickAmount;
25376 tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);
25377 if (this.scrollVertically) {
25378 var vScrollPosition = this.getVerticalPosition();
25379 if (this.tickUp) {
25380 this.setVerticalPosition(vScrollPosition - tickAmount);
25381 }
25382 if (this.tickDown) {
25383 this.setVerticalPosition(vScrollPosition + tickAmount);
25384 }
25385 }
25386 if (this.scrollHorizontally) {
25387 var hScrollPosition = this.getHorizontalPosition();
25388 if (this.tickLeft) {
25389 this.setHorizontalPosition(hScrollPosition - tickAmount);
25390 }
25391 if (this.tickRight) {
25392 this.setHorizontalPosition(hScrollPosition + tickAmount);
25393 }
25394 }
25395 if (this.onScrollCallback) {
25396 this.onScrollCallback();
25397 }
25398 };
25399 AutoScrollService.prototype.ensureCleared = function () {
25400 if (this.tickingInterval) {
25401 window.clearInterval(this.tickingInterval);
25402 this.tickingInterval = null;
25403 }
25404 };
25405 return AutoScrollService;
25406}());
25407
25408
25409
25410
25411
25412/***/ }),
25413/* 118 */
25414/***/ (function(module, __webpack_exports__, __webpack_require__) {
25415
25416"use strict";
25417__webpack_require__.r(__webpack_exports__);
25418/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerName", function() { return RowContainerName; });
25419/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerType", function() { return RowContainerType; });
25420/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRowContainerTypeForName", function() { return getRowContainerTypeForName; });
25421/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerCtrl", function() { return RowContainerCtrl; });
25422/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
25423/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
25424/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
25425/* harmony import */ var _rowContainerEventsFeature__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(119);
25426/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
25427/* harmony import */ var _viewportSizeFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(131);
25428/* harmony import */ var _utils_map__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(27);
25429/* harmony import */ var _setPinnedLeftWidthFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(132);
25430/* harmony import */ var _setPinnedRightWidthFeature__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(133);
25431/* harmony import */ var _setHeightFeature__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(134);
25432/* harmony import */ var _dragListenerFeature__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(135);
25433/* harmony import */ var _centerWidthFeature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(136);
25434/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(15);
25435/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(112);
25436/**
25437 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
25438 * @version v27.3.0
25439 * @link https://www.ag-grid.com/
25440 * @license MIT
25441 */
25442var __extends = (undefined && undefined.__extends) || (function () {
25443 var extendStatics = function (d, b) {
25444 extendStatics = Object.setPrototypeOf ||
25445 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25446 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
25447 return extendStatics(d, b);
25448 };
25449 return function (d, b) {
25450 extendStatics(d, b);
25451 function __() { this.constructor = d; }
25452 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
25453 };
25454})();
25455var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
25456 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
25457 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25458 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;
25459 return c > 3 && r && Object.defineProperty(target, key, r), r;
25460};
25461var __read = (undefined && undefined.__read) || function (o, n) {
25462 var m = typeof Symbol === "function" && o[Symbol.iterator];
25463 if (!m) return o;
25464 var i = m.call(o), r, ar = [], e;
25465 try {
25466 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
25467 }
25468 catch (error) { e = { error: error }; }
25469 finally {
25470 try {
25471 if (r && !r.done && (m = i["return"])) m.call(i);
25472 }
25473 finally { if (e) throw e.error; }
25474 }
25475 return ar;
25476};
25477var __spread = (undefined && undefined.__spread) || function () {
25478 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
25479 return ar;
25480};
25481
25482
25483
25484
25485
25486
25487
25488
25489
25490
25491
25492
25493
25494
25495var RowContainerName;
25496(function (RowContainerName) {
25497 RowContainerName["LEFT"] = "left";
25498 RowContainerName["RIGHT"] = "right";
25499 RowContainerName["CENTER"] = "center";
25500 RowContainerName["FULL_WIDTH"] = "fullWidth";
25501 RowContainerName["TOP_LEFT"] = "topLeft";
25502 RowContainerName["TOP_RIGHT"] = "topRight";
25503 RowContainerName["TOP_CENTER"] = "topCenter";
25504 RowContainerName["TOP_FULL_WIDTH"] = "topFullWidth";
25505 RowContainerName["BOTTOM_LEFT"] = "bottomLeft";
25506 RowContainerName["BOTTOM_RIGHT"] = "bottomRight";
25507 RowContainerName["BOTTOM_CENTER"] = "bottomCenter";
25508 RowContainerName["BOTTOM_FULL_WIDTH"] = "bottomFullWidth";
25509})(RowContainerName || (RowContainerName = {}));
25510var RowContainerType;
25511(function (RowContainerType) {
25512 RowContainerType["LEFT"] = "left";
25513 RowContainerType["RIGHT"] = "right";
25514 RowContainerType["CENTER"] = "center";
25515 RowContainerType["FULL_WIDTH"] = "fullWidth";
25516})(RowContainerType || (RowContainerType = {}));
25517function getRowContainerTypeForName(name) {
25518 switch (name) {
25519 case RowContainerName.CENTER:
25520 case RowContainerName.TOP_CENTER:
25521 case RowContainerName.BOTTOM_CENTER:
25522 return RowContainerType.CENTER;
25523 case RowContainerName.LEFT:
25524 case RowContainerName.TOP_LEFT:
25525 case RowContainerName.BOTTOM_LEFT:
25526 return RowContainerType.LEFT;
25527 case RowContainerName.RIGHT:
25528 case RowContainerName.TOP_RIGHT:
25529 case RowContainerName.BOTTOM_RIGHT:
25530 return RowContainerType.RIGHT;
25531 case RowContainerName.FULL_WIDTH:
25532 case RowContainerName.TOP_FULL_WIDTH:
25533 case RowContainerName.BOTTOM_FULL_WIDTH:
25534 return RowContainerType.FULL_WIDTH;
25535 default:
25536 throw Error('Invalid Row Container Type');
25537 }
25538}
25539var ContainerCssClasses = Object(_utils_map__WEBPACK_IMPORTED_MODULE_6__["convertToMap"])([
25540 [RowContainerName.CENTER, 'ag-center-cols-container'],
25541 [RowContainerName.LEFT, 'ag-pinned-left-cols-container'],
25542 [RowContainerName.RIGHT, 'ag-pinned-right-cols-container'],
25543 [RowContainerName.FULL_WIDTH, 'ag-full-width-container'],
25544 [RowContainerName.TOP_CENTER, 'ag-floating-top-container'],
25545 [RowContainerName.TOP_LEFT, 'ag-pinned-left-floating-top'],
25546 [RowContainerName.TOP_RIGHT, 'ag-pinned-right-floating-top'],
25547 [RowContainerName.TOP_FULL_WIDTH, 'ag-floating-top-full-width-container'],
25548 [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-container'],
25549 [RowContainerName.BOTTOM_LEFT, 'ag-pinned-left-floating-bottom'],
25550 [RowContainerName.BOTTOM_RIGHT, 'ag-pinned-right-floating-bottom'],
25551 [RowContainerName.BOTTOM_FULL_WIDTH, 'ag-floating-bottom-full-width-container'],
25552]);
25553var ViewportCssClasses = Object(_utils_map__WEBPACK_IMPORTED_MODULE_6__["convertToMap"])([
25554 [RowContainerName.CENTER, 'ag-center-cols-viewport'],
25555 [RowContainerName.TOP_CENTER, 'ag-floating-top-viewport'],
25556 [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-viewport'],
25557]);
25558var WrapperCssClasses = Object(_utils_map__WEBPACK_IMPORTED_MODULE_6__["convertToMap"])([
25559 [RowContainerName.CENTER, 'ag-center-cols-clipper'],
25560]);
25561var RowContainerCtrl = /** @class */ (function (_super) {
25562 __extends(RowContainerCtrl, _super);
25563 function RowContainerCtrl(name) {
25564 var _this = _super.call(this) || this;
25565 _this.name = name;
25566 return _this;
25567 }
25568 RowContainerCtrl.getRowContainerCssClasses = function (name) {
25569 var containerClass = ContainerCssClasses.get(name);
25570 var viewportClass = ViewportCssClasses.get(name);
25571 var wrapperClass = WrapperCssClasses.get(name);
25572 return { container: containerClass, viewport: viewportClass, wrapper: wrapperClass };
25573 };
25574 RowContainerCtrl.getPinned = function (name) {
25575 switch (name) {
25576 case RowContainerName.BOTTOM_LEFT:
25577 case RowContainerName.TOP_LEFT:
25578 case RowContainerName.LEFT:
25579 return _constants_constants__WEBPACK_IMPORTED_MODULE_12__["Constants"].PINNED_LEFT;
25580 case RowContainerName.BOTTOM_RIGHT:
25581 case RowContainerName.TOP_RIGHT:
25582 case RowContainerName.RIGHT:
25583 return _constants_constants__WEBPACK_IMPORTED_MODULE_12__["Constants"].PINNED_RIGHT;
25584 default:
25585 return null;
25586 }
25587 };
25588 RowContainerCtrl.prototype.postConstruct = function () {
25589 var _this = this;
25590 this.enableRtl = this.gridOptionsWrapper.isEnableRtl();
25591 this.embedFullWidthRows = this.gridOptionsWrapper.isEmbedFullWidthRows();
25592 this.forContainers([RowContainerName.CENTER], function () { return _this.viewportSizeFeature = _this.createManagedBean(new _viewportSizeFeature__WEBPACK_IMPORTED_MODULE_5__["ViewportSizeFeature"](_this)); });
25593 };
25594 RowContainerCtrl.prototype.registerWithCtrlsService = function () {
25595 switch (this.name) {
25596 case RowContainerName.CENTER:
25597 this.ctrlsService.registerCenterRowContainerCtrl(this);
25598 break;
25599 case RowContainerName.LEFT:
25600 this.ctrlsService.registerLeftRowContainerCtrl(this);
25601 break;
25602 case RowContainerName.RIGHT:
25603 this.ctrlsService.registerRightRowContainerCtrl(this);
25604 break;
25605 case RowContainerName.TOP_CENTER:
25606 this.ctrlsService.registerTopCenterRowContainerCtrl(this);
25607 break;
25608 case RowContainerName.TOP_LEFT:
25609 this.ctrlsService.registerTopLeftRowContainerCon(this);
25610 break;
25611 case RowContainerName.TOP_RIGHT:
25612 this.ctrlsService.registerTopRightRowContainerCtrl(this);
25613 break;
25614 case RowContainerName.BOTTOM_CENTER:
25615 this.ctrlsService.registerBottomCenterRowContainerCtrl(this);
25616 break;
25617 case RowContainerName.BOTTOM_LEFT:
25618 this.ctrlsService.registerBottomLeftRowContainerCtrl(this);
25619 break;
25620 case RowContainerName.BOTTOM_RIGHT:
25621 this.ctrlsService.registerBottomRightRowContainerCtrl(this);
25622 break;
25623 }
25624 };
25625 RowContainerCtrl.prototype.forContainers = function (names, callback) {
25626 if (names.indexOf(this.name) >= 0) {
25627 callback();
25628 }
25629 };
25630 RowContainerCtrl.prototype.getContainerElement = function () {
25631 return this.eContainer;
25632 };
25633 RowContainerCtrl.prototype.getViewportSizeFeature = function () {
25634 return this.viewportSizeFeature;
25635 };
25636 RowContainerCtrl.prototype.setComp = function (view, eContainer, eViewport, eWrapper) {
25637 var _this = this;
25638 this.comp = view;
25639 this.eContainer = eContainer;
25640 this.eViewport = eViewport;
25641 this.eWrapper = eWrapper;
25642 this.createManagedBean(new _rowContainerEventsFeature__WEBPACK_IMPORTED_MODULE_3__["RowContainerEventsFeature"](this.eContainer));
25643 this.addPreventScrollWhileDragging();
25644 this.listenOnDomOrder();
25645 this.stopHScrollOnPinnedRows();
25646 var allTopNoFW = [RowContainerName.TOP_CENTER, RowContainerName.TOP_LEFT, RowContainerName.TOP_RIGHT];
25647 var allBottomNoFW = [RowContainerName.BOTTOM_CENTER, RowContainerName.BOTTOM_LEFT, RowContainerName.BOTTOM_RIGHT];
25648 var allMiddleNoFW = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT];
25649 var allNoFW = __spread(allTopNoFW, allBottomNoFW, allMiddleNoFW);
25650 var allMiddle = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT, RowContainerName.FULL_WIDTH];
25651 var allCenter = [RowContainerName.CENTER, RowContainerName.TOP_CENTER, RowContainerName.BOTTOM_CENTER];
25652 var allLeft = [RowContainerName.LEFT, RowContainerName.BOTTOM_LEFT, RowContainerName.TOP_LEFT];
25653 var allRight = [RowContainerName.RIGHT, RowContainerName.BOTTOM_RIGHT, RowContainerName.TOP_RIGHT];
25654 this.forContainers(allLeft, function () { return _this.createManagedBean(new _setPinnedLeftWidthFeature__WEBPACK_IMPORTED_MODULE_7__["SetPinnedLeftWidthFeature"](_this.eContainer)); });
25655 this.forContainers(allRight, function () { return _this.createManagedBean(new _setPinnedRightWidthFeature__WEBPACK_IMPORTED_MODULE_8__["SetPinnedRightWidthFeature"](_this.eContainer)); });
25656 this.forContainers(allMiddle, function () { return _this.createManagedBean(new _setHeightFeature__WEBPACK_IMPORTED_MODULE_9__["SetHeightFeature"](_this.eContainer, _this.eWrapper)); });
25657 this.forContainers(allNoFW, function () { return _this.createManagedBean(new _dragListenerFeature__WEBPACK_IMPORTED_MODULE_10__["DragListenerFeature"](_this.eContainer)); });
25658 this.forContainers(allCenter, function () { return _this.createManagedBean(new _centerWidthFeature__WEBPACK_IMPORTED_MODULE_11__["CenterWidthFeature"](function (width) { return _this.comp.setContainerWidth(width + "px"); })); });
25659 this.addListeners();
25660 this.registerWithCtrlsService();
25661 };
25662 RowContainerCtrl.prototype.addListeners = function () {
25663 var _this = this;
25664 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, function () { return _this.onScrollVisibilityChanged(); });
25665 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, function () { return _this.onDisplayedColumnsChanged(); });
25666 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () { return _this.onDisplayedColumnsWidthChanged(); });
25667 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_ROWS_CHANGED, function () { return _this.onDisplayedRowsChanged(); });
25668 this.onScrollVisibilityChanged();
25669 this.onDisplayedColumnsChanged();
25670 this.onDisplayedColumnsWidthChanged();
25671 this.onDisplayedRowsChanged();
25672 };
25673 RowContainerCtrl.prototype.listenOnDomOrder = function () {
25674 var _this = this;
25675 var listener = function () { return _this.comp.setDomOrder(_this.gridOptionsWrapper.isEnsureDomOrder()); };
25676 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_13__["GridOptionsWrapper"].PROP_DOM_LAYOUT, listener);
25677 listener();
25678 };
25679 // when editing a pinned row, if the cell is half outside the scrollable area, the browser can
25680 // scroll the column into view. we do not want this, the pinned sections should never scroll.
25681 // so we listen to scrolls on these containers and reset the scroll if we find one.
25682 RowContainerCtrl.prototype.stopHScrollOnPinnedRows = function () {
25683 var _this = this;
25684 this.forContainers([RowContainerName.TOP_CENTER, RowContainerName.BOTTOM_CENTER], function () {
25685 var resetScrollLeft = function () { return _this.eViewport.scrollLeft = 0; };
25686 _this.addManagedListener(_this.eViewport, 'scroll', resetScrollLeft);
25687 });
25688 };
25689 RowContainerCtrl.prototype.onDisplayedColumnsChanged = function () {
25690 var _this = this;
25691 this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });
25692 };
25693 RowContainerCtrl.prototype.onDisplayedColumnsWidthChanged = function () {
25694 var _this = this;
25695 this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });
25696 };
25697 RowContainerCtrl.prototype.onScrollVisibilityChanged = function () {
25698 if (this.name !== RowContainerName.CENTER) {
25699 return;
25700 }
25701 var visible = this.scrollVisibleService.isHorizontalScrollShowing();
25702 var scrollbarWidth = visible ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;
25703 var height = scrollbarWidth == 0 ? '100%' : "calc(100% + " + scrollbarWidth + "px)";
25704 this.comp.setViewportHeight(height);
25705 };
25706 // this methods prevents the grid views from being scrolled while the dragService is being used
25707 // eg. the view should not scroll up and down while dragging rows using the rowDragComp.
25708 RowContainerCtrl.prototype.addPreventScrollWhileDragging = function () {
25709 var _this = this;
25710 var preventScroll = function (e) {
25711 if (_this.dragService.isDragging()) {
25712 if (e.cancelable) {
25713 e.preventDefault();
25714 }
25715 }
25716 };
25717 this.eContainer.addEventListener('touchmove', preventScroll, { passive: false });
25718 this.addDestroyFunc(function () { return _this.eContainer.removeEventListener('touchmove', preventScroll); });
25719 };
25720 // this gets called whenever a change in the viewport, so we can inform column controller it has to work
25721 // out the virtual columns again. gets called from following locations:
25722 // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)
25723 RowContainerCtrl.prototype.onHorizontalViewportChanged = function () {
25724 var scrollWidth = this.getCenterWidth();
25725 var scrollPosition = this.getCenterViewportScrollLeft();
25726 this.columnModel.setViewportPosition(scrollWidth, scrollPosition);
25727 };
25728 RowContainerCtrl.prototype.getCenterWidth = function () {
25729 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getInnerWidth"])(this.eViewport);
25730 };
25731 RowContainerCtrl.prototype.getCenterViewportScrollLeft = function () {
25732 // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser
25733 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getScrollLeft"])(this.eViewport, this.enableRtl);
25734 };
25735 RowContainerCtrl.prototype.registerViewportResizeListener = function (listener) {
25736 var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eViewport, listener);
25737 this.addDestroyFunc(function () { return unsubscribeFromResize(); });
25738 };
25739 RowContainerCtrl.prototype.isViewportVisible = function () {
25740 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["isVisible"])(this.eViewport);
25741 };
25742 RowContainerCtrl.prototype.isViewportHScrollShowing = function () {
25743 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["isHorizontalScrollShowing"])(this.eViewport);
25744 };
25745 RowContainerCtrl.prototype.getViewportScrollLeft = function () {
25746 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getScrollLeft"])(this.eViewport, this.enableRtl);
25747 };
25748 RowContainerCtrl.prototype.isHorizontalScrollShowing = function () {
25749 var isAlwaysShowHorizontalScroll = this.gridOptionsWrapper.isAlwaysShowHorizontalScroll();
25750 return isAlwaysShowHorizontalScroll || Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["isHorizontalScrollShowing"])(this.eViewport);
25751 };
25752 RowContainerCtrl.prototype.getViewportElement = function () {
25753 return this.eViewport;
25754 };
25755 RowContainerCtrl.prototype.setContainerTranslateX = function (amount) {
25756 this.eContainer.style.transform = "translateX(" + amount + "px)";
25757 };
25758 RowContainerCtrl.prototype.getHScrollPosition = function () {
25759 var res = {
25760 left: this.eViewport.scrollLeft,
25761 right: this.eViewport.scrollLeft + this.eViewport.offsetWidth
25762 };
25763 return res;
25764 };
25765 RowContainerCtrl.prototype.setCenterViewportScrollLeft = function (value) {
25766 // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser
25767 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setScrollLeft"])(this.eViewport, value, this.enableRtl);
25768 };
25769 RowContainerCtrl.prototype.onDisplayedRowsChanged = function () {
25770 var _this = this;
25771 var fullWithContainer = this.name === RowContainerName.TOP_FULL_WIDTH
25772 || this.name === RowContainerName.BOTTOM_FULL_WIDTH
25773 || this.name === RowContainerName.FULL_WIDTH;
25774 var doesRowMatch = function (rowCtrl) {
25775 var fullWidthRow = rowCtrl.isFullWidth();
25776 var printLayout = _this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_12__["Constants"].DOM_LAYOUT_PRINT;
25777 var embedFW = _this.embedFullWidthRows || printLayout;
25778 var match = fullWithContainer ?
25779 !embedFW && fullWidthRow
25780 : embedFW || !fullWidthRow;
25781 return match;
25782 };
25783 // this list contains either all pinned top, center or pinned bottom rows
25784 var allRowsRegardlessOfFullWidth = this.getRowCtrls();
25785 // this filters out rows not for this container, eg if it's a full with row, but we are not full with container
25786 var rowsThisContainer = allRowsRegardlessOfFullWidth.filter(doesRowMatch);
25787 this.comp.setRowCtrls(rowsThisContainer);
25788 };
25789 RowContainerCtrl.prototype.getRowCtrls = function () {
25790 switch (this.name) {
25791 case RowContainerName.TOP_CENTER:
25792 case RowContainerName.TOP_LEFT:
25793 case RowContainerName.TOP_RIGHT:
25794 case RowContainerName.TOP_FULL_WIDTH:
25795 return this.rowRenderer.getTopRowCtrls();
25796 case RowContainerName.BOTTOM_CENTER:
25797 case RowContainerName.BOTTOM_LEFT:
25798 case RowContainerName.BOTTOM_RIGHT:
25799 case RowContainerName.BOTTOM_FULL_WIDTH:
25800 return this.rowRenderer.getBottomRowCtrls();
25801 default:
25802 return this.rowRenderer.getRowCtrls();
25803 }
25804 };
25805 __decorate([
25806 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('scrollVisibleService')
25807 ], RowContainerCtrl.prototype, "scrollVisibleService", void 0);
25808 __decorate([
25809 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragService')
25810 ], RowContainerCtrl.prototype, "dragService", void 0);
25811 __decorate([
25812 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
25813 ], RowContainerCtrl.prototype, "ctrlsService", void 0);
25814 __decorate([
25815 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
25816 ], RowContainerCtrl.prototype, "columnModel", void 0);
25817 __decorate([
25818 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('resizeObserverService')
25819 ], RowContainerCtrl.prototype, "resizeObserverService", void 0);
25820 __decorate([
25821 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
25822 ], RowContainerCtrl.prototype, "rowRenderer", void 0);
25823 __decorate([
25824 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
25825 ], RowContainerCtrl.prototype, "postConstruct", null);
25826 return RowContainerCtrl;
25827}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
25828
25829
25830
25831
25832
25833/***/ }),
25834/* 119 */
25835/***/ (function(module, __webpack_exports__, __webpack_require__) {
25836
25837"use strict";
25838__webpack_require__.r(__webpack_exports__);
25839/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerEventsFeature", function() { return RowContainerEventsFeature; });
25840/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
25841/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
25842/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
25843/* harmony import */ var _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(120);
25844/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
25845/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(82);
25846/* harmony import */ var _utils_keyboard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(49);
25847/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23);
25848/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(65);
25849/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(15);
25850/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7);
25851/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(18);
25852/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(17);
25853/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(16);
25854/* harmony import */ var _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(121);
25855/**
25856 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
25857 * @version v27.3.0
25858 * @link https://www.ag-grid.com/
25859 * @license MIT
25860 */
25861var __extends = (undefined && undefined.__extends) || (function () {
25862 var extendStatics = function (d, b) {
25863 extendStatics = Object.setPrototypeOf ||
25864 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25865 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
25866 return extendStatics(d, b);
25867 };
25868 return function (d, b) {
25869 extendStatics(d, b);
25870 function __() { this.constructor = d; }
25871 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
25872 };
25873})();
25874var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
25875 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
25876 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25877 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;
25878 return c > 3 && r && Object.defineProperty(target, key, r), r;
25879};
25880var __read = (undefined && undefined.__read) || function (o, n) {
25881 var m = typeof Symbol === "function" && o[Symbol.iterator];
25882 if (!m) return o;
25883 var i = m.call(o), r, ar = [], e;
25884 try {
25885 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
25886 }
25887 catch (error) { e = { error: error }; }
25888 finally {
25889 try {
25890 if (r && !r.done && (m = i["return"])) m.call(i);
25891 }
25892 finally { if (e) throw e.error; }
25893 }
25894 return ar;
25895};
25896
25897
25898
25899
25900
25901
25902
25903
25904
25905
25906
25907
25908
25909
25910
25911var RowContainerEventsFeature = /** @class */ (function (_super) {
25912 __extends(RowContainerEventsFeature, _super);
25913 function RowContainerEventsFeature(element) {
25914 var _this = _super.call(this) || this;
25915 _this.element = element;
25916 return _this;
25917 }
25918 RowContainerEventsFeature.prototype.postConstruct = function () {
25919 this.addMouseListeners();
25920 this.mockContextMenuForIPad();
25921 this.addKeyboardEvents();
25922 };
25923 RowContainerEventsFeature.prototype.addKeyboardEvents = function () {
25924 var _this = this;
25925 var eventNames = ['keydown', 'keypress'];
25926 eventNames.forEach(function (eventName) {
25927 var listener = _this.processKeyboardEvent.bind(_this, eventName);
25928 _this.addManagedListener(_this.element, eventName, listener);
25929 });
25930 };
25931 RowContainerEventsFeature.prototype.addMouseListeners = function () {
25932 var _this = this;
25933 var mouseDownEvent = Object(_utils_event__WEBPACK_IMPORTED_MODULE_1__["isEventSupported"])('touchstart') ? 'touchstart' : 'mousedown';
25934 var eventNames = ['dblclick', 'contextmenu', 'mouseover', 'mouseout', 'click', mouseDownEvent];
25935 eventNames.forEach(function (eventName) {
25936 var listener = _this.processMouseEvent.bind(_this, eventName);
25937 _this.addManagedListener(_this.element, eventName, listener);
25938 });
25939 };
25940 RowContainerEventsFeature.prototype.processMouseEvent = function (eventName, mouseEvent) {
25941 if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||
25942 Object(_utils_event__WEBPACK_IMPORTED_MODULE_1__["isStopPropagationForAgGrid"])(mouseEvent)) {
25943 return;
25944 }
25945 var rowComp = this.getRowForEvent(mouseEvent);
25946 var cellCtrl = this.mouseEventService.getRenderedCellForEvent(mouseEvent);
25947 if (eventName === "contextmenu") {
25948 this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellCtrl);
25949 }
25950 else {
25951 if (cellCtrl) {
25952 cellCtrl.onMouseEvent(eventName, mouseEvent);
25953 }
25954 if (rowComp) {
25955 rowComp.onMouseEvent(eventName, mouseEvent);
25956 }
25957 }
25958 };
25959 RowContainerEventsFeature.prototype.mockContextMenuForIPad = function () {
25960 var _this = this;
25961 // we do NOT want this when not in iPad, otherwise we will be doing
25962 if (!Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["isIOSUserAgent"])()) {
25963 return;
25964 }
25965 var touchListener = new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_5__["TouchListener"](this.element);
25966 var longTapListener = function (event) {
25967 var rowComp = _this.getRowForEvent(event.touchEvent);
25968 var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);
25969 _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);
25970 };
25971 this.addManagedListener(touchListener, _widgets_touchListener__WEBPACK_IMPORTED_MODULE_5__["TouchListener"].EVENT_LONG_TAP, longTapListener);
25972 this.addDestroyFunc(function () { return touchListener.destroy(); });
25973 };
25974 RowContainerEventsFeature.prototype.getRowForEvent = function (event) {
25975 var sourceElement = event.target;
25976 while (sourceElement) {
25977 var rowCon = this.gridOptionsWrapper.getDomData(sourceElement, _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_3__["RowCtrl"].DOM_DATA_KEY_ROW_CTRL);
25978 if (rowCon) {
25979 return rowCon;
25980 }
25981 sourceElement = sourceElement.parentElement;
25982 }
25983 return null;
25984 };
25985 RowContainerEventsFeature.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellCtrl) {
25986 var rowNode = rowComp ? rowComp.getRowNode() : null;
25987 var column = cellCtrl ? cellCtrl.getColumn() : null;
25988 var value = null;
25989 if (column) {
25990 var event_1 = mouseEvent ? mouseEvent : touchEvent;
25991 cellCtrl.dispatchCellContextMenuEvent(event_1);
25992 value = this.valueService.getValue(column, rowNode);
25993 }
25994 // if user clicked on a cell, anchor to that cell, otherwise anchor to the grid panel
25995 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
25996 var anchorToElement = cellCtrl ? cellCtrl.getGui() : gridBodyCon.getGridBodyElement();
25997 if (this.contextMenuFactory) {
25998 this.contextMenuFactory.onContextMenu(mouseEvent, touchEvent, rowNode, column, value, anchorToElement);
25999 }
26000 };
26001 RowContainerEventsFeature.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {
26002 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);
26003 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);
26004 if (keyboardEvent.defaultPrevented) {
26005 return;
26006 }
26007 if (cellComp) {
26008 this.processCellKeyboardEvent(cellComp, eventName, keyboardEvent);
26009 }
26010 else if (rowComp && rowComp.isFullWidth()) {
26011 this.processFullWidthRowKeyboardEvent(rowComp, eventName, keyboardEvent);
26012 }
26013 };
26014 RowContainerEventsFeature.prototype.processCellKeyboardEvent = function (cellCtrl, eventName, keyboardEvent) {
26015 var rowNode = cellCtrl.getRowNode();
26016 var column = cellCtrl.getColumn();
26017 var editing = cellCtrl.isEditing();
26018 var gridProcessingAllowed = !Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_6__["isUserSuppressingKeyboardEvent"])(this.gridOptionsWrapper, keyboardEvent, rowNode, column, editing);
26019 if (gridProcessingAllowed) {
26020 switch (eventName) {
26021 case 'keydown':
26022 // first see if it's a scroll key, page up / down, home / end etc
26023 var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);
26024 // if not a scroll key, then we pass onto cell
26025 if (!wasScrollKey) {
26026 cellCtrl.onKeyDown(keyboardEvent);
26027 }
26028 // perform clipboard and undo / redo operations
26029 this.doGridOperations(keyboardEvent, cellCtrl.isEditing());
26030 break;
26031 case 'keypress':
26032 cellCtrl.onKeyPress(keyboardEvent);
26033 break;
26034 }
26035 }
26036 if (eventName === 'keydown') {
26037 var cellKeyDownEvent = cellCtrl.createEvent(keyboardEvent, _events__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_CELL_KEY_DOWN);
26038 this.eventService.dispatchEvent(cellKeyDownEvent);
26039 }
26040 if (eventName === 'keypress') {
26041 var cellKeyPressEvent = cellCtrl.createEvent(keyboardEvent, _events__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_CELL_KEY_PRESS);
26042 this.eventService.dispatchEvent(cellKeyPressEvent);
26043 }
26044 };
26045 RowContainerEventsFeature.prototype.processFullWidthRowKeyboardEvent = function (rowComp, eventName, keyboardEvent) {
26046 var rowNode = rowComp.getRowNode();
26047 var focusedCell = this.focusService.getFocusedCell();
26048 var column = (focusedCell && focusedCell.column);
26049 var gridProcessingAllowed = !Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_6__["isUserSuppressingKeyboardEvent"])(this.gridOptionsWrapper, keyboardEvent, rowNode, column, false);
26050 if (gridProcessingAllowed) {
26051 var key = keyboardEvent.key;
26052 if (eventName === 'keydown') {
26053 switch (key) {
26054 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].UP:
26055 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].DOWN:
26056 rowComp.onKeyboardNavigate(keyboardEvent);
26057 break;
26058 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].TAB:
26059 rowComp.onTabKeyDown(keyboardEvent);
26060 default:
26061 }
26062 }
26063 }
26064 if (eventName === 'keydown') {
26065 var cellKeyDownEvent = rowComp.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_CELL_KEY_DOWN, keyboardEvent);
26066 this.eventService.dispatchEvent(cellKeyDownEvent);
26067 }
26068 if (eventName === 'keypress') {
26069 var cellKeyPressEvent = rowComp.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_CELL_KEY_PRESS, keyboardEvent);
26070 this.eventService.dispatchEvent(cellKeyPressEvent);
26071 }
26072 };
26073 RowContainerEventsFeature.prototype.doGridOperations = function (keyboardEvent, editing) {
26074 // check if ctrl or meta key pressed
26075 if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {
26076 return;
26077 }
26078 // if the cell the event came from is editing, then we do not
26079 // want to do the default shortcut keys, otherwise the editor
26080 // (eg a text field) would not be able to do the normal cut/copy/paste
26081 if (editing) {
26082 return;
26083 }
26084 // for copy / paste, we don't want to execute when the event
26085 // was from a child grid (happens in master detail)
26086 if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {
26087 return;
26088 }
26089 switch (keyboardEvent.code) {
26090 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].A:
26091 return this.onCtrlAndA(keyboardEvent);
26092 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].C:
26093 return this.onCtrlAndC(keyboardEvent);
26094 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].V:
26095 return this.onCtrlAndV();
26096 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].D:
26097 return this.onCtrlAndD(keyboardEvent);
26098 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].Z:
26099 return keyboardEvent.shiftKey ? this.undoRedoService.redo() : this.undoRedoService.undo();
26100 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].Y:
26101 return this.undoRedoService.redo();
26102 }
26103 };
26104 RowContainerEventsFeature.prototype.onCtrlAndA = function (event) {
26105 var _a = this, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeService = _a.rangeService;
26106 var PINNED_BOTTOM = _constants_constants__WEBPACK_IMPORTED_MODULE_9__["Constants"].PINNED_BOTTOM, PINNED_TOP = _constants_constants__WEBPACK_IMPORTED_MODULE_9__["Constants"].PINNED_TOP;
26107 if (rangeService && paginationProxy.isRowsToRender()) {
26108 var _b = __read([
26109 pinnedRowModel.isEmpty(PINNED_TOP),
26110 pinnedRowModel.isEmpty(PINNED_BOTTOM)
26111 ], 2), isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];
26112 var floatingStart = isEmptyPinnedTop ? null : PINNED_TOP;
26113 var floatingEnd = void 0;
26114 var rowEnd = void 0;
26115 if (isEmptyPinnedBottom) {
26116 floatingEnd = null;
26117 rowEnd = this.paginationProxy.getRowCount() - 1;
26118 }
26119 else {
26120 floatingEnd = PINNED_BOTTOM;
26121 rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;
26122 }
26123 var allDisplayedColumns = this.columnModel.getAllDisplayedColumns();
26124 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_10__["missingOrEmpty"])(allDisplayedColumns)) {
26125 return;
26126 }
26127 rangeService.setCellRange({
26128 rowStartIndex: 0,
26129 rowStartPinned: floatingStart,
26130 rowEndIndex: rowEnd,
26131 rowEndPinned: floatingEnd,
26132 columnStart: allDisplayedColumns[0],
26133 columnEnd: Object(_utils_array__WEBPACK_IMPORTED_MODULE_11__["last"])(allDisplayedColumns)
26134 });
26135 }
26136 event.preventDefault();
26137 };
26138 RowContainerEventsFeature.prototype.onCtrlAndC = function (event) {
26139 if (!this.clipboardService || this.gridOptionsWrapper.isEnableCellTextSelection()) {
26140 return;
26141 }
26142 this.clipboardService.copyToClipboard();
26143 event.preventDefault();
26144 };
26145 RowContainerEventsFeature.prototype.onCtrlAndV = function () {
26146 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_12__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_13__["ModuleNames"].ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {
26147 this.clipboardService.pasteFromClipboard();
26148 }
26149 };
26150 RowContainerEventsFeature.prototype.onCtrlAndD = function (event) {
26151 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_12__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_13__["ModuleNames"].ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {
26152 this.clipboardService.copyRangeDown();
26153 }
26154 event.preventDefault();
26155 };
26156 __decorate([
26157 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('mouseEventService')
26158 ], RowContainerEventsFeature.prototype, "mouseEventService", void 0);
26159 __decorate([
26160 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('valueService')
26161 ], RowContainerEventsFeature.prototype, "valueService", void 0);
26162 __decorate([
26163 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Optional"])('contextMenuFactory')
26164 ], RowContainerEventsFeature.prototype, "contextMenuFactory", void 0);
26165 __decorate([
26166 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
26167 ], RowContainerEventsFeature.prototype, "ctrlsService", void 0);
26168 __decorate([
26169 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('navigationService')
26170 ], RowContainerEventsFeature.prototype, "navigationService", void 0);
26171 __decorate([
26172 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('focusService')
26173 ], RowContainerEventsFeature.prototype, "focusService", void 0);
26174 __decorate([
26175 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('undoRedoService')
26176 ], RowContainerEventsFeature.prototype, "undoRedoService", void 0);
26177 __decorate([
26178 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
26179 ], RowContainerEventsFeature.prototype, "columnModel", void 0);
26180 __decorate([
26181 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('paginationProxy')
26182 ], RowContainerEventsFeature.prototype, "paginationProxy", void 0);
26183 __decorate([
26184 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('pinnedRowModel')
26185 ], RowContainerEventsFeature.prototype, "pinnedRowModel", void 0);
26186 __decorate([
26187 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Optional"])('rangeService')
26188 ], RowContainerEventsFeature.prototype, "rangeService", void 0);
26189 __decorate([
26190 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Optional"])('clipboardService')
26191 ], RowContainerEventsFeature.prototype, "clipboardService", void 0);
26192 __decorate([
26193 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
26194 ], RowContainerEventsFeature.prototype, "postConstruct", null);
26195 return RowContainerEventsFeature;
26196}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
26197
26198
26199
26200
26201
26202/***/ }),
26203/* 120 */
26204/***/ (function(module, __webpack_exports__, __webpack_require__) {
26205
26206"use strict";
26207__webpack_require__.r(__webpack_exports__);
26208/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowType", function() { return RowType; });
26209/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowCtrl", function() { return RowCtrl; });
26210/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
26211/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
26212/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94);
26213/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
26214/* harmony import */ var _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(118);
26215/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(16);
26216/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(17);
26217/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44);
26218/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(42);
26219/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(21);
26220/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(14);
26221/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7);
26222/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(26);
26223/* harmony import */ var _cell_cellCtrl__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(121);
26224/* harmony import */ var _rowDragComp__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(96);
26225/**
26226 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
26227 * @version v27.3.0
26228 * @link https://www.ag-grid.com/
26229 * @license MIT
26230 */
26231var __extends = (undefined && undefined.__extends) || (function () {
26232 var extendStatics = function (d, b) {
26233 extendStatics = Object.setPrototypeOf ||
26234 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
26235 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
26236 return extendStatics(d, b);
26237 };
26238 return function (d, b) {
26239 extendStatics(d, b);
26240 function __() { this.constructor = d; }
26241 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
26242 };
26243})();
26244var __read = (undefined && undefined.__read) || function (o, n) {
26245 var m = typeof Symbol === "function" && o[Symbol.iterator];
26246 if (!m) return o;
26247 var i = m.call(o), r, ar = [], e;
26248 try {
26249 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
26250 }
26251 catch (error) { e = { error: error }; }
26252 finally {
26253 try {
26254 if (r && !r.done && (m = i["return"])) m.call(i);
26255 }
26256 finally { if (e) throw e.error; }
26257 }
26258 return ar;
26259};
26260var __spread = (undefined && undefined.__spread) || function () {
26261 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
26262 return ar;
26263};
26264
26265
26266
26267
26268
26269
26270
26271
26272
26273
26274
26275
26276
26277
26278
26279var RowType;
26280(function (RowType) {
26281 RowType["Normal"] = "Normal";
26282 RowType["FullWidth"] = "FullWidth";
26283 RowType["FullWidthLoading"] = "FullWidthLoading";
26284 RowType["FullWidthGroup"] = "FullWidthGroup";
26285 RowType["FullWidthDetail"] = "FullWidthDetail";
26286})(RowType || (RowType = {}));
26287var instanceIdSequence = 0;
26288var RowCtrl = /** @class */ (function (_super) {
26289 __extends(RowCtrl, _super);
26290 function RowCtrl(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {
26291 var _this = _super.call(this) || this;
26292 _this.allRowGuis = [];
26293 _this.active = true;
26294 _this.centerCellCtrls = { list: [], map: {} };
26295 _this.leftCellCtrls = { list: [], map: {} };
26296 _this.rightCellCtrls = { list: [], map: {} };
26297 _this.lastMouseDownOnDragger = false;
26298 _this.updateColumnListsPending = false;
26299 _this.beans = beans;
26300 _this.rowNode = rowNode;
26301 _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();
26302 _this.useAnimationFrameForCreate = useAnimationFrameForCreate;
26303 _this.printLayout = printLayout;
26304 _this.instanceId = rowNode.id + '-' + instanceIdSequence++;
26305 _this.setAnimateFlags(animateIn);
26306 _this.rowFocused = _this.beans.focusService.isRowFocused(_this.rowNode.rowIndex, _this.rowNode.rowPinned);
26307 _this.rowLevel = _this.beans.rowCssClassCalculator.calculateRowLevel(_this.rowNode);
26308 _this.setRowType();
26309 _this.addListeners();
26310 _this.setInitialRowTop();
26311 return _this;
26312 }
26313 RowCtrl.prototype.getBeans = function () {
26314 return this.beans;
26315 };
26316 RowCtrl.prototype.getInstanceId = function () {
26317 return this.instanceId;
26318 };
26319 RowCtrl.prototype.setComp = function (rowComp, element, containerType) {
26320 var gui = { rowComp: rowComp, element: element, containerType: containerType };
26321 this.allRowGuis.push(gui);
26322 if (containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].LEFT) {
26323 this.leftGui = gui;
26324 }
26325 else if (containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].RIGHT) {
26326 this.rightGui = gui;
26327 }
26328 else if (containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].FULL_WIDTH) {
26329 this.fullWidthGui = gui;
26330 }
26331 else {
26332 this.centerGui = gui;
26333 }
26334 var allNormalPresent = this.leftGui != null && this.rightGui != null && this.centerGui != null;
26335 var fullWidthPresent = this.fullWidthGui != null;
26336 if (allNormalPresent || fullWidthPresent) {
26337 this.initialiseRowComps();
26338 }
26339 };
26340 RowCtrl.prototype.isCacheable = function () {
26341 return this.rowType === RowType.FullWidthDetail
26342 && this.beans.gridOptionsWrapper.isKeepDetailRows();
26343 };
26344 RowCtrl.prototype.setCached = function (cached) {
26345 var displayValue = cached ? 'none' : '';
26346 this.allRowGuis.forEach(function (rg) { return rg.element.style.display = displayValue; });
26347 };
26348 RowCtrl.prototype.initialiseRowComps = function () {
26349 var _this = this;
26350 var gow = this.beans.gridOptionsWrapper;
26351 this.onRowHeightChanged();
26352 this.updateRowIndexes();
26353 this.setFocusedClasses();
26354 this.setStylesFromGridOptions();
26355 if (gow.isRowSelection() && this.rowNode.selectable) {
26356 this.onRowSelected();
26357 }
26358 this.updateColumnLists(!this.useAnimationFrameForCreate);
26359 if (this.slideRowIn) {
26360 Object(_utils_function__WEBPACK_IMPORTED_MODULE_10__["executeNextVMTurn"])(this.onTopChanged.bind(this));
26361 }
26362 if (this.fadeRowIn) {
26363 Object(_utils_function__WEBPACK_IMPORTED_MODULE_10__["executeNextVMTurn"])(function () {
26364 _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', false); });
26365 });
26366 }
26367 var businessKey = this.getRowBusinessKey();
26368 var rowIdSanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_12__["escapeString"])(this.rowNode.id);
26369 var businessKeySanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_12__["escapeString"])(businessKey);
26370 this.allRowGuis.forEach(function (gui) {
26371 var comp = gui.rowComp;
26372 comp.setRole('row');
26373 var initialRowClasses = _this.getInitialRowClasses(gui.containerType);
26374 initialRowClasses.forEach(function (name) { return comp.addOrRemoveCssClass(name, true); });
26375 if (_this.rowNode.group) {
26376 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaExpanded"])(gui.element, _this.rowNode.expanded == true);
26377 }
26378 if (rowIdSanitised != null) {
26379 comp.setRowId(rowIdSanitised);
26380 }
26381 if (businessKeySanitised != null) {
26382 comp.setRowBusinessKey(businessKeySanitised);
26383 }
26384 if (_this.isFullWidth() && !_this.beans.gridOptionsWrapper.isSuppressCellFocus()) {
26385 comp.setTabIndex(-1);
26386 }
26387 // DOM DATA
26388 gow.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, _this);
26389 _this.addDestroyFunc(function () { return gow.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, null); });
26390 // adding hover functionality adds listener to this row, so we
26391 // do it lazily in an animation frame
26392 if (_this.useAnimationFrameForCreate) {
26393 _this.beans.animationFrameService.createTask(_this.addHoverFunctionality.bind(_this, gui.element), _this.rowNode.rowIndex, 'createTasksP2');
26394 }
26395 else {
26396 _this.addHoverFunctionality(gui.element);
26397 }
26398 if (_this.isFullWidth()) {
26399 _this.setupFullWidth(gui);
26400 }
26401 if (gow.isRowDragEntireRow()) {
26402 _this.addRowDraggerToRow(gui);
26403 }
26404 if (_this.useAnimationFrameForCreate) {
26405 // the height animation we only want active after the row is alive for 1 second.
26406 // this stops the row animation working when rows are initially crated. otherwise
26407 // auto-height rows get inserted into the dom and resized immediately, which gives
26408 // very bad UX (eg 10 rows get inserted, then all 10 expand, look particularly bad
26409 // when scrolling). so this makes sure when rows are shown for the first time, they
26410 // are resized immediately without animation.
26411 _this.beans.animationFrameService.addDestroyTask(function () {
26412 if (!_this.isAlive()) {
26413 return;
26414 }
26415 gui.rowComp.addOrRemoveCssClass('ag-after-created', true);
26416 });
26417 }
26418 });
26419 this.executeProcessRowPostCreateFunc();
26420 };
26421 RowCtrl.prototype.addRowDraggerToRow = function (gui) {
26422 var gow = this.beans.gridOptionsWrapper;
26423 if (gow.isEnableRangeSelection()) {
26424 Object(_utils_function__WEBPACK_IMPORTED_MODULE_10__["doOnce"])(function () {
26425 console.warn('AG Grid: Setting `rowDragEntireRow: true` in the gridOptions doesn\'t work with `enableRangeSelection: true`');
26426 }, 'rowDragAndRangeSelectionEnabled');
26427 return;
26428 }
26429 var rowDragComp = new _rowDragComp__WEBPACK_IMPORTED_MODULE_14__["RowDragComp"](function () { return '1 row'; }, this.rowNode, undefined, gui.element, undefined, true);
26430 this.createManagedBean(rowDragComp, this.beans.context);
26431 };
26432 RowCtrl.prototype.setupFullWidth = function (gui) {
26433 var pinned = this.getPinnedForContainer(gui.containerType);
26434 var params = this.createFullWidthParams(gui.element, pinned);
26435 var masterDetailModuleLoaded = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_6__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_5__["ModuleNames"].MasterDetailModule);
26436 if (this.rowType == RowType.FullWidthDetail && !masterDetailModuleLoaded) {
26437 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_6__["ModuleRegistry"].isPackageBased()) {
26438 console.warn("AG Grid: cell renderer 'agDetailCellRenderer' (for master detail) not found. Can only be used with ag-grid-enterprise package.");
26439 }
26440 else {
26441 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);
26442 }
26443 return;
26444 }
26445 var compDetails;
26446 switch (this.rowType) {
26447 case RowType.FullWidthDetail:
26448 compDetails = this.beans.userComponentFactory.getFullWidthDetailCellRendererDetails(params);
26449 break;
26450 case RowType.FullWidthGroup:
26451 compDetails = this.beans.userComponentFactory.getFullWidthGroupCellRendererDetails(params);
26452 break;
26453 case RowType.FullWidthLoading:
26454 compDetails = this.beans.userComponentFactory.getFullWidthLoadingCellRendererDetails(params);
26455 break;
26456 default:
26457 compDetails = this.beans.userComponentFactory.getFullWidthCellRendererDetails(params);
26458 break;
26459 }
26460 gui.rowComp.showFullWidth(compDetails);
26461 };
26462 RowCtrl.prototype.isPrintLayout = function () {
26463 return this.printLayout;
26464 };
26465 // use by autoWidthCalculator, as it clones the elements
26466 RowCtrl.prototype.getCellElement = function (column) {
26467 var cellCtrl = this.getCellCtrl(column);
26468 return cellCtrl ? cellCtrl.getGui() : null;
26469 };
26470 RowCtrl.prototype.executeProcessRowPostCreateFunc = function () {
26471 var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();
26472 if (!func) {
26473 return;
26474 }
26475 var params = {
26476 eRow: this.centerGui ? this.centerGui.element : undefined,
26477 ePinnedLeftRow: this.leftGui ? this.leftGui.element : undefined,
26478 ePinnedRightRow: this.rightGui ? this.rightGui.element : undefined,
26479 node: this.rowNode,
26480 rowIndex: this.rowNode.rowIndex,
26481 addRenderedRowListener: this.addEventListener.bind(this),
26482 };
26483 func(params);
26484 };
26485 RowCtrl.prototype.setRowType = function () {
26486 var isStub = this.rowNode.stub;
26487 var isFullWidthCell = this.rowNode.isFullWidthCell();
26488 var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;
26489 var pivotMode = this.beans.columnModel.isPivotMode();
26490 // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking
26491 // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'
26492 // so each can be set independently (as a customer complained about footers getting full width, hence
26493 // introducing this logic)
26494 var isGroupRow = !!this.rowNode.group && !this.rowNode.footer;
26495 var isFullWidthGroup = isGroupRow && this.beans.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);
26496 if (isStub) {
26497 this.rowType = RowType.FullWidthLoading;
26498 }
26499 else if (isDetailCell) {
26500 this.rowType = RowType.FullWidthDetail;
26501 }
26502 else if (isFullWidthCell) {
26503 this.rowType = RowType.FullWidth;
26504 }
26505 else if (isFullWidthGroup) {
26506 this.rowType = RowType.FullWidthGroup;
26507 }
26508 else {
26509 this.rowType = RowType.Normal;
26510 }
26511 };
26512 RowCtrl.prototype.updateColumnLists = function (suppressAnimationFrame) {
26513 var _this = this;
26514 if (suppressAnimationFrame === void 0) { suppressAnimationFrame = false; }
26515 if (this.isFullWidth()) {
26516 return;
26517 }
26518 var noAnimation = suppressAnimationFrame
26519 || this.beans.gridOptionsWrapper.isSuppressAnimationFrame()
26520 || this.printLayout;
26521 if (noAnimation) {
26522 this.updateColumnListsImpl();
26523 return;
26524 }
26525 if (this.updateColumnListsPending) {
26526 return;
26527 }
26528 this.beans.animationFrameService.createTask(function () {
26529 if (!_this.active) {
26530 return;
26531 }
26532 _this.updateColumnListsImpl();
26533 }, this.rowNode.rowIndex, 'createTasksP1');
26534 this.updateColumnListsPending = true;
26535 };
26536 RowCtrl.prototype.createCellCtrls = function (prev, cols, pinned) {
26537 var _this = this;
26538 if (pinned === void 0) { pinned = null; }
26539 var res = {
26540 list: [],
26541 map: {}
26542 };
26543 var addCell = function (colInstanceId, cellCtrl) {
26544 res.list.push(cellCtrl);
26545 res.map[colInstanceId] = cellCtrl;
26546 };
26547 cols.forEach(function (col) {
26548 // we use instanceId's rather than colId as it's possible there is a Column with same Id,
26549 // but it's referring to a different column instance. Happens a lot with pivot, as pivot col id's are
26550 // reused eg pivot_0, pivot_1 etc
26551 var colInstanceId = col.getInstanceId();
26552 var cellCtrl = prev.map[colInstanceId];
26553 if (!cellCtrl) {
26554 cellCtrl = new _cell_cellCtrl__WEBPACK_IMPORTED_MODULE_13__["CellCtrl"](col, _this.rowNode, _this.beans, _this);
26555 }
26556 addCell(colInstanceId, cellCtrl);
26557 });
26558 prev.list.forEach(function (prevCellCtrl) {
26559 var cellInResult = res.map[prevCellCtrl.getColumn().getInstanceId()] != null;
26560 if (cellInResult) {
26561 return;
26562 }
26563 var keepCell = !_this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);
26564 if (keepCell) {
26565 addCell(prevCellCtrl.getColumn().getInstanceId(), prevCellCtrl);
26566 return;
26567 }
26568 prevCellCtrl.destroy();
26569 });
26570 return res;
26571 };
26572 RowCtrl.prototype.updateColumnListsImpl = function () {
26573 var _this = this;
26574 this.updateColumnListsPending = false;
26575 var columnModel = this.beans.columnModel;
26576 if (this.printLayout) {
26577 this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, columnModel.getAllDisplayedColumns());
26578 this.leftCellCtrls = { list: [], map: {} };
26579 this.rightCellCtrls = { list: [], map: {} };
26580 }
26581 else {
26582 var centerCols = columnModel.getViewportCenterColumnsForRow(this.rowNode);
26583 this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);
26584 var leftCols = columnModel.getDisplayedLeftColumnsForRow(this.rowNode);
26585 this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT);
26586 var rightCols = columnModel.getDisplayedRightColumnsForRow(this.rowNode);
26587 this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT);
26588 }
26589 this.allRowGuis.forEach(function (item) {
26590 var cellControls = item.containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].LEFT ? _this.leftCellCtrls :
26591 item.containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].RIGHT ? _this.rightCellCtrls : _this.centerCellCtrls;
26592 item.rowComp.setCellCtrls(cellControls.list);
26593 });
26594 };
26595 RowCtrl.prototype.isCellEligibleToBeRemoved = function (cellCtrl, nextContainerPinned) {
26596 var REMOVE_CELL = true;
26597 var KEEP_CELL = false;
26598 // always remove the cell if it's not rendered or if it's in the wrong pinned location
26599 var column = cellCtrl.getColumn();
26600 if (column.getPinned() != nextContainerPinned) {
26601 return REMOVE_CELL;
26602 }
26603 // we want to try and keep editing and focused cells
26604 var editing = cellCtrl.isEditing();
26605 var focused = this.beans.focusService.isCellFocused(cellCtrl.getCellPosition());
26606 var mightWantToKeepCell = editing || focused;
26607 if (mightWantToKeepCell) {
26608 var column_1 = cellCtrl.getColumn();
26609 var displayedColumns = this.beans.columnModel.getAllDisplayedColumns();
26610 var cellStillDisplayed = displayedColumns.indexOf(column_1) >= 0;
26611 return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;
26612 }
26613 return REMOVE_CELL;
26614 };
26615 RowCtrl.prototype.setAnimateFlags = function (animateIn) {
26616 if (animateIn) {
26617 var oldRowTopExists = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_11__["exists"])(this.rowNode.oldRowTop);
26618 // if the row had a previous position, we slide it in (animate row top)
26619 this.slideRowIn = oldRowTopExists;
26620 // if the row had no previous position, we fade it in (animate
26621 this.fadeRowIn = !oldRowTopExists;
26622 }
26623 else {
26624 this.slideRowIn = false;
26625 this.fadeRowIn = false;
26626 }
26627 };
26628 RowCtrl.prototype.isEditing = function () {
26629 return this.editingRow;
26630 };
26631 RowCtrl.prototype.stopRowEditing = function (cancel) {
26632 this.stopEditing(cancel);
26633 };
26634 RowCtrl.prototype.isFullWidth = function () {
26635 return this.rowType !== RowType.Normal;
26636 };
26637 RowCtrl.prototype.getRowType = function () {
26638 return this.rowType;
26639 };
26640 RowCtrl.prototype.refreshFullWidth = function () {
26641 var _this = this;
26642 // returns 'true' if refresh succeeded
26643 var tryRefresh = function (gui, pinned) {
26644 if (!gui) {
26645 return true;
26646 } // no refresh needed
26647 var cellRenderer = gui.rowComp.getFullWidthCellRenderer();
26648 // no cell renderer, either means comp not yet ready, or comp ready but now reference
26649 // to it (happens in react when comp is stateless). if comp not ready, we don't need to
26650 // refresh, however we don't know which one, so we refresh to cover the case where it's
26651 // react comp without reference so need to force a refresh
26652 if (!cellRenderer) {
26653 return false;
26654 }
26655 // no refresh method present, so can't refresh, hard refresh needed
26656 if (!cellRenderer.refresh) {
26657 return false;
26658 }
26659 var params = _this.createFullWidthParams(gui.element, pinned);
26660 var refreshSucceeded = cellRenderer.refresh(params);
26661 return refreshSucceeded;
26662 };
26663 var fullWidthSuccess = tryRefresh(this.fullWidthGui, null);
26664 var centerSuccess = tryRefresh(this.centerGui, null);
26665 var leftSuccess = tryRefresh(this.leftGui, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT);
26666 var rightSuccess = tryRefresh(this.rightGui, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT);
26667 var allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;
26668 return allFullWidthRowsRefreshed;
26669 };
26670 RowCtrl.prototype.addListeners = function () {
26671 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));
26672 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_ROW_SELECTED, this.onRowSelected.bind(this));
26673 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));
26674 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_TOP_CHANGED, this.onTopChanged.bind(this));
26675 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_EXPANDED_CHANGED, this.updateExpandedCss.bind(this));
26676 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_HAS_CHILDREN_CHANGED, this.updateExpandedCss.bind(this));
26677 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));
26678 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));
26679 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_HIGHLIGHT_CHANGED, this.onRowNodeHighlightChanged.bind(this));
26680 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));
26681 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_UI_LEVEL_CHANGED, this.onUiLevelChanged.bind(this));
26682 var eventService = this.beans.eventService;
26683 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PAGINATION_PIXEL_OFFSET_CHANGED, this.onPaginationPixelOffsetChanged.bind(this));
26684 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));
26685 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
26686 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));
26687 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));
26688 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));
26689 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));
26690 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));
26691 this.addListenersForCellComps();
26692 };
26693 RowCtrl.prototype.onColumnMoved = function () {
26694 this.updateColumnLists();
26695 };
26696 RowCtrl.prototype.addListenersForCellComps = function () {
26697 var _this = this;
26698 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_ROW_INDEX_CHANGED, function () {
26699 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRowIndexChanged(); });
26700 });
26701 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, function (event) {
26702 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellChanged(event); });
26703 });
26704 };
26705 RowCtrl.prototype.onRowNodeDataChanged = function (event) {
26706 // if this is an update, we want to refresh, as this will allow the user to put in a transition
26707 // into the cellRenderer refresh method. otherwise this might be completely new data, in which case
26708 // we will want to completely replace the cells
26709 this.getAllCellCtrls().forEach(function (cellCtrl) {
26710 return cellCtrl.refreshCell({
26711 suppressFlash: !event.update,
26712 newData: !event.update
26713 });
26714 });
26715 // check for selected also, as this could be after lazy loading of the row data, in which case
26716 // the id might of just gotten set inside the row and the row selected state may of changed
26717 // as a result. this is what happens when selected rows are loaded in virtual pagination.
26718 // - niall note - since moving to the stub component, this may no longer be true, as replacing
26719 // the stub component now replaces the entire row
26720 this.onRowSelected();
26721 // as data has changed, then the style and class needs to be recomputed
26722 this.postProcessCss();
26723 };
26724 RowCtrl.prototype.onRowNodeCellChanged = function () {
26725 // as data has changed, then the style and class needs to be recomputed
26726 this.postProcessCss();
26727 };
26728 RowCtrl.prototype.postProcessCss = function () {
26729 this.setStylesFromGridOptions();
26730 this.postProcessClassesFromGridOptions();
26731 this.postProcessRowClassRules();
26732 this.postProcessRowDragging();
26733 };
26734 RowCtrl.prototype.onRowNodeHighlightChanged = function () {
26735 var highlighted = this.rowNode.highlighted;
26736 this.allRowGuis.forEach(function (gui) {
26737 var aboveOn = highlighted === _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowHighlightPosition"].Above;
26738 var belowOn = highlighted === _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowHighlightPosition"].Below;
26739 gui.rowComp.addOrRemoveCssClass('ag-row-highlight-above', aboveOn);
26740 gui.rowComp.addOrRemoveCssClass('ag-row-highlight-below', belowOn);
26741 });
26742 };
26743 RowCtrl.prototype.onRowNodeDraggingChanged = function () {
26744 this.postProcessRowDragging();
26745 };
26746 RowCtrl.prototype.postProcessRowDragging = function () {
26747 var dragging = this.rowNode.dragging;
26748 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-dragging', dragging); });
26749 };
26750 RowCtrl.prototype.updateExpandedCss = function () {
26751 var expandable = this.rowNode.isExpandable();
26752 var expanded = this.rowNode.expanded == true;
26753 this.allRowGuis.forEach(function (gui) {
26754 gui.rowComp.addOrRemoveCssClass('ag-row-group', expandable);
26755 gui.rowComp.addOrRemoveCssClass('ag-row-group-expanded', expandable && expanded);
26756 gui.rowComp.addOrRemoveCssClass('ag-row-group-contracted', expandable && !expanded);
26757 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaExpanded"])(gui.element, expandable && expanded);
26758 });
26759 };
26760 RowCtrl.prototype.onDisplayedColumnsChanged = function () {
26761 // we skip animations for onDisplayedColumnChanged, as otherwise the client could remove columns and
26762 // then set data, and any old valueGetter's (ie from cols that were removed) would still get called.
26763 this.updateColumnLists(true);
26764 if (this.beans.columnModel.wasAutoRowHeightEverActive()) {
26765 this.rowNode.checkAutoHeights();
26766 }
26767 };
26768 RowCtrl.prototype.onVirtualColumnsChanged = function () {
26769 this.updateColumnLists();
26770 };
26771 RowCtrl.prototype.getRowPosition = function () {
26772 return {
26773 rowPinned: Object(_utils_generic__WEBPACK_IMPORTED_MODULE_11__["makeNull"])(this.rowNode.rowPinned),
26774 rowIndex: this.rowNode.rowIndex
26775 };
26776 };
26777 RowCtrl.prototype.onKeyboardNavigate = function (keyboardEvent) {
26778 var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });
26779 var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;
26780 var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;
26781 if (!isFullWidthContainerFocused) {
26782 return;
26783 }
26784 var node = this.rowNode;
26785 var lastFocusedCell = this.beans.focusService.getFocusedCell();
26786 var cellPosition = {
26787 rowIndex: node.rowIndex,
26788 rowPinned: node.rowPinned,
26789 column: (lastFocusedCell && lastFocusedCell.column)
26790 };
26791 this.beans.navigationService.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);
26792 keyboardEvent.preventDefault();
26793 };
26794 RowCtrl.prototype.onTabKeyDown = function (keyboardEvent) {
26795 if (keyboardEvent.defaultPrevented || Object(_utils_event__WEBPACK_IMPORTED_MODULE_9__["isStopPropagationForAgGrid"])(keyboardEvent)) {
26796 return;
26797 }
26798 var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });
26799 var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;
26800 var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;
26801 var nextEl = null;
26802 if (!isFullWidthContainerFocused) {
26803 nextEl = this.beans.focusService.findNextFocusableElement(currentFullWidthContainer, false, keyboardEvent.shiftKey);
26804 }
26805 if ((this.isFullWidth() && isFullWidthContainerFocused) || !nextEl) {
26806 this.beans.navigationService.onTabKeyDown(this, keyboardEvent);
26807 }
26808 };
26809 RowCtrl.prototype.onFullWidthRowFocused = function (event) {
26810 var _a;
26811 var node = this.rowNode;
26812 var isFocused = this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;
26813 var element = this.fullWidthGui ? this.fullWidthGui.element : (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element;
26814 if (!element) {
26815 return;
26816 } // can happen with react ui, comp not yet ready
26817 element.classList.toggle('ag-full-width-focus', isFocused);
26818 if (isFocused) {
26819 // we don't scroll normal rows into view when we focus them, so we don't want
26820 // to scroll Full Width rows either.
26821 element.focus({ preventScroll: true });
26822 }
26823 };
26824 RowCtrl.prototype.refreshCell = function (cellCtrl) {
26825 this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);
26826 this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);
26827 this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);
26828 this.updateColumnLists();
26829 };
26830 RowCtrl.prototype.removeCellCtrl = function (prev, cellCtrlToRemove) {
26831 var res = {
26832 list: [],
26833 map: {}
26834 };
26835 prev.list.forEach(function (cellCtrl) {
26836 if (cellCtrl === cellCtrlToRemove) {
26837 return;
26838 }
26839 res.list.push(cellCtrl);
26840 res.map[cellCtrl.getInstanceId()] = cellCtrl;
26841 });
26842 return res;
26843 };
26844 RowCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {
26845 switch (eventName) {
26846 case 'dblclick':
26847 this.onRowDblClick(mouseEvent);
26848 break;
26849 case 'click':
26850 this.onRowClick(mouseEvent);
26851 break;
26852 case 'touchstart':
26853 case 'mousedown':
26854 this.onRowMouseDown(mouseEvent);
26855 break;
26856 }
26857 };
26858 RowCtrl.prototype.createRowEvent = function (type, domEvent) {
26859 return {
26860 type: type,
26861 node: this.rowNode,
26862 data: this.rowNode.data,
26863 rowIndex: this.rowNode.rowIndex,
26864 rowPinned: this.rowNode.rowPinned,
26865 context: this.beans.gridOptionsWrapper.getContext(),
26866 api: this.beans.gridOptionsWrapper.getApi(),
26867 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
26868 event: domEvent
26869 };
26870 };
26871 RowCtrl.prototype.createRowEventWithSource = function (type, domEvent) {
26872 var event = this.createRowEvent(type, domEvent);
26873 // when first developing this, we included the rowComp in the event.
26874 // this seems very weird. so when introducing the event types, i left the 'source'
26875 // out of the type, and just include the source in the two places where this event
26876 // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any
26877 // users to be using this, as the rowComp isn't an object we expose, so would be
26878 // very surprising if a user was using it.
26879 event.source = this;
26880 return event;
26881 };
26882 RowCtrl.prototype.onRowDblClick = function (mouseEvent) {
26883 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_9__["isStopPropagationForAgGrid"])(mouseEvent)) {
26884 return;
26885 }
26886 var agEvent = this.createRowEventWithSource(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_DOUBLE_CLICKED, mouseEvent);
26887 this.beans.eventService.dispatchEvent(agEvent);
26888 };
26889 RowCtrl.prototype.onRowMouseDown = function (mouseEvent) {
26890 this.lastMouseDownOnDragger = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_8__["isElementChildOfClass"])(mouseEvent.target, 'ag-row-drag', 3);
26891 if (!this.isFullWidth()) {
26892 return;
26893 }
26894 var node = this.rowNode;
26895 var columnModel = this.beans.columnModel;
26896 this.beans.focusService.setFocusedCell(node.rowIndex, columnModel.getAllDisplayedColumns()[0], node.rowPinned, true);
26897 };
26898 RowCtrl.prototype.onRowClick = function (mouseEvent) {
26899 var stop = Object(_utils_event__WEBPACK_IMPORTED_MODULE_9__["isStopPropagationForAgGrid"])(mouseEvent) || this.lastMouseDownOnDragger;
26900 if (stop) {
26901 return;
26902 }
26903 var agEvent = this.createRowEventWithSource(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_CLICKED, mouseEvent);
26904 this.beans.eventService.dispatchEvent(agEvent);
26905 // ctrlKey for windows, metaKey for Apple
26906 var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;
26907 var shiftKeyPressed = mouseEvent.shiftKey;
26908 // we do not allow selecting the group by clicking, when groupSelectChildren, as the logic to
26909 // handle this is broken. to observe, change the logic below and allow groups to be selected.
26910 // you will see the group gets selected, then all children get selected, then the grid unselects
26911 // the children (as the default behaviour when clicking is to unselect other rows) which results
26912 // in the group getting unselected (as all children are unselected). the correct thing would be
26913 // to change this, so that children of the selected group are not then subsequenly un-selected.
26914 var groupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();
26915 if (
26916 // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,
26917 // so return if it's a group row
26918 (groupSelectsChildren && this.rowNode.group) ||
26919 // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,
26920 // and we click it, the selection should not change (ie any currently selected row should stay selected)
26921 !this.rowNode.selectable ||
26922 // we also don't allow selection of pinned rows
26923 this.rowNode.rowPinned ||
26924 // if no selection method enabled, do nothing
26925 !this.beans.gridOptionsWrapper.isRowSelection() ||
26926 // if click selection suppressed, do nothing
26927 this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {
26928 return;
26929 }
26930 var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();
26931 var rowDeselectionWithCtrl = !this.beans.gridOptionsWrapper.isSuppressRowDeselection();
26932 if (this.rowNode.isSelected()) {
26933 if (multiSelectOnClick) {
26934 this.rowNode.setSelectedParams({ newValue: false });
26935 }
26936 else if (multiSelectKeyPressed) {
26937 if (rowDeselectionWithCtrl) {
26938 this.rowNode.setSelectedParams({ newValue: false });
26939 }
26940 }
26941 else {
26942 // selected with no multi key, must make sure anything else is unselected
26943 this.rowNode.setSelectedParams({ newValue: true, clearSelection: !shiftKeyPressed, rangeSelect: shiftKeyPressed });
26944 }
26945 }
26946 else {
26947 var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;
26948 this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed });
26949 }
26950 };
26951 RowCtrl.prototype.setupDetailRowAutoHeight = function (eDetailGui) {
26952 var _this = this;
26953 if (this.rowType !== RowType.FullWidthDetail) {
26954 return;
26955 }
26956 if (!this.beans.gridOptionsWrapper.isDetailRowAutoHeight()) {
26957 return;
26958 }
26959 var checkRowSizeFunc = function () {
26960 var clientHeight = eDetailGui.clientHeight;
26961 // if the UI is not ready, the height can be 0, which we ignore, as otherwise a flicker will occur
26962 // as UI goes from the default height, to 0, then to the real height as UI becomes ready. this means
26963 // it's not possible for have 0 as auto-height, however this is an improbable use case, as even an
26964 // empty detail grid would still have some styling around it giving at least a few pixels.
26965 if (clientHeight != null && clientHeight > 0) {
26966 // we do the update in a timeout, to make sure we are not calling from inside the grid
26967 // doing another update
26968 var updateRowHeightFunc = function () {
26969 _this.rowNode.setRowHeight(clientHeight);
26970 if (_this.beans.clientSideRowModel) {
26971 _this.beans.clientSideRowModel.onRowHeightChanged();
26972 }
26973 else if (_this.beans.serverSideRowModel) {
26974 _this.beans.serverSideRowModel.onRowHeightChanged();
26975 }
26976 };
26977 _this.beans.frameworkOverrides.setTimeout(updateRowHeightFunc, 0);
26978 }
26979 };
26980 var resizeObserverDestroyFunc = this.beans.resizeObserverService.observeResize(eDetailGui, checkRowSizeFunc);
26981 this.addDestroyFunc(resizeObserverDestroyFunc);
26982 checkRowSizeFunc();
26983 };
26984 RowCtrl.prototype.createFullWidthParams = function (eRow, pinned) {
26985 var _this = this;
26986 var params = {
26987 fullWidth: true,
26988 data: this.rowNode.data,
26989 node: this.rowNode,
26990 value: this.rowNode.key,
26991 valueFormatted: this.rowNode.key,
26992 rowIndex: this.rowNode.rowIndex,
26993 api: this.beans.gridOptionsWrapper.getApi(),
26994 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
26995 context: this.beans.gridOptionsWrapper.getContext(),
26996 // these need to be taken out, as part of 'afterAttached' now
26997 eGridCell: eRow,
26998 eParentOfValue: eRow,
26999 pinned: pinned,
27000 addRenderedRowListener: this.addEventListener.bind(this),
27001 registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange); }
27002 };
27003 return params;
27004 };
27005 RowCtrl.prototype.addFullWidthRowDragging = function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {
27006 if (value === void 0) { value = ''; }
27007 if (!this.isFullWidth()) {
27008 return;
27009 }
27010 var rowDragComp = new _rowDragComp__WEBPACK_IMPORTED_MODULE_14__["RowDragComp"](function () { return value; }, this.rowNode, undefined, rowDraggerElement, dragStartPixels, suppressVisibilityChange);
27011 this.createManagedBean(rowDragComp, this.beans.context);
27012 };
27013 RowCtrl.prototype.onUiLevelChanged = function () {
27014 var newLevel = this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);
27015 if (this.rowLevel != newLevel) {
27016 var classToAdd_1 = 'ag-row-level-' + newLevel;
27017 var classToRemove_1 = 'ag-row-level-' + this.rowLevel;
27018 this.allRowGuis.forEach(function (gui) {
27019 gui.rowComp.addOrRemoveCssClass(classToAdd_1, true);
27020 gui.rowComp.addOrRemoveCssClass(classToRemove_1, false);
27021 });
27022 }
27023 this.rowLevel = newLevel;
27024 };
27025 RowCtrl.prototype.isFirstRowOnPage = function () {
27026 return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();
27027 };
27028 RowCtrl.prototype.isLastRowOnPage = function () {
27029 return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();
27030 };
27031 RowCtrl.prototype.onModelUpdated = function () {
27032 this.refreshFirstAndLastRowStyles();
27033 };
27034 RowCtrl.prototype.refreshFirstAndLastRowStyles = function () {
27035 var newFirst = this.isFirstRowOnPage();
27036 var newLast = this.isLastRowOnPage();
27037 if (this.firstRowOnPage !== newFirst) {
27038 this.firstRowOnPage = newFirst;
27039 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-first', newFirst); });
27040 }
27041 if (this.lastRowOnPage !== newLast) {
27042 this.lastRowOnPage = newLast;
27043 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-last', newLast); });
27044 }
27045 };
27046 RowCtrl.prototype.stopEditing = function (cancel) {
27047 if (cancel === void 0) { cancel = false; }
27048 var cellEdits = this.getAllCellCtrls().map(function (cellCtrl) { return cellCtrl.stopEditing(cancel); });
27049 if (!this.editingRow) {
27050 return;
27051 }
27052 if (!cancel && cellEdits.some(function (edit) { return edit; })) {
27053 var event_1 = this.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_VALUE_CHANGED);
27054 this.beans.eventService.dispatchEvent(event_1);
27055 }
27056 this.setEditingRow(false);
27057 };
27058 RowCtrl.prototype.setInlineEditingCss = function (editing) {
27059 this.allRowGuis.forEach(function (gui) {
27060 gui.rowComp.addOrRemoveCssClass("ag-row-inline-editing", editing);
27061 gui.rowComp.addOrRemoveCssClass("ag-row-not-inline-editing", !editing);
27062 });
27063 };
27064 RowCtrl.prototype.setEditingRow = function (value) {
27065 this.editingRow = value;
27066 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-editing', value); });
27067 var event = value ?
27068 this.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_EDITING_STARTED)
27069 : this.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_EDITING_STOPPED);
27070 this.beans.eventService.dispatchEvent(event);
27071 };
27072 RowCtrl.prototype.startRowEditing = function (key, charPress, sourceRenderedCell, event) {
27073 if (key === void 0) { key = null; }
27074 if (charPress === void 0) { charPress = null; }
27075 if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }
27076 if (event === void 0) { event = null; }
27077 // don't do it if already editing
27078 if (this.editingRow) {
27079 return;
27080 }
27081 this.getAllCellCtrls().forEach(function (cellCtrl) {
27082 var cellStartedEdit = cellCtrl === sourceRenderedCell;
27083 if (cellStartedEdit) {
27084 cellCtrl.startEditing(key, charPress, cellStartedEdit, event);
27085 }
27086 else {
27087 cellCtrl.startEditing(null, null, cellStartedEdit, event);
27088 }
27089 });
27090 this.setEditingRow(true);
27091 };
27092 RowCtrl.prototype.getAllCellCtrls = function () {
27093 var res = __spread(this.centerCellCtrls.list, this.leftCellCtrls.list, this.rightCellCtrls.list);
27094 return res;
27095 };
27096 RowCtrl.prototype.postProcessClassesFromGridOptions = function () {
27097 var _this = this;
27098 var cssClasses = this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode);
27099 if (!cssClasses || !cssClasses.length) {
27100 return;
27101 }
27102 cssClasses.forEach(function (classStr) {
27103 _this.allRowGuis.forEach(function (c) { return c.rowComp.addOrRemoveCssClass(classStr, true); });
27104 });
27105 };
27106 RowCtrl.prototype.postProcessRowClassRules = function () {
27107 var _this = this;
27108 this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode, function (className) {
27109 _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, true); });
27110 }, function (className) {
27111 _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, false); });
27112 });
27113 };
27114 RowCtrl.prototype.setStylesFromGridOptions = function () {
27115 var rowStyles = this.processStylesFromGridOptions();
27116 this.allRowGuis.forEach(function (gui) { return gui.rowComp.setUserStyles(rowStyles); });
27117 };
27118 RowCtrl.prototype.getRowBusinessKey = function () {
27119 var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();
27120 if (typeof businessKeyForNodeFunc !== 'function') {
27121 return;
27122 }
27123 return businessKeyForNodeFunc(this.rowNode);
27124 };
27125 RowCtrl.prototype.getPinnedForContainer = function (rowContainerType) {
27126 var pinned = rowContainerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].LEFT ? _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT :
27127 rowContainerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].RIGHT ? _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT : null;
27128 return pinned;
27129 };
27130 RowCtrl.prototype.getInitialRowClasses = function (rowContainerType) {
27131 var pinned = this.getPinnedForContainer(rowContainerType);
27132 var params = {
27133 rowNode: this.rowNode,
27134 rowFocused: this.rowFocused,
27135 fadeRowIn: this.fadeRowIn,
27136 rowIsEven: this.rowNode.rowIndex % 2 === 0,
27137 rowLevel: this.rowLevel,
27138 fullWidthRow: this.isFullWidth(),
27139 firstRowOnPage: this.isFirstRowOnPage(),
27140 lastRowOnPage: this.isLastRowOnPage(),
27141 printLayout: this.printLayout,
27142 expandable: this.rowNode.isExpandable(),
27143 pinned: pinned
27144 };
27145 return this.beans.rowCssClassCalculator.getInitialRowClasses(params);
27146 };
27147 RowCtrl.prototype.processStylesFromGridOptions = function () {
27148 // part 1 - rowStyle
27149 var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();
27150 if (rowStyle && typeof rowStyle === 'function') {
27151 console.warn('AG Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');
27152 return;
27153 }
27154 // part 1 - rowStyleFunc
27155 var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();
27156 var rowStyleFuncResult;
27157 if (rowStyleFunc) {
27158 var params = {
27159 data: this.rowNode.data,
27160 node: this.rowNode,
27161 rowIndex: this.rowNode.rowIndex
27162 };
27163 rowStyleFuncResult = rowStyleFunc(params);
27164 }
27165 return Object.assign({}, rowStyle, rowStyleFuncResult);
27166 };
27167 RowCtrl.prototype.onRowSelected = function () {
27168 var _this = this;
27169 // Treat undefined as false, if we pass undefined down it gets treated as toggle class, rather than explicitly
27170 // setting the required value
27171 var selected = !!this.rowNode.isSelected();
27172 this.allRowGuis.forEach(function (gui) {
27173 gui.rowComp.addOrRemoveCssClass('ag-row-selected', selected);
27174 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaSelected"])(gui.element, selected ? true : undefined);
27175 var ariaLabel = _this.createAriaLabel();
27176 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaLabel"])(gui.element, ariaLabel == null ? '' : ariaLabel);
27177 });
27178 };
27179 RowCtrl.prototype.createAriaLabel = function () {
27180 var selected = this.rowNode.isSelected();
27181 if (selected && this.beans.gridOptionsWrapper.isSuppressRowDeselection()) {
27182 return undefined;
27183 }
27184 var translate = this.beans.gridOptionsWrapper.getLocaleTextFunc();
27185 var label = translate(selected ? 'ariaRowDeselect' : 'ariaRowSelect', "Press SPACE to " + (selected ? 'deselect' : 'select') + " this row.");
27186 return label;
27187 };
27188 RowCtrl.prototype.isUseAnimationFrameForCreate = function () {
27189 return this.useAnimationFrameForCreate;
27190 };
27191 RowCtrl.prototype.addHoverFunctionality = function (eRow) {
27192 var _this = this;
27193 // because we use animation frames to do this, it's possible the row no longer exists
27194 // by the time we get to add it
27195 if (!this.active) {
27196 return;
27197 }
27198 // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel
27199 // like we do for all the other mouse events.
27200 // because of the pinning, we cannot simply add / remove the class based on the eRow. we
27201 // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a
27202 // mouse hover, it sets such in the rowNode, and then all three reflect the change as
27203 // all are listening for event on the row node.
27204 // step 1 - add listener, to set flag on row node
27205 this.addManagedListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });
27206 this.addManagedListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });
27207 // step 2 - listen for changes on row node (which any eRow can trigger)
27208 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_MOUSE_ENTER, function () {
27209 // if hover turned off, we don't add the class. we do this here so that if the application
27210 // toggles this property mid way, we remove the hover form the last row, but we stop
27211 // adding hovers from that point onwards.
27212 if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {
27213 eRow.classList.add('ag-row-hover');
27214 }
27215 });
27216 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_MOUSE_LEAVE, function () {
27217 eRow.classList.remove('ag-row-hover');
27218 });
27219 };
27220 // for animation, we don't want to animate entry or exit to a very far away pixel,
27221 // otherwise the row would move so fast, it would appear to disappear. so this method
27222 // moves the row closer to the viewport if it is far away, so the row slide in / out
27223 // at a speed the user can see.
27224 RowCtrl.prototype.roundRowTopToBounds = function (rowTop) {
27225 var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();
27226 var range = gridBodyCon.getScrollFeature().getVScrollPosition();
27227 var minPixel = this.applyPaginationOffset(range.top, true) - 100;
27228 var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;
27229 return Math.min(Math.max(minPixel, rowTop), maxPixel);
27230 };
27231 RowCtrl.prototype.getFrameworkOverrides = function () {
27232 return this.beans.frameworkOverrides;
27233 };
27234 RowCtrl.prototype.onRowHeightChanged = function () {
27235 // check for exists first - if the user is resetting the row height, then
27236 // it will be null (or undefined) momentarily until the next time the flatten
27237 // stage is called where the row will then update again with a new height
27238 if (this.rowNode.rowHeight == null) {
27239 return;
27240 }
27241 var rowHeight = this.rowNode.rowHeight;
27242 var defaultRowHeight = this.beans.gridOptionsWrapper.getDefaultRowHeight();
27243 var isHeightFromFunc = this.beans.gridOptionsWrapper.isGetRowHeightFunction();
27244 var heightFromFunc = isHeightFromFunc ? this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height : undefined;
27245 var lineHeight = heightFromFunc ? Math.min(defaultRowHeight, heightFromFunc) - 2 + "px" : undefined;
27246 this.allRowGuis.forEach(function (gui) {
27247 gui.element.style.height = rowHeight + "px";
27248 // If the row height is coming from a function, this means some rows can
27249 // be smaller than the theme had intended. so we set --ag-line-height on
27250 // the row, which is picked up by the theme CSS and is used in a calc
27251 // for the CSS line-height property, which makes sure the line-height is
27252 // not bigger than the row height, otherwise the row text would not fit.
27253 // We do not use rowNode.rowHeight here, as this could be the result of autoHeight,
27254 // and we found using the autoHeight result causes a loop, where changing the
27255 // line-height them impacts the cell height, resulting in a new autoHeight,
27256 // resulting in a new line-height and so on loop.
27257 // const heightFromFunc = this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height;
27258 if (lineHeight) {
27259 gui.element.style.setProperty('--ag-line-height', lineHeight);
27260 }
27261 });
27262 };
27263 RowCtrl.prototype.addEventListener = function (eventType, listener) {
27264 if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {
27265 eventType = _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED;
27266 console.warn('AG Grid: Since version 11, event renderedRowRemoved is now called ' + _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED);
27267 }
27268 _super.prototype.addEventListener.call(this, eventType, listener);
27269 };
27270 RowCtrl.prototype.removeEventListener = function (eventType, listener) {
27271 if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {
27272 eventType = _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED;
27273 console.warn('AG Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED);
27274 }
27275 _super.prototype.removeEventListener.call(this, eventType, listener);
27276 };
27277 // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.
27278 RowCtrl.prototype.destroyFirstPass = function () {
27279 this.active = false;
27280 // why do we have this method? shouldn't everything below be added as a destroy func beside
27281 // the corresponding create logic?
27282 this.setupRemoveAnimation();
27283 var event = this.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED);
27284 this.dispatchEvent(event);
27285 this.beans.eventService.dispatchEvent(event);
27286 _super.prototype.destroy.call(this);
27287 };
27288 RowCtrl.prototype.setupRemoveAnimation = function () {
27289 var rowStillVisibleJustNotInViewport = this.rowNode.rowTop != null;
27290 if (rowStillVisibleJustNotInViewport) {
27291 // if the row is not rendered, but in viewport, it means it has moved,
27292 // so we animate the row out. if the new location is very far away,
27293 // the animation will be so fast the row will look like it's just disappeared,
27294 // so instead we animate to a position just outside the viewport.
27295 var rowTop = this.roundRowTopToBounds(this.rowNode.rowTop);
27296 this.setRowTop(rowTop);
27297 }
27298 else {
27299 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', true); });
27300 }
27301 };
27302 RowCtrl.prototype.destroySecondPass = function () {
27303 this.allRowGuis.length = 0;
27304 var destroyCellCtrls = function (ctrls) {
27305 ctrls.list.forEach(function (c) { return c.destroy(); });
27306 return { list: [], map: {} };
27307 };
27308 this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);
27309 this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);
27310 this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);
27311 };
27312 RowCtrl.prototype.setFocusedClasses = function () {
27313 var _this = this;
27314 this.allRowGuis.forEach(function (gui) {
27315 gui.rowComp.addOrRemoveCssClass('ag-row-focus', _this.rowFocused);
27316 gui.rowComp.addOrRemoveCssClass('ag-row-no-focus', !_this.rowFocused);
27317 });
27318 };
27319 RowCtrl.prototype.onCellFocusChanged = function () {
27320 var rowFocused = this.beans.focusService.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);
27321 if (rowFocused !== this.rowFocused) {
27322 this.rowFocused = rowFocused;
27323 this.setFocusedClasses();
27324 }
27325 // if we are editing, then moving the focus out of a row will stop editing
27326 if (!rowFocused && this.editingRow) {
27327 this.stopEditing(false);
27328 }
27329 };
27330 RowCtrl.prototype.onPaginationChanged = function () {
27331 var currentPage = this.beans.paginationProxy.getCurrentPage();
27332 // it is possible this row is in the new page, but the page number has changed, which means
27333 // it needs to reposition itself relative to the new page
27334 if (this.paginationPage !== currentPage) {
27335 this.paginationPage = currentPage;
27336 this.onTopChanged();
27337 }
27338 this.refreshFirstAndLastRowStyles();
27339 };
27340 RowCtrl.prototype.onTopChanged = function () {
27341 this.setRowTop(this.rowNode.rowTop);
27342 };
27343 RowCtrl.prototype.onPaginationPixelOffsetChanged = function () {
27344 // the pixel offset is used when calculating rowTop to set on the row DIV
27345 this.onTopChanged();
27346 };
27347 // applies pagination offset, eg if on second page, and page height is 500px, then removes
27348 // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.
27349 // reverse will take the offset away rather than add.
27350 RowCtrl.prototype.applyPaginationOffset = function (topPx, reverse) {
27351 if (reverse === void 0) { reverse = false; }
27352 if (this.rowNode.isRowPinned()) {
27353 return topPx;
27354 }
27355 var pixelOffset = this.beans.paginationProxy.getPixelOffset();
27356 var multiplier = reverse ? 1 : -1;
27357 return topPx + (pixelOffset * multiplier);
27358 };
27359 RowCtrl.prototype.setRowTop = function (pixels) {
27360 // print layout uses normal flow layout for row positioning
27361 if (this.printLayout) {
27362 return;
27363 }
27364 // need to make sure rowTop is not null, as this can happen if the node was once
27365 // visible (ie parent group was expanded) but is now not visible
27366 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_11__["exists"])(pixels)) {
27367 var afterPaginationPixels = this.applyPaginationOffset(pixels);
27368 var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);
27369 var topPx = afterScalingPixels + "px";
27370 this.setRowTopStyle(topPx);
27371 }
27372 };
27373 RowCtrl.prototype.getInitialRowTop = function () {
27374 return this.initialTop;
27375 };
27376 RowCtrl.prototype.getInitialTransform = function () {
27377 return this.initialTransform;
27378 };
27379 RowCtrl.prototype.setInitialRowTop = function () {
27380 // print layout uses normal flow layout for row positioning
27381 if (this.printLayout) {
27382 return '';
27383 }
27384 // if sliding in, we take the old row top. otherwise we just set the current row top.
27385 var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;
27386 var afterPaginationPixels = this.applyPaginationOffset(pixels);
27387 // we don't apply scaling if row is pinned
27388 var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);
27389 var res = afterScalingPixels + 'px';
27390 var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();
27391 if (suppressRowTransform) {
27392 this.initialTop = res;
27393 }
27394 else {
27395 this.initialTransform = "translateY(" + res + ")";
27396 }
27397 };
27398 RowCtrl.prototype.setRowTopStyle = function (topPx) {
27399 var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();
27400 this.allRowGuis.forEach(function (gui) { return suppressRowTransform ?
27401 gui.rowComp.setTop(topPx) :
27402 gui.rowComp.setTransform("translateY(" + topPx + ")"); });
27403 };
27404 RowCtrl.prototype.getRowNode = function () {
27405 return this.rowNode;
27406 };
27407 RowCtrl.prototype.getCellCtrl = function (column) {
27408 // first up, check for cell directly linked to this column
27409 var res = null;
27410 this.getAllCellCtrls().forEach(function (cellCtrl) {
27411 if (cellCtrl.getColumn() == column) {
27412 res = cellCtrl;
27413 }
27414 });
27415 if (res != null) {
27416 return res;
27417 }
27418 // second up, if not found, then check for spanned cols.
27419 // we do this second (and not at the same time) as this is
27420 // more expensive, as spanning cols is a
27421 // infrequently used feature so we don't need to do this most
27422 // of the time
27423 this.getAllCellCtrls().forEach(function (cellCtrl) {
27424 if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {
27425 res = cellCtrl;
27426 }
27427 });
27428 return res;
27429 };
27430 RowCtrl.prototype.onRowIndexChanged = function () {
27431 // we only bother updating if the rowIndex is present. if it is not present, it means this row
27432 // is child of a group node, and the group node was closed, it's the only way to have no row index.
27433 // when this happens, row is about to be de-rendered, so we don't care, rowComp is about to die!
27434 if (this.rowNode.rowIndex != null) {
27435 this.onCellFocusChanged();
27436 this.updateRowIndexes();
27437 this.postProcessCss();
27438 }
27439 };
27440 RowCtrl.prototype.updateRowIndexes = function () {
27441 var rowIndexStr = this.rowNode.getRowIndexString();
27442 var headerRowCount = this.beans.headerNavigationService.getHeaderRowCount();
27443 var rowIsEven = this.rowNode.rowIndex % 2 === 0;
27444 var ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;
27445 this.allRowGuis.forEach(function (c) {
27446 c.rowComp.setRowIndex(rowIndexStr);
27447 c.rowComp.addOrRemoveCssClass('ag-row-even', rowIsEven);
27448 c.rowComp.addOrRemoveCssClass('ag-row-odd', !rowIsEven);
27449 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaRowIndex"])(c.element, ariaRowIndex);
27450 });
27451 };
27452 // returns the pinned left container, either the normal one, or the embedded full with one if exists
27453 RowCtrl.prototype.getPinnedLeftRowElement = function () {
27454 return this.leftGui ? this.leftGui.element : undefined;
27455 };
27456 // returns the pinned right container, either the normal one, or the embedded full with one if exists
27457 RowCtrl.prototype.getPinnedRightRowElement = function () {
27458 return this.rightGui ? this.rightGui.element : undefined;
27459 };
27460 // returns the body container, either the normal one, or the embedded full with one if exists
27461 RowCtrl.prototype.getBodyRowElement = function () {
27462 return this.centerGui ? this.centerGui.element : undefined;
27463 };
27464 // returns the full width container
27465 RowCtrl.prototype.getFullWidthRowElement = function () {
27466 return this.fullWidthGui ? this.fullWidthGui.element : undefined;
27467 };
27468 RowCtrl.DOM_DATA_KEY_ROW_CTRL = 'renderedRow';
27469 return RowCtrl;
27470}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
27471
27472
27473
27474
27475
27476/***/ }),
27477/* 121 */
27478/***/ (function(module, __webpack_exports__, __webpack_require__) {
27479
27480"use strict";
27481__webpack_require__.r(__webpack_exports__);
27482/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellCtrl", function() { return CellCtrl; });
27483/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
27484/* harmony import */ var _cellRangeFeature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(122);
27485/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
27486/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
27487/* harmony import */ var _cellPositionFeature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(124);
27488/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
27489/* harmony import */ var _cellCustomStyleFeature__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(125);
27490/* harmony import */ var _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(126);
27491/* harmony import */ var _cellMouseListenerFeature__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(127);
27492/* harmony import */ var _cellKeyboardListenerFeature__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(129);
27493/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(65);
27494/* harmony import */ var _checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(95);
27495/* harmony import */ var _dndSourceComp__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(130);
27496/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(14);
27497/* harmony import */ var _row_rowDragComp__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(96);
27498/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(13);
27499/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(42);
27500/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(44);
27501/**
27502 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
27503 * @version v27.3.0
27504 * @link https://www.ag-grid.com/
27505 * @license MIT
27506 */
27507var __extends = (undefined && undefined.__extends) || (function () {
27508 var extendStatics = function (d, b) {
27509 extendStatics = Object.setPrototypeOf ||
27510 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
27511 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
27512 return extendStatics(d, b);
27513 };
27514 return function (d, b) {
27515 extendStatics(d, b);
27516 function __() { this.constructor = d; }
27517 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
27518 };
27519})();
27520var __assign = (undefined && undefined.__assign) || function () {
27521 __assign = Object.assign || function(t) {
27522 for (var s, i = 1, n = arguments.length; i < n; i++) {
27523 s = arguments[i];
27524 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
27525 t[p] = s[p];
27526 }
27527 return t;
27528 };
27529 return __assign.apply(this, arguments);
27530};
27531
27532
27533
27534
27535
27536
27537
27538
27539
27540
27541
27542
27543
27544
27545
27546
27547
27548
27549var CSS_CELL = 'ag-cell';
27550var CSS_AUTO_HEIGHT = 'ag-cell-auto-height';
27551var CSS_NORMAL_HEIGHT = 'ag-cell-normal-height';
27552var CSS_CELL_FOCUS = 'ag-cell-focus';
27553var CSS_CELL_FIRST_RIGHT_PINNED = 'ag-cell-first-right-pinned';
27554var CSS_CELL_LAST_LEFT_PINNED = 'ag-cell-last-left-pinned';
27555var CSS_CELL_NOT_INLINE_EDITING = 'ag-cell-not-inline-editing';
27556var CSS_CELL_INLINE_EDITING = 'ag-cell-inline-editing';
27557var CSS_CELL_POPUP_EDITING = 'ag-cell-popup-editing';
27558var CSS_COLUMN_HOVER = 'ag-column-hover';
27559var CSS_CELL_WRAP_TEXT = 'ag-cell-wrap-text';
27560var instanceIdSequence = 0;
27561var CellCtrl = /** @class */ (function (_super) {
27562 __extends(CellCtrl, _super);
27563 function CellCtrl(column, rowNode, beans, rowCtrl) {
27564 var _this = _super.call(this) || this;
27565 _this.suppressRefreshCell = false;
27566 _this.column = column;
27567 _this.rowNode = rowNode;
27568 _this.beans = beans;
27569 _this.rowCtrl = rowCtrl;
27570 // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'
27571 _this.instanceId = column.getId() + '-' + instanceIdSequence++;
27572 _this.createCellPosition();
27573 _this.addFeatures();
27574 return _this;
27575 }
27576 CellCtrl.prototype.addFeatures = function () {
27577 var _this = this;
27578 this.cellPositionFeature = new _cellPositionFeature__WEBPACK_IMPORTED_MODULE_4__["CellPositionFeature"](this, this.beans);
27579 this.addDestroyFunc(function () { return _this.cellPositionFeature.destroy(); });
27580 this.cellCustomStyleFeature = new _cellCustomStyleFeature__WEBPACK_IMPORTED_MODULE_6__["CellCustomStyleFeature"](this, this.beans);
27581 this.addDestroyFunc(function () { return _this.cellCustomStyleFeature.destroy(); });
27582 this.cellMouseListenerFeature = new _cellMouseListenerFeature__WEBPACK_IMPORTED_MODULE_8__["CellMouseListenerFeature"](this, this.beans, this.column);
27583 this.addDestroyFunc(function () { return _this.cellMouseListenerFeature.destroy(); });
27584 this.cellKeyboardListenerFeature = new _cellKeyboardListenerFeature__WEBPACK_IMPORTED_MODULE_9__["CellKeyboardListenerFeature"](this, this.beans, this.column, this.rowNode, this.rowCtrl);
27585 this.addDestroyFunc(function () { return _this.cellKeyboardListenerFeature.destroy(); });
27586 var rangeSelectionEnabled = this.beans.rangeService && this.beans.gridOptionsWrapper.isEnableRangeSelection();
27587 if (rangeSelectionEnabled) {
27588 this.cellRangeFeature = new _cellRangeFeature__WEBPACK_IMPORTED_MODULE_1__["CellRangeFeature"](this.beans, this);
27589 this.addDestroyFunc(function () { return _this.cellRangeFeature.destroy(); });
27590 }
27591 this.addTooltipFeature();
27592 };
27593 CellCtrl.prototype.addTooltipFeature = function () {
27594 var _this = this;
27595 var getTooltipValue = function () {
27596 var colDef = _this.column.getColDef();
27597 var data = _this.rowNode.data;
27598 if (colDef.tooltipField && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(data)) {
27599 return Object(_utils_object__WEBPACK_IMPORTED_MODULE_15__["getValueUsingField"])(data, colDef.tooltipField, _this.column.isTooltipFieldContainsDots());
27600 }
27601 var valueGetter = colDef.tooltipValueGetter;
27602 if (valueGetter) {
27603 return valueGetter({
27604 location: 'cell',
27605 api: _this.beans.gridOptionsWrapper.getApi(),
27606 columnApi: _this.beans.gridOptionsWrapper.getColumnApi(),
27607 context: _this.beans.gridOptionsWrapper.getContext(),
27608 colDef: _this.column.getColDef(),
27609 column: _this.column,
27610 rowIndex: _this.cellPosition.rowIndex,
27611 node: _this.rowNode,
27612 data: _this.rowNode.data,
27613 value: _this.value,
27614 valueFormatted: _this.valueFormatted,
27615 });
27616 }
27617 return null;
27618 };
27619 var tooltipCtrl = {
27620 getColumn: function () { return _this.column; },
27621 getColDef: function () { return _this.column.getColDef(); },
27622 getRowIndex: function () { return _this.cellPosition.rowIndex; },
27623 getRowNode: function () { return _this.rowNode; },
27624 getGui: function () { return _this.getGui(); },
27625 getLocation: function () { return 'cell'; },
27626 getTooltipValue: getTooltipValue,
27627 // this makes no sense, why is the cell formatted value passed to the tooltip???
27628 getValueFormatted: function () { return _this.valueFormatted; }
27629 };
27630 this.tooltipFeature = new _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_7__["TooltipFeature"](tooltipCtrl, this.beans);
27631 this.addDestroyFunc(function () { return _this.tooltipFeature.destroy(); });
27632 };
27633 CellCtrl.prototype.setComp = function (comp, eGui, eCellWrapper, printLayout, startEditing) {
27634 this.cellComp = comp;
27635 this.gow = this.beans.gridOptionsWrapper;
27636 this.eGui = eGui;
27637 this.eCellWrapper = eCellWrapper;
27638 this.printLayout = printLayout;
27639 // we force to make sure formatter gets called at least once,
27640 // even if value has not changed (is is undefined)
27641 this.updateAndFormatValue(true);
27642 this.addDomData();
27643 this.onCellFocused();
27644 this.applyStaticCssClasses();
27645 this.setWrapText();
27646 this.onFirstRightPinnedChanged();
27647 this.onLastLeftPinnedChanged();
27648 this.onColumnHover();
27649 this.setupControlComps();
27650 this.setupAutoHeight();
27651 this.setAriaColIndex();
27652 if (!this.gow.isSuppressCellFocus()) {
27653 this.cellComp.setTabIndex(-1);
27654 }
27655 var colIdSanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_5__["escapeString"])(this.column.getId());
27656 this.cellComp.setColId(colIdSanitised);
27657 this.cellComp.setRole('gridcell');
27658 this.cellPositionFeature.setComp(eGui);
27659 this.cellCustomStyleFeature.setComp(comp);
27660 this.tooltipFeature.setComp(comp);
27661 this.cellKeyboardListenerFeature.setComp(this.eGui);
27662 if (this.cellRangeFeature) {
27663 this.cellRangeFeature.setComp(comp, eGui);
27664 }
27665 if (startEditing && this.isCellEditable()) {
27666 this.startEditing();
27667 }
27668 else {
27669 this.showValue();
27670 }
27671 };
27672 CellCtrl.prototype.setupAutoHeight = function () {
27673 var _this = this;
27674 if (!this.column.isAutoHeight()) {
27675 return;
27676 }
27677 var eAutoHeightContainer = this.eCellWrapper;
27678 var eParentCell = eAutoHeightContainer.parentElement;
27679 // taking minRowHeight from getRowHeightForNode means the getRowHeight() callback is used,
27680 // thus allowing different min heights for different rows.
27681 var minRowHeight = this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height;
27682 var measureHeight = function (timesCalled) {
27683 if (_this.editing) {
27684 return;
27685 }
27686 // because of the retry's below, it's possible the retry's go beyond
27687 // the rows life.
27688 if (!_this.isAlive()) {
27689 return;
27690 }
27691 var _a = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_16__["getElementSize"])(eParentCell), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom;
27692 var wrapperHeight = eAutoHeightContainer.offsetHeight;
27693 var autoHeight = wrapperHeight + paddingTop + paddingBottom;
27694 if (timesCalled < 5) {
27695 // if not in doc yet, means framework not yet inserted, so wait for next VM turn,
27696 // maybe it will be ready next VM turn
27697 var doc = _this.beans.gridOptionsWrapper.getDocument();
27698 var notYetInDom = !doc || !doc.contains(eAutoHeightContainer);
27699 // this happens in React, where React hasn't put any content in. we say 'possibly'
27700 // as a) may not be React and b) the cell could be empty anyway
27701 var possiblyNoContentYet = autoHeight == 0;
27702 if (notYetInDom || possiblyNoContentYet) {
27703 _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);
27704 return;
27705 }
27706 }
27707 var newHeight = Math.max(autoHeight, minRowHeight);
27708 _this.rowNode.setRowAutoHeight(newHeight, _this.column);
27709 };
27710 var listener = function () { return measureHeight(0); };
27711 // do once to set size in case size doesn't change, common when cell is blank
27712 listener();
27713 var destroyResizeObserver = this.beans.resizeObserverService.observeResize(eAutoHeightContainer, listener);
27714 this.addDestroyFunc(function () {
27715 destroyResizeObserver();
27716 _this.rowNode.setRowAutoHeight(undefined, _this.column);
27717 });
27718 };
27719 CellCtrl.prototype.getInstanceId = function () {
27720 return this.instanceId;
27721 };
27722 CellCtrl.prototype.showValue = function (forceNewCellRendererInstance) {
27723 if (forceNewCellRendererInstance === void 0) { forceNewCellRendererInstance = false; }
27724 var valueToDisplay = this.valueFormatted != null ? this.valueFormatted : this.value;
27725 var params = this.createCellRendererParams();
27726 var compDetails = this.beans.userComponentFactory.getCellRendererDetails(this.column.getColDef(), params);
27727 this.cellComp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);
27728 this.refreshHandle();
27729 };
27730 CellCtrl.prototype.setupControlComps = function () {
27731 var colDef = this.column.getColDef();
27732 this.includeSelection = this.isIncludeControl(colDef.checkboxSelection);
27733 this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);
27734 this.includeDndSource = this.isIncludeControl(colDef.dndSource);
27735 this.cellComp.setIncludeSelection(this.includeSelection);
27736 this.cellComp.setIncludeDndSource(this.includeDndSource);
27737 this.cellComp.setIncludeRowDrag(this.includeRowDrag);
27738 };
27739 CellCtrl.prototype.isForceWrapper = function () {
27740 // text selection requires the value to be wrapped in another element
27741 var forceWrapper = this.beans.gridOptionsWrapper.isEnableCellTextSelection() || this.column.isAutoHeight();
27742 return forceWrapper;
27743 };
27744 CellCtrl.prototype.isIncludeControl = function (value) {
27745 var rowNodePinned = this.rowNode.rowPinned != null;
27746 var isFunc = typeof value === 'function';
27747 var res = rowNodePinned ? false : isFunc || value === true;
27748 return res;
27749 };
27750 CellCtrl.prototype.refreshShouldDestroy = function () {
27751 var colDef = this.column.getColDef();
27752 var selectionChanged = this.includeSelection != this.isIncludeControl(colDef.checkboxSelection);
27753 var rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);
27754 var dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);
27755 return selectionChanged || rowDragChanged || dndSourceChanged;
27756 };
27757 // either called internally if single cell editing, or called by rowRenderer if row editing
27758 CellCtrl.prototype.startEditing = function (key, charPress, cellStartedEdit, event) {
27759 if (key === void 0) { key = null; }
27760 if (charPress === void 0) { charPress = null; }
27761 if (cellStartedEdit === void 0) { cellStartedEdit = false; }
27762 if (event === void 0) { event = null; }
27763 var _a, _b;
27764 if (!this.isCellEditable() || this.editing) {
27765 return;
27766 }
27767 var editorParams = this.createCellEditorParams(key, charPress, cellStartedEdit);
27768 var colDef = this.column.getColDef();
27769 var compDetails = this.beans.userComponentFactory.getCellEditorDetails(colDef, editorParams);
27770 // if cellEditorSelector was used, we give preference to popup and popupPosition from the selector
27771 var popup = ((_a = compDetails) === null || _a === void 0 ? void 0 : _a.popupFromSelector) != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;
27772 var position = ((_b = compDetails) === null || _b === void 0 ? void 0 : _b.popupPositionFromSelector) != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;
27773 this.setEditing(true, popup);
27774 this.cellComp.setEditDetails(compDetails, popup, position);
27775 var e = this.createEvent(event, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_EDITING_STARTED);
27776 this.beans.eventService.dispatchEvent(e);
27777 };
27778 CellCtrl.prototype.setEditing = function (editing, inPopup) {
27779 if (inPopup === void 0) { inPopup = false; }
27780 if (this.editing === editing) {
27781 return;
27782 }
27783 this.editing = editing;
27784 this.editingInPopup = inPopup;
27785 this.setInlineEditingClass();
27786 };
27787 // pass in 'true' to cancel the editing.
27788 CellCtrl.prototype.stopRowOrCellEdit = function (cancel) {
27789 if (cancel === void 0) { cancel = false; }
27790 if (this.beans.gridOptionsWrapper.isFullRowEdit()) {
27791 this.rowCtrl.stopRowEditing(cancel);
27792 }
27793 else {
27794 this.stopEditing(cancel);
27795 }
27796 };
27797 CellCtrl.prototype.onPopupEditorClosed = function () {
27798 if (!this.isEditing()) {
27799 return;
27800 }
27801 // note: this happens because of a click outside of the grid or if the popupEditor
27802 // is closed with `Escape` key. if another cell was clicked, then the editing will
27803 // have already stopped and returned on the conditional above.
27804 this.stopEditingAndFocus();
27805 };
27806 CellCtrl.prototype.takeValueFromCellEditor = function (cancel) {
27807 var noValueResult = { newValueExists: false };
27808 if (cancel) {
27809 return noValueResult;
27810 }
27811 var cellEditor = this.cellComp.getCellEditor();
27812 if (!cellEditor) {
27813 return noValueResult;
27814 }
27815 var userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();
27816 if (userWantsToCancel) {
27817 return noValueResult;
27818 }
27819 var newValue = cellEditor.getValue();
27820 return {
27821 newValue: newValue,
27822 newValueExists: true
27823 };
27824 };
27825 /**
27826 * @returns `True` if the value changes, otherwise `False`.
27827 */
27828 CellCtrl.prototype.saveNewValue = function (oldValue, newValue) {
27829 if (newValue === oldValue) {
27830 return false;
27831 }
27832 if (this.beans.gridOptionsWrapper.isReadOnlyEdit()) {
27833 this.dispatchEventForSaveValueReadOnly(oldValue, newValue);
27834 return false;
27835 }
27836 // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection
27837 // getting triggered, which results in all cells getting refreshed. we do not want this refresh
27838 // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.
27839 // if we only did this refresh (and not the one below) then the cell would flash and not be forced.
27840 this.suppressRefreshCell = true;
27841 var valueChanged = this.rowNode.setDataValue(this.column, newValue);
27842 this.suppressRefreshCell = false;
27843 return valueChanged;
27844 };
27845 CellCtrl.prototype.dispatchEventForSaveValueReadOnly = function (oldValue, newValue) {
27846 var rowNode = this.rowNode;
27847 var event = {
27848 type: _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_EDIT_REQUEST,
27849 event: null,
27850 rowIndex: rowNode.rowIndex,
27851 rowPinned: rowNode.rowPinned,
27852 column: this.column,
27853 api: this.beans.gridApi,
27854 columnApi: this.beans.columnApi,
27855 colDef: this.column.getColDef(),
27856 context: this.beans.gridOptionsWrapper.getContext(),
27857 data: rowNode.data,
27858 node: rowNode,
27859 oldValue: oldValue,
27860 newValue: newValue,
27861 value: newValue,
27862 source: undefined
27863 };
27864 this.beans.eventService.dispatchEvent(event);
27865 };
27866 /**
27867 * Ends the Cell Editing
27868 * @param cancel `True` if the edit process is being canceled.
27869 * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.
27870 */
27871 CellCtrl.prototype.stopEditing = function (cancel) {
27872 if (cancel === void 0) { cancel = false; }
27873 if (!this.editing) {
27874 return false;
27875 }
27876 var _a = this.takeValueFromCellEditor(cancel), newValue = _a.newValue, newValueExists = _a.newValueExists;
27877 var oldValue = this.getValueFromValueService();
27878 var valueChanged = false;
27879 if (newValueExists) {
27880 valueChanged = this.saveNewValue(oldValue, newValue);
27881 }
27882 this.setEditing(false);
27883 this.cellComp.setEditDetails(); // passing nothing stops editing
27884 this.updateAndFormatValue();
27885 this.refreshCell({ forceRefresh: true, suppressFlash: true });
27886 this.dispatchEditingStoppedEvent(oldValue, newValue);
27887 return valueChanged;
27888 };
27889 CellCtrl.prototype.dispatchEditingStoppedEvent = function (oldValue, newValue) {
27890 var editingStoppedEvent = __assign(__assign({}, this.createEvent(null, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_EDITING_STOPPED)), { oldValue: oldValue,
27891 newValue: newValue });
27892 this.beans.eventService.dispatchEvent(editingStoppedEvent);
27893 };
27894 // if we are editing inline, then we don't have the padding in the cell (set in the themes)
27895 // to allow the text editor full access to the entire cell
27896 CellCtrl.prototype.setInlineEditingClass = function () {
27897 if (!this.isAlive()) {
27898 return;
27899 }
27900 // ag-cell-inline-editing - appears when user is inline editing
27901 // ag-cell-not-inline-editing - appears when user is no inline editing
27902 // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)
27903 // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.
27904 // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}
27905 // and {ag-cell-not-inline-editing} showing at the same time.
27906 var editingInline = this.editing && !this.editingInPopup;
27907 var popupEditorShowing = this.editing && this.editingInPopup;
27908 this.cellComp.addOrRemoveCssClass(CSS_CELL_INLINE_EDITING, editingInline);
27909 this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, !editingInline);
27910 this.cellComp.addOrRemoveCssClass(CSS_CELL_POPUP_EDITING, popupEditorShowing);
27911 this.rowCtrl.setInlineEditingCss(this.editing);
27912 };
27913 // this is needed as the JS CellComp still allows isPopup() on the CellEditor class, so
27914 // it's possible the editor is in a popup even though it's not configured via the colDef as so
27915 CellCtrl.prototype.hackSayEditingInPopup = function () {
27916 if (this.editingInPopup) {
27917 return;
27918 }
27919 this.editingInPopup = true;
27920 this.setInlineEditingClass();
27921 };
27922 CellCtrl.prototype.createCellEditorParams = function (key, charPress, cellStartedEdit) {
27923 var res = {
27924 value: this.getValueFromValueService(),
27925 key: key,
27926 eventKey: key,
27927 charPress: charPress,
27928 column: this.column,
27929 colDef: this.column.getColDef(),
27930 rowIndex: this.getCellPosition().rowIndex,
27931 node: this.rowNode,
27932 data: this.rowNode.data,
27933 api: this.beans.gridOptionsWrapper.getApi(),
27934 cellStartedEdit: cellStartedEdit,
27935 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
27936 context: this.beans.gridOptionsWrapper.getContext(),
27937 onKeyDown: this.onKeyDown.bind(this),
27938 stopEditing: this.stopEditingAndFocus.bind(this),
27939 eGridCell: this.getGui(),
27940 parseValue: this.parseValue.bind(this),
27941 formatValue: this.formatValue.bind(this)
27942 };
27943 return res;
27944 };
27945 CellCtrl.prototype.createCellRendererParams = function () {
27946 var _this = this;
27947 var addRowCompListener = function (eventType, listener) {
27948 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.');
27949 _this.rowCtrl.addEventListener(eventType, listener);
27950 };
27951 var res = {
27952 value: this.value,
27953 valueFormatted: this.valueFormatted,
27954 getValue: this.getValueFromValueService.bind(this),
27955 setValue: function (value) { return _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },
27956 formatValue: this.formatValue.bind(this),
27957 data: this.rowNode.data,
27958 node: this.rowNode,
27959 colDef: this.column.getColDef(),
27960 column: this.column,
27961 rowIndex: this.getCellPosition().rowIndex,
27962 api: this.beans.gridOptionsWrapper.getApi(),
27963 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
27964 context: this.beans.gridOptionsWrapper.getContext(),
27965 refreshCell: this.refreshCell.bind(this),
27966 eGridCell: this.getGui(),
27967 eParentOfValue: this.cellComp.getParentOfValue(),
27968 registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange); },
27969 // this function is not documented anywhere, so we could drop it
27970 // it was in the olden days to allow user to register for when rendered
27971 // row was removed (the row comp was removed), however now that the user
27972 // can provide components for cells, the destroy method gets call when this
27973 // happens so no longer need to fire event.
27974 addRowCompListener: addRowCompListener
27975 };
27976 return res;
27977 };
27978 CellCtrl.prototype.parseValue = function (newValue) {
27979 var colDef = this.column.getColDef();
27980 var params = {
27981 node: this.rowNode,
27982 data: this.rowNode.data,
27983 oldValue: this.getValue(),
27984 newValue: newValue,
27985 colDef: colDef,
27986 column: this.column,
27987 api: this.beans.gridOptionsWrapper.getApi(),
27988 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
27989 context: this.beans.gridOptionsWrapper.getContext()
27990 };
27991 var valueParser = colDef.valueParser;
27992 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;
27993 };
27994 CellCtrl.prototype.setFocusOutOnEditor = function () {
27995 if (!this.editing) {
27996 return;
27997 }
27998 var cellEditor = this.cellComp.getCellEditor();
27999 if (cellEditor && cellEditor.focusOut) {
28000 cellEditor.focusOut();
28001 }
28002 };
28003 CellCtrl.prototype.setFocusInOnEditor = function () {
28004 if (!this.editing) {
28005 return;
28006 }
28007 var cellEditor = this.cellComp.getCellEditor();
28008 if (cellEditor && cellEditor.focusIn) {
28009 // if the editor is present, then we just focus it
28010 cellEditor.focusIn();
28011 }
28012 else {
28013 // if the editor is not present, it means async cell editor (eg React fibre)
28014 // and we are trying to set focus before the cell editor is present, so we
28015 // focus the cell instead
28016 this.focusCell(true);
28017 }
28018 };
28019 CellCtrl.prototype.onCellChanged = function (event) {
28020 // because of async in React, the cellComp may not be set yet, if no cellComp then we are
28021 // yet to initialise the cell, so no need to refresh.
28022 if (!this.cellComp) {
28023 return;
28024 }
28025 var eventImpactsThisCell = event.column === this.column;
28026 if (eventImpactsThisCell) {
28027 this.refreshCell({});
28028 }
28029 };
28030 // + stop editing {forceRefresh: true, suppressFlash: true}
28031 // + event cellChanged {}
28032 // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything
28033 // + rowCtrl: event dataChanged {suppressFlash: !update, newData: !update}
28034 // + rowCtrl: api refreshCells() {animate: true/false}
28035 // + rowRenderer: api softRefreshView() {}
28036 CellCtrl.prototype.refreshCell = function (params) {
28037 // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly
28038 if (this.suppressRefreshCell || this.editing) {
28039 return;
28040 }
28041 // In React, due to async, it's possible a refresh was asked for before the CellComp
28042 // has been set. If this happens, we skip the refresh, as the cell is going to be
28043 // initialised anyway once the CellComp is set.
28044 if (!this.cellComp) {
28045 return;
28046 }
28047 var colDef = this.column.getColDef();
28048 var newData = params != null && !!params.newData;
28049 var suppressFlash = (params != null && !!params.suppressFlash) || !!colDef.suppressCellFlash;
28050 // we always refresh if cell has no value - this can happen when user provides Cell Renderer and the
28051 // cell renderer doesn't rely on a value, instead it could be looking directly at the data, or maybe
28052 // printing the current time (which would be silly)???. Generally speaking
28053 // non of {field, valueGetter, showRowGroup} is bad in the users application, however for this edge case, it's
28054 // best always refresh and take the performance hit rather than never refresh and users complaining in support
28055 // that cells are not updating.
28056 var noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;
28057 var forceRefresh = (params && params.forceRefresh) || noValueProvided || newData;
28058 var valuesDifferent = this.updateAndFormatValue();
28059 var dataNeedsUpdating = forceRefresh || valuesDifferent;
28060 if (dataNeedsUpdating) {
28061 // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.
28062 // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')
28063 // then we are not showing a movement in the stock price, rather we are showing different stock.
28064 this.showValue(newData);
28065 // we don't want to flash the cells when processing a filter change, as otherwise the UI would
28066 // be to busy. see comment in FilterManager with regards processingFilterChange
28067 var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();
28068 var flashCell = !suppressFlash && !processingFilterChange &&
28069 (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);
28070 if (flashCell) {
28071 this.flashCell();
28072 }
28073 this.cellCustomStyleFeature.applyUserStyles();
28074 this.cellCustomStyleFeature.applyClassesFromColDef();
28075 }
28076 this.refreshToolTip();
28077 // we do cellClassRules even if the value has not changed, so that users who have rules that
28078 // look at other parts of the row (where the other part of the row might of changed) will work.
28079 this.cellCustomStyleFeature.applyCellClassRules();
28080 };
28081 // cell editors call this, when they want to stop for reasons other
28082 // than what we pick up on. eg selecting from a dropdown ends editing.
28083 CellCtrl.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {
28084 if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }
28085 this.stopRowOrCellEdit();
28086 this.focusCell(true);
28087 if (!suppressNavigateAfterEdit) {
28088 this.navigateAfterEdit();
28089 }
28090 };
28091 CellCtrl.prototype.navigateAfterEdit = function () {
28092 var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();
28093 if (fullRowEdit) {
28094 return;
28095 }
28096 var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();
28097 if (enterMovesDownAfterEdit) {
28098 this.beans.navigationService.navigateToNextCell(null, _constants_keyCode__WEBPACK_IMPORTED_MODULE_10__["KeyCode"].DOWN, this.getCellPosition(), false);
28099 }
28100 };
28101 // user can also call this via API
28102 CellCtrl.prototype.flashCell = function (delays) {
28103 var flashDelay = delays && delays.flashDelay;
28104 var fadeDelay = delays && delays.fadeDelay;
28105 this.animateCell('data-changed', flashDelay, fadeDelay);
28106 };
28107 CellCtrl.prototype.animateCell = function (cssName, flashDelay, fadeDelay) {
28108 var _this = this;
28109 var fullName = "ag-cell-" + cssName;
28110 var animationFullName = "ag-cell-" + cssName + "-animation";
28111 var gridOptionsWrapper = this.beans.gridOptionsWrapper;
28112 if (!flashDelay) {
28113 flashDelay = gridOptionsWrapper.getCellFlashDelay();
28114 }
28115 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(fadeDelay)) {
28116 fadeDelay = gridOptionsWrapper.getCellFadeDelay();
28117 }
28118 // we want to highlight the cells, without any animation
28119 this.cellComp.addOrRemoveCssClass(fullName, true);
28120 this.cellComp.addOrRemoveCssClass(animationFullName, false);
28121 // then once that is applied, we remove the highlight with animation
28122 window.setTimeout(function () {
28123 _this.cellComp.addOrRemoveCssClass(fullName, false);
28124 _this.cellComp.addOrRemoveCssClass(animationFullName, true);
28125 _this.eGui.style.transition = "background-color " + fadeDelay + "ms";
28126 window.setTimeout(function () {
28127 // and then to leave things as we got them, we remove the animation
28128 _this.cellComp.addOrRemoveCssClass(animationFullName, false);
28129 _this.eGui.style.transition = '';
28130 }, fadeDelay);
28131 }, flashDelay);
28132 };
28133 CellCtrl.prototype.onFlashCells = function (event) {
28134 if (!this.cellComp) {
28135 return;
28136 }
28137 var cellId = this.beans.cellPositionUtils.createId(this.getCellPosition());
28138 var shouldFlash = event.cells[cellId];
28139 if (shouldFlash) {
28140 this.animateCell('highlight');
28141 }
28142 };
28143 CellCtrl.prototype.isCellEditable = function () {
28144 return this.column.isCellEditable(this.rowNode);
28145 };
28146 CellCtrl.prototype.isSuppressFillHandle = function () {
28147 return this.column.isSuppressFillHandle();
28148 };
28149 CellCtrl.prototype.formatValue = function (value) {
28150 var res = this.callValueFormatter(value);
28151 return res != null ? res : value;
28152 };
28153 CellCtrl.prototype.callValueFormatter = function (value) {
28154 return this.beans.valueFormatterService.formatValue(this.column, this.rowNode, value);
28155 };
28156 CellCtrl.prototype.updateAndFormatValue = function (force) {
28157 if (force === void 0) { force = false; }
28158 var oldValue = this.value;
28159 var oldValueFormatted = this.valueFormatted;
28160 this.value = this.getValueFromValueService();
28161 this.valueFormatted = this.callValueFormatter(this.value);
28162 var valuesDifferent = force ? true :
28163 !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;
28164 return valuesDifferent;
28165 };
28166 CellCtrl.prototype.valuesAreEqual = function (val1, val2) {
28167 // if the user provided an equals method, use that, otherwise do simple comparison
28168 var colDef = this.column.getColDef();
28169 return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;
28170 };
28171 CellCtrl.prototype.getComp = function () {
28172 return this.cellComp;
28173 };
28174 CellCtrl.prototype.getValueFromValueService = function () {
28175 // if we don't check this, then the grid will render leaf groups as open even if we are not
28176 // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow
28177 // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded
28178 // them via the API, or user user expanded them in the UI before turning on pivot mode
28179 var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnModel.isPivotMode();
28180 var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;
28181 // are we showing group footers
28182 var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();
28183 // if doing footers, we normally don't show agg data at group level when group is open
28184 var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();
28185 // if doing grouping and footers, we don't want to include the agg value
28186 // in the header when the group is open
28187 var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;
28188 var value = this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);
28189 return value;
28190 };
28191 CellCtrl.prototype.getValue = function () {
28192 return this.value;
28193 };
28194 CellCtrl.prototype.getValueFormatted = function () {
28195 return this.valueFormatted;
28196 };
28197 CellCtrl.prototype.addDomData = function () {
28198 var _this = this;
28199 var element = this.getGui();
28200 this.beans.gridOptionsWrapper.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, this);
28201 this.addDestroyFunc(function () { return _this.beans.gridOptionsWrapper.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, null); });
28202 };
28203 CellCtrl.prototype.createEvent = function (domEvent, eventType) {
28204 var event = {
28205 type: eventType,
28206 node: this.rowNode,
28207 data: this.rowNode.data,
28208 value: this.value,
28209 column: this.column,
28210 colDef: this.column.getColDef(),
28211 context: this.beans.gridOptionsWrapper.getContext(),
28212 api: this.beans.gridApi,
28213 columnApi: this.beans.columnApi,
28214 rowPinned: this.rowNode.rowPinned,
28215 event: domEvent,
28216 rowIndex: this.rowNode.rowIndex
28217 };
28218 return event;
28219 };
28220 CellCtrl.prototype.onKeyPress = function (event) {
28221 this.cellKeyboardListenerFeature.onKeyPress(event);
28222 };
28223 CellCtrl.prototype.onKeyDown = function (event) {
28224 this.cellKeyboardListenerFeature.onKeyDown(event);
28225 };
28226 CellCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {
28227 this.cellMouseListenerFeature.onMouseEvent(eventName, mouseEvent);
28228 };
28229 CellCtrl.prototype.getGui = function () {
28230 return this.eGui;
28231 };
28232 CellCtrl.prototype.refreshToolTip = function () {
28233 this.tooltipFeature.refreshToolTip();
28234 };
28235 CellCtrl.prototype.getColSpanningList = function () {
28236 return this.cellPositionFeature.getColSpanningList();
28237 };
28238 CellCtrl.prototype.onLeftChanged = function () {
28239 if (!this.cellComp) {
28240 return;
28241 }
28242 this.cellPositionFeature.onLeftChanged();
28243 };
28244 CellCtrl.prototype.onDisplayedColumnsChanged = function () {
28245 if (!this.eGui) {
28246 return;
28247 }
28248 this.setAriaColIndex();
28249 };
28250 CellCtrl.prototype.setAriaColIndex = function () {
28251 var colIdx = this.beans.columnModel.getAriaColumnIndex(this.column);
28252 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_17__["setAriaColIndex"])(this.getGui(), colIdx); // for react, we don't use JSX, as it slowed down column moving
28253 };
28254 CellCtrl.prototype.isSuppressNavigable = function () {
28255 return this.column.isSuppressNavigable(this.rowNode);
28256 };
28257 CellCtrl.prototype.onWidthChanged = function () {
28258 return this.cellPositionFeature.onWidthChanged();
28259 };
28260 CellCtrl.prototype.getColumn = function () {
28261 return this.column;
28262 };
28263 CellCtrl.prototype.getRowNode = function () {
28264 return this.rowNode;
28265 };
28266 CellCtrl.prototype.getBeans = function () {
28267 return this.beans;
28268 };
28269 CellCtrl.prototype.isPrintLayout = function () {
28270 return this.printLayout;
28271 };
28272 CellCtrl.prototype.appendChild = function (htmlElement) {
28273 this.eGui.appendChild(htmlElement);
28274 };
28275 CellCtrl.prototype.refreshHandle = function () {
28276 if (this.editing) {
28277 return;
28278 }
28279 if (this.cellRangeFeature) {
28280 this.cellRangeFeature.refreshHandle();
28281 }
28282 };
28283 CellCtrl.prototype.getCellPosition = function () {
28284 return this.cellPosition;
28285 };
28286 CellCtrl.prototype.isEditing = function () {
28287 return this.editing;
28288 };
28289 // called by rowRenderer when user navigates via tab key
28290 CellCtrl.prototype.startRowOrCellEdit = function (key, charPress, event) {
28291 if (event === void 0) { event = null; }
28292 if (this.beans.gridOptionsWrapper.isFullRowEdit()) {
28293 this.rowCtrl.startRowEditing(key, charPress, this);
28294 }
28295 else {
28296 this.startEditing(key, charPress, true, event);
28297 }
28298 };
28299 CellCtrl.prototype.getRowCtrl = function () {
28300 return this.rowCtrl;
28301 };
28302 CellCtrl.prototype.getRowPosition = function () {
28303 return {
28304 rowIndex: this.cellPosition.rowIndex,
28305 rowPinned: this.cellPosition.rowPinned
28306 };
28307 };
28308 CellCtrl.prototype.updateRangeBordersIfRangeCount = function () {
28309 if (!this.cellComp) {
28310 return;
28311 }
28312 if (this.cellRangeFeature) {
28313 this.cellRangeFeature.updateRangeBordersIfRangeCount();
28314 }
28315 };
28316 CellCtrl.prototype.onRangeSelectionChanged = function () {
28317 if (!this.cellComp) {
28318 return;
28319 }
28320 if (this.cellRangeFeature) {
28321 this.cellRangeFeature.onRangeSelectionChanged();
28322 }
28323 };
28324 CellCtrl.prototype.isRangeSelectionEnabled = function () {
28325 return this.cellRangeFeature != null;
28326 };
28327 CellCtrl.prototype.focusCell = function (forceBrowserFocus) {
28328 if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }
28329 this.beans.focusService.setFocusedCell(this.getCellPosition().rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);
28330 };
28331 CellCtrl.prototype.onRowIndexChanged = function () {
28332 // when index changes, this influences items that need the index, so we update the
28333 // grid cell so they are working off the new index.
28334 this.createCellPosition();
28335 // when the index of the row changes, ie means the cell may have lost or gained focus
28336 this.onCellFocused();
28337 // check range selection
28338 if (this.cellRangeFeature) {
28339 this.cellRangeFeature.onRangeSelectionChanged();
28340 }
28341 };
28342 CellCtrl.prototype.onFirstRightPinnedChanged = function () {
28343 if (!this.cellComp) {
28344 return;
28345 }
28346 var firstRightPinned = this.column.isFirstRightPinned();
28347 this.cellComp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);
28348 };
28349 CellCtrl.prototype.onLastLeftPinnedChanged = function () {
28350 if (!this.cellComp) {
28351 return;
28352 }
28353 var lastLeftPinned = this.column.isLastLeftPinned();
28354 this.cellComp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);
28355 };
28356 CellCtrl.prototype.onCellFocused = function (event) {
28357 if (!this.cellComp || this.gow.isSuppressCellFocus()) {
28358 return;
28359 }
28360 var cellFocused = this.beans.focusService.isCellFocused(this.cellPosition);
28361 this.cellComp.addOrRemoveCssClass(CSS_CELL_FOCUS, cellFocused);
28362 // see if we need to force browser focus - this can happen if focus is programmatically set
28363 if (cellFocused && event && event.forceBrowserFocus) {
28364 var focusEl = this.cellComp.getFocusableElement();
28365 focusEl.focus();
28366 }
28367 // if another cell was focused, and we are editing, then stop editing
28368 var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();
28369 if (!cellFocused && !fullRowEdit && this.editing) {
28370 this.stopRowOrCellEdit();
28371 }
28372 };
28373 CellCtrl.prototype.createCellPosition = function () {
28374 this.cellPosition = {
28375 rowIndex: this.rowNode.rowIndex,
28376 rowPinned: Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["makeNull"])(this.rowNode.rowPinned),
28377 column: this.column
28378 };
28379 };
28380 // CSS Classes that only get applied once, they never change
28381 CellCtrl.prototype.applyStaticCssClasses = function () {
28382 this.cellComp.addOrRemoveCssClass(CSS_CELL, true);
28383 this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, true);
28384 // normal cells fill the height of the row. autoHeight cells have no height to let them
28385 // fit the height of content.
28386 var autoHeight = this.column.isAutoHeight() == true;
28387 this.cellComp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);
28388 this.cellComp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);
28389 };
28390 CellCtrl.prototype.onColumnHover = function () {
28391 if (!this.cellComp) {
28392 return;
28393 }
28394 if (!this.beans.gridOptionsWrapper.isColumnHoverHighlight()) {
28395 return;
28396 }
28397 var isHovered = this.beans.columnHoverService.isHovered(this.column);
28398 this.cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);
28399 };
28400 CellCtrl.prototype.onNewColumnsLoaded = function () {
28401 if (!this.cellComp) {
28402 return;
28403 }
28404 this.setWrapText();
28405 if (!this.editing) {
28406 this.refreshCell({ forceRefresh: true, suppressFlash: true });
28407 }
28408 };
28409 CellCtrl.prototype.setWrapText = function () {
28410 var value = this.column.getColDef().wrapText == true;
28411 this.cellComp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);
28412 };
28413 CellCtrl.prototype.dispatchCellContextMenuEvent = function (event) {
28414 var colDef = this.column.getColDef();
28415 var cellContextMenuEvent = this.createEvent(event, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_CONTEXT_MENU);
28416 this.beans.eventService.dispatchEvent(cellContextMenuEvent);
28417 if (colDef.onCellContextMenu) {
28418 // to make the callback async, do in a timeout
28419 window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);
28420 }
28421 };
28422 CellCtrl.prototype.getCellRenderer = function () {
28423 return this.cellComp ? this.cellComp.getCellRenderer() : null;
28424 };
28425 CellCtrl.prototype.getCellEditor = function () {
28426 return this.cellComp ? this.cellComp.getCellEditor() : null;
28427 };
28428 CellCtrl.prototype.destroy = function () {
28429 _super.prototype.destroy.call(this);
28430 };
28431 CellCtrl.prototype.createSelectionCheckbox = function () {
28432 var cbSelectionComponent = new _checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_11__["CheckboxSelectionComponent"]();
28433 this.beans.context.createBean(cbSelectionComponent);
28434 cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });
28435 // put the checkbox in before the value
28436 return cbSelectionComponent;
28437 };
28438 CellCtrl.prototype.createDndSource = function () {
28439 var dndSourceComp = new _dndSourceComp__WEBPACK_IMPORTED_MODULE_12__["DndSourceComp"](this.rowNode, this.column, this.beans, this.eGui);
28440 this.beans.context.createBean(dndSourceComp);
28441 return dndSourceComp;
28442 };
28443 CellCtrl.prototype.registerRowDragger = function (customElement, dragStartPixels, suppressVisibilityChange) {
28444 var _this = this;
28445 // if previously existed, then we are only updating
28446 if (this.customRowDragComp) {
28447 this.customRowDragComp.setDragElement(customElement, dragStartPixels);
28448 return;
28449 }
28450 var newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);
28451 if (newComp) {
28452 this.customRowDragComp = newComp;
28453 this.addDestroyFunc(function () { return _this.beans.context.destroyBean(newComp); });
28454 }
28455 };
28456 CellCtrl.prototype.createRowDragComp = function (customElement, dragStartPixels, suppressVisibilityChange) {
28457 var _this = this;
28458 var pagination = this.beans.gridOptionsWrapper.isPagination();
28459 var rowDragManaged = this.beans.gridOptionsWrapper.isRowDragManaged();
28460 var clientSideRowModelActive = this.beans.gridOptionsWrapper.isRowModelDefault();
28461 if (rowDragManaged) {
28462 // row dragging only available in default row model
28463 if (!clientSideRowModelActive) {
28464 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');
28465 return;
28466 }
28467 if (pagination) {
28468 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');
28469 return;
28470 }
28471 }
28472 // otherwise (normal case) we are creating a RowDraggingComp for the first time
28473 var rowDragComp = new _row_rowDragComp__WEBPACK_IMPORTED_MODULE_14__["RowDragComp"](function () { return _this.value; }, this.rowNode, this.column, customElement, dragStartPixels, suppressVisibilityChange);
28474 this.beans.context.createBean(rowDragComp);
28475 return rowDragComp;
28476 };
28477 CellCtrl.DOM_DATA_KEY_CELL_CTRL = 'cellCtrl';
28478 return CellCtrl;
28479}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
28480
28481
28482
28483
28484
28485/***/ }),
28486/* 122 */
28487/***/ (function(module, __webpack_exports__, __webpack_require__) {
28488
28489"use strict";
28490__webpack_require__.r(__webpack_exports__);
28491/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellRangeFeature", function() { return CellRangeFeature; });
28492/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
28493/* harmony import */ var _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(123);
28494/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
28495/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
28496/**
28497 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
28498 * @version v27.3.0
28499 * @link https://www.ag-grid.com/
28500 * @license MIT
28501 */
28502
28503
28504
28505
28506var CSS_CELL_RANGE_SELECTED = 'ag-cell-range-selected';
28507var CSS_CELL_RANGE_CHART = 'ag-cell-range-chart';
28508var CSS_CELL_RANGE_SINGLE_CELL = 'ag-cell-range-single-cell';
28509var CSS_CELL_RANGE_CHART_CATEGORY = 'ag-cell-range-chart-category';
28510var CSS_CELL_RANGE_HANDLE = 'ag-cell-range-handle';
28511var CSS_CELL_RANGE_TOP = 'ag-cell-range-top';
28512var CSS_CELL_RANGE_RIGHT = 'ag-cell-range-right';
28513var CSS_CELL_RANGE_BOTTOM = 'ag-cell-range-bottom';
28514var CSS_CELL_RANGE_LEFT = 'ag-cell-range-left';
28515var CellRangeFeature = /** @class */ (function () {
28516 function CellRangeFeature(beans, ctrl) {
28517 this.beans = beans;
28518 this.cellCtrl = ctrl;
28519 }
28520 CellRangeFeature.prototype.setComp = function (cellComp, eGui) {
28521 this.cellComp = cellComp;
28522 this.eGui = eGui;
28523 this.onRangeSelectionChanged();
28524 };
28525 CellRangeFeature.prototype.onRangeSelectionChanged = function () {
28526 // when using reactUi, given UI is async, it's possible this method is called before the comp is registered
28527 if (!this.cellComp) {
28528 return;
28529 }
28530 this.rangeCount = this.beans.rangeService.getCellRangeCount(this.cellCtrl.getCellPosition());
28531 this.hasChartRange = this.getHasChartRange();
28532 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED, this.rangeCount !== 0);
28533 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-1", this.rangeCount === 1);
28534 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-2", this.rangeCount === 2);
28535 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-3", this.rangeCount === 3);
28536 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-4", this.rangeCount >= 4);
28537 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART, this.hasChartRange);
28538 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaSelected"])(this.eGui, this.rangeCount > 0 ? true : undefined);
28539 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SINGLE_CELL, this.isSingleCell());
28540 this.updateRangeBorders();
28541 this.refreshHandle();
28542 };
28543 CellRangeFeature.prototype.updateRangeBorders = function () {
28544 var rangeBorders = this.getRangeBorders();
28545 var isSingleCell = this.isSingleCell();
28546 var isTop = !isSingleCell && rangeBorders.top;
28547 var isRight = !isSingleCell && rangeBorders.right;
28548 var isBottom = !isSingleCell && rangeBorders.bottom;
28549 var isLeft = !isSingleCell && rangeBorders.left;
28550 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_TOP, isTop);
28551 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_RIGHT, isRight);
28552 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_BOTTOM, isBottom);
28553 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_LEFT, isLeft);
28554 };
28555 CellRangeFeature.prototype.isSingleCell = function () {
28556 var rangeService = this.beans.rangeService;
28557 return this.rangeCount === 1 && rangeService && !rangeService.isMoreThanOneCell();
28558 };
28559 CellRangeFeature.prototype.getHasChartRange = function () {
28560 var rangeService = this.beans.rangeService;
28561 if (!this.rangeCount || !rangeService) {
28562 return false;
28563 }
28564 var cellRanges = rangeService.getCellRanges();
28565 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); });
28566 };
28567 CellRangeFeature.prototype.updateRangeBordersIfRangeCount = function () {
28568 // we only need to update range borders if we are in a range
28569 if (this.rangeCount > 0) {
28570 this.updateRangeBorders();
28571 this.refreshHandle();
28572 }
28573 };
28574 CellRangeFeature.prototype.getRangeBorders = function () {
28575 var _this = this;
28576 var isRtl = this.beans.gridOptionsWrapper.isEnableRtl();
28577 var top = false;
28578 var right = false;
28579 var bottom = false;
28580 var left = false;
28581 var thisCol = this.cellCtrl.getCellPosition().column;
28582 var _a = this.beans, rangeService = _a.rangeService, columnModel = _a.columnModel;
28583 var leftCol;
28584 var rightCol;
28585 if (isRtl) {
28586 leftCol = columnModel.getDisplayedColAfter(thisCol);
28587 rightCol = columnModel.getDisplayedColBefore(thisCol);
28588 }
28589 else {
28590 leftCol = columnModel.getDisplayedColBefore(thisCol);
28591 rightCol = columnModel.getDisplayedColAfter(thisCol);
28592 }
28593 var ranges = rangeService.getCellRanges().filter(function (range) { return rangeService.isCellInSpecificRange(_this.cellCtrl.getCellPosition(), range); });
28594 // this means we are the first column in the grid
28595 if (!leftCol) {
28596 left = true;
28597 }
28598 // this means we are the last column in the grid
28599 if (!rightCol) {
28600 right = true;
28601 }
28602 for (var i = 0; i < ranges.length; i++) {
28603 if (top && right && bottom && left) {
28604 break;
28605 }
28606 var range = ranges[i];
28607 var startRow = rangeService.getRangeStartRow(range);
28608 var endRow = rangeService.getRangeEndRow(range);
28609 if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellCtrl.getCellPosition())) {
28610 top = true;
28611 }
28612 if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellCtrl.getCellPosition())) {
28613 bottom = true;
28614 }
28615 if (!left && leftCol && range.columns.indexOf(leftCol) < 0) {
28616 left = true;
28617 }
28618 if (!right && rightCol && range.columns.indexOf(rightCol) < 0) {
28619 right = true;
28620 }
28621 }
28622 return { top: top, right: right, bottom: bottom, left: left };
28623 };
28624 CellRangeFeature.prototype.refreshHandle = function () {
28625 if (!this.beans.rangeService) {
28626 return;
28627 }
28628 var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();
28629 if (this.selectionHandle && !shouldHaveSelectionHandle) {
28630 this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);
28631 }
28632 if (shouldHaveSelectionHandle) {
28633 this.addSelectionHandle();
28634 }
28635 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_HANDLE, !!this.selectionHandle);
28636 };
28637 CellRangeFeature.prototype.shouldHaveSelectionHandle = function () {
28638 var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeService = _a.rangeService;
28639 var cellRanges = rangeService.getCellRanges();
28640 var rangesLen = cellRanges.length;
28641 if (this.rangeCount < 1 || rangesLen < 1) {
28642 return false;
28643 }
28644 var cellRange = Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["last"])(cellRanges);
28645 var cellPosition = this.cellCtrl.getCellPosition();
28646 var isFillHandleAvailable = gridOptionsWrapper.isEnableFillHandle() && !this.cellCtrl.isSuppressFillHandle();
28647 var isRangeHandleAvailable = gridOptionsWrapper.isEnableRangeHandle();
28648 var handleIsAvailable = rangesLen === 1 && !this.cellCtrl.isEditing() && (isFillHandleAvailable || isRangeHandleAvailable);
28649 if (this.hasChartRange) {
28650 var hasCategoryRange = cellRanges[0].type === _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["CellRangeType"].DIMENSION;
28651 var isCategoryCell = hasCategoryRange && rangeService.isCellInSpecificRange(cellPosition, cellRanges[0]);
28652 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART_CATEGORY, isCategoryCell);
28653 handleIsAvailable = cellRange.type === _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["CellRangeType"].VALUE;
28654 }
28655 return handleIsAvailable &&
28656 cellRange.endRow != null &&
28657 rangeService.isContiguousRange(cellRange) &&
28658 rangeService.isBottomRightCell(cellRange, cellPosition);
28659 };
28660 CellRangeFeature.prototype.addSelectionHandle = function () {
28661 var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeService = _a.rangeService;
28662 var cellRangeType = Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["last"])(rangeService.getCellRanges()).type;
28663 var selectionHandleFill = gridOptionsWrapper.isEnableFillHandle() && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["missing"])(cellRangeType);
28664 var type = selectionHandleFill ? _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["SelectionHandleType"].FILL : _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["SelectionHandleType"].RANGE;
28665 if (this.selectionHandle && this.selectionHandle.getType() !== type) {
28666 this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);
28667 }
28668 if (!this.selectionHandle) {
28669 this.selectionHandle = this.beans.selectionHandleFactory.createSelectionHandle(type);
28670 }
28671 this.selectionHandle.refresh(this.cellCtrl);
28672 };
28673 CellRangeFeature.prototype.destroy = function () {
28674 this.beans.context.destroyBean(this.selectionHandle);
28675 };
28676 return CellRangeFeature;
28677}());
28678
28679
28680
28681
28682
28683/***/ }),
28684/* 123 */
28685/***/ (function(module, __webpack_exports__, __webpack_require__) {
28686
28687"use strict";
28688__webpack_require__.r(__webpack_exports__);
28689/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectionHandleType", function() { return SelectionHandleType; });
28690/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellRangeType", function() { return CellRangeType; });
28691/**
28692 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
28693 * @version v27.3.0
28694 * @link https://www.ag-grid.com/
28695 * @license MIT
28696 */
28697var SelectionHandleType;
28698(function (SelectionHandleType) {
28699 SelectionHandleType[SelectionHandleType["FILL"] = 0] = "FILL";
28700 SelectionHandleType[SelectionHandleType["RANGE"] = 1] = "RANGE";
28701})(SelectionHandleType || (SelectionHandleType = {}));
28702var CellRangeType;
28703(function (CellRangeType) {
28704 CellRangeType[CellRangeType["VALUE"] = 0] = "VALUE";
28705 CellRangeType[CellRangeType["DIMENSION"] = 1] = "DIMENSION";
28706})(CellRangeType || (CellRangeType = {}));
28707
28708
28709
28710
28711/***/ }),
28712/* 124 */
28713/***/ (function(module, __webpack_exports__, __webpack_require__) {
28714
28715"use strict";
28716__webpack_require__.r(__webpack_exports__);
28717/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellPositionFeature", function() { return CellPositionFeature; });
28718/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
28719/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24);
28720/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
28721/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
28722/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20);
28723/**
28724 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
28725 * @version v27.3.0
28726 * @link https://www.ag-grid.com/
28727 * @license MIT
28728 */
28729var __extends = (undefined && undefined.__extends) || (function () {
28730 var extendStatics = function (d, b) {
28731 extendStatics = Object.setPrototypeOf ||
28732 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
28733 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
28734 return extendStatics(d, b);
28735 };
28736 return function (d, b) {
28737 extendStatics(d, b);
28738 function __() { this.constructor = d; }
28739 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
28740 };
28741})();
28742
28743
28744
28745
28746
28747/**
28748 * Takes care of:
28749 * #) Cell Width (including when doing cell spanning, which makes width cover many columns)
28750 * #) Cell Height (when doing row span, otherwise we don't touch the height as it's just row height)
28751 * #) Cell Left (the horizontal positioning of the cell, the vertical positioning is on the row)
28752 */
28753var CellPositionFeature = /** @class */ (function (_super) {
28754 __extends(CellPositionFeature, _super);
28755 function CellPositionFeature(ctrl, beans) {
28756 var _this = _super.call(this) || this;
28757 _this.cellCtrl = ctrl;
28758 _this.beans = beans;
28759 _this.column = ctrl.getColumn();
28760 _this.rowNode = ctrl.getRowNode();
28761 _this.setupColSpan();
28762 _this.setupRowSpan();
28763 return _this;
28764 }
28765 CellPositionFeature.prototype.setupRowSpan = function () {
28766 this.rowSpan = this.column.getRowSpan(this.rowNode);
28767 };
28768 CellPositionFeature.prototype.setComp = function (eGui) {
28769 this.eGui = eGui;
28770 this.onLeftChanged();
28771 this.onWidthChanged();
28772 this.applyRowSpan();
28773 };
28774 CellPositionFeature.prototype.onDisplayColumnsChanged = function () {
28775 var colsSpanning = this.getColSpanningList();
28776 if (!Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["areEqual"])(this.colsSpanning, colsSpanning)) {
28777 this.colsSpanning = colsSpanning;
28778 this.onWidthChanged();
28779 this.onLeftChanged(); // left changes when doing RTL
28780 }
28781 };
28782 CellPositionFeature.prototype.setupColSpan = function () {
28783 // if no col span is active, then we don't set it up, as it would be wasteful of CPU
28784 if (this.column.getColDef().colSpan == null) {
28785 return;
28786 }
28787 this.colsSpanning = this.getColSpanningList();
28788 // because we are col spanning, a reorder of the cols can change what cols we are spanning over
28789 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));
28790 // because we are spanning over multiple cols, we check for width any time any cols width changes.
28791 // this is expensive - really we should be explicitly checking only the cols we are spanning over
28792 // instead of every col, however it would be tricky code to track the cols we are spanning over, so
28793 // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.
28794 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));
28795 };
28796 CellPositionFeature.prototype.onWidthChanged = function () {
28797 if (!this.eGui) {
28798 return;
28799 }
28800 var width = this.getCellWidth();
28801 this.eGui.style.width = width + "px";
28802 };
28803 CellPositionFeature.prototype.getCellWidth = function () {
28804 if (!this.colsSpanning) {
28805 return this.column.getActualWidth();
28806 }
28807 return this.colsSpanning.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);
28808 };
28809 CellPositionFeature.prototype.getColSpanningList = function () {
28810 var colSpan = this.column.getColSpan(this.rowNode);
28811 var colsSpanning = [];
28812 // if just one col, the col span is just the column we are in
28813 if (colSpan === 1) {
28814 colsSpanning.push(this.column);
28815 }
28816 else {
28817 var pointer = this.column;
28818 var pinned = this.column.getPinned();
28819 for (var i = 0; pointer && i < colSpan; i++) {
28820 colsSpanning.push(pointer);
28821 pointer = this.beans.columnModel.getDisplayedColAfter(pointer);
28822 if (!pointer || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["missing"])(pointer)) {
28823 break;
28824 }
28825 // we do not allow col spanning to span outside of pinned areas
28826 if (pinned !== pointer.getPinned()) {
28827 break;
28828 }
28829 }
28830 }
28831 return colsSpanning;
28832 };
28833 CellPositionFeature.prototype.onLeftChanged = function () {
28834 if (!this.eGui) {
28835 return;
28836 }
28837 var left = this.modifyLeftForPrintLayout(this.getCellLeft());
28838 this.eGui.style.left = left + 'px';
28839 };
28840 CellPositionFeature.prototype.getCellLeft = function () {
28841 var mostLeftCol;
28842 if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {
28843 mostLeftCol = Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["last"])(this.colsSpanning);
28844 }
28845 else {
28846 mostLeftCol = this.column;
28847 }
28848 return mostLeftCol.getLeft();
28849 };
28850 CellPositionFeature.prototype.modifyLeftForPrintLayout = function (leftPosition) {
28851 if (!this.cellCtrl.isPrintLayout() || this.column.getPinned() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_LEFT) {
28852 return leftPosition;
28853 }
28854 var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();
28855 if (this.column.getPinned() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_RIGHT) {
28856 var bodyWidth = this.beans.columnModel.getBodyContainerWidth();
28857 return leftWidth + bodyWidth + (leftPosition || 0);
28858 }
28859 // is in body
28860 return leftWidth + (leftPosition || 0);
28861 };
28862 CellPositionFeature.prototype.applyRowSpan = function () {
28863 if (this.rowSpan === 1) {
28864 return;
28865 }
28866 var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();
28867 var totalRowHeight = singleRowHeight * this.rowSpan;
28868 this.eGui.style.height = totalRowHeight + "px";
28869 this.eGui.style.zIndex = '1';
28870 };
28871 // overriding to make public, as we don't dispose this bean via context
28872 CellPositionFeature.prototype.destroy = function () {
28873 _super.prototype.destroy.call(this);
28874 };
28875 return CellPositionFeature;
28876}(_context_beanStub__WEBPACK_IMPORTED_MODULE_4__["BeanStub"]));
28877
28878
28879
28880
28881
28882/***/ }),
28883/* 125 */
28884/***/ (function(module, __webpack_exports__, __webpack_require__) {
28885
28886"use strict";
28887__webpack_require__.r(__webpack_exports__);
28888/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellCustomStyleFeature", function() { return CellCustomStyleFeature; });
28889/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
28890/**
28891 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
28892 * @version v27.3.0
28893 * @link https://www.ag-grid.com/
28894 * @license MIT
28895 */
28896var __extends = (undefined && undefined.__extends) || (function () {
28897 var extendStatics = function (d, b) {
28898 extendStatics = Object.setPrototypeOf ||
28899 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
28900 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
28901 return extendStatics(d, b);
28902 };
28903 return function (d, b) {
28904 extendStatics(d, b);
28905 function __() { this.constructor = d; }
28906 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
28907 };
28908})();
28909
28910var CellCustomStyleFeature = /** @class */ (function (_super) {
28911 __extends(CellCustomStyleFeature, _super);
28912 function CellCustomStyleFeature(ctrl, beans) {
28913 var _this = _super.call(this) || this;
28914 _this.staticClasses = [];
28915 _this.cellCtrl = ctrl;
28916 _this.beans = beans;
28917 _this.column = ctrl.getColumn();
28918 _this.rowNode = ctrl.getRowNode();
28919 return _this;
28920 }
28921 CellCustomStyleFeature.prototype.setComp = function (comp) {
28922 this.cellComp = comp;
28923 this.applyUserStyles();
28924 this.applyCellClassRules();
28925 this.applyClassesFromColDef();
28926 };
28927 CellCustomStyleFeature.prototype.applyCellClassRules = function () {
28928 var _this = this;
28929 var colDef = this.column.getColDef();
28930 var cellClassParams = {
28931 value: this.cellCtrl.getValue(),
28932 data: this.rowNode.data,
28933 node: this.rowNode,
28934 colDef: colDef,
28935 rowIndex: this.rowNode.rowIndex,
28936 api: this.beans.gridOptionsWrapper.getApi(),
28937 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
28938 context: this.beans.gridOptionsWrapper.getContext()
28939 };
28940 this.beans.stylingService.processClassRules(colDef.cellClassRules, cellClassParams, function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); }, function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });
28941 };
28942 CellCustomStyleFeature.prototype.applyUserStyles = function () {
28943 var colDef = this.column.getColDef();
28944 if (!colDef.cellStyle) {
28945 return;
28946 }
28947 var styles;
28948 if (typeof colDef.cellStyle === 'function') {
28949 var cellStyleParams = {
28950 column: this.column,
28951 value: this.cellCtrl.getValue(),
28952 colDef: colDef,
28953 data: this.rowNode.data,
28954 node: this.rowNode,
28955 rowIndex: this.rowNode.rowIndex,
28956 api: this.beans.gridOptionsWrapper.getApi(),
28957 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
28958 context: this.beans.gridOptionsWrapper.getContext(),
28959 };
28960 var cellStyleFunc = colDef.cellStyle;
28961 styles = cellStyleFunc(cellStyleParams);
28962 }
28963 else {
28964 styles = colDef.cellStyle;
28965 }
28966 this.cellComp.setUserStyles(styles);
28967 };
28968 CellCustomStyleFeature.prototype.applyClassesFromColDef = function () {
28969 var _this = this;
28970 var colDef = this.column.getColDef();
28971 var cellClassParams = {
28972 value: this.cellCtrl.getValue(),
28973 data: this.rowNode.data,
28974 node: this.rowNode,
28975 colDef: colDef,
28976 rowIndex: this.rowNode.rowIndex,
28977 api: this.beans.gridOptionsWrapper.getApi(),
28978 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
28979 context: this.beans.gridOptionsWrapper.getContext()
28980 };
28981 if (this.staticClasses.length) {
28982 this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });
28983 }
28984 this.staticClasses = this.beans.stylingService.getStaticCellClasses(colDef, cellClassParams);
28985 if (this.staticClasses.length) {
28986 this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); });
28987 }
28988 };
28989 // overriding to make public, as we don't dispose this bean via context
28990 CellCustomStyleFeature.prototype.destroy = function () {
28991 _super.prototype.destroy.call(this);
28992 };
28993 return CellCustomStyleFeature;
28994}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
28995
28996
28997
28998
28999
29000/***/ }),
29001/* 126 */
29002/***/ (function(module, __webpack_exports__, __webpack_require__) {
29003
29004"use strict";
29005__webpack_require__.r(__webpack_exports__);
29006/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TooltipFeature", function() { return TooltipFeature; });
29007/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
29008/* harmony import */ var _customTooltipFeature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
29009/**
29010 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29011 * @version v27.3.0
29012 * @link https://www.ag-grid.com/
29013 * @license MIT
29014 */
29015var __extends = (undefined && undefined.__extends) || (function () {
29016 var extendStatics = function (d, b) {
29017 extendStatics = Object.setPrototypeOf ||
29018 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29019 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29020 return extendStatics(d, b);
29021 };
29022 return function (d, b) {
29023 extendStatics(d, b);
29024 function __() { this.constructor = d; }
29025 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29026 };
29027})();
29028
29029
29030var TooltipFeature = /** @class */ (function (_super) {
29031 __extends(TooltipFeature, _super);
29032 function TooltipFeature(ctrl, beans) {
29033 var _this = _super.call(this) || this;
29034 _this.ctrl = ctrl;
29035 _this.beans = beans;
29036 return _this;
29037 }
29038 TooltipFeature.prototype.setComp = function (comp) {
29039 this.comp = comp;
29040 this.setupTooltip();
29041 };
29042 TooltipFeature.prototype.setupTooltip = function () {
29043 this.browserTooltips = this.beans.gridOptionsWrapper.isEnableBrowserTooltips();
29044 this.updateTooltipText();
29045 if (this.browserTooltips) {
29046 this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);
29047 }
29048 else {
29049 this.createTooltipFeatureIfNeeded();
29050 }
29051 };
29052 TooltipFeature.prototype.updateTooltipText = function () {
29053 this.tooltip = this.ctrl.getTooltipValue();
29054 };
29055 TooltipFeature.prototype.createTooltipFeatureIfNeeded = function () {
29056 var _this = this;
29057 if (this.genericTooltipFeature != null) {
29058 return;
29059 }
29060 var parent = {
29061 getTooltipParams: function () { return _this.getTooltipParams(); },
29062 getGui: function () { return _this.ctrl.getGui(); }
29063 };
29064 this.genericTooltipFeature = this.createManagedBean(new _customTooltipFeature__WEBPACK_IMPORTED_MODULE_1__["CustomTooltipFeature"](parent), this.beans.context);
29065 };
29066 TooltipFeature.prototype.refreshToolTip = function () {
29067 this.updateTooltipText();
29068 if (this.browserTooltips) {
29069 this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);
29070 }
29071 };
29072 TooltipFeature.prototype.getTooltipParams = function () {
29073 var ctrl = this.ctrl;
29074 var column = ctrl.getColumn ? ctrl.getColumn() : undefined;
29075 var colDef = ctrl.getColDef ? ctrl.getColDef() : undefined;
29076 var rowNode = ctrl.getRowNode ? ctrl.getRowNode() : undefined;
29077 return {
29078 location: ctrl.getLocation(),
29079 colDef: colDef,
29080 column: column,
29081 rowIndex: ctrl.getRowIndex ? ctrl.getRowIndex() : undefined,
29082 node: rowNode,
29083 data: rowNode ? rowNode.data : undefined,
29084 value: this.getTooltipText(),
29085 valueFormatted: ctrl.getValueFormatted ? ctrl.getValueFormatted() : undefined,
29086 };
29087 };
29088 TooltipFeature.prototype.getTooltipText = function () {
29089 return this.tooltip;
29090 };
29091 // overriding to make public, as we don't dispose this bean via context
29092 TooltipFeature.prototype.destroy = function () {
29093 _super.prototype.destroy.call(this);
29094 };
29095 return TooltipFeature;
29096}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
29097
29098
29099
29100
29101
29102/***/ }),
29103/* 127 */
29104/***/ (function(module, __webpack_exports__, __webpack_require__) {
29105
29106"use strict";
29107__webpack_require__.r(__webpack_exports__);
29108/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellMouseListenerFeature", function() { return CellMouseListenerFeature; });
29109/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
29110/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43);
29111/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
29112/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
29113/* harmony import */ var _beans__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(128);
29114/**
29115 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29116 * @version v27.3.0
29117 * @link https://www.ag-grid.com/
29118 * @license MIT
29119 */
29120var __extends = (undefined && undefined.__extends) || (function () {
29121 var extendStatics = function (d, b) {
29122 extendStatics = Object.setPrototypeOf ||
29123 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29124 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29125 return extendStatics(d, b);
29126 };
29127 return function (d, b) {
29128 extendStatics(d, b);
29129 function __() { this.constructor = d; }
29130 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29131 };
29132})();
29133
29134
29135
29136
29137
29138var CellMouseListenerFeature = /** @class */ (function (_super) {
29139 __extends(CellMouseListenerFeature, _super);
29140 function CellMouseListenerFeature(ctrl, beans, column) {
29141 var _this = _super.call(this) || this;
29142 _this.cellCtrl = ctrl;
29143 _this.beans = beans;
29144 _this.column = column;
29145 return _this;
29146 }
29147 CellMouseListenerFeature.prototype.onMouseEvent = function (eventName, mouseEvent) {
29148 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_3__["isStopPropagationForAgGrid"])(mouseEvent)) {
29149 return;
29150 }
29151 switch (eventName) {
29152 case 'click':
29153 this.onCellClicked(mouseEvent);
29154 break;
29155 case 'mousedown':
29156 case 'touchstart':
29157 this.onMouseDown(mouseEvent);
29158 break;
29159 case 'dblclick':
29160 this.onCellDoubleClicked(mouseEvent);
29161 break;
29162 case 'mouseout':
29163 this.onMouseOut(mouseEvent);
29164 break;
29165 case 'mouseover':
29166 this.onMouseOver(mouseEvent);
29167 break;
29168 }
29169 };
29170 CellMouseListenerFeature.prototype.onCellClicked = function (mouseEvent) {
29171 // iPad doesn't have double click - so we need to mimic it to enable editing for iPad.
29172 if (this.isDoubleClickOnIPad()) {
29173 this.onCellDoubleClicked(mouseEvent);
29174 mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in
29175 return;
29176 }
29177 var _a = this.beans, eventService = _a.eventService, gridOptionsWrapper = _a.gridOptionsWrapper;
29178 var cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_CLICKED);
29179 eventService.dispatchEvent(cellClickedEvent);
29180 var colDef = this.column.getColDef();
29181 if (colDef.onCellClicked) {
29182 // to make callback async, do in a timeout
29183 window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);
29184 }
29185 var editOnSingleClick = (gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)
29186 && !gridOptionsWrapper.isSuppressClickEdit();
29187 if (editOnSingleClick) {
29188 this.cellCtrl.startRowOrCellEdit();
29189 }
29190 };
29191 // returns true if on iPad and this is second 'click' event in 200ms
29192 CellMouseListenerFeature.prototype.isDoubleClickOnIPad = function () {
29193 if (!Object(_utils_browser__WEBPACK_IMPORTED_MODULE_1__["isIOSUserAgent"])() || Object(_utils_event__WEBPACK_IMPORTED_MODULE_3__["isEventSupported"])('dblclick')) {
29194 return false;
29195 }
29196 var nowMillis = new Date().getTime();
29197 var res = nowMillis - this.lastIPadMouseClickEvent < 200;
29198 this.lastIPadMouseClickEvent = nowMillis;
29199 return res;
29200 };
29201 CellMouseListenerFeature.prototype.onCellDoubleClicked = function (mouseEvent) {
29202 var colDef = this.column.getColDef();
29203 // always dispatch event to eventService
29204 var cellDoubleClickedEvent = this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_DOUBLE_CLICKED);
29205 this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);
29206 // check if colDef also wants to handle event
29207 if (typeof colDef.onCellDoubleClicked === 'function') {
29208 // to make the callback async, do in a timeout
29209 window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);
29210 }
29211 var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()
29212 && !this.beans.gridOptionsWrapper.isSuppressClickEdit();
29213 if (editOnDoubleClick) {
29214 this.cellCtrl.startRowOrCellEdit(null, null, mouseEvent);
29215 }
29216 };
29217 CellMouseListenerFeature.prototype.onMouseDown = function (mouseEvent) {
29218 var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;
29219 var target = mouseEvent.target;
29220 var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService;
29221 // do not change the range for right-clicks inside an existing range
29222 if (this.isRightClickInExistingRange(mouseEvent)) {
29223 return;
29224 }
29225 var ranges = rangeService && rangeService.getCellRanges().length != 0;
29226 if (!shiftKey || !ranges) {
29227 // We only need to pass true to focusCell when the browser is IE/Edge and we are trying
29228 // to focus the cell itself. This should never be true if the mousedown was triggered
29229 // due to a click on a cell editor for example.
29230 var forceBrowserFocus = (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_1__["isBrowserEdge"])()) && !this.cellCtrl.isEditing() && !Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isFocusableFormField"])(target);
29231 this.cellCtrl.focusCell(forceBrowserFocus);
29232 }
29233 // if shift clicking, and a range exists, we keep the focus on the cell that started the
29234 // range as the user then changes the range selection.
29235 if (shiftKey && ranges) {
29236 // this stops the cell from getting focused
29237 mouseEvent.preventDefault();
29238 }
29239 // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox
29240 // is focused but we don't want to change the range selection, so return here.
29241 if (this.containsWidget(target)) {
29242 return;
29243 }
29244 if (rangeService) {
29245 var thisCell = this.cellCtrl.getCellPosition();
29246 if (shiftKey) {
29247 rangeService.extendLatestRangeToCell(thisCell);
29248 }
29249 else {
29250 var ctrlKeyPressed = ctrlKey || metaKey;
29251 rangeService.setRangeToCell(thisCell, ctrlKeyPressed);
29252 }
29253 }
29254 eventService.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_MOUSE_DOWN));
29255 };
29256 CellMouseListenerFeature.prototype.isRightClickInExistingRange = function (mouseEvent) {
29257 var rangeService = this.beans.rangeService;
29258 if (rangeService) {
29259 var cellInRange = rangeService.isCellInAnyRange(this.cellCtrl.getCellPosition());
29260 if (cellInRange && mouseEvent.button === 2) {
29261 return true;
29262 }
29263 }
29264 return false;
29265 };
29266 CellMouseListenerFeature.prototype.containsWidget = function (target) {
29267 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isElementChildOfClass"])(target, 'ag-selection-checkbox', 3);
29268 };
29269 CellMouseListenerFeature.prototype.onMouseOut = function (mouseEvent) {
29270 if (this.mouseStayingInsideCell(mouseEvent)) {
29271 return;
29272 }
29273 var cellMouseOutEvent = this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_MOUSE_OUT);
29274 this.beans.eventService.dispatchEvent(cellMouseOutEvent);
29275 this.beans.columnHoverService.clearMouseOver();
29276 };
29277 CellMouseListenerFeature.prototype.onMouseOver = function (mouseEvent) {
29278 if (this.mouseStayingInsideCell(mouseEvent)) {
29279 return;
29280 }
29281 var cellMouseOverEvent = this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_MOUSE_OVER);
29282 this.beans.eventService.dispatchEvent(cellMouseOverEvent);
29283 this.beans.columnHoverService.setMouseOver([this.column]);
29284 };
29285 CellMouseListenerFeature.prototype.mouseStayingInsideCell = function (e) {
29286 if (!e.target || !e.relatedTarget) {
29287 return false;
29288 }
29289 var eGui = this.cellCtrl.getGui();
29290 var cellContainsTarget = eGui.contains(e.target);
29291 var cellContainsRelatedTarget = eGui.contains(e.relatedTarget);
29292 return cellContainsTarget && cellContainsRelatedTarget;
29293 };
29294 CellMouseListenerFeature.prototype.destroy = function () {
29295 };
29296 return CellMouseListenerFeature;
29297}(_beans__WEBPACK_IMPORTED_MODULE_4__["Beans"]));
29298
29299
29300
29301
29302
29303/***/ }),
29304/* 128 */
29305/***/ (function(module, __webpack_exports__, __webpack_require__) {
29306
29307"use strict";
29308__webpack_require__.r(__webpack_exports__);
29309/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Beans", function() { return Beans; });
29310/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
29311/**
29312 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29313 * @version v27.3.0
29314 * @link https://www.ag-grid.com/
29315 * @license MIT
29316 */
29317var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
29318 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29319 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29320 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;
29321 return c > 3 && r && Object.defineProperty(target, key, r), r;
29322};
29323
29324/** Using the IoC has a slight performance consideration, which is no problem most of the
29325 * time, unless we are trashing objects - which is the case when scrolling and rowComp
29326 * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired
29327 * with the IoC. Instead they get passed this object which is all the beans the RowComp
29328 * and CellComp need. Not autowiring all the cells gives performance improvement. */
29329var Beans = /** @class */ (function () {
29330 function Beans() {
29331 }
29332 Beans.prototype.postConstruct = function () {
29333 this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();
29334 if (this.gridOptionsWrapper.isRowModelDefault()) {
29335 this.clientSideRowModel = this.rowModel;
29336 }
29337 if (this.gridOptionsWrapper.isRowModelServerSide()) {
29338 this.serverSideRowModel = this.rowModel;
29339 }
29340 };
29341 __decorate([
29342 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('resizeObserverService')
29343 ], Beans.prototype, "resizeObserverService", void 0);
29344 __decorate([
29345 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
29346 ], Beans.prototype, "paginationProxy", void 0);
29347 __decorate([
29348 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('context')
29349 ], Beans.prototype, "context", void 0);
29350 __decorate([
29351 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
29352 ], Beans.prototype, "columnApi", void 0);
29353 __decorate([
29354 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
29355 ], Beans.prototype, "gridApi", void 0);
29356 __decorate([
29357 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridOptionsWrapper')
29358 ], Beans.prototype, "gridOptionsWrapper", void 0);
29359 __decorate([
29360 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('expressionService')
29361 ], Beans.prototype, "expressionService", void 0);
29362 __decorate([
29363 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
29364 ], Beans.prototype, "rowRenderer", void 0);
29365 __decorate([
29366 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('templateService')
29367 ], Beans.prototype, "templateService", void 0);
29368 __decorate([
29369 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueService')
29370 ], Beans.prototype, "valueService", void 0);
29371 __decorate([
29372 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('eventService')
29373 ], Beans.prototype, "eventService", void 0);
29374 __decorate([
29375 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
29376 ], Beans.prototype, "columnModel", void 0);
29377 __decorate([
29378 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('headerNavigationService')
29379 ], Beans.prototype, "headerNavigationService", void 0);
29380 __decorate([
29381 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('navigationService')
29382 ], Beans.prototype, "navigationService", void 0);
29383 __decorate([
29384 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnAnimationService')
29385 ], Beans.prototype, "columnAnimationService", void 0);
29386 __decorate([
29387 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('rangeService')
29388 ], Beans.prototype, "rangeService", void 0);
29389 __decorate([
29390 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
29391 ], Beans.prototype, "focusService", void 0);
29392 __decorate([
29393 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('contextMenuFactory')
29394 ], Beans.prototype, "contextMenuFactory", void 0);
29395 __decorate([
29396 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
29397 ], Beans.prototype, "popupService", void 0);
29398 __decorate([
29399 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueFormatterService')
29400 ], Beans.prototype, "valueFormatterService", void 0);
29401 __decorate([
29402 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('stylingService')
29403 ], Beans.prototype, "stylingService", void 0);
29404 __decorate([
29405 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnHoverService')
29406 ], Beans.prototype, "columnHoverService", void 0);
29407 __decorate([
29408 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentFactory')
29409 ], Beans.prototype, "userComponentFactory", void 0);
29410 __decorate([
29411 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentRegistry')
29412 ], Beans.prototype, "userComponentRegistry", void 0);
29413 __decorate([
29414 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('animationFrameService')
29415 ], Beans.prototype, "animationFrameService", void 0);
29416 __decorate([
29417 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('dragAndDropService')
29418 ], Beans.prototype, "dragAndDropService", void 0);
29419 __decorate([
29420 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortController')
29421 ], Beans.prototype, "sortController", void 0);
29422 __decorate([
29423 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
29424 ], Beans.prototype, "filterManager", void 0);
29425 __decorate([
29426 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowContainerHeightService')
29427 ], Beans.prototype, "rowContainerHeightService", void 0);
29428 __decorate([
29429 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('frameworkOverrides')
29430 ], Beans.prototype, "frameworkOverrides", void 0);
29431 __decorate([
29432 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('cellPositionUtils')
29433 ], Beans.prototype, "cellPositionUtils", void 0);
29434 __decorate([
29435 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowPositionUtils')
29436 ], Beans.prototype, "rowPositionUtils", void 0);
29437 __decorate([
29438 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('selectionService')
29439 ], Beans.prototype, "selectionService", void 0);
29440 __decorate([
29441 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('selectionHandleFactory')
29442 ], Beans.prototype, "selectionHandleFactory", void 0);
29443 __decorate([
29444 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowCssClassCalculator')
29445 ], Beans.prototype, "rowCssClassCalculator", void 0);
29446 __decorate([
29447 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
29448 ], Beans.prototype, "rowModel", void 0);
29449 __decorate([
29450 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
29451 ], Beans.prototype, "ctrlsService", void 0);
29452 __decorate([
29453 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsFactory')
29454 ], Beans.prototype, "ctrlsFactory", void 0);
29455 __decorate([
29456 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('agStackComponentsRegistry')
29457 ], Beans.prototype, "agStackComponentsRegistry", void 0);
29458 __decorate([
29459 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueCache')
29460 ], Beans.prototype, "valueCache", void 0);
29461 __decorate([
29462 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowNodeEventThrottle')
29463 ], Beans.prototype, "rowNodeEventThrottle", void 0);
29464 __decorate([
29465 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
29466 ], Beans.prototype, "postConstruct", null);
29467 Beans = __decorate([
29468 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('beans')
29469 ], Beans);
29470 return Beans;
29471}());
29472
29473
29474
29475
29476
29477/***/ }),
29478/* 129 */
29479/***/ (function(module, __webpack_exports__, __webpack_require__) {
29480
29481"use strict";
29482__webpack_require__.r(__webpack_exports__);
29483/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellKeyboardListenerFeature", function() { return CellKeyboardListenerFeature; });
29484/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
29485/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
29486/* harmony import */ var _utils_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49);
29487/**
29488 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29489 * @version v27.3.0
29490 * @link https://www.ag-grid.com/
29491 * @license MIT
29492 */
29493var __extends = (undefined && undefined.__extends) || (function () {
29494 var extendStatics = function (d, b) {
29495 extendStatics = Object.setPrototypeOf ||
29496 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29497 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29498 return extendStatics(d, b);
29499 };
29500 return function (d, b) {
29501 extendStatics(d, b);
29502 function __() { this.constructor = d; }
29503 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29504 };
29505})();
29506
29507
29508
29509var CellKeyboardListenerFeature = /** @class */ (function (_super) {
29510 __extends(CellKeyboardListenerFeature, _super);
29511 function CellKeyboardListenerFeature(ctrl, beans, column, rowNode, rowCtrl) {
29512 var _this = _super.call(this) || this;
29513 _this.cellCtrl = ctrl;
29514 _this.beans = beans;
29515 _this.rowNode = rowNode;
29516 _this.rowCtrl = rowCtrl;
29517 return _this;
29518 }
29519 CellKeyboardListenerFeature.prototype.setComp = function (eGui) {
29520 this.eGui = eGui;
29521 };
29522 CellKeyboardListenerFeature.prototype.onKeyDown = function (event) {
29523 var key = event.key;
29524 switch (key) {
29525 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ENTER:
29526 this.onEnterKeyDown(event);
29527 break;
29528 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].F2:
29529 this.onF2KeyDown(event);
29530 break;
29531 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ESCAPE:
29532 this.onEscapeKeyDown(event);
29533 break;
29534 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].TAB:
29535 this.onTabKeyDown(event);
29536 break;
29537 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].BACKSPACE:
29538 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].DELETE:
29539 this.onBackspaceOrDeleteKeyPressed(key, event);
29540 break;
29541 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].DOWN:
29542 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].UP:
29543 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].RIGHT:
29544 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].LEFT:
29545 this.onNavigationKeyPressed(event, key);
29546 break;
29547 }
29548 };
29549 CellKeyboardListenerFeature.prototype.onNavigationKeyPressed = function (event, key) {
29550 if (this.cellCtrl.isEditing()) {
29551 return;
29552 }
29553 if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {
29554 this.onShiftRangeSelect(event);
29555 }
29556 else {
29557 this.beans.navigationService.navigateToNextCell(event, key, this.cellCtrl.getCellPosition(), true);
29558 }
29559 // if we don't prevent default, the grid will scroll with the navigation keys
29560 event.preventDefault();
29561 };
29562 CellKeyboardListenerFeature.prototype.onShiftRangeSelect = function (event) {
29563 if (!this.beans.rangeService) {
29564 return;
29565 }
29566 var endCell = this.beans.rangeService.extendLatestRangeInDirection(event);
29567 if (endCell) {
29568 this.beans.navigationService.ensureCellVisible(endCell);
29569 }
29570 };
29571 CellKeyboardListenerFeature.prototype.onTabKeyDown = function (event) {
29572 this.beans.navigationService.onTabKeyDown(this.cellCtrl, event);
29573 };
29574 CellKeyboardListenerFeature.prototype.onBackspaceOrDeleteKeyPressed = function (key, event) {
29575 if (!this.cellCtrl.isEditing()) {
29576 this.cellCtrl.startRowOrCellEdit(key, undefined, event);
29577 }
29578 };
29579 CellKeyboardListenerFeature.prototype.onEnterKeyDown = function (e) {
29580 if (this.cellCtrl.isEditing() || this.rowCtrl.isEditing()) {
29581 this.cellCtrl.stopEditingAndFocus();
29582 }
29583 else {
29584 if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {
29585 this.beans.navigationService.navigateToNextCell(null, _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].DOWN, this.cellCtrl.getCellPosition(), false);
29586 }
29587 else {
29588 this.cellCtrl.startRowOrCellEdit(_constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ENTER, undefined, e);
29589 if (this.cellCtrl.isEditing()) {
29590 // if we started editing, then we need to prevent default, otherwise the Enter action can get
29591 // applied to the cell editor. this happened, for example, with largeTextCellEditor where not
29592 // preventing default results in a 'new line' character getting inserted in the text area
29593 // when the editing was started
29594 e.preventDefault();
29595 }
29596 }
29597 }
29598 };
29599 CellKeyboardListenerFeature.prototype.onF2KeyDown = function (event) {
29600 if (!this.cellCtrl.isEditing()) {
29601 this.cellCtrl.startRowOrCellEdit(_constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].F2, undefined, event);
29602 }
29603 };
29604 CellKeyboardListenerFeature.prototype.onEscapeKeyDown = function (event) {
29605 if (this.cellCtrl.isEditing()) {
29606 this.cellCtrl.stopRowOrCellEdit(true);
29607 this.cellCtrl.focusCell(true);
29608 }
29609 };
29610 CellKeyboardListenerFeature.prototype.onKeyPress = function (event) {
29611 // check this, in case focus is on a (for example) a text field inside the cell,
29612 // in which cse we should not be listening for these key pressed
29613 var eventTarget = event.target;
29614 var eventOnChildComponent = eventTarget !== this.eGui;
29615 if (eventOnChildComponent || this.cellCtrl.isEditing()) {
29616 return;
29617 }
29618 var pressedChar = String.fromCharCode(event.charCode);
29619 if (pressedChar === ' ') {
29620 this.onSpaceKeyPressed(event);
29621 }
29622 else if (Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_2__["isEventFromPrintableCharacter"])(event)) {
29623 this.cellCtrl.startRowOrCellEdit(null, pressedChar, event);
29624 // if we don't prevent default, then the keypress also gets applied to the text field
29625 // (at least when doing the default editor), but we need to allow the editor to decide
29626 // what it wants to do. we only do this IF editing was started - otherwise it messes
29627 // up when the use is not doing editing, but using rendering with text fields in cellRenderer
29628 // (as it would block the the user from typing into text fields).
29629 event.preventDefault();
29630 }
29631 };
29632 CellKeyboardListenerFeature.prototype.onSpaceKeyPressed = function (event) {
29633 var gridOptionsWrapper = this.beans.gridOptionsWrapper;
29634 if (!this.cellCtrl.isEditing() && gridOptionsWrapper.isRowSelection()) {
29635 var currentSelection = this.rowNode.isSelected();
29636 var newSelection = !currentSelection;
29637 if (newSelection || !gridOptionsWrapper.isSuppressRowDeselection()) {
29638 var groupSelectsFiltered = this.beans.gridOptionsWrapper.isGroupSelectsFiltered();
29639 var updatedCount = this.rowNode.setSelectedParams({
29640 newValue: newSelection,
29641 rangeSelect: event.shiftKey,
29642 groupSelectsFiltered: groupSelectsFiltered
29643 });
29644 if (currentSelection === undefined && updatedCount === 0) {
29645 this.rowNode.setSelectedParams({
29646 newValue: false,
29647 rangeSelect: event.shiftKey,
29648 groupSelectsFiltered: groupSelectsFiltered
29649 });
29650 }
29651 }
29652 }
29653 // prevent default as space key, by default, moves browser scroll down
29654 event.preventDefault();
29655 };
29656 CellKeyboardListenerFeature.prototype.destroy = function () {
29657 };
29658 return CellKeyboardListenerFeature;
29659}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
29660
29661
29662
29663
29664
29665/***/ }),
29666/* 130 */
29667/***/ (function(module, __webpack_exports__, __webpack_require__) {
29668
29669"use strict";
29670__webpack_require__.r(__webpack_exports__);
29671/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DndSourceComp", function() { return DndSourceComp; });
29672/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
29673/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
29674/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48);
29675/**
29676 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29677 * @version v27.3.0
29678 * @link https://www.ag-grid.com/
29679 * @license MIT
29680 */
29681var __extends = (undefined && undefined.__extends) || (function () {
29682 var extendStatics = function (d, b) {
29683 extendStatics = Object.setPrototypeOf ||
29684 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29685 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29686 return extendStatics(d, b);
29687 };
29688 return function (d, b) {
29689 extendStatics(d, b);
29690 function __() { this.constructor = d; }
29691 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29692 };
29693})();
29694var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
29695 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29696 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29697 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;
29698 return c > 3 && r && Object.defineProperty(target, key, r), r;
29699};
29700
29701
29702
29703var DndSourceComp = /** @class */ (function (_super) {
29704 __extends(DndSourceComp, _super);
29705 function DndSourceComp(rowNode, column, beans, eCell) {
29706 var _this = _super.call(this, "<div class=\"ag-drag-handle ag-row-drag\" draggable=\"true\"></div>") || this;
29707 _this.rowNode = rowNode;
29708 _this.column = column;
29709 _this.beans = beans;
29710 _this.eCell = eCell;
29711 return _this;
29712 }
29713 DndSourceComp.prototype.postConstruct = function () {
29714 var eGui = this.getGui();
29715 eGui.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_2__["createIconNoSpan"])('rowDrag', this.beans.gridOptionsWrapper, null));
29716 // we need to stop the event propagation here to avoid starting a range selection while dragging
29717 this.addGuiEventListener('mousedown', function (e) {
29718 e.stopPropagation();
29719 });
29720 this.addDragSource();
29721 this.checkVisibility();
29722 };
29723 DndSourceComp.prototype.addDragSource = function () {
29724 this.addGuiEventListener('dragstart', this.onDragStart.bind(this));
29725 };
29726 DndSourceComp.prototype.onDragStart = function (dragEvent) {
29727 var _this = this;
29728 var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;
29729 dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);
29730 // default behaviour is to convert data to json and set into drag component
29731 var defaultOnRowDrag = function () {
29732 try {
29733 var jsonData = JSON.stringify(_this.rowNode.data);
29734 dragEvent.dataTransfer.setData('application/json', jsonData);
29735 dragEvent.dataTransfer.setData('text/plain', jsonData);
29736 }
29737 catch (e) {
29738 // if we cannot convert the data to json, then we do not set the type
29739 }
29740 };
29741 if (providedOnRowDrag) {
29742 var params = {
29743 rowNode: this.rowNode, dragEvent: dragEvent,
29744 api: this.gridOptionsWrapper.getApi(),
29745 columnApi: this.gridOptionsWrapper.getColumnApi(),
29746 context: this.gridOptionsWrapper.getContext()
29747 };
29748 providedOnRowDrag(params);
29749 }
29750 else {
29751 defaultOnRowDrag();
29752 }
29753 };
29754 DndSourceComp.prototype.checkVisibility = function () {
29755 var visible = this.column.isDndSource(this.rowNode);
29756 this.setDisplayed(visible);
29757 };
29758 __decorate([
29759 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
29760 ], DndSourceComp.prototype, "postConstruct", null);
29761 return DndSourceComp;
29762}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
29763
29764
29765
29766
29767
29768/***/ }),
29769/* 131 */
29770/***/ (function(module, __webpack_exports__, __webpack_require__) {
29771
29772"use strict";
29773__webpack_require__.r(__webpack_exports__);
29774/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ViewportSizeFeature", function() { return ViewportSizeFeature; });
29775/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
29776/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
29777/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
29778/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
29779/**
29780 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29781 * @version v27.3.0
29782 * @link https://www.ag-grid.com/
29783 * @license MIT
29784 */
29785var __extends = (undefined && undefined.__extends) || (function () {
29786 var extendStatics = function (d, b) {
29787 extendStatics = Object.setPrototypeOf ||
29788 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29789 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29790 return extendStatics(d, b);
29791 };
29792 return function (d, b) {
29793 extendStatics(d, b);
29794 function __() { this.constructor = d; }
29795 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29796 };
29797})();
29798var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
29799 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29800 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29801 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;
29802 return c > 3 && r && Object.defineProperty(target, key, r), r;
29803};
29804
29805
29806
29807
29808// listens to changes in the center viewport size, for column and row virtualisation,
29809// and adjusts grid as necessary. there are two viewports, one for horizontal and one for
29810// vertical scrolling.
29811var ViewportSizeFeature = /** @class */ (function (_super) {
29812 __extends(ViewportSizeFeature, _super);
29813 function ViewportSizeFeature(centerContainerCtrl) {
29814 var _this = _super.call(this) || this;
29815 _this.centerContainerCtrl = centerContainerCtrl;
29816 return _this;
29817 }
29818 ViewportSizeFeature.prototype.postConstruct = function () {
29819 var _this = this;
29820 this.ctrlsService.whenReady(function () {
29821 _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
29822 _this.listenForResize();
29823 });
29824 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SCROLLBAR_WIDTH_CHANGED, this.onScrollbarWidthChanged.bind(this));
29825 };
29826 ViewportSizeFeature.prototype.listenForResize = function () {
29827 var _this = this;
29828 var listener = function () { return _this.onCenterViewportResized(); };
29829 // centerContainer gets horizontal resizes
29830 this.centerContainerCtrl.registerViewportResizeListener(listener);
29831 // eBodyViewport gets vertical resizes
29832 this.gridBodyCtrl.registerBodyViewportResizeListener(listener);
29833 };
29834 ViewportSizeFeature.prototype.onScrollbarWidthChanged = function () {
29835 this.checkViewportAndScrolls();
29836 };
29837 ViewportSizeFeature.prototype.onCenterViewportResized = function () {
29838 if (this.centerContainerCtrl.isViewportVisible()) {
29839 this.checkViewportAndScrolls();
29840 var newWidth = this.centerContainerCtrl.getCenterWidth();
29841 if (newWidth !== this.centerWidth) {
29842 this.centerWidth = newWidth;
29843 this.columnModel.refreshFlexedColumns({ viewportWidth: this.centerWidth, updateBodyWidths: true, fireResizedEvent: true });
29844 }
29845 }
29846 else {
29847 this.bodyHeight = 0;
29848 }
29849 };
29850 // gets called every time the viewport size changes. we use this to check visibility of scrollbars
29851 // in the grid panel, and also to check size and position of viewport for row and column virtualisation.
29852 ViewportSizeFeature.prototype.checkViewportAndScrolls = function () {
29853 // results in updating anything that depends on scroll showing
29854 this.updateScrollVisibleService();
29855 // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer
29856 this.checkBodyHeight();
29857 // check for virtual columns for ColumnController
29858 this.onHorizontalViewportChanged();
29859 this.gridBodyCtrl.getScrollFeature().checkScrollLeft();
29860 };
29861 ViewportSizeFeature.prototype.getBodyHeight = function () {
29862 return this.bodyHeight;
29863 };
29864 ViewportSizeFeature.prototype.checkBodyHeight = function () {
29865 var eBodyViewport = this.gridBodyCtrl.getBodyViewportElement();
29866 var bodyHeight = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["getInnerHeight"])(eBodyViewport);
29867 if (this.bodyHeight !== bodyHeight) {
29868 this.bodyHeight = bodyHeight;
29869 var event_1 = {
29870 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_BODY_HEIGHT_CHANGED,
29871 api: this.gridApi,
29872 columnApi: this.columnApi
29873 };
29874 this.eventService.dispatchEvent(event_1);
29875 }
29876 };
29877 ViewportSizeFeature.prototype.updateScrollVisibleService = function () {
29878 // because of column animation (which takes 200ms), we have to do this twice.
29879 // eg if user removes cols anywhere except at the RHS, then the cols on the RHS
29880 // will animate to the left to fill the gap. this animation means just after
29881 // the cols are removed, the remaining cols are still in the original location
29882 // at the start of the animation, so pre animation the H scrollbar is still needed,
29883 // but post animation it is not.
29884 this.updateScrollVisibleServiceImpl();
29885 setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);
29886 };
29887 ViewportSizeFeature.prototype.updateScrollVisibleServiceImpl = function () {
29888 var params = {
29889 horizontalScrollShowing: this.isHorizontalScrollShowing(),
29890 verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()
29891 };
29892 this.scrollVisibleService.setScrollsVisible(params);
29893 // fix - gridComp should just listen to event from above
29894 this.gridBodyCtrl.setVerticalScrollPaddingVisible(params.verticalScrollShowing);
29895 };
29896 ViewportSizeFeature.prototype.isHorizontalScrollShowing = function () {
29897 var isAlwaysShowHorizontalScroll = this.gridOptionsWrapper.isAlwaysShowHorizontalScroll();
29898 return isAlwaysShowHorizontalScroll || this.centerContainerCtrl.isViewportHScrollShowing();
29899 };
29900 // this gets called whenever a change in the viewport, so we can inform column controller it has to work
29901 // out the virtual columns again. gets called from following locations:
29902 // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)
29903 ViewportSizeFeature.prototype.onHorizontalViewportChanged = function () {
29904 var scrollWidth = this.centerContainerCtrl.getCenterWidth();
29905 var scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();
29906 this.columnModel.setViewportPosition(scrollWidth, scrollPosition);
29907 };
29908 __decorate([
29909 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
29910 ], ViewportSizeFeature.prototype, "ctrlsService", void 0);
29911 __decorate([
29912 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
29913 ], ViewportSizeFeature.prototype, "columnModel", void 0);
29914 __decorate([
29915 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('scrollVisibleService')
29916 ], ViewportSizeFeature.prototype, "scrollVisibleService", void 0);
29917 __decorate([
29918 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
29919 ], ViewportSizeFeature.prototype, "columnApi", void 0);
29920 __decorate([
29921 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
29922 ], ViewportSizeFeature.prototype, "gridApi", void 0);
29923 __decorate([
29924 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
29925 ], ViewportSizeFeature.prototype, "postConstruct", null);
29926 return ViewportSizeFeature;
29927}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
29928
29929
29930
29931
29932
29933/***/ }),
29934/* 132 */
29935/***/ (function(module, __webpack_exports__, __webpack_require__) {
29936
29937"use strict";
29938__webpack_require__.r(__webpack_exports__);
29939/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetPinnedLeftWidthFeature", function() { return SetPinnedLeftWidthFeature; });
29940/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
29941/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
29942/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
29943/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
29944/**
29945 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29946 * @version v27.3.0
29947 * @link https://www.ag-grid.com/
29948 * @license MIT
29949 */
29950var __extends = (undefined && undefined.__extends) || (function () {
29951 var extendStatics = function (d, b) {
29952 extendStatics = Object.setPrototypeOf ||
29953 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29954 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29955 return extendStatics(d, b);
29956 };
29957 return function (d, b) {
29958 extendStatics(d, b);
29959 function __() { this.constructor = d; }
29960 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29961 };
29962})();
29963var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
29964 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29965 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29966 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;
29967 return c > 3 && r && Object.defineProperty(target, key, r), r;
29968};
29969
29970
29971
29972
29973var SetPinnedLeftWidthFeature = /** @class */ (function (_super) {
29974 __extends(SetPinnedLeftWidthFeature, _super);
29975 function SetPinnedLeftWidthFeature(element) {
29976 var _this = _super.call(this) || this;
29977 _this.element = element;
29978 return _this;
29979 }
29980 SetPinnedLeftWidthFeature.prototype.postConstruct = function () {
29981 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_LEFT_PINNED_WIDTH_CHANGED, this.onPinnedLeftWidthChanged.bind(this));
29982 };
29983 SetPinnedLeftWidthFeature.prototype.onPinnedLeftWidthChanged = function () {
29984 var leftWidth = this.pinnedWidthService.getPinnedLeftWidth();
29985 var displayed = leftWidth > 0;
29986 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(this.element, displayed);
29987 if (displayed) {
29988 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setFixedWidth"])(this.element, leftWidth);
29989 }
29990 };
29991 __decorate([
29992 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('pinnedWidthService')
29993 ], SetPinnedLeftWidthFeature.prototype, "pinnedWidthService", void 0);
29994 __decorate([
29995 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
29996 ], SetPinnedLeftWidthFeature.prototype, "postConstruct", null);
29997 return SetPinnedLeftWidthFeature;
29998}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
29999
30000
30001
30002
30003
30004/***/ }),
30005/* 133 */
30006/***/ (function(module, __webpack_exports__, __webpack_require__) {
30007
30008"use strict";
30009__webpack_require__.r(__webpack_exports__);
30010/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetPinnedRightWidthFeature", function() { return SetPinnedRightWidthFeature; });
30011/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
30012/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24);
30013/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
30014/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
30015/**
30016 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30017 * @version v27.3.0
30018 * @link https://www.ag-grid.com/
30019 * @license MIT
30020 */
30021var __extends = (undefined && undefined.__extends) || (function () {
30022 var extendStatics = function (d, b) {
30023 extendStatics = Object.setPrototypeOf ||
30024 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30025 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30026 return extendStatics(d, b);
30027 };
30028 return function (d, b) {
30029 extendStatics(d, b);
30030 function __() { this.constructor = d; }
30031 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30032 };
30033})();
30034var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30035 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30036 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30037 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;
30038 return c > 3 && r && Object.defineProperty(target, key, r), r;
30039};
30040
30041
30042
30043
30044var SetPinnedRightWidthFeature = /** @class */ (function (_super) {
30045 __extends(SetPinnedRightWidthFeature, _super);
30046 function SetPinnedRightWidthFeature(element) {
30047 var _this = _super.call(this) || this;
30048 _this.element = element;
30049 return _this;
30050 }
30051 SetPinnedRightWidthFeature.prototype.postConstruct = function () {
30052 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_RIGHT_PINNED_WIDTH_CHANGED, this.onPinnedRightWidthChanged.bind(this));
30053 };
30054 SetPinnedRightWidthFeature.prototype.onPinnedRightWidthChanged = function () {
30055 var rightWidth = this.pinnedWidthService.getPinnedRightWidth();
30056 var displayed = rightWidth > 0;
30057 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.element, displayed);
30058 if (displayed) {
30059 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedWidth"])(this.element, rightWidth);
30060 }
30061 };
30062 __decorate([
30063 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedWidthService')
30064 ], SetPinnedRightWidthFeature.prototype, "pinnedWidthService", void 0);
30065 __decorate([
30066 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
30067 ], SetPinnedRightWidthFeature.prototype, "postConstruct", null);
30068 return SetPinnedRightWidthFeature;
30069}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
30070
30071
30072
30073
30074
30075/***/ }),
30076/* 134 */
30077/***/ (function(module, __webpack_exports__, __webpack_require__) {
30078
30079"use strict";
30080__webpack_require__.r(__webpack_exports__);
30081/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetHeightFeature", function() { return SetHeightFeature; });
30082/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
30083/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
30084/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
30085/**
30086 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30087 * @version v27.3.0
30088 * @link https://www.ag-grid.com/
30089 * @license MIT
30090 */
30091var __extends = (undefined && undefined.__extends) || (function () {
30092 var extendStatics = function (d, b) {
30093 extendStatics = Object.setPrototypeOf ||
30094 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30095 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30096 return extendStatics(d, b);
30097 };
30098 return function (d, b) {
30099 extendStatics(d, b);
30100 function __() { this.constructor = d; }
30101 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30102 };
30103})();
30104var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30105 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30106 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30107 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;
30108 return c > 3 && r && Object.defineProperty(target, key, r), r;
30109};
30110
30111
30112
30113var SetHeightFeature = /** @class */ (function (_super) {
30114 __extends(SetHeightFeature, _super);
30115 function SetHeightFeature(eContainer, eWrapper) {
30116 var _this = _super.call(this) || this;
30117 _this.eContainer = eContainer;
30118 _this.eWrapper = eWrapper;
30119 return _this;
30120 }
30121 SetHeightFeature.prototype.postConstruct = function () {
30122 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onHeightChanged.bind(this));
30123 };
30124 SetHeightFeature.prototype.onHeightChanged = function () {
30125 var height = this.maxDivHeightScaler.getUiContainerHeight();
30126 var heightString = height != null ? height + "px" : "";
30127 this.eContainer.style.height = heightString;
30128 if (this.eWrapper) {
30129 this.eWrapper.style.height = heightString;
30130 }
30131 };
30132 __decorate([
30133 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])("rowContainerHeightService")
30134 ], SetHeightFeature.prototype, "maxDivHeightScaler", void 0);
30135 __decorate([
30136 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
30137 ], SetHeightFeature.prototype, "postConstruct", null);
30138 return SetHeightFeature;
30139}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
30140
30141
30142
30143
30144
30145/***/ }),
30146/* 135 */
30147/***/ (function(module, __webpack_exports__, __webpack_require__) {
30148
30149"use strict";
30150__webpack_require__.r(__webpack_exports__);
30151/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragListenerFeature", function() { return DragListenerFeature; });
30152/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
30153/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
30154/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
30155/**
30156 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30157 * @version v27.3.0
30158 * @link https://www.ag-grid.com/
30159 * @license MIT
30160 */
30161var __extends = (undefined && undefined.__extends) || (function () {
30162 var extendStatics = function (d, b) {
30163 extendStatics = Object.setPrototypeOf ||
30164 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30165 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30166 return extendStatics(d, b);
30167 };
30168 return function (d, b) {
30169 extendStatics(d, b);
30170 function __() { this.constructor = d; }
30171 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30172 };
30173})();
30174var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30175 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30176 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30177 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;
30178 return c > 3 && r && Object.defineProperty(target, key, r), r;
30179};
30180
30181
30182
30183var DragListenerFeature = /** @class */ (function (_super) {
30184 __extends(DragListenerFeature, _super);
30185 function DragListenerFeature(eContainer) {
30186 var _this = _super.call(this) || this;
30187 _this.eContainer = eContainer;
30188 return _this;
30189 }
30190 DragListenerFeature.prototype.postConstruct = function () {
30191 var _this = this;
30192 if (!this.gridOptionsWrapper.isEnableRangeSelection() || // no range selection if no property
30193 Object(_utils_generic__WEBPACK_IMPORTED_MODULE_1__["missing"])(this.rangeService) // no range selection if not enterprise version
30194 ) {
30195 return;
30196 }
30197 var params = {
30198 dragStartPixels: 0,
30199 eElement: this.eContainer,
30200 onDragStart: this.rangeService.onDragStart.bind(this.rangeService),
30201 onDragStop: this.rangeService.onDragStop.bind(this.rangeService),
30202 onDragging: this.rangeService.onDragging.bind(this.rangeService)
30203 };
30204 this.dragService.addDragSource(params);
30205 this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });
30206 };
30207 __decorate([
30208 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Optional"])('rangeService')
30209 ], DragListenerFeature.prototype, "rangeService", void 0);
30210 __decorate([
30211 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('dragService')
30212 ], DragListenerFeature.prototype, "dragService", void 0);
30213 __decorate([
30214 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
30215 ], DragListenerFeature.prototype, "postConstruct", null);
30216 return DragListenerFeature;
30217}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
30218
30219
30220
30221
30222
30223/***/ }),
30224/* 136 */
30225/***/ (function(module, __webpack_exports__, __webpack_require__) {
30226
30227"use strict";
30228__webpack_require__.r(__webpack_exports__);
30229/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CenterWidthFeature", function() { return CenterWidthFeature; });
30230/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
30231/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
30232/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112);
30233/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
30234/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
30235/**
30236 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30237 * @version v27.3.0
30238 * @link https://www.ag-grid.com/
30239 * @license MIT
30240 */
30241var __extends = (undefined && undefined.__extends) || (function () {
30242 var extendStatics = function (d, b) {
30243 extendStatics = Object.setPrototypeOf ||
30244 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30245 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30246 return extendStatics(d, b);
30247 };
30248 return function (d, b) {
30249 extendStatics(d, b);
30250 function __() { this.constructor = d; }
30251 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30252 };
30253})();
30254var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30255 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30256 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30257 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;
30258 return c > 3 && r && Object.defineProperty(target, key, r), r;
30259};
30260
30261
30262
30263
30264
30265var CenterWidthFeature = /** @class */ (function (_super) {
30266 __extends(CenterWidthFeature, _super);
30267 function CenterWidthFeature(callback) {
30268 var _this = _super.call(this) || this;
30269 _this.callback = callback;
30270 return _this;
30271 }
30272 CenterWidthFeature.prototype.postConstruct = function () {
30273 var listener = this.setWidth.bind(this);
30274 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__["GridOptionsWrapper"].PROP_DOM_LAYOUT, listener);
30275 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
30276 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);
30277 this.setWidth();
30278 };
30279 CenterWidthFeature.prototype.setWidth = function () {
30280 var columnModel = this.columnModel;
30281 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].DOM_LAYOUT_PRINT;
30282 var centerWidth = columnModel.getBodyContainerWidth();
30283 var leftWidth = columnModel.getDisplayedColumnsLeftWidth();
30284 var rightWidth = columnModel.getDisplayedColumnsRightWidth();
30285 var totalWidth = printLayout ? centerWidth + leftWidth + rightWidth : centerWidth;
30286 this.callback(totalWidth);
30287 };
30288 __decorate([
30289 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
30290 ], CenterWidthFeature.prototype, "columnModel", void 0);
30291 __decorate([
30292 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
30293 ], CenterWidthFeature.prototype, "postConstruct", null);
30294 return CenterWidthFeature;
30295}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
30296
30297
30298
30299
30300
30301/***/ }),
30302/* 137 */
30303/***/ (function(module, __webpack_exports__, __webpack_require__) {
30304
30305"use strict";
30306__webpack_require__.r(__webpack_exports__);
30307/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScrollVisibleService", function() { return ScrollVisibleService; });
30308/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
30309/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
30310/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
30311/**
30312 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30313 * @version v27.3.0
30314 * @link https://www.ag-grid.com/
30315 * @license MIT
30316 */
30317var __extends = (undefined && undefined.__extends) || (function () {
30318 var extendStatics = function (d, b) {
30319 extendStatics = Object.setPrototypeOf ||
30320 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30321 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30322 return extendStatics(d, b);
30323 };
30324 return function (d, b) {
30325 extendStatics(d, b);
30326 function __() { this.constructor = d; }
30327 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30328 };
30329})();
30330var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30331 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30332 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30333 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;
30334 return c > 3 && r && Object.defineProperty(target, key, r), r;
30335};
30336
30337
30338
30339var ScrollVisibleService = /** @class */ (function (_super) {
30340 __extends(ScrollVisibleService, _super);
30341 function ScrollVisibleService() {
30342 return _super !== null && _super.apply(this, arguments) || this;
30343 }
30344 ScrollVisibleService.prototype.postConstruct = function () {
30345 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
30346 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));
30347 };
30348 ScrollVisibleService.prototype.onDisplayedColumnsChanged = function () {
30349 this.update();
30350 };
30351 ScrollVisibleService.prototype.onDisplayedColumnsWidthChanged = function () {
30352 this.update();
30353 };
30354 ScrollVisibleService.prototype.update = function () {
30355 // because of column animation (which takes 200ms), we have to do this twice.
30356 // eg if user removes cols anywhere except at the RHS, then the cols on the RHS
30357 // will animate to the left to fill the gap. this animation means just after
30358 // the cols are removed, the remaining cols are still in the original location
30359 // at the start of the animation, so pre animation the H scrollbar is still needed,
30360 // but post animation it is not.
30361 this.updateImpl();
30362 setTimeout(this.updateImpl.bind(this), 500);
30363 };
30364 ScrollVisibleService.prototype.updateImpl = function () {
30365 var centerRowCtrl = this.ctrlsService.getCenterRowContainerCtrl();
30366 if (!centerRowCtrl) {
30367 return;
30368 }
30369 var params = {
30370 horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),
30371 verticalScrollShowing: this.isVerticalScrollShowing()
30372 };
30373 this.setScrollsVisible(params);
30374 };
30375 ScrollVisibleService.prototype.setScrollsVisible = function (params) {
30376 var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||
30377 this.verticalScrollShowing !== params.verticalScrollShowing;
30378 if (atLeastOneDifferent) {
30379 this.horizontalScrollShowing = params.horizontalScrollShowing;
30380 this.verticalScrollShowing = params.verticalScrollShowing;
30381 var event_1 = {
30382 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED,
30383 api: this.gridApi,
30384 columnApi: this.columnApi
30385 };
30386 this.eventService.dispatchEvent(event_1);
30387 }
30388 };
30389 // used by pagination service - to know page height
30390 ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {
30391 return this.horizontalScrollShowing;
30392 };
30393 // used by header container
30394 ScrollVisibleService.prototype.isVerticalScrollShowing = function () {
30395 return this.verticalScrollShowing;
30396 };
30397 __decorate([
30398 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
30399 ], ScrollVisibleService.prototype, "columnApi", void 0);
30400 __decorate([
30401 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
30402 ], ScrollVisibleService.prototype, "gridApi", void 0);
30403 __decorate([
30404 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
30405 ], ScrollVisibleService.prototype, "ctrlsService", void 0);
30406 __decorate([
30407 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
30408 ], ScrollVisibleService.prototype, "postConstruct", null);
30409 ScrollVisibleService = __decorate([
30410 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('scrollVisibleService')
30411 ], ScrollVisibleService);
30412 return ScrollVisibleService;
30413}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
30414
30415
30416
30417
30418
30419/***/ }),
30420/* 138 */
30421/***/ (function(module, __webpack_exports__, __webpack_require__) {
30422
30423"use strict";
30424__webpack_require__.r(__webpack_exports__);
30425/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MouseEventService", function() { return MouseEventService; });
30426/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
30427/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
30428/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
30429/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
30430/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21);
30431/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
30432/* harmony import */ var _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(121);
30433/**
30434 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30435 * @version v27.3.0
30436 * @link https://www.ag-grid.com/
30437 * @license MIT
30438 */
30439var __extends = (undefined && undefined.__extends) || (function () {
30440 var extendStatics = function (d, b) {
30441 extendStatics = Object.setPrototypeOf ||
30442 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30443 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30444 return extendStatics(d, b);
30445 };
30446 return function (d, b) {
30447 extendStatics(d, b);
30448 function __() { this.constructor = d; }
30449 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30450 };
30451})();
30452var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30453 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30454 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30455 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;
30456 return c > 3 && r && Object.defineProperty(target, key, r), r;
30457};
30458
30459
30460
30461
30462
30463
30464
30465
30466var MouseEventService = /** @class */ (function (_super) {
30467 __extends(MouseEventService, _super);
30468 function MouseEventService() {
30469 var _this = _super !== null && _super.apply(this, arguments) || this;
30470 _this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();
30471 return _this;
30472 }
30473 MouseEventService_1 = MouseEventService;
30474 // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,
30475 // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic
30476 // for where this is used.
30477 MouseEventService.prototype.stampTopLevelGridCompWithGridInstance = function (eGridDiv) {
30478 eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;
30479 };
30480 MouseEventService.prototype.getRenderedCellForEvent = function (event) {
30481 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);
30482 };
30483 // walks the path of the event, and returns true if this grid is the first one that it finds. if doing
30484 // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste
30485 // getting executed on many grids at the same time.
30486 MouseEventService.prototype.isEventFromThisGrid = function (event) {
30487 var res = this.isElementInThisGrid(event.target);
30488 return res;
30489 };
30490 MouseEventService.prototype.isElementInThisGrid = function (element) {
30491 var pointer = element;
30492 while (pointer) {
30493 var instanceId = pointer[MouseEventService_1.GRID_DOM_KEY];
30494 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(instanceId)) {
30495 var eventFromThisGrid = instanceId === this.gridInstanceId;
30496 return eventFromThisGrid;
30497 }
30498 pointer = pointer.parentElement;
30499 }
30500 return false;
30501 };
30502 MouseEventService.prototype.getCellPositionForEvent = function (event) {
30503 var cellComp = this.getRenderedCellForEvent(event);
30504 return cellComp ? cellComp.getCellPosition() : null;
30505 };
30506 MouseEventService.prototype.getNormalisedPosition = function (event) {
30507 var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL;
30508 var e = event;
30509 var x;
30510 var y;
30511 if (e.clientX != null || e.clientY != null) {
30512 x = e.clientX;
30513 y = e.clientY;
30514 }
30515 else {
30516 x = e.x;
30517 y = e.y;
30518 }
30519 if (gridPanelHasScrolls) {
30520 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
30521 var vRange = gridBodyCon.getScrollFeature().getVScrollPosition();
30522 var hRange = gridBodyCon.getScrollFeature().getHScrollPosition();
30523 x += hRange.left;
30524 y += vRange.top;
30525 }
30526 return { x: x, y: y };
30527 };
30528 var MouseEventService_1;
30529 MouseEventService.gridInstanceSequence = new _utils__WEBPACK_IMPORTED_MODULE_1__["NumberSequence"]();
30530 MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';
30531 __decorate([
30532 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
30533 ], MouseEventService.prototype, "ctrlsService", void 0);
30534 MouseEventService = MouseEventService_1 = __decorate([
30535 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('mouseEventService')
30536 ], MouseEventService);
30537 return MouseEventService;
30538}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
30539
30540
30541
30542
30543
30544/***/ }),
30545/* 139 */
30546/***/ (function(module, __webpack_exports__, __webpack_require__) {
30547
30548"use strict";
30549__webpack_require__.r(__webpack_exports__);
30550/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NavigationService", function() { return NavigationService; });
30551/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
30552/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
30553/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
30554/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
30555/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
30556/* harmony import */ var _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(121);
30557/* harmony import */ var _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(120);
30558/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
30559/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(15);
30560/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24);
30561/**
30562 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30563 * @version v27.3.0
30564 * @link https://www.ag-grid.com/
30565 * @license MIT
30566 */
30567var __extends = (undefined && undefined.__extends) || (function () {
30568 var extendStatics = function (d, b) {
30569 extendStatics = Object.setPrototypeOf ||
30570 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30571 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30572 return extendStatics(d, b);
30573 };
30574 return function (d, b) {
30575 extendStatics(d, b);
30576 function __() { this.constructor = d; }
30577 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30578 };
30579})();
30580var __assign = (undefined && undefined.__assign) || function () {
30581 __assign = Object.assign || function(t) {
30582 for (var s, i = 1, n = arguments.length; i < n; i++) {
30583 s = arguments[i];
30584 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
30585 t[p] = s[p];
30586 }
30587 return t;
30588 };
30589 return __assign.apply(this, arguments);
30590};
30591var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30592 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30593 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30594 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;
30595 return c > 3 && r && Object.defineProperty(target, key, r), r;
30596};
30597
30598
30599
30600
30601
30602
30603
30604
30605
30606
30607var NavigationService = /** @class */ (function (_super) {
30608 __extends(NavigationService, _super);
30609 function NavigationService() {
30610 var _this = _super.call(this) || this;
30611 _this.onPageDown = Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["throttle"])(_this.onPageDown, 100);
30612 _this.onPageUp = Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["throttle"])(_this.onPageUp, 100);
30613 return _this;
30614 }
30615 NavigationService.prototype.postConstruct = function () {
30616 var _this = this;
30617 this.ctrlsService.whenReady(function (p) {
30618 _this.gridBodyCon = p.gridBodyCtrl;
30619 });
30620 };
30621 NavigationService.prototype.handlePageScrollingKey = function (event) {
30622 var key = event.key;
30623 var alt = event.altKey;
30624 var ctrl = event.ctrlKey || event.metaKey;
30625 var rangeServiceShouldHandleShift = !!this.rangeService && event.shiftKey;
30626 var currentCell = this.mouseEventService.getCellPositionForEvent(event);
30627 if (!currentCell) {
30628 return false;
30629 }
30630 var processed = false;
30631 switch (key) {
30632 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_HOME:
30633 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_END:
30634 // handle home and end when ctrl & alt are NOT pressed
30635 if (!ctrl && !alt) {
30636 this.onHomeOrEndKey(key);
30637 processed = true;
30638 }
30639 break;
30640 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].LEFT:
30641 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].RIGHT:
30642 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].UP:
30643 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].DOWN:
30644 // handle when ctrl is pressed only, if shift is pressed
30645 // it will be handled by the rangeService
30646 if (ctrl && !alt && !rangeServiceShouldHandleShift) {
30647 this.onCtrlUpDownLeftRight(key, currentCell);
30648 processed = true;
30649 }
30650 break;
30651 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_DOWN:
30652 // handle page up and page down when ctrl & alt are NOT pressed
30653 if (!ctrl && !alt) {
30654 this.onPageDown(currentCell);
30655 processed = true;
30656 }
30657 break;
30658 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_UP:
30659 // handle page up and page down when ctrl & alt are NOT pressed
30660 if (!ctrl && !alt) {
30661 this.onPageUp(currentCell);
30662 processed = true;
30663 }
30664 break;
30665 }
30666 if (processed) {
30667 event.preventDefault();
30668 }
30669 return processed;
30670 };
30671 NavigationService.prototype.navigateTo = function (navigateParams) {
30672 var scrollIndex = navigateParams.scrollIndex, scrollType = navigateParams.scrollType, scrollColumn = navigateParams.scrollColumn, focusIndex = navigateParams.focusIndex, focusColumn = navigateParams.focusColumn;
30673 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(scrollColumn) && !scrollColumn.isPinned()) {
30674 this.gridBodyCon.getScrollFeature().ensureColumnVisible(scrollColumn);
30675 }
30676 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(scrollIndex)) {
30677 this.gridBodyCon.getScrollFeature().ensureIndexVisible(scrollIndex, scrollType);
30678 }
30679 // make sure the cell is rendered, needed if we are to focus
30680 this.animationFrameService.flushAllFrames();
30681 // if we don't do this, the range will be left on the last cell, which will leave the last focused cell
30682 // highlighted.
30683 this.focusService.setFocusedCell(focusIndex, focusColumn, null, true);
30684 if (this.rangeService) {
30685 var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };
30686 this.rangeService.setRangeToCell(cellPosition);
30687 }
30688 };
30689 NavigationService.prototype.onPageDown = function (gridCell) {
30690 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
30691 var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
30692 var pixelsInOnePage = this.getViewportHeight();
30693 var pagingPixelOffset = this.paginationProxy.getPixelOffset();
30694 var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;
30695 var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);
30696 if (this.columnModel.isAutoRowHeightActive()) {
30697 this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);
30698 }
30699 else {
30700 this.navigateToNextPage(gridCell, currentPageBottomRow);
30701 }
30702 };
30703 NavigationService.prototype.onPageUp = function (gridCell) {
30704 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
30705 var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
30706 var pagingPixelOffset = this.paginationProxy.getPixelOffset();
30707 var currentPageTopPixel = scrollPosition.top;
30708 var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);
30709 if (this.columnModel.isAutoRowHeightActive()) {
30710 this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);
30711 }
30712 else {
30713 this.navigateToNextPage(gridCell, currentPageTopRow, true);
30714 }
30715 };
30716 NavigationService.prototype.navigateToNextPage = function (gridCell, scrollIndex, up) {
30717 if (up === void 0) { up = false; }
30718 var _a, _b;
30719 var pixelsInOnePage = this.getViewportHeight();
30720 var firstRow = this.paginationProxy.getPageFirstRow();
30721 var lastRow = this.paginationProxy.getPageLastRow();
30722 var pagingPixelOffset = this.paginationProxy.getPixelOffset();
30723 var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);
30724 var rowPixelDiff = up
30725 ? (((_a = currentRowNode) === null || _a === void 0 ? void 0 : _a.rowHeight) - pixelsInOnePage - pagingPixelOffset)
30726 : (pixelsInOnePage - pagingPixelOffset);
30727 var nextCellPixel = ((_b = currentRowNode) === null || _b === void 0 ? void 0 : _b.rowTop) + rowPixelDiff;
30728 var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);
30729 if (focusIndex === gridCell.rowIndex) {
30730 var diff = up ? -1 : 1;
30731 scrollIndex = focusIndex = gridCell.rowIndex + diff;
30732 }
30733 var scrollType;
30734 if (up) {
30735 scrollType = 'bottom';
30736 if (focusIndex < firstRow) {
30737 focusIndex = firstRow;
30738 }
30739 if (scrollIndex < firstRow) {
30740 scrollIndex = firstRow;
30741 }
30742 }
30743 else {
30744 scrollType = 'top';
30745 if (focusIndex > lastRow) {
30746 focusIndex = lastRow;
30747 }
30748 if (scrollIndex > lastRow) {
30749 scrollIndex = lastRow;
30750 }
30751 }
30752 if (this.isRowTallerThanView(focusIndex)) {
30753 scrollIndex = focusIndex;
30754 scrollType = 'top';
30755 }
30756 this.navigateTo({
30757 scrollIndex: scrollIndex,
30758 scrollType: scrollType,
30759 scrollColumn: null,
30760 focusIndex: focusIndex,
30761 focusColumn: gridCell.column
30762 });
30763 };
30764 NavigationService.prototype.navigateToNextPageWithAutoHeight = function (gridCell, scrollIndex, up) {
30765 var _this = this;
30766 if (up === void 0) { up = false; }
30767 // because autoHeight will calculate the height of rows after scroll
30768 // first we scroll towards the required point, then we add a small
30769 // delay to allow the height to be recalculated, check which index
30770 // should be focused and then finally navigate to that index.
30771 // TODO: we should probably have an event fired once to scrollbar has
30772 // settled and all rowHeights have been calculated instead of relying
30773 // on a setTimeout of 50ms.
30774 this.navigateTo({
30775 scrollIndex: scrollIndex,
30776 scrollType: up ? 'bottom' : 'top',
30777 scrollColumn: null,
30778 focusIndex: scrollIndex,
30779 focusColumn: gridCell.column
30780 });
30781 setTimeout(function () {
30782 var focusIndex = _this.getNextFocusIndexForAutoHeight(gridCell, up);
30783 _this.navigateTo({
30784 scrollIndex: scrollIndex,
30785 scrollType: up ? 'bottom' : 'top',
30786 scrollColumn: null,
30787 focusIndex: focusIndex,
30788 focusColumn: gridCell.column
30789 });
30790 }, 50);
30791 };
30792 NavigationService.prototype.getNextFocusIndexForAutoHeight = function (gridCell, up) {
30793 if (up === void 0) { up = false; }
30794 var _a;
30795 var step = up ? -1 : 1;
30796 var pixelsInOnePage = this.getViewportHeight();
30797 var lastRowIndex = this.paginationProxy.getPageLastRow();
30798 var pixelSum = 0;
30799 var currentIndex = gridCell.rowIndex;
30800 while (currentIndex >= 0 && currentIndex <= lastRowIndex) {
30801 var currentCell = this.paginationProxy.getRow(currentIndex);
30802 if (currentCell) {
30803 var currentCellHeight = (_a = currentCell.rowHeight, (_a !== null && _a !== void 0 ? _a : 0));
30804 if (pixelSum + currentCellHeight > pixelsInOnePage) {
30805 break;
30806 }
30807 pixelSum += currentCellHeight;
30808 }
30809 currentIndex += step;
30810 }
30811 return Math.max(0, Math.min(currentIndex, lastRowIndex));
30812 };
30813 NavigationService.prototype.getViewportHeight = function () {
30814 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
30815 var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
30816 var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();
30817 var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;
30818 if (this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()) {
30819 pixelsInOnePage -= scrollbarWidth;
30820 }
30821 return pixelsInOnePage;
30822 };
30823 NavigationService.prototype.isRowTallerThanView = function (rowIndex) {
30824 var rowNode = this.paginationProxy.getRow(rowIndex);
30825 if (!rowNode) {
30826 return false;
30827 }
30828 var rowHeight = rowNode.rowHeight;
30829 if (typeof rowHeight !== 'number') {
30830 return false;
30831 }
30832 return rowHeight > this.getViewportHeight();
30833 };
30834 NavigationService.prototype.onCtrlUpDownLeftRight = function (key, gridCell) {
30835 var cellToFocus = this.cellNavigationService.getNextCellToFocus(key, gridCell, true);
30836 var rowIndex = cellToFocus.rowIndex, column = cellToFocus.column;
30837 this.navigateTo({
30838 scrollIndex: rowIndex,
30839 scrollType: null,
30840 scrollColumn: column,
30841 focusIndex: rowIndex,
30842 focusColumn: column
30843 });
30844 };
30845 // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring
30846 // same cell into view (which means either scroll all the way up, or all the way down).
30847 NavigationService.prototype.onHomeOrEndKey = function (key) {
30848 var homeKey = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_HOME;
30849 var allColumns = this.columnModel.getAllDisplayedColumns();
30850 var columnToSelect = homeKey ? allColumns[0] : Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(allColumns);
30851 var scrollIndex = homeKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();
30852 this.navigateTo({
30853 scrollIndex: scrollIndex,
30854 scrollType: null,
30855 scrollColumn: columnToSelect,
30856 focusIndex: scrollIndex,
30857 focusColumn: columnToSelect
30858 });
30859 };
30860 // result of keyboard event
30861 NavigationService.prototype.onTabKeyDown = function (previous, keyboardEvent) {
30862 var backwards = keyboardEvent.shiftKey;
30863 var movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);
30864 if (movedToNextCell) {
30865 // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default
30866 // to the normal tabbing so user can exit the grid.
30867 keyboardEvent.preventDefault();
30868 return;
30869 }
30870 // if we didn't move to next cell, then need to tab out of the cells, ie to the header (if going
30871 // backwards)
30872 if (backwards) {
30873 var _a = previous.getRowPosition(), rowIndex = _a.rowIndex, rowPinned = _a.rowPinned;
30874 var firstRow = rowPinned ? rowIndex === 0 : rowIndex === this.paginationProxy.getPageFirstRow();
30875 if (firstRow) {
30876 keyboardEvent.preventDefault();
30877 this.focusService.focusLastHeader(keyboardEvent);
30878 }
30879 }
30880 else {
30881 // if the case it's a popup editor, the focus is on the editor and not the previous cell.
30882 // in order for the tab navigation to work, we need to focus the browser back onto the
30883 // previous cell.
30884 if (previous instanceof _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_5__["CellCtrl"]) {
30885 previous.focusCell(true);
30886 }
30887 if (this.focusService.focusNextGridCoreContainer(backwards)) {
30888 keyboardEvent.preventDefault();
30889 }
30890 }
30891 };
30892 // comes from API
30893 NavigationService.prototype.tabToNextCell = function (backwards, event) {
30894 var focusedCell = this.focusService.getFocusedCell();
30895 // if no focus, then cannot navigate
30896 if (!focusedCell) {
30897 return false;
30898 }
30899 var cellOrRow = this.getCellByPosition(focusedCell);
30900 // if cell is not rendered, means user has scrolled away from the cell
30901 // or that the focusedCell is a Full Width Row
30902 if (!cellOrRow) {
30903 cellOrRow = this.rowRenderer.getRowByPosition(focusedCell);
30904 if (!cellOrRow || !cellOrRow.isFullWidth()) {
30905 return false;
30906 }
30907 }
30908 return this.tabToNextCellCommon(cellOrRow, backwards, event);
30909 };
30910 NavigationService.prototype.tabToNextCellCommon = function (previous, backwards, event) {
30911 var editing = previous.isEditing();
30912 // if cell is not editing, there is still chance row is editing if it's Full Row Editing
30913 if (!editing && previous instanceof _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_5__["CellCtrl"]) {
30914 var cell = previous;
30915 var row = cell.getRowCtrl();
30916 if (row) {
30917 editing = row.isEditing();
30918 }
30919 }
30920 var res;
30921 if (editing) {
30922 // if we are editing, we know it's not a Full Width Row (RowComp)
30923 if (this.gridOptionsWrapper.isFullRowEdit()) {
30924 res = this.moveToNextEditingRow(previous, backwards, event);
30925 }
30926 else {
30927 res = this.moveToNextEditingCell(previous, backwards, event);
30928 }
30929 }
30930 else {
30931 res = this.moveToNextCellNotEditing(previous, backwards);
30932 }
30933 // if a cell wasn't found, it's possible that focus was moved to the header
30934 return res || !!this.focusService.getFocusedHeader();
30935 };
30936 NavigationService.prototype.moveToNextEditingCell = function (previousCell, backwards, event) {
30937 if (event === void 0) { event = null; }
30938 var previousPos = previousCell.getCellPosition();
30939 // need to do this before getting next cell to edit, in case the next cell
30940 // has editable function (eg colDef.editable=func() ) and it depends on the
30941 // result of this cell, so need to save updates from the first edit, in case
30942 // the value is referenced in the function.
30943 previousCell.stopEditing();
30944 // find the next cell to start editing
30945 var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);
30946 if (nextCell == null) {
30947 return false;
30948 }
30949 // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default
30950 // to the normal tabbing so user can exit the grid.
30951 nextCell.startEditing(null, null, true, event);
30952 nextCell.focusCell(false);
30953 return true;
30954 };
30955 NavigationService.prototype.moveToNextEditingRow = function (previousCell, backwards, event) {
30956 if (event === void 0) { event = null; }
30957 var previousPos = previousCell.getCellPosition();
30958 // find the next cell to start editing
30959 var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);
30960 if (nextCell == null) {
30961 return false;
30962 }
30963 var nextPos = nextCell.getCellPosition();
30964 var previousEditable = this.isCellEditable(previousPos);
30965 var nextEditable = this.isCellEditable(nextPos);
30966 var rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;
30967 if (previousEditable) {
30968 previousCell.setFocusOutOnEditor();
30969 }
30970 if (!rowsMatch) {
30971 var pRow = previousCell.getRowCtrl();
30972 pRow.stopEditing();
30973 var nRow = nextCell.getRowCtrl();
30974 nRow.startRowEditing(undefined, undefined, undefined, event);
30975 }
30976 if (nextEditable) {
30977 nextCell.setFocusInOnEditor();
30978 nextCell.focusCell();
30979 }
30980 else {
30981 nextCell.focusCell(true);
30982 }
30983 return true;
30984 };
30985 NavigationService.prototype.moveToNextCellNotEditing = function (previousCell, backwards) {
30986 var displayedColumns = this.columnModel.getAllDisplayedColumns();
30987 var cellPos;
30988 if (previousCell instanceof _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_6__["RowCtrl"]) {
30989 cellPos = __assign(__assign({}, previousCell.getRowPosition()), { column: backwards ? displayedColumns[0] : Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(displayedColumns) });
30990 }
30991 else {
30992 cellPos = previousCell.getCellPosition();
30993 }
30994 // find the next cell to start editing
30995 var nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);
30996 // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default
30997 // to the normal tabbing so user can exit the grid.
30998 if (nextCell instanceof _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_5__["CellCtrl"]) {
30999 nextCell.focusCell(true);
31000 }
31001 else if (nextCell) {
31002 return this.tryToFocusFullWidthRow(nextCell.getRowPosition(), backwards);
31003 }
31004 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(nextCell);
31005 };
31006 // called by the cell, when tab is pressed while editing.
31007 // @return: RenderedCell when navigation successful, otherwise null
31008 NavigationService.prototype.findNextCellToFocusOn = function (previousPosition, backwards, startEditing) {
31009 var nextPosition = previousPosition;
31010 while (true) {
31011 if (previousPosition !== nextPosition) {
31012 previousPosition = nextPosition;
31013 }
31014 if (!backwards) {
31015 nextPosition = this.getLastCellOfColSpan(nextPosition);
31016 }
31017 nextPosition = this.cellNavigationService.getNextTabbedCell(nextPosition, backwards);
31018 // allow user to override what cell to go to next
31019 var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();
31020 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(userFunc)) {
31021 var params = {
31022 backwards: backwards,
31023 editing: startEditing,
31024 previousCellPosition: previousPosition,
31025 nextCellPosition: nextPosition ? nextPosition : null
31026 };
31027 var userCell = userFunc(params);
31028 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(userCell)) {
31029 if (userCell.floating) {
31030 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');
31031 userCell.rowPinned = userCell.floating;
31032 }
31033 nextPosition = {
31034 rowIndex: userCell.rowIndex,
31035 column: userCell.column,
31036 rowPinned: userCell.rowPinned
31037 };
31038 }
31039 else {
31040 nextPosition = null;
31041 }
31042 }
31043 // if no 'next cell', means we have got to last cell of grid, so nothing to move to,
31044 // so bottom right cell going forwards, or top left going backwards
31045 if (!nextPosition) {
31046 return null;
31047 }
31048 if (nextPosition.rowIndex < 0) {
31049 var headerLen = this.headerNavigationService.getHeaderRowCount();
31050 this.focusService.focusHeaderPosition({
31051 headerPosition: {
31052 headerRowIndex: headerLen + (nextPosition.rowIndex),
31053 column: nextPosition.column
31054 }
31055 });
31056 return null;
31057 }
31058 // if editing, but cell not editable, skip cell. we do this before we do all of
31059 // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping
31060 // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless
31061 // (except for the last one) which causes grid to stall for a while.
31062 // note - for full row edit, we do focus non-editable cells, as the row stays in edit mode.
31063 var fullRowEdit = this.gridOptionsWrapper.isFullRowEdit();
31064 if (startEditing && !fullRowEdit) {
31065 var cellIsEditable = this.isCellEditable(nextPosition);
31066 if (!cellIsEditable) {
31067 continue;
31068 }
31069 }
31070 this.ensureCellVisible(nextPosition);
31071 // we have to call this after ensureColumnVisible - otherwise it could be a virtual column
31072 // or row that is not currently in view, hence the renderedCell would not exist
31073 var nextCell = this.getCellByPosition(nextPosition);
31074 // if next cell is fullWidth row, then no rendered cell,
31075 // as fullWidth rows have no cells, so we skip it
31076 if (!nextCell) {
31077 var row = this.rowRenderer.getRowByPosition(nextPosition);
31078 if (!row || !row.isFullWidth()) {
31079 continue;
31080 }
31081 else {
31082 return row;
31083 }
31084 }
31085 if (nextCell.isSuppressNavigable()) {
31086 continue;
31087 }
31088 // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation
31089 // consistent, we set into range here also.
31090 if (this.rangeService) {
31091 this.rangeService.setRangeToCell(nextPosition);
31092 }
31093 // we successfully tabbed onto a grid cell, so return true
31094 return nextCell;
31095 }
31096 };
31097 NavigationService.prototype.isCellEditable = function (cell) {
31098 var rowNode = this.lookupRowNodeForCell(cell);
31099 if (rowNode) {
31100 return cell.column.isCellEditable(rowNode);
31101 }
31102 return false;
31103 };
31104 NavigationService.prototype.getCellByPosition = function (cellPosition) {
31105 var rowCtrl = this.rowRenderer.getRowByPosition(cellPosition);
31106 if (!rowCtrl) {
31107 return null;
31108 }
31109 return rowCtrl.getCellCtrl(cellPosition.column);
31110 };
31111 NavigationService.prototype.lookupRowNodeForCell = function (cell) {
31112 if (cell.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_8__["Constants"].PINNED_TOP) {
31113 return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);
31114 }
31115 if (cell.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_8__["Constants"].PINNED_BOTTOM) {
31116 return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);
31117 }
31118 return this.paginationProxy.getRow(cell.rowIndex);
31119 };
31120 // we use index for rows, but column object for columns, as the next column (by index) might not
31121 // be visible (header grouping) so it's not reliable, so using the column object instead.
31122 NavigationService.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {
31123 // we keep searching for a next cell until we find one. this is how the group rows get skipped
31124 var nextCell = currentCell;
31125 var hitEdgeOfGrid = false;
31126 while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {
31127 // if the current cell is spanning across multiple columns, we need to move
31128 // our current position to be the last cell on the right before finding the
31129 // the next target.
31130 if (this.gridOptionsWrapper.isEnableRtl()) {
31131 if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].LEFT) {
31132 nextCell = this.getLastCellOfColSpan(nextCell);
31133 }
31134 }
31135 else if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].RIGHT) {
31136 nextCell = this.getLastCellOfColSpan(nextCell);
31137 }
31138 nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);
31139 // eg if going down, and nextCell=undefined, means we are gone past the last row
31140 hitEdgeOfGrid = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["missing"])(nextCell);
31141 }
31142 if (hitEdgeOfGrid && event && event.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].UP) {
31143 nextCell = {
31144 rowIndex: -1,
31145 rowPinned: null,
31146 column: currentCell.column
31147 };
31148 }
31149 // allow user to override what cell to go to next. when doing normal cell navigation (with keys)
31150 // we allow this, however if processing 'enter after edit' we don't allow override
31151 if (allowUserOverride) {
31152 var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();
31153 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(userFunc)) {
31154 var params = {
31155 key: key,
31156 previousCellPosition: currentCell,
31157 nextCellPosition: nextCell ? nextCell : null,
31158 event: event
31159 };
31160 var userCell = userFunc(params);
31161 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(userCell)) {
31162 if (userCell.floating) {
31163 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');
31164 userCell.rowPinned = userCell.floating;
31165 }
31166 nextCell = {
31167 rowPinned: userCell.rowPinned,
31168 rowIndex: userCell.rowIndex,
31169 column: userCell.column
31170 };
31171 }
31172 else {
31173 nextCell = null;
31174 }
31175 }
31176 }
31177 // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid
31178 if (!nextCell) {
31179 return;
31180 }
31181 if (nextCell.rowIndex < 0) {
31182 var headerLen = this.headerNavigationService.getHeaderRowCount();
31183 this.focusService.focusHeaderPosition({
31184 headerPosition: { headerRowIndex: headerLen + (nextCell.rowIndex), column: currentCell.column },
31185 event: event || undefined
31186 });
31187 return;
31188 }
31189 // in case we have col spanning we get the cellComp and use it to get the
31190 // position. This was we always focus the first cell inside the spanning.
31191 var normalisedPosition = this.getNormalisedPosition(nextCell);
31192 if (normalisedPosition) {
31193 this.focusPosition(normalisedPosition);
31194 }
31195 else {
31196 this.tryToFocusFullWidthRow(nextCell);
31197 }
31198 };
31199 NavigationService.prototype.getNormalisedPosition = function (cellPosition) {
31200 // ensureCellVisible first, to make sure cell at position is rendered.
31201 this.ensureCellVisible(cellPosition);
31202 var cellComp = this.getCellByPosition(cellPosition);
31203 // not guaranteed to have a cellComp when using the SSRM as blocks are loading.
31204 if (!cellComp) {
31205 return null;
31206 }
31207 cellPosition = cellComp.getCellPosition();
31208 // we call this again, as nextCell can be different to it's previous value due to Column Spanning
31209 // (ie if cursor moving from right to left, and cell is spanning columns, then nextCell was the
31210 // last column in the group, however now it's the first column in the group). if we didn't do
31211 // ensureCellVisible again, then we could only be showing the last portion (last column) of the
31212 // merged cells.
31213 this.ensureCellVisible(cellPosition);
31214 return cellPosition;
31215 };
31216 NavigationService.prototype.tryToFocusFullWidthRow = function (position, backwards) {
31217 if (backwards === void 0) { backwards = false; }
31218 var displayedColumns = this.columnModel.getAllDisplayedColumns();
31219 var rowComp = this.rowRenderer.getRowByPosition(position);
31220 if (!rowComp || !rowComp.isFullWidth()) {
31221 return false;
31222 }
31223 var currentCellFocused = this.focusService.getFocusedCell();
31224 var cellPosition = {
31225 rowIndex: position.rowIndex,
31226 rowPinned: position.rowPinned,
31227 column: position.column || (backwards ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(displayedColumns) : displayedColumns[0])
31228 };
31229 this.focusPosition(cellPosition);
31230 var fromBelow = currentCellFocused != null ? this.rowPositionUtils.before(cellPosition, currentCellFocused) : false;
31231 var focusEvent = {
31232 type: _eventKeys__WEBPACK_IMPORTED_MODULE_9__["Events"].EVENT_FULL_WIDTH_ROW_FOCUSED,
31233 api: this.gridApi,
31234 columnApi: this.columnApi,
31235 rowIndex: cellPosition.rowIndex,
31236 rowPinned: cellPosition.rowPinned,
31237 column: cellPosition.column,
31238 isFullWidthCell: true,
31239 floating: cellPosition.rowPinned,
31240 fromBelow: fromBelow
31241 };
31242 this.eventService.dispatchEvent(focusEvent);
31243 return true;
31244 };
31245 NavigationService.prototype.focusPosition = function (cellPosition) {
31246 this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);
31247 if (this.rangeService) {
31248 this.rangeService.setRangeToCell(cellPosition);
31249 }
31250 };
31251 NavigationService.prototype.isValidNavigateCell = function (cell) {
31252 var rowNode = this.rowPositionUtils.getRowNode(cell);
31253 // we do not allow focusing on detail rows and full width rows
31254 return !!rowNode;
31255 };
31256 NavigationService.prototype.getLastCellOfColSpan = function (cell) {
31257 var cellCtrl = this.getCellByPosition(cell);
31258 if (!cellCtrl) {
31259 return cell;
31260 }
31261 var colSpanningList = cellCtrl.getColSpanningList();
31262 if (colSpanningList.length === 1) {
31263 return cell;
31264 }
31265 return {
31266 rowIndex: cell.rowIndex,
31267 column: Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(colSpanningList),
31268 rowPinned: cell.rowPinned
31269 };
31270 };
31271 NavigationService.prototype.ensureCellVisible = function (gridCell) {
31272 // this scrolls the row into view
31273 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["missing"])(gridCell.rowPinned)) {
31274 this.gridBodyCon.getScrollFeature().ensureIndexVisible(gridCell.rowIndex);
31275 }
31276 if (!gridCell.column.isPinned()) {
31277 this.gridBodyCon.getScrollFeature().ensureColumnVisible(gridCell.column);
31278 }
31279 // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible
31280 // floating cell, the scrolls get out of sync
31281 this.gridBodyCon.getScrollFeature().horizontallyScrollHeaderCenterAndFloatingCenter();
31282 // need to flush frames, to make sure the correct cells are rendered
31283 this.animationFrameService.flushAllFrames();
31284 };
31285 __decorate([
31286 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
31287 ], NavigationService.prototype, "columnApi", void 0);
31288 __decorate([
31289 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
31290 ], NavigationService.prototype, "gridApi", void 0);
31291 __decorate([
31292 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('mouseEventService')
31293 ], NavigationService.prototype, "mouseEventService", void 0);
31294 __decorate([
31295 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
31296 ], NavigationService.prototype, "paginationProxy", void 0);
31297 __decorate([
31298 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
31299 ], NavigationService.prototype, "focusService", void 0);
31300 __decorate([
31301 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('animationFrameService')
31302 ], NavigationService.prototype, "animationFrameService", void 0);
31303 __decorate([
31304 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('rangeService')
31305 ], NavigationService.prototype, "rangeService", void 0);
31306 __decorate([
31307 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
31308 ], NavigationService.prototype, "columnModel", void 0);
31309 __decorate([
31310 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
31311 ], NavigationService.prototype, "ctrlsService", void 0);
31312 __decorate([
31313 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
31314 ], NavigationService.prototype, "rowRenderer", void 0);
31315 __decorate([
31316 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('headerNavigationService')
31317 ], NavigationService.prototype, "headerNavigationService", void 0);
31318 __decorate([
31319 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("rowPositionUtils")
31320 ], NavigationService.prototype, "rowPositionUtils", void 0);
31321 __decorate([
31322 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("cellNavigationService")
31323 ], NavigationService.prototype, "cellNavigationService", void 0);
31324 __decorate([
31325 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("pinnedRowModel")
31326 ], NavigationService.prototype, "pinnedRowModel", void 0);
31327 __decorate([
31328 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
31329 ], NavigationService.prototype, "postConstruct", null);
31330 NavigationService = __decorate([
31331 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('navigationService')
31332 ], NavigationService);
31333 return NavigationService;
31334}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
31335
31336
31337
31338
31339
31340/***/ }),
31341/* 140 */
31342/***/ (function(module, __webpack_exports__, __webpack_require__) {
31343
31344"use strict";
31345__webpack_require__.r(__webpack_exports__);
31346/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerComp", function() { return RowContainerComp; });
31347/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
31348/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
31349/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
31350/* harmony import */ var _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(118);
31351/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
31352/* harmony import */ var _rendering_row_rowComp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(141);
31353/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);
31354/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44);
31355/**
31356 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
31357 * @version v27.3.0
31358 * @link https://www.ag-grid.com/
31359 * @license MIT
31360 */
31361var __extends = (undefined && undefined.__extends) || (function () {
31362 var extendStatics = function (d, b) {
31363 extendStatics = Object.setPrototypeOf ||
31364 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
31365 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
31366 return extendStatics(d, b);
31367 };
31368 return function (d, b) {
31369 extendStatics(d, b);
31370 function __() { this.constructor = d; }
31371 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
31372 };
31373})();
31374var __assign = (undefined && undefined.__assign) || function () {
31375 __assign = Object.assign || function(t) {
31376 for (var s, i = 1, n = arguments.length; i < n; i++) {
31377 s = arguments[i];
31378 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
31379 t[p] = s[p];
31380 }
31381 return t;
31382 };
31383 return __assign.apply(this, arguments);
31384};
31385var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
31386 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
31387 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
31388 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;
31389 return c > 3 && r && Object.defineProperty(target, key, r), r;
31390};
31391
31392
31393
31394
31395
31396
31397
31398
31399function templateFactory() {
31400 var name = _widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"].elementGettingCreated.getAttribute('name');
31401 var cssClasses = _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerCtrl"].getRowContainerCssClasses(name);
31402 var res;
31403 var template1 = name === _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerName"].CENTER;
31404 var template2 = name === _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerName"].TOP_CENTER || name === _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerName"].BOTTOM_CENTER;
31405 if (template1) {
31406 res = /* html */
31407 "<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>";
31408 }
31409 else if (template2) {
31410 res = /* html */
31411 "<div class=\"" + cssClasses.viewport + "\" ref=\"eViewport\" role=\"presentation\">\n <div class=\"" + cssClasses.container + "\" ref=\"eContainer\"></div>\n </div>";
31412 }
31413 else {
31414 res = /* html */
31415 "<div class=\"" + cssClasses.container + "\" ref=\"eContainer\"></div>";
31416 }
31417 return res;
31418}
31419var RowContainerComp = /** @class */ (function (_super) {
31420 __extends(RowContainerComp, _super);
31421 function RowContainerComp() {
31422 var _this = _super.call(this, templateFactory()) || this;
31423 _this.rowComps = {};
31424 _this.name = _widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"].elementGettingCreated.getAttribute('name');
31425 _this.type = Object(_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["getRowContainerTypeForName"])(_this.name);
31426 return _this;
31427 }
31428 RowContainerComp.prototype.postConstruct = function () {
31429 var _this = this;
31430 var compProxy = {
31431 setViewportHeight: function (height) { return _this.eViewport.style.height = height; },
31432 setRowCtrls: function (rowCtrls) { return _this.setRowCtrls(rowCtrls); },
31433 setDomOrder: function (domOrder) {
31434 _this.domOrder = domOrder;
31435 },
31436 setContainerWidth: function (width) { return _this.eContainer.style.width = width; }
31437 };
31438 var ctrl = this.createManagedBean(new _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerCtrl"](this.name));
31439 ctrl.setComp(compProxy, this.eContainer, this.eViewport, this.eWrapper);
31440 };
31441 RowContainerComp.prototype.preDestroy = function () {
31442 // destroys all row comps
31443 this.setRowCtrls([]);
31444 };
31445 RowContainerComp.prototype.setRowCtrls = function (rowCtrls) {
31446 var _this = this;
31447 var oldRows = __assign({}, this.rowComps);
31448 this.rowComps = {};
31449 this.lastPlacedElement = null;
31450 var processRow = function (rowCon) {
31451 var instanceId = rowCon.getInstanceId();
31452 var existingRowComp = oldRows[instanceId];
31453 if (existingRowComp) {
31454 _this.rowComps[instanceId] = existingRowComp;
31455 delete oldRows[instanceId];
31456 _this.ensureDomOrder(existingRowComp.getGui());
31457 }
31458 else {
31459 var rowComp = _this.newRowComp(rowCon);
31460 _this.rowComps[instanceId] = rowComp;
31461 _this.appendRow(rowComp.getGui());
31462 }
31463 };
31464 rowCtrls.forEach(processRow);
31465 Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["getAllValuesInObject"])(oldRows).forEach(function (oldRowComp) {
31466 _this.eContainer.removeChild(oldRowComp.getGui());
31467 oldRowComp.destroy();
31468 });
31469 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaRole"])(this.eContainer, rowCtrls.length ? "rowgroup" : "presentation");
31470 };
31471 RowContainerComp.prototype.appendRow = function (element) {
31472 if (this.domOrder) {
31473 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["insertWithDomOrder"])(this.eContainer, element, this.lastPlacedElement);
31474 }
31475 else {
31476 this.eContainer.appendChild(element);
31477 }
31478 this.lastPlacedElement = element;
31479 };
31480 RowContainerComp.prototype.ensureDomOrder = function (eRow) {
31481 if (this.domOrder) {
31482 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["ensureDomOrder"])(this.eContainer, eRow, this.lastPlacedElement);
31483 this.lastPlacedElement = eRow;
31484 }
31485 };
31486 RowContainerComp.prototype.newRowComp = function (rowCtrl) {
31487 var pinned = _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerCtrl"].getPinned(this.name);
31488 var res = new _rendering_row_rowComp__WEBPACK_IMPORTED_MODULE_5__["RowComp"](rowCtrl, this.beans, this.type);
31489 return res;
31490 };
31491 __decorate([
31492 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('beans')
31493 ], RowContainerComp.prototype, "beans", void 0);
31494 __decorate([
31495 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eViewport')
31496 ], RowContainerComp.prototype, "eViewport", void 0);
31497 __decorate([
31498 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eContainer')
31499 ], RowContainerComp.prototype, "eContainer", void 0);
31500 __decorate([
31501 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eWrapper')
31502 ], RowContainerComp.prototype, "eWrapper", void 0);
31503 __decorate([
31504 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
31505 ], RowContainerComp.prototype, "postConstruct", null);
31506 __decorate([
31507 _context_context__WEBPACK_IMPORTED_MODULE_2__["PreDestroy"]
31508 ], RowContainerComp.prototype, "preDestroy", null);
31509 return RowContainerComp;
31510}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
31511
31512
31513
31514
31515
31516/***/ }),
31517/* 141 */
31518/***/ (function(module, __webpack_exports__, __webpack_require__) {
31519
31520"use strict";
31521__webpack_require__.r(__webpack_exports__);
31522/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowComp", function() { return RowComp; });
31523/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
31524/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
31525/* harmony import */ var _cell_cellComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(142);
31526/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
31527/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44);
31528/**
31529 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
31530 * @version v27.3.0
31531 * @link https://www.ag-grid.com/
31532 * @license MIT
31533 */
31534var __extends = (undefined && undefined.__extends) || (function () {
31535 var extendStatics = function (d, b) {
31536 extendStatics = Object.setPrototypeOf ||
31537 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
31538 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
31539 return extendStatics(d, b);
31540 };
31541 return function (d, b) {
31542 extendStatics(d, b);
31543 function __() { this.constructor = d; }
31544 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
31545 };
31546})();
31547
31548
31549
31550
31551
31552var RowComp = /** @class */ (function (_super) {
31553 __extends(RowComp, _super);
31554 function RowComp(ctrl, beans, containerType) {
31555 var _this = _super.call(this) || this;
31556 _this.cellComps = {};
31557 _this.beans = beans;
31558 _this.rowCtrl = ctrl;
31559 _this.setTemplate(/* html */ "<div comp-id=\"" + _this.getCompId() + "\" style=\"" + _this.getInitialStyle() + "\"/>");
31560 var eGui = _this.getGui();
31561 var style = eGui.style;
31562 var compProxy = {
31563 setDomOrder: function (domOrder) { return _this.domOrder = domOrder; },
31564 setCellCtrls: function (cellCtrls) { return _this.setCellCtrls(cellCtrls); },
31565 showFullWidth: function (compDetails) { return _this.showFullWidth(compDetails); },
31566 getFullWidthCellRenderer: function () { return _this.getFullWidthCellRenderer(); },
31567 addOrRemoveCssClass: function (name, on) { return _this.addOrRemoveCssClass(name, on); },
31568 setUserStyles: function (styles) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["addStylesToElement"])(eGui, styles); },
31569 setTop: function (top) { return style.top = top; },
31570 setTransform: function (transform) { return style.transform = transform; },
31571 setRowIndex: function (rowIndex) { return eGui.setAttribute('row-index', rowIndex); },
31572 setRole: function (role) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_4__["setAriaRole"])(eGui, role); },
31573 setRowId: function (rowId) { return eGui.setAttribute('row-id', rowId); },
31574 setRowBusinessKey: function (businessKey) { return eGui.setAttribute('row-business-key', businessKey); },
31575 setTabIndex: function (tabIndex) { return eGui.setAttribute('tabindex', tabIndex.toString()); }
31576 };
31577 ctrl.setComp(compProxy, _this.getGui(), containerType);
31578 return _this;
31579 }
31580 RowComp.prototype.getInitialStyle = function () {
31581 var transform = this.rowCtrl.getInitialTransform();
31582 var top = this.rowCtrl.getInitialRowTop();
31583 return transform ? "transform: " + transform : "top: " + top;
31584 };
31585 RowComp.prototype.showFullWidth = function (compDetails) {
31586 var _this = this;
31587 var callback = function (cellRenderer) {
31588 if (_this.isAlive()) {
31589 var eGui = cellRenderer.getGui();
31590 _this.getGui().appendChild(eGui);
31591 _this.rowCtrl.setupDetailRowAutoHeight(eGui);
31592 _this.setFullWidthRowComp(cellRenderer);
31593 }
31594 else {
31595 _this.beans.context.destroyBean(cellRenderer);
31596 }
31597 };
31598 // if not in cache, create new one
31599 var res = compDetails.newAgStackInstance();
31600 if (!res) {
31601 return;
31602 }
31603 res.then(callback);
31604 };
31605 RowComp.prototype.setCellCtrls = function (cellCtrls) {
31606 var _this = this;
31607 var cellsToRemove = Object.assign({}, this.cellComps);
31608 cellCtrls.forEach(function (cellCtrl) {
31609 var key = cellCtrl.getInstanceId();
31610 var existingCellComp = _this.cellComps[key];
31611 if (existingCellComp == null) {
31612 _this.newCellComp(cellCtrl);
31613 }
31614 else {
31615 cellsToRemove[key] = null;
31616 }
31617 });
31618 var cellCompsToRemove = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getAllValuesInObject"])(cellsToRemove)
31619 .filter(function (cellComp) { return cellComp != null; });
31620 this.destroyCells(cellCompsToRemove);
31621 this.ensureDomOrder(cellCtrls);
31622 };
31623 RowComp.prototype.ensureDomOrder = function (cellCtrls) {
31624 var _this = this;
31625 if (!this.domOrder) {
31626 return;
31627 }
31628 var elementsInOrder = [];
31629 cellCtrls.forEach(function (cellCtrl) {
31630 var cellComp = _this.cellComps[cellCtrl.getInstanceId()];
31631 if (cellComp) {
31632 elementsInOrder.push(cellComp.getGui());
31633 }
31634 });
31635 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDomChildOrder"])(this.getGui(), elementsInOrder);
31636 };
31637 RowComp.prototype.newCellComp = function (cellCtrl) {
31638 var cellComp = new _cell_cellComp__WEBPACK_IMPORTED_MODULE_2__["CellComp"](this.beans, cellCtrl, this.rowCtrl.isPrintLayout(), this.getGui(), this.rowCtrl.isEditing());
31639 this.cellComps[cellCtrl.getInstanceId()] = cellComp;
31640 this.getGui().appendChild(cellComp.getGui());
31641 };
31642 RowComp.prototype.destroy = function () {
31643 _super.prototype.destroy.call(this);
31644 this.destroyAllCells();
31645 };
31646 RowComp.prototype.destroyAllCells = function () {
31647 var cellsToDestroy = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getAllValuesInObject"])(this.cellComps).filter(function (cp) { return cp != null; });
31648 this.destroyCells(cellsToDestroy);
31649 };
31650 RowComp.prototype.setFullWidthRowComp = function (fullWidthRowComponent) {
31651 var _this = this;
31652 if (this.fullWidthCellRenderer) {
31653 console.error('AG Grid - should not be setting fullWidthRowComponent twice');
31654 }
31655 this.fullWidthCellRenderer = fullWidthRowComponent;
31656 this.addDestroyFunc(function () {
31657 _this.fullWidthCellRenderer = _this.beans.context.destroyBean(_this.fullWidthCellRenderer);
31658 });
31659 };
31660 RowComp.prototype.getFullWidthCellRenderer = function () {
31661 return this.fullWidthCellRenderer;
31662 };
31663 RowComp.prototype.destroyCells = function (cellComps) {
31664 var _this = this;
31665 cellComps.forEach(function (cellComp) {
31666 // could be old reference, ie removed cell
31667 if (!cellComp) {
31668 return;
31669 }
31670 // check cellComp belongs in this container
31671 var instanceId = cellComp.getCtrl().getInstanceId();
31672 if (_this.cellComps[instanceId] !== cellComp) {
31673 return;
31674 }
31675 cellComp.detach();
31676 cellComp.destroy();
31677 _this.cellComps[instanceId] = null;
31678 });
31679 };
31680 return RowComp;
31681}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
31682
31683
31684
31685
31686
31687/***/ }),
31688/* 142 */
31689/***/ (function(module, __webpack_exports__, __webpack_require__) {
31690
31691"use strict";
31692__webpack_require__.r(__webpack_exports__);
31693/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellComp", function() { return CellComp; });
31694/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
31695/* harmony import */ var _cellEditors_popupEditorWrapper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143);
31696/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
31697/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
31698/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
31699/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42);
31700/**
31701 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
31702 * @version v27.3.0
31703 * @link https://www.ag-grid.com/
31704 * @license MIT
31705 */
31706var __extends = (undefined && undefined.__extends) || (function () {
31707 var extendStatics = function (d, b) {
31708 extendStatics = Object.setPrototypeOf ||
31709 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
31710 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
31711 return extendStatics(d, b);
31712 };
31713 return function (d, b) {
31714 extendStatics(d, b);
31715 function __() { this.constructor = d; }
31716 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
31717 };
31718})();
31719
31720
31721
31722
31723
31724
31725var CellComp = /** @class */ (function (_super) {
31726 __extends(CellComp, _super);
31727 function CellComp(beans, cellCtrl, printLayout, eRow, editingRow) {
31728 var _this = _super.call(this) || this;
31729 // every time we go into edit mode, or back again, this gets incremented.
31730 // it's the components way of dealing with the async nature of framework components,
31731 // so if a framework component takes a while to be created, we know if the object
31732 // is still relevant when creating is finished. eg we could click edit / un-edit 20
31733 // times before the first React edit component comes back - we should discard
31734 // the first 19.
31735 _this.rendererVersion = 0;
31736 _this.editorVersion = 0;
31737 _this.beans = beans;
31738 _this.column = cellCtrl.getColumn();
31739 _this.rowNode = cellCtrl.getRowNode();
31740 _this.rowCtrl = cellCtrl.getRowCtrl();
31741 _this.eRow = eRow;
31742 _this.setTemplate(/* html */ "<div comp-id=\"" + _this.getCompId() + "\"/>");
31743 var eGui = _this.getGui();
31744 _this.forceWrapper = cellCtrl.isForceWrapper();
31745 _this.refreshWrapper(false);
31746 var setAttribute = function (name, value, element) {
31747 var actualElement = element ? element : eGui;
31748 if (value != null && value != '') {
31749 actualElement.setAttribute(name, value);
31750 }
31751 else {
31752 actualElement.removeAttribute(name);
31753 }
31754 };
31755 var compProxy = {
31756 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
31757 setUserStyles: function (styles) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["addStylesToElement"])(eGui, styles); },
31758 getFocusableElement: function () { return _this.getFocusableElement(); },
31759 setTabIndex: function (tabIndex) { return setAttribute('tabindex', tabIndex.toString()); },
31760 setRole: function (role) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaRole"])(eGui, role); },
31761 setColId: function (colId) { return setAttribute('col-id', colId); },
31762 setTitle: function (title) { return setAttribute('title', title); },
31763 setIncludeSelection: function (include) { return _this.includeSelection = include; },
31764 setIncludeRowDrag: function (include) { return _this.includeRowDrag = include; },
31765 setIncludeDndSource: function (include) { return _this.includeDndSource = include; },
31766 setRenderDetails: function (compDetails, valueToDisplay, force) {
31767 return _this.setRenderDetails(compDetails, valueToDisplay, force);
31768 },
31769 setEditDetails: function (compDetails, popup, position) {
31770 return _this.setEditDetails(compDetails, popup, position);
31771 },
31772 getCellEditor: function () { return _this.cellEditor || null; },
31773 getCellRenderer: function () { return _this.cellRenderer || null; },
31774 getParentOfValue: function () { return _this.getParentOfValue(); }
31775 };
31776 _this.cellCtrl = cellCtrl;
31777 cellCtrl.setComp(compProxy, _this.getGui(), _this.eCellWrapper, printLayout, editingRow);
31778 return _this;
31779 }
31780 CellComp.prototype.getParentOfValue = function () {
31781 if (this.eCellValue) {
31782 // if not editing, and using wrapper, then value goes in eCellValue
31783 return this.eCellValue;
31784 }
31785 if (this.eCellWrapper) {
31786 // if editing, and using wrapper, value (cell editor) goes in eCellWrapper
31787 return this.eCellWrapper;
31788 }
31789 // if editing or rendering, and not using wrapper, value (or comp) is directly inside cell
31790 return this.getGui();
31791 };
31792 CellComp.prototype.setRenderDetails = function (compDetails, valueToDisplay, forceNewCellRendererInstance) {
31793 // this can happen if the users asks for the cell to refresh, but we are not showing the vale as we are editing
31794 var isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;
31795 if (isInlineEditing) {
31796 return;
31797 }
31798 // this means firstRender will be true for one pass only, as it's initialised to undefined
31799 this.firstRender = this.firstRender == null;
31800 // if display template has changed, means any previous Cell Renderer is in the wrong location
31801 var controlWrapperChanged = this.refreshWrapper(false);
31802 // all of these have dependencies on the eGui, so only do them after eGui is set
31803 if (compDetails) {
31804 var neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;
31805 var cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);
31806 if (!cellRendererRefreshSuccessful) {
31807 this.destroyRenderer();
31808 this.createCellRendererInstance(compDetails);
31809 }
31810 }
31811 else {
31812 this.destroyRenderer();
31813 this.insertValueWithoutCellRenderer(valueToDisplay);
31814 }
31815 };
31816 CellComp.prototype.setEditDetails = function (compDetails, popup, position) {
31817 if (compDetails) {
31818 this.createCellEditorInstance(compDetails, popup, position);
31819 }
31820 else {
31821 this.destroyEditor();
31822 }
31823 };
31824 CellComp.prototype.removeControls = function () {
31825 this.checkboxSelectionComp = this.beans.context.destroyBean(this.checkboxSelectionComp);
31826 this.dndSourceComp = this.beans.context.destroyBean(this.dndSourceComp);
31827 this.rowDraggingComp = this.beans.context.destroyBean(this.rowDraggingComp);
31828 };
31829 // returns true if wrapper was changed
31830 CellComp.prototype.refreshWrapper = function (editing) {
31831 var providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;
31832 var usingWrapper = providingControls || this.forceWrapper;
31833 var putWrapperIn = usingWrapper && this.eCellWrapper == null;
31834 if (putWrapperIn) {
31835 this.eCellWrapper = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["loadTemplate"])("<div class=\"ag-cell-wrapper\" role=\"presentation\"></div>");
31836 this.getGui().appendChild(this.eCellWrapper);
31837 }
31838 var takeWrapperOut = !usingWrapper && this.eCellWrapper != null;
31839 if (takeWrapperOut) {
31840 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eCellWrapper);
31841 this.eCellWrapper = undefined;
31842 }
31843 this.addOrRemoveCssClass('ag-cell-value', !usingWrapper);
31844 var usingCellValue = !editing && usingWrapper;
31845 var putCellValueIn = usingCellValue && this.eCellValue == null;
31846 if (putCellValueIn) {
31847 this.eCellValue = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["loadTemplate"])("<span class=\"ag-cell-value\" role=\"presentation\"></span>");
31848 this.eCellWrapper.appendChild(this.eCellValue);
31849 }
31850 var takeCellValueOut = !usingCellValue && this.eCellValue != null;
31851 if (takeCellValueOut) {
31852 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eCellValue);
31853 this.eCellValue = undefined;
31854 }
31855 var templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;
31856 if (templateChanged) {
31857 this.removeControls();
31858 }
31859 if (!editing && providingControls) {
31860 this.addControls();
31861 }
31862 return templateChanged;
31863 };
31864 CellComp.prototype.addControls = function () {
31865 var id = this.eCellValue.id = "cell-" + this.getCompId();
31866 var describedByIds = [];
31867 if (this.includeRowDrag) {
31868 if (this.rowDraggingComp == null) {
31869 this.rowDraggingComp = this.cellCtrl.createRowDragComp();
31870 if (this.rowDraggingComp) {
31871 // put the checkbox in before the value
31872 this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(), this.eCellValue);
31873 }
31874 }
31875 }
31876 if (this.includeDndSource) {
31877 if (this.dndSourceComp == null) {
31878 this.dndSourceComp = this.cellCtrl.createDndSource();
31879 // put the checkbox in before the value
31880 this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(), this.eCellValue);
31881 }
31882 }
31883 if (this.includeSelection) {
31884 if (this.checkboxSelectionComp == null) {
31885 this.checkboxSelectionComp = this.cellCtrl.createSelectionCheckbox();
31886 this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(), this.eCellValue);
31887 }
31888 describedByIds.push(this.checkboxSelectionComp.getCheckboxId());
31889 }
31890 describedByIds.push(id);
31891 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaDescribedBy"])(this.getGui(), describedByIds.join(' '));
31892 };
31893 CellComp.prototype.createCellEditorInstance = function (compDetails, popup, position) {
31894 var _this = this;
31895 var versionCopy = this.editorVersion;
31896 var cellEditorPromise = compDetails.newAgStackInstance();
31897 if (!cellEditorPromise) {
31898 return;
31899 } // if empty, userComponentFactory already did a console message
31900 var params = compDetails.params;
31901 cellEditorPromise.then(function (c) { return _this.afterCellEditorCreated(versionCopy, c, params, popup, position); });
31902 // if we don't do this, and editor component is async, then there will be a period
31903 // when the component isn't present and keyboard navigation won't work - so example
31904 // of user hitting tab quickly (more quickly than renderers getting created) won't work
31905 var cellEditorAsync = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["missing"])(this.cellEditor);
31906 if (cellEditorAsync && params.cellStartedEdit) {
31907 this.cellCtrl.focusCell(true);
31908 }
31909 };
31910 CellComp.prototype.insertValueWithoutCellRenderer = function (valueToDisplay) {
31911 var eParent = this.getParentOfValue();
31912 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["clearElement"])(eParent);
31913 var escapedValue = valueToDisplay != null ? Object(_utils_string__WEBPACK_IMPORTED_MODULE_3__["escapeString"])(valueToDisplay) : null;
31914 if (escapedValue != null) {
31915 eParent.innerHTML = escapedValue;
31916 }
31917 };
31918 CellComp.prototype.destroyEditorAndRenderer = function () {
31919 this.destroyRenderer();
31920 this.destroyEditor();
31921 };
31922 CellComp.prototype.destroyRenderer = function () {
31923 var context = this.beans.context;
31924 this.cellRenderer = context.destroyBean(this.cellRenderer);
31925 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.cellRendererGui);
31926 this.cellRendererGui = null;
31927 this.rendererVersion++;
31928 };
31929 CellComp.prototype.destroyEditor = function () {
31930 var context = this.beans.context;
31931 if (this.hideEditorPopup) {
31932 this.hideEditorPopup();
31933 }
31934 this.hideEditorPopup = undefined;
31935 this.cellEditor = context.destroyBean(this.cellEditor);
31936 this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);
31937 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.cellEditorGui);
31938 this.cellEditorGui = null;
31939 this.editorVersion++;
31940 };
31941 CellComp.prototype.refreshCellRenderer = function (compClassAndParams) {
31942 if (this.cellRenderer == null || this.cellRenderer.refresh == null) {
31943 return false;
31944 }
31945 // if different Cell Renderer configured this time (eg user is using selector, and
31946 // returns different component) then don't refresh, force recreate of Cell Renderer
31947 if (this.cellRendererClass !== compClassAndParams.componentClass) {
31948 return false;
31949 }
31950 // take any custom params off of the user
31951 var result = this.cellRenderer.refresh(compClassAndParams.params);
31952 // NOTE on undefined: previous version of the cellRenderer.refresh() interface
31953 // returned nothing, if the method existed, we assumed it refreshed. so for
31954 // backwards compatibility, we assume if method exists and returns nothing,
31955 // that it was successful.
31956 return result === true || result === undefined;
31957 };
31958 CellComp.prototype.createCellRendererInstance = function (compDetails) {
31959 var _this = this;
31960 // never use task service if angularCompileRows=true, as that assume the cell renderers
31961 // are finished when the row is created. also we never use it if animation frame service
31962 // is turned off.
31963 // and lastly we never use it if doing auto-height, as the auto-height service checks the
31964 // row height directly after the cell is created, it doesn't wait around for the tasks to complete
31965 var angularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();
31966 var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();
31967 var useTaskService = !angularCompileRows && !suppressAnimationFrame;
31968 var displayComponentVersionCopy = this.rendererVersion;
31969 var componentClass = compDetails.componentClass;
31970 var createCellRendererFunc = function () {
31971 var staleTask = _this.rendererVersion !== displayComponentVersionCopy || !_this.isAlive();
31972 if (staleTask) {
31973 return;
31974 }
31975 // this can return null in the event that the user has switched from a renderer component to nothing, for example
31976 // when using a cellRendererSelect to return a component or null depending on row data etc
31977 var componentPromise = compDetails.newAgStackInstance();
31978 var callback = _this.afterCellRendererCreated.bind(_this, displayComponentVersionCopy, componentClass);
31979 if (componentPromise) {
31980 componentPromise.then(callback);
31981 }
31982 };
31983 // we only use task service when rendering for first time, which means it is not used when doing edits.
31984 // if we changed this (always use task service) would make sense, however it would break tests, possibly
31985 // test of users.
31986 if (useTaskService && this.firstRender) {
31987 this.beans.animationFrameService.createTask(createCellRendererFunc, this.rowNode.rowIndex, 'createTasksP2');
31988 }
31989 else {
31990 createCellRendererFunc();
31991 }
31992 };
31993 CellComp.prototype.getCtrl = function () {
31994 return this.cellCtrl;
31995 };
31996 CellComp.prototype.getRowCtrl = function () {
31997 return this.rowCtrl;
31998 };
31999 CellComp.prototype.getCellRenderer = function () {
32000 return this.cellRenderer;
32001 };
32002 CellComp.prototype.getCellEditor = function () {
32003 return this.cellEditor;
32004 };
32005 CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRendererClass, cellRenderer) {
32006 var staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;
32007 if (staleTask) {
32008 this.beans.context.destroyBean(cellRenderer);
32009 return;
32010 }
32011 this.cellRenderer = cellRenderer;
32012 this.cellRendererClass = cellRendererClass;
32013 this.cellRendererGui = this.cellRenderer.getGui();
32014 if (this.cellRendererGui != null) {
32015 var eParent = this.getParentOfValue();
32016 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["clearElement"])(eParent);
32017 eParent.appendChild(this.cellRendererGui);
32018 }
32019 };
32020 CellComp.prototype.afterCellEditorCreated = function (requestVersion, cellEditor, params, popup, position) {
32021 // if editingCell=false, means user cancelled the editor before component was ready.
32022 // if versionMismatch, then user cancelled the edit, then started the edit again, and this
32023 // is the first editor which is now stale.
32024 var staleComp = requestVersion !== this.editorVersion;
32025 if (staleComp) {
32026 this.beans.context.destroyBean(cellEditor);
32027 return;
32028 }
32029 var editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();
32030 if (editingCancelledByUserComp) {
32031 this.beans.context.destroyBean(cellEditor);
32032 this.cellCtrl.stopEditing();
32033 return;
32034 }
32035 if (!cellEditor.getGui) {
32036 console.warn("AG Grid: cellEditor for column " + this.column.getId() + " is missing getGui() method");
32037 this.beans.context.destroyBean(cellEditor);
32038 return;
32039 }
32040 this.cellEditor = cellEditor;
32041 this.cellEditorGui = cellEditor.getGui();
32042 var cellEditorInPopup = popup || (cellEditor.isPopup !== undefined && cellEditor.isPopup());
32043 if (cellEditorInPopup) {
32044 if (!popup) {
32045 this.cellCtrl.hackSayEditingInPopup();
32046 }
32047 this.addPopupCellEditor(params, position);
32048 }
32049 else {
32050 this.addInCellEditor();
32051 }
32052 if (cellEditor.afterGuiAttached) {
32053 cellEditor.afterGuiAttached();
32054 }
32055 };
32056 CellComp.prototype.addInCellEditor = function () {
32057 var eGui = this.getGui();
32058 // if focus is inside the cell, we move focus to the cell itself
32059 // before removing it's contents, otherwise errors could be thrown.
32060 var eDocument = this.beans.gridOptionsWrapper.getDocument();
32061 if (eGui.contains(eDocument.activeElement)) {
32062 eGui.focus();
32063 }
32064 this.destroyRenderer();
32065 this.refreshWrapper(true);
32066 this.clearParentOfValue();
32067 if (this.cellEditorGui) {
32068 var eParent = this.getParentOfValue();
32069 eParent.appendChild(this.cellEditorGui);
32070 }
32071 };
32072 CellComp.prototype.addPopupCellEditor = function (params, position) {
32073 var _this = this;
32074 if (this.beans.gridOptionsWrapper.isFullRowEdit()) {
32075 console.warn('AG Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +
32076 '- either turn off fullRowEdit, or stop using popup editors.');
32077 }
32078 var cellEditor = this.cellEditor;
32079 // if a popup, then we wrap in a popup editor and return the popup
32080 this.cellEditorPopupWrapper = this.beans.context.createBean(new _cellEditors_popupEditorWrapper__WEBPACK_IMPORTED_MODULE_1__["PopupEditorWrapper"](params));
32081 var ePopupGui = this.cellEditorPopupWrapper.getGui();
32082 if (this.cellEditorGui) {
32083 ePopupGui.appendChild(this.cellEditorGui);
32084 }
32085 var popupService = this.beans.popupService;
32086 var useModelPopup = this.beans.gridOptionsWrapper.isStopEditingWhenCellsLoseFocus();
32087 // see if position provided by colDef, if not then check old way of method on cellComp
32088 var positionToUse = position != null ? position : cellEditor.getPopupPosition ? cellEditor.getPopupPosition() : 'over';
32089 var positionParams = {
32090 column: this.column,
32091 rowNode: this.rowNode,
32092 type: 'popupCellEditor',
32093 eventSource: this.getGui(),
32094 ePopup: ePopupGui,
32095 keepWithinBounds: true
32096 };
32097 var positionCallback = positionToUse === 'under' ?
32098 popupService.positionPopupUnderComponent.bind(popupService, positionParams)
32099 : popupService.positionPopupOverComponent.bind(popupService, positionParams);
32100 var translate = this.beans.gridOptionsWrapper.getLocaleTextFunc();
32101 var addPopupRes = popupService.addPopup({
32102 modal: useModelPopup,
32103 eChild: ePopupGui,
32104 closeOnEsc: true,
32105 closedCallback: function () { _this.cellCtrl.onPopupEditorClosed(); },
32106 anchorToElement: this.getGui(),
32107 positionCallback: positionCallback,
32108 ariaLabel: translate('ariaLabelCellEditor', 'Cell Editor')
32109 });
32110 if (addPopupRes) {
32111 this.hideEditorPopup = addPopupRes.hideFunc;
32112 }
32113 };
32114 CellComp.prototype.detach = function () {
32115 this.eRow.removeChild(this.getGui());
32116 };
32117 // if the row is also getting destroyed, then we don't need to remove from dom,
32118 // as the row will also get removed, so no need to take out the cells from the row
32119 // if the row is going (removing is an expensive operation, so only need to remove
32120 // the top part)
32121 //
32122 // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.
32123 CellComp.prototype.destroy = function () {
32124 this.cellCtrl.stopEditing();
32125 this.destroyEditorAndRenderer();
32126 this.removeControls();
32127 _super.prototype.destroy.call(this);
32128 };
32129 CellComp.prototype.clearParentOfValue = function () {
32130 var eGui = this.getGui();
32131 // if focus is inside the cell, we move focus to the cell itself
32132 // before removing it's contents, otherwise errors could be thrown.
32133 var eDocument = this.beans.gridOptionsWrapper.getDocument();
32134 if (eGui.contains(eDocument.activeElement)) {
32135 eGui.focus({
32136 preventScroll: true
32137 });
32138 }
32139 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["clearElement"])(this.getParentOfValue());
32140 };
32141 return CellComp;
32142}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
32143
32144
32145
32146
32147
32148/***/ }),
32149/* 143 */
32150/***/ (function(module, __webpack_exports__, __webpack_require__) {
32151
32152"use strict";
32153__webpack_require__.r(__webpack_exports__);
32154/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupEditorWrapper", function() { return PopupEditorWrapper; });
32155/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85);
32156/* harmony import */ var _utils_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49);
32157/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
32158/**
32159 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32160 * @version v27.3.0
32161 * @link https://www.ag-grid.com/
32162 * @license MIT
32163 */
32164var __extends = (undefined && undefined.__extends) || (function () {
32165 var extendStatics = function (d, b) {
32166 extendStatics = Object.setPrototypeOf ||
32167 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
32168 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
32169 return extendStatics(d, b);
32170 };
32171 return function (d, b) {
32172 extendStatics(d, b);
32173 function __() { this.constructor = d; }
32174 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
32175 };
32176})();
32177var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32178 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32179 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32180 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;
32181 return c > 3 && r && Object.defineProperty(target, key, r), r;
32182};
32183
32184
32185
32186var PopupEditorWrapper = /** @class */ (function (_super) {
32187 __extends(PopupEditorWrapper, _super);
32188 function PopupEditorWrapper(params) {
32189 var _this = _super.call(this, /* html */ "<div class=\"ag-popup-editor\" tabindex=\"-1\"/>") || this;
32190 _this.params = params;
32191 return _this;
32192 }
32193 PopupEditorWrapper.prototype.postConstruct = function () {
32194 this.gridOptionsWrapper.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);
32195 this.addKeyDownListener();
32196 };
32197 PopupEditorWrapper.prototype.addKeyDownListener = function () {
32198 var _this = this;
32199 var eGui = this.getGui();
32200 var params = this.params;
32201 var listener = function (event) {
32202 if (!Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_1__["isUserSuppressingKeyboardEvent"])(_this.gridOptionsWrapper, event, params.node, params.column, true)) {
32203 params.onKeyDown(event);
32204 }
32205 };
32206 this.addManagedListener(eGui, 'keydown', listener);
32207 };
32208 PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';
32209 __decorate([
32210 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
32211 ], PopupEditorWrapper.prototype, "postConstruct", null);
32212 return PopupEditorWrapper;
32213}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__["PopupComponent"]));
32214
32215
32216
32217
32218
32219/***/ }),
32220/* 144 */
32221/***/ (function(module, __webpack_exports__, __webpack_require__) {
32222
32223"use strict";
32224__webpack_require__.r(__webpack_exports__);
32225/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BodyDropPivotTarget", function() { return BodyDropPivotTarget; });
32226/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97);
32227/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
32228/**
32229 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32230 * @version v27.3.0
32231 * @link https://www.ag-grid.com/
32232 * @license MIT
32233 */
32234var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32235 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32236 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32237 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;
32238 return c > 3 && r && Object.defineProperty(target, key, r), r;
32239};
32240
32241
32242var BodyDropPivotTarget = /** @class */ (function () {
32243 function BodyDropPivotTarget(pinned) {
32244 this.columnsToAggregate = [];
32245 this.columnsToGroup = [];
32246 this.columnsToPivot = [];
32247 this.pinned = pinned;
32248 }
32249 /** Callback for when drag enters */
32250 BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {
32251 var _this = this;
32252 this.clearColumnsList();
32253 // in pivot mode, we don't accept any drops if functions are read only
32254 if (this.gridOptionsWrapper.isFunctionsReadOnly()) {
32255 return;
32256 }
32257 var dragColumns = draggingEvent.dragItem.columns;
32258 if (!dragColumns) {
32259 return;
32260 }
32261 dragColumns.forEach(function (column) {
32262 // we don't allow adding secondary columns
32263 if (!column.isPrimary()) {
32264 return;
32265 }
32266 if (column.isAnyFunctionActive()) {
32267 return;
32268 }
32269 if (column.isAllowValue()) {
32270 _this.columnsToAggregate.push(column);
32271 }
32272 else if (column.isAllowRowGroup()) {
32273 _this.columnsToGroup.push(column);
32274 }
32275 else if (column.isAllowPivot()) {
32276 _this.columnsToPivot.push(column);
32277 }
32278 });
32279 };
32280 BodyDropPivotTarget.prototype.getIconName = function () {
32281 var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;
32282 if (totalColumns > 0) {
32283 return this.pinned ? _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_PINNED : _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_MOVE;
32284 }
32285 return null;
32286 };
32287 /** Callback for when drag leaves */
32288 BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {
32289 // if we are taking columns out of the center, then we remove them from the report
32290 this.clearColumnsList();
32291 };
32292 BodyDropPivotTarget.prototype.clearColumnsList = function () {
32293 this.columnsToAggregate.length = 0;
32294 this.columnsToGroup.length = 0;
32295 this.columnsToPivot.length = 0;
32296 };
32297 /** Callback for when dragging */
32298 BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {
32299 };
32300 /** Callback for when drag stops */
32301 BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {
32302 if (this.columnsToAggregate.length > 0) {
32303 this.columnModel.addValueColumns(this.columnsToAggregate, "toolPanelDragAndDrop");
32304 }
32305 if (this.columnsToGroup.length > 0) {
32306 this.columnModel.addRowGroupColumns(this.columnsToGroup, "toolPanelDragAndDrop");
32307 }
32308 if (this.columnsToPivot.length > 0) {
32309 this.columnModel.addPivotColumns(this.columnsToPivot, "toolPanelDragAndDrop");
32310 }
32311 };
32312 __decorate([
32313 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
32314 ], BodyDropPivotTarget.prototype, "columnModel", void 0);
32315 __decorate([
32316 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
32317 ], BodyDropPivotTarget.prototype, "gridOptionsWrapper", void 0);
32318 return BodyDropPivotTarget;
32319}());
32320
32321
32322
32323
32324
32325/***/ }),
32326/* 145 */
32327/***/ (function(module, __webpack_exports__, __webpack_require__) {
32328
32329"use strict";
32330__webpack_require__.r(__webpack_exports__);
32331/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BodyDropTarget", function() { return BodyDropTarget; });
32332/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97);
32333/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
32334/* harmony import */ var _moveColumnFeature__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(146);
32335/* harmony import */ var _bodyDropPivotTarget__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(144);
32336/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
32337/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
32338/**
32339 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32340 * @version v27.3.0
32341 * @link https://www.ag-grid.com/
32342 * @license MIT
32343 */
32344var __extends = (undefined && undefined.__extends) || (function () {
32345 var extendStatics = function (d, b) {
32346 extendStatics = Object.setPrototypeOf ||
32347 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
32348 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
32349 return extendStatics(d, b);
32350 };
32351 return function (d, b) {
32352 extendStatics(d, b);
32353 function __() { this.constructor = d; }
32354 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
32355 };
32356})();
32357var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32358 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32359 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32360 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;
32361 return c > 3 && r && Object.defineProperty(target, key, r), r;
32362};
32363
32364
32365
32366
32367
32368
32369var BodyDropTarget = /** @class */ (function (_super) {
32370 __extends(BodyDropTarget, _super);
32371 function BodyDropTarget(pinned, eContainer) {
32372 var _this = _super.call(this) || this;
32373 _this.pinned = pinned;
32374 _this.eContainer = eContainer;
32375 return _this;
32376 }
32377 BodyDropTarget.prototype.postConstruct = function () {
32378 var _this = this;
32379 this.ctrlsService.whenReady(function (p) {
32380 switch (_this.pinned) {
32381 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_LEFT:
32382 _this.eSecondaryContainers = [
32383 [p.gridBodyCtrl.getBodyViewportElement(), p.leftRowContainerCtrl.getContainerElement()],
32384 [p.bottomLeftRowContainerCtrl.getContainerElement()],
32385 [p.topLeftRowContainerCtrl.getContainerElement()]
32386 ];
32387 break;
32388 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_RIGHT:
32389 _this.eSecondaryContainers = [
32390 [p.gridBodyCtrl.getBodyViewportElement(), p.rightRowContainerCtrl.getContainerElement()],
32391 [p.bottomRightRowContainerCtrl.getContainerElement()],
32392 [p.topRightRowContainerCtrl.getContainerElement()]
32393 ];
32394 break;
32395 default:
32396 _this.eSecondaryContainers = [
32397 [p.gridBodyCtrl.getBodyViewportElement(), p.centerRowContainerCtrl.getViewportElement()],
32398 [p.bottomCenterRowContainerCtrl.getViewportElement()],
32399 [p.topCenterRowContainerCtrl.getViewportElement()]
32400 ];
32401 break;
32402 }
32403 });
32404 };
32405 BodyDropTarget.prototype.isInterestedIn = function (type) {
32406 return type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].HeaderCell ||
32407 (type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].ToolPanel && this.gridOptionsWrapper.isAllowDragFromColumnsToolPanel());
32408 };
32409 BodyDropTarget.prototype.getSecondaryContainers = function () {
32410 return this.eSecondaryContainers;
32411 };
32412 BodyDropTarget.prototype.getContainer = function () {
32413 return this.eContainer;
32414 };
32415 BodyDropTarget.prototype.init = function () {
32416 this.moveColumnFeature = this.createManagedBean(new _moveColumnFeature__WEBPACK_IMPORTED_MODULE_2__["MoveColumnFeature"](this.pinned, this.eContainer));
32417 this.bodyDropPivotTarget = this.createManagedBean(new _bodyDropPivotTarget__WEBPACK_IMPORTED_MODULE_3__["BodyDropPivotTarget"](this.pinned));
32418 this.dragAndDropService.addDropTarget(this);
32419 };
32420 BodyDropTarget.prototype.getIconName = function () {
32421 return this.currentDropListener.getIconName();
32422 };
32423 // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel
32424 // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when
32425 // dropped into the grid's body.
32426 BodyDropTarget.prototype.isDropColumnInPivotMode = function (draggingEvent) {
32427 // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's
32428 // a standard column move, however if it came from the toolpanel, then we are introducing
32429 // dimensions or values to the grid
32430 return this.columnModel.isPivotMode() && draggingEvent.dragSource.type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].ToolPanel;
32431 };
32432 BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {
32433 // we pick the drop listener depending on whether we are in pivot mode are not. if we are
32434 // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise
32435 // we change visibility state and position.
32436 this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;
32437 this.currentDropListener.onDragEnter(draggingEvent);
32438 };
32439 BodyDropTarget.prototype.onDragLeave = function (params) {
32440 this.currentDropListener.onDragLeave(params);
32441 };
32442 BodyDropTarget.prototype.onDragging = function (params) {
32443 this.currentDropListener.onDragging(params);
32444 };
32445 BodyDropTarget.prototype.onDragStop = function (params) {
32446 this.currentDropListener.onDragStop(params);
32447 };
32448 __decorate([
32449 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
32450 ], BodyDropTarget.prototype, "dragAndDropService", void 0);
32451 __decorate([
32452 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
32453 ], BodyDropTarget.prototype, "columnModel", void 0);
32454 __decorate([
32455 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
32456 ], BodyDropTarget.prototype, "ctrlsService", void 0);
32457 __decorate([
32458 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
32459 ], BodyDropTarget.prototype, "postConstruct", null);
32460 __decorate([
32461 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
32462 ], BodyDropTarget.prototype, "init", null);
32463 return BodyDropTarget;
32464}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
32465
32466
32467
32468
32469
32470/***/ }),
32471/* 146 */
32472/***/ (function(module, __webpack_exports__, __webpack_require__) {
32473
32474"use strict";
32475__webpack_require__.r(__webpack_exports__);
32476/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MoveColumnFeature", function() { return MoveColumnFeature; });
32477/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
32478/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
32479/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97);
32480/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
32481/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
32482/**
32483 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32484 * @version v27.3.0
32485 * @link https://www.ag-grid.com/
32486 * @license MIT
32487 */
32488var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32489 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32490 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32491 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;
32492 return c > 3 && r && Object.defineProperty(target, key, r), r;
32493};
32494
32495
32496
32497
32498
32499var MoveColumnFeature = /** @class */ (function () {
32500 function MoveColumnFeature(pinned, eContainer) {
32501 this.needToMoveLeft = false;
32502 this.needToMoveRight = false;
32503 this.pinned = pinned;
32504 this.eContainer = eContainer;
32505 this.centerContainer = !Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(pinned);
32506 }
32507 MoveColumnFeature.prototype.init = function () {
32508 var _this = this;
32509 this.ctrlsService.whenReady(function () {
32510 _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
32511 });
32512 };
32513 MoveColumnFeature.prototype.getIconName = function () {
32514 return this.pinned ? _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_PINNED : _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_MOVE;
32515 };
32516 MoveColumnFeature.prototype.onDragEnter = function (draggingEvent) {
32517 // we do dummy drag, so make sure column appears in the right location when first placed
32518 var columns = draggingEvent.dragItem.columns;
32519 var dragCameFromToolPanel = draggingEvent.dragSource.type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragSourceType"].ToolPanel;
32520 if (dragCameFromToolPanel) {
32521 // the if statement doesn't work if drag leaves grid, then enters again
32522 this.setColumnsVisible(columns, true, "uiColumnDragged");
32523 }
32524 else {
32525 // restore previous state of visible columns upon re-entering. this means if the user drags
32526 // a group out, and then drags the group back in, only columns that were originally visible
32527 // will be visible again. otherwise a group with three columns (but only two visible) could
32528 // be dragged out, then when it's dragged in again, all three are visible. this stops that.
32529 var visibleState_1 = draggingEvent.dragItem.visibleState;
32530 var visibleColumns = (columns || []).filter(function (column) { return visibleState_1[column.getId()]; });
32531 this.setColumnsVisible(visibleColumns, true, "uiColumnDragged");
32532 }
32533 this.setColumnsPinned(columns, this.pinned, "uiColumnDragged");
32534 this.onDragging(draggingEvent, true);
32535 };
32536 MoveColumnFeature.prototype.onDragLeave = function (draggingEvent) {
32537 var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;
32538 if (hideColumnOnExit) {
32539 var dragItem = draggingEvent.dragSource.getDragItem();
32540 var columns = dragItem.columns;
32541 this.setColumnsVisible(columns, false, "uiColumnDragged");
32542 }
32543 this.ensureIntervalCleared();
32544 };
32545 MoveColumnFeature.prototype.setColumnsVisible = function (columns, visible, source) {
32546 if (source === void 0) { source = "api"; }
32547 if (columns) {
32548 var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });
32549 this.columnModel.setColumnsVisible(allowedCols, visible, source);
32550 }
32551 };
32552 MoveColumnFeature.prototype.setColumnsPinned = function (columns, pinned, source) {
32553 if (source === void 0) { source = "api"; }
32554 if (columns) {
32555 var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });
32556 this.columnModel.setColumnsPinned(allowedCols, pinned, source);
32557 }
32558 };
32559 MoveColumnFeature.prototype.onDragStop = function () {
32560 this.ensureIntervalCleared();
32561 };
32562 MoveColumnFeature.prototype.normaliseX = function (x) {
32563 // flip the coordinate if doing RTL
32564 if (this.gridOptionsWrapper.isEnableRtl()) {
32565 var clientWidth = this.eContainer.clientWidth;
32566 x = clientWidth - x;
32567 }
32568 // adjust for scroll only if centre container (the pinned containers don't scroll)
32569 if (this.centerContainer) {
32570 x += this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();
32571 }
32572 return x;
32573 };
32574 MoveColumnFeature.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {
32575 if (this.centerContainer) {
32576 // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)
32577 // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen
32578 var firstVisiblePixel = this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();
32579 var lastVisiblePixel = firstVisiblePixel + this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();
32580 if (this.gridOptionsWrapper.isEnableRtl()) {
32581 this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);
32582 this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);
32583 }
32584 else {
32585 this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);
32586 this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);
32587 }
32588 if (this.needToMoveLeft || this.needToMoveRight) {
32589 this.ensureIntervalStarted();
32590 }
32591 else {
32592 this.ensureIntervalCleared();
32593 }
32594 }
32595 };
32596 MoveColumnFeature.prototype.onDragging = function (draggingEvent, fromEnter) {
32597 var _this = this;
32598 if (fromEnter === void 0) { fromEnter = false; }
32599 this.lastDraggingEvent = draggingEvent;
32600 // if moving up or down (ie not left or right) then do nothing
32601 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(draggingEvent.hDirection)) {
32602 return;
32603 }
32604 var mouseXNormalised = this.normaliseX(draggingEvent.x);
32605 // if the user is dragging into the panel, ie coming from the side panel into the main grid,
32606 // we don't want to scroll the grid this time, it would appear like the table is jumping
32607 // each time a column is dragged in.
32608 if (!fromEnter) {
32609 this.checkCenterForScrolling(mouseXNormalised);
32610 }
32611 var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);
32612 var dragSourceType = draggingEvent.dragSource.type;
32613 var columnsToMove = draggingEvent.dragSource.getDragItem().columns;
32614 columnsToMove = columnsToMove.filter(function (col) {
32615 if (col.getColDef().lockPinned) {
32616 // if locked return true only if both col and container are same pin type.
32617 // double equals (==) here on purpose so that null==undefined is true (for not pinned options)
32618 return col.getPinned() == _this.pinned;
32619 }
32620 // if not pin locked, then always allowed to be in this container
32621 return true;
32622 });
32623 this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, mouseXNormalised, fromEnter);
32624 };
32625 MoveColumnFeature.prototype.normaliseDirection = function (hDirection) {
32626 if (this.gridOptionsWrapper.isEnableRtl()) {
32627 switch (hDirection) {
32628 case _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Left: return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Right;
32629 case _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Right: return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Left;
32630 default: console.error("AG Grid: Unknown direction " + hDirection);
32631 }
32632 }
32633 else {
32634 return hDirection;
32635 }
32636 };
32637 // returns the index of the first column in the list ONLY if the cols are all beside
32638 // each other. if the cols are not beside each other, then returns null
32639 MoveColumnFeature.prototype.calculateOldIndex = function (movingCols) {
32640 var gridCols = this.columnModel.getAllGridColumns();
32641 var indexes = Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["sortNumerically"])(movingCols.map(function (col) { return gridCols.indexOf(col); }));
32642 var firstIndex = indexes[0];
32643 var lastIndex = Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(indexes);
32644 var spread = lastIndex - firstIndex;
32645 var gapsExist = spread !== indexes.length - 1;
32646 return gapsExist ? null : firstIndex;
32647 };
32648 MoveColumnFeature.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, mouseX, fromEnter) {
32649 var draggingLeft = hDirection === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Left;
32650 var draggingRight = hDirection === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Right;
32651 // it is important to sort the moving columns as they are in grid columns, as the list of moving columns
32652 // could themselves be part of 'married children' groups, which means we need to maintain the order within
32653 // the moving list.
32654 var allMovingColumnsOrdered = allMovingColumns.slice();
32655 this.columnModel.sortColumnsLikeGridColumns(allMovingColumnsOrdered);
32656 var validMoves = this.calculateValidMoves(allMovingColumnsOrdered, draggingRight, mouseX);
32657 // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move
32658 // (ie left or right) to the mouse direction. however
32659 var oldIndex = this.calculateOldIndex(allMovingColumnsOrdered);
32660 if (validMoves.length === 0) {
32661 return;
32662 }
32663 var firstValidMove = validMoves[0];
32664 // the two check below stop an error when the user grabs a group my a middle column, then
32665 // it is possible the mouse pointer is to the right of a column while been dragged left.
32666 // so we need to make sure that the mouse pointer is actually left of the left most column
32667 // if moving left, and right of the right most column if moving right
32668 // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from
32669 // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should
32670 // place the column to the RHS even if the mouse is moving left and the column is already on
32671 // the LHS. otherwise we stick to the rule described above.
32672 var constrainDirection = oldIndex !== null && !fromEnter;
32673 // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag
32674 if (dragSourceType == _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragSourceType"].HeaderCell) {
32675 constrainDirection = oldIndex !== null;
32676 }
32677 if (constrainDirection) {
32678 // only allow left drag if this column is moving left
32679 if (draggingLeft && firstValidMove >= oldIndex) {
32680 return;
32681 }
32682 // only allow right drag if this column is moving right
32683 if (draggingRight && firstValidMove <= oldIndex) {
32684 return;
32685 }
32686 }
32687 for (var i = 0; i < validMoves.length; i++) {
32688 var move = validMoves[i];
32689 if (!this.columnModel.doesMovePassRules(allMovingColumnsOrdered, move)) {
32690 continue;
32691 }
32692 this.columnModel.moveColumns(allMovingColumnsOrdered, move, "uiColumnDragged");
32693 // important to return here, so once we do the first valid move, we don't try do any more
32694 return;
32695 }
32696 };
32697 MoveColumnFeature.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {
32698 var isMoveBlocked = this.gridOptionsWrapper.isSuppressMovableColumns() || movingCols.some(function (col) { return col.getColDef().suppressMovable; });
32699 if (isMoveBlocked) {
32700 return [];
32701 }
32702 // this is the list of cols on the screen, so it's these we use when comparing the x mouse position
32703 var allDisplayedCols = this.columnModel.getDisplayedColumns(this.pinned);
32704 // but this list is the list of all cols, when we move a col it's the index within this list that gets used,
32705 // so the result we return has to be and index location for this list
32706 var allGridCols = this.columnModel.getAllGridColumns();
32707 var movingDisplayedCols = allDisplayedCols.filter(function (col) { return Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["includes"])(movingCols, col); });
32708 var otherDisplayedCols = allDisplayedCols.filter(function (col) { return !Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["includes"])(movingCols, col); });
32709 var otherGridCols = allGridCols.filter(function (col) { return !Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["includes"])(movingCols, col); });
32710 // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.
32711 // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving
32712 // col between b and c (so that it is under the mouse position).
32713 var displayIndex = 0;
32714 var availableWidth = mouseX;
32715 // if we are dragging right, then the columns will be to the left of the mouse, so we also want to
32716 // include the width of the moving columns
32717 if (draggingRight) {
32718 var widthOfMovingDisplayedCols_1 = 0;
32719 movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });
32720 availableWidth -= widthOfMovingDisplayedCols_1;
32721 }
32722 if (availableWidth > 0) {
32723 // now count how many of the displayed columns will fit to the left
32724 for (var i = 0; i < otherDisplayedCols.length; i++) {
32725 var col = otherDisplayedCols[i];
32726 availableWidth -= col.getActualWidth();
32727 if (availableWidth < 0) {
32728 break;
32729 }
32730 displayIndex++;
32731 }
32732 // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works
32733 if (draggingRight) {
32734 displayIndex++;
32735 }
32736 }
32737 // the display index is with respect to all the showing columns, however when we move, it's with
32738 // respect to all grid columns, so we need to translate from display index to grid index
32739 var firstValidMove;
32740 if (displayIndex > 0) {
32741 var leftColumn = otherDisplayedCols[displayIndex - 1];
32742 firstValidMove = otherGridCols.indexOf(leftColumn) + 1;
32743 }
32744 else {
32745 firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);
32746 if (firstValidMove === -1) {
32747 firstValidMove = 0;
32748 }
32749 }
32750 var validMoves = [firstValidMove];
32751 var numberComparator = function (a, b) { return a - b; };
32752 // add in other valid moves due to hidden columns and married children. for example, a particular
32753 // move might break a group that has married children (so move isn't valid), however there could
32754 // be hidden columns (not displayed) that we could jump over to make the move valid. because
32755 // they are hidden, user doesn't see any different, however it allows moves that would otherwise
32756 // not work. for example imagine a group with 9 columns and all columns are hidden except the
32757 // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will
32758 // be relative to the not-shown column, however we need to consider the move jumping over all the
32759 // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the
32760 // grid, there would be no way to put a column after it (as the grid would only consider beside the
32761 // visible column, which would fail valid move rules).
32762 if (draggingRight) {
32763 // if dragging right, then we add all the additional moves to the right. so in other words
32764 // if the next move is not valid, find the next move to the right that is valid.
32765 var pointer = firstValidMove + 1;
32766 var lastIndex = allGridCols.length - 1;
32767 while (pointer <= lastIndex) {
32768 validMoves.push(pointer);
32769 pointer++;
32770 }
32771 // adding columns here means the order is now messed up
32772 validMoves.sort(numberComparator);
32773 }
32774 else {
32775 // if dragging left we do the reverse of dragging right, we add in all the valid moves to the
32776 // left. however we also have to consider moves to the right for all hidden columns first.
32777 // (this logic is hard to reason with, it was worked out with trial and error,
32778 // more observation rather than science).
32779 // add moves to the right
32780 var pointer = firstValidMove;
32781 var lastIndex = allGridCols.length - 1;
32782 var displacedCol = allGridCols[pointer];
32783 while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {
32784 pointer++;
32785 validMoves.push(pointer);
32786 displacedCol = allGridCols[pointer];
32787 }
32788 // add moves to the left
32789 pointer = firstValidMove - 1;
32790 var firstDisplayIndex = 0;
32791 while (pointer >= firstDisplayIndex) {
32792 validMoves.push(pointer);
32793 pointer--;
32794 }
32795 // adding columns here means the order is now messed up
32796 validMoves.sort(numberComparator).reverse();
32797 }
32798 return validMoves;
32799 };
32800 // isHidden takes into account visible=false and group=closed, ie it is not displayed
32801 MoveColumnFeature.prototype.isColumnHidden = function (displayedColumns, col) {
32802 return displayedColumns.indexOf(col) < 0;
32803 };
32804 MoveColumnFeature.prototype.ensureIntervalStarted = function () {
32805 if (!this.movingIntervalId) {
32806 this.intervalCount = 0;
32807 this.failedMoveAttempts = 0;
32808 this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);
32809 if (this.needToMoveLeft) {
32810 this.dragAndDropService.setGhostIcon(_dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_LEFT, true);
32811 }
32812 else {
32813 this.dragAndDropService.setGhostIcon(_dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_RIGHT, true);
32814 }
32815 }
32816 };
32817 MoveColumnFeature.prototype.ensureIntervalCleared = function () {
32818 if (this.movingIntervalId) {
32819 window.clearInterval(this.movingIntervalId);
32820 this.movingIntervalId = null;
32821 this.dragAndDropService.setGhostIcon(_dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_MOVE);
32822 }
32823 };
32824 MoveColumnFeature.prototype.moveInterval = function () {
32825 // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow
32826 // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.
32827 var pixelsToMove;
32828 this.intervalCount++;
32829 pixelsToMove = 10 + (this.intervalCount * 5);
32830 if (pixelsToMove > 100) {
32831 pixelsToMove = 100;
32832 }
32833 var pixelsMoved = null;
32834 var scrollFeature = this.gridBodyCon.getScrollFeature();
32835 if (this.needToMoveLeft) {
32836 pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);
32837 }
32838 else if (this.needToMoveRight) {
32839 pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);
32840 }
32841 if (pixelsMoved !== 0) {
32842 this.onDragging(this.lastDraggingEvent);
32843 this.failedMoveAttempts = 0;
32844 }
32845 else {
32846 // we count the failed move attempts. if we fail to move 7 times, then we pin the column.
32847 // this is how we achieve pining by dragging the column to the edge of the grid.
32848 this.failedMoveAttempts++;
32849 var columns = this.lastDraggingEvent.dragItem.columns;
32850 var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });
32851 if (columnsThatCanPin.length > 0) {
32852 this.dragAndDropService.setGhostIcon(_dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_PINNED);
32853 if (this.failedMoveAttempts > 7) {
32854 var pinType = this.needToMoveLeft ? _constants_constants__WEBPACK_IMPORTED_MODULE_1__["Constants"].PINNED_LEFT : _constants_constants__WEBPACK_IMPORTED_MODULE_1__["Constants"].PINNED_RIGHT;
32855 this.setColumnsPinned(columnsThatCanPin, pinType, "uiColumnDragged");
32856 this.dragAndDropService.nudge();
32857 }
32858 }
32859 }
32860 };
32861 __decorate([
32862 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
32863 ], MoveColumnFeature.prototype, "columnModel", void 0);
32864 __decorate([
32865 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('dragAndDropService')
32866 ], MoveColumnFeature.prototype, "dragAndDropService", void 0);
32867 __decorate([
32868 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridOptionsWrapper')
32869 ], MoveColumnFeature.prototype, "gridOptionsWrapper", void 0);
32870 __decorate([
32871 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
32872 ], MoveColumnFeature.prototype, "ctrlsService", void 0);
32873 __decorate([
32874 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
32875 ], MoveColumnFeature.prototype, "init", null);
32876 return MoveColumnFeature;
32877}());
32878
32879
32880
32881
32882
32883/***/ }),
32884/* 147 */
32885/***/ (function(module, __webpack_exports__, __webpack_require__) {
32886
32887"use strict";
32888__webpack_require__.r(__webpack_exports__);
32889/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CssClassApplier", function() { return CssClassApplier; });
32890/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
32891/**
32892 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32893 * @version v27.3.0
32894 * @link https://www.ag-grid.com/
32895 * @license MIT
32896 */
32897var __read = (undefined && undefined.__read) || function (o, n) {
32898 var m = typeof Symbol === "function" && o[Symbol.iterator];
32899 if (!m) return o;
32900 var i = m.call(o), r, ar = [], e;
32901 try {
32902 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
32903 }
32904 catch (error) { e = { error: error }; }
32905 finally {
32906 try {
32907 if (r && !r.done && (m = i["return"])) m.call(i);
32908 }
32909 finally { if (e) throw e.error; }
32910 }
32911 return ar;
32912};
32913var __spread = (undefined && undefined.__spread) || function () {
32914 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
32915 return ar;
32916};
32917
32918var CssClassApplier = /** @class */ (function () {
32919 function CssClassApplier() {
32920 }
32921 CssClassApplier.getHeaderClassesFromColDef = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {
32922 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["missing"])(abstractColDef)) {
32923 return [];
32924 }
32925 return this.getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gridOptionsWrapper, column, columnGroup);
32926 };
32927 CssClassApplier.getToolPanelClassesFromColDef = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {
32928 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["missing"])(abstractColDef)) {
32929 return [];
32930 }
32931 return this.getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gridOptionsWrapper, column, columnGroup);
32932 };
32933 CssClassApplier.getClassParams = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {
32934 return {
32935 // bad naming, as colDef here can be a group or a column,
32936 // however most people won't appreciate the difference,
32937 // so keeping it as colDef to avoid confusion.
32938 colDef: abstractColDef,
32939 column: column,
32940 columnGroup: columnGroup,
32941 api: gridOptionsWrapper.getApi(),
32942 columnApi: gridOptionsWrapper.getColumnApi(),
32943 context: gridOptionsWrapper.getContext()
32944 };
32945 };
32946 CssClassApplier.getColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, gridOptionsWrapper, column, columnGroup) {
32947 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["missing"])(classesOrFunc)) {
32948 return [];
32949 }
32950 var classToUse;
32951 if (typeof classesOrFunc === 'function') {
32952 var params = this.getClassParams(abstractColDef, gridOptionsWrapper, column, columnGroup);
32953 classToUse = classesOrFunc(params);
32954 }
32955 else {
32956 classToUse = classesOrFunc;
32957 }
32958 if (typeof classToUse === 'string') {
32959 return [classToUse];
32960 }
32961 if (Array.isArray(classToUse)) {
32962 return __spread(classToUse);
32963 }
32964 return [];
32965 };
32966 return CssClassApplier;
32967}());
32968
32969
32970
32971
32972
32973/***/ }),
32974/* 148 */
32975/***/ (function(module, __webpack_exports__, __webpack_require__) {
32976
32977"use strict";
32978__webpack_require__.r(__webpack_exports__);
32979/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerComp", function() { return HeaderRowContainerComp; });
32980/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
32981/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
32982/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
32983/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
32984/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36);
32985/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(57);
32986/* harmony import */ var _row_headerRowComp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(149);
32987/* harmony import */ var _headerRowContainerCtrl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(152);
32988/**
32989 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32990 * @version v27.3.0
32991 * @link https://www.ag-grid.com/
32992 * @license MIT
32993 */
32994var __extends = (undefined && undefined.__extends) || (function () {
32995 var extendStatics = function (d, b) {
32996 extendStatics = Object.setPrototypeOf ||
32997 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
32998 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
32999 return extendStatics(d, b);
33000 };
33001 return function (d, b) {
33002 extendStatics(d, b);
33003 function __() { this.constructor = d; }
33004 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33005 };
33006})();
33007var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33008 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33009 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33010 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;
33011 return c > 3 && r && Object.defineProperty(target, key, r), r;
33012};
33013
33014
33015
33016
33017
33018
33019
33020
33021var HeaderRowContainerComp = /** @class */ (function (_super) {
33022 __extends(HeaderRowContainerComp, _super);
33023 function HeaderRowContainerComp(pinned) {
33024 var _this = _super.call(this) || this;
33025 _this.headerRowComps = {};
33026 _this.rowCompsList = [];
33027 _this.pinned = pinned;
33028 return _this;
33029 }
33030 HeaderRowContainerComp.prototype.init = function () {
33031 var _this = this;
33032 this.selectAndSetTemplate();
33033 var compProxy = {
33034 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
33035 setCtrls: function (ctrls) { return _this.setCtrls(ctrls); },
33036 // only gets called for center section
33037 setCenterWidth: function (width) { return _this.eCenterContainer.style.width = width; },
33038 setContainerTransform: function (transform) { return _this.eCenterContainer.style.transform = transform; },
33039 // only gets called for pinned sections
33040 setPinnedContainerWidth: function (width) {
33041 var eGui = _this.getGui();
33042 eGui.style.width = width;
33043 eGui.style.maxWidth = width;
33044 eGui.style.minWidth = width;
33045 }
33046 };
33047 var ctrl = this.createManagedBean(new _headerRowContainerCtrl__WEBPACK_IMPORTED_MODULE_7__["HeaderRowContainerCtrl"](this.pinned));
33048 ctrl.setComp(compProxy, this.getGui());
33049 };
33050 HeaderRowContainerComp.prototype.selectAndSetTemplate = function () {
33051 var pinnedLeft = this.pinned == _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT;
33052 var pinnedRight = this.pinned == _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT;
33053 var template = pinnedLeft ? HeaderRowContainerComp.PINNED_LEFT_TEMPLATE :
33054 pinnedRight ? HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE : HeaderRowContainerComp.CENTER_TEMPLATE;
33055 this.setTemplate(template);
33056 // for left and right, we add rows directly to the root element,
33057 // but for center container we add elements to the child container.
33058 this.eRowContainer = this.eCenterContainer ? this.eCenterContainer : this.getGui();
33059 };
33060 HeaderRowContainerComp.prototype.destroyRowComps = function () {
33061 this.setCtrls([]);
33062 };
33063 HeaderRowContainerComp.prototype.destroyRowComp = function (rowComp) {
33064 this.destroyBean(rowComp);
33065 this.eRowContainer.removeChild(rowComp.getGui());
33066 };
33067 HeaderRowContainerComp.prototype.setCtrls = function (ctrls) {
33068 var _this = this;
33069 var oldRowComps = this.headerRowComps;
33070 this.headerRowComps = {};
33071 this.rowCompsList = [];
33072 var prevGui;
33073 var appendEnsuringDomOrder = function (rowComp) {
33074 var eGui = rowComp.getGui();
33075 var notAlreadyIn = eGui.parentElement != _this.eRowContainer;
33076 if (notAlreadyIn) {
33077 _this.eRowContainer.appendChild(eGui);
33078 }
33079 if (prevGui) {
33080 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["ensureDomOrder"])(_this.eRowContainer, eGui, prevGui);
33081 }
33082 prevGui = eGui;
33083 };
33084 ctrls.forEach(function (ctrl) {
33085 var ctrlId = ctrl.getInstanceId();
33086 var existingComp = oldRowComps[ctrlId];
33087 delete oldRowComps[ctrlId];
33088 var rowComp = existingComp ? existingComp : _this.createBean(new _row_headerRowComp__WEBPACK_IMPORTED_MODULE_6__["HeaderRowComp"](ctrl));
33089 _this.headerRowComps[ctrlId] = rowComp;
33090 _this.rowCompsList.push(rowComp);
33091 appendEnsuringDomOrder(rowComp);
33092 });
33093 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getAllValuesInObject"])(oldRowComps).forEach(function (c) { return _this.destroyRowComp(c); });
33094 };
33095 HeaderRowContainerComp.PINNED_LEFT_TEMPLATE = "<div class=\"ag-pinned-left-header\" role=\"presentation\"/>";
33096 HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE = "<div class=\"ag-pinned-right-header\" role=\"presentation\"/>";
33097 HeaderRowContainerComp.CENTER_TEMPLATE = "<div class=\"ag-header-viewport\" role=\"presentation\">\n <div class=\"ag-header-container\" ref=\"eCenterContainer\" role=\"rowgroup\"></div>\n </div>";
33098 __decorate([
33099 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_5__["RefSelector"])('eCenterContainer')
33100 ], HeaderRowContainerComp.prototype, "eCenterContainer", void 0);
33101 __decorate([
33102 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
33103 ], HeaderRowContainerComp.prototype, "init", null);
33104 __decorate([
33105 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
33106 ], HeaderRowContainerComp.prototype, "destroyRowComps", null);
33107 return HeaderRowContainerComp;
33108}(_widgets_component__WEBPACK_IMPORTED_MODULE_4__["Component"]));
33109
33110
33111
33112
33113
33114/***/ }),
33115/* 149 */
33116/***/ (function(module, __webpack_exports__, __webpack_require__) {
33117
33118"use strict";
33119__webpack_require__.r(__webpack_exports__);
33120/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowType", function() { return HeaderRowType; });
33121/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowComp", function() { return HeaderRowComp; });
33122/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
33123/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
33124/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
33125/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
33126/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36);
33127/* harmony import */ var _cells_column_headerCellComp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(150);
33128/* harmony import */ var _cells_columnGroup_headerGroupCellComp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(151);
33129/* harmony import */ var _cells_floatingFilter_headerFilterCellComp__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(108);
33130/**
33131 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33132 * @version v27.3.0
33133 * @link https://www.ag-grid.com/
33134 * @license MIT
33135 */
33136var __extends = (undefined && undefined.__extends) || (function () {
33137 var extendStatics = function (d, b) {
33138 extendStatics = Object.setPrototypeOf ||
33139 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33140 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33141 return extendStatics(d, b);
33142 };
33143 return function (d, b) {
33144 extendStatics(d, b);
33145 function __() { this.constructor = d; }
33146 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33147 };
33148})();
33149var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33150 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33151 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33152 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;
33153 return c > 3 && r && Object.defineProperty(target, key, r), r;
33154};
33155
33156
33157
33158
33159
33160
33161
33162
33163var HeaderRowType;
33164(function (HeaderRowType) {
33165 HeaderRowType["COLUMN_GROUP"] = "group";
33166 HeaderRowType["COLUMN"] = "column";
33167 HeaderRowType["FLOATING_FILTER"] = "filter";
33168})(HeaderRowType || (HeaderRowType = {}));
33169var HeaderRowComp = /** @class */ (function (_super) {
33170 __extends(HeaderRowComp, _super);
33171 function HeaderRowComp(ctrl) {
33172 var _this = _super.call(this) || this;
33173 _this.headerComps = {};
33174 var extraClass = ctrl.getType() == HeaderRowType.COLUMN_GROUP ? "ag-header-row-column-group" :
33175 ctrl.getType() == HeaderRowType.FLOATING_FILTER ? "ag-header-row-column-filter" : "ag-header-row-column";
33176 _this.setTemplate(/* html */ "<div class=\"ag-header-row " + extraClass + "\" role=\"row\"></div>");
33177 _this.ctrl = ctrl;
33178 return _this;
33179 }
33180 //noinspection JSUnusedLocalSymbols
33181 HeaderRowComp.prototype.init = function () {
33182 var _this = this;
33183 var compProxy = {
33184 setTransform: function (transform) { return _this.getGui().style.transform = transform; },
33185 setHeight: function (height) { return _this.getGui().style.height = height; },
33186 setTop: function (top) { return _this.getGui().style.top = top; },
33187 setHeaderCtrls: function (ctrls) { return _this.setHeaderCtrls(ctrls); },
33188 setWidth: function (width) { return _this.getGui().style.width = width; },
33189 setAriaRowIndex: function (rowIndex) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_1__["setAriaRowIndex"])(_this.getGui(), rowIndex); }
33190 };
33191 this.ctrl.setComp(compProxy);
33192 };
33193 HeaderRowComp.prototype.destroyHeaderCtrls = function () {
33194 this.setHeaderCtrls([]);
33195 };
33196 HeaderRowComp.prototype.setHeaderCtrls = function (ctrls) {
33197 var _this = this;
33198 if (!this.isAlive()) {
33199 return;
33200 }
33201 var oldComps = this.headerComps;
33202 this.headerComps = {};
33203 ctrls.forEach(function (ctrl) {
33204 var id = ctrl.getInstanceId();
33205 var comp = oldComps[id];
33206 delete oldComps[id];
33207 if (comp == null) {
33208 comp = _this.createHeaderComp(ctrl);
33209 _this.getGui().appendChild(comp.getGui());
33210 }
33211 _this.headerComps[id] = comp;
33212 });
33213 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["iterateObject"])(oldComps, function (id, comp) {
33214 _this.getGui().removeChild(comp.getGui());
33215 _this.destroyBean(comp);
33216 });
33217 var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();
33218 if (ensureDomOrder) {
33219 var comps = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getAllValuesInObject"])(this.headerComps);
33220 // ordering the columns by left position orders them in the order they appear on the screen
33221 comps.sort(function (a, b) {
33222 var leftA = a.getCtrl().getColumnGroupChild().getLeft();
33223 var leftB = b.getCtrl().getColumnGroupChild().getLeft();
33224 return leftA - leftB;
33225 });
33226 var elementsInOrder = comps.map(function (c) { return c.getGui(); });
33227 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDomChildOrder"])(this.getGui(), elementsInOrder);
33228 }
33229 };
33230 HeaderRowComp.prototype.createHeaderComp = function (headerCtrl) {
33231 var result;
33232 switch (this.ctrl.getType()) {
33233 case HeaderRowType.COLUMN_GROUP:
33234 result = new _cells_columnGroup_headerGroupCellComp__WEBPACK_IMPORTED_MODULE_6__["HeaderGroupCellComp"](headerCtrl);
33235 break;
33236 case HeaderRowType.FLOATING_FILTER:
33237 result = new _cells_floatingFilter_headerFilterCellComp__WEBPACK_IMPORTED_MODULE_7__["HeaderFilterCellComp"](headerCtrl);
33238 break;
33239 default:
33240 result = new _cells_column_headerCellComp__WEBPACK_IMPORTED_MODULE_5__["HeaderCellComp"](headerCtrl);
33241 break;
33242 }
33243 this.createBean(result);
33244 result.setParentComponent(this);
33245 return result;
33246 };
33247 __decorate([
33248 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
33249 ], HeaderRowComp.prototype, "init", null);
33250 __decorate([
33251 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
33252 ], HeaderRowComp.prototype, "destroyHeaderCtrls", null);
33253 return HeaderRowComp;
33254}(_widgets_component__WEBPACK_IMPORTED_MODULE_4__["Component"]));
33255
33256
33257
33258
33259
33260/***/ }),
33261/* 150 */
33262/***/ (function(module, __webpack_exports__, __webpack_require__) {
33263
33264"use strict";
33265__webpack_require__.r(__webpack_exports__);
33266/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderCellComp", function() { return HeaderCellComp; });
33267/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
33268/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
33269/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
33270/* harmony import */ var _abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(109);
33271/**
33272 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33273 * @version v27.3.0
33274 * @link https://www.ag-grid.com/
33275 * @license MIT
33276 */
33277var __extends = (undefined && undefined.__extends) || (function () {
33278 var extendStatics = function (d, b) {
33279 extendStatics = Object.setPrototypeOf ||
33280 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33281 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33282 return extendStatics(d, b);
33283 };
33284 return function (d, b) {
33285 extendStatics(d, b);
33286 function __() { this.constructor = d; }
33287 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33288 };
33289})();
33290var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33291 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33292 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33293 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;
33294 return c > 3 && r && Object.defineProperty(target, key, r), r;
33295};
33296
33297
33298
33299
33300var HeaderCellComp = /** @class */ (function (_super) {
33301 __extends(HeaderCellComp, _super);
33302 function HeaderCellComp(ctrl) {
33303 var _this = _super.call(this, HeaderCellComp.TEMPLATE, ctrl) || this;
33304 _this.headerCompVersion = 0;
33305 _this.column = ctrl.getColumnGroupChild();
33306 _this.pinned = ctrl.getPinned();
33307 return _this;
33308 }
33309 HeaderCellComp.prototype.postConstruct = function () {
33310 var _this = this;
33311 var eGui = this.getGui();
33312 var setAttribute = function (name, value, element) {
33313 var actualElement = element ? element : eGui;
33314 if (value != null && value != '') {
33315 actualElement.setAttribute(name, value);
33316 }
33317 else {
33318 actualElement.removeAttribute(name);
33319 }
33320 };
33321 var compProxy = {
33322 setWidth: function (width) { return eGui.style.width = width; },
33323 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
33324 setColId: function (id) { return setAttribute('col-id', id); },
33325 setTitle: function (title) { return setAttribute('title', title); },
33326 setAriaDescription: function (label) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_1__["setAriaDescription"])(eGui, label); },
33327 setAriaSort: function (sort) { return sort ? Object(_utils_aria__WEBPACK_IMPORTED_MODULE_1__["setAriaSort"])(eGui, sort) : Object(_utils_aria__WEBPACK_IMPORTED_MODULE_1__["removeAriaSort"])(eGui); },
33328 setUserCompDetails: function (compDetails) { return _this.setUserCompDetails(compDetails); },
33329 getUserCompInstance: function () { return _this.headerComp; }
33330 };
33331 this.ctrl.setComp(compProxy, this.getGui(), this.eResize);
33332 var selectAllGui = this.ctrl.getSelectAllGui();
33333 this.eResize.insertAdjacentElement('afterend', selectAllGui);
33334 };
33335 HeaderCellComp.prototype.destroyHeaderComp = function () {
33336 if (this.headerComp) {
33337 this.getGui().removeChild(this.headerCompGui);
33338 this.headerComp = this.destroyBean(this.headerComp);
33339 this.headerCompGui = undefined;
33340 }
33341 };
33342 HeaderCellComp.prototype.setUserCompDetails = function (compDetails) {
33343 var _this = this;
33344 this.headerCompVersion++;
33345 var versionCopy = this.headerCompVersion;
33346 compDetails.newAgStackInstance().then(function (comp) { return _this.afterCompCreated(versionCopy, comp); });
33347 };
33348 HeaderCellComp.prototype.afterCompCreated = function (version, headerComp) {
33349 if (version != this.headerCompVersion || !this.isAlive()) {
33350 this.destroyBean(headerComp);
33351 return;
33352 }
33353 this.destroyHeaderComp();
33354 this.headerComp = headerComp;
33355 this.headerCompGui = headerComp.getGui();
33356 this.getGui().appendChild(this.headerCompGui);
33357 this.ctrl.setDragSource(this.headerCompGui);
33358 };
33359 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>";
33360 __decorate([
33361 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('eResize')
33362 ], HeaderCellComp.prototype, "eResize", void 0);
33363 __decorate([
33364 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
33365 ], HeaderCellComp.prototype, "postConstruct", null);
33366 __decorate([
33367 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
33368 ], HeaderCellComp.prototype, "destroyHeaderComp", null);
33369 return HeaderCellComp;
33370}(_abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_3__["AbstractHeaderCellComp"]));
33371
33372
33373
33374
33375
33376/***/ }),
33377/* 151 */
33378/***/ (function(module, __webpack_exports__, __webpack_require__) {
33379
33380"use strict";
33381__webpack_require__.r(__webpack_exports__);
33382/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupCellComp", function() { return HeaderGroupCellComp; });
33383/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
33384/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
33385/* harmony import */ var _abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(109);
33386/**
33387 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33388 * @version v27.3.0
33389 * @link https://www.ag-grid.com/
33390 * @license MIT
33391 */
33392var __extends = (undefined && undefined.__extends) || (function () {
33393 var extendStatics = function (d, b) {
33394 extendStatics = Object.setPrototypeOf ||
33395 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33396 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33397 return extendStatics(d, b);
33398 };
33399 return function (d, b) {
33400 extendStatics(d, b);
33401 function __() { this.constructor = d; }
33402 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33403 };
33404})();
33405var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33406 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33407 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33408 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;
33409 return c > 3 && r && Object.defineProperty(target, key, r), r;
33410};
33411
33412
33413
33414var HeaderGroupCellComp = /** @class */ (function (_super) {
33415 __extends(HeaderGroupCellComp, _super);
33416 function HeaderGroupCellComp(ctrl) {
33417 return _super.call(this, HeaderGroupCellComp.TEMPLATE, ctrl) || this;
33418 }
33419 HeaderGroupCellComp.prototype.postConstruct = function () {
33420 var _this = this;
33421 var eGui = this.getGui();
33422 var setAttribute = function (key, value) {
33423 return value != undefined ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);
33424 };
33425 var compProxy = {
33426 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
33427 addOrRemoveResizableCssClass: function (cssClassName, on) { return _this.eResize.classList.toggle(cssClassName, on); },
33428 setWidth: function (width) { return eGui.style.width = width; },
33429 setColId: function (id) { return eGui.setAttribute("col-id", id); },
33430 setAriaExpanded: function (expanded) { return setAttribute('aria-expanded', expanded); },
33431 setTitle: function (title) { return setAttribute("title", title); },
33432 setUserCompDetails: function (details) { return _this.setUserCompDetails(details); }
33433 };
33434 this.ctrl.setComp(compProxy, eGui, this.eResize);
33435 };
33436 HeaderGroupCellComp.prototype.setUserCompDetails = function (details) {
33437 var _this = this;
33438 details.newAgStackInstance().then(function (comp) { return _this.afterHeaderCompCreated(comp); });
33439 };
33440 HeaderGroupCellComp.prototype.afterHeaderCompCreated = function (headerGroupComp) {
33441 var _this = this;
33442 var destroyFunc = function () { return _this.destroyBean(headerGroupComp); };
33443 if (!this.isAlive()) {
33444 destroyFunc();
33445 return;
33446 }
33447 this.getGui().appendChild(headerGroupComp.getGui());
33448 this.addDestroyFunc(destroyFunc);
33449 this.ctrl.setDragSource(headerGroupComp.getGui());
33450 };
33451 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>";
33452 __decorate([
33453 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentFactory')
33454 ], HeaderGroupCellComp.prototype, "userComponentFactory", void 0);
33455 __decorate([
33456 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eResize')
33457 ], HeaderGroupCellComp.prototype, "eResize", void 0);
33458 __decorate([
33459 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
33460 ], HeaderGroupCellComp.prototype, "postConstruct", null);
33461 return HeaderGroupCellComp;
33462}(_abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_2__["AbstractHeaderCellComp"]));
33463
33464
33465
33466
33467
33468/***/ }),
33469/* 152 */
33470/***/ (function(module, __webpack_exports__, __webpack_require__) {
33471
33472"use strict";
33473__webpack_require__.r(__webpack_exports__);
33474/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerCtrl", function() { return HeaderRowContainerCtrl; });
33475/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
33476/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
33477/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
33478/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
33479/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
33480/* harmony import */ var _gridBodyComp_centerWidthFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(136);
33481/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37);
33482/* harmony import */ var _columnDrag_bodyDropTarget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(145);
33483/* harmony import */ var _row_headerRowComp__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(149);
33484/* harmony import */ var _row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(153);
33485/**
33486 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33487 * @version v27.3.0
33488 * @link https://www.ag-grid.com/
33489 * @license MIT
33490 */
33491var __extends = (undefined && undefined.__extends) || (function () {
33492 var extendStatics = function (d, b) {
33493 extendStatics = Object.setPrototypeOf ||
33494 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33495 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33496 return extendStatics(d, b);
33497 };
33498 return function (d, b) {
33499 extendStatics(d, b);
33500 function __() { this.constructor = d; }
33501 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33502 };
33503})();
33504var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33505 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33506 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33507 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;
33508 return c > 3 && r && Object.defineProperty(target, key, r), r;
33509};
33510var __read = (undefined && undefined.__read) || function (o, n) {
33511 var m = typeof Symbol === "function" && o[Symbol.iterator];
33512 if (!m) return o;
33513 var i = m.call(o), r, ar = [], e;
33514 try {
33515 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
33516 }
33517 catch (error) { e = { error: error }; }
33518 finally {
33519 try {
33520 if (r && !r.done && (m = i["return"])) m.call(i);
33521 }
33522 finally { if (e) throw e.error; }
33523 }
33524 return ar;
33525};
33526var __spread = (undefined && undefined.__spread) || function () {
33527 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
33528 return ar;
33529};
33530
33531
33532
33533
33534
33535
33536
33537
33538
33539
33540var HeaderRowContainerCtrl = /** @class */ (function (_super) {
33541 __extends(HeaderRowContainerCtrl, _super);
33542 function HeaderRowContainerCtrl(pinned) {
33543 var _this = _super.call(this) || this;
33544 _this.groupsRowCtrls = [];
33545 _this.pinned = pinned;
33546 return _this;
33547 }
33548 HeaderRowContainerCtrl.prototype.setComp = function (comp, eGui) {
33549 this.comp = comp;
33550 this.setupCenterWidth();
33551 this.setupPinnedWidth();
33552 this.setupDragAndDrop(eGui);
33553 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));
33554 this.ctrlsService.registerHeaderContainer(this, this.pinned);
33555 if (this.columnModel.isReady()) {
33556 this.refresh();
33557 }
33558 };
33559 HeaderRowContainerCtrl.prototype.setupDragAndDrop = function (dropContainer) {
33560 var bodyDropTarget = new _columnDrag_bodyDropTarget__WEBPACK_IMPORTED_MODULE_7__["BodyDropTarget"](this.pinned, dropContainer);
33561 this.createManagedBean(bodyDropTarget);
33562 };
33563 HeaderRowContainerCtrl.prototype.refresh = function (keepColumns) {
33564 var _this = this;
33565 if (keepColumns === void 0) { keepColumns = false; }
33566 var sequence = new _utils__WEBPACK_IMPORTED_MODULE_6__["NumberSequence"]();
33567 var focusedHeaderPosition = this.focusService.getFocusHeaderToUseAfterRefresh();
33568 var refreshColumnGroups = function () {
33569 var groupRowCount = _this.columnModel.getHeaderRowCount() - 1;
33570 _this.groupsRowCtrls = _this.destroyBeans(_this.groupsRowCtrls);
33571 for (var i = 0; i < groupRowCount; i++) {
33572 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));
33573 _this.groupsRowCtrls.push(ctrl);
33574 }
33575 };
33576 var refreshColumns = function () {
33577 var rowIndex = sequence.next();
33578 var needNewInstance = _this.columnsRowCtrl == null || !keepColumns || _this.columnsRowCtrl.getRowIndex() !== rowIndex;
33579 if (needNewInstance) {
33580 _this.destroyBean(_this.columnsRowCtrl);
33581 _this.columnsRowCtrl = _this.createBean(new _row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_9__["HeaderRowCtrl"](rowIndex, _this.pinned, _row_headerRowComp__WEBPACK_IMPORTED_MODULE_8__["HeaderRowType"].COLUMN));
33582 }
33583 };
33584 var refreshFilters = function () {
33585 var includeFloatingFilter = _this.columnModel.hasFloatingFilters();
33586 var destroyPreviousComp = function () {
33587 _this.filtersRowCtrl = _this.destroyBean(_this.filtersRowCtrl);
33588 };
33589 if (!includeFloatingFilter) {
33590 destroyPreviousComp();
33591 return;
33592 }
33593 var rowIndex = sequence.next();
33594 if (_this.filtersRowCtrl) {
33595 var rowIndexMismatch = _this.filtersRowCtrl.getRowIndex() !== rowIndex;
33596 if (!keepColumns || rowIndexMismatch) {
33597 destroyPreviousComp();
33598 }
33599 }
33600 if (!_this.filtersRowCtrl) {
33601 _this.filtersRowCtrl = _this.createBean(new _row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_9__["HeaderRowCtrl"](rowIndex, _this.pinned, _row_headerRowComp__WEBPACK_IMPORTED_MODULE_8__["HeaderRowType"].FLOATING_FILTER));
33602 }
33603 };
33604 refreshColumnGroups();
33605 refreshColumns();
33606 refreshFilters();
33607 var allCtrls = this.getAllCtrls();
33608 this.comp.setCtrls(allCtrls);
33609 this.restoreFocusOnHeader(focusedHeaderPosition);
33610 };
33611 HeaderRowContainerCtrl.prototype.restoreFocusOnHeader = function (position) {
33612 if (position == null || position.column.getPinned() != this.pinned) {
33613 return;
33614 }
33615 this.focusService.focusHeaderPosition({ headerPosition: position });
33616 };
33617 HeaderRowContainerCtrl.prototype.getAllCtrls = function () {
33618 var res = __spread(this.groupsRowCtrls, [this.columnsRowCtrl]);
33619 if (this.filtersRowCtrl) {
33620 res.push(this.filtersRowCtrl);
33621 }
33622 return res;
33623 };
33624 // grid cols have changed - this also means the number of rows in the header can have
33625 // changed. so we remove all the old rows and insert new ones for a complete refresh
33626 HeaderRowContainerCtrl.prototype.onGridColumnsChanged = function () {
33627 this.refresh(true);
33628 };
33629 HeaderRowContainerCtrl.prototype.setupCenterWidth = function () {
33630 var _this = this;
33631 if (this.pinned != null) {
33632 return;
33633 }
33634 this.createManagedBean(new _gridBodyComp_centerWidthFeature__WEBPACK_IMPORTED_MODULE_5__["CenterWidthFeature"](function (width) { return _this.comp.setCenterWidth(width + "px"); }));
33635 };
33636 HeaderRowContainerCtrl.prototype.setHorizontalScroll = function (offset) {
33637 this.comp.setContainerTransform("translateX(" + offset + "px)");
33638 };
33639 HeaderRowContainerCtrl.prototype.setupPinnedWidth = function () {
33640 var _this = this;
33641 if (this.pinned == null) {
33642 return;
33643 }
33644 var pinningLeft = this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT;
33645 var pinningRight = this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT;
33646 var listener = function () {
33647 var width = pinningLeft ? _this.pinnedWidthService.getPinnedLeftWidth() : _this.pinnedWidthService.getPinnedRightWidth();
33648 if (width == null) {
33649 return;
33650 } // can happen at initialisation, width not yet set
33651 var hidden = width == 0;
33652 var isRtl = _this.gridOptionsWrapper.isEnableRtl();
33653 var scrollbarWidth = _this.gridOptionsWrapper.getScrollbarWidth();
33654 // if there is a scroll showing (and taking up space, so Windows, and not iOS)
33655 // in the body, then we add extra space to keep header aligned with the body,
33656 // as body width fits the cols and the scrollbar
33657 var addPaddingForScrollbar = _this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));
33658 var widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;
33659 _this.comp.setPinnedContainerWidth(widthWithPadding + 'px');
33660 _this.comp.addOrRemoveCssClass('ag-hidden', hidden);
33661 };
33662 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);
33663 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);
33664 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, listener);
33665 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_SCROLLBAR_WIDTH_CHANGED, listener);
33666 };
33667 HeaderRowContainerCtrl.prototype.getHeaderCtrlForColumn = function (column) {
33668 if (column instanceof _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"]) {
33669 if (!this.columnsRowCtrl) {
33670 return;
33671 }
33672 return this.columnsRowCtrl.getHeaderCellCtrl(column);
33673 }
33674 if (this.groupsRowCtrls.length === 0) {
33675 return;
33676 }
33677 for (var i = 0; i < this.groupsRowCtrls.length; i++) {
33678 var ctrl = this.groupsRowCtrls[i].getHeaderCellCtrl(column);
33679 if (ctrl) {
33680 return ctrl;
33681 }
33682 }
33683 };
33684 HeaderRowContainerCtrl.prototype.getHtmlElementForColumnHeader = function (column) {
33685 /* tslint:enable */
33686 var cellCtrl = this.getHeaderCtrlForColumn(column);
33687 if (!cellCtrl) {
33688 return null;
33689 }
33690 return cellCtrl.getGui();
33691 };
33692 HeaderRowContainerCtrl.prototype.getRowType = function (rowIndex) {
33693 var allCtrls = this.getAllCtrls();
33694 var ctrl = allCtrls[rowIndex];
33695 return ctrl ? ctrl.getType() : undefined;
33696 };
33697 HeaderRowContainerCtrl.prototype.focusHeader = function (rowIndex, column, event) {
33698 var allCtrls = this.getAllCtrls();
33699 var ctrl = allCtrls[rowIndex];
33700 if (!ctrl) {
33701 return false;
33702 }
33703 return ctrl.focusHeader(column, event);
33704 };
33705 HeaderRowContainerCtrl.prototype.getRowCount = function () {
33706 return this.getAllCtrls().length;
33707 };
33708 __decorate([
33709 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
33710 ], HeaderRowContainerCtrl.prototype, "ctrlsService", void 0);
33711 __decorate([
33712 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('scrollVisibleService')
33713 ], HeaderRowContainerCtrl.prototype, "scrollVisibleService", void 0);
33714 __decorate([
33715 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('pinnedWidthService')
33716 ], HeaderRowContainerCtrl.prototype, "pinnedWidthService", void 0);
33717 __decorate([
33718 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
33719 ], HeaderRowContainerCtrl.prototype, "columnModel", void 0);
33720 __decorate([
33721 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('focusService')
33722 ], HeaderRowContainerCtrl.prototype, "focusService", void 0);
33723 return HeaderRowContainerCtrl;
33724}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
33725
33726
33727
33728
33729
33730/***/ }),
33731/* 153 */
33732/***/ (function(module, __webpack_exports__, __webpack_require__) {
33733
33734"use strict";
33735__webpack_require__.r(__webpack_exports__);
33736/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowCtrl", function() { return HeaderRowCtrl; });
33737/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
33738/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
33739/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
33740/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
33741/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(112);
33742/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43);
33743/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);
33744/* harmony import */ var _cells_floatingFilter_headerFilterCellCtrl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(154);
33745/* harmony import */ var _cells_column_headerCellCtrl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(160);
33746/* harmony import */ var _cells_columnGroup_headerGroupCellCtrl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(164);
33747/* harmony import */ var _headerRowComp__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(149);
33748/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7);
33749/**
33750 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33751 * @version v27.3.0
33752 * @link https://www.ag-grid.com/
33753 * @license MIT
33754 */
33755var __extends = (undefined && undefined.__extends) || (function () {
33756 var extendStatics = function (d, b) {
33757 extendStatics = Object.setPrototypeOf ||
33758 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33759 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33760 return extendStatics(d, b);
33761 };
33762 return function (d, b) {
33763 extendStatics(d, b);
33764 function __() { this.constructor = d; }
33765 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33766 };
33767})();
33768var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33769 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33770 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33771 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;
33772 return c > 3 && r && Object.defineProperty(target, key, r), r;
33773};
33774
33775
33776
33777
33778
33779
33780
33781
33782
33783
33784
33785
33786var instanceIdSequence = 0;
33787var HeaderRowCtrl = /** @class */ (function (_super) {
33788 __extends(HeaderRowCtrl, _super);
33789 function HeaderRowCtrl(rowIndex, pinned, type) {
33790 var _this = _super.call(this) || this;
33791 _this.instanceId = instanceIdSequence++;
33792 _this.headerCellCtrls = {};
33793 _this.rowIndex = rowIndex;
33794 _this.pinned = pinned;
33795 _this.type = type;
33796 return _this;
33797 }
33798 HeaderRowCtrl.prototype.getInstanceId = function () {
33799 return this.instanceId;
33800 };
33801 HeaderRowCtrl.prototype.setComp = function (comp) {
33802 this.comp = comp;
33803 this.onRowHeightChanged();
33804 this.onVirtualColumnsChanged();
33805 this.setWidth();
33806 this.addEventListeners();
33807 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_5__["isBrowserSafari"])()) {
33808 // fix for a Safari rendering bug that caused the header to flicker above chart panels
33809 // as you move the mouse over the header
33810 this.comp.setTransform('translateZ(0)');
33811 }
33812 comp.setAriaRowIndex(this.rowIndex + 1);
33813 };
33814 HeaderRowCtrl.prototype.addEventListeners = function () {
33815 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));
33816 // when print layout changes, it changes what columns are in what section
33817 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_DOM_LAYOUT, this.onDisplayedColumnsChanged.bind(this));
33818 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
33819 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));
33820 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));
33821 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));
33822 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));
33823 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));
33824 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));
33825 };
33826 HeaderRowCtrl.prototype.getHeaderCellCtrl = function (column) {
33827 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_11__["values"])(this.headerCellCtrls).find(function (cellCtrl) { return cellCtrl.getColumnGroupChild() === column; });
33828 };
33829 HeaderRowCtrl.prototype.onDisplayedColumnsChanged = function () {
33830 this.onVirtualColumnsChanged();
33831 this.setWidth();
33832 };
33833 HeaderRowCtrl.prototype.getType = function () {
33834 return this.type;
33835 };
33836 HeaderRowCtrl.prototype.onColumnResized = function () {
33837 this.setWidth();
33838 };
33839 HeaderRowCtrl.prototype.setWidth = function () {
33840 var width = this.getWidthForRow();
33841 this.comp.setWidth(width + "px");
33842 };
33843 HeaderRowCtrl.prototype.getWidthForRow = function () {
33844 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_PRINT;
33845 if (printLayout) {
33846 var pinned = this.pinned != null;
33847 if (pinned) {
33848 return 0;
33849 }
33850 return this.columnModel.getContainerWidth(_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT)
33851 + this.columnModel.getContainerWidth(_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT)
33852 + this.columnModel.getContainerWidth(null);
33853 }
33854 // if not printing, just return the width as normal
33855 return this.columnModel.getContainerWidth(this.pinned);
33856 };
33857 HeaderRowCtrl.prototype.onRowHeightChanged = function () {
33858 var headerRowCount = this.columnModel.getHeaderRowCount();
33859 var sizes = [];
33860 var numberOfFloating = 0;
33861 var groupHeight;
33862 var headerHeight;
33863 if (this.columnModel.hasFloatingFilters()) {
33864 headerRowCount++;
33865 numberOfFloating = 1;
33866 }
33867 if (this.columnModel.isPivotMode()) {
33868 groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();
33869 headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();
33870 }
33871 else {
33872 groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();
33873 headerHeight = this.gridOptionsWrapper.getHeaderHeight();
33874 }
33875 var numberOfNonGroups = 1 + numberOfFloating;
33876 var numberOfGroups = headerRowCount - numberOfNonGroups;
33877 for (var i = 0; i < numberOfGroups; i++) {
33878 sizes.push(groupHeight);
33879 }
33880 sizes.push(headerHeight);
33881 for (var i = 0; i < numberOfFloating; i++) {
33882 sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());
33883 }
33884 var rowHeight = 0;
33885 for (var i = 0; i < this.rowIndex; i++) {
33886 rowHeight += sizes[i];
33887 }
33888 this.comp.setTop(rowHeight + 'px');
33889 this.comp.setHeight(sizes[this.rowIndex] + 'px');
33890 };
33891 HeaderRowCtrl.prototype.getPinned = function () {
33892 return this.pinned;
33893 };
33894 HeaderRowCtrl.prototype.getRowIndex = function () {
33895 return this.rowIndex;
33896 };
33897 HeaderRowCtrl.prototype.onVirtualColumnsChanged = function () {
33898 var _this = this;
33899 var oldCtrls = this.headerCellCtrls;
33900 this.headerCellCtrls = {};
33901 var columns = this.getColumnsInViewport();
33902 columns.forEach(function (child) {
33903 // skip groups that have no displayed children. this can happen when the group is broken,
33904 // and this section happens to have nothing to display for the open / closed state.
33905 // (a broken group is one that is split, ie columns in the group have a non-group column
33906 // in between them)
33907 if (child.isEmptyGroup()) {
33908 return;
33909 }
33910 var idOfChild = child.getUniqueId();
33911 // if we already have this cell rendered, do nothing
33912 var headerCtrl = oldCtrls[idOfChild];
33913 delete oldCtrls[idOfChild];
33914 // it's possible there is a new Column with the same ID, but it's for a different Column.
33915 // this is common with pivoting, where the pivot cols change, but the id's are still pivot_0,
33916 // pivot_1 etc. so if new col but same ID, need to remove the old col here first as we are
33917 // about to replace it in the this.headerComps map.
33918 var forOldColumn = headerCtrl && headerCtrl.getColumnGroupChild() != child;
33919 if (forOldColumn) {
33920 _this.destroyBean(headerCtrl);
33921 headerCtrl = undefined;
33922 }
33923 if (headerCtrl == null) {
33924 switch (_this.type) {
33925 case _headerRowComp__WEBPACK_IMPORTED_MODULE_10__["HeaderRowType"].FLOATING_FILTER:
33926 headerCtrl = _this.createBean(new _cells_floatingFilter_headerFilterCellCtrl__WEBPACK_IMPORTED_MODULE_7__["HeaderFilterCellCtrl"](child, _this));
33927 break;
33928 case _headerRowComp__WEBPACK_IMPORTED_MODULE_10__["HeaderRowType"].COLUMN_GROUP:
33929 headerCtrl = _this.createBean(new _cells_columnGroup_headerGroupCellCtrl__WEBPACK_IMPORTED_MODULE_9__["HeaderGroupCellCtrl"](child, _this));
33930 break;
33931 default:
33932 headerCtrl = _this.createBean(new _cells_column_headerCellCtrl__WEBPACK_IMPORTED_MODULE_8__["HeaderCellCtrl"](child, _this));
33933 break;
33934 }
33935 }
33936 _this.headerCellCtrls[idOfChild] = headerCtrl;
33937 });
33938 // we want to keep columns that are focused, otherwise keyboard navigation breaks
33939 var isFocusedAndDisplayed = function (ctrl) {
33940 var isFocused = _this.focusService.isHeaderWrapperFocused(ctrl);
33941 if (!isFocused) {
33942 return false;
33943 }
33944 var isDisplayed = _this.columnModel.isDisplayed(ctrl.getColumnGroupChild());
33945 return isDisplayed;
33946 };
33947 Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["iterateObject"])(oldCtrls, function (id, oldCtrl) {
33948 var keepCtrl = isFocusedAndDisplayed(oldCtrl);
33949 if (keepCtrl) {
33950 _this.headerCellCtrls[id] = oldCtrl;
33951 }
33952 else {
33953 _this.destroyBean(oldCtrl);
33954 }
33955 });
33956 var ctrlsToDisplay = Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["getAllValuesInObject"])(this.headerCellCtrls);
33957 this.comp.setHeaderCtrls(ctrlsToDisplay);
33958 };
33959 HeaderRowCtrl.prototype.destroyCtrls = function () {
33960 var _this = this;
33961 Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["iterateObject"])(this.headerCellCtrls, function (key, ctrl) {
33962 _this.destroyBean(ctrl);
33963 });
33964 this.headerCellCtrls = {};
33965 };
33966 HeaderRowCtrl.prototype.getColumnsInViewport = function () {
33967 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_PRINT;
33968 return printLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();
33969 };
33970 HeaderRowCtrl.prototype.getColumnsInViewportPrintLayout = function () {
33971 var _this = this;
33972 // for print layout, we add all columns into the center
33973 if (this.pinned != null) {
33974 return [];
33975 }
33976 var viewportColumns = [];
33977 var actualDepth = this.getActualDepth();
33978 [_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT, null, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT].forEach(function (pinned) {
33979 var items = _this.columnModel.getVirtualHeaderGroupRow(pinned, actualDepth);
33980 viewportColumns = viewportColumns.concat(items);
33981 });
33982 return viewportColumns;
33983 };
33984 HeaderRowCtrl.prototype.getActualDepth = function () {
33985 return this.type == _headerRowComp__WEBPACK_IMPORTED_MODULE_10__["HeaderRowType"].FLOATING_FILTER ? this.rowIndex - 1 : this.rowIndex;
33986 };
33987 HeaderRowCtrl.prototype.getColumnsInViewportNormalLayout = function () {
33988 // when in normal layout, we add the columns for that container only
33989 return this.columnModel.getVirtualHeaderGroupRow(this.pinned, this.getActualDepth());
33990 };
33991 HeaderRowCtrl.prototype.focusHeader = function (column, event) {
33992 var allCtrls = Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["getAllValuesInObject"])(this.headerCellCtrls);
33993 var ctrl = allCtrls.find(function (ctrl) { return ctrl.getColumnGroupChild() == column; });
33994 if (!ctrl) {
33995 return false;
33996 }
33997 ctrl.focus(event);
33998 return true;
33999 };
34000 __decorate([
34001 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
34002 ], HeaderRowCtrl.prototype, "columnModel", void 0);
34003 __decorate([
34004 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('focusService')
34005 ], HeaderRowCtrl.prototype, "focusService", void 0);
34006 __decorate([
34007 _context_context__WEBPACK_IMPORTED_MODULE_2__["PreDestroy"]
34008 ], HeaderRowCtrl.prototype, "destroyCtrls", null);
34009 return HeaderRowCtrl;
34010}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
34011
34012
34013
34014
34015
34016/***/ }),
34017/* 154 */
34018/***/ (function(module, __webpack_exports__, __webpack_require__) {
34019
34020"use strict";
34021__webpack_require__.r(__webpack_exports__);
34022/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellCtrl", function() { return HeaderFilterCellCtrl; });
34023/* harmony import */ var _abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(155);
34024/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
34025/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
34026/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
34027/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23);
34028/* harmony import */ var _gridApi__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(156);
34029/* harmony import */ var _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(158);
34030/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(42);
34031/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(48);
34032/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(64);
34033/* harmony import */ var _hoverFeature__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(159);
34034/* harmony import */ var _components_framework_componentTypes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(103);
34035/**
34036 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
34037 * @version v27.3.0
34038 * @link https://www.ag-grid.com/
34039 * @license MIT
34040 */
34041var __extends = (undefined && undefined.__extends) || (function () {
34042 var extendStatics = function (d, b) {
34043 extendStatics = Object.setPrototypeOf ||
34044 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
34045 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
34046 return extendStatics(d, b);
34047 };
34048 return function (d, b) {
34049 extendStatics(d, b);
34050 function __() { this.constructor = d; }
34051 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
34052 };
34053})();
34054var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
34055 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34056 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34057 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;
34058 return c > 3 && r && Object.defineProperty(target, key, r), r;
34059};
34060
34061
34062
34063
34064
34065
34066
34067
34068
34069
34070
34071
34072var HeaderFilterCellCtrl = /** @class */ (function (_super) {
34073 __extends(HeaderFilterCellCtrl, _super);
34074 function HeaderFilterCellCtrl(column, parentRowCtrl) {
34075 var _this = _super.call(this, column, parentRowCtrl) || this;
34076 _this.column = column;
34077 return _this;
34078 }
34079 HeaderFilterCellCtrl.prototype.setComp = function (comp, eGui, eButtonShowMainFilter, eFloatingFilterBody) {
34080 _super.prototype.setGui.call(this, eGui);
34081 this.comp = comp;
34082 this.eButtonShowMainFilter = eButtonShowMainFilter;
34083 this.eFloatingFilterBody = eFloatingFilterBody;
34084 var colDef = this.column.getColDef();
34085 var filterExists = !!colDef.filter || !!colDef.filterFramework;
34086 var floatingFilterExists = !!colDef.floatingFilter;
34087 this.active = filterExists && floatingFilterExists;
34088 this.setupWidth();
34089 this.setupLeft();
34090 this.setupHover();
34091 this.setupFocus();
34092 this.setupUserComp();
34093 this.setupSyncWithFilter();
34094 this.setupUi();
34095 this.addManagedListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));
34096 };
34097 HeaderFilterCellCtrl.prototype.setupUi = function () {
34098 this.comp.addOrRemoveButtonWrapperCssClass('ag-hidden', !this.active || this.suppressFilterButton);
34099 if (!this.active) {
34100 return;
34101 }
34102 this.comp.addOrRemoveBodyCssClass('ag-floating-filter-full-body', this.suppressFilterButton);
34103 this.comp.addOrRemoveBodyCssClass('ag-floating-filter-body', !this.suppressFilterButton);
34104 var eMenuIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_8__["createIconNoSpan"])('filter', this.gridOptionsWrapper, this.column);
34105 if (eMenuIcon) {
34106 this.eButtonShowMainFilter.appendChild(eMenuIcon);
34107 }
34108 };
34109 HeaderFilterCellCtrl.prototype.setupFocus = function () {
34110 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_9__["ManagedFocusFeature"](this.eGui, {
34111 shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),
34112 onTabKeyDown: this.onTabKeyDown.bind(this),
34113 handleKeyDown: this.handleKeyDown.bind(this),
34114 onFocusIn: this.onFocusIn.bind(this)
34115 }));
34116 };
34117 HeaderFilterCellCtrl.prototype.onTabKeyDown = function (e) {
34118 var eDocument = this.gridOptionsWrapper.getDocument();
34119 var activeEl = eDocument.activeElement;
34120 var wrapperHasFocus = activeEl === this.eGui;
34121 if (wrapperHasFocus) {
34122 return;
34123 }
34124 var nextFocusableEl = this.focusService.findNextFocusableElement(this.eGui, null, e.shiftKey);
34125 if (nextFocusableEl) {
34126 this.beans.headerNavigationService.scrollToColumn(this.column);
34127 e.preventDefault();
34128 nextFocusableEl.focus();
34129 return;
34130 }
34131 var nextFocusableColumn = this.findNextColumnWithFloatingFilter(e.shiftKey);
34132 if (!nextFocusableColumn) {
34133 return;
34134 }
34135 if (this.focusService.focusHeaderPosition({
34136 headerPosition: {
34137 headerRowIndex: this.getParentRowCtrl().getRowIndex(),
34138 column: nextFocusableColumn
34139 },
34140 event: e
34141 })) {
34142 e.preventDefault();
34143 }
34144 };
34145 HeaderFilterCellCtrl.prototype.findNextColumnWithFloatingFilter = function (backwards) {
34146 var columModel = this.beans.columnModel;
34147 var nextCol = this.column;
34148 do {
34149 nextCol = backwards
34150 ? columModel.getDisplayedColBefore(nextCol)
34151 : columModel.getDisplayedColAfter(nextCol);
34152 if (!nextCol) {
34153 break;
34154 }
34155 } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);
34156 return nextCol;
34157 };
34158 HeaderFilterCellCtrl.prototype.handleKeyDown = function (e) {
34159 var eDocument = this.gridOptionsWrapper.getDocument();
34160 var activeEl = eDocument.activeElement;
34161 var wrapperHasFocus = activeEl === this.eGui;
34162 switch (e.key) {
34163 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].UP:
34164 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].DOWN:
34165 if (!wrapperHasFocus) {
34166 e.preventDefault();
34167 }
34168 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].LEFT:
34169 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].RIGHT:
34170 if (wrapperHasFocus) {
34171 return;
34172 }
34173 e.stopPropagation();
34174 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ENTER:
34175 if (wrapperHasFocus) {
34176 if (this.focusService.focusInto(this.eGui)) {
34177 e.preventDefault();
34178 }
34179 }
34180 break;
34181 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ESCAPE:
34182 if (!wrapperHasFocus) {
34183 this.eGui.focus();
34184 }
34185 }
34186 };
34187 HeaderFilterCellCtrl.prototype.onFocusIn = function (e) {
34188 var isRelatedWithin = this.eGui.contains(e.relatedTarget);
34189 // when the focus is already within the component,
34190 // we default to the browser's behavior
34191 if (isRelatedWithin) {
34192 return;
34193 }
34194 var notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains('ag-floating-filter');
34195 var fromWithinHeader = !!e.relatedTarget && Object(_utils_dom__WEBPACK_IMPORTED_MODULE_7__["isElementChildOfClass"])(e.relatedTarget, 'ag-floating-filter');
34196 if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {
34197 var lastFocusEvent = this.lastFocusEvent;
34198 var fromTab = !!(lastFocusEvent && lastFocusEvent.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].TAB);
34199 if (lastFocusEvent && fromTab) {
34200 var shouldFocusLast = lastFocusEvent.shiftKey;
34201 this.focusService.focusInto(this.eGui, shouldFocusLast);
34202 }
34203 }
34204 var rowIndex = this.getRowIndex();
34205 this.beans.focusService.setFocusedHeader(rowIndex, this.column);
34206 };
34207 HeaderFilterCellCtrl.prototype.setupHover = function () {
34208 var _this = this;
34209 this.createManagedBean(new _hoverFeature__WEBPACK_IMPORTED_MODULE_10__["HoverFeature"]([this.column], this.eGui));
34210 var listener = function () {
34211 if (!_this.gridOptionsWrapper.isColumnHoverHighlight()) {
34212 return;
34213 }
34214 var hovered = _this.columnHoverService.isHovered(_this.column);
34215 _this.comp.addOrRemoveCssClass('ag-column-hover', hovered);
34216 };
34217 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_HOVER_CHANGED, listener);
34218 listener();
34219 };
34220 HeaderFilterCellCtrl.prototype.setupLeft = function () {
34221 var setLeftFeature = new _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_6__["SetLeftFeature"](this.column, this.eGui, this.beans);
34222 this.createManagedBean(setLeftFeature);
34223 };
34224 HeaderFilterCellCtrl.prototype.setupUserComp = function () {
34225 var _this = this;
34226 if (!this.active) {
34227 return;
34228 }
34229 var colDef = this.column.getColDef();
34230 var filterParams = this.filterManager.createFilterParams(this.column, colDef);
34231 var finalFilterParams = this.userComponentFactory.mergeParamsWithApplicationProvidedParams(colDef, _components_framework_componentTypes__WEBPACK_IMPORTED_MODULE_11__["FilterComponent"], filterParams);
34232 var defaultFloatingFilterType = this.userComponentFactory.getDefaultFloatingFilterType(colDef);
34233 if (defaultFloatingFilterType == null) {
34234 defaultFloatingFilterType = 'agReadOnlyFloatingFilter';
34235 }
34236 var params = {
34237 column: this.column,
34238 filterParams: finalFilterParams,
34239 currentParentModel: function () { return _this.currentParentModel(); },
34240 parentFilterInstance: function (cb) { return _this.parentFilterInstance(cb); },
34241 showParentFilter: function () { return _this.showParentFilter(); },
34242 suppressFilterButton: false // This one might be overridden from the colDef
34243 };
34244 // this is unusual - we need a params value OUTSIDE the component the params are for.
34245 // the params are for the floating filter component, but this property is actually for the wrapper.
34246 this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;
34247 var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(colDef, params, defaultFloatingFilterType);
34248 if (compDetails) {
34249 this.comp.setCompDetails(compDetails);
34250 }
34251 };
34252 HeaderFilterCellCtrl.prototype.currentParentModel = function () {
34253 var filterComponent = this.getFilterComponent(false);
34254 return filterComponent ? filterComponent.resolveNow(null, function (filter) { return filter && filter.getModel(); }) : null;
34255 };
34256 HeaderFilterCellCtrl.prototype.getFilterComponent = function (createIfDoesNotExist) {
34257 if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }
34258 return this.filterManager.getFilterComponent(this.column, 'NO_UI', createIfDoesNotExist);
34259 };
34260 HeaderFilterCellCtrl.prototype.parentFilterInstance = function (callback) {
34261 var filterComponent = this.getFilterComponent();
34262 if (filterComponent == null) {
34263 return;
34264 }
34265 filterComponent.then(function (instance) {
34266 callback(Object(_gridApi__WEBPACK_IMPORTED_MODULE_5__["unwrapUserComp"])(instance));
34267 });
34268 };
34269 HeaderFilterCellCtrl.prototype.showParentFilter = function () {
34270 var eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;
34271 this.menuFactory.showMenuAfterButtonClick(this.column, eventSource, 'floatingFilter', 'filterMenuTab', ['filterMenuTab']);
34272 };
34273 HeaderFilterCellCtrl.prototype.setupSyncWithFilter = function () {
34274 var _this = this;
34275 if (!this.active) {
34276 return;
34277 }
34278 var syncWithFilter = function (filterChangedEvent) {
34279 var compPromise = _this.comp.getFloatingFilterComp();
34280 if (!compPromise) {
34281 return;
34282 }
34283 var parentModel = _this.currentParentModel();
34284 compPromise.then(function (comp) {
34285 if (comp) {
34286 comp.onParentModelChanged(parentModel, filterChangedEvent);
34287 }
34288 });
34289 };
34290 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_FILTER_CHANGED, syncWithFilter);
34291 if (this.filterManager.isFilterActive(this.column)) {
34292 syncWithFilter(null);
34293 }
34294 };
34295 HeaderFilterCellCtrl.prototype.setupWidth = function () {
34296 var _this = this;
34297 var listener = function () {
34298 var width = _this.column.getActualWidth() + "px";
34299 _this.comp.setWidth(width);
34300 };
34301 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_WIDTH_CHANGED, listener);
34302 listener();
34303 };
34304 __decorate([
34305 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('userComponentFactory')
34306 ], HeaderFilterCellCtrl.prototype, "userComponentFactory", void 0);
34307 __decorate([
34308 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('filterManager')
34309 ], HeaderFilterCellCtrl.prototype, "filterManager", void 0);
34310 __decorate([
34311 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnHoverService')
34312 ], HeaderFilterCellCtrl.prototype, "columnHoverService", void 0);
34313 __decorate([
34314 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridApi')
34315 ], HeaderFilterCellCtrl.prototype, "gridApi", void 0);
34316 __decorate([
34317 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('menuFactory')
34318 ], HeaderFilterCellCtrl.prototype, "menuFactory", void 0);
34319 __decorate([
34320 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('beans')
34321 ], HeaderFilterCellCtrl.prototype, "beans", void 0);
34322 return HeaderFilterCellCtrl;
34323}(_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_0__["AbstractHeaderCellCtrl"]));
34324
34325
34326
34327
34328
34329/***/ }),
34330/* 155 */
34331/***/ (function(module, __webpack_exports__, __webpack_require__) {
34332
34333"use strict";
34334__webpack_require__.r(__webpack_exports__);
34335/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractHeaderCellCtrl", function() { return AbstractHeaderCellCtrl; });
34336/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
34337/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
34338/* harmony import */ var _utils_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49);
34339/**
34340 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
34341 * @version v27.3.0
34342 * @link https://www.ag-grid.com/
34343 * @license MIT
34344 */
34345var __extends = (undefined && undefined.__extends) || (function () {
34346 var extendStatics = function (d, b) {
34347 extendStatics = Object.setPrototypeOf ||
34348 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
34349 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
34350 return extendStatics(d, b);
34351 };
34352 return function (d, b) {
34353 extendStatics(d, b);
34354 function __() { this.constructor = d; }
34355 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
34356 };
34357})();
34358var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
34359 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34360 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34361 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;
34362 return c > 3 && r && Object.defineProperty(target, key, r), r;
34363};
34364
34365
34366
34367var instanceIdSequence = 0;
34368var AbstractHeaderCellCtrl = /** @class */ (function (_super) {
34369 __extends(AbstractHeaderCellCtrl, _super);
34370 function AbstractHeaderCellCtrl(columnGroupChild, parentRowCtrl) {
34371 var _this = _super.call(this) || this;
34372 _this.lastFocusEvent = null;
34373 _this.columnGroupChild = columnGroupChild;
34374 _this.parentRowCtrl = parentRowCtrl;
34375 // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'
34376 _this.instanceId = columnGroupChild.getUniqueId() + '-' + instanceIdSequence++;
34377 return _this;
34378 }
34379 AbstractHeaderCellCtrl.prototype.shouldStopEventPropagation = function (e) {
34380 var _a = this.focusService.getFocusedHeader(), headerRowIndex = _a.headerRowIndex, column = _a.column;
34381 return Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_2__["isUserSuppressingHeaderKeyboardEvent"])(this.gridOptionsWrapper, e, headerRowIndex, column);
34382 };
34383 AbstractHeaderCellCtrl.prototype.setGui = function (eGui) {
34384 this.eGui = eGui;
34385 this.addDomData();
34386 };
34387 AbstractHeaderCellCtrl.prototype.addDomData = function () {
34388 var _this = this;
34389 var key = AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL;
34390 this.gridOptionsWrapper.setDomData(this.eGui, key, this);
34391 this.addDestroyFunc(function () { return _this.gridOptionsWrapper.setDomData(_this.eGui, key, null); });
34392 };
34393 AbstractHeaderCellCtrl.prototype.getGui = function () {
34394 return this.eGui;
34395 };
34396 AbstractHeaderCellCtrl.prototype.focus = function (event) {
34397 if (!this.eGui) {
34398 return false;
34399 }
34400 this.lastFocusEvent = event || null;
34401 this.eGui.focus();
34402 return true;
34403 };
34404 AbstractHeaderCellCtrl.prototype.getRowIndex = function () {
34405 return this.parentRowCtrl.getRowIndex();
34406 };
34407 AbstractHeaderCellCtrl.prototype.getParentRowCtrl = function () {
34408 return this.parentRowCtrl;
34409 };
34410 AbstractHeaderCellCtrl.prototype.getPinned = function () {
34411 return this.parentRowCtrl.getPinned();
34412 };
34413 AbstractHeaderCellCtrl.prototype.getInstanceId = function () {
34414 return this.instanceId;
34415 };
34416 AbstractHeaderCellCtrl.prototype.getColumnGroupChild = function () {
34417 return this.columnGroupChild;
34418 };
34419 AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL = 'headerCtrl';
34420 __decorate([
34421 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
34422 ], AbstractHeaderCellCtrl.prototype, "focusService", void 0);
34423 return AbstractHeaderCellCtrl;
34424}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
34425
34426
34427
34428
34429
34430/***/ }),
34431/* 156 */
34432/***/ (function(module, __webpack_exports__, __webpack_require__) {
34433
34434"use strict";
34435__webpack_require__.r(__webpack_exports__);
34436/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unwrapUserComp", function() { return unwrapUserComp; });
34437/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridApi", function() { return GridApi; });
34438/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
34439/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
34440/* harmony import */ var _entities_sideBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(113);
34441/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(112);
34442/* harmony import */ var _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(157);
34443/* harmony import */ var _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(105);
34444/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16);
34445/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(17);
34446/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14);
34447/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(7);
34448/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(13);
34449/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(26);
34450/**
34451 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
34452 * @version v27.3.0
34453 * @link https://www.ag-grid.com/
34454 * @license MIT
34455 */
34456var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
34457 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34458 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34459 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;
34460 return c > 3 && r && Object.defineProperty(target, key, r), r;
34461};
34462
34463
34464
34465
34466
34467
34468
34469
34470
34471
34472
34473
34474function unwrapUserComp(comp) {
34475 var compAsAny = comp;
34476 var isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;
34477 return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;
34478}
34479var GridApi = /** @class */ (function () {
34480 function GridApi() {
34481 this.detailGridInfoMap = {};
34482 this.destroyCalled = false;
34483 }
34484 GridApi.prototype.registerOverlayWrapperComp = function (overlayWrapperComp) {
34485 this.overlayWrapperComp = overlayWrapperComp;
34486 };
34487 GridApi.prototype.registerSideBarComp = function (sideBarComp) {
34488 this.sideBarComp = sideBarComp;
34489 };
34490 GridApi.prototype.init = function () {
34491 var _this = this;
34492 switch (this.rowModel.getType()) {
34493 case _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE:
34494 this.clientSideRowModel = this.rowModel;
34495 break;
34496 case _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_INFINITE:
34497 this.infiniteRowModel = this.rowModel;
34498 break;
34499 case _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE:
34500 this.serverSideRowModel = this.rowModel;
34501 break;
34502 }
34503 this.ctrlsService.whenReady(function () {
34504 _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
34505 });
34506 };
34507 /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */
34508 GridApi.prototype.__getAlignedGridService = function () {
34509 return this.alignedGridsService;
34510 };
34511 /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */
34512 GridApi.prototype.__getContext = function () {
34513 return this.context;
34514 };
34515 /** Register a detail grid with the master grid when it is created. */
34516 GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {
34517 this.detailGridInfoMap[id] = gridInfo;
34518 };
34519 /** Unregister a detail grid from the master grid when it is destroyed. */
34520 GridApi.prototype.removeDetailGridInfo = function (id) {
34521 this.detailGridInfoMap[id] = undefined;
34522 };
34523 /** Returns the `DetailGridInfo` corresponding to the supplied `detailGridId`. */
34524 GridApi.prototype.getDetailGridInfo = function (id) {
34525 return this.detailGridInfoMap[id];
34526 };
34527 /** Iterates through each `DetailGridInfo` in the grid and calls the supplied callback on each. */
34528 GridApi.prototype.forEachDetailGridInfo = function (callback) {
34529 var index = 0;
34530 Object(_utils_object__WEBPACK_IMPORTED_MODULE_10__["iterateObject"])(this.detailGridInfoMap, function (id, gridInfo) {
34531 // check for undefined, as old references will still be lying around
34532 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(gridInfo)) {
34533 callback(gridInfo, index);
34534 index++;
34535 }
34536 });
34537 };
34538 /** Similar to `exportDataAsCsv`, except returns the result as a string rather than download it. */
34539 GridApi.prototype.getDataAsCsv = function (params) {
34540 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].CsvExportModule, 'api.getDataAsCsv')) {
34541 return this.csvCreator.getDataAsCsv(params);
34542 }
34543 };
34544 /** Downloads a CSV export of the grid's data. */
34545 GridApi.prototype.exportDataAsCsv = function (params) {
34546 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].CsvExportModule, 'api.exportDataAsCSv')) {
34547 this.csvCreator.exportDataAsCsv(params);
34548 }
34549 };
34550 GridApi.prototype.getExcelExportMode = function (params) {
34551 var baseParams = this.gridOptionsWrapper.getDefaultExportParams('excel');
34552 var mergedParams = Object.assign({ exportMode: 'xlsx' }, baseParams, params);
34553 return mergedParams.exportMode;
34554 };
34555 /** 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. */
34556 GridApi.prototype.getDataAsExcel = function (params) {
34557 if (!_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.getDataAsExcel')) {
34558 return;
34559 }
34560 var exportMode = this.getExcelExportMode(params);
34561 if (this.excelCreator.getFactoryMode(exportMode) === _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_5__["ExcelFactoryMode"].MULTI_SHEET) {
34562 console.warn('AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling `api.getMultipleSheetAsExcel()` or `api.exportMultipleSheetsAsExcel()`');
34563 return;
34564 }
34565 return this.excelCreator.getDataAsExcel(params);
34566 };
34567 /** Downloads an Excel export of the grid's data. */
34568 GridApi.prototype.exportDataAsExcel = function (params) {
34569 if (!_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.exportDataAsExcel')) {
34570 return;
34571 }
34572 var exportMode = this.getExcelExportMode(params);
34573 if (this.excelCreator.getFactoryMode(exportMode) === _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_5__["ExcelFactoryMode"].MULTI_SHEET) {
34574 console.warn('AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling `api.getMultipleSheetAsExcel()` or `api.exportMultipleSheetsAsExcel()`');
34575 return;
34576 }
34577 this.excelCreator.exportDataAsExcel(params);
34578 };
34579 /** 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()`. */
34580 GridApi.prototype.getSheetDataForExcel = function (params) {
34581 if (!_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.getSheetDataForExcel')) {
34582 return;
34583 }
34584 var exportMode = this.getExcelExportMode(params);
34585 this.excelCreator.setFactoryMode(_interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_5__["ExcelFactoryMode"].MULTI_SHEET, exportMode);
34586 return this.excelCreator.getSheetDataForExcel(params);
34587 };
34588 /** 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. */
34589 GridApi.prototype.getMultipleSheetsAsExcel = function (params) {
34590 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.getMultipleSheetsAsExcel')) {
34591 return this.excelCreator.getMultipleSheetsAsExcel(params);
34592 }
34593 };
34594 /** Downloads an Excel export of multiple sheets in one file. */
34595 GridApi.prototype.exportMultipleSheetsAsExcel = function (params) {
34596 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.exportMultipleSheetsAsExcel')) {
34597 return this.excelCreator.exportMultipleSheetsAsExcel(params);
34598 }
34599 };
34600 /** @deprecated */
34601 GridApi.prototype.setEnterpriseDatasource = function (datasource) {
34602 console.warn("AG Grid: since version 18.x, api.setEnterpriseDatasource() should be replaced with api.setServerSideDatasource()");
34603 this.setServerSideDatasource(datasource);
34604 };
34605 /**
34606 * Sets an ARIA property in the grid panel (element with `role=\"grid\"`), and removes an ARIA property when the value is null.
34607 *
34608 * Example: `api.setGridAriaProperty('label', 'my grid')` will set `aria-label=\"my grid\"`.
34609 *
34610 * `api.setGridAriaProperty('label', null)` will remove the `aria-label` attribute from the grid element.
34611 */
34612 GridApi.prototype.setGridAriaProperty = function (property, value) {
34613 if (!property) {
34614 return;
34615 }
34616 var eGrid = this.ctrlsService.getGridBodyCtrl().getGui();
34617 var ariaProperty = "aria-" + property;
34618 if (value === null) {
34619 eGrid.removeAttribute(ariaProperty);
34620 }
34621 else {
34622 eGrid.setAttribute(ariaProperty, value);
34623 }
34624 };
34625 /** Set new datasource for Server-Side Row Model. */
34626 GridApi.prototype.setServerSideDatasource = function (datasource) {
34627 if (this.serverSideRowModel) {
34628 // should really have an IEnterpriseRowModel interface, so we are not casting to any
34629 this.serverSideRowModel.setDatasource(datasource);
34630 }
34631 else {
34632 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 + "'");
34633 }
34634 };
34635 /** Set new datasource for Infinite Row Model. */
34636 GridApi.prototype.setDatasource = function (datasource) {
34637 if (this.gridOptionsWrapper.isRowModelInfinite()) {
34638 this.rowModel.setDatasource(datasource);
34639 }
34640 else {
34641 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 + "'");
34642 }
34643 };
34644 /** Set new datasource for Viewport Row Model. */
34645 GridApi.prototype.setViewportDatasource = function (viewportDatasource) {
34646 if (this.gridOptionsWrapper.isRowModelViewport()) {
34647 // this is bad coding, because it's using an interface that's exposed in the enterprise.
34648 // really we should create an interface in the core for viewportDatasource and let
34649 // the enterprise implement it, rather than casting to 'any' here
34650 this.rowModel.setViewportDatasource(viewportDatasource);
34651 }
34652 else {
34653 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 + "'");
34654 }
34655 };
34656 /** Set the row data. */
34657 GridApi.prototype.setRowData = function (rowData) {
34658 // immutable service is part of the CSRM module, if missing, no CSRM
34659 var missingImmutableService = this.immutableService == null;
34660 if (missingImmutableService) {
34661 console.warn('AG Grid: you can only set rowData when using the Client Side Row Model');
34662 return;
34663 }
34664 // if no keys provided provided for rows, then we can tread the operation as Immutable
34665 if (this.immutableService.isActive()) {
34666 this.immutableService.setRowData(rowData);
34667 }
34668 else {
34669 this.selectionService.reset();
34670 this.clientSideRowModel.setRowData(rowData);
34671 }
34672 };
34673 /** @deprecated */
34674 GridApi.prototype.setFloatingTopRowData = function (rows) {
34675 console.warn('AG Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()');
34676 this.setPinnedTopRowData(rows);
34677 };
34678 /** @deprecated */
34679 GridApi.prototype.setFloatingBottomRowData = function (rows) {
34680 console.warn('AG Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()');
34681 this.setPinnedBottomRowData(rows);
34682 };
34683 /** @deprecated */
34684 GridApi.prototype.getFloatingTopRowCount = function () {
34685 console.warn('AG Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()');
34686 return this.getPinnedTopRowCount();
34687 };
34688 /** @deprecated */
34689 GridApi.prototype.getFloatingBottomRowCount = function () {
34690 console.warn('AG Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()');
34691 return this.getPinnedBottomRowCount();
34692 };
34693 /** @deprecated */
34694 GridApi.prototype.getFloatingTopRow = function (index) {
34695 console.warn('AG Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()');
34696 return this.getPinnedTopRow(index);
34697 };
34698 /** @deprecated */
34699 GridApi.prototype.getFloatingBottomRow = function (index) {
34700 console.warn('AG Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()');
34701 return this.getPinnedBottomRow(index);
34702 };
34703 /** Set the top pinned rows. Call with no rows / undefined to clear top pinned rows. */
34704 GridApi.prototype.setPinnedTopRowData = function (rows) {
34705 this.pinnedRowModel.setPinnedTopRowData(rows);
34706 };
34707 /** Set the bottom pinned rows. Call with no rows / undefined to clear bottom pinned rows. */
34708 GridApi.prototype.setPinnedBottomRowData = function (rows) {
34709 this.pinnedRowModel.setPinnedBottomRowData(rows);
34710 };
34711 /** Gets the number of top pinned rows. */
34712 GridApi.prototype.getPinnedTopRowCount = function () {
34713 return this.pinnedRowModel.getPinnedTopRowCount();
34714 };
34715 /** Gets the number of bottom pinned rows. */
34716 GridApi.prototype.getPinnedBottomRowCount = function () {
34717 return this.pinnedRowModel.getPinnedBottomRowCount();
34718 };
34719 /** Gets the top pinned row with the specified index. */
34720 GridApi.prototype.getPinnedTopRow = function (index) {
34721 return this.pinnedRowModel.getPinnedTopRow(index);
34722 };
34723 /** Gets the top pinned row with the specified index. */
34724 GridApi.prototype.getPinnedBottomRow = function (index) {
34725 return this.pinnedRowModel.getPinnedBottomRow(index);
34726 };
34727 /**
34728 * Call to set new column definitions. The grid will redraw all the column headers, and then redraw all of the rows.
34729 */
34730 GridApi.prototype.setColumnDefs = function (colDefs, source) {
34731 if (source === void 0) { source = "api"; }
34732 this.columnModel.setColumnDefs(colDefs, source);
34733 };
34734 /** Call to set new auto group column definition. The grid will recreate any auto-group columns if present. */
34735 GridApi.prototype.setAutoGroupColumnDef = function (colDef, source) {
34736 if (source === void 0) { source = "api"; }
34737 this.gridOptionsWrapper.setProperty('autoGroupColumnDef', colDef, true);
34738 };
34739 /** Call to set new Default Column Definition. */
34740 GridApi.prototype.setDefaultColDef = function (colDef, source) {
34741 if (source === void 0) { source = "api"; }
34742 this.gridOptionsWrapper.setProperty('defaultColDef', colDef, true);
34743 };
34744 GridApi.prototype.expireValueCache = function () {
34745 this.valueCache.expire();
34746 };
34747 /**
34748 * Returns an object with two properties:
34749 * - `top`: The top pixel position of the current scroll in the grid
34750 * - `bottom`: The bottom pixel position of the current scroll in the grid
34751 */
34752 GridApi.prototype.getVerticalPixelRange = function () {
34753 return this.gridBodyCtrl.getScrollFeature().getVScrollPosition();
34754 };
34755 /**
34756 * Returns an object with two properties:
34757 * - `left`: The left pixel position of the current scroll in the grid
34758 * - `right`: The right pixel position of the current scroll in the grid
34759 */
34760 GridApi.prototype.getHorizontalPixelRange = function () {
34761 return this.gridBodyCtrl.getScrollFeature().getHScrollPosition();
34762 };
34763 /** If `true`, the horizontal scrollbar will always be present, even if not required. Otherwise, it will only be displayed when necessary. */
34764 GridApi.prototype.setAlwaysShowHorizontalScroll = function (show) {
34765 this.gridOptionsWrapper.setProperty('alwaysShowHorizontalScroll', show);
34766 };
34767 /** If `true`, the vertical scrollbar will always be present, even if not required. Otherwise it will only be displayed when necessary. */
34768 GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {
34769 this.gridOptionsWrapper.setProperty('alwaysShowVerticalScroll', show);
34770 };
34771 /** Force refresh all tool panels by calling their `refresh` method. */
34772 GridApi.prototype.refreshToolPanel = function () {
34773 if (!this.sideBarComp) {
34774 return;
34775 }
34776 this.sideBarComp.refresh();
34777 };
34778 /** Performs change detection on all cells, refreshing cells where required. */
34779 GridApi.prototype.refreshCells = function (params) {
34780 if (params === void 0) { params = {}; }
34781 if (Array.isArray(params)) {
34782 // the old version of refreshCells() took an array of rowNodes for the first argument
34783 console.warn('since AG Grid v11.1, refreshCells() now takes parameters, please see the documentation.');
34784 return;
34785 }
34786 this.rowRenderer.refreshCells(params);
34787 };
34788 /** Flash rows, columns or individual cells. */
34789 GridApi.prototype.flashCells = function (params) {
34790 if (params === void 0) { params = {}; }
34791 this.rowRenderer.flashCells(params);
34792 };
34793 /** Remove row(s) from the DOM and recreate them again from scratch. */
34794 GridApi.prototype.redrawRows = function (params) {
34795 if (params === void 0) { params = {}; }
34796 var rowNodes = params ? params.rowNodes : undefined;
34797 this.rowRenderer.redrawRows(rowNodes);
34798 };
34799 GridApi.prototype.setFunctionsReadOnly = function (readOnly) {
34800 this.gridOptionsWrapper.setProperty('functionsReadOnly', readOnly);
34801 };
34802 /** Redraws the header. Useful if a column name changes, or something else that changes how the column header is displayed. */
34803 GridApi.prototype.refreshHeader = function () {
34804 this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (c) { return c.refresh(); });
34805 };
34806 /** Returns `true` if any filter is set. This includes quick filter, advanced filter or external filter. */
34807 GridApi.prototype.isAnyFilterPresent = function () {
34808 return this.filterManager.isAnyFilterPresent();
34809 };
34810 /** Returns `true` if any column filter is set, otherwise `false`. */
34811 GridApi.prototype.isColumnFilterPresent = function () {
34812 return this.filterManager.isColumnFilterPresent() || this.filterManager.isAggregateFilterPresent();
34813 };
34814 /** Returns `true` if the quick filter is set, otherwise `false`. */
34815 GridApi.prototype.isQuickFilterPresent = function () {
34816 return this.filterManager.isQuickFilterPresent();
34817 };
34818 /**
34819 * Returns the row model inside the table.
34820 * From here you can see the original rows, rows after filter has been applied,
34821 * rows after aggregation has been applied, and the final set of 'to be displayed' rows.
34822 */
34823 GridApi.prototype.getModel = function () {
34824 return this.rowModel;
34825 };
34826 /** Expand or collapse a specific row node. */
34827 GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded) {
34828 if (rowNode) {
34829 rowNode.setExpanded(expanded);
34830 }
34831 };
34832 /**
34833 * If after getting the model, you expand or collapse a group, call this method to inform the grid.
34834 * It will work out the final set of 'to be displayed' rows again (i.e. expand or collapse the group visually).
34835 */
34836 GridApi.prototype.onGroupExpandedOrCollapsed = function (deprecated_refreshFromIndex) {
34837 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
34838 console.warn('AG Grid: cannot call onGroupExpandedOrCollapsed unless using normal row model');
34839 }
34840 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(deprecated_refreshFromIndex)) {
34841 console.warn('AG Grid: api.onGroupExpandedOrCollapsed - refreshFromIndex parameter is no longer used, the grid will refresh all rows');
34842 }
34843 // we don't really want the user calling this if only one rowNode was expanded, instead they should be
34844 // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole
34845 // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,
34846 // and thus the expand icon in the group cell won't get 'opened' or 'closed'.
34847 this.clientSideRowModel.refreshModel({ step: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].MAP });
34848 };
34849 GridApi.prototype.refreshInMemoryRowModel = function (step) {
34850 console.warn("ag-grid: since version 18.x, api.refreshInMemoryRowModel() should be replaced with api.refreshClientSideRowModel()");
34851 this.refreshClientSideRowModel(step);
34852 };
34853 /** Gets the Client-Side Row Model to refresh, executing the grouping, filtering and sorting again. */
34854 GridApi.prototype.refreshClientSideRowModel = function (step) {
34855 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
34856 console.warn('cannot call refreshClientSideRowModel unless using normal row model');
34857 }
34858 var paramsStep = _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].EVERYTHING;
34859 var stepsMapped = {
34860 group: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].EVERYTHING,
34861 filter: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].FILTER,
34862 map: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].MAP,
34863 aggregate: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].AGGREGATE,
34864 sort: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].SORT,
34865 pivot: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].PIVOT
34866 };
34867 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(step)) {
34868 paramsStep = stepsMapped[step];
34869 }
34870 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(paramsStep)) {
34871 console.error("AG Grid: invalid step " + step + ", available steps are " + Object.keys(stepsMapped).join(', '));
34872 return;
34873 }
34874 var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();
34875 var modelParams = {
34876 step: paramsStep,
34877 keepRenderedRows: true,
34878 keepEditingRows: true,
34879 animate: animate
34880 };
34881 this.clientSideRowModel.refreshModel(modelParams);
34882 };
34883 /** Returns `true` when there are no more animation frames left to process. */
34884 GridApi.prototype.isAnimationFrameQueueEmpty = function () {
34885 return this.animationFrameService.isQueueEmpty();
34886 };
34887 GridApi.prototype.flushAllAnimationFrames = function () {
34888 this.animationFrameService.flushAllFrames();
34889 };
34890 /**
34891 * Returns the row node with the given ID.
34892 * The row node ID is the one you provide from the callback `getRowId(params)`,
34893 * otherwise the ID is a number (cast as string) auto-generated by the grid when
34894 * the row data is set.
34895 */
34896 GridApi.prototype.getRowNode = function (id) {
34897 return this.rowModel.getRowNode(id);
34898 };
34899 /**
34900 * Gets the sizes that various UI elements will be rendered at with the current theme.
34901 * If you override the row or header height using `gridOptions`, the override value you provided will be returned.
34902 */
34903 GridApi.prototype.getSizesForCurrentTheme = function () {
34904 return {
34905 rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),
34906 headerHeight: this.gridOptionsWrapper.getHeaderHeight()
34907 };
34908 };
34909 /** Expand all groups. */
34910 GridApi.prototype.expandAll = function () {
34911 if (this.clientSideRowModel) {
34912 this.clientSideRowModel.expandOrCollapseAll(true);
34913 }
34914 else if (this.serverSideRowModel) {
34915 this.serverSideRowModel.expandAll(true);
34916 }
34917 else {
34918 console.warn('AG Grid: expandAll only works with Client Side Row Model and Server Side Row Model');
34919 }
34920 };
34921 /** Collapse all groups. */
34922 GridApi.prototype.collapseAll = function () {
34923 if (this.clientSideRowModel) {
34924 this.clientSideRowModel.expandOrCollapseAll(false);
34925 }
34926 else if (this.serverSideRowModel) {
34927 this.serverSideRowModel.expandAll(false);
34928 }
34929 else {
34930 console.warn('AG Grid: collapseAll only works with Client Side Row Model and Server Side Row Model');
34931 }
34932 };
34933 /** Gets the tool panel instance corresponding to the supplied `id`. */
34934 GridApi.prototype.getToolPanelInstance = function (id) {
34935 if (!this.sideBarComp) {
34936 console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');
34937 return;
34938 }
34939 var comp = this.sideBarComp.getToolPanelInstance(id);
34940 return unwrapUserComp(comp);
34941 };
34942 GridApi.prototype.addVirtualRowListener = function (eventName, rowIndex, callback) {
34943 if (typeof eventName !== 'string') {
34944 console.warn('AG Grid: addVirtualRowListener is deprecated, please use addRenderedRowListener.');
34945 }
34946 this.addRenderedRowListener(eventName, rowIndex, callback);
34947 };
34948 /**
34949 * Registers a callback to a virtual row.
34950 * 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).
34951 * Unlike normal events, you do not need to unregister rendered row listeners.
34952 * When the rendered row is removed from the grid, all associated rendered row listeners will also be removed.
34953 * Currently supports only one event, `virtualRowRemoved`;
34954 * listen for this event if your `cellRenderer` needs to do cleanup when the row no longer exists.
34955 */
34956 GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {
34957 if (eventName === 'virtualRowSelected') {
34958 console.warn("AG Grid: event virtualRowSelected is deprecated, to register for individual row\n selection events, add a listener directly to the row node.");
34959 }
34960 this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);
34961 };
34962 /** Pass a quick filter text into the grid for filtering. */
34963 GridApi.prototype.setQuickFilter = function (newFilter) {
34964 this.filterManager.setQuickFilter(newFilter);
34965 };
34966 GridApi.prototype.selectIndex = function (index, tryMulti, suppressEvents) {
34967 console.warn('AG Grid: do not use api for selection, call node.setSelected(value) instead');
34968 if (suppressEvents) {
34969 console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');
34970 }
34971 this.selectionService.selectIndex(index, tryMulti);
34972 };
34973 GridApi.prototype.deselectIndex = function (index, suppressEvents) {
34974 if (suppressEvents === void 0) { suppressEvents = false; }
34975 console.warn('AG Grid: do not use api for selection, call node.setSelected(value) instead');
34976 if (suppressEvents) {
34977 console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');
34978 }
34979 this.selectionService.deselectIndex(index);
34980 };
34981 GridApi.prototype.selectNode = function (node, tryMulti, suppressEvents) {
34982 if (tryMulti === void 0) { tryMulti = false; }
34983 if (suppressEvents === void 0) { suppressEvents = false; }
34984 console.warn('AG Grid: API for selection is deprecated, call node.setSelected(value) instead');
34985 if (suppressEvents) {
34986 console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');
34987 }
34988 node.setSelectedParams({ newValue: true, clearSelection: !tryMulti });
34989 };
34990 GridApi.prototype.deselectNode = function (node, suppressEvents) {
34991 if (suppressEvents === void 0) { suppressEvents = false; }
34992 console.warn('AG Grid: API for selection is deprecated, call node.setSelected(value) instead');
34993 if (suppressEvents) {
34994 console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');
34995 }
34996 node.setSelectedParams({ newValue: false });
34997 };
34998 /** Select all rows, regardless of filtering and rows that are not visible due to grouping being enabled and their groups not expanded. */
34999 GridApi.prototype.selectAll = function () {
35000 this.selectionService.selectAllRowNodes();
35001 };
35002 /** Clear all row selections, regardless of filtering. */
35003 GridApi.prototype.deselectAll = function () {
35004 this.selectionService.deselectAllRowNodes();
35005 };
35006 /** Select all filtered rows. */
35007 GridApi.prototype.selectAllFiltered = function () {
35008 this.selectionService.selectAllRowNodes(true);
35009 };
35010 /** Clear all filtered selections. */
35011 GridApi.prototype.deselectAllFiltered = function () {
35012 this.selectionService.deselectAllRowNodes(true);
35013 };
35014 GridApi.prototype.recomputeAggregates = function () {
35015 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
35016 console.warn('cannot call recomputeAggregates unless using normal row model');
35017 }
35018 console.warn("recomputeAggregates is deprecated, please call api.refreshClientSideRowModel('aggregate') instead");
35019 this.clientSideRowModel.refreshModel({ step: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].AGGREGATE });
35020 };
35021 /** Sets columns to adjust in size to fit the grid horizontally. */
35022 GridApi.prototype.sizeColumnsToFit = function () {
35023 this.gridBodyCtrl.sizeColumnsToFit();
35024 };
35025 /** Show the 'loading' overlay. */
35026 GridApi.prototype.showLoadingOverlay = function () {
35027 this.overlayWrapperComp.showLoadingOverlay();
35028 };
35029 /** Show the 'no rows' overlay. */
35030 GridApi.prototype.showNoRowsOverlay = function () {
35031 this.overlayWrapperComp.showNoRowsOverlay();
35032 };
35033 /** Hides the overlay if showing. */
35034 GridApi.prototype.hideOverlay = function () {
35035 this.overlayWrapperComp.hideOverlay();
35036 };
35037 GridApi.prototype.isNodeSelected = function (node) {
35038 console.warn('AG Grid: no need to call api.isNodeSelected(), just call node.isSelected() instead');
35039 return node.isSelected();
35040 };
35041 GridApi.prototype.getSelectedNodesById = function () {
35042 console.error('AG Grid: since version 3.4, getSelectedNodesById no longer exists, use getSelectedNodes() instead');
35043 return null;
35044 };
35045 /**
35046 * Returns a list of selected nodes.
35047 * Getting the underlying node (rather than the data) is useful when working with tree / aggregated data,
35048 * as the node can be traversed.
35049 */
35050 GridApi.prototype.getSelectedNodes = function () {
35051 return this.selectionService.getSelectedNodes();
35052 };
35053 /** Returns a list of selected rows (i.e. row data that you provided). */
35054 GridApi.prototype.getSelectedRows = function () {
35055 return this.selectionService.getSelectedRows();
35056 };
35057 /**
35058 * Returns a list of all selected nodes at 'best cost', a feature to be used with groups / trees.
35059 * If a group has all its children selected, then the group appears in the result, but not the children.
35060 * Designed for use with `'children'` as the group selection type, where groups don't actually appear in the selection normally.
35061 */
35062 GridApi.prototype.getBestCostNodeSelection = function () {
35063 return this.selectionService.getBestCostNodeSelection();
35064 };
35065 /** Retrieve rendered nodes. Due to virtualisation this will contain only the current visible rows and those in the buffer. */
35066 GridApi.prototype.getRenderedNodes = function () {
35067 return this.rowRenderer.getRenderedNodes();
35068 };
35069 GridApi.prototype.ensureColIndexVisible = function (index) {
35070 console.warn('AG Grid: ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead.');
35071 };
35072 /**
35073 * Ensures the column is visible by scrolling the table if needed.
35074 * @param key - The column to ensure visible
35075 * @param position - Where the column will be positioned.
35076 * - `auto` - Scrolls the minimum amount to make sure the column is visible.
35077 * - `start` - Scrolls the column to the start of the viewport.
35078 * - `middle` - Scrolls the column to the middle of the viewport.
35079 * - `end` - Scrolls the column to the end of the viewport.
35080 */
35081 GridApi.prototype.ensureColumnVisible = function (key, position) {
35082 if (position === void 0) { position = 'auto'; }
35083 this.gridBodyCtrl.getScrollFeature().ensureColumnVisible(key, position);
35084 };
35085 /**
35086 * Ensures the row index is visible by vertically scrolling the grid.
35087 * 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.
35088 * Otherwise, the grid will do the minimum scrolling possible to show the row.
35089 * i.e.
35090 * - if the grid needs to scroll up then it will scroll so that the row is at the top,
35091 * - if the grid needs to scroll down then it will scroll so that the row is at the bottom,
35092 * - if the row is already in view then the grid will do nothing.
35093 */
35094 GridApi.prototype.ensureIndexVisible = function (index, position) {
35095 this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(index, position);
35096 };
35097 /**
35098 * Ensures a row node is visible, scrolling the grid if needed.
35099 * Provide either:
35100 * - the node,
35101 * - the data object
35102 * - a comparator function (that takes the node as a parameter, and returns `true` for match or `false` for no match).
35103 */
35104 GridApi.prototype.ensureNodeVisible = function (comparator, position) {
35105 if (position === void 0) { position = null; }
35106 this.gridBodyCtrl.getScrollFeature().ensureNodeVisible(comparator, position);
35107 };
35108 /**
35109 * Similar to `forEachNode`, except lists all the leaf nodes.
35110 * This effectively goes through all the data that you provided to the grid before the grid performed any grouping.
35111 * If using tree data, goes through all the nodes for the data you provided, including nodes that have children,
35112 * but excluding groups the grid created where gaps were missing in the hierarchy.
35113 */
35114 GridApi.prototype.forEachLeafNode = function (callback) {
35115 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
35116 console.warn('cannot call forEachNode unless using normal row model');
35117 }
35118 this.clientSideRowModel.forEachLeafNode(callback);
35119 };
35120 /**
35121 * Iterates through each node (row) in the grid and calls the callback for each node.
35122 * This works similar to the `forEach` method on a JavaScript array.
35123 * This is called for every node, ignoring any filtering or sorting applied within the grid.
35124 * If using the Infinite Row Model, then this gets called for each page loaded in the page cache.
35125 */
35126 GridApi.prototype.forEachNode = function (callback) {
35127 this.rowModel.forEachNode(callback);
35128 };
35129 /** Similar to `forEachNode`, except skips any filtered out data. */
35130 GridApi.prototype.forEachNodeAfterFilter = function (callback) {
35131 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
35132 console.warn('cannot call forEachNodeAfterFilter unless using normal row model');
35133 }
35134 this.clientSideRowModel.forEachNodeAfterFilter(callback);
35135 };
35136 /** Similar to `forEachNodeAfterFilter`, except the callbacks are called in the order the rows are displayed in the grid. */
35137 GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {
35138 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
35139 console.warn('cannot call forEachNodeAfterFilterAndSort unless using normal row model');
35140 }
35141 this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);
35142 };
35143 /**
35144 * Returns the filter component instance for a column.
35145 * `key` can be a string field name or a ColDef object (matches on object reference, useful if field names are not unique).
35146 * If your filter is created asynchronously, `getFilterInstance` will return `null` so you will need to use the `callback` to access the filter instance instead.
35147 */
35148 GridApi.prototype.getFilterInstance = function (key, callback) {
35149 var res = this.getFilterInstanceImpl(key, function (instance) {
35150 if (!callback) {
35151 return;
35152 }
35153 var unwrapped = unwrapUserComp(instance);
35154 callback(unwrapped);
35155 });
35156 var unwrapped = unwrapUserComp(res);
35157 return unwrapped;
35158 };
35159 GridApi.prototype.getFilterInstanceImpl = function (key, callback) {
35160 var column = this.columnModel.getPrimaryColumn(key);
35161 if (!column) {
35162 return undefined;
35163 }
35164 var filterPromise = this.filterManager.getFilterComponent(column, 'NO_UI');
35165 var currentValue = filterPromise && filterPromise.resolveNow(null, function (filterComp) { return filterComp; });
35166 if (currentValue) {
35167 setTimeout(callback, 0, currentValue);
35168 }
35169 else if (filterPromise) {
35170 filterPromise.then(function (comp) {
35171 callback(comp);
35172 });
35173 }
35174 return currentValue;
35175 };
35176 /** Destroys a filter. Useful to force a particular filter to be created from scratch again. */
35177 GridApi.prototype.destroyFilter = function (key) {
35178 var column = this.columnModel.getPrimaryColumn(key);
35179 if (column) {
35180 return this.filterManager.destroyFilter(column, "filterDestroyed");
35181 }
35182 };
35183 /** Gets the status panel instance corresponding to the supplied `id`. */
35184 GridApi.prototype.getStatusPanel = function (key) {
35185 if (!this.statusBarService) {
35186 return;
35187 }
35188 var comp = this.statusBarService.getStatusPanel(key);
35189 return unwrapUserComp(comp);
35190 };
35191 GridApi.prototype.getColumnDef = function (key) {
35192 var column = this.columnModel.getPrimaryColumn(key);
35193 if (column) {
35194 return column.getColDef();
35195 }
35196 return null;
35197 };
35198 /**
35199 * Returns the current column definitions.
35200 */
35201 GridApi.prototype.getColumnDefs = function () { return this.columnModel.getColumnDefs(); };
35202 /** Informs the grid that a filter has changed. This is typically called after a filter change through one of the filter APIs. */
35203 GridApi.prototype.onFilterChanged = function () {
35204 this.filterManager.onFilterChanged();
35205 };
35206 /**
35207 * Gets the grid to act as if the sort was changed.
35208 * Useful if you update some values and want to get the grid to reorder them according to the new values.
35209 */
35210 GridApi.prototype.onSortChanged = function () {
35211 this.sortController.onSortChanged('api');
35212 };
35213 /** Sets the state of all the advanced filters. Provide it with what you get from `getFilterModel()` to restore filter state. */
35214 GridApi.prototype.setFilterModel = function (model) {
35215 this.filterManager.setFilterModel(model);
35216 };
35217 /** Gets the current state of all the advanced filters. Used for saving filter state. */
35218 GridApi.prototype.getFilterModel = function () {
35219 return this.filterManager.getFilterModel();
35220 };
35221 /** Returns the focused cell (or the last focused cell if the grid lost focus). */
35222 GridApi.prototype.getFocusedCell = function () {
35223 return this.focusService.getFocusedCell();
35224 };
35225 /** Clears the focused cell. */
35226 GridApi.prototype.clearFocusedCell = function () {
35227 return this.focusService.clearFocusedCell();
35228 };
35229 /** Sets the focus to the specified cell. `rowPinned` can be either 'top', 'bottom' or null (for not pinned). */
35230 GridApi.prototype.setFocusedCell = function (rowIndex, colKey, rowPinned) {
35231 this.focusService.setFocusedCell(rowIndex, colKey, rowPinned, true);
35232 };
35233 /** Sets the `suppressRowDrag` property. */
35234 GridApi.prototype.setSuppressRowDrag = function (value) {
35235 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SUPPRESS_ROW_DRAG, value);
35236 };
35237 /** Sets the `suppressMoveWhenRowDragging` property. */
35238 GridApi.prototype.setSuppressMoveWhenRowDragging = function (value) {
35239 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG, value);
35240 };
35241 /** Sets the `suppressRowClickSelection` property. */
35242 GridApi.prototype.setSuppressRowClickSelection = function (value) {
35243 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SUPPRESS_ROW_CLICK_SELECTION, value);
35244 };
35245 /** Adds a drop zone outside of the grid where rows can be dropped. */
35246 GridApi.prototype.addRowDropZone = function (params) {
35247 this.gridBodyCtrl.getRowDragFeature().addRowDropZone(params);
35248 };
35249 /** Removes an external drop zone added by `addRowDropZone`. */
35250 GridApi.prototype.removeRowDropZone = function (params) {
35251 var activeDropTarget = this.dragAndDropService.findExternalZone(params);
35252 if (activeDropTarget) {
35253 this.dragAndDropService.removeDropTarget(activeDropTarget);
35254 }
35255 };
35256 /** Returns the `RowDropZoneParams` to be used by another grid's `addRowDropZone` method. */
35257 GridApi.prototype.getRowDropZoneParams = function (events) {
35258 return this.gridBodyCtrl.getRowDragFeature().getRowDropZone(events);
35259 };
35260 /** Sets the height in pixels for the row containing the column label header. */
35261 GridApi.prototype.setHeaderHeight = function (headerHeight) {
35262 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_HEADER_HEIGHT, headerHeight);
35263 };
35264 /**
35265 * Switch between layout options: `normal`, `autoHeight`, `print`.
35266 * Defaults to `normal` if no domLayout provided.
35267 */
35268 GridApi.prototype.setDomLayout = function (domLayout) {
35269 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_DOM_LAYOUT, domLayout);
35270 };
35271 /** Sets the `enableCellTextSelection` property. */
35272 GridApi.prototype.setEnableCellTextSelection = function (selectable) {
35273 this.gridBodyCtrl.setCellTextSelection(selectable);
35274 };
35275 /** Sets the preferred direction for the selection fill handle. */
35276 GridApi.prototype.setFillHandleDirection = function (direction) {
35277 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_FILL_HANDLE_DIRECTION, direction);
35278 };
35279 /** Sets the height in pixels for the rows containing header column groups. */
35280 GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {
35281 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GROUP_HEADER_HEIGHT, headerHeight);
35282 };
35283 /** Sets the height in pixels for the row containing the floating filters. */
35284 GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {
35285 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_FLOATING_FILTERS_HEIGHT, headerHeight);
35286 };
35287 /** Sets the height in pixels for the row containing the columns when in pivot mode. */
35288 GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {
35289 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PIVOT_HEADER_HEIGHT, headerHeight);
35290 };
35291 /** Sets the height in pixels for the row containing header column groups when in pivot mode. */
35292 GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {
35293 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PIVOT_GROUP_HEADER_HEIGHT, headerHeight);
35294 };
35295 GridApi.prototype.setIsExternalFilterPresent = function (isExternalFilterPresentFunc) {
35296 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_EXTERNAL_FILTER_PRESENT, isExternalFilterPresentFunc);
35297 };
35298 GridApi.prototype.setDoesExternalFilterPass = function (doesExternalFilterPassFunc) {
35299 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_DOES_EXTERNAL_FILTER_PASS, doesExternalFilterPassFunc);
35300 };
35301 GridApi.prototype.setNavigateToNextCell = function (navigateToNextCellFunc) {
35302 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_NAVIGATE_TO_NEXT_CELL, navigateToNextCellFunc);
35303 };
35304 GridApi.prototype.setTabToNextCell = function (tabToNextCellFunc) {
35305 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_TAB_TO_NEXT_CELL, tabToNextCellFunc);
35306 };
35307 GridApi.prototype.setTabToNextHeader = function (tabToNextHeaderFunc) {
35308 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_TAB_TO_NEXT_HEADER, tabToNextHeaderFunc);
35309 };
35310 GridApi.prototype.setNavigateToNextHeader = function (navigateToNextHeaderFunc) {
35311 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_NAVIGATE_TO_NEXT_HEADER, navigateToNextHeaderFunc);
35312 };
35313 GridApi.prototype.setGroupRowAggNodes = function (groupRowAggNodesFunc) {
35314 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GROUP_ROW_AGG_NODES, groupRowAggNodesFunc);
35315 };
35316 GridApi.prototype.setGetGroupRowAgg = function (getGroupRowAggFunc) {
35317 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_GROUP_ROW_AGG, getGroupRowAggFunc);
35318 };
35319 GridApi.prototype.setGetBusinessKeyForNode = function (getBusinessKeyForNodeFunc) {
35320 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_BUSINESS_KEY_FOR_NODE, getBusinessKeyForNodeFunc);
35321 };
35322 GridApi.prototype.setGetChildCount = function (getChildCountFunc) {
35323 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_CHILD_COUNT, getChildCountFunc);
35324 };
35325 GridApi.prototype.setProcessRowPostCreate = function (processRowPostCreateFunc) {
35326 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_ROW_POST_CREATE, processRowPostCreateFunc);
35327 };
35328 GridApi.prototype.setGetRowNodeId = function (getRowNodeIdFunc) {
35329 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_NODE_ID, getRowNodeIdFunc);
35330 };
35331 GridApi.prototype.setGetRowId = function (getRowIdFunc) {
35332 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_ID, getRowIdFunc);
35333 };
35334 GridApi.prototype.setGetRowClass = function (rowClassFunc) {
35335 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_CLASS, rowClassFunc);
35336 };
35337 GridApi.prototype.setIsFullWidthCell = function (isFullWidthCellFunc) {
35338 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_FULL_WIDTH_CELL, isFullWidthCellFunc);
35339 };
35340 GridApi.prototype.setIsFullWidthRow = function (isFullWidthRowFunc) {
35341 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_FULL_WIDTH_ROW, isFullWidthRowFunc);
35342 };
35343 GridApi.prototype.setIsRowSelectable = function (isRowSelectableFunc) {
35344 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_ROW_SELECTABLE, isRowSelectableFunc);
35345 };
35346 GridApi.prototype.setIsRowMaster = function (isRowMasterFunc) {
35347 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_ROW_MASTER, isRowMasterFunc);
35348 };
35349 GridApi.prototype.setPostSort = function (postSortFunc) {
35350 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_POST_SORT, postSortFunc);
35351 };
35352 GridApi.prototype.setPostSortRows = function (postSortRowsFunc) {
35353 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_POST_SORT_ROWS, postSortRowsFunc);
35354 };
35355 GridApi.prototype.setGetDocument = function (getDocumentFunc) {
35356 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_DOCUMENT, getDocumentFunc);
35357 };
35358 GridApi.prototype.setGetContextMenuItems = function (getContextMenuItemsFunc) {
35359 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_CONTEXT_MENU_ITEMS, getContextMenuItemsFunc);
35360 };
35361 GridApi.prototype.setGetMainMenuItems = function (getMainMenuItemsFunc) {
35362 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_MAIN_MENU_ITEMS, getMainMenuItemsFunc);
35363 };
35364 GridApi.prototype.setProcessCellForClipboard = function (processCellForClipboardFunc) {
35365 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_CELL_FOR_CLIPBOARD, processCellForClipboardFunc);
35366 };
35367 GridApi.prototype.setSendToClipboard = function (sendToClipboardFunc) {
35368 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SEND_TO_CLIPBOARD, sendToClipboardFunc);
35369 };
35370 GridApi.prototype.setProcessCellFromClipboard = function (processCellFromClipboardFunc) {
35371 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_CELL_FROM_CLIPBOARD, processCellFromClipboardFunc);
35372 };
35373 GridApi.prototype.setProcessSecondaryColDef = function (processSecondaryColDefFunc) {
35374 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_TO_SECONDARY_COLDEF, processSecondaryColDefFunc);
35375 };
35376 GridApi.prototype.setProcessSecondaryColGroupDef = function (processSecondaryColGroupDefFunc) {
35377 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_SECONDARY_COL_GROUP_DEF, processSecondaryColGroupDefFunc);
35378 };
35379 GridApi.prototype.setPostProcessPopup = function (postProcessPopupFunc) {
35380 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_POST_PROCESS_POPUP, postProcessPopupFunc);
35381 };
35382 GridApi.prototype.setDefaultGroupOrderComparator = function (defaultGroupOrderComparatorFunc) {
35383 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_DEFAULT_GROUP_ORDER_COMPARATOR, defaultGroupOrderComparatorFunc);
35384 };
35385 GridApi.prototype.setInitialGroupOrderComparator = function (initialGroupOrderComparatorFunc) {
35386 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_INITIAL_GROUP_ORDER_COMPARATOR, initialGroupOrderComparatorFunc);
35387 };
35388 GridApi.prototype.setGetChartToolbarItems = function (getChartToolbarItemsFunc) {
35389 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_CHART_TOOLBAR_ITEMS, getChartToolbarItemsFunc);
35390 };
35391 GridApi.prototype.setPaginationNumberFormatter = function (paginationNumberFormatterFunc) {
35392 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PAGINATION_NUMBER_FORMATTER, paginationNumberFormatterFunc);
35393 };
35394 GridApi.prototype.setGetServerSideStoreParams = function (getServerSideStoreParamsFunc) {
35395 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_SERVER_SIDE_STORE_PARAMS, getServerSideStoreParamsFunc);
35396 };
35397 GridApi.prototype.setIsServerSideGroupOpenByDefault = function (isServerSideGroupOpenByDefaultFunc) {
35398 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT, isServerSideGroupOpenByDefaultFunc);
35399 };
35400 GridApi.prototype.setIsApplyServerSideTransaction = function (isApplyServerSideTransactionFunc) {
35401 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_APPLY_SERVER_SIDE_TRANSACTION, isApplyServerSideTransactionFunc);
35402 };
35403 GridApi.prototype.setIsServerSideGroup = function (isServerSideGroupFunc) {
35404 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_SERVER_SIDE_GROUP, isServerSideGroupFunc);
35405 };
35406 GridApi.prototype.setGetServerSideGroupKey = function (getServerSideGroupKeyFunc) {
35407 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_SERVER_SIDE_GROUP_KEY, getServerSideGroupKeyFunc);
35408 };
35409 GridApi.prototype.setGetRowStyle = function (rowStyleFunc) {
35410 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_STYLE, rowStyleFunc);
35411 };
35412 GridApi.prototype.setGetRowHeight = function (rowHeightFunc) {
35413 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_HEIGHT, rowHeightFunc);
35414 };
35415 /** Returns `true` if the side bar is visible. */
35416 GridApi.prototype.isSideBarVisible = function () {
35417 return this.sideBarComp ? this.sideBarComp.isDisplayed() : false;
35418 };
35419 /** Show/hide the entire side bar, including any visible panel and the tab buttons. */
35420 GridApi.prototype.setSideBarVisible = function (show) {
35421 if (!this.sideBarComp) {
35422 if (show) {
35423 console.warn('AG Grid: sideBar is not loaded');
35424 }
35425 return;
35426 }
35427 this.sideBarComp.setDisplayed(show);
35428 };
35429 /** Sets the side bar position relative to the grid. Possible values are `'left'` or `'right'`. */
35430 GridApi.prototype.setSideBarPosition = function (position) {
35431 if (!this.sideBarComp) {
35432 console.warn('AG Grid: sideBar is not loaded');
35433 return;
35434 }
35435 this.sideBarComp.setSideBarPosition(position);
35436 };
35437 /** Opens a particular tool panel. Provide the ID of the tool panel to open. */
35438 GridApi.prototype.openToolPanel = function (key) {
35439 if (!this.sideBarComp) {
35440 console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');
35441 return;
35442 }
35443 this.sideBarComp.openToolPanel(key);
35444 };
35445 /** Closes the currently open tool panel (if any). */
35446 GridApi.prototype.closeToolPanel = function () {
35447 if (!this.sideBarComp) {
35448 console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');
35449 return;
35450 }
35451 this.sideBarComp.close();
35452 };
35453 /** Returns the ID of the currently shown tool panel if any, otherwise `null`. */
35454 GridApi.prototype.getOpenedToolPanel = function () {
35455 return this.sideBarComp ? this.sideBarComp.openedItem() : null;
35456 };
35457 /** Returns the current side bar configuration. If a shortcut was used, returns the detailed long form. */
35458 GridApi.prototype.getSideBar = function () {
35459 return this.gridOptionsWrapper.getSideBar();
35460 };
35461 /** 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. */
35462 GridApi.prototype.setSideBar = function (def) {
35463 this.gridOptionsWrapper.setProperty('sideBar', _entities_sideBar__WEBPACK_IMPORTED_MODULE_2__["SideBarDefParser"].parse(def));
35464 };
35465 GridApi.prototype.setSuppressClipboardPaste = function (value) {
35466 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SUPPRESS_CLIPBOARD_PASTE, value);
35467 };
35468 /** Returns `true` if the tool panel is showing, otherwise `false`. */
35469 GridApi.prototype.isToolPanelShowing = function () {
35470 return this.sideBarComp.isToolPanelShowing();
35471 };
35472 GridApi.prototype.doLayout = function () {
35473 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";
35474 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(message); }, 'doLayoutDeprecated');
35475 };
35476 /** Tells the grid to recalculate the row heights. */
35477 GridApi.prototype.resetRowHeights = function () {
35478 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(this.clientSideRowModel)) {
35479 if (this.columnModel.isAutoRowHeightActive()) {
35480 console.warn('AG Grid: calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.');
35481 return;
35482 }
35483 this.clientSideRowModel.resetRowHeights();
35484 }
35485 };
35486 GridApi.prototype.setGroupRemoveSingleChildren = function (value) {
35487 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GROUP_REMOVE_SINGLE_CHILDREN, value);
35488 };
35489 GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {
35490 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, value);
35491 };
35492 /** Tells the grid a row height has changed. To be used after calling `rowNode.setRowHeight(newHeight)`. */
35493 GridApi.prototype.onRowHeightChanged = function () {
35494 if (this.clientSideRowModel) {
35495 this.clientSideRowModel.onRowHeightChanged();
35496 }
35497 else if (this.serverSideRowModel) {
35498 this.serverSideRowModel.onRowHeightChanged();
35499 }
35500 };
35501 /**
35502 * Gets the value for a column for a particular `rowNode` (row).
35503 * This is useful if you want the raw value of a cell e.g. if implementing your own CSV export.
35504 */
35505 GridApi.prototype.getValue = function (colKey, rowNode) {
35506 var column = this.columnModel.getPrimaryColumn(colKey);
35507 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(column)) {
35508 column = this.columnModel.getGridColumn(colKey);
35509 }
35510 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(column)) {
35511 return null;
35512 }
35513 return this.valueService.getValue(column, rowNode);
35514 };
35515 /** Add an event listener for the specified `eventType`. Works similar to `addEventListener` for a browser DOM element. */
35516 GridApi.prototype.addEventListener = function (eventType, listener) {
35517 var async = this.gridOptionsWrapper.useAsyncEvents();
35518 this.eventService.addEventListener(eventType, listener, async);
35519 };
35520 /** Add an event listener for all event types coming from the grid. */
35521 GridApi.prototype.addGlobalListener = function (listener) {
35522 var async = this.gridOptionsWrapper.useAsyncEvents();
35523 this.eventService.addGlobalListener(listener, async);
35524 };
35525 /** Remove an event listener. */
35526 GridApi.prototype.removeEventListener = function (eventType, listener) {
35527 var async = this.gridOptionsWrapper.useAsyncEvents();
35528 this.eventService.removeEventListener(eventType, listener, async);
35529 };
35530 /** Remove a global event listener. */
35531 GridApi.prototype.removeGlobalListener = function (listener) {
35532 var async = this.gridOptionsWrapper.useAsyncEvents();
35533 this.eventService.removeGlobalListener(listener, async);
35534 };
35535 GridApi.prototype.dispatchEvent = function (event) {
35536 this.eventService.dispatchEvent(event);
35537 };
35538 /** 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. */
35539 GridApi.prototype.destroy = function () {
35540 // this is needed as GridAPI is a bean, and GridAPI.destroy() is called as part
35541 // of context.destroy(). so we need to stop the infinite loop.
35542 if (this.destroyCalled) {
35543 return;
35544 }
35545 this.destroyCalled = true;
35546 // destroy the UI first (as they use the services)
35547 var gridCtrl = this.ctrlsService.getGridCtrl();
35548 if (gridCtrl) {
35549 gridCtrl.destroyGridUi();
35550 }
35551 // destroy the services
35552 this.context.destroy();
35553 };
35554 GridApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {
35555 // some users were raising support issues with regards memory leaks. the problem was the customers applications
35556 // were keeping references to the API. trying to educate them all would be difficult, easier to just remove
35557 // all references in the API so at least the core grid can be garbage collected.
35558 //
35559 // wait about 100ms before clearing down the references, in case user has some cleanup to do,
35560 // and needs to deference the API first
35561 setTimeout(_utils_object__WEBPACK_IMPORTED_MODULE_10__["removeAllReferences"].bind(window, this, 'Grid API'), 100);
35562 };
35563 GridApi.prototype.warnIfDestroyed = function (methodName) {
35564 if (this.destroyCalled) {
35565 console.warn("AG Grid: Grid API method " + methodName + " was called on a grid that was destroyed.");
35566 }
35567 return this.destroyCalled;
35568 };
35569 /** Reset the quick filter cache text on every rowNode. */
35570 GridApi.prototype.resetQuickFilter = function () {
35571 if (this.warnIfDestroyed('resetQuickFilter')) {
35572 return;
35573 }
35574 this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });
35575 };
35576 GridApi.prototype.getRangeSelections = function () {
35577 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.");
35578 return null;
35579 };
35580 /** Returns the list of selected cell ranges. */
35581 GridApi.prototype.getCellRanges = function () {
35582 if (this.rangeService) {
35583 return this.rangeService.getCellRanges();
35584 }
35585 console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');
35586 return null;
35587 };
35588 GridApi.prototype.camelCaseToHumanReadable = function (camelCase) {
35589 return Object(_utils_string__WEBPACK_IMPORTED_MODULE_11__["camelCaseToHumanText"])(camelCase);
35590 };
35591 GridApi.prototype.addRangeSelection = function (deprecatedNoLongerUsed) {
35592 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()');
35593 };
35594 /** Adds the provided cell range to the selected ranges. */
35595 GridApi.prototype.addCellRange = function (params) {
35596 if (!this.rangeService) {
35597 console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');
35598 }
35599 this.rangeService.addCellRange(params);
35600 };
35601 /** Clears the selected ranges. */
35602 GridApi.prototype.clearRangeSelection = function () {
35603 if (!this.rangeService) {
35604 console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');
35605 }
35606 this.rangeService.removeAllCellRanges();
35607 };
35608 /** Reverts the last cell edit. */
35609 GridApi.prototype.undoCellEditing = function () {
35610 this.undoRedoService.undo();
35611 };
35612 /** Re-applies the most recently undone cell edit. */
35613 GridApi.prototype.redoCellEditing = function () {
35614 this.undoRedoService.redo();
35615 };
35616 /** Returns current number of available cell edit undo operations. */
35617 GridApi.prototype.getCurrentUndoSize = function () {
35618 return this.undoRedoService.getCurrentUndoStackSize();
35619 };
35620 /** Returns current number of available cell edit redo operations. */
35621 GridApi.prototype.getCurrentRedoSize = function () {
35622 return this.undoRedoService.getCurrentRedoStackSize();
35623 };
35624 /** Returns a list of models with information about the charts that are currently rendered from the grid. */
35625 GridApi.prototype.getChartModels = function () {
35626 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.getChartModels') &&
35627 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.getChartModels')) {
35628 return this.chartService.getChartModels();
35629 }
35630 };
35631 /** Returns the `ChartRef` using the supplied `chartId`. */
35632 GridApi.prototype.getChartRef = function (chartId) {
35633 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.getChartRef') &&
35634 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.getChartRef')) {
35635 return this.chartService.getChartRef(chartId);
35636 }
35637 };
35638 /** Returns a string containing the requested data URL which contains a representation of the chart image. */
35639 GridApi.prototype.getChartImageDataURL = function (params) {
35640 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.getChartImageDataURL') &&
35641 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.getChartImageDataURL')) {
35642 return this.chartService.getChartImageDataURL(params);
35643 }
35644 };
35645 /** Used to programmatically create charts from a range. */
35646 GridApi.prototype.createRangeChart = function (params) {
35647 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.createRangeChart') &&
35648 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.createRangeChart')) {
35649 return this.chartService.createRangeChart(params);
35650 }
35651 };
35652 /** Used to programmatically create cross filter charts from a range. */
35653 GridApi.prototype.createCrossFilterChart = function (params) {
35654 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.createCrossFilterChart') &&
35655 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.createCrossFilterChart')) {
35656 return this.chartService.createCrossFilterChart(params);
35657 }
35658 };
35659 /** Restores a chart using the `ChartModel` that was previously obtained from `getChartModels()`. */
35660 GridApi.prototype.restoreChart = function (chartModel, chartContainer) {
35661 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.restoreChart') &&
35662 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.restoreChart')) {
35663 return this.chartService.restoreChart(chartModel, chartContainer);
35664 }
35665 };
35666 /** Used to programmatically create pivot charts from a grid. */
35667 GridApi.prototype.createPivotChart = function (params) {
35668 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.createPivotChart') &&
35669 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.createPivotChart')) {
35670 return this.chartService.createPivotChart(params);
35671 }
35672 };
35673 /** Copies the selected rows to the clipboard. */
35674 GridApi.prototype.copySelectedRowsToClipboard = function (params) {
35675 if (!this.clipboardService) {
35676 console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');
35677 }
35678 this.clipboardService.copySelectedRowsToClipboard(params);
35679 };
35680 /** Copies the selected ranges to the clipboard. */
35681 GridApi.prototype.copySelectedRangeToClipboard = function (params) {
35682 if (!this.clipboardService) {
35683 console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');
35684 }
35685 this.clipboardService.copySelectedRangeToClipboard(params);
35686 };
35687 /** Copies the selected range down, similar to `Ctrl + D` in Excel. */
35688 GridApi.prototype.copySelectedRangeDown = function () {
35689 if (!this.clipboardService) {
35690 console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');
35691 }
35692 this.clipboardService.copyRangeDown();
35693 };
35694 /** Shows the column menu after and positions it relative to the provided button element. Use in conjunction with your own header template. */
35695 GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {
35696 // use grid column so works with pivot mode
35697 var column = this.columnModel.getGridColumn(colKey);
35698 this.menuFactory.showMenuAfterButtonClick(column, buttonElement, 'columnMenu');
35699 };
35700 /** Shows the column menu after and positions it relative to the mouse event. Use in conjunction with your own header template. */
35701 GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {
35702 // use grid column so works with pivot mode
35703 var column = this.columnModel.getGridColumn(colKey);
35704 if (!column) {
35705 column = this.columnModel.getPrimaryColumn(colKey);
35706 }
35707 if (!column) {
35708 console.error("AG Grid: column '" + colKey + "' not found");
35709 return;
35710 }
35711 this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);
35712 };
35713 /** Hides any visible context menu or column menu. */
35714 GridApi.prototype.hidePopupMenu = function () {
35715 // hide the context menu if in enterprise
35716 if (this.contextMenuFactory) {
35717 this.contextMenuFactory.hideActiveMenu();
35718 }
35719 // and hide the column menu always
35720 this.menuFactory.hideActiveMenu();
35721 };
35722 /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */
35723 GridApi.prototype.setPopupParent = function (ePopupParent) {
35724 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_POPUP_PARENT, ePopupParent);
35725 };
35726 /** Navigates the grid focus to the next cell, as if tabbing. */
35727 GridApi.prototype.tabToNextCell = function (event) {
35728 return this.navigationService.tabToNextCell(false, event);
35729 };
35730 /** Navigates the grid focus to the previous cell, as if shift-tabbing. */
35731 GridApi.prototype.tabToPreviousCell = function (event) {
35732 return this.navigationService.tabToNextCell(true, event);
35733 };
35734 /** Returns the list of active cell renderer instances. */
35735 GridApi.prototype.getCellRendererInstances = function (params) {
35736 if (params === void 0) { params = {}; }
35737 var res = this.rowRenderer.getCellRendererInstances(params);
35738 var unwrapped = res.map(unwrapUserComp);
35739 return unwrapped;
35740 };
35741 /** Returns the list of active cell editor instances. Optionally provide parameters to restrict to certain columns / row nodes. */
35742 GridApi.prototype.getCellEditorInstances = function (params) {
35743 if (params === void 0) { params = {}; }
35744 var res = this.rowRenderer.getCellEditorInstances(params);
35745 var unwrapped = res.map(unwrapUserComp);
35746 return unwrapped;
35747 };
35748 /** If the grid is editing, returns back details of the editing cell(s). */
35749 GridApi.prototype.getEditingCells = function () {
35750 return this.rowRenderer.getEditingCells();
35751 };
35752 /** If a cell is editing, it stops the editing. Pass `true` if you want to cancel the editing (i.e. don't accept changes). */
35753 GridApi.prototype.stopEditing = function (cancel) {
35754 if (cancel === void 0) { cancel = false; }
35755 this.rowRenderer.stopEditing(cancel);
35756 };
35757 /** Start editing the provided cell. If another cell is editing, the editing will be stopped in that other cell. */
35758 GridApi.prototype.startEditingCell = function (params) {
35759 var column = this.columnModel.getGridColumn(params.colKey);
35760 if (!column) {
35761 console.warn("AG Grid: no column found for " + params.colKey);
35762 return;
35763 }
35764 var cellPosition = {
35765 rowIndex: params.rowIndex,
35766 rowPinned: params.rowPinned || null,
35767 column: column
35768 };
35769 var notPinned = params.rowPinned == null;
35770 if (notPinned) {
35771 this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(params.rowIndex);
35772 }
35773 var cell = this.navigationService.getCellByPosition(cellPosition);
35774 if (!cell) {
35775 return;
35776 }
35777 cell.startRowOrCellEdit(params.key, params.charPress);
35778 };
35779 /** Add an aggregation function with the specified key. */
35780 GridApi.prototype.addAggFunc = function (key, aggFunc) {
35781 if (this.aggFuncService) {
35782 this.aggFuncService.addAggFunc(key, aggFunc);
35783 }
35784 };
35785 /** Add aggregations function with the specified keys. */
35786 GridApi.prototype.addAggFuncs = function (aggFuncs) {
35787 if (this.aggFuncService) {
35788 this.aggFuncService.addAggFuncs(aggFuncs);
35789 }
35790 };
35791 /** Clears all aggregation functions (including those provided by the grid). */
35792 GridApi.prototype.clearAggFuncs = function () {
35793 if (this.aggFuncService) {
35794 this.aggFuncService.clear();
35795 }
35796 };
35797 /** Apply transactions to the server side row model. */
35798 GridApi.prototype.applyServerSideTransaction = function (transaction) {
35799 if (!this.serverSideTransactionManager) {
35800 console.warn('AG Grid: Cannot apply Server Side Transaction if not using the Server Side Row Model.');
35801 return;
35802 }
35803 return this.serverSideTransactionManager.applyTransaction(transaction);
35804 };
35805 GridApi.prototype.applyServerSideTransactionAsync = function (transaction, callback) {
35806 if (!this.serverSideTransactionManager) {
35807 console.warn('AG Grid: Cannot apply Server Side Transaction if not using the Server Side Row Model.');
35808 return;
35809 }
35810 return this.serverSideTransactionManager.applyTransactionAsync(transaction, callback);
35811 };
35812 /** Gets all failed server side loads to retry. */
35813 GridApi.prototype.retryServerSideLoads = function () {
35814 if (!this.serverSideRowModel) {
35815 console.warn('AG Grid: API retryServerSideLoads() can only be used when using Server-Side Row Model.');
35816 return;
35817 }
35818 this.serverSideRowModel.retryLoads();
35819 };
35820 GridApi.prototype.flushServerSideAsyncTransactions = function () {
35821 if (!this.serverSideTransactionManager) {
35822 console.warn('AG Grid: Cannot flush Server Side Transaction if not using the Server Side Row Model.');
35823 return;
35824 }
35825 return this.serverSideTransactionManager.flushAsyncTransactions();
35826 };
35827 /** Update row data. Pass a transaction object with lists for `add`, `remove` and `update`. */
35828 GridApi.prototype.applyTransaction = function (rowDataTransaction) {
35829 if (!this.clientSideRowModel) {
35830 console.error('AG Grid: updateRowData() only works with ClientSideRowModel. Working with InfiniteRowModel was deprecated in v23.1 and removed in v24.1');
35831 return;
35832 }
35833 var res = this.clientSideRowModel.updateRowData(rowDataTransaction);
35834 // refresh all the full width rows
35835 this.rowRenderer.refreshFullWidthRows(res.update);
35836 // do change detection for all present cells
35837 if (!this.gridOptionsWrapper.isSuppressChangeDetection()) {
35838 this.rowRenderer.refreshCells();
35839 }
35840 return res;
35841 };
35842 /** Sets the `deltaSort` property */
35843 GridApi.prototype.setDeltaSort = function (enable) {
35844 this.gridOptionsWrapper.setProperty('deltaSort', enable);
35845 };
35846 /** @deprecated */
35847 GridApi.prototype.updateRowData = function (rowDataTransaction) {
35848 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.';
35849 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(message); }, 'updateRowData deprecated');
35850 return this.applyTransaction(rowDataTransaction);
35851 };
35852 /** Same as `applyTransaction` except executes asynchronously for efficiency. */
35853 GridApi.prototype.applyTransactionAsync = function (rowDataTransaction, callback) {
35854 if (!this.clientSideRowModel) {
35855 console.error('AG Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');
35856 return;
35857 }
35858 this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);
35859 };
35860 /** Executes any remaining asynchronous grid transactions, if any are waiting to be executed. */
35861 GridApi.prototype.flushAsyncTransactions = function () {
35862 if (!this.clientSideRowModel) {
35863 console.error('AG Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');
35864 return;
35865 }
35866 this.clientSideRowModel.flushAsyncTransactions();
35867 };
35868 /** @deprecated */
35869 GridApi.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {
35870 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.';
35871 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(message); }, 'batchUpdateRowData deprecated');
35872 this.applyTransactionAsync(rowDataTransaction, callback);
35873 };
35874 GridApi.prototype.insertItemsAtIndex = function (index, items, skipRefresh) {
35875 if (skipRefresh === void 0) { skipRefresh = false; }
35876 console.warn('AG Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.');
35877 this.updateRowData({ add: items, addIndex: index, update: null, remove: null });
35878 };
35879 GridApi.prototype.removeItems = function (rowNodes, skipRefresh) {
35880 if (skipRefresh === void 0) { skipRefresh = false; }
35881 console.warn('AG Grid: removeItems() is deprecated, use updateRowData(transaction) instead.');
35882 var dataToRemove = rowNodes.map(function (rowNode) { return rowNode.data; });
35883 this.updateRowData({ add: null, addIndex: null, update: null, remove: dataToRemove });
35884 };
35885 GridApi.prototype.addItems = function (items, skipRefresh) {
35886 if (skipRefresh === void 0) { skipRefresh = false; }
35887 console.warn('AG Grid: addItems() is deprecated, use updateRowData(transaction) instead.');
35888 this.updateRowData({ add: items, addIndex: null, update: null, remove: null });
35889 };
35890 GridApi.prototype.refreshVirtualPageCache = function () {
35891 console.warn('AG Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');
35892 this.refreshInfiniteCache();
35893 };
35894 GridApi.prototype.refreshInfinitePageCache = function () {
35895 console.warn('AG Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');
35896 this.refreshInfiniteCache();
35897 };
35898 /**
35899 * Marks all the currently loaded blocks in the cache for reload.
35900 * If you have 10 blocks in the cache, all 10 will be marked for reload.
35901 * The old data will continue to be displayed until the new data is loaded.
35902 */
35903 GridApi.prototype.refreshInfiniteCache = function () {
35904 if (this.infiniteRowModel) {
35905 this.infiniteRowModel.refreshCache();
35906 }
35907 else {
35908 console.warn("AG Grid: api.refreshInfiniteCache is only available when rowModelType='infinite'.");
35909 }
35910 };
35911 GridApi.prototype.purgeVirtualPageCache = function () {
35912 console.warn('AG Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');
35913 this.purgeInfinitePageCache();
35914 };
35915 GridApi.prototype.purgeInfinitePageCache = function () {
35916 console.warn('AG Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');
35917 this.purgeInfiniteCache();
35918 };
35919 /**
35920 * Purges the cache.
35921 * 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).
35922 * The grid will display nothing while the new blocks are loaded.
35923 * Use this to immediately remove the old data from the user.
35924 */
35925 GridApi.prototype.purgeInfiniteCache = function () {
35926 if (this.infiniteRowModel) {
35927 this.infiniteRowModel.purgeCache();
35928 }
35929 else {
35930 console.warn("AG Grid: api.purgeInfiniteCache is only available when rowModelType='infinite'.");
35931 }
35932 };
35933 /** @deprecated */
35934 GridApi.prototype.purgeEnterpriseCache = function (route) {
35935 console.warn("ag-grid: since version 18.x, api.purgeEnterpriseCache() should be replaced with api.purgeServerSideCache()");
35936 this.purgeServerSideCache(route);
35937 };
35938 /** @deprecated */
35939 GridApi.prototype.purgeServerSideCache = function (route) {
35940 if (route === void 0) { route = []; }
35941 if (this.serverSideRowModel) {
35942 console.warn("AG Grid: since v25.0, api.purgeServerSideCache is deprecated. Please use api.refreshServerSideStore({purge: true}) instead.");
35943 this.refreshServerSideStore({
35944 route: route,
35945 purge: true
35946 });
35947 }
35948 else {
35949 console.warn("AG Grid: api.purgeServerSideCache is only available when rowModelType='serverSide'.");
35950 }
35951 };
35952 /**
35953 * Refresh a server-side store.
35954 * If you pass no parameters, then the top level cache is purged.
35955 * To purge a child cache, pass in the string of keys to get to the child cache.
35956 */
35957 GridApi.prototype.refreshServerSideStore = function (params) {
35958 if (this.serverSideRowModel) {
35959 this.serverSideRowModel.refreshStore(params);
35960 }
35961 else {
35962 console.warn("AG Grid: api.refreshServerSideStore is only available when rowModelType='serverSide'.");
35963 }
35964 };
35965 /** Returns info on all server side stores. */
35966 GridApi.prototype.getServerSideStoreState = function () {
35967 if (this.serverSideRowModel) {
35968 return this.serverSideRowModel.getStoreState();
35969 }
35970 else {
35971 console.warn("AG Grid: api.getServerSideStoreState is only available when rowModelType='serverSide'.");
35972 return [];
35973 }
35974 };
35975 GridApi.prototype.getVirtualRowCount = function () {
35976 console.warn('AG Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead');
35977 return this.getInfiniteRowCount();
35978 };
35979 /** The row count defines how many rows the grid allows scrolling to. */
35980 GridApi.prototype.getInfiniteRowCount = function () {
35981 if (this.infiniteRowModel) {
35982 return this.infiniteRowModel.getRowCount();
35983 }
35984 else {
35985 console.warn("AG Grid: api.getVirtualRowCount is only available when rowModelType='virtual'.");
35986 }
35987 };
35988 GridApi.prototype.isMaxRowFound = function () {
35989 console.warn("AG Grid: api.isLastRowIndexKnown is deprecated, please use api.isLastRowIndexKnown()");
35990 return this.isLastRowIndexKnown();
35991 };
35992 /** Returns `true` if grid allows for scrolling past the last row to load more rows, thus providing infinite scroll. */
35993 GridApi.prototype.isLastRowIndexKnown = function () {
35994 if (this.infiniteRowModel) {
35995 return this.infiniteRowModel.isLastRowIndexKnown();
35996 }
35997 else {
35998 console.warn("AG Grid: api.isMaxRowFound is only available when rowModelType='virtual'.");
35999 }
36000 };
36001 GridApi.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {
36002 console.warn('AG Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead');
36003 this.setRowCount(rowCount, maxRowFound);
36004 };
36005 GridApi.prototype.setInfiniteRowCount = function (rowCount, maxRowFound) {
36006 console.warn('AG Grid: setInfiniteRowCount() is now called setRowCount(), please call setRowCount() instead');
36007 this.setRowCount(rowCount, maxRowFound);
36008 };
36009 /**
36010 * Sets the `rowCount` and `lastRowIndexKnown` properties.
36011 * The second parameter, `lastRowIndexKnown`, is optional and if left out, only `rowCount` is set.
36012 * Set `rowCount` to adjust the height of the vertical scroll.
36013 * Set `lastRowIndexKnown` to enable / disable searching for more rows.
36014 * 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.
36015 */
36016 GridApi.prototype.setRowCount = function (rowCount, maxRowFound) {
36017 if (this.infiniteRowModel) {
36018 this.infiniteRowModel.setRowCount(rowCount, maxRowFound);
36019 }
36020 else {
36021 console.warn("AG Grid: api.setRowCount is only available for Infinite Row Model.");
36022 }
36023 };
36024 GridApi.prototype.getVirtualPageState = function () {
36025 console.warn('AG Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');
36026 return this.getCacheBlockState();
36027 };
36028 GridApi.prototype.getInfinitePageState = function () {
36029 console.warn('AG Grid: getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');
36030 return this.getCacheBlockState();
36031 };
36032 /**
36033 * Returns an object representing the state of the cache. This is useful for debugging and understanding how the cache is working.
36034 */
36035 GridApi.prototype.getCacheBlockState = function () {
36036 return this.rowNodeBlockLoader.getBlockState();
36037 };
36038 GridApi.prototype.checkGridSize = function () {
36039 console.warn("in AG Grid v25.2.0, checkGridSize() was removed, as it was legacy and didn't do anything uesful.");
36040 };
36041 GridApi.prototype.getFirstRenderedRow = function () {
36042 console.warn('in AG Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow()');
36043 return this.getFirstDisplayedRow();
36044 };
36045 /** Get the index of the first displayed row due to scrolling (includes invisible rendered rows in the buffer). */
36046 GridApi.prototype.getFirstDisplayedRow = function () {
36047 return this.rowRenderer.getFirstVirtualRenderedRow();
36048 };
36049 GridApi.prototype.getLastRenderedRow = function () {
36050 console.warn('in AG Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow()');
36051 return this.getLastDisplayedRow();
36052 };
36053 /** Get the index of the last displayed row due to scrolling (includes invisible rendered rows in the buffer). */
36054 GridApi.prototype.getLastDisplayedRow = function () {
36055 return this.rowRenderer.getLastVirtualRenderedRow();
36056 };
36057 /** Returns the displayed `RowNode` at the given `index`. */
36058 GridApi.prototype.getDisplayedRowAtIndex = function (index) {
36059 return this.rowModel.getRow(index);
36060 };
36061 /** Returns the total number of displayed rows. */
36062 GridApi.prototype.getDisplayedRowCount = function () {
36063 return this.rowModel.getRowCount();
36064 };
36065 /**
36066 * Returns `true` when the last page is known.
36067 * This will always be `true` if you are using the Client-Side Row Model for pagination.
36068 * Returns `false` when the last page is not known; this only happens when using Infinite Row Model.
36069 */
36070 GridApi.prototype.paginationIsLastPageFound = function () {
36071 return this.paginationProxy.isLastPageFound();
36072 };
36073 /** Returns how many rows are being shown per page. */
36074 GridApi.prototype.paginationGetPageSize = function () {
36075 return this.paginationProxy.getPageSize();
36076 };
36077 /** Sets the `paginationPageSize`, then re-paginates the grid so the changes are applied immediately. */
36078 GridApi.prototype.paginationSetPageSize = function (size) {
36079 this.gridOptionsWrapper.setProperty('paginationPageSize', size);
36080 };
36081 /** Returns the 0-based index of the page which is showing. */
36082 GridApi.prototype.paginationGetCurrentPage = function () {
36083 return this.paginationProxy.getCurrentPage();
36084 };
36085 /** Returns the total number of pages. Returns `null` if `paginationIsLastPageFound() === false`. */
36086 GridApi.prototype.paginationGetTotalPages = function () {
36087 return this.paginationProxy.getTotalPages();
36088 };
36089 /** The total number of rows. Returns `null` if `paginationIsLastPageFound() === false`. */
36090 GridApi.prototype.paginationGetRowCount = function () {
36091 return this.paginationProxy.getMasterRowCount();
36092 };
36093 /** Navigates to the next page. */
36094 GridApi.prototype.paginationGoToNextPage = function () {
36095 this.paginationProxy.goToNextPage();
36096 };
36097 /** Navigates to the previous page. */
36098 GridApi.prototype.paginationGoToPreviousPage = function () {
36099 this.paginationProxy.goToPreviousPage();
36100 };
36101 /** Navigates to the first page. */
36102 GridApi.prototype.paginationGoToFirstPage = function () {
36103 this.paginationProxy.goToFirstPage();
36104 };
36105 /** Navigates to the last page. */
36106 GridApi.prototype.paginationGoToLastPage = function () {
36107 this.paginationProxy.goToLastPage();
36108 };
36109 /** Goes to the specified page. If the page requested doesn't exist, it will go to the last page. */
36110 GridApi.prototype.paginationGoToPage = function (page) {
36111 this.paginationProxy.goToPage(page);
36112 };
36113 GridApi.prototype.setRowClass = function (className) {
36114 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_ROW_CLASS, className);
36115 };
36116 __decorate([
36117 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('immutableService')
36118 ], GridApi.prototype, "immutableService", void 0);
36119 __decorate([
36120 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('csvCreator')
36121 ], GridApi.prototype, "csvCreator", void 0);
36122 __decorate([
36123 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('excelCreator')
36124 ], GridApi.prototype, "excelCreator", void 0);
36125 __decorate([
36126 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
36127 ], GridApi.prototype, "rowRenderer", void 0);
36128 __decorate([
36129 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('navigationService')
36130 ], GridApi.prototype, "navigationService", void 0);
36131 __decorate([
36132 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('filterManager')
36133 ], GridApi.prototype, "filterManager", void 0);
36134 __decorate([
36135 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
36136 ], GridApi.prototype, "columnModel", void 0);
36137 __decorate([
36138 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('selectionService')
36139 ], GridApi.prototype, "selectionService", void 0);
36140 __decorate([
36141 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
36142 ], GridApi.prototype, "gridOptionsWrapper", void 0);
36143 __decorate([
36144 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('valueService')
36145 ], GridApi.prototype, "valueService", void 0);
36146 __decorate([
36147 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('alignedGridsService')
36148 ], GridApi.prototype, "alignedGridsService", void 0);
36149 __decorate([
36150 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('eventService')
36151 ], GridApi.prototype, "eventService", void 0);
36152 __decorate([
36153 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('pinnedRowModel')
36154 ], GridApi.prototype, "pinnedRowModel", void 0);
36155 __decorate([
36156 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('context')
36157 ], GridApi.prototype, "context", void 0);
36158 __decorate([
36159 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowModel')
36160 ], GridApi.prototype, "rowModel", void 0);
36161 __decorate([
36162 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('sortController')
36163 ], GridApi.prototype, "sortController", void 0);
36164 __decorate([
36165 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('paginationProxy')
36166 ], GridApi.prototype, "paginationProxy", void 0);
36167 __decorate([
36168 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
36169 ], GridApi.prototype, "focusService", void 0);
36170 __decorate([
36171 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
36172 ], GridApi.prototype, "dragAndDropService", void 0);
36173 __decorate([
36174 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('rangeService')
36175 ], GridApi.prototype, "rangeService", void 0);
36176 __decorate([
36177 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('clipboardService')
36178 ], GridApi.prototype, "clipboardService", void 0);
36179 __decorate([
36180 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('aggFuncService')
36181 ], GridApi.prototype, "aggFuncService", void 0);
36182 __decorate([
36183 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('menuFactory')
36184 ], GridApi.prototype, "menuFactory", void 0);
36185 __decorate([
36186 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('contextMenuFactory')
36187 ], GridApi.prototype, "contextMenuFactory", void 0);
36188 __decorate([
36189 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('valueCache')
36190 ], GridApi.prototype, "valueCache", void 0);
36191 __decorate([
36192 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('animationFrameService')
36193 ], GridApi.prototype, "animationFrameService", void 0);
36194 __decorate([
36195 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('statusBarService')
36196 ], GridApi.prototype, "statusBarService", void 0);
36197 __decorate([
36198 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('chartService')
36199 ], GridApi.prototype, "chartService", void 0);
36200 __decorate([
36201 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('undoRedoService')
36202 ], GridApi.prototype, "undoRedoService", void 0);
36203 __decorate([
36204 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('rowNodeBlockLoader')
36205 ], GridApi.prototype, "rowNodeBlockLoader", void 0);
36206 __decorate([
36207 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('ssrmTransactionManager')
36208 ], GridApi.prototype, "serverSideTransactionManager", void 0);
36209 __decorate([
36210 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
36211 ], GridApi.prototype, "ctrlsService", void 0);
36212 __decorate([
36213 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('frameworkComponentWrapper')
36214 ], GridApi.prototype, "frameworkComponentWrapper", void 0);
36215 __decorate([
36216 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
36217 ], GridApi.prototype, "init", null);
36218 __decorate([
36219 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
36220 ], GridApi.prototype, "cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid", null);
36221 GridApi = __decorate([
36222 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('gridApi')
36223 ], GridApi);
36224 return GridApi;
36225}());
36226
36227
36228
36229
36230
36231/***/ }),
36232/* 157 */
36233/***/ (function(module, __webpack_exports__, __webpack_require__) {
36234
36235"use strict";
36236__webpack_require__.r(__webpack_exports__);
36237/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelSteps", function() { return ClientSideRowModelSteps; });
36238/**
36239 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36240 * @version v27.3.0
36241 * @link https://www.ag-grid.com/
36242 * @license MIT
36243 */
36244var ClientSideRowModelSteps;
36245(function (ClientSideRowModelSteps) {
36246 ClientSideRowModelSteps["EVERYTHING"] = "group";
36247 ClientSideRowModelSteps["FILTER"] = "filter";
36248 ClientSideRowModelSteps["SORT"] = "sort";
36249 ClientSideRowModelSteps["MAP"] = "map";
36250 ClientSideRowModelSteps["AGGREGATE"] = "aggregate";
36251 ClientSideRowModelSteps["FILTER_AGGREGATES"] = "filter_aggregates";
36252 ClientSideRowModelSteps["PIVOT"] = "pivot";
36253 ClientSideRowModelSteps["NOTHING"] = "nothing";
36254})(ClientSideRowModelSteps || (ClientSideRowModelSteps = {}));
36255
36256
36257
36258
36259/***/ }),
36260/* 158 */
36261/***/ (function(module, __webpack_exports__, __webpack_require__) {
36262
36263"use strict";
36264__webpack_require__.r(__webpack_exports__);
36265/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetLeftFeature", function() { return SetLeftFeature; });
36266/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
36267/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
36268/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
36269/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
36270/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44);
36271/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18);
36272/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
36273/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(24);
36274/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(112);
36275/**
36276 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36277 * @version v27.3.0
36278 * @link https://www.ag-grid.com/
36279 * @license MIT
36280 */
36281var __extends = (undefined && undefined.__extends) || (function () {
36282 var extendStatics = function (d, b) {
36283 extendStatics = Object.setPrototypeOf ||
36284 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
36285 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
36286 return extendStatics(d, b);
36287 };
36288 return function (d, b) {
36289 extendStatics(d, b);
36290 function __() { this.constructor = d; }
36291 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36292 };
36293})();
36294var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
36295 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36296 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
36297 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;
36298 return c > 3 && r && Object.defineProperty(target, key, r), r;
36299};
36300
36301
36302
36303
36304
36305
36306
36307
36308
36309var SetLeftFeature = /** @class */ (function (_super) {
36310 __extends(SetLeftFeature, _super);
36311 function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {
36312 var _this = _super.call(this) || this;
36313 _this.columnOrGroup = columnOrGroup;
36314 _this.eCell = eCell;
36315 _this.ariaEl = _this.eCell.querySelector('[role=columnheader]') || _this.eCell;
36316 _this.colsSpanning = colsSpanning;
36317 _this.beans = beans;
36318 return _this;
36319 }
36320 SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {
36321 this.colsSpanning = colsSpanning;
36322 this.onLeftChanged();
36323 };
36324 SetLeftFeature.prototype.getColumnOrGroup = function () {
36325 if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {
36326 return Object(_utils_array__WEBPACK_IMPORTED_MODULE_5__["last"])(this.colsSpanning);
36327 }
36328 return this.columnOrGroup;
36329 };
36330 SetLeftFeature.prototype.postConstruct = function () {
36331 this.addManagedListener(this.columnOrGroup, _entities_column__WEBPACK_IMPORTED_MODULE_0__["Column"].EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));
36332 this.setLeftFirstTime();
36333 // when in print layout, the left position is also dependent on the width of the pinned sections.
36334 // so additionally update left if any column width changes.
36335 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));
36336 // setting left has a dependency on print layout
36337 this.addManagedListener(this.beans.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_8__["GridOptionsWrapper"].PROP_DOM_LAYOUT, this.onLeftChanged.bind(this));
36338 };
36339 SetLeftFeature.prototype.setLeftFirstTime = function () {
36340 var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();
36341 var oldLeftExists = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(this.columnOrGroup.getOldLeft());
36342 var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;
36343 if (animateColumnMove) {
36344 this.animateInLeft();
36345 }
36346 else {
36347 this.onLeftChanged();
36348 }
36349 };
36350 SetLeftFeature.prototype.animateInLeft = function () {
36351 var _this = this;
36352 var colOrGroup = this.getColumnOrGroup();
36353 var left = colOrGroup.getLeft();
36354 var oldLeft = colOrGroup.getOldLeft();
36355 var oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, oldLeft);
36356 var actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);
36357 this.setLeft(oldActualLeft);
36358 // we must keep track of the left we want to set to, as this would otherwise lead to a race
36359 // condition, if the user changed the left value many times in one VM turn, then we want to make
36360 // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left
36361 // position. eg if user changes column position twice, then setLeft() below executes twice in next
36362 // VM turn, but only one (the correct one) should get applied.
36363 this.actualLeft = actualLeft;
36364 this.beans.columnAnimationService.executeNextVMTurn(function () {
36365 // test this left value is the latest one to be applied, and if not, do nothing
36366 if (_this.actualLeft === actualLeft) {
36367 _this.setLeft(actualLeft);
36368 }
36369 });
36370 };
36371 SetLeftFeature.prototype.onLeftChanged = function () {
36372 var colOrGroup = this.getColumnOrGroup();
36373 var left = colOrGroup.getLeft();
36374 this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);
36375 this.setLeft(this.actualLeft);
36376 };
36377 SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {
36378 var printLayout = this.beans.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_PRINT;
36379 if (!printLayout) {
36380 return leftPosition;
36381 }
36382 if (colOrGroup.getPinned() === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT) {
36383 return leftPosition;
36384 }
36385 var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();
36386 if (colOrGroup.getPinned() === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT) {
36387 var bodyWidth = this.beans.columnModel.getBodyContainerWidth();
36388 return leftWidth + bodyWidth + leftPosition;
36389 }
36390 // is in body
36391 return leftWidth + leftPosition;
36392 };
36393 SetLeftFeature.prototype.setLeft = function (value) {
36394 // if the value is null, then that means the column is no longer
36395 // displayed. there is logic in the rendering to fade these columns
36396 // out, so we don't try and change their left positions.
36397 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(value)) {
36398 this.eCell.style.left = value + "px";
36399 }
36400 var indexColumn;
36401 if (this.columnOrGroup instanceof _entities_column__WEBPACK_IMPORTED_MODULE_0__["Column"]) {
36402 indexColumn = this.columnOrGroup;
36403 }
36404 else {
36405 var columnGroup = this.columnOrGroup;
36406 var children = columnGroup.getLeafColumns();
36407 if (!children.length) {
36408 return;
36409 }
36410 if (children.length > 1) {
36411 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_4__["setAriaColSpan"])(this.ariaEl, children.length);
36412 }
36413 indexColumn = children[0];
36414 }
36415 var index = this.beans.columnModel.getAriaColumnIndex(indexColumn);
36416 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_4__["setAriaColIndex"])(this.ariaEl, index);
36417 };
36418 __decorate([
36419 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
36420 ], SetLeftFeature.prototype, "postConstruct", null);
36421 return SetLeftFeature;
36422}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
36423
36424
36425
36426
36427
36428/***/ }),
36429/* 159 */
36430/***/ (function(module, __webpack_exports__, __webpack_require__) {
36431
36432"use strict";
36433__webpack_require__.r(__webpack_exports__);
36434/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HoverFeature", function() { return HoverFeature; });
36435/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
36436/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
36437/**
36438 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36439 * @version v27.3.0
36440 * @link https://www.ag-grid.com/
36441 * @license MIT
36442 */
36443var __extends = (undefined && undefined.__extends) || (function () {
36444 var extendStatics = function (d, b) {
36445 extendStatics = Object.setPrototypeOf ||
36446 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
36447 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
36448 return extendStatics(d, b);
36449 };
36450 return function (d, b) {
36451 extendStatics(d, b);
36452 function __() { this.constructor = d; }
36453 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36454 };
36455})();
36456var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
36457 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36458 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
36459 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;
36460 return c > 3 && r && Object.defineProperty(target, key, r), r;
36461};
36462
36463
36464var HoverFeature = /** @class */ (function (_super) {
36465 __extends(HoverFeature, _super);
36466 function HoverFeature(columns, element) {
36467 var _this = _super.call(this) || this;
36468 _this.columns = columns;
36469 _this.element = element;
36470 return _this;
36471 }
36472 HoverFeature.prototype.postConstruct = function () {
36473 if (this.gridOptionsWrapper.isColumnHoverHighlight()) {
36474 this.addMouseHoverListeners();
36475 }
36476 };
36477 HoverFeature.prototype.addMouseHoverListeners = function () {
36478 this.addManagedListener(this.element, 'mouseout', this.onMouseOut.bind(this));
36479 this.addManagedListener(this.element, 'mouseover', this.onMouseOver.bind(this));
36480 };
36481 HoverFeature.prototype.onMouseOut = function () {
36482 this.columnHoverService.clearMouseOver();
36483 };
36484 HoverFeature.prototype.onMouseOver = function () {
36485 this.columnHoverService.setMouseOver(this.columns);
36486 };
36487 __decorate([
36488 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnHoverService')
36489 ], HoverFeature.prototype, "columnHoverService", void 0);
36490 __decorate([
36491 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
36492 ], HoverFeature.prototype, "postConstruct", null);
36493 return HoverFeature;
36494}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
36495
36496
36497
36498
36499
36500/***/ }),
36501/* 160 */
36502/***/ (function(module, __webpack_exports__, __webpack_require__) {
36503
36504"use strict";
36505__webpack_require__.r(__webpack_exports__);
36506/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderCellCtrl", function() { return HeaderCellCtrl; });
36507/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65);
36508/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
36509/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97);
36510/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
36511/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
36512/* harmony import */ var _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(158);
36513/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
36514/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(64);
36515/* harmony import */ var _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(126);
36516/* harmony import */ var _abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(155);
36517/* harmony import */ var _cssClassApplier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(147);
36518/* harmony import */ var _hoverFeature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(159);
36519/* harmony import */ var _resizeFeature__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(161);
36520/* harmony import */ var _selectAllFeature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(162);
36521/**
36522 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36523 * @version v27.3.0
36524 * @link https://www.ag-grid.com/
36525 * @license MIT
36526 */
36527var __extends = (undefined && undefined.__extends) || (function () {
36528 var extendStatics = function (d, b) {
36529 extendStatics = Object.setPrototypeOf ||
36530 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
36531 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
36532 return extendStatics(d, b);
36533 };
36534 return function (d, b) {
36535 extendStatics(d, b);
36536 function __() { this.constructor = d; }
36537 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36538 };
36539})();
36540var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
36541 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36542 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
36543 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;
36544 return c > 3 && r && Object.defineProperty(target, key, r), r;
36545};
36546
36547
36548
36549
36550
36551
36552
36553
36554
36555
36556
36557
36558
36559
36560var HeaderCellCtrl = /** @class */ (function (_super) {
36561 __extends(HeaderCellCtrl, _super);
36562 function HeaderCellCtrl(column, parentRowCtrl) {
36563 var _this = _super.call(this, column, parentRowCtrl) || this;
36564 _this.refreshFunctions = [];
36565 _this.userHeaderClasses = new Set();
36566 _this.ariaDescriptionProperties = new Map();
36567 _this.column = column;
36568 return _this;
36569 }
36570 HeaderCellCtrl.prototype.setComp = function (comp, eGui, eResize) {
36571 var _this = this;
36572 _super.prototype.setGui.call(this, eGui);
36573 this.comp = comp;
36574 this.colDefVersion = this.columnModel.getColDefVersion();
36575 this.updateState();
36576 this.setupWidth();
36577 this.setupMovingCss();
36578 this.setupMenuClass();
36579 this.setupSortableClass();
36580 this.addColumnHoverListener();
36581 this.setupFilterCss();
36582 this.setupColId();
36583 this.setupClassesFromColDef();
36584 this.setupTooltip();
36585 this.addActiveHeaderMouseListeners();
36586 this.setupSelectAll();
36587 this.setupUserComp();
36588 this.refreshAria();
36589 this.createManagedBean(new _resizeFeature__WEBPACK_IMPORTED_MODULE_12__["ResizeFeature"](this.getPinned(), this.column, eResize, comp, this));
36590 this.createManagedBean(new _hoverFeature__WEBPACK_IMPORTED_MODULE_11__["HoverFeature"]([this.column], eGui));
36591 this.createManagedBean(new _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_5__["SetLeftFeature"](this.column, eGui, this.beans));
36592 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_7__["ManagedFocusFeature"](eGui, {
36593 shouldStopEventPropagation: function (e) { return _this.shouldStopEventPropagation(e); },
36594 onTabKeyDown: function () { return null; },
36595 handleKeyDown: this.handleKeyDown.bind(this),
36596 onFocusIn: this.onFocusIn.bind(this),
36597 onFocusOut: this.onFocusOut.bind(this)
36598 }));
36599 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));
36600 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));
36601 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));
36602 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));
36603 };
36604 HeaderCellCtrl.prototype.setupUserComp = function () {
36605 var compDetails = this.lookupUserCompDetails();
36606 this.setCompDetails(compDetails);
36607 };
36608 HeaderCellCtrl.prototype.setCompDetails = function (compDetails) {
36609 this.userCompDetails = compDetails;
36610 this.comp.setUserCompDetails(compDetails);
36611 };
36612 HeaderCellCtrl.prototype.lookupUserCompDetails = function () {
36613 var params = this.createParams();
36614 var colDef = this.column.getColDef();
36615 return this.userComponentFactory.getHeaderCompDetails(colDef, params);
36616 };
36617 HeaderCellCtrl.prototype.createParams = function () {
36618 var _this = this;
36619 var colDef = this.column.getColDef();
36620 var params = {
36621 column: this.column,
36622 displayName: this.displayName,
36623 enableSorting: colDef.sortable,
36624 enableMenu: this.menuEnabled,
36625 showColumnMenu: function (source) {
36626 _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);
36627 },
36628 progressSort: function (multiSort) {
36629 _this.sortController.progressSort(_this.column, !!multiSort, "uiColumnSorted");
36630 },
36631 setSort: function (sort, multiSort) {
36632 _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, "uiColumnSorted");
36633 },
36634 api: this.gridApi,
36635 columnApi: this.columnApi,
36636 context: this.gridOptionsWrapper.getContext(),
36637 eGridHeader: this.getGui()
36638 };
36639 return params;
36640 };
36641 HeaderCellCtrl.prototype.setupSelectAll = function () {
36642 this.selectAllFeature = this.createManagedBean(new _selectAllFeature__WEBPACK_IMPORTED_MODULE_13__["SelectAllFeature"](this.column));
36643 this.selectAllFeature.setComp(this);
36644 };
36645 HeaderCellCtrl.prototype.getSelectAllGui = function () {
36646 return this.selectAllFeature.getCheckboxGui();
36647 };
36648 HeaderCellCtrl.prototype.handleKeyDown = function (e) {
36649 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].SPACE) {
36650 this.selectAllFeature.onSpaceKeyPressed(e);
36651 }
36652 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].ENTER) {
36653 this.onEnterKeyPressed(e);
36654 }
36655 };
36656 HeaderCellCtrl.prototype.onEnterKeyPressed = function (e) {
36657 /// THIS IS BAD - we are assuming the header is not a user provided comp
36658 var headerComp = this.comp.getUserCompInstance();
36659 if (!headerComp) {
36660 return;
36661 }
36662 if (e.ctrlKey || e.metaKey) {
36663 if (this.menuEnabled && headerComp.showMenu) {
36664 e.preventDefault();
36665 headerComp.showMenu();
36666 }
36667 }
36668 else if (this.sortable) {
36669 var multiSort = e.shiftKey;
36670 this.sortController.progressSort(this.column, multiSort, "uiColumnSorted");
36671 }
36672 };
36673 HeaderCellCtrl.prototype.isMenuEnabled = function () {
36674 return this.menuEnabled;
36675 };
36676 HeaderCellCtrl.prototype.onFocusIn = function (e) {
36677 if (!this.getGui().contains(e.relatedTarget)) {
36678 var rowIndex = this.getRowIndex();
36679 this.focusService.setFocusedHeader(rowIndex, this.column);
36680 }
36681 this.setActiveHeader(true);
36682 };
36683 HeaderCellCtrl.prototype.onFocusOut = function (e) {
36684 if (this.getGui().contains(e.relatedTarget)) {
36685 return;
36686 }
36687 this.setActiveHeader(false);
36688 };
36689 HeaderCellCtrl.prototype.setupTooltip = function () {
36690 var _this = this;
36691 var tooltipCtrl = {
36692 getColumn: function () { return _this.column; },
36693 getColDef: function () { return _this.column.getColDef(); },
36694 getGui: function () { return _this.eGui; },
36695 getLocation: function () { return 'header'; },
36696 getTooltipValue: function () {
36697 var res = _this.column.getColDef().headerTooltip;
36698 return res;
36699 },
36700 };
36701 var tooltipFeature = this.createManagedBean(new _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_8__["TooltipFeature"](tooltipCtrl, this.beans));
36702 tooltipFeature.setComp(this.comp);
36703 this.refreshFunctions.push(function () { return tooltipFeature.refreshToolTip(); });
36704 };
36705 HeaderCellCtrl.prototype.setupClassesFromColDef = function () {
36706 var _this = this;
36707 var refreshHeaderClasses = function () {
36708 var colDef = _this.column.getColDef();
36709 var goa = _this.gridOptionsWrapper;
36710 var classes = _cssClassApplier__WEBPACK_IMPORTED_MODULE_10__["CssClassApplier"].getHeaderClassesFromColDef(colDef, goa, _this.column, null);
36711 var oldClasses = _this.userHeaderClasses;
36712 _this.userHeaderClasses = new Set(classes);
36713 classes.forEach(function (c) {
36714 if (oldClasses.has(c)) {
36715 // class already added, no need to apply it, but remove from old set
36716 oldClasses.delete(c);
36717 }
36718 else {
36719 // class new since last time, so apply it
36720 _this.comp.addOrRemoveCssClass(c, true);
36721 }
36722 });
36723 // now old set only has classes that were applied last time, but not this time, so remove them
36724 oldClasses.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, false); });
36725 };
36726 this.refreshFunctions.push(refreshHeaderClasses);
36727 refreshHeaderClasses();
36728 };
36729 HeaderCellCtrl.prototype.setDragSource = function (eSource) {
36730 var _this = this;
36731 this.dragSourceElement = eSource;
36732 this.removeDragSource();
36733 if (!eSource) {
36734 return;
36735 }
36736 if (!this.draggable) {
36737 return;
36738 }
36739 this.moveDragSource = {
36740 type: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragSourceType"].HeaderCell,
36741 eElement: eSource,
36742 defaultIconName: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_HIDE,
36743 getDragItem: function () { return _this.createDragItem(); },
36744 dragItemName: this.displayName,
36745 onDragStarted: function () { return _this.column.setMoving(true, "uiColumnMoved"); },
36746 onDragStopped: function () { return _this.column.setMoving(false, "uiColumnMoved"); }
36747 };
36748 this.dragAndDropService.addDragSource(this.moveDragSource, true);
36749 };
36750 HeaderCellCtrl.prototype.createDragItem = function () {
36751 var visibleState = {};
36752 visibleState[this.column.getId()] = this.column.isVisible();
36753 return {
36754 columns: [this.column],
36755 visibleState: visibleState
36756 };
36757 };
36758 HeaderCellCtrl.prototype.removeDragSource = function () {
36759 if (this.moveDragSource) {
36760 this.dragAndDropService.removeDragSource(this.moveDragSource);
36761 this.moveDragSource = undefined;
36762 }
36763 };
36764 HeaderCellCtrl.prototype.onNewColumnsLoaded = function () {
36765 var colDefVersionNow = this.columnModel.getColDefVersion();
36766 if (colDefVersionNow != this.colDefVersion) {
36767 this.colDefVersion = colDefVersionNow;
36768 this.refresh();
36769 }
36770 };
36771 HeaderCellCtrl.prototype.updateState = function () {
36772 var colDef = this.column.getColDef();
36773 this.menuEnabled = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;
36774 this.sortable = colDef.sortable;
36775 this.displayName = this.calculateDisplayName();
36776 this.draggable = this.workOutDraggable();
36777 };
36778 HeaderCellCtrl.prototype.addRefreshFunction = function (func) {
36779 this.refreshFunctions.push(func);
36780 };
36781 HeaderCellCtrl.prototype.refresh = function () {
36782 this.updateState();
36783 this.refreshHeaderComp();
36784 this.refreshAria();
36785 this.refreshFunctions.forEach(function (f) { return f(); });
36786 };
36787 HeaderCellCtrl.prototype.refreshHeaderComp = function () {
36788 var newCompDetails = this.lookupUserCompDetails();
36789 var compInstance = this.comp.getUserCompInstance();
36790 // only try refresh if old comp exists adn it is the correct type
36791 var attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;
36792 var headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;
36793 if (headerCompRefreshed) {
36794 // we do this as a refresh happens after colDefs change, and it's possible the column has had it's
36795 // draggable property toggled. no need to call this if not refreshing, as setDragSource is done
36796 // as part of appendHeaderComp
36797 this.setDragSource(this.dragSourceElement);
36798 }
36799 else {
36800 this.setCompDetails(newCompDetails);
36801 }
36802 };
36803 HeaderCellCtrl.prototype.attemptHeaderCompRefresh = function (params) {
36804 var headerComp = this.comp.getUserCompInstance();
36805 if (!headerComp) {
36806 return false;
36807 }
36808 // if no refresh method, then we want to replace the headerComp
36809 if (!headerComp.refresh) {
36810 return false;
36811 }
36812 var res = headerComp.refresh(params);
36813 return res;
36814 };
36815 HeaderCellCtrl.prototype.calculateDisplayName = function () {
36816 return this.columnModel.getDisplayNameForColumn(this.column, 'header', true);
36817 };
36818 HeaderCellCtrl.prototype.checkDisplayName = function () {
36819 // display name can change if aggFunc different, eg sum(Gold) is now max(Gold)
36820 if (this.displayName !== this.calculateDisplayName()) {
36821 this.refresh();
36822 }
36823 };
36824 HeaderCellCtrl.prototype.workOutDraggable = function () {
36825 var colDef = this.column.getColDef();
36826 var isSuppressMovableColumns = this.gridOptionsWrapper.isSuppressMovableColumns();
36827 var colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;
36828 // we should still be allowed drag the column, even if it can't be moved, if the column
36829 // can be dragged to a rowGroup or pivot drop zone
36830 return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;
36831 };
36832 HeaderCellCtrl.prototype.onColumnRowGroupChanged = function () {
36833 this.checkDisplayName();
36834 };
36835 HeaderCellCtrl.prototype.onColumnPivotChanged = function () {
36836 this.checkDisplayName();
36837 };
36838 HeaderCellCtrl.prototype.onColumnValueChanged = function () {
36839 this.checkDisplayName();
36840 };
36841 HeaderCellCtrl.prototype.setupWidth = function () {
36842 var _this = this;
36843 var listener = function () {
36844 _this.comp.setWidth(_this.column.getActualWidth() + 'px');
36845 };
36846 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_WIDTH_CHANGED, listener);
36847 listener();
36848 };
36849 HeaderCellCtrl.prototype.setupMovingCss = function () {
36850 var _this = this;
36851 var listener = function () {
36852 // this is what makes the header go dark when it is been moved (gives impression to
36853 // user that the column was picked up).
36854 _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.column.isMoving());
36855 };
36856 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_MOVING_CHANGED, listener);
36857 listener();
36858 };
36859 HeaderCellCtrl.prototype.setupMenuClass = function () {
36860 var _this = this;
36861 var listener = function () {
36862 _this.comp.addOrRemoveCssClass('ag-column-menu-visible', _this.column.isMenuVisible());
36863 };
36864 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_MENU_VISIBLE_CHANGED, listener);
36865 listener();
36866 };
36867 HeaderCellCtrl.prototype.setupSortableClass = function () {
36868 var _this = this;
36869 var updateSortableCssClass = function () {
36870 _this.comp.addOrRemoveCssClass('ag-header-cell-sortable', !!_this.sortable);
36871 };
36872 updateSortableCssClass();
36873 this.addRefreshFunction(updateSortableCssClass);
36874 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_SORT_CHANGED, this.refreshAriaSort.bind(this));
36875 };
36876 HeaderCellCtrl.prototype.refreshAriaSort = function () {
36877 if (this.sortable) {
36878 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
36879 this.comp.setAriaSort(Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["getAriaSortState"])(this.column));
36880 this.setAriaDescriptionProperty('sort', translate('ariaSortableColumn', 'Press ENTER to sort.'));
36881 }
36882 else {
36883 this.comp.setAriaSort();
36884 this.setAriaDescriptionProperty('sort', null);
36885 }
36886 };
36887 HeaderCellCtrl.prototype.refreshAriaMenu = function () {
36888 if (this.menuEnabled) {
36889 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
36890 this.setAriaDescriptionProperty('menu', translate('ariaMenuColumn', 'Press CTRL ENTER to open column menu.'));
36891 }
36892 else {
36893 this.setAriaDescriptionProperty('menu', null);
36894 }
36895 };
36896 HeaderCellCtrl.prototype.setAriaDescriptionProperty = function (property, value) {
36897 if (value != null) {
36898 this.ariaDescriptionProperties.set(property, value);
36899 }
36900 else {
36901 this.ariaDescriptionProperties.delete(property);
36902 }
36903 };
36904 HeaderCellCtrl.prototype.refreshAriaDescription = function () {
36905 var descriptionArray = Array.from(this.ariaDescriptionProperties.values());
36906 this.comp.setAriaDescription(descriptionArray.length ? descriptionArray.join(' ') : undefined);
36907 };
36908 HeaderCellCtrl.prototype.refreshAria = function () {
36909 this.refreshAriaSort();
36910 this.refreshAriaMenu();
36911 this.refreshAriaDescription();
36912 };
36913 HeaderCellCtrl.prototype.addColumnHoverListener = function () {
36914 var _this = this;
36915 var listener = function () {
36916 if (!_this.gridOptionsWrapper.isColumnHoverHighlight()) {
36917 return;
36918 }
36919 var isHovered = _this.columnHoverService.isHovered(_this.column);
36920 _this.comp.addOrRemoveCssClass('ag-column-hover', isHovered);
36921 };
36922 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_HOVER_CHANGED, listener);
36923 listener();
36924 };
36925 HeaderCellCtrl.prototype.setupFilterCss = function () {
36926 var _this = this;
36927 var listener = function () {
36928 _this.comp.addOrRemoveCssClass('ag-header-cell-filtered', _this.column.isFilterActive());
36929 };
36930 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_FILTER_ACTIVE_CHANGED, listener);
36931 listener();
36932 };
36933 HeaderCellCtrl.prototype.setupColId = function () {
36934 this.comp.setColId(this.column.getColId());
36935 };
36936 HeaderCellCtrl.prototype.addActiveHeaderMouseListeners = function () {
36937 var _this = this;
36938 var listener = function (e) { return _this.setActiveHeader(e.type === 'mouseenter'); };
36939 this.addManagedListener(this.getGui(), 'mouseenter', listener);
36940 this.addManagedListener(this.getGui(), 'mouseleave', listener);
36941 };
36942 HeaderCellCtrl.prototype.setActiveHeader = function (active) {
36943 this.comp.addOrRemoveCssClass('ag-header-active', active);
36944 };
36945 __decorate([
36946 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
36947 ], HeaderCellCtrl.prototype, "columnModel", void 0);
36948 __decorate([
36949 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnHoverService')
36950 ], HeaderCellCtrl.prototype, "columnHoverService", void 0);
36951 __decorate([
36952 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('beans')
36953 ], HeaderCellCtrl.prototype, "beans", void 0);
36954 __decorate([
36955 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('sortController')
36956 ], HeaderCellCtrl.prototype, "sortController", void 0);
36957 __decorate([
36958 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('menuFactory')
36959 ], HeaderCellCtrl.prototype, "menuFactory", void 0);
36960 __decorate([
36961 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
36962 ], HeaderCellCtrl.prototype, "dragAndDropService", void 0);
36963 __decorate([
36964 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
36965 ], HeaderCellCtrl.prototype, "gridApi", void 0);
36966 __decorate([
36967 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
36968 ], HeaderCellCtrl.prototype, "columnApi", void 0);
36969 __decorate([
36970 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
36971 ], HeaderCellCtrl.prototype, "userComponentFactory", void 0);
36972 __decorate([
36973 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
36974 ], HeaderCellCtrl.prototype, "removeDragSource", null);
36975 return HeaderCellCtrl;
36976}(_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_9__["AbstractHeaderCellCtrl"]));
36977
36978
36979
36980
36981
36982/***/ }),
36983/* 161 */
36984/***/ (function(module, __webpack_exports__, __webpack_require__) {
36985
36986"use strict";
36987__webpack_require__.r(__webpack_exports__);
36988/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResizeFeature", function() { return ResizeFeature; });
36989/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
36990/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
36991/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
36992/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
36993/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82);
36994/**
36995 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36996 * @version v27.3.0
36997 * @link https://www.ag-grid.com/
36998 * @license MIT
36999 */
37000var __extends = (undefined && undefined.__extends) || (function () {
37001 var extendStatics = function (d, b) {
37002 extendStatics = Object.setPrototypeOf ||
37003 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37004 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37005 return extendStatics(d, b);
37006 };
37007 return function (d, b) {
37008 extendStatics(d, b);
37009 function __() { this.constructor = d; }
37010 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37011 };
37012})();
37013var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
37014 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37015 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37016 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;
37017 return c > 3 && r && Object.defineProperty(target, key, r), r;
37018};
37019
37020
37021
37022
37023
37024var ResizeFeature = /** @class */ (function (_super) {
37025 __extends(ResizeFeature, _super);
37026 function ResizeFeature(pinned, column, eResize, comp, ctrl) {
37027 var _this = _super.call(this) || this;
37028 _this.pinned = pinned;
37029 _this.column = column;
37030 _this.eResize = eResize;
37031 _this.comp = comp;
37032 _this.ctrl = ctrl;
37033 return _this;
37034 }
37035 ResizeFeature.prototype.postConstruct = function () {
37036 var _this = this;
37037 var colDef = this.column.getColDef();
37038 var destroyResizeFuncs = [];
37039 var canResize;
37040 var canAutosize;
37041 var addResize = function () {
37042 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(_this.eResize, canResize);
37043 if (!canResize) {
37044 return;
37045 }
37046 var finishedWithResizeFunc = _this.horizontalResizeService.addResizeBar({
37047 eResizeBar: _this.eResize,
37048 onResizeStart: _this.onResizeStart.bind(_this),
37049 onResizing: _this.onResizing.bind(_this, false),
37050 onResizeEnd: _this.onResizing.bind(_this, true)
37051 });
37052 destroyResizeFuncs.push(finishedWithResizeFunc);
37053 if (canAutosize) {
37054 var skipHeaderOnAutoSize_1 = _this.gridOptionsWrapper.isSkipHeaderOnAutoSize();
37055 var autoSizeColListener_1 = function () {
37056 _this.columnModel.autoSizeColumn(_this.column, skipHeaderOnAutoSize_1, "uiColumnResized");
37057 };
37058 _this.eResize.addEventListener('dblclick', autoSizeColListener_1);
37059 var touchListener_1 = new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_4__["TouchListener"](_this.eResize);
37060 touchListener_1.addEventListener(_widgets_touchListener__WEBPACK_IMPORTED_MODULE_4__["TouchListener"].EVENT_DOUBLE_TAP, autoSizeColListener_1);
37061 _this.addDestroyFunc(function () {
37062 _this.eResize.removeEventListener('dblclick', autoSizeColListener_1);
37063 touchListener_1.removeEventListener(_widgets_touchListener__WEBPACK_IMPORTED_MODULE_4__["TouchListener"].EVENT_DOUBLE_TAP, autoSizeColListener_1);
37064 touchListener_1.destroy();
37065 });
37066 }
37067 };
37068 var removeResize = function () {
37069 destroyResizeFuncs.forEach(function (f) { return f(); });
37070 destroyResizeFuncs.length = 0;
37071 };
37072 var refresh = function () {
37073 var resize = _this.column.isResizable();
37074 var autoSize = !_this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;
37075 var propertyChange = resize !== canResize || autoSize !== canAutosize;
37076 if (propertyChange) {
37077 canResize = resize;
37078 canAutosize = autoSize;
37079 removeResize();
37080 addResize();
37081 }
37082 };
37083 refresh();
37084 this.addDestroyFunc(removeResize);
37085 this.ctrl.addRefreshFunction(refresh);
37086 };
37087 ResizeFeature.prototype.onResizing = function (finished, resizeAmount) {
37088 var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);
37089 var columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];
37090 this.columnModel.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, "uiColumnDragged");
37091 if (finished) {
37092 this.comp.addOrRemoveCssClass('ag-column-resizing', false);
37093 }
37094 };
37095 ResizeFeature.prototype.onResizeStart = function (shiftKey) {
37096 this.resizeStartWidth = this.column.getActualWidth();
37097 this.resizeWithShiftKey = shiftKey;
37098 this.comp.addOrRemoveCssClass('ag-column-resizing', true);
37099 };
37100 // optionally inverts the drag, depending on pinned and RTL
37101 // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?
37102 ResizeFeature.prototype.normaliseResizeAmount = function (dragChange) {
37103 var result = dragChange;
37104 var notPinningLeft = this.pinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT;
37105 var pinningRight = this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT;
37106 if (this.gridOptionsWrapper.isEnableRtl()) {
37107 // for RTL, dragging left makes the col bigger, except when pinning left
37108 if (notPinningLeft) {
37109 result *= -1;
37110 }
37111 }
37112 else {
37113 // for LTR (ie normal), dragging left makes the col smaller, except when pinning right
37114 if (pinningRight) {
37115 result *= -1;
37116 }
37117 }
37118 return result;
37119 };
37120 __decorate([
37121 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('horizontalResizeService')
37122 ], ResizeFeature.prototype, "horizontalResizeService", void 0);
37123 __decorate([
37124 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
37125 ], ResizeFeature.prototype, "columnModel", void 0);
37126 __decorate([
37127 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
37128 ], ResizeFeature.prototype, "postConstruct", null);
37129 return ResizeFeature;
37130}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
37131
37132
37133
37134
37135
37136/***/ }),
37137/* 162 */
37138/***/ (function(module, __webpack_exports__, __webpack_require__) {
37139
37140"use strict";
37141__webpack_require__.r(__webpack_exports__);
37142/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectAllFeature", function() { return SelectAllFeature; });
37143/* harmony import */ var _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
37144/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
37145/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
37146/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
37147/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
37148/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44);
37149/**
37150 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37151 * @version v27.3.0
37152 * @link https://www.ag-grid.com/
37153 * @license MIT
37154 */
37155var __extends = (undefined && undefined.__extends) || (function () {
37156 var extendStatics = function (d, b) {
37157 extendStatics = Object.setPrototypeOf ||
37158 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37159 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37160 return extendStatics(d, b);
37161 };
37162 return function (d, b) {
37163 extendStatics(d, b);
37164 function __() { this.constructor = d; }
37165 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37166 };
37167})();
37168var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
37169 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37170 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37171 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;
37172 return c > 3 && r && Object.defineProperty(target, key, r), r;
37173};
37174
37175
37176
37177
37178
37179
37180var SelectAllFeature = /** @class */ (function (_super) {
37181 __extends(SelectAllFeature, _super);
37182 function SelectAllFeature(column) {
37183 var _this = _super.call(this) || this;
37184 _this.cbSelectAllVisible = false;
37185 _this.processingEventFromCheckbox = false;
37186 _this.column = column;
37187 var colDef = column.getColDef();
37188 _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;
37189 return _this;
37190 }
37191 SelectAllFeature.prototype.onSpaceKeyPressed = function (e) {
37192 var checkbox = this.cbSelectAll;
37193 var eDocument = this.gridOptionsWrapper.getDocument();
37194 if (checkbox.isDisplayed() && !checkbox.getGui().contains(eDocument.activeElement)) {
37195 e.preventDefault();
37196 checkbox.setValue(!checkbox.getValue());
37197 }
37198 };
37199 SelectAllFeature.prototype.getCheckboxGui = function () {
37200 return this.cbSelectAll.getGui();
37201 };
37202 SelectAllFeature.prototype.setComp = function (ctrl) {
37203 this.headerCellCtrl = ctrl;
37204 this.cbSelectAll = this.createManagedBean(new _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_0__["AgCheckbox"]());
37205 this.cbSelectAll.addCssClass('ag-header-select-all');
37206 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaRole"])(this.cbSelectAll.getGui(), 'presentation');
37207 this.showOrHideSelectAll();
37208 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_NEW_COLUMNS_LOADED, this.showOrHideSelectAll.bind(this));
37209 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));
37210 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));
37211 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));
37212 this.addManagedListener(this.cbSelectAll, _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_0__["AgCheckbox"].EVENT_CHANGED, this.onCbSelectAll.bind(this));
37213 this.cbSelectAll.getInputElement().setAttribute('tabindex', '-1');
37214 this.refreshSelectAllLabel();
37215 };
37216 SelectAllFeature.prototype.showOrHideSelectAll = function () {
37217 this.cbSelectAllVisible = this.isCheckboxSelection();
37218 this.cbSelectAll.setDisplayed(this.cbSelectAllVisible);
37219 if (this.cbSelectAllVisible) {
37220 // in case user is trying this feature with the wrong model type
37221 this.checkRightRowModelType();
37222 // make sure checkbox is showing the right state
37223 this.updateStateOfCheckbox();
37224 }
37225 this.refreshSelectAllLabel();
37226 };
37227 SelectAllFeature.prototype.onModelChanged = function () {
37228 if (!this.cbSelectAllVisible) {
37229 return;
37230 }
37231 this.updateStateOfCheckbox();
37232 };
37233 SelectAllFeature.prototype.onSelectionChanged = function () {
37234 if (!this.cbSelectAllVisible) {
37235 return;
37236 }
37237 this.updateStateOfCheckbox();
37238 };
37239 SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {
37240 // if no rows, always have it unselected
37241 if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {
37242 return false;
37243 }
37244 // if mix of selected and unselected, this is the tri-state
37245 if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {
37246 return null;
37247 }
37248 // only selected
37249 if (selectionCount.selected > 0) {
37250 return true;
37251 }
37252 // nothing selected
37253 return false;
37254 };
37255 SelectAllFeature.prototype.updateStateOfCheckbox = function () {
37256 if (this.processingEventFromCheckbox) {
37257 return;
37258 }
37259 this.processingEventFromCheckbox = true;
37260 var selectionCount = this.getSelectionCount();
37261 var allSelected = this.getNextCheckboxState(selectionCount);
37262 this.cbSelectAll.setValue(allSelected);
37263 this.refreshSelectAllLabel();
37264 this.processingEventFromCheckbox = false;
37265 };
37266 SelectAllFeature.prototype.refreshSelectAllLabel = function () {
37267 if (!this.cbSelectAllVisible) {
37268 this.headerCellCtrl.setAriaDescriptionProperty('selectAll', null);
37269 }
37270 else {
37271 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
37272 var checked = this.cbSelectAll.getValue();
37273 var ariaStatus = checked ? translate('ariaChecked', 'checked') : translate('ariaUnchecked', 'unchecked');
37274 var ariaLabel = translate('ariaRowSelectAll', 'Press Space to toggle all rows selection');
37275 this.headerCellCtrl.setAriaDescriptionProperty('selectAll', ariaLabel + " (" + ariaStatus + ")");
37276 }
37277 this.headerCellCtrl.refreshAriaDescription();
37278 };
37279 SelectAllFeature.prototype.getSelectionCount = function () {
37280 var _this = this;
37281 var selectedCount = 0;
37282 var notSelectedCount = 0;
37283 var callback = function (node) {
37284 if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {
37285 return;
37286 }
37287 if (node.isSelected()) {
37288 selectedCount++;
37289 }
37290 else if (!node.selectable) {
37291 // don't count non-selectable nodes!
37292 }
37293 else {
37294 notSelectedCount++;
37295 }
37296 };
37297 if (this.filteredOnly) {
37298 this.gridApi.forEachNodeAfterFilter(callback);
37299 }
37300 else {
37301 this.gridApi.forEachNode(callback);
37302 }
37303 return {
37304 notSelected: notSelectedCount,
37305 selected: selectedCount
37306 };
37307 };
37308 SelectAllFeature.prototype.checkRightRowModelType = function () {
37309 var rowModelType = this.rowModel.getType();
37310 var rowModelMatches = rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
37311 if (!rowModelMatches) {
37312 console.warn("AG Grid: selectAllCheckbox is only available if using normal row model, you are using " + rowModelType);
37313 }
37314 };
37315 SelectAllFeature.prototype.onCbSelectAll = function () {
37316 if (this.processingEventFromCheckbox) {
37317 return;
37318 }
37319 if (!this.cbSelectAllVisible) {
37320 return;
37321 }
37322 var value = this.cbSelectAll.getValue();
37323 if (value) {
37324 this.selectionService.selectAllRowNodes(this.filteredOnly);
37325 }
37326 else {
37327 this.selectionService.deselectAllRowNodes(this.filteredOnly);
37328 }
37329 };
37330 SelectAllFeature.prototype.isCheckboxSelection = function () {
37331 var result = this.column.getColDef().headerCheckboxSelection;
37332 if (typeof result === 'function') {
37333 var func = result;
37334 var params = {
37335 column: this.column,
37336 colDef: this.column.getColDef(),
37337 columnApi: this.columnApi,
37338 api: this.gridApi,
37339 context: this.gridOptionsWrapper.getContext()
37340 };
37341 result = func(params);
37342 }
37343 if (result) {
37344 if (this.gridOptionsWrapper.isRowModelServerSide()) {
37345 console.warn('AG Grid: headerCheckboxSelection is not supported for Server Side Row Model');
37346 return false;
37347 }
37348 if (this.gridOptionsWrapper.isRowModelInfinite()) {
37349 console.warn('AG Grid: headerCheckboxSelection is not supported for Infinite Row Model');
37350 return false;
37351 }
37352 if (this.gridOptionsWrapper.isRowModelViewport()) {
37353 console.warn('AG Grid: headerCheckboxSelection is not supported for Viewport Row Model');
37354 return false;
37355 }
37356 // otherwise the row model is compatible, so return true
37357 return true;
37358 }
37359 return false;
37360 };
37361 __decorate([
37362 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridApi')
37363 ], SelectAllFeature.prototype, "gridApi", void 0);
37364 __decorate([
37365 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnApi')
37366 ], SelectAllFeature.prototype, "columnApi", void 0);
37367 __decorate([
37368 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('rowModel')
37369 ], SelectAllFeature.prototype, "rowModel", void 0);
37370 __decorate([
37371 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('selectionService')
37372 ], SelectAllFeature.prototype, "selectionService", void 0);
37373 return SelectAllFeature;
37374}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
37375
37376
37377
37378
37379
37380/***/ }),
37381/* 163 */
37382/***/ (function(module, __webpack_exports__, __webpack_require__) {
37383
37384"use strict";
37385__webpack_require__.r(__webpack_exports__);
37386/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgCheckbox", function() { return AgCheckbox; });
37387/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
37388/* harmony import */ var _agAbstractInputField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71);
37389/**
37390 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37391 * @version v27.3.0
37392 * @link https://www.ag-grid.com/
37393 * @license MIT
37394 */
37395var __extends = (undefined && undefined.__extends) || (function () {
37396 var extendStatics = function (d, b) {
37397 extendStatics = Object.setPrototypeOf ||
37398 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37399 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37400 return extendStatics(d, b);
37401 };
37402 return function (d, b) {
37403 extendStatics(d, b);
37404 function __() { this.constructor = d; }
37405 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37406 };
37407})();
37408
37409
37410var AgCheckbox = /** @class */ (function (_super) {
37411 __extends(AgCheckbox, _super);
37412 function AgCheckbox(config, className, inputType) {
37413 if (className === void 0) { className = 'ag-checkbox'; }
37414 if (inputType === void 0) { inputType = 'checkbox'; }
37415 var _this = _super.call(this, config, className, inputType) || this;
37416 _this.labelAlignment = 'right';
37417 _this.selected = false;
37418 _this.readOnly = false;
37419 _this.passive = false;
37420 return _this;
37421 }
37422 AgCheckbox.prototype.addInputListeners = function () {
37423 this.addManagedListener(this.eInput, 'click', this.onCheckboxClick.bind(this));
37424 this.addManagedListener(this.eLabel, 'click', this.toggle.bind(this));
37425 };
37426 AgCheckbox.prototype.getNextValue = function () {
37427 return this.selected === undefined ? true : !this.selected;
37428 };
37429 AgCheckbox.prototype.setPassive = function (passive) {
37430 this.passive = passive;
37431 };
37432 AgCheckbox.prototype.isReadOnly = function () {
37433 return this.readOnly;
37434 };
37435 AgCheckbox.prototype.setReadOnly = function (readOnly) {
37436 this.eWrapper.classList.toggle('ag-disabled', readOnly);
37437 this.eInput.disabled = readOnly;
37438 this.readOnly = readOnly;
37439 };
37440 AgCheckbox.prototype.setDisabled = function (disabled) {
37441 this.eWrapper.classList.toggle('ag-disabled', disabled);
37442 return _super.prototype.setDisabled.call(this, disabled);
37443 };
37444 AgCheckbox.prototype.toggle = function () {
37445 if (this.eInput.disabled) {
37446 return;
37447 }
37448 var previousValue = this.isSelected();
37449 var nextValue = this.getNextValue();
37450 if (this.passive) {
37451 this.dispatchChange(nextValue, previousValue);
37452 }
37453 else {
37454 this.setValue(nextValue);
37455 }
37456 };
37457 AgCheckbox.prototype.getValue = function () {
37458 return this.isSelected();
37459 };
37460 AgCheckbox.prototype.setValue = function (value, silent) {
37461 this.refreshSelectedClass(value);
37462 this.setSelected(value, silent);
37463 return this;
37464 };
37465 AgCheckbox.prototype.setName = function (name) {
37466 var input = this.getInputElement();
37467 input.name = name;
37468 return this;
37469 };
37470 AgCheckbox.prototype.isSelected = function () {
37471 return this.selected;
37472 };
37473 AgCheckbox.prototype.setSelected = function (selected, silent) {
37474 if (this.isSelected() === selected) {
37475 return;
37476 }
37477 this.previousValue = this.isSelected();
37478 selected = this.selected = typeof selected === 'boolean' ? selected : undefined;
37479 this.eInput.checked = selected;
37480 this.eInput.indeterminate = selected === undefined;
37481 if (!silent) {
37482 this.dispatchChange(this.selected, this.previousValue);
37483 }
37484 };
37485 AgCheckbox.prototype.dispatchChange = function (selected, previousValue, event) {
37486 this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected: selected, previousValue: previousValue, event: event });
37487 var input = this.getInputElement();
37488 var checkboxChangedEvent = {
37489 type: _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CHECKBOX_CHANGED,
37490 id: input.id,
37491 name: input.name,
37492 selected: selected,
37493 previousValue: previousValue
37494 };
37495 this.eventService.dispatchEvent(checkboxChangedEvent);
37496 };
37497 AgCheckbox.prototype.onCheckboxClick = function (e) {
37498 if (this.passive || this.eInput.disabled) {
37499 return;
37500 }
37501 var previousValue = this.isSelected();
37502 var selected = this.selected = e.target.checked;
37503 this.refreshSelectedClass(selected);
37504 this.dispatchChange(selected, previousValue, e);
37505 };
37506 AgCheckbox.prototype.refreshSelectedClass = function (value) {
37507 this.eWrapper.classList.toggle('ag-checked', value === true);
37508 this.eWrapper.classList.toggle('ag-indeterminate', value == null);
37509 };
37510 return AgCheckbox;
37511}(_agAbstractInputField__WEBPACK_IMPORTED_MODULE_1__["AgAbstractInputField"]));
37512
37513
37514
37515
37516
37517/***/ }),
37518/* 164 */
37519/***/ (function(module, __webpack_exports__, __webpack_require__) {
37520
37521"use strict";
37522__webpack_require__.r(__webpack_exports__);
37523/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupCellCtrl", function() { return HeaderGroupCellCtrl; });
37524/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65);
37525/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
37526/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97);
37527/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
37528/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
37529/* harmony import */ var _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(158);
37530/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18);
37531/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(64);
37532/* harmony import */ var _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(126);
37533/* harmony import */ var _abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(155);
37534/* harmony import */ var _cssClassApplier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(147);
37535/* harmony import */ var _hoverFeature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(159);
37536/* harmony import */ var _groupResizeFeature__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(165);
37537/* harmony import */ var _groupWidthFeature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(166);
37538/**
37539 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37540 * @version v27.3.0
37541 * @link https://www.ag-grid.com/
37542 * @license MIT
37543 */
37544var __extends = (undefined && undefined.__extends) || (function () {
37545 var extendStatics = function (d, b) {
37546 extendStatics = Object.setPrototypeOf ||
37547 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37548 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37549 return extendStatics(d, b);
37550 };
37551 return function (d, b) {
37552 extendStatics(d, b);
37553 function __() { this.constructor = d; }
37554 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37555 };
37556})();
37557var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
37558 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37559 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37560 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;
37561 return c > 3 && r && Object.defineProperty(target, key, r), r;
37562};
37563
37564
37565
37566
37567
37568
37569
37570
37571
37572
37573
37574
37575
37576
37577var HeaderGroupCellCtrl = /** @class */ (function (_super) {
37578 __extends(HeaderGroupCellCtrl, _super);
37579 function HeaderGroupCellCtrl(columnGroup, parentRowCtrl) {
37580 var _this = _super.call(this, columnGroup, parentRowCtrl) || this;
37581 _this.columnGroup = columnGroup;
37582 return _this;
37583 }
37584 HeaderGroupCellCtrl.prototype.setComp = function (comp, eGui, eResize) {
37585 _super.prototype.setGui.call(this, eGui);
37586 this.comp = comp;
37587 this.displayName = this.columnModel.getDisplayNameForColumnGroup(this.columnGroup, 'header');
37588 this.addClasses();
37589 this.addAttributes();
37590 this.setupMovingCss();
37591 this.setupExpandable();
37592 this.setupTooltip();
37593 this.setupUserComp();
37594 var pinned = this.getParentRowCtrl().getPinned();
37595 var leafCols = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
37596 this.createManagedBean(new _hoverFeature__WEBPACK_IMPORTED_MODULE_11__["HoverFeature"](leafCols, eGui));
37597 this.createManagedBean(new _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_5__["SetLeftFeature"](this.columnGroup, eGui, this.beans));
37598 this.createManagedBean(new _groupWidthFeature__WEBPACK_IMPORTED_MODULE_13__["GroupWidthFeature"](comp, this.columnGroup));
37599 this.groupResizeFeature = this.createManagedBean(new _groupResizeFeature__WEBPACK_IMPORTED_MODULE_12__["GroupResizeFeature"](comp, eResize, pinned, this.columnGroup));
37600 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_7__["ManagedFocusFeature"](eGui, {
37601 shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),
37602 onTabKeyDown: function () { return undefined; },
37603 handleKeyDown: this.handleKeyDown.bind(this),
37604 onFocusIn: this.onFocusIn.bind(this)
37605 }));
37606 };
37607 HeaderGroupCellCtrl.prototype.resizeLeafColumnsToFit = function () {
37608 this.groupResizeFeature.onResizeStart(false);
37609 this.groupResizeFeature.resizeLeafColumnsToFit();
37610 };
37611 HeaderGroupCellCtrl.prototype.setupUserComp = function () {
37612 var _this = this;
37613 var displayName = this.displayName;
37614 var params = {
37615 displayName: this.displayName,
37616 columnGroup: this.columnGroup,
37617 setExpanded: function (expanded) {
37618 _this.columnModel.setColumnGroupOpened(_this.columnGroup.getProvidedColumnGroup(), expanded, "gridInitializing");
37619 },
37620 api: this.gridApi,
37621 columnApi: this.columnApi,
37622 context: this.gridOptionsWrapper.getContext()
37623 };
37624 if (!displayName) {
37625 var columnGroup = this.columnGroup;
37626 var leafCols = columnGroup.getLeafColumns();
37627 // find the top most column group that represents the same columns. so if we are dragging a group, we also
37628 // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels
37629 // of grouping, with each group only containing the next group, and the last group containing three columns,
37630 // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all
37631 // the groups represent the same column set.
37632 while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {
37633 columnGroup = columnGroup.getParent();
37634 }
37635 var colGroupDef = columnGroup.getColGroupDef();
37636 if (colGroupDef) {
37637 displayName = colGroupDef.headerName;
37638 }
37639 if (!displayName) {
37640 displayName = leafCols ? this.columnModel.getDisplayNameForColumn(leafCols[0], 'header', true) : '';
37641 }
37642 }
37643 var compDetails = this.userComponentFactory.getHeaderGroupCompDetails(params);
37644 this.comp.setUserCompDetails(compDetails);
37645 };
37646 HeaderGroupCellCtrl.prototype.setupTooltip = function () {
37647 var _this = this;
37648 var colGroupDef = this.columnGroup.getColGroupDef();
37649 var tooltipCtrl = {
37650 getColumn: function () { return _this.columnGroup; },
37651 getGui: function () { return _this.eGui; },
37652 getLocation: function () { return 'headerGroup'; },
37653 getTooltipValue: function () { return colGroupDef && colGroupDef.headerTooltip; }
37654 };
37655 if (colGroupDef) {
37656 tooltipCtrl.getColDef = function () { return colGroupDef; };
37657 }
37658 var tooltipFeature = this.createManagedBean(new _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_8__["TooltipFeature"](tooltipCtrl, this.beans));
37659 tooltipFeature.setComp(this.comp);
37660 };
37661 HeaderGroupCellCtrl.prototype.setupExpandable = function () {
37662 var providedColGroup = this.columnGroup.getProvidedColumnGroup();
37663 this.refreshExpanded();
37664 this.addManagedListener(providedColGroup, _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"].EVENT_EXPANDABLE_CHANGED, this.refreshExpanded.bind(this));
37665 this.addManagedListener(providedColGroup, _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"].EVENT_EXPANDED_CHANGED, this.refreshExpanded.bind(this));
37666 };
37667 HeaderGroupCellCtrl.prototype.refreshExpanded = function () {
37668 var column = this.columnGroup;
37669 this.expandable = column.isExpandable();
37670 var expanded = column.isExpanded();
37671 if (this.expandable) {
37672 this.comp.setAriaExpanded(expanded ? 'true' : 'false');
37673 }
37674 else {
37675 this.comp.setAriaExpanded(undefined);
37676 }
37677 };
37678 HeaderGroupCellCtrl.prototype.addAttributes = function () {
37679 this.comp.setColId(this.columnGroup.getUniqueId());
37680 };
37681 HeaderGroupCellCtrl.prototype.addClasses = function () {
37682 var _this = this;
37683 var colGroupDef = this.columnGroup.getColGroupDef();
37684 var classes = _cssClassApplier__WEBPACK_IMPORTED_MODULE_10__["CssClassApplier"].getHeaderClassesFromColDef(colGroupDef, this.gridOptionsWrapper, null, this.columnGroup);
37685 // having different classes below allows the style to not have a bottom border
37686 // on the group header, if no group is specified
37687 classes.push(this.columnGroup.isPadding() ? "ag-header-group-cell-no-group" : "ag-header-group-cell-with-group");
37688 classes.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, true); });
37689 };
37690 HeaderGroupCellCtrl.prototype.setupMovingCss = function () {
37691 var _this = this;
37692 var providedColumnGroup = this.columnGroup.getProvidedColumnGroup();
37693 var leafColumns = providedColumnGroup.getLeafColumns();
37694 // this function adds or removes the moving css, based on if the col is moving.
37695 // this is what makes the header go dark when it is been moved (gives impression to
37696 // user that the column was picked up).
37697 var listener = function () { return _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.columnGroup.isMoving()); };
37698 leafColumns.forEach(function (col) {
37699 _this.addManagedListener(col, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_MOVING_CHANGED, listener);
37700 });
37701 listener();
37702 };
37703 HeaderGroupCellCtrl.prototype.onFocusIn = function (e) {
37704 if (!this.eGui.contains(e.relatedTarget)) {
37705 var rowIndex = this.getRowIndex();
37706 this.beans.focusService.setFocusedHeader(rowIndex, this.columnGroup);
37707 }
37708 };
37709 HeaderGroupCellCtrl.prototype.handleKeyDown = function (e) {
37710 var eDocument = this.gridOptionsWrapper.getDocument();
37711 var activeEl = eDocument.activeElement;
37712 var wrapperHasFocus = activeEl === this.eGui;
37713 if (!this.expandable || !wrapperHasFocus) {
37714 return;
37715 }
37716 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].ENTER) {
37717 var column = this.columnGroup;
37718 var newExpandedValue = !column.isExpanded();
37719 this.columnModel.setColumnGroupOpened(column.getProvidedColumnGroup(), newExpandedValue, "uiColumnExpanded");
37720 }
37721 };
37722 // unlike columns, this will only get called once, as we don't react on props on column groups
37723 // (we will always destroy and recreate this comp if something changes)
37724 HeaderGroupCellCtrl.prototype.setDragSource = function (eHeaderGroup) {
37725 var _this = this;
37726 if (this.isSuppressMoving()) {
37727 return;
37728 }
37729 var allLeafColumns = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
37730 var dragSource = {
37731 type: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragSourceType"].HeaderCell,
37732 eElement: eHeaderGroup,
37733 defaultIconName: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_HIDE,
37734 dragItemName: this.displayName,
37735 // we add in the original group leaf columns, so we move both visible and non-visible items
37736 getDragItem: this.getDragItemForGroup.bind(this),
37737 onDragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, "uiColumnDragged"); }); },
37738 onDragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, "uiColumnDragged"); }); }
37739 };
37740 this.dragAndDropService.addDragSource(dragSource, true);
37741 this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });
37742 };
37743 // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,
37744 // and in the order they are currently in the screen.
37745 HeaderGroupCellCtrl.prototype.getDragItemForGroup = function () {
37746 var allColumnsOriginalOrder = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
37747 // capture visible state, used when re-entering grid to dictate which columns should be visible
37748 var visibleState = {};
37749 allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });
37750 var allColumnsCurrentOrder = [];
37751 this.columnModel.getAllDisplayedColumns().forEach(function (column) {
37752 if (allColumnsOriginalOrder.indexOf(column) >= 0) {
37753 allColumnsCurrentOrder.push(column);
37754 Object(_utils_array__WEBPACK_IMPORTED_MODULE_6__["removeFromArray"])(allColumnsOriginalOrder, column);
37755 }
37756 });
37757 // we are left with non-visible columns, stick these in at the end
37758 allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });
37759 // create and return dragItem
37760 return {
37761 columns: allColumnsCurrentOrder,
37762 visibleState: visibleState
37763 };
37764 };
37765 HeaderGroupCellCtrl.prototype.isSuppressMoving = function () {
37766 // if any child is fixed, then don't allow moving
37767 var childSuppressesMoving = false;
37768 this.columnGroup.getLeafColumns().forEach(function (column) {
37769 if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {
37770 childSuppressesMoving = true;
37771 }
37772 });
37773 var result = childSuppressesMoving || this.gridOptionsWrapper.isSuppressMovableColumns();
37774 return result;
37775 };
37776 __decorate([
37777 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('beans')
37778 ], HeaderGroupCellCtrl.prototype, "beans", void 0);
37779 __decorate([
37780 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
37781 ], HeaderGroupCellCtrl.prototype, "columnModel", void 0);
37782 __decorate([
37783 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
37784 ], HeaderGroupCellCtrl.prototype, "dragAndDropService", void 0);
37785 __decorate([
37786 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
37787 ], HeaderGroupCellCtrl.prototype, "userComponentFactory", void 0);
37788 __decorate([
37789 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
37790 ], HeaderGroupCellCtrl.prototype, "gridApi", void 0);
37791 __decorate([
37792 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
37793 ], HeaderGroupCellCtrl.prototype, "columnApi", void 0);
37794 return HeaderGroupCellCtrl;
37795}(_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_9__["AbstractHeaderCellCtrl"]));
37796
37797
37798
37799
37800
37801/***/ }),
37802/* 165 */
37803/***/ (function(module, __webpack_exports__, __webpack_require__) {
37804
37805"use strict";
37806__webpack_require__.r(__webpack_exports__);
37807/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupResizeFeature", function() { return GroupResizeFeature; });
37808/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
37809/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
37810/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
37811/**
37812 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37813 * @version v27.3.0
37814 * @link https://www.ag-grid.com/
37815 * @license MIT
37816 */
37817var __extends = (undefined && undefined.__extends) || (function () {
37818 var extendStatics = function (d, b) {
37819 extendStatics = Object.setPrototypeOf ||
37820 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37821 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37822 return extendStatics(d, b);
37823 };
37824 return function (d, b) {
37825 extendStatics(d, b);
37826 function __() { this.constructor = d; }
37827 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37828 };
37829})();
37830var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
37831 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37832 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37833 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;
37834 return c > 3 && r && Object.defineProperty(target, key, r), r;
37835};
37836
37837
37838
37839var GroupResizeFeature = /** @class */ (function (_super) {
37840 __extends(GroupResizeFeature, _super);
37841 function GroupResizeFeature(comp, eResize, pinned, columnGroup) {
37842 var _this = _super.call(this) || this;
37843 _this.eResize = eResize;
37844 _this.comp = comp;
37845 _this.pinned = pinned;
37846 _this.columnGroup = columnGroup;
37847 return _this;
37848 }
37849 GroupResizeFeature.prototype.postConstruct = function () {
37850 var _this = this;
37851 if (!this.columnGroup.isResizable()) {
37852 this.comp.addOrRemoveResizableCssClass('ag-hidden', true);
37853 return;
37854 }
37855 var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({
37856 eResizeBar: this.eResize,
37857 onResizeStart: this.onResizeStart.bind(this),
37858 onResizing: this.onResizing.bind(this, false),
37859 onResizeEnd: this.onResizing.bind(this, true)
37860 });
37861 this.addDestroyFunc(finishedWithResizeFunc);
37862 if (!this.gridOptionsWrapper.isSuppressAutoSize()) {
37863 var skipHeaderOnAutoSize_1 = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();
37864 this.eResize.addEventListener('dblclick', function () {
37865 // get list of all the column keys we are responsible for
37866 var keys = [];
37867 var leafCols = _this.columnGroup.getDisplayedLeafColumns();
37868 leafCols.forEach(function (column) {
37869 // not all cols in the group may be participating with auto-resize
37870 if (!column.getColDef().suppressAutoSize) {
37871 keys.push(column.getColId());
37872 }
37873 });
37874 if (keys.length > 0) {
37875 _this.columnModel.autoSizeColumns({
37876 columns: keys,
37877 skipHeader: skipHeaderOnAutoSize_1,
37878 stopAtGroup: _this.columnGroup,
37879 source: 'uiColumnResized'
37880 });
37881 }
37882 _this.resizeLeafColumnsToFit();
37883 });
37884 }
37885 };
37886 GroupResizeFeature.prototype.onResizeStart = function (shiftKey) {
37887 var _this = this;
37888 this.calculateInitialValues();
37889 var takeFromGroup = null;
37890 if (shiftKey) {
37891 takeFromGroup = this.columnModel.getDisplayedGroupAfter(this.columnGroup);
37892 }
37893 if (takeFromGroup) {
37894 var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();
37895 this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });
37896 this.resizeTakeFromStartWidth = 0;
37897 this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });
37898 this.resizeTakeFromRatios = [];
37899 this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });
37900 }
37901 else {
37902 this.resizeTakeFromCols = null;
37903 this.resizeTakeFromStartWidth = null;
37904 this.resizeTakeFromRatios = null;
37905 }
37906 this.comp.addOrRemoveCssClass('ag-column-resizing', true);
37907 };
37908 GroupResizeFeature.prototype.onResizing = function (finished, resizeAmount) {
37909 var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);
37910 var width = this.resizeStartWidth + resizeAmountNormalised;
37911 this.resizeColumns(width, finished);
37912 };
37913 GroupResizeFeature.prototype.resizeLeafColumnsToFit = function () {
37914 var preferredSize = this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup);
37915 this.calculateInitialValues();
37916 if (preferredSize > this.resizeStartWidth) {
37917 this.resizeColumns(preferredSize, true);
37918 }
37919 };
37920 GroupResizeFeature.prototype.resizeColumns = function (totalWidth, finished) {
37921 if (finished === void 0) { finished = true; }
37922 var resizeSets = [];
37923 resizeSets.push({
37924 columns: this.resizeCols,
37925 ratios: this.resizeRatios,
37926 width: totalWidth
37927 });
37928 if (this.resizeTakeFromCols) {
37929 var diff = totalWidth - this.resizeStartWidth;
37930 resizeSets.push({
37931 columns: this.resizeTakeFromCols,
37932 ratios: this.resizeTakeFromRatios,
37933 width: this.resizeTakeFromStartWidth - diff
37934 });
37935 }
37936 this.columnModel.resizeColumnSets({
37937 resizeSets: resizeSets,
37938 finished: finished,
37939 source: 'uiColumnDragged'
37940 });
37941 if (finished) {
37942 this.comp.addOrRemoveCssClass('ag-column-resizing', false);
37943 }
37944 };
37945 GroupResizeFeature.prototype.calculateInitialValues = function () {
37946 var _this = this;
37947 var leafCols = this.columnGroup.getDisplayedLeafColumns();
37948 this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });
37949 this.resizeStartWidth = 0;
37950 this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });
37951 this.resizeRatios = [];
37952 this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });
37953 };
37954 // optionally inverts the drag, depending on pinned and RTL
37955 // note - this method is duplicated in RenderedHeaderCell - should refactor out?
37956 GroupResizeFeature.prototype.normaliseDragChange = function (dragChange) {
37957 var result = dragChange;
37958 if (this.gridOptionsWrapper.isEnableRtl()) {
37959 // for RTL, dragging left makes the col bigger, except when pinning left
37960 if (this.pinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT) {
37961 result *= -1;
37962 }
37963 }
37964 else if (this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT) {
37965 // for LTR (ie normal), dragging left makes the col smaller, except when pinning right
37966 result *= -1;
37967 }
37968 return result;
37969 };
37970 __decorate([
37971 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('horizontalResizeService')
37972 ], GroupResizeFeature.prototype, "horizontalResizeService", void 0);
37973 __decorate([
37974 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('autoWidthCalculator')
37975 ], GroupResizeFeature.prototype, "autoWidthCalculator", void 0);
37976 __decorate([
37977 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
37978 ], GroupResizeFeature.prototype, "columnModel", void 0);
37979 __decorate([
37980 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
37981 ], GroupResizeFeature.prototype, "postConstruct", null);
37982 return GroupResizeFeature;
37983}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
37984
37985
37986
37987
37988
37989/***/ }),
37990/* 166 */
37991/***/ (function(module, __webpack_exports__, __webpack_require__) {
37992
37993"use strict";
37994__webpack_require__.r(__webpack_exports__);
37995/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupWidthFeature", function() { return GroupWidthFeature; });
37996/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
37997/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
37998/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
37999/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
38000/**
38001 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38002 * @version v27.3.0
38003 * @link https://www.ag-grid.com/
38004 * @license MIT
38005 */
38006var __extends = (undefined && undefined.__extends) || (function () {
38007 var extendStatics = function (d, b) {
38008 extendStatics = Object.setPrototypeOf ||
38009 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38010 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38011 return extendStatics(d, b);
38012 };
38013 return function (d, b) {
38014 extendStatics(d, b);
38015 function __() { this.constructor = d; }
38016 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38017 };
38018})();
38019var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38020 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38021 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38022 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;
38023 return c > 3 && r && Object.defineProperty(target, key, r), r;
38024};
38025
38026
38027
38028
38029var GroupWidthFeature = /** @class */ (function (_super) {
38030 __extends(GroupWidthFeature, _super);
38031 function GroupWidthFeature(comp, columnGroup) {
38032 var _this = _super.call(this) || this;
38033 // the children can change, we keep destroy functions related to listening to the children here
38034 _this.removeChildListenersFuncs = [];
38035 _this.columnGroup = columnGroup;
38036 _this.comp = comp;
38037 return _this;
38038 }
38039 GroupWidthFeature.prototype.postConstruct = function () {
38040 // we need to listen to changes in child columns, as they impact our width
38041 this.addListenersToChildrenColumns();
38042 // the children belonging to this group can change, so we need to add and remove listeners as they change
38043 this.addManagedListener(this.columnGroup, _entities_columnGroup__WEBPACK_IMPORTED_MODULE_3__["ColumnGroup"].EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));
38044 this.onWidthChanged();
38045 // the child listeners are not tied to this components life-cycle, as children can get added and removed
38046 // to the group - hence they are on a different life-cycle. so we must make sure the existing children
38047 // listeners are removed when we finally get destroyed
38048 this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));
38049 };
38050 GroupWidthFeature.prototype.addListenersToChildrenColumns = function () {
38051 var _this = this;
38052 // first destroy any old listeners
38053 this.removeListenersOnChildrenColumns();
38054 // now add new listeners to the new set of children
38055 var widthChangedListener = this.onWidthChanged.bind(this);
38056 this.columnGroup.getLeafColumns().forEach(function (column) {
38057 column.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_WIDTH_CHANGED, widthChangedListener);
38058 column.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_VISIBLE_CHANGED, widthChangedListener);
38059 _this.removeChildListenersFuncs.push(function () {
38060 column.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_WIDTH_CHANGED, widthChangedListener);
38061 column.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_VISIBLE_CHANGED, widthChangedListener);
38062 });
38063 });
38064 };
38065 GroupWidthFeature.prototype.removeListenersOnChildrenColumns = function () {
38066 this.removeChildListenersFuncs.forEach(function (func) { return func(); });
38067 this.removeChildListenersFuncs = [];
38068 };
38069 GroupWidthFeature.prototype.onDisplayedChildrenChanged = function () {
38070 this.addListenersToChildrenColumns();
38071 this.onWidthChanged();
38072 };
38073 GroupWidthFeature.prototype.onWidthChanged = function () {
38074 this.comp.setWidth(this.columnGroup.getActualWidth() + 'px');
38075 };
38076 __decorate([
38077 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
38078 ], GroupWidthFeature.prototype, "postConstruct", null);
38079 return GroupWidthFeature;
38080}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
38081
38082
38083
38084
38085
38086/***/ }),
38087/* 167 */
38088/***/ (function(module, __webpack_exports__, __webpack_require__) {
38089
38090"use strict";
38091__webpack_require__.r(__webpack_exports__);
38092/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridHeaderComp", function() { return GridHeaderComp; });
38093/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
38094/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
38095/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36);
38096/* harmony import */ var _gridHeaderCtrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(168);
38097/* harmony import */ var _rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(148);
38098/**
38099 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38100 * @version v27.3.0
38101 * @link https://www.ag-grid.com/
38102 * @license MIT
38103 */
38104var __extends = (undefined && undefined.__extends) || (function () {
38105 var extendStatics = function (d, b) {
38106 extendStatics = Object.setPrototypeOf ||
38107 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38108 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38109 return extendStatics(d, b);
38110 };
38111 return function (d, b) {
38112 extendStatics(d, b);
38113 function __() { this.constructor = d; }
38114 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38115 };
38116})();
38117var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38118 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38119 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38120 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;
38121 return c > 3 && r && Object.defineProperty(target, key, r), r;
38122};
38123
38124
38125
38126
38127
38128var GridHeaderComp = /** @class */ (function (_super) {
38129 __extends(GridHeaderComp, _super);
38130 function GridHeaderComp() {
38131 return _super.call(this, GridHeaderComp.TEMPLATE) || this;
38132 }
38133 GridHeaderComp.prototype.postConstruct = function () {
38134 var _this = this;
38135 var compProxy = {
38136 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
38137 setHeightAndMinHeight: function (height) {
38138 _this.getGui().style.height = height;
38139 _this.getGui().style.minHeight = height;
38140 }
38141 };
38142 var ctrl = this.createManagedBean(new _gridHeaderCtrl__WEBPACK_IMPORTED_MODULE_3__["GridHeaderCtrl"]());
38143 ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());
38144 var addContainer = function (container) {
38145 _this.createManagedBean(container);
38146 _this.appendChild(container);
38147 };
38148 addContainer(new _rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowContainerComp"](_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT));
38149 addContainer(new _rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowContainerComp"](null));
38150 addContainer(new _rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowContainerComp"](_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT));
38151 };
38152 GridHeaderComp.TEMPLATE = "<div class=\"ag-header\" role=\"presentation\"/>";
38153 __decorate([
38154 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
38155 ], GridHeaderComp.prototype, "postConstruct", null);
38156 return GridHeaderComp;
38157}(_widgets_component__WEBPACK_IMPORTED_MODULE_2__["Component"]));
38158
38159
38160
38161
38162
38163/***/ }),
38164/* 168 */
38165/***/ (function(module, __webpack_exports__, __webpack_require__) {
38166
38167"use strict";
38168__webpack_require__.r(__webpack_exports__);
38169/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridHeaderCtrl", function() { return GridHeaderCtrl; });
38170/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65);
38171/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
38172/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
38173/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
38174/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(112);
38175/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
38176/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(64);
38177/* harmony import */ var _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(169);
38178/**
38179 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38180 * @version v27.3.0
38181 * @link https://www.ag-grid.com/
38182 * @license MIT
38183 */
38184var __extends = (undefined && undefined.__extends) || (function () {
38185 var extendStatics = function (d, b) {
38186 extendStatics = Object.setPrototypeOf ||
38187 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38188 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38189 return extendStatics(d, b);
38190 };
38191 return function (d, b) {
38192 extendStatics(d, b);
38193 function __() { this.constructor = d; }
38194 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38195 };
38196})();
38197var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38198 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38199 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38200 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;
38201 return c > 3 && r && Object.defineProperty(target, key, r), r;
38202};
38203
38204
38205
38206
38207
38208
38209
38210
38211var GridHeaderCtrl = /** @class */ (function (_super) {
38212 __extends(GridHeaderCtrl, _super);
38213 function GridHeaderCtrl() {
38214 return _super !== null && _super.apply(this, arguments) || this;
38215 }
38216 GridHeaderCtrl.prototype.setComp = function (comp, eGui, eFocusableElement) {
38217 this.comp = comp;
38218 this.eGui = eGui;
38219 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_6__["ManagedFocusFeature"](eFocusableElement, {
38220 onTabKeyDown: this.onTabKeyDown.bind(this),
38221 handleKeyDown: this.handleKeyDown.bind(this),
38222 onFocusOut: this.onFocusOut.bind(this)
38223 }));
38224 // for setting ag-pivot-on / ag-pivot-off CSS classes
38225 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));
38226 this.onPivotModeChanged();
38227 this.setupHeaderHeight();
38228 this.ctrlsService.registerGridHeaderCtrl(this);
38229 };
38230 GridHeaderCtrl.prototype.setupHeaderHeight = function () {
38231 var listener = this.setHeaderHeight.bind(this);
38232 listener();
38233 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_HEADER_HEIGHT, listener);
38234 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_PIVOT_HEADER_HEIGHT, listener);
38235 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_GROUP_HEADER_HEIGHT, listener);
38236 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_PIVOT_GROUP_HEADER_HEIGHT, listener);
38237 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_FLOATING_FILTERS_HEIGHT, listener);
38238 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
38239 };
38240 GridHeaderCtrl.prototype.setHeaderHeight = function () {
38241 var _a = this, columnModel = _a.columnModel, gridOptionsWrapper = _a.gridOptionsWrapper;
38242 var numberOfFloating = 0;
38243 var headerRowCount = columnModel.getHeaderRowCount();
38244 var totalHeaderHeight;
38245 var groupHeight;
38246 var headerHeight;
38247 var hasFloatingFilters = columnModel.hasFloatingFilters();
38248 if (hasFloatingFilters) {
38249 headerRowCount++;
38250 numberOfFloating = 1;
38251 }
38252 if (columnModel.isPivotMode()) {
38253 groupHeight = gridOptionsWrapper.getPivotGroupHeaderHeight();
38254 headerHeight = gridOptionsWrapper.getPivotHeaderHeight();
38255 }
38256 else {
38257 groupHeight = gridOptionsWrapper.getGroupHeaderHeight();
38258 headerHeight = gridOptionsWrapper.getHeaderHeight();
38259 }
38260 var numberOfNonGroups = 1 + numberOfFloating;
38261 var numberOfGroups = headerRowCount - numberOfNonGroups;
38262 totalHeaderHeight = numberOfFloating * gridOptionsWrapper.getFloatingFiltersHeight();
38263 totalHeaderHeight += numberOfGroups * groupHeight;
38264 totalHeaderHeight += headerHeight;
38265 // one extra pixel is needed here to account for the
38266 // height of the border
38267 var px = totalHeaderHeight + 1 + "px";
38268 this.comp.setHeightAndMinHeight(px);
38269 };
38270 GridHeaderCtrl.prototype.onPivotModeChanged = function () {
38271 var pivotMode = this.columnModel.isPivotMode();
38272 this.comp.addOrRemoveCssClass('ag-pivot-on', pivotMode);
38273 this.comp.addOrRemoveCssClass('ag-pivot-off', !pivotMode);
38274 };
38275 GridHeaderCtrl.prototype.onTabKeyDown = function (e) {
38276 var isRtl = this.gridOptionsWrapper.isEnableRtl();
38277 var direction = e.shiftKey !== isRtl
38278 ? _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].LEFT
38279 : _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].RIGHT;
38280 if (this.headerNavigationService.navigateHorizontally(direction, true, e) ||
38281 this.focusService.focusNextGridCoreContainer(e.shiftKey)) {
38282 e.preventDefault();
38283 }
38284 };
38285 GridHeaderCtrl.prototype.handleKeyDown = function (e) {
38286 var direction = null;
38287 switch (e.key) {
38288 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].LEFT:
38289 direction = _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].LEFT;
38290 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].RIGHT:
38291 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(direction)) {
38292 direction = _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].RIGHT;
38293 }
38294 this.headerNavigationService.navigateHorizontally(direction, false, e);
38295 break;
38296 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].UP:
38297 direction = _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].UP;
38298 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].DOWN:
38299 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(direction)) {
38300 direction = _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].DOWN;
38301 }
38302 if (this.headerNavigationService.navigateVertically(direction, null, e)) {
38303 e.preventDefault();
38304 }
38305 break;
38306 default:
38307 return;
38308 }
38309 };
38310 GridHeaderCtrl.prototype.onFocusOut = function (e) {
38311 var eDocument = this.gridOptionsWrapper.getDocument();
38312 var relatedTarget = e.relatedTarget;
38313 if (!relatedTarget && this.eGui.contains(eDocument.activeElement)) {
38314 return;
38315 }
38316 if (!this.eGui.contains(relatedTarget)) {
38317 this.focusService.clearFocusedHeader();
38318 }
38319 };
38320 __decorate([
38321 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('headerNavigationService')
38322 ], GridHeaderCtrl.prototype, "headerNavigationService", void 0);
38323 __decorate([
38324 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('focusService')
38325 ], GridHeaderCtrl.prototype, "focusService", void 0);
38326 __decorate([
38327 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
38328 ], GridHeaderCtrl.prototype, "columnModel", void 0);
38329 __decorate([
38330 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
38331 ], GridHeaderCtrl.prototype, "ctrlsService", void 0);
38332 return GridHeaderCtrl;
38333}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
38334
38335
38336
38337
38338
38339/***/ }),
38340/* 169 */
38341/***/ (function(module, __webpack_exports__, __webpack_require__) {
38342
38343"use strict";
38344__webpack_require__.r(__webpack_exports__);
38345/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationDirection", function() { return HeaderNavigationDirection; });
38346/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationService", function() { return HeaderNavigationService; });
38347/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
38348/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
38349/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
38350/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
38351/* harmony import */ var _row_headerRowComp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(149);
38352/**
38353 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38354 * @version v27.3.0
38355 * @link https://www.ag-grid.com/
38356 * @license MIT
38357 */
38358var __extends = (undefined && undefined.__extends) || (function () {
38359 var extendStatics = function (d, b) {
38360 extendStatics = Object.setPrototypeOf ||
38361 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38362 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38363 return extendStatics(d, b);
38364 };
38365 return function (d, b) {
38366 extendStatics(d, b);
38367 function __() { this.constructor = d; }
38368 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38369 };
38370})();
38371var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38372 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38373 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38374 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;
38375 return c > 3 && r && Object.defineProperty(target, key, r), r;
38376};
38377
38378
38379
38380
38381
38382var HeaderNavigationDirection;
38383(function (HeaderNavigationDirection) {
38384 HeaderNavigationDirection[HeaderNavigationDirection["UP"] = 0] = "UP";
38385 HeaderNavigationDirection[HeaderNavigationDirection["DOWN"] = 1] = "DOWN";
38386 HeaderNavigationDirection[HeaderNavigationDirection["LEFT"] = 2] = "LEFT";
38387 HeaderNavigationDirection[HeaderNavigationDirection["RIGHT"] = 3] = "RIGHT";
38388})(HeaderNavigationDirection || (HeaderNavigationDirection = {}));
38389var HeaderNavigationService = /** @class */ (function (_super) {
38390 __extends(HeaderNavigationService, _super);
38391 function HeaderNavigationService() {
38392 return _super !== null && _super.apply(this, arguments) || this;
38393 }
38394 HeaderNavigationService.prototype.postConstruct = function () {
38395 var _this = this;
38396 this.ctrlsService.whenReady(function (p) {
38397 _this.gridBodyCon = p.gridBodyCtrl;
38398 });
38399 };
38400 HeaderNavigationService.prototype.getHeaderRowCount = function () {
38401 var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
38402 return centerHeaderContainer ? centerHeaderContainer.getRowCount() : 0;
38403 };
38404 HeaderNavigationService.prototype.getHeaderRowType = function (rowIndex) {
38405 var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
38406 if (centerHeaderContainer) {
38407 return centerHeaderContainer.getRowType(rowIndex);
38408 }
38409 };
38410 /*
38411 * This method navigates grid header vertically
38412 * @return {boolean} true to preventDefault on the event that caused this navigation.
38413 */
38414 HeaderNavigationService.prototype.navigateVertically = function (direction, fromHeader, event) {
38415 if (!fromHeader) {
38416 fromHeader = this.focusService.getFocusedHeader();
38417 }
38418 if (!fromHeader) {
38419 return false;
38420 }
38421 var headerRowIndex = fromHeader.headerRowIndex, column = fromHeader.column;
38422 var rowLen = this.getHeaderRowCount();
38423 var isUp = direction === HeaderNavigationDirection.UP;
38424 var nextRow = isUp ? headerRowIndex - 1 : headerRowIndex + 1;
38425 var nextFocusColumn = null;
38426 var skipColumn = false;
38427 if (nextRow < 0) {
38428 nextRow = 0;
38429 nextFocusColumn = column;
38430 skipColumn = true;
38431 }
38432 if (nextRow >= rowLen) {
38433 nextRow = -1; // -1 indicates the focus should move to grid rows.
38434 }
38435 var currentRowType = this.getHeaderRowType(headerRowIndex);
38436 if (!skipColumn) {
38437 if (currentRowType === _row_headerRowComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowType"].COLUMN_GROUP) {
38438 var currentColumn = column;
38439 nextFocusColumn = isUp ? column.getParent() : currentColumn.getDisplayedChildren()[0];
38440 }
38441 else if (currentRowType === _row_headerRowComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowType"].FLOATING_FILTER) {
38442 nextFocusColumn = column;
38443 }
38444 else {
38445 var currentColumn = column;
38446 nextFocusColumn = isUp ? currentColumn.getParent() : currentColumn;
38447 }
38448 if (!nextFocusColumn) {
38449 return false;
38450 }
38451 }
38452 return this.focusService.focusHeaderPosition({
38453 headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },
38454 allowUserOverride: true,
38455 event: event
38456 });
38457 };
38458 /*
38459 * This method navigates grid header horizontally
38460 * @return {boolean} true to preventDefault on the event that caused this navigation.
38461 */
38462 HeaderNavigationService.prototype.navigateHorizontally = function (direction, fromTab, event) {
38463 if (fromTab === void 0) { fromTab = false; }
38464 var focusedHeader = this.focusService.getFocusedHeader();
38465 var isLeft = direction === HeaderNavigationDirection.LEFT;
38466 var isRtl = this.gridOptionsWrapper.isEnableRtl();
38467 var nextHeader;
38468 var normalisedDirection;
38469 // either navigating to the left or isRtl (cannot be both)
38470 if (isLeft !== isRtl) {
38471 normalisedDirection = 'Before';
38472 nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);
38473 }
38474 else {
38475 normalisedDirection = 'After';
38476 nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);
38477 }
38478 if (nextHeader) {
38479 return this.focusService.focusHeaderPosition({
38480 headerPosition: nextHeader,
38481 direction: normalisedDirection,
38482 fromTab: fromTab,
38483 allowUserOverride: true,
38484 event: event
38485 });
38486 }
38487 if (!fromTab) {
38488 return true;
38489 }
38490 return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);
38491 };
38492 HeaderNavigationService.prototype.focusNextHeaderRow = function (focusedHeader, direction, event) {
38493 var currentIndex = focusedHeader.headerRowIndex;
38494 var nextPosition = null;
38495 var nextRowIndex;
38496 if (direction === 'Before') {
38497 if (currentIndex > 0) {
38498 nextRowIndex = currentIndex - 1;
38499 nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'end');
38500 }
38501 }
38502 else {
38503 nextRowIndex = currentIndex + 1;
38504 nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'start');
38505 }
38506 return this.focusService.focusHeaderPosition({
38507 headerPosition: nextPosition,
38508 direction: direction,
38509 fromTab: true,
38510 allowUserOverride: true,
38511 event: event
38512 });
38513 };
38514 HeaderNavigationService.prototype.scrollToColumn = function (column, direction) {
38515 if (direction === void 0) { direction = 'After'; }
38516 if (column.getPinned()) {
38517 return;
38518 }
38519 var columnToScrollTo;
38520 if (column instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_2__["ColumnGroup"]) {
38521 var columns = column.getDisplayedLeafColumns();
38522 columnToScrollTo = direction === 'Before' ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(columns) : columns[0];
38523 }
38524 else {
38525 columnToScrollTo = column;
38526 }
38527 this.gridBodyCon.getScrollFeature().ensureColumnVisible(columnToScrollTo);
38528 // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible
38529 // floating cell, the scrolls get out of sync
38530 this.gridBodyCon.getScrollFeature().horizontallyScrollHeaderCenterAndFloatingCenter();
38531 // need to flush frames, to make sure the correct cells are rendered
38532 this.animationFrameService.flushAllFrames();
38533 };
38534 __decorate([
38535 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
38536 ], HeaderNavigationService.prototype, "focusService", void 0);
38537 __decorate([
38538 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('headerPositionUtils')
38539 ], HeaderNavigationService.prototype, "headerPositionUtils", void 0);
38540 __decorate([
38541 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('animationFrameService')
38542 ], HeaderNavigationService.prototype, "animationFrameService", void 0);
38543 __decorate([
38544 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
38545 ], HeaderNavigationService.prototype, "ctrlsService", void 0);
38546 __decorate([
38547 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
38548 ], HeaderNavigationService.prototype, "postConstruct", null);
38549 HeaderNavigationService = __decorate([
38550 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('headerNavigationService')
38551 ], HeaderNavigationService);
38552 return HeaderNavigationService;
38553}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
38554
38555
38556
38557
38558
38559/***/ }),
38560/* 170 */
38561/***/ (function(module, __webpack_exports__, __webpack_require__) {
38562
38563"use strict";
38564__webpack_require__.r(__webpack_exports__);
38565/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HorizontalResizeService", function() { return HorizontalResizeService; });
38566/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
38567/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
38568/**
38569 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38570 * @version v27.3.0
38571 * @link https://www.ag-grid.com/
38572 * @license MIT
38573 */
38574var __extends = (undefined && undefined.__extends) || (function () {
38575 var extendStatics = function (d, b) {
38576 extendStatics = Object.setPrototypeOf ||
38577 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38578 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38579 return extendStatics(d, b);
38580 };
38581 return function (d, b) {
38582 extendStatics(d, b);
38583 function __() { this.constructor = d; }
38584 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38585 };
38586})();
38587var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38588 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38589 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38590 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;
38591 return c > 3 && r && Object.defineProperty(target, key, r), r;
38592};
38593
38594
38595var HorizontalResizeService = /** @class */ (function (_super) {
38596 __extends(HorizontalResizeService, _super);
38597 function HorizontalResizeService() {
38598 return _super !== null && _super.apply(this, arguments) || this;
38599 }
38600 HorizontalResizeService.prototype.addResizeBar = function (params) {
38601 var _this = this;
38602 var dragSource = {
38603 dragStartPixels: params.dragStartPixels || 0,
38604 eElement: params.eResizeBar,
38605 onDragStart: this.onDragStart.bind(this, params),
38606 onDragStop: this.onDragStop.bind(this, params),
38607 onDragging: this.onDragging.bind(this, params)
38608 };
38609 this.dragService.addDragSource(dragSource, true);
38610 // we pass remove func back to the caller, so call can tell us when they
38611 // are finished, and then we remove the listener from the drag source
38612 var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };
38613 return finishedWithResizeFunc;
38614 };
38615 HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {
38616 this.dragStartX = mouseEvent.clientX;
38617 this.setResizeIcons();
38618 var shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;
38619 params.onResizeStart(shiftKey);
38620 };
38621 HorizontalResizeService.prototype.setResizeIcons = function () {
38622 var ctrl = this.ctrlsService.getGridCtrl();
38623 // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'
38624 ctrl.setResizeCursor(true);
38625 // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)
38626 ctrl.disableUserSelect(true);
38627 };
38628 HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {
38629 params.onResizeEnd(this.resizeAmount);
38630 this.resetIcons();
38631 };
38632 HorizontalResizeService.prototype.resetIcons = function () {
38633 var ctrl = this.ctrlsService.getGridCtrl();
38634 ctrl.setResizeCursor(false);
38635 ctrl.disableUserSelect(false);
38636 };
38637 HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {
38638 this.resizeAmount = mouseEvent.clientX - this.dragStartX;
38639 params.onResizing(this.resizeAmount);
38640 };
38641 __decorate([
38642 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('dragService')
38643 ], HorizontalResizeService.prototype, "dragService", void 0);
38644 __decorate([
38645 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
38646 ], HorizontalResizeService.prototype, "ctrlsService", void 0);
38647 HorizontalResizeService = __decorate([
38648 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('horizontalResizeService')
38649 ], HorizontalResizeService);
38650 return HorizontalResizeService;
38651}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
38652
38653
38654
38655
38656
38657/***/ }),
38658/* 171 */
38659/***/ (function(module, __webpack_exports__, __webpack_require__) {
38660
38661"use strict";
38662__webpack_require__.r(__webpack_exports__);
38663/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StandardMenuFactory", function() { return StandardMenuFactory; });
38664/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
38665/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
38666/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
38667/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65);
38668/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44);
38669/**
38670 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38671 * @version v27.3.0
38672 * @link https://www.ag-grid.com/
38673 * @license MIT
38674 */
38675var __extends = (undefined && undefined.__extends) || (function () {
38676 var extendStatics = function (d, b) {
38677 extendStatics = Object.setPrototypeOf ||
38678 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38679 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38680 return extendStatics(d, b);
38681 };
38682 return function (d, b) {
38683 extendStatics(d, b);
38684 function __() { this.constructor = d; }
38685 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38686 };
38687})();
38688var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38689 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38690 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38691 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;
38692 return c > 3 && r && Object.defineProperty(target, key, r), r;
38693};
38694
38695
38696
38697
38698
38699var StandardMenuFactory = /** @class */ (function (_super) {
38700 __extends(StandardMenuFactory, _super);
38701 function StandardMenuFactory() {
38702 return _super !== null && _super.apply(this, arguments) || this;
38703 }
38704 StandardMenuFactory.prototype.hideActiveMenu = function () {
38705 if (this.hidePopup) {
38706 this.hidePopup();
38707 }
38708 };
38709 StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {
38710 var _this = this;
38711 this.showPopup(column, function (eMenu) {
38712 _this.popupService.positionPopupUnderMouseEvent({
38713 column: column,
38714 type: 'columnMenu',
38715 mouseEvent: mouseEvent,
38716 ePopup: eMenu
38717 });
38718 }, mouseEvent.target);
38719 };
38720 StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType) {
38721 var _this = this;
38722 this.showPopup(column, function (eMenu) {
38723 _this.popupService.positionPopupUnderComponent({
38724 type: containerType,
38725 eventSource: eventSource,
38726 ePopup: eMenu,
38727 keepWithinBounds: true,
38728 column: column
38729 });
38730 }, eventSource);
38731 };
38732 StandardMenuFactory.prototype.showPopup = function (column, positionCallback, eventSource) {
38733 var _this = this;
38734 var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');
38735 if (!filterWrapper) {
38736 throw new Error('AG Grid - unable to show popup filter, filter instantiation failed');
38737 }
38738 var eMenu = document.createElement('div');
38739 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_4__["setAriaRole"])(eMenu, 'presentation');
38740 eMenu.classList.add('ag-menu');
38741 this.tabListener = this.addManagedListener(eMenu, 'keydown', function (e) { return _this.trapFocusWithin(e, eMenu); });
38742 filterWrapper.guiPromise.then(function (gui) { return eMenu.appendChild(gui); });
38743 var hidePopup;
38744 var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();
38745 var closedCallback = function (e) {
38746 column.setMenuVisible(false, 'contextMenu');
38747 var isKeyboardEvent = e instanceof KeyboardEvent;
38748 if (_this.tabListener) {
38749 _this.tabListener = _this.tabListener();
38750 }
38751 if (isKeyboardEvent && eventSource && Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isVisible"])(eventSource)) {
38752 var focusableEl = _this.focusService.findTabbableParent(eventSource);
38753 if (focusableEl) {
38754 focusableEl.focus();
38755 }
38756 }
38757 };
38758 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
38759 var addPopupRes = this.popupService.addPopup({
38760 modal: true,
38761 eChild: eMenu,
38762 closeOnEsc: true,
38763 closedCallback: closedCallback,
38764 positionCallback: function () { return positionCallback(eMenu); },
38765 anchorToElement: anchorToElement,
38766 ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')
38767 });
38768 if (addPopupRes) {
38769 this.hidePopup = hidePopup = addPopupRes.hideFunc;
38770 }
38771 filterWrapper.filterPromise.then(function (filter) {
38772 // need to make sure the filter is present before positioning, as only
38773 // after filter it is visible can we find out what the width of it is
38774 positionCallback(eMenu);
38775 if (filter.afterGuiAttached) {
38776 filter.afterGuiAttached({ container: 'columnMenu', hidePopup: hidePopup });
38777 }
38778 });
38779 column.setMenuVisible(true, 'contextMenu');
38780 };
38781 StandardMenuFactory.prototype.trapFocusWithin = function (e, menu) {
38782 if (e.key !== _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].TAB ||
38783 e.defaultPrevented ||
38784 this.focusService.findNextFocusableElement(menu, false, e.shiftKey)) {
38785 return;
38786 }
38787 e.preventDefault();
38788 this.focusService.focusInto(menu, e.shiftKey);
38789 };
38790 StandardMenuFactory.prototype.isMenuEnabled = function (column) {
38791 // for standard, we show menu if filter is enabled, and the menu is not suppressed
38792 return column.isFilterAllowed();
38793 };
38794 __decorate([
38795 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
38796 ], StandardMenuFactory.prototype, "filterManager", void 0);
38797 __decorate([
38798 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
38799 ], StandardMenuFactory.prototype, "popupService", void 0);
38800 __decorate([
38801 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
38802 ], StandardMenuFactory.prototype, "focusService", void 0);
38803 __decorate([
38804 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
38805 ], StandardMenuFactory.prototype, "ctrlsService", void 0);
38806 StandardMenuFactory = __decorate([
38807 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('menuFactory')
38808 ], StandardMenuFactory);
38809 return StandardMenuFactory;
38810}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
38811
38812
38813
38814
38815
38816/***/ }),
38817/* 172 */
38818/***/ (function(module, __webpack_exports__, __webpack_require__) {
38819
38820"use strict";
38821__webpack_require__.r(__webpack_exports__);
38822/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabbedLayout", function() { return TabbedLayout; });
38823/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
38824/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64);
38825/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
38826/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
38827/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
38828/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65);
38829/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(36);
38830/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(12);
38831/**
38832 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38833 * @version v27.3.0
38834 * @link https://www.ag-grid.com/
38835 * @license MIT
38836 */
38837var __extends = (undefined && undefined.__extends) || (function () {
38838 var extendStatics = function (d, b) {
38839 extendStatics = Object.setPrototypeOf ||
38840 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38841 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38842 return extendStatics(d, b);
38843 };
38844 return function (d, b) {
38845 extendStatics(d, b);
38846 function __() { this.constructor = d; }
38847 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38848 };
38849})();
38850var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38851 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38852 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38853 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;
38854 return c > 3 && r && Object.defineProperty(target, key, r), r;
38855};
38856
38857
38858
38859
38860
38861
38862
38863
38864var TabbedLayout = /** @class */ (function (_super) {
38865 __extends(TabbedLayout, _super);
38866 function TabbedLayout(params) {
38867 var _this = _super.call(this, TabbedLayout.getTemplate(params.cssClass)) || this;
38868 _this.items = [];
38869 _this.tabbedItemScrollMap = new Map();
38870 _this.params = params;
38871 if (params.items) {
38872 params.items.forEach(function (item) { return _this.addItem(item); });
38873 }
38874 return _this;
38875 }
38876 TabbedLayout.prototype.postConstruct = function () {
38877 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_1__["ManagedFocusFeature"](this.getFocusableElement(), {
38878 onTabKeyDown: this.onTabKeyDown.bind(this),
38879 handleKeyDown: this.handleKeyDown.bind(this)
38880 }));
38881 };
38882 TabbedLayout.getTemplate = function (cssClass) {
38883 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>";
38884 };
38885 TabbedLayout.prototype.handleKeyDown = function (e) {
38886 var eDocument = this.gridOptionsWrapper.getDocument();
38887 switch (e.key) {
38888 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT:
38889 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].LEFT:
38890 if (!this.eHeader.contains(eDocument.activeElement)) {
38891 return;
38892 }
38893 var currentPosition = this.items.indexOf(this.activeItem);
38894 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);
38895 if (currentPosition === nextPosition) {
38896 return;
38897 }
38898 e.preventDefault();
38899 var nextItem = this.items[nextPosition];
38900 this.showItemWrapper(nextItem);
38901 nextItem.eHeaderButton.focus();
38902 break;
38903 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].UP:
38904 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].DOWN:
38905 e.stopPropagation();
38906 break;
38907 }
38908 };
38909 TabbedLayout.prototype.onTabKeyDown = function (e) {
38910 if (e.defaultPrevented) {
38911 return;
38912 }
38913 var _a = this, focusService = _a.focusService, eHeader = _a.eHeader, eBody = _a.eBody, activeItem = _a.activeItem;
38914 var eDocument = this.gridOptionsWrapper.getDocument();
38915 var activeElement = eDocument.activeElement;
38916 e.preventDefault();
38917 if (eHeader.contains(activeElement)) {
38918 // focus is in header, move into body of popup
38919 focusService.focusInto(eBody, e.shiftKey);
38920 }
38921 else {
38922 // focus is in body, establish if it should return to header
38923 if (focusService.isFocusUnderManagedComponent(eBody)) {
38924 // focus was in a managed focus component and has now left, so we can return to the header
38925 activeItem.eHeaderButton.focus();
38926 }
38927 else {
38928 var nextEl = focusService.findNextFocusableElement(eBody, false, e.shiftKey);
38929 if (nextEl) {
38930 // if another element exists in the body that can be focussed, go to that
38931 nextEl.focus();
38932 }
38933 else {
38934 // otherwise return to the header
38935 activeItem.eHeaderButton.focus();
38936 }
38937 }
38938 }
38939 };
38940 TabbedLayout.prototype.setAfterAttachedParams = function (params) {
38941 this.afterAttachedParams = params;
38942 };
38943 TabbedLayout.prototype.showFirstItem = function () {
38944 if (this.items.length > 0) {
38945 this.showItemWrapper(this.items[0]);
38946 }
38947 };
38948 TabbedLayout.prototype.addItem = function (item) {
38949 var eHeaderButton = document.createElement('span');
38950 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaRole"])(eHeaderButton, 'tab');
38951 eHeaderButton.setAttribute('tabIndex', '-1');
38952 eHeaderButton.appendChild(item.title);
38953 eHeaderButton.classList.add('ag-tab');
38954 this.eHeader.appendChild(eHeaderButton);
38955 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaLabel"])(eHeaderButton, item.titleLabel);
38956 var wrapper = {
38957 tabbedItem: item,
38958 eHeaderButton: eHeaderButton
38959 };
38960 this.items.push(wrapper);
38961 eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));
38962 };
38963 TabbedLayout.prototype.showItem = function (tabbedItem) {
38964 var itemWrapper = this.items.find(function (wrapper) { return wrapper.tabbedItem === tabbedItem; });
38965 if (itemWrapper) {
38966 this.showItemWrapper(itemWrapper);
38967 }
38968 };
38969 TabbedLayout.prototype.showItemWrapper = function (wrapper) {
38970 var _this = this;
38971 var tabbedItem = wrapper.tabbedItem, eHeaderButton = wrapper.eHeaderButton;
38972 if (this.params.onItemClicked) {
38973 this.params.onItemClicked({ item: tabbedItem });
38974 }
38975 if (this.activeItem === wrapper) {
38976 Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["callIfPresent"])(this.params.onActiveItemClicked);
38977 return;
38978 }
38979 if (this.lastScrollListener) {
38980 this.lastScrollListener = this.lastScrollListener();
38981 }
38982 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["clearElement"])(this.eBody);
38983 tabbedItem.bodyPromise.then(function (body) {
38984 _this.eBody.appendChild(body);
38985 var onlyUnmanaged = !_this.focusService.isKeyboardMode();
38986 _this.focusService.focusInto(_this.eBody, false, onlyUnmanaged);
38987 if (tabbedItem.afterAttachedCallback) {
38988 tabbedItem.afterAttachedCallback(_this.afterAttachedParams);
38989 }
38990 if (_this.params.keepScrollPosition) {
38991 var scrollableContainer_1 = (tabbedItem.getScrollableContainer && tabbedItem.getScrollableContainer()) || body;
38992 _this.lastScrollListener = _this.addManagedListener(scrollableContainer_1, 'scroll', function () {
38993 _this.tabbedItemScrollMap.set(tabbedItem.name, scrollableContainer_1.scrollTop);
38994 });
38995 var scrollPosition_1 = _this.tabbedItemScrollMap.get(tabbedItem.name);
38996 if (scrollPosition_1 !== undefined) {
38997 // Safari needs a small timeout or it will fire a scroll event to position 0
38998 setTimeout(function () {
38999 scrollableContainer_1.scrollTop = scrollPosition_1;
39000 }, 0);
39001 }
39002 }
39003 });
39004 if (this.activeItem) {
39005 this.activeItem.eHeaderButton.classList.remove('ag-tab-selected');
39006 }
39007 eHeaderButton.classList.add('ag-tab-selected');
39008 this.activeItem = wrapper;
39009 };
39010 __decorate([
39011 Object(_context_context__WEBPACK_IMPORTED_MODULE_7__["Autowired"])('focusService')
39012 ], TabbedLayout.prototype, "focusService", void 0);
39013 __decorate([
39014 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eHeader')
39015 ], TabbedLayout.prototype, "eHeader", void 0);
39016 __decorate([
39017 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eBody')
39018 ], TabbedLayout.prototype, "eBody", void 0);
39019 __decorate([
39020 _context_context__WEBPACK_IMPORTED_MODULE_7__["PostConstruct"]
39021 ], TabbedLayout.prototype, "postConstruct", null);
39022 return TabbedLayout;
39023}(_widgets_component__WEBPACK_IMPORTED_MODULE_6__["Component"]));
39024
39025
39026
39027
39028
39029/***/ }),
39030/* 173 */
39031/***/ (function(module, __webpack_exports__, __webpack_require__) {
39032
39033"use strict";
39034__webpack_require__.r(__webpack_exports__);
39035/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "simpleHttpRequest", function() { return simpleHttpRequest; });
39036/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37);
39037/**
39038 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
39039 * @version v27.3.0
39040 * @link https://www.ag-grid.com/
39041 * @license MIT
39042 */
39043
39044/**
39045 * @deprecated
39046 */
39047function simpleHttpRequest(params) {
39048 return new _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"](function (resolve) {
39049 var httpRequest = new XMLHttpRequest();
39050 httpRequest.open('GET', params.url);
39051 httpRequest.send();
39052 httpRequest.onreadystatechange = function () {
39053 if (httpRequest.readyState === 4 && httpRequest.status === 200) {
39054 resolve(JSON.parse(httpRequest.responseText));
39055 }
39056 };
39057 });
39058}
39059
39060
39061
39062
39063/***/ }),
39064/* 174 */
39065/***/ (function(module, __webpack_exports__, __webpack_require__) {
39066
39067"use strict";
39068__webpack_require__.r(__webpack_exports__);
39069/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResizeObserverService", function() { return ResizeObserverService; });
39070/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
39071/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
39072/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
39073/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
39074/**
39075 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
39076 * @version v27.3.0
39077 * @link https://www.ag-grid.com/
39078 * @license MIT
39079 */
39080var __extends = (undefined && undefined.__extends) || (function () {
39081 var extendStatics = function (d, b) {
39082 extendStatics = Object.setPrototypeOf ||
39083 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
39084 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
39085 return extendStatics(d, b);
39086 };
39087 return function (d, b) {
39088 extendStatics(d, b);
39089 function __() { this.constructor = d; }
39090 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
39091 };
39092})();
39093var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
39094 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39095 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
39096 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;
39097 return c > 3 && r && Object.defineProperty(target, key, r), r;
39098};
39099
39100
39101
39102
39103var DEBOUNCE_DELAY = 50;
39104var ResizeObserverService = /** @class */ (function (_super) {
39105 __extends(ResizeObserverService, _super);
39106 function ResizeObserverService() {
39107 var _this = _super !== null && _super.apply(this, arguments) || this;
39108 _this.polyfillFunctions = [];
39109 return _this;
39110 }
39111 ResizeObserverService.prototype.observeResize = function (element, callback) {
39112 var _this = this;
39113 var eDocument = this.gridOptionsWrapper.getDocument();
39114 var win = (eDocument.defaultView || window);
39115 // this gets fired too often and might cause some relayout issues
39116 // so we add a debounce to the callback here to avoid the flashing effect.
39117 var debouncedCallback = Object(_utils_function__WEBPACK_IMPORTED_MODULE_2__["debounce"])(callback, DEBOUNCE_DELAY);
39118 var useBrowserResizeObserver = function () {
39119 var resizeObserver = new win.ResizeObserver(debouncedCallback);
39120 resizeObserver.observe(element);
39121 return function () { return resizeObserver.disconnect(); };
39122 };
39123 var usePolyfill = function () {
39124 // initialise to the current width and height, so first call will have no changes
39125 var widthLastTime = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["offsetWidth"])(element);
39126 var heightLastTime = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["offsetHeight"])(element);
39127 // when finished, this gets turned to false.
39128 var running = true;
39129 var periodicallyCheckWidthAndHeight = function () {
39130 if (running) {
39131 var newWidth = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["offsetWidth"])(element);
39132 var newHeight = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["offsetHeight"])(element);
39133 var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;
39134 if (changed) {
39135 widthLastTime = newWidth;
39136 heightLastTime = newHeight;
39137 callback();
39138 }
39139 _this.doNextPolyfillTurn(periodicallyCheckWidthAndHeight);
39140 }
39141 };
39142 periodicallyCheckWidthAndHeight();
39143 // the callback function we return sets running to false
39144 return function () { return running = false; };
39145 };
39146 var suppressResize = this.gridOptionsWrapper.isSuppressBrowserResizeObserver();
39147 var resizeObserverExists = !!win.ResizeObserver;
39148 if (resizeObserverExists && !suppressResize) {
39149 return useBrowserResizeObserver();
39150 }
39151 return usePolyfill();
39152 };
39153 ResizeObserverService.prototype.doNextPolyfillTurn = function (func) {
39154 this.polyfillFunctions.push(func);
39155 this.schedulePolyfill();
39156 };
39157 ResizeObserverService.prototype.schedulePolyfill = function () {
39158 var _this = this;
39159 if (this.polyfillScheduled) {
39160 return;
39161 }
39162 var executeAllFuncs = function () {
39163 var funcs = _this.polyfillFunctions;
39164 // make sure set scheduled to false and clear clear array
39165 // before executing the funcs, as the funcs could add more funcs
39166 _this.polyfillScheduled = false;
39167 _this.polyfillFunctions = [];
39168 funcs.forEach(function (f) { return f(); });
39169 };
39170 this.polyfillScheduled = true;
39171 this.getFrameworkOverrides().setTimeout(executeAllFuncs, DEBOUNCE_DELAY);
39172 };
39173 ResizeObserverService = __decorate([
39174 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('resizeObserverService')
39175 ], ResizeObserverService);
39176 return ResizeObserverService;
39177}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
39178
39179
39180
39181
39182
39183/***/ }),
39184/* 175 */
39185/***/ (function(module, __webpack_exports__, __webpack_require__) {
39186
39187"use strict";
39188__webpack_require__.r(__webpack_exports__);
39189/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameService", function() { return AnimationFrameService; });
39190/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
39191/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
39192/**
39193 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
39194 * @version v27.3.0
39195 * @link https://www.ag-grid.com/
39196 * @license MIT
39197 */
39198var __extends = (undefined && undefined.__extends) || (function () {
39199 var extendStatics = function (d, b) {
39200 extendStatics = Object.setPrototypeOf ||
39201 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
39202 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
39203 return extendStatics(d, b);
39204 };
39205 return function (d, b) {
39206 extendStatics(d, b);
39207 function __() { this.constructor = d; }
39208 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
39209 };
39210})();
39211var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
39212 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39213 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
39214 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;
39215 return c > 3 && r && Object.defineProperty(target, key, r), r;
39216};
39217
39218
39219var AnimationFrameService = /** @class */ (function (_super) {
39220 __extends(AnimationFrameService, _super);
39221 function AnimationFrameService() {
39222 var _this = _super !== null && _super.apply(this, arguments) || this;
39223 // p1 and p2 are create tasks are to do with row and cell creation.
39224 // for them we want to execute according to row order, so we use
39225 // TaskItem so we know what index the item is for.
39226 _this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows
39227 _this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality
39228 // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new
39229 // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as
39230 // important.
39231 _this.destroyTasks = [];
39232 _this.ticking = false;
39233 // we need to know direction of scroll, to build up rows in the direction of
39234 // the scroll. eg if user scrolls down, we extend the rows by building down.
39235 _this.scrollGoingDown = true;
39236 _this.lastScrollTop = 0;
39237 _this.taskCount = 0;
39238 _this.cancelledTasks = new Set();
39239 return _this;
39240 }
39241 AnimationFrameService.prototype.setScrollTop = function (scrollTop) {
39242 this.scrollGoingDown = scrollTop > this.lastScrollTop;
39243 this.lastScrollTop = scrollTop;
39244 };
39245 AnimationFrameService.prototype.init = function () {
39246 this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();
39247 };
39248 AnimationFrameService.prototype.isOn = function () {
39249 return this.useAnimationFrame;
39250 };
39251 // this method is for our AG Grid sanity only - if animation frames are turned off,
39252 // then no place in the code should be looking to add any work to be done in animation
39253 // frames. this stops bugs - where some code is asking for a frame to be executed
39254 // when it should not.
39255 AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {
39256 if (this.useAnimationFrame === false) {
39257 console.warn("AG Grid: AnimationFrameService." + methodName + " called but animation frames are off");
39258 }
39259 };
39260 AnimationFrameService.prototype.createTask = function (task, index, list) {
39261 this.verifyAnimationFrameOn(list);
39262 var taskItem = { task: task, index: index, createOrder: ++this.taskCount };
39263 this.addTaskToList(this[list], taskItem);
39264 this.schedule();
39265 };
39266 AnimationFrameService.prototype.cancelTask = function (task) {
39267 this.cancelledTasks.add(task);
39268 };
39269 AnimationFrameService.prototype.addTaskToList = function (taskList, task) {
39270 taskList.list.push(task);
39271 taskList.sorted = false;
39272 };
39273 AnimationFrameService.prototype.sortTaskList = function (taskList) {
39274 if (taskList.sorted) {
39275 return;
39276 }
39277 var sortDirection = this.scrollGoingDown ? 1 : -1;
39278 // sort first by row index (taking into account scroll direction), then by
39279 // order of task creation (always ascending, so cells will render left-to-right)
39280 taskList.list.sort(function (a, b) { return a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder; });
39281 taskList.sorted = true;
39282 };
39283 AnimationFrameService.prototype.addDestroyTask = function (task) {
39284 this.verifyAnimationFrameOn('createTasksP3');
39285 this.destroyTasks.push(task);
39286 this.schedule();
39287 };
39288 AnimationFrameService.prototype.executeFrame = function (millis) {
39289 this.verifyAnimationFrameOn('executeFrame');
39290 var p1TaskList = this.createTasksP1;
39291 var p1Tasks = p1TaskList.list;
39292 var p2TaskList = this.createTasksP2;
39293 var p2Tasks = p2TaskList.list;
39294 var destroyTasks = this.destroyTasks;
39295 var frameStart = new Date().getTime();
39296 var duration = (new Date().getTime()) - frameStart;
39297 // 16ms is 60 fps
39298 var noMaxMillis = millis <= 0;
39299 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
39300 while (noMaxMillis || duration < millis) {
39301 var gridBodyDidSomething = gridBodyCon.getScrollFeature().executeAnimationFrameScroll();
39302 if (!gridBodyDidSomething) {
39303 var task = void 0;
39304 if (p1Tasks.length) {
39305 this.sortTaskList(p1TaskList);
39306 task = p1Tasks.pop().task;
39307 }
39308 else if (p2Tasks.length) {
39309 this.sortTaskList(p2TaskList);
39310 task = p2Tasks.pop().task;
39311 }
39312 else if (destroyTasks.length) {
39313 task = destroyTasks.pop();
39314 }
39315 else {
39316 this.cancelledTasks.clear();
39317 break;
39318 }
39319 if (!this.cancelledTasks.has(task)) {
39320 task();
39321 }
39322 }
39323 duration = (new Date().getTime()) - frameStart;
39324 }
39325 if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {
39326 this.requestFrame();
39327 }
39328 else {
39329 this.stopTicking();
39330 }
39331 };
39332 AnimationFrameService.prototype.stopTicking = function () {
39333 this.ticking = false;
39334 };
39335 AnimationFrameService.prototype.flushAllFrames = function () {
39336 if (!this.useAnimationFrame) {
39337 return;
39338 }
39339 this.executeFrame(-1);
39340 };
39341 AnimationFrameService.prototype.schedule = function () {
39342 if (!this.useAnimationFrame) {
39343 return;
39344 }
39345 if (!this.ticking) {
39346 this.ticking = true;
39347 this.requestFrame();
39348 }
39349 };
39350 AnimationFrameService.prototype.requestFrame = function () {
39351 // check for the existence of requestAnimationFrame, and if
39352 // it's missing, then we polyfill it with setTimeout()
39353 var callback = this.executeFrame.bind(this, 60);
39354 var eDocument = this.gridOptionsWrapper.getDocument();
39355 var win = (eDocument.defaultView || window);
39356 if (win.requestAnimationFrame) {
39357 win.requestAnimationFrame(callback);
39358 }
39359 else if (win.webkitRequestAnimationFrame) {
39360 win.webkitRequestAnimationFrame(callback);
39361 }
39362 else {
39363 win.setTimeout(callback, 0);
39364 }
39365 };
39366 AnimationFrameService.prototype.isQueueEmpty = function () {
39367 return !this.ticking;
39368 };
39369 // a debounce utility used for parts of the app involved with rendering.
39370 // the advantage over normal debounce is the client can call flushAllFrames()
39371 // to make sure all rendering is complete. we don't wait any milliseconds,
39372 // as this is intended to batch calls in one VM turn.
39373 AnimationFrameService.prototype.debounce = function (func) {
39374 var _this = this;
39375 var pending = false;
39376 return function () {
39377 if (!_this.isOn()) {
39378 _this.getFrameworkOverrides().setTimeout(func, 0);
39379 return;
39380 }
39381 if (pending) {
39382 return;
39383 }
39384 pending = true;
39385 _this.addDestroyTask(function () {
39386 pending = false;
39387 func();
39388 });
39389 };
39390 };
39391 __decorate([
39392 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
39393 ], AnimationFrameService.prototype, "ctrlsService", void 0);
39394 __decorate([
39395 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
39396 ], AnimationFrameService.prototype, "init", null);
39397 AnimationFrameService = __decorate([
39398 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('animationFrameService')
39399 ], AnimationFrameService);
39400 return AnimationFrameService;
39401}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
39402
39403
39404
39405
39406
39407/***/ }),
39408/* 176 */
39409/***/ (function(module, __webpack_exports__, __webpack_require__) {
39410
39411"use strict";
39412__webpack_require__.r(__webpack_exports__);
39413/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PositionableFeature", function() { return PositionableFeature; });
39414/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
39415/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
39416/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
39417/**
39418 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
39419 * @version v27.3.0
39420 * @link https://www.ag-grid.com/
39421 * @license MIT
39422 */
39423var __extends = (undefined && undefined.__extends) || (function () {
39424 var extendStatics = function (d, b) {
39425 extendStatics = Object.setPrototypeOf ||
39426 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
39427 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
39428 return extendStatics(d, b);
39429 };
39430 return function (d, b) {
39431 extendStatics(d, b);
39432 function __() { this.constructor = d; }
39433 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
39434 };
39435})();
39436var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
39437 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39438 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
39439 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;
39440 return c > 3 && r && Object.defineProperty(target, key, r), r;
39441};
39442
39443
39444
39445var RESIZE_CONTAINER_STYLE = 'ag-resizer-wrapper';
39446var 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>";
39447var PositionableFeature = /** @class */ (function (_super) {
39448 __extends(PositionableFeature, _super);
39449 function PositionableFeature(element, config) {
39450 var _this = _super.call(this) || this;
39451 _this.element = element;
39452 _this.dragStartPosition = {
39453 x: 0,
39454 y: 0
39455 };
39456 _this.position = {
39457 x: 0,
39458 y: 0
39459 };
39460 _this.lastSize = {
39461 width: -1,
39462 height: -1
39463 };
39464 _this.positioned = false;
39465 _this.resizersAdded = false;
39466 _this.resizeListeners = [];
39467 _this.boundaryEl = null;
39468 _this.isResizing = false;
39469 _this.isMoving = false;
39470 _this.resizable = {};
39471 _this.movable = false;
39472 _this.currentResizer = null;
39473 _this.config = Object.assign({}, { popup: false }, config);
39474 return _this;
39475 }
39476 PositionableFeature.prototype.center = function () {
39477 var _a = this.offsetParent, clientHeight = _a.clientHeight, clientWidth = _a.clientWidth;
39478 var x = (clientWidth / 2) - (this.getWidth() / 2);
39479 var y = (clientHeight / 2) - (this.getHeight() / 2);
39480 this.offsetElement(x, y);
39481 };
39482 PositionableFeature.prototype.initialisePosition = function () {
39483 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;
39484 if (!this.offsetParent) {
39485 this.setOffsetParent();
39486 }
39487 var computedMinHeight = 0;
39488 var computedMinWidth = 0;
39489 // here we don't use the main offset parent but the element's offsetParent
39490 // in order to calculated the minWidth and minHeight correctly
39491 var isVisible = !!this.element.offsetParent;
39492 if (isVisible) {
39493 var boundaryEl = this.findBoundaryElement();
39494 var offsetParentComputedStyles = window.getComputedStyle(boundaryEl);
39495 if (offsetParentComputedStyles.minWidth != null) {
39496 var paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;
39497 computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;
39498 }
39499 if (offsetParentComputedStyles.minHeight != null) {
39500 var paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;
39501 computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;
39502 }
39503 }
39504 this.minHeight = minHeight || computedMinHeight;
39505 this.minWidth = minWidth || computedMinWidth;
39506 if (width) {
39507 this.setWidth(width);
39508 }
39509 if (height) {
39510 this.setHeight(height);
39511 }
39512 if (!width || !height) {
39513 this.refreshSize();
39514 }
39515 if (centered) {
39516 this.center();
39517 }
39518 else if (x || y) {
39519 this.offsetElement(x, y);
39520 }
39521 else if (isVisible && forcePopupParentAsOffsetParent && this.boundaryEl) {
39522 var top_1 = parseFloat(this.boundaryEl.style.top);
39523 var left = parseFloat(this.boundaryEl.style.left);
39524 this.offsetElement(isNaN(left) ? 0 : left, isNaN(top_1) ? 0 : top_1);
39525 }
39526 this.positioned = !!this.offsetParent;
39527 };
39528 PositionableFeature.prototype.isPositioned = function () {
39529 return this.positioned;
39530 };
39531 PositionableFeature.prototype.getPosition = function () {
39532 return this.position;
39533 };
39534 PositionableFeature.prototype.setMovable = function (movable, moveElement) {
39535 if (!this.config.popup || movable === this.movable) {
39536 return;
39537 }
39538 this.movable = movable;
39539 var params = this.moveElementDragListener || {
39540 eElement: moveElement,
39541 onDragStart: this.onMoveStart.bind(this),
39542 onDragging: this.onMove.bind(this),
39543 onDragStop: this.onMoveEnd.bind(this)
39544 };
39545 if (movable) {
39546 this.dragService.addDragSource(params);
39547 this.moveElementDragListener = params;
39548 }
39549 else {
39550 this.dragService.removeDragSource(params);
39551 this.moveElementDragListener = undefined;
39552 }
39553 };
39554 PositionableFeature.prototype.setResizable = function (resizable) {
39555 var _this = this;
39556 this.clearResizeListeners();
39557 if (resizable) {
39558 this.addResizers();
39559 }
39560 else {
39561 this.removeResizers();
39562 }
39563 if (typeof resizable === 'boolean') {
39564 if (resizable === false) {
39565 return;
39566 }
39567 resizable = {
39568 topLeft: resizable,
39569 top: resizable,
39570 topRight: resizable,
39571 right: resizable,
39572 bottomRight: resizable,
39573 bottom: resizable,
39574 bottomLeft: resizable,
39575 left: resizable
39576 };
39577 }
39578 Object.keys(resizable).forEach(function (side) {
39579 var resizableStructure = resizable;
39580 var val = !!resizableStructure[side];
39581 var resizerEl = _this.getResizerElement(side);
39582 var params = {
39583 dragStartPixels: 0,
39584 eElement: resizerEl,
39585 onDragStart: function (e) { return _this.onResizeStart(e, side); },
39586 onDragging: _this.onResize.bind(_this),
39587 onDragStop: function (e) { return _this.onResizeEnd(e, side); },
39588 };
39589 if (!!_this.resizable[side] !== val || (!_this.isAlive() && !val)) {
39590 if (val) {
39591 _this.dragService.addDragSource(params);
39592 _this.resizeListeners.push(params);
39593 resizerEl.style.pointerEvents = 'all';
39594 }
39595 else {
39596 resizerEl.style.pointerEvents = 'none';
39597 }
39598 }
39599 });
39600 };
39601 PositionableFeature.prototype.removeSizeFromEl = function () {
39602 this.element.style.removeProperty('height');
39603 this.element.style.removeProperty('width');
39604 this.element.style.removeProperty('flex');
39605 };
39606 PositionableFeature.prototype.restoreLastSize = function () {
39607 this.element.style.flex = '0 0 auto';
39608 var _a = this.lastSize, height = _a.height, width = _a.width;
39609 if (width !== -1) {
39610 this.element.style.width = width + "px";
39611 }
39612 if (height !== -1) {
39613 this.element.style.height = height + "px";
39614 }
39615 };
39616 PositionableFeature.prototype.getHeight = function () {
39617 return this.element.offsetHeight;
39618 };
39619 PositionableFeature.prototype.setHeight = function (height) {
39620 var popup = this.config.popup;
39621 var eGui = this.element;
39622 var isPercent = false;
39623 if (typeof height === 'string' && height.indexOf('%') !== -1) {
39624 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedHeight"])(eGui, height);
39625 height = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getAbsoluteHeight"])(eGui);
39626 isPercent = true;
39627 }
39628 else if (this.positioned) {
39629 var elRect = this.element.getBoundingClientRect();
39630 var parentRect = this.offsetParent.getBoundingClientRect();
39631 height = Math.max(this.minHeight, height);
39632 var clientHeight = this.offsetParent.clientHeight;
39633 var yPosition = popup ? this.position.y : elRect.top;
39634 var parentTop = popup ? 0 : parentRect.top;
39635 if (clientHeight && (height + yPosition > clientHeight + parentTop)) {
39636 height = clientHeight - yPosition;
39637 }
39638 }
39639 if (this.getHeight() === height) {
39640 return;
39641 }
39642 if (!isPercent) {
39643 if (popup) {
39644 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedHeight"])(eGui, height);
39645 }
39646 else {
39647 eGui.style.height = height + "px";
39648 eGui.style.flex = '0 0 auto';
39649 this.lastSize.height = typeof height === 'number' ? height : parseFloat(height);
39650 }
39651 }
39652 else {
39653 eGui.style.maxHeight = 'unset';
39654 eGui.style.minHeight = 'unset';
39655 }
39656 };
39657 PositionableFeature.prototype.getWidth = function () {
39658 return this.element.offsetWidth;
39659 };
39660 PositionableFeature.prototype.setWidth = function (width) {
39661 var eGui = this.element;
39662 var popup = this.config.popup;
39663 var isPercent = false;
39664 if (typeof width === 'string' && width.indexOf('%') !== -1) {
39665 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedWidth"])(eGui, width);
39666 width = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getAbsoluteWidth"])(eGui);
39667 isPercent = true;
39668 }
39669 else if (this.positioned) {
39670 width = Math.max(this.minWidth, width);
39671 var clientWidth = this.offsetParent.clientWidth;
39672 var xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;
39673 if (clientWidth && (width + xPosition > clientWidth)) {
39674 width = clientWidth - xPosition;
39675 }
39676 }
39677 if (this.getWidth() === width) {
39678 return;
39679 }
39680 if (!isPercent) {
39681 if (this.config.popup) {
39682 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedWidth"])(eGui, width);
39683 }
39684 else {
39685 eGui.style.width = width + "px";
39686 eGui.style.flex = ' unset';
39687 this.lastSize.width = typeof width === 'number' ? width : parseFloat(width);
39688 }
39689 }
39690 else {
39691 eGui.style.maxWidth = 'unset';
39692 eGui.style.minWidth = 'unset';
39693 }
39694 };
39695 PositionableFeature.prototype.offsetElement = function (x, y) {
39696 if (x === void 0) { x = 0; }
39697 if (y === void 0) { y = 0; }
39698 var ePopup = this.config.forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;
39699 this.popupService.positionPopup({
39700 ePopup: ePopup,
39701 x: x,
39702 y: y,
39703 keepWithinBounds: true
39704 });
39705 this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));
39706 };
39707 PositionableFeature.prototype.setPosition = function (x, y) {
39708 this.position.x = x;
39709 this.position.y = y;
39710 };
39711 PositionableFeature.prototype.updateDragStartPosition = function (x, y) {
39712 this.dragStartPosition = { x: x, y: y };
39713 };
39714 PositionableFeature.prototype.calculateMouseMovement = function (params) {
39715 var e = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;
39716 var xDiff = e.clientX - this.dragStartPosition.x;
39717 var yDiff = e.clientY - this.dragStartPosition.y;
39718 var movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;
39719 var movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;
39720 return { movementX: movementX, movementY: movementY };
39721 };
39722 PositionableFeature.prototype.shouldSkipX = function (e, isLeft, anywhereWithin, diff) {
39723 var elRect = this.element.getBoundingClientRect();
39724 var parentRect = this.offsetParent.getBoundingClientRect();
39725 var boundaryElRect = this.boundaryEl.getBoundingClientRect();
39726 var xPosition = this.config.popup ? this.position.x : elRect.left;
39727 // skip if cursor is outside of popupParent horizontally
39728 var skipX = ((xPosition <= 0 && parentRect.left >= e.clientX) ||
39729 (parentRect.right <= e.clientX && parentRect.right <= boundaryElRect.right));
39730 if (skipX) {
39731 return true;
39732 }
39733 if (isLeft) {
39734 skipX = (
39735 // skip if we are moving to the left and the cursor
39736 // is positioned to the right of the left side anchor
39737 (diff < 0 && e.clientX > xPosition + parentRect.left) ||
39738 // skip if we are moving to the right and the cursor
39739 // is positioned to the left of the dialog
39740 (diff > 0 && e.clientX < xPosition + parentRect.left));
39741 }
39742 else {
39743 if (anywhereWithin) {
39744 // if anywhereWithin is true, we allow to move
39745 // as long as the cursor is within the dialog
39746 skipX = ((diff < 0 && e.clientX > boundaryElRect.right) ||
39747 (diff > 0 && e.clientX < xPosition + parentRect.left));
39748 }
39749 else {
39750 skipX = (
39751 // if the movement is bound to the right side of the dialog
39752 // we skip if we are moving to the left and the cursor
39753 // is to the right of the dialog
39754 (diff < 0 && e.clientX > boundaryElRect.right) ||
39755 // or skip if we are moving to the right and the cursor
39756 // is to the left of the right side anchor
39757 (diff > 0 && e.clientX < boundaryElRect.right));
39758 }
39759 }
39760 return skipX;
39761 };
39762 PositionableFeature.prototype.shouldSkipY = function (e, isTop, topBuffer, diff) {
39763 if (topBuffer === void 0) { topBuffer = 0; }
39764 var elRect = this.element.getBoundingClientRect();
39765 var parentRect = this.offsetParent.getBoundingClientRect();
39766 var boundaryElRect = this.boundaryEl.getBoundingClientRect();
39767 var yPosition = this.config.popup ? this.position.y : elRect.top;
39768 // skip if cursor is outside of popupParent vertically
39769 var skipY = ((yPosition <= 0 && parentRect.top >= e.clientY) ||
39770 (parentRect.bottom <= e.clientY && parentRect.bottom <= boundaryElRect.bottom));
39771 if (skipY) {
39772 return true;
39773 }
39774 if (isTop) {
39775 skipY = (
39776 // skip if we are moving to towards top and the cursor is
39777 // below the top anchor + topBuffer
39778 // note: topBuffer is used when moving the dialog using the title bar
39779 (diff < 0 && e.clientY > yPosition + parentRect.top + topBuffer) ||
39780 // skip if we are moving to the bottom and the cursor is
39781 // above the top anchor
39782 (diff > 0 && e.clientY < yPosition + parentRect.top));
39783 }
39784 else {
39785 skipY = (
39786 // skip if we are moving towards the top and the cursor
39787 // is below the bottom anchor
39788 (diff < 0 && e.clientY > boundaryElRect.bottom) ||
39789 // skip if we are moving towards the bottom and the cursor
39790 // is above the bottom anchor
39791 (diff > 0 && e.clientY < boundaryElRect.bottom));
39792 }
39793 return skipY;
39794 };
39795 PositionableFeature.prototype.createResizeMap = function () {
39796 var eGui = this.element;
39797 this.resizerMap = {
39798 topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },
39799 top: { element: eGui.querySelector('[ref=eTopResizer]') },
39800 topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },
39801 right: { element: eGui.querySelector('[ref=eRightResizer]') },
39802 bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },
39803 bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },
39804 bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },
39805 left: { element: eGui.querySelector('[ref=eLeftResizer]') }
39806 };
39807 };
39808 PositionableFeature.prototype.addResizers = function () {
39809 if (this.resizersAdded) {
39810 return;
39811 }
39812 var eGui = this.element;
39813 if (!eGui) {
39814 return;
39815 }
39816 var parser = new DOMParser();
39817 var resizers = parser.parseFromString(RESIZE_TEMPLATE, 'text/html').body;
39818 eGui.appendChild(resizers.firstChild);
39819 this.createResizeMap();
39820 this.resizersAdded = true;
39821 };
39822 PositionableFeature.prototype.removeResizers = function () {
39823 this.resizerMap = undefined;
39824 var resizerEl = this.element.querySelector("." + RESIZE_CONTAINER_STYLE);
39825 if (resizerEl) {
39826 this.element.removeChild(resizerEl);
39827 }
39828 this.resizersAdded = false;
39829 };
39830 PositionableFeature.prototype.getResizerElement = function (side) {
39831 return this.resizerMap[side].element;
39832 };
39833 PositionableFeature.prototype.onResizeStart = function (e, side) {
39834 this.boundaryEl = this.findBoundaryElement();
39835 if (!this.positioned) {
39836 this.initialisePosition();
39837 }
39838 this.currentResizer = {
39839 isTop: !!side.match(/top/i),
39840 isRight: !!side.match(/right/i),
39841 isBottom: !!side.match(/bottom/i),
39842 isLeft: !!side.match(/left/i),
39843 };
39844 this.element.classList.add('ag-resizing');
39845 this.resizerMap[side].element.classList.add('ag-active');
39846 var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;
39847 if (!popup && !forcePopupParentAsOffsetParent) {
39848 this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);
39849 }
39850 this.isResizing = true;
39851 this.updateDragStartPosition(e.clientX, e.clientY);
39852 };
39853 PositionableFeature.prototype.getSiblings = function () {
39854 var element = this.element;
39855 var parent = element.parentElement;
39856 if (!parent) {
39857 return null;
39858 }
39859 return Array.prototype.slice.call(parent.children).filter(function (el) { return !el.classList.contains('ag-hidden'); });
39860 };
39861 PositionableFeature.prototype.getMinSizeOfSiblings = function () {
39862 var siblings = this.getSiblings() || [];
39863 var height = 0;
39864 var width = 0;
39865 for (var i = 0; i < siblings.length; i++) {
39866 var currentEl = siblings[i];
39867 var isFlex = !!currentEl.style.flex && currentEl.style.flex !== '0 0 auto';
39868 if (currentEl === this.element) {
39869 continue;
39870 }
39871 var nextHeight = this.minHeight || 0;
39872 var nextWidth = this.minWidth || 0;
39873 if (isFlex) {
39874 var computedStyle = window.getComputedStyle(currentEl);
39875 if (computedStyle.minHeight) {
39876 nextHeight = parseInt(computedStyle.minHeight, 10);
39877 }
39878 if (computedStyle.minWidth) {
39879 nextWidth = parseInt(computedStyle.minWidth, 10);
39880 }
39881 }
39882 else {
39883 nextHeight = currentEl.offsetHeight;
39884 nextWidth = currentEl.offsetWidth;
39885 }
39886 height += nextHeight;
39887 width += nextWidth;
39888 }
39889 return { height: height, width: width };
39890 };
39891 PositionableFeature.prototype.applySizeToSiblings = function (vertical) {
39892 var containerToFlex = null;
39893 var siblings = this.getSiblings();
39894 if (!siblings) {
39895 return;
39896 }
39897 for (var i = 0; i < siblings.length; i++) {
39898 var el = siblings[i];
39899 if (el === containerToFlex) {
39900 continue;
39901 }
39902 if (vertical) {
39903 el.style.height = el.offsetHeight + "px";
39904 }
39905 else {
39906 el.style.width = el.offsetWidth + "px";
39907 }
39908 el.style.flex = '0 0 auto';
39909 if (el === this.element) {
39910 containerToFlex = siblings[i + 1];
39911 }
39912 }
39913 if (containerToFlex) {
39914 containerToFlex.style.removeProperty('height');
39915 containerToFlex.style.removeProperty('min-height');
39916 containerToFlex.style.removeProperty('max-height');
39917 containerToFlex.style.flex = '1 1 auto';
39918 }
39919 };
39920 PositionableFeature.prototype.onResize = function (e) {
39921 if (!this.isResizing || !this.currentResizer) {
39922 return;
39923 }
39924 var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;
39925 var _b = this.currentResizer, isTop = _b.isTop, isRight = _b.isRight, isBottom = _b.isBottom, isLeft = _b.isLeft;
39926 var isHorizontal = isRight || isLeft;
39927 var isVertical = isBottom || isTop;
39928 var _c = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _c.movementX, movementY = _c.movementY;
39929 var xPosition = this.position.x;
39930 var yPosition = this.position.y;
39931 var offsetLeft = 0;
39932 var offsetTop = 0;
39933 if (isHorizontal && movementX) {
39934 var direction = isLeft ? -1 : 1;
39935 var oldWidth = this.getWidth();
39936 var newWidth = oldWidth + (movementX * direction);
39937 var skipWidth = false;
39938 if (isLeft) {
39939 offsetLeft = oldWidth - newWidth;
39940 if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {
39941 skipWidth = true;
39942 offsetLeft = 0;
39943 }
39944 }
39945 if (!skipWidth) {
39946 this.setWidth(newWidth);
39947 }
39948 }
39949 if (isVertical && movementY) {
39950 var direction = isTop ? -1 : 1;
39951 var oldHeight = this.getHeight();
39952 var newHeight = oldHeight + (movementY * direction);
39953 var skipHeight = false;
39954 if (isTop) {
39955 offsetTop = oldHeight - newHeight;
39956 if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {
39957 skipHeight = true;
39958 offsetTop = 0;
39959 }
39960 }
39961 else {
39962 // do not let the size of all siblings be higher than the parent container
39963 if (!this.config.popup &&
39964 !this.config.forcePopupParentAsOffsetParent &&
39965 oldHeight < newHeight &&
39966 (this.getMinSizeOfSiblings().height + newHeight) > this.element.parentElement.offsetHeight) {
39967 skipHeight = true;
39968 }
39969 }
39970 if (!skipHeight) {
39971 this.setHeight(newHeight);
39972 }
39973 }
39974 this.updateDragStartPosition(e.clientX, e.clientY);
39975 if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {
39976 this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);
39977 }
39978 };
39979 PositionableFeature.prototype.onResizeEnd = function (e, side) {
39980 this.isResizing = false;
39981 this.currentResizer = null;
39982 this.boundaryEl = null;
39983 var params = {
39984 type: 'resize',
39985 api: this.gridOptionsWrapper.getApi(),
39986 columnApi: this.gridOptionsWrapper.getColumnApi()
39987 };
39988 this.element.classList.remove('ag-resizing');
39989 this.resizerMap[side].element.classList.remove('ag-active');
39990 this.dispatchEvent(params);
39991 };
39992 PositionableFeature.prototype.refreshSize = function () {
39993 var eGui = this.element;
39994 if (this.config.popup) {
39995 if (!this.config.width) {
39996 this.setWidth(eGui.offsetWidth);
39997 }
39998 if (!this.config.height) {
39999 this.setHeight(eGui.offsetHeight);
40000 }
40001 }
40002 };
40003 PositionableFeature.prototype.onMoveStart = function (e) {
40004 this.boundaryEl = this.findBoundaryElement();
40005 if (!this.positioned) {
40006 this.initialisePosition();
40007 }
40008 this.isMoving = true;
40009 this.element.classList.add('ag-moving');
40010 this.updateDragStartPosition(e.clientX, e.clientY);
40011 };
40012 PositionableFeature.prototype.onMove = function (e) {
40013 if (!this.isMoving) {
40014 return;
40015 }
40016 var _a = this.position, x = _a.x, y = _a.y;
40017 var topBuffer;
40018 if (this.config.calculateTopBuffer) {
40019 topBuffer = this.config.calculateTopBuffer();
40020 }
40021 var _b = this.calculateMouseMovement({
40022 e: e,
40023 isTop: true,
40024 anywhereWithin: true,
40025 topBuffer: topBuffer
40026 }), movementX = _b.movementX, movementY = _b.movementY;
40027 this.offsetElement(x + movementX, y + movementY);
40028 this.updateDragStartPosition(e.clientX, e.clientY);
40029 };
40030 PositionableFeature.prototype.onMoveEnd = function () {
40031 this.isMoving = false;
40032 this.boundaryEl = null;
40033 this.element.classList.remove('ag-moving');
40034 };
40035 PositionableFeature.prototype.setOffsetParent = function () {
40036 if (this.config.forcePopupParentAsOffsetParent) {
40037 this.offsetParent = this.popupService.getPopupParent();
40038 }
40039 else {
40040 this.offsetParent = this.element.offsetParent;
40041 }
40042 };
40043 PositionableFeature.prototype.findBoundaryElement = function () {
40044 var el = this.element;
40045 while (el) {
40046 if (window.getComputedStyle(el).position !== 'static') {
40047 return el;
40048 }
40049 el = el.parentElement;
40050 }
40051 return this.element;
40052 };
40053 PositionableFeature.prototype.clearResizeListeners = function () {
40054 while (this.resizeListeners.length) {
40055 var params = this.resizeListeners.pop();
40056 this.dragService.removeDragSource(params);
40057 }
40058 };
40059 PositionableFeature.prototype.destroy = function () {
40060 _super.prototype.destroy.call(this);
40061 if (this.moveElementDragListener) {
40062 this.dragService.removeDragSource(this.moveElementDragListener);
40063 }
40064 this.clearResizeListeners();
40065 this.removeResizers();
40066 };
40067 __decorate([
40068 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('popupService')
40069 ], PositionableFeature.prototype, "popupService", void 0);
40070 __decorate([
40071 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragService')
40072 ], PositionableFeature.prototype, "dragService", void 0);
40073 return PositionableFeature;
40074}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
40075
40076
40077
40078
40079
40080/***/ }),
40081/* 177 */
40082/***/ (function(module, __webpack_exports__, __webpack_require__) {
40083
40084"use strict";
40085__webpack_require__.r(__webpack_exports__);
40086/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AutoWidthCalculator", function() { return AutoWidthCalculator; });
40087/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
40088/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
40089/**
40090 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
40091 * @version v27.3.0
40092 * @link https://www.ag-grid.com/
40093 * @license MIT
40094 */
40095var __extends = (undefined && undefined.__extends) || (function () {
40096 var extendStatics = function (d, b) {
40097 extendStatics = Object.setPrototypeOf ||
40098 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
40099 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
40100 return extendStatics(d, b);
40101 };
40102 return function (d, b) {
40103 extendStatics(d, b);
40104 function __() { this.constructor = d; }
40105 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
40106 };
40107})();
40108var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
40109 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40110 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
40111 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;
40112 return c > 3 && r && Object.defineProperty(target, key, r), r;
40113};
40114
40115
40116var AutoWidthCalculator = /** @class */ (function (_super) {
40117 __extends(AutoWidthCalculator, _super);
40118 function AutoWidthCalculator() {
40119 return _super !== null && _super.apply(this, arguments) || this;
40120 }
40121 AutoWidthCalculator.prototype.postConstruct = function () {
40122 var _this = this;
40123 this.ctrlsService.whenReady(function (p) {
40124 _this.centerRowContainerCtrl = p.centerRowContainerCtrl;
40125 });
40126 };
40127 // this is the trick: we create a dummy container and clone all the cells
40128 // into the dummy, then check the dummy's width. then destroy the dummy
40129 // as we don't need it any more.
40130 // drawback: only the cells visible on the screen are considered
40131 AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column, skipHeader) {
40132 var eHeaderCell = this.getHeaderCellForColumn(column);
40133 // cell isn't visible
40134 if (!eHeaderCell) {
40135 return -1;
40136 }
40137 var elements = this.rowRenderer.getAllCellsForColumn(column);
40138 if (!skipHeader) {
40139 // we only consider the lowest level cell, not the group cell. in 99% of the time, this
40140 // will be enough. if we consider groups, then it gets too complicated for what it's worth,
40141 // as the groups can span columns and this class only considers one column at a time.
40142 elements.push(eHeaderCell);
40143 }
40144 return this.addElementsToContainerAndGetWidth(elements);
40145 };
40146 AutoWidthCalculator.prototype.getPreferredWidthForColumnGroup = function (columnGroup) {
40147 var eHeaderCell = this.getHeaderCellForColumn(columnGroup);
40148 if (!eHeaderCell) {
40149 return -1;
40150 }
40151 return this.addElementsToContainerAndGetWidth([eHeaderCell]);
40152 };
40153 AutoWidthCalculator.prototype.addElementsToContainerAndGetWidth = function (elements) {
40154 var _this = this;
40155 var eDummyContainer = document.createElement('span');
40156 // position fixed, so it isn't restricted to the boundaries of the parent
40157 eDummyContainer.style.position = 'fixed';
40158 // we put the dummy into the body container, so it will inherit all the
40159 // css styles that the real cells are inheriting
40160 var eBodyContainer = this.centerRowContainerCtrl.getContainerElement();
40161 eBodyContainer.appendChild(eDummyContainer);
40162 elements.forEach(function (el) { return _this.cloneItemIntoDummy(el, eDummyContainer); });
40163 // at this point, all the clones are lined up vertically with natural widths. the dummy
40164 // container will have a width wide enough just to fit the largest.
40165 var dummyContainerWidth = eDummyContainer.offsetWidth;
40166 // we are finished with the dummy container, so get rid of it
40167 eBodyContainer.removeChild(eDummyContainer);
40168 // we add padding as I found sometimes the gui still put '...' after some of the texts. so the
40169 // user can configure the grid to add a few more pixels after the calculated width
40170 var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();
40171 return dummyContainerWidth + autoSizePadding;
40172 };
40173 AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {
40174 /* tslint:enable */
40175 var element = null;
40176 this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (container) {
40177 var res = container.getHtmlElementForColumnHeader(column);
40178 if (res != null) {
40179 element = res;
40180 }
40181 });
40182 return element;
40183 };
40184 AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {
40185 // make a deep clone of the cell
40186 var eCellClone = eCell.cloneNode(true);
40187 // the original has a fixed width, we remove this to allow the natural width based on content
40188 eCellClone.style.width = '';
40189 // the original has position = absolute, we need to remove this so it's positioned normally
40190 eCellClone.style.position = 'static';
40191 eCellClone.style.left = '';
40192 // we put the cell into a containing div, as otherwise the cells would just line up
40193 // on the same line, standard flow layout, by putting them into divs, they are laid
40194 // out one per line
40195 var eCloneParent = document.createElement('div');
40196 var eCloneParentClassList = eCloneParent.classList;
40197 var isHeader = ['ag-header-cell', 'ag-header-group-cell'].some(function (cls) { return eCellClone.classList.contains(cls); });
40198 if (isHeader) {
40199 eCloneParentClassList.add('ag-header', 'ag-header-row');
40200 eCloneParent.style.position = 'static';
40201 }
40202 else {
40203 eCloneParentClassList.add('ag-row');
40204 }
40205 // find parent using classes (headers have ag-header-cell, rows have ag-row), and copy classes from it.
40206 // if we didn't do this, things like ag-row-level-2 would be missing if present, which sets indents
40207 // onto group items.
40208 var pointer = eCell.parentElement;
40209 while (pointer) {
40210 var isRow = ['ag-header-row', 'ag-row'].some(function (cls) { return pointer.classList.contains(cls); });
40211 if (isRow) {
40212 for (var i = 0; i < pointer.classList.length; i++) {
40213 var item = pointer.classList[i];
40214 // we skip ag-row-position-absolute, as this has structural CSS applied that stops the
40215 // element from fitting into it's parent, and we need the element to stretch the parent
40216 // as we are measuring the parents width
40217 if (item != 'ag-row-position-absolute') {
40218 eCloneParentClassList.add(item);
40219 }
40220 }
40221 break;
40222 }
40223 pointer = pointer.parentElement;
40224 }
40225 // the twig on the branch, the branch on the tree, the tree in the hole,
40226 // the hole in the bog, the bog in the clone, the clone in the parent,
40227 // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....
40228 eCloneParent.appendChild(eCellClone);
40229 eDummyContainer.appendChild(eCloneParent);
40230 };
40231 __decorate([
40232 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
40233 ], AutoWidthCalculator.prototype, "rowRenderer", void 0);
40234 __decorate([
40235 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
40236 ], AutoWidthCalculator.prototype, "ctrlsService", void 0);
40237 __decorate([
40238 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowCssClassCalculator')
40239 ], AutoWidthCalculator.prototype, "rowCssClassCalculator", void 0);
40240 __decorate([
40241 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
40242 ], AutoWidthCalculator.prototype, "postConstruct", null);
40243 AutoWidthCalculator = __decorate([
40244 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('autoWidthCalculator')
40245 ], AutoWidthCalculator);
40246 return AutoWidthCalculator;
40247}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
40248
40249
40250
40251
40252
40253/***/ }),
40254/* 178 */
40255/***/ (function(module, __webpack_exports__, __webpack_require__) {
40256
40257"use strict";
40258__webpack_require__.r(__webpack_exports__);
40259/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowRenderer", function() { return RowRenderer; });
40260/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112);
40261/* harmony import */ var _row_rowCtrl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(120);
40262/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
40263/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
40264/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
40265/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(12);
40266/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20);
40267/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7);
40268/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(13);
40269/* harmony import */ var _utils_number__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(46);
40270/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(14);
40271/* harmony import */ var _cell_cellCtrl__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(121);
40272/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(18);
40273/**
40274 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
40275 * @version v27.3.0
40276 * @link https://www.ag-grid.com/
40277 * @license MIT
40278 */
40279var __extends = (undefined && undefined.__extends) || (function () {
40280 var extendStatics = function (d, b) {
40281 extendStatics = Object.setPrototypeOf ||
40282 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
40283 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
40284 return extendStatics(d, b);
40285 };
40286 return function (d, b) {
40287 extendStatics(d, b);
40288 function __() { this.constructor = d; }
40289 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
40290 };
40291})();
40292var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
40293 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40294 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
40295 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;
40296 return c > 3 && r && Object.defineProperty(target, key, r), r;
40297};
40298var __read = (undefined && undefined.__read) || function (o, n) {
40299 var m = typeof Symbol === "function" && o[Symbol.iterator];
40300 if (!m) return o;
40301 var i = m.call(o), r, ar = [], e;
40302 try {
40303 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
40304 }
40305 catch (error) { e = { error: error }; }
40306 finally {
40307 try {
40308 if (r && !r.done && (m = i["return"])) m.call(i);
40309 }
40310 finally { if (e) throw e.error; }
40311 }
40312 return ar;
40313};
40314var __spread = (undefined && undefined.__spread) || function () {
40315 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
40316 return ar;
40317};
40318
40319
40320
40321
40322
40323
40324
40325
40326
40327
40328
40329
40330
40331var RowRenderer = /** @class */ (function (_super) {
40332 __extends(RowRenderer, _super);
40333 function RowRenderer() {
40334 var _this = _super !== null && _super.apply(this, arguments) || this;
40335 _this.destroyFuncsForColumnListeners = [];
40336 // map of row ids to row objects. keeps track of which elements
40337 // are rendered for which rows in the dom.
40338 _this.rowCtrlsByRowIndex = {};
40339 _this.zombieRowCtrls = {};
40340 _this.allRowCtrls = [];
40341 _this.topRowCtrls = [];
40342 _this.bottomRowCtrls = [];
40343 // we only allow one refresh at a time, otherwise the internal memory structure here
40344 // will get messed up. this can happen if the user has a cellRenderer, and inside the
40345 // renderer they call an API method that results in another pass of the refresh,
40346 // then it will be trying to draw rows in the middle of a refresh.
40347 _this.refreshInProgress = false;
40348 return _this;
40349 }
40350 RowRenderer.prototype.postConstruct = function () {
40351 var _this = this;
40352 this.ctrlsService.whenReady(function () {
40353 _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
40354 _this.initialise();
40355 });
40356 };
40357 RowRenderer.prototype.initialise = function () {
40358 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));
40359 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));
40360 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
40361 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));
40362 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));
40363 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"].PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));
40364 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"].PROP_ROW_CLASS, this.redrawRows.bind(this));
40365 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));
40366 this.registerCellEventListeners();
40367 this.initialiseCache();
40368 this.printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].DOM_LAYOUT_PRINT;
40369 this.embedFullWidthRows = this.printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();
40370 this.redrawAfterModelUpdate();
40371 };
40372 RowRenderer.prototype.initialiseCache = function () {
40373 if (this.gridOptionsWrapper.isKeepDetailRows()) {
40374 var countProp = this.gridOptionsWrapper.getKeepDetailRowsCount();
40375 var count = countProp != null ? countProp : 3;
40376 this.cachedRowCtrls = new RowCtrlCache(count);
40377 }
40378 };
40379 RowRenderer.prototype.getRowCtrls = function () {
40380 return this.allRowCtrls;
40381 };
40382 RowRenderer.prototype.updateAllRowCtrls = function () {
40383 var liveList = Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["getAllValuesInObject"])(this.rowCtrlsByRowIndex);
40384 if (this.gridOptionsWrapper.isEnsureDomOrder()) {
40385 liveList.sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode.rowIndex; });
40386 }
40387 var zombieList = Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["getAllValuesInObject"])(this.zombieRowCtrls);
40388 var cachedList = this.cachedRowCtrls ? this.cachedRowCtrls.getEntries() : [];
40389 this.allRowCtrls = __spread(liveList, zombieList, cachedList);
40390 };
40391 // in a clean design, each cell would register for each of these events. however when scrolling, all the cells
40392 // registering and de-registering for events is a performance bottleneck. so we register here once and inform
40393 // all active cells.
40394 RowRenderer.prototype.registerCellEventListeners = function () {
40395 var _this = this;
40396 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_CELL_FOCUSED, function (event) {
40397 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellFocused(event); });
40398 _this.getFullWidthRowCtrls().forEach(function (rowCtrl) {
40399 rowCtrl.onFullWidthRowFocused(event);
40400 });
40401 });
40402 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_FLASH_CELLS, function (event) {
40403 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onFlashCells(event); });
40404 });
40405 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_HOVER_CHANGED, function () {
40406 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onColumnHover(); });
40407 });
40408 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, function () {
40409 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onDisplayedColumnsChanged(); });
40410 });
40411 // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,
40412 // then changing the width of the containers will impact left position. eg the center cols all have their
40413 // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,
40414 // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are
40415 // in different containers so doesn't impact.
40416 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () {
40417 if (_this.printLayout) {
40418 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onLeftChanged(); });
40419 }
40420 });
40421 var rangeSelectionEnabled = this.gridOptionsWrapper.isEnableRangeSelection();
40422 if (rangeSelectionEnabled) {
40423 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_RANGE_SELECTION_CHANGED, function () {
40424 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRangeSelectionChanged(); });
40425 });
40426 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_MOVED, function () {
40427 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });
40428 });
40429 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_PINNED, function () {
40430 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });
40431 });
40432 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_VISIBLE, function () {
40433 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });
40434 });
40435 }
40436 // add listeners to the grid columns
40437 this.refreshListenersToColumnsForCellComps();
40438 // if the grid columns change, then refresh the listeners again
40439 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));
40440 this.addDestroyFunc(this.removeGridColumnListeners.bind(this));
40441 };
40442 // executes all functions in destroyFuncsForColumnListeners and then clears the list
40443 RowRenderer.prototype.removeGridColumnListeners = function () {
40444 this.destroyFuncsForColumnListeners.forEach(function (func) { return func(); });
40445 this.destroyFuncsForColumnListeners.length = 0;
40446 };
40447 // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.
40448 // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to
40449 // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here
40450 // once instead.
40451 RowRenderer.prototype.refreshListenersToColumnsForCellComps = function () {
40452 var _this = this;
40453 this.removeGridColumnListeners();
40454 var cols = this.columnModel.getAllGridColumns();
40455 if (!cols) {
40456 return;
40457 }
40458 cols.forEach(function (col) {
40459 var forEachCellWithThisCol = function (callback) {
40460 _this.getAllCellCtrls().forEach(function (cellCtrl) {
40461 if (cellCtrl.getColumn() === col) {
40462 callback(cellCtrl);
40463 }
40464 });
40465 };
40466 var leftChangedListener = function () {
40467 forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLeftChanged(); });
40468 };
40469 var widthChangedListener = function () {
40470 forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onWidthChanged(); });
40471 };
40472 var firstRightPinnedChangedListener = function () {
40473 forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onFirstRightPinnedChanged(); });
40474 };
40475 var lastLeftPinnedChangedListener = function () {
40476 forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLastLeftPinnedChanged(); });
40477 };
40478 col.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_LEFT_CHANGED, leftChangedListener);
40479 col.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_WIDTH_CHANGED, widthChangedListener);
40480 col.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);
40481 col.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);
40482 _this.destroyFuncsForColumnListeners.push(function () {
40483 col.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_LEFT_CHANGED, leftChangedListener);
40484 col.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_WIDTH_CHANGED, widthChangedListener);
40485 col.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);
40486 col.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);
40487 });
40488 });
40489 };
40490 RowRenderer.prototype.onDomLayoutChanged = function () {
40491 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].DOM_LAYOUT_PRINT;
40492 var embedFullWidthRows = printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();
40493 // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid
40494 // out using absolute positioning when doing print layout
40495 var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;
40496 this.printLayout = printLayout;
40497 this.embedFullWidthRows = embedFullWidthRows;
40498 if (destroyRows) {
40499 this.redrawAfterModelUpdate();
40500 }
40501 };
40502 // for row models that have datasources, when we update the datasource, we need to force the rowRenderer
40503 // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.
40504 RowRenderer.prototype.datasourceChanged = function () {
40505 this.firstRenderedRow = 0;
40506 this.lastRenderedRow = -1;
40507 var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);
40508 this.removeRowCtrls(rowIndexesToRemove);
40509 };
40510 RowRenderer.prototype.onPageLoaded = function (event) {
40511 var params = {
40512 recycleRows: event.keepRenderedRows,
40513 animate: event.animate,
40514 newData: event.newData,
40515 newPage: event.newPage,
40516 // because this is a model updated event (not pinned rows), we
40517 // can skip updating the pinned rows. this is needed so that if user
40518 // is doing transaction updates, the pinned rows are not getting constantly
40519 // trashed - or editing cells in pinned rows are not refreshed and put into read mode
40520 onlyBody: true
40521 };
40522 this.redrawAfterModelUpdate(params);
40523 };
40524 RowRenderer.prototype.getAllCellsForColumn = function (column) {
40525 var res = [];
40526 this.getAllRowCtrls().forEach(function (rowCtrl) {
40527 var eCell = rowCtrl.getCellElement(column);
40528 if (eCell) {
40529 res.push(eCell);
40530 }
40531 });
40532 return res;
40533 };
40534 RowRenderer.prototype.refreshFloatingRowComps = function () {
40535 this.refreshFloatingRows(this.topRowCtrls, this.pinnedRowModel.getPinnedTopRowData());
40536 this.refreshFloatingRows(this.bottomRowCtrls, this.pinnedRowModel.getPinnedBottomRowData());
40537 };
40538 RowRenderer.prototype.getTopRowCtrls = function () {
40539 return this.topRowCtrls;
40540 };
40541 RowRenderer.prototype.getBottomRowCtrls = function () {
40542 return this.bottomRowCtrls;
40543 };
40544 RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes) {
40545 var _this = this;
40546 rowComps.forEach(function (row) {
40547 row.destroyFirstPass();
40548 row.destroySecondPass();
40549 });
40550 rowComps.length = 0;
40551 if (!rowNodes) {
40552 return;
40553 }
40554 rowNodes.forEach(function (rowNode) {
40555 var rowCtrl = new _row_rowCtrl__WEBPACK_IMPORTED_MODULE_1__["RowCtrl"](rowNode, _this.beans, false, false, _this.printLayout);
40556 rowComps.push(rowCtrl);
40557 });
40558 };
40559 RowRenderer.prototype.onPinnedRowDataChanged = function () {
40560 // recycling rows in order to ensure cell editing is not cancelled
40561 var params = {
40562 recycleRows: true
40563 };
40564 this.redrawAfterModelUpdate(params);
40565 };
40566 // if the row nodes are not rendered, no index is returned
40567 RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {
40568 var result = [];
40569 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["missing"])(rowNodes)) {
40570 return result;
40571 }
40572 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, function (index, renderedRow) {
40573 var rowNode = renderedRow.getRowNode();
40574 if (rowNodes.indexOf(rowNode) >= 0) {
40575 result.push(index);
40576 }
40577 });
40578 return result;
40579 };
40580 RowRenderer.prototype.redrawRows = function (rowNodes) {
40581 // if no row nodes provided, then refresh everything
40582 var partialRefresh = rowNodes != null && rowNodes.length > 0;
40583 if (partialRefresh) {
40584 var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);
40585 // remove the rows
40586 this.removeRowCtrls(indexesToRemove);
40587 }
40588 // add draw them again
40589 this.redrawAfterModelUpdate({
40590 recycleRows: partialRefresh
40591 });
40592 };
40593 RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {
40594 var focusedCell = params.suppressKeepFocus ? null : this.focusService.getFocusCellToUseAfterRefresh();
40595 if (focusedCell == null) {
40596 return null;
40597 }
40598 // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this
40599 // solves is with editing - if the user is editing, eg focus is on a text field, and not on the
40600 // cell itself, then the cell can be registered as having focus, however it's the text field that
40601 // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus
40602 // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,
40603 // the focus is lost from the text field. we do not want this.
40604 var eDocument = this.gridOptionsWrapper.getDocument();
40605 var activeElement = eDocument.activeElement;
40606 var cellDomData = this.gridOptionsWrapper.getDomData(activeElement, _cell_cellCtrl__WEBPACK_IMPORTED_MODULE_11__["CellCtrl"].DOM_DATA_KEY_CELL_CTRL);
40607 var rowDomData = this.gridOptionsWrapper.getDomData(activeElement, _row_rowCtrl__WEBPACK_IMPORTED_MODULE_1__["RowCtrl"].DOM_DATA_KEY_ROW_CTRL);
40608 var gridElementFocused = cellDomData || rowDomData;
40609 return gridElementFocused ? focusedCell : null;
40610 };
40611 // gets called from:
40612 // +) initialisation (in registerGridComp) params = null
40613 // +) onDomLayoutChanged, params = null
40614 // +) onPageLoaded, recycleRows, animate, newData, newPage from event, onlyBody=true
40615 // +) onPinnedRowDataChanged, recycleRows = true
40616 // +) redrawRows (from Grid API), recycleRows = true/false
40617 RowRenderer.prototype.redrawAfterModelUpdate = function (params) {
40618 if (params === void 0) { params = {}; }
40619 this.getLockOnRefresh();
40620 var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);
40621 this.updateContainerHeights();
40622 this.scrollToTopIfNewData(params);
40623 // never recycle rows when print layout, we draw each row again from scratch. this is because print layout
40624 // uses normal dom layout to put cells into dom - it doesn't allow reordering rows.
40625 var recycleRows = !this.printLayout && !!params.recycleRows;
40626 var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();
40627 // after modelUpdate, row indexes can change, so we clear out the rowsByIndex map,
40628 // however we can reuse the rows, so we keep them but index by rowNode.id
40629 var rowsToRecycle = recycleRows ? this.recycleRows() : null;
40630 if (!recycleRows) {
40631 this.removeAllRowComps();
40632 }
40633 var isFocusedCellGettingRecycled = function () {
40634 if (focusedCell == null || rowsToRecycle == null) {
40635 return false;
40636 }
40637 var res = false;
40638 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(rowsToRecycle, function (key, rowComp) {
40639 var rowNode = rowComp.getRowNode();
40640 var rowIndexEqual = rowNode.rowIndex == focusedCell.rowIndex;
40641 var pinnedEqual = rowNode.rowPinned == focusedCell.rowPinned;
40642 if (rowIndexEqual && pinnedEqual) {
40643 res = true;
40644 }
40645 });
40646 return res;
40647 };
40648 var focusedCellRecycled = isFocusedCellGettingRecycled();
40649 this.redraw(rowsToRecycle, animate);
40650 if (!params.onlyBody) {
40651 this.refreshFloatingRowComps();
40652 }
40653 this.dispatchDisplayedRowsChanged();
40654 // if we focus a cell that's already focused, then we get an unnecessary 'cellFocused' event fired.
40655 // this was happening when user clicked 'expand' on a rowGroup, then cellFocused was getting fired twice.
40656 if (!focusedCellRecycled) {
40657 this.restoreFocusedCell(focusedCell);
40658 }
40659 this.releaseLockOnRefresh();
40660 };
40661 RowRenderer.prototype.scrollToTopIfNewData = function (params) {
40662 var scrollToTop = params.newData || params.newPage;
40663 var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();
40664 if (scrollToTop && !suppressScrollToTop) {
40665 this.gridBodyCtrl.getScrollFeature().scrollToTop();
40666 }
40667 };
40668 RowRenderer.prototype.updateContainerHeights = function () {
40669 // when doing print layout, we don't explicitly set height on the containers
40670 if (this.printLayout) {
40671 this.rowContainerHeightService.setModelHeight(null);
40672 return;
40673 }
40674 var containerHeight = this.paginationProxy.getCurrentPageHeight();
40675 // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,
40676 // we still want the scroll to be present, otherwise there would be no way to scroll the header
40677 // which might be needed us user wants to access columns
40678 // on the RHS - and if that was where the filter was that cause no rows to be presented, there
40679 // is no way to remove the filter.
40680 if (containerHeight === 0) {
40681 containerHeight = 1;
40682 }
40683 this.rowContainerHeightService.setModelHeight(containerHeight);
40684 };
40685 RowRenderer.prototype.getLockOnRefresh = function () {
40686 if (this.refreshInProgress) {
40687 throw new Error("AG Grid: cannot get grid to draw rows when it is in the middle of drawing rows. " +
40688 "Your code probably called a grid API method while the grid was in the render stage. To overcome " +
40689 "this, put the API call into a timeout, e.g. instead of api.redrawRows(), " +
40690 "call setTimeout(function() { api.redrawRows(); }, 0). To see what part of your code " +
40691 "that caused the refresh check this stacktrace.");
40692 }
40693 this.refreshInProgress = true;
40694 };
40695 RowRenderer.prototype.releaseLockOnRefresh = function () {
40696 this.refreshInProgress = false;
40697 };
40698 RowRenderer.prototype.isRefreshInProgress = function () {
40699 return this.refreshInProgress;
40700 };
40701 // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without
40702 // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits
40703 // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the
40704 // edited cell).
40705 RowRenderer.prototype.restoreFocusedCell = function (cellPosition) {
40706 if (cellPosition) {
40707 this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);
40708 }
40709 };
40710 RowRenderer.prototype.stopEditing = function (cancel) {
40711 if (cancel === void 0) { cancel = false; }
40712 this.getAllRowCtrls().forEach(function (rowCtrl) {
40713 rowCtrl.stopEditing(cancel);
40714 });
40715 };
40716 RowRenderer.prototype.onNewColumnsLoaded = function () {
40717 // we don't want each cellComp to register for events, as would increase rendering time.
40718 // so for newColumnsLoaded, we register once here (in rowRenderer) and then inform
40719 // each cell if / when event was fired.
40720 this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onNewColumnsLoaded(); });
40721 };
40722 RowRenderer.prototype.getAllCellCtrls = function () {
40723 var res = [];
40724 this.getAllRowCtrls().forEach(function (rowCtrl) { return res = res.concat(rowCtrl.getAllCellCtrls()); });
40725 return res;
40726 };
40727 RowRenderer.prototype.getAllRowCtrls = function () {
40728 var _this = this;
40729 var res = __spread(this.topRowCtrls, this.bottomRowCtrls);
40730 Object.keys(this.rowCtrlsByRowIndex).forEach(function (key) { return res.push(_this.rowCtrlsByRowIndex[key]); });
40731 return res;
40732 };
40733 RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {
40734 var rowComp = this.rowCtrlsByRowIndex[rowIndex];
40735 if (rowComp) {
40736 rowComp.addEventListener(eventName, callback);
40737 }
40738 };
40739 RowRenderer.prototype.flashCells = function (params) {
40740 if (params === void 0) { params = {}; }
40741 var flashDelay = params.flashDelay, fadeDelay = params.fadeDelay;
40742 this.getCellCtrls(params.rowNodes, params.columns)
40743 .forEach(function (cellCtrl) { return cellCtrl.flashCell({ flashDelay: flashDelay, fadeDelay: fadeDelay }); });
40744 };
40745 RowRenderer.prototype.refreshCells = function (params) {
40746 if (params === void 0) { params = {}; }
40747 var refreshCellParams = {
40748 forceRefresh: params.force,
40749 newData: false,
40750 suppressFlash: params.suppressFlash
40751 };
40752 this.getCellCtrls(params.rowNodes, params.columns)
40753 .forEach(function (cellCtrl) {
40754 if (cellCtrl.refreshShouldDestroy()) {
40755 var rowCtrl = cellCtrl.getRowCtrl();
40756 if (rowCtrl) {
40757 rowCtrl.refreshCell(cellCtrl);
40758 }
40759 }
40760 else {
40761 cellCtrl.refreshCell(refreshCellParams);
40762 }
40763 });
40764 this.getFullWidthRowCtrls(params.rowNodes).forEach(function (fullWidthRowCtrl) {
40765 fullWidthRowCtrl.refreshFullWidth();
40766 });
40767 };
40768 RowRenderer.prototype.getCellRendererInstances = function (params) {
40769 var res = this.getCellCtrls(params.rowNodes, params.columns)
40770 .map(function (cellCtrl) { return cellCtrl.getCellRenderer(); })
40771 .filter(function (renderer) { return renderer != null; });
40772 return res;
40773 };
40774 RowRenderer.prototype.getCellEditorInstances = function (params) {
40775 var res = [];
40776 this.getCellCtrls(params.rowNodes, params.columns).forEach(function (cellCtrl) {
40777 var cellEditor = cellCtrl.getCellEditor();
40778 if (cellEditor) {
40779 res.push(cellEditor);
40780 }
40781 });
40782 return res;
40783 };
40784 RowRenderer.prototype.getEditingCells = function () {
40785 var res = [];
40786 this.getAllCellCtrls().forEach(function (cellCtrl) {
40787 if (cellCtrl.isEditing()) {
40788 var cellPosition = cellCtrl.getCellPosition();
40789 res.push(cellPosition);
40790 }
40791 });
40792 return res;
40793 };
40794 RowRenderer.prototype.mapRowNodes = function (rowNodes) {
40795 if (!rowNodes) {
40796 return;
40797 }
40798 var res = {
40799 top: {},
40800 bottom: {},
40801 normal: {}
40802 };
40803 rowNodes.forEach(function (rowNode) {
40804 var id = rowNode.id;
40805 if (rowNode.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_TOP) {
40806 res.top[id] = rowNode;
40807 }
40808 else if (rowNode.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_BOTTOM) {
40809 res.bottom[id] = rowNode;
40810 }
40811 else {
40812 res.normal[id] = rowNode;
40813 }
40814 });
40815 return res;
40816 };
40817 RowRenderer.prototype.isRowInMap = function (rowNode, rowIdsMap) {
40818 // skip this row if it is missing from the provided list
40819 var id = rowNode.id;
40820 var floating = rowNode.rowPinned;
40821 if (floating === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_BOTTOM) {
40822 return rowIdsMap.bottom[id] != null;
40823 }
40824 else if (floating === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_TOP) {
40825 return rowIdsMap.top[id] != null;
40826 }
40827 else {
40828 return rowIdsMap.normal[id] != null;
40829 }
40830 };
40831 // returns CellCtrl's that match the provided rowNodes and columns. eg if one row node
40832 // and two columns provided, that identifies 4 cells, so 4 CellCtrl's returned.
40833 RowRenderer.prototype.getCellCtrls = function (rowNodes, columns) {
40834 var _this = this;
40835 var rowIdsMap = this.mapRowNodes(rowNodes);
40836 var res = [];
40837 var colIdsMap;
40838 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(columns)) {
40839 colIdsMap = {};
40840 columns.forEach(function (colKey) {
40841 var column = _this.columnModel.getGridColumn(colKey);
40842 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(column)) {
40843 colIdsMap[column.getId()] = true;
40844 }
40845 });
40846 }
40847 var processRow = function (rowComp) {
40848 var rowNode = rowComp.getRowNode();
40849 // skip this row if it is missing from the provided list
40850 if (rowIdsMap != null && !_this.isRowInMap(rowNode, rowIdsMap)) {
40851 return;
40852 }
40853 rowComp.getAllCellCtrls().forEach(function (cellCtrl) {
40854 var colId = cellCtrl.getColumn().getId();
40855 var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];
40856 if (excludeColFromRefresh) {
40857 return;
40858 }
40859 res.push(cellCtrl);
40860 });
40861 };
40862 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, function (index, rowComp) {
40863 processRow(rowComp);
40864 });
40865 if (this.topRowCtrls) {
40866 this.topRowCtrls.forEach(processRow);
40867 }
40868 if (this.bottomRowCtrls) {
40869 this.bottomRowCtrls.forEach(processRow);
40870 }
40871 return res;
40872 };
40873 RowRenderer.prototype.destroy = function () {
40874 this.removeAllRowComps();
40875 _super.prototype.destroy.call(this);
40876 };
40877 RowRenderer.prototype.removeAllRowComps = function () {
40878 var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);
40879 this.removeRowCtrls(rowIndexesToRemove);
40880 };
40881 RowRenderer.prototype.recycleRows = function () {
40882 // remove all stub nodes, they can't be reused, as no rowNode id
40883 var stubNodeIndexes = [];
40884 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, function (index, rowComp) {
40885 var stubNode = rowComp.getRowNode().id == null;
40886 if (stubNode) {
40887 stubNodeIndexes.push(index);
40888 }
40889 });
40890 this.removeRowCtrls(stubNodeIndexes);
40891 // then clear out rowCompsByIndex, but before that take a copy, but index by id, not rowIndex
40892 var nodesByIdMap = {};
40893 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, function (index, rowComp) {
40894 var rowNode = rowComp.getRowNode();
40895 nodesByIdMap[rowNode.id] = rowComp;
40896 });
40897 this.rowCtrlsByRowIndex = {};
40898 return nodesByIdMap;
40899 };
40900 // takes array of row indexes
40901 RowRenderer.prototype.removeRowCtrls = function (rowsToRemove) {
40902 var _this = this;
40903 // if no fromIndex then set to -1, which will refresh everything
40904 // let realFromIndex = -1;
40905 rowsToRemove.forEach(function (indexToRemove) {
40906 var rowCtrl = _this.rowCtrlsByRowIndex[indexToRemove];
40907 if (rowCtrl) {
40908 rowCtrl.destroyFirstPass();
40909 rowCtrl.destroySecondPass();
40910 }
40911 delete _this.rowCtrlsByRowIndex[indexToRemove];
40912 });
40913 };
40914 // gets called when rows don't change, but viewport does, so after:
40915 // 1) height of grid body changes, ie number of displayed rows has changed
40916 // 2) grid scrolled to new position
40917 // 3) ensure index visible (which is a scroll)
40918 RowRenderer.prototype.redrawAfterScroll = function () {
40919 this.getLockOnRefresh();
40920 this.redraw(null, false, true);
40921 this.releaseLockOnRefresh();
40922 this.dispatchDisplayedRowsChanged();
40923 };
40924 RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {
40925 // for speedy lookup, dump into map
40926 var indexesToDrawMap = {};
40927 indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });
40928 var existingIndexes = Object.keys(this.rowCtrlsByRowIndex);
40929 var indexesNotToDraw = existingIndexes.filter(function (index) { return !indexesToDrawMap[index]; });
40930 this.removeRowCtrls(indexesNotToDraw);
40931 };
40932 RowRenderer.prototype.calculateIndexesToDraw = function (rowsToRecycle) {
40933 var _this = this;
40934 // all in all indexes in the viewport
40935 var indexesToDraw = Object(_utils_number__WEBPACK_IMPORTED_MODULE_9__["createArrayOfNumbers"])(this.firstRenderedRow, this.lastRenderedRow);
40936 var checkRowToDraw = function (indexStr, rowComp) {
40937 var index = rowComp.getRowNode().rowIndex;
40938 if (index == null) {
40939 return;
40940 }
40941 if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {
40942 if (_this.doNotUnVirtualiseRow(rowComp)) {
40943 indexesToDraw.push(index);
40944 }
40945 }
40946 };
40947 // if we are redrawing due to scrolling change, then old rows are in this.rowCompsByIndex
40948 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, checkRowToDraw);
40949 // if we are redrawing due to model update, then old rows are in rowsToRecycle
40950 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(rowsToRecycle, checkRowToDraw);
40951 indexesToDraw.sort(function (a, b) { return a - b; });
40952 return indexesToDraw;
40953 };
40954 RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {
40955 var _this = this;
40956 if (animate === void 0) { animate = false; }
40957 if (afterScroll === void 0) { afterScroll = false; }
40958 this.rowContainerHeightService.updateOffset();
40959 this.workOutFirstAndLastRowsToRender();
40960 // the row can already exist and be in the following:
40961 // rowsToRecycle -> if model change, then the index may be different, however row may
40962 // exist here from previous time (mapped by id).
40963 // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport
40964 // this is all the indexes we want, including those that already exist, so this method
40965 // will end up going through each index and drawing only if the row doesn't already exist
40966 var indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);
40967 this.removeRowCompsNotToDraw(indexesToDraw);
40968 // never animate when doing print layout - as we want to get things ready to print as quickly as possible,
40969 // otherwise we risk the printer printing a row that's half faded (half way through fading in)
40970 if (this.printLayout) {
40971 animate = false;
40972 }
40973 // add in new rows
40974 var rowCtrls = [];
40975 indexesToDraw.forEach(function (rowIndex) {
40976 var rowCtrl = _this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);
40977 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(rowCtrl)) {
40978 rowCtrls.push(rowCtrl);
40979 }
40980 });
40981 if (rowsToRecycle) {
40982 var useAnimationFrame = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame() && !this.printLayout;
40983 if (useAnimationFrame) {
40984 this.beans.animationFrameService.addDestroyTask(function () {
40985 _this.destroyRowCtrls(rowsToRecycle, animate);
40986 _this.updateAllRowCtrls();
40987 _this.dispatchDisplayedRowsChanged();
40988 });
40989 }
40990 else {
40991 this.destroyRowCtrls(rowsToRecycle, animate);
40992 }
40993 }
40994 this.updateAllRowCtrls();
40995 this.gridBodyCtrl.updateRowCount();
40996 };
40997 RowRenderer.prototype.dispatchDisplayedRowsChanged = function () {
40998 var event = { type: _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_ROWS_CHANGED };
40999 this.eventService.dispatchEvent(event);
41000 };
41001 RowRenderer.prototype.onDisplayedColumnsChanged = function () {
41002 var pinningLeft = this.columnModel.isPinningLeft();
41003 var pinningRight = this.columnModel.isPinningRight();
41004 var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;
41005 if (atLeastOneChanged) {
41006 this.pinningLeft = pinningLeft;
41007 this.pinningRight = pinningRight;
41008 if (this.embedFullWidthRows) {
41009 this.redrawFullWidthEmbeddedRows();
41010 }
41011 }
41012 };
41013 // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,
41014 // then it should go into the pinned left area if pinning left, or the center area if not pinning.
41015 RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {
41016 // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when
41017 // embedded, as what appears in each section depends on whether we are pinned or not
41018 var rowsToRemove = [];
41019 this.getFullWidthRowCtrls().forEach(function (fullWidthCtrl) {
41020 var rowIndex = fullWidthCtrl.getRowNode().rowIndex;
41021 rowsToRemove.push(rowIndex.toString());
41022 });
41023 this.refreshFloatingRowComps();
41024 this.removeRowCtrls(rowsToRemove);
41025 this.redrawAfterScroll();
41026 };
41027 RowRenderer.prototype.getFullWidthRowCtrls = function (rowNodes) {
41028 var _this = this;
41029 var rowNodesMap = this.mapRowNodes(rowNodes);
41030 return Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["getAllValuesInObject"])(this.rowCtrlsByRowIndex).filter(function (rowCtrl) {
41031 // include just full width
41032 if (!rowCtrl.isFullWidth()) {
41033 return false;
41034 }
41035 // if Row Nodes provided, we exclude where Row Node is missing
41036 var rowNode = rowCtrl.getRowNode();
41037 if (rowNodesMap != null && !_this.isRowInMap(rowNode, rowNodesMap)) {
41038 return false;
41039 }
41040 return true;
41041 });
41042 };
41043 RowRenderer.prototype.refreshFullWidthRows = function (rowNodesToRefresh) {
41044 var rowsToRemove = [];
41045 var selectivelyRefreshing = !!rowNodesToRefresh;
41046 var idsToRefresh = selectivelyRefreshing ? {} : undefined;
41047 if (selectivelyRefreshing && idsToRefresh) {
41048 rowNodesToRefresh.forEach(function (r) { return idsToRefresh[r.id] = true; });
41049 }
41050 this.getFullWidthRowCtrls().forEach(function (fullWidthRowCtrl) {
41051 var rowNode = fullWidthRowCtrl.getRowNode();
41052 if (selectivelyRefreshing && idsToRefresh) {
41053 // we refresh if a) this node is present or b) this parents nodes is present. checking parent
41054 // node is important for master/detail, as we want detail to refresh on changes to parent node.
41055 // it's also possible, if user is provider their own fullWidth, that details panels contain
41056 // some info on the parent, eg if in tree data and child row shows some data from parent row also.
41057 var parentId = (rowNode.level > 0 && rowNode.parent) ? rowNode.parent.id : undefined;
41058 var skipThisNode = !idsToRefresh[rowNode.id] && !idsToRefresh[parentId];
41059 if (skipThisNode) {
41060 return;
41061 }
41062 }
41063 var fullWidthRowsRefreshed = fullWidthRowCtrl.refreshFullWidth();
41064 if (!fullWidthRowsRefreshed) {
41065 var rowIndex = fullWidthRowCtrl.getRowNode().rowIndex;
41066 rowsToRemove.push(rowIndex.toString());
41067 }
41068 });
41069 this.removeRowCtrls(rowsToRemove);
41070 this.redrawAfterScroll();
41071 };
41072 RowRenderer.prototype.createOrUpdateRowCtrl = function (rowIndex, rowsToRecycle, animate, afterScroll) {
41073 var rowNode;
41074 var rowCtrl = this.rowCtrlsByRowIndex[rowIndex];
41075 // if no row comp, see if we can get it from the previous rowComps
41076 if (!rowCtrl) {
41077 rowNode = this.paginationProxy.getRow(rowIndex);
41078 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(rowNode) && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {
41079 rowCtrl = rowsToRecycle[rowNode.id];
41080 rowsToRecycle[rowNode.id] = null;
41081 }
41082 }
41083 var creatingNewRowCtrl = !rowCtrl;
41084 if (creatingNewRowCtrl) {
41085 // create a new one
41086 if (!rowNode) {
41087 rowNode = this.paginationProxy.getRow(rowIndex);
41088 }
41089 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(rowNode)) {
41090 rowCtrl = this.createRowCon(rowNode, animate, afterScroll);
41091 }
41092 else {
41093 // this should never happen - if somehow we are trying to create
41094 // a row for a rowNode that does not exist.
41095 return;
41096 }
41097 }
41098 if (rowNode) {
41099 // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures
41100 // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.
41101 rowNode.alreadyRendered = true;
41102 }
41103 this.rowCtrlsByRowIndex[rowIndex] = rowCtrl;
41104 return rowCtrl;
41105 };
41106 RowRenderer.prototype.destroyRowCtrls = function (rowCtrlsMap, animate) {
41107 var _this = this;
41108 var executeInAWhileFuncs = [];
41109 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(rowCtrlsMap, function (nodeId, rowCtrl) {
41110 // if row was used, then it's null
41111 if (!rowCtrl) {
41112 return;
41113 }
41114 if (_this.cachedRowCtrls && rowCtrl.isCacheable()) {
41115 _this.cachedRowCtrls.addRow(rowCtrl);
41116 return;
41117 }
41118 rowCtrl.destroyFirstPass();
41119 if (animate) {
41120 _this.zombieRowCtrls[rowCtrl.getInstanceId()] = rowCtrl;
41121 executeInAWhileFuncs.push(function () {
41122 rowCtrl.destroySecondPass();
41123 delete _this.zombieRowCtrls[rowCtrl.getInstanceId()];
41124 });
41125 }
41126 else {
41127 rowCtrl.destroySecondPass();
41128 }
41129 });
41130 if (animate) {
41131 // this ensures we fire displayedRowsChanged AFTER all the 'executeInAWhileFuncs' get
41132 // executed, as we added it to the end of the list.
41133 executeInAWhileFuncs.push(function () {
41134 _this.updateAllRowCtrls();
41135 _this.dispatchDisplayedRowsChanged();
41136 });
41137 Object(_utils_function__WEBPACK_IMPORTED_MODULE_10__["executeInAWhile"])(executeInAWhileFuncs);
41138 }
41139 };
41140 RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {
41141 var _this = this;
41142 var newFirst;
41143 var newLast;
41144 if (!this.paginationProxy.isRowsToRender()) {
41145 newFirst = 0;
41146 newLast = -1; // setting to -1 means nothing in range
41147 }
41148 else if (this.printLayout) {
41149 newFirst = this.paginationProxy.getPageFirstRow();
41150 newLast = this.paginationProxy.getPageLastRow();
41151 }
41152 else {
41153 var bufferPixels = this.gridOptionsWrapper.getRowBufferInPixels();
41154 var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();
41155 var suppressRowVirtualisation = this.gridOptionsWrapper.isSuppressRowVirtualisation();
41156 var rowHeightsChanged = false;
41157 var firstPixel = void 0;
41158 var lastPixel = void 0;
41159 do {
41160 var paginationOffset = this.paginationProxy.getPixelOffset();
41161 var _a = this.paginationProxy.getCurrentPagePixelRange(), pageFirstPixel = _a.pageFirstPixel, pageLastPixel = _a.pageLastPixel;
41162 var divStretchOffset = this.rowContainerHeightService.getDivStretchOffset();
41163 if (suppressRowVirtualisation) {
41164 firstPixel = pageFirstPixel + divStretchOffset;
41165 lastPixel = pageLastPixel + divStretchOffset;
41166 }
41167 else {
41168 var bodyVRange = gridBodyCtrl.getScrollFeature().getVScrollPosition();
41169 var bodyTopPixel = bodyVRange.top;
41170 var bodyBottomPixel = bodyVRange.bottom;
41171 firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;
41172 lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;
41173 }
41174 // if the rows we are about to display get their heights changed, then that upsets the calcs from above.
41175 rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);
41176 } while (rowHeightsChanged);
41177 var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);
41178 var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);
41179 var pageFirstRow = this.paginationProxy.getPageFirstRow();
41180 var pageLastRow = this.paginationProxy.getPageLastRow();
41181 // adjust, in case buffer extended actual size
41182 if (firstRowIndex < pageFirstRow) {
41183 firstRowIndex = pageFirstRow;
41184 }
41185 if (lastRowIndex > pageLastRow) {
41186 lastRowIndex = pageLastRow;
41187 }
41188 newFirst = firstRowIndex;
41189 newLast = lastRowIndex;
41190 }
41191 // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up
41192 // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of
41193 // killing the browser, we limit the number of rows. just in case some use case we didn't think
41194 // of, we also have a property to not do this operation.
41195 var rowLayoutNormal = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].DOM_LAYOUT_NORMAL;
41196 var suppressRowCountRestriction = this.gridOptionsWrapper.isSuppressMaxRenderedRowRestriction();
41197 var rowBufferMaxSize = Math.max(this.gridOptionsWrapper.getRowBuffer(), 500);
41198 if (rowLayoutNormal && !suppressRowCountRestriction) {
41199 if (newLast - newFirst > rowBufferMaxSize) {
41200 newLast = newFirst + rowBufferMaxSize;
41201 }
41202 }
41203 var firstDiffers = newFirst !== this.firstRenderedRow;
41204 var lastDiffers = newLast !== this.lastRenderedRow;
41205 if (firstDiffers || lastDiffers) {
41206 this.firstRenderedRow = newFirst;
41207 this.lastRenderedRow = newLast;
41208 var event_1 = {
41209 type: _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIEWPORT_CHANGED,
41210 firstRow: newFirst,
41211 lastRow: newLast,
41212 api: this.gridApi,
41213 columnApi: this.columnApi
41214 };
41215 this.eventService.dispatchEvent(event_1);
41216 }
41217 // only dispatch firstDataRendered if we have actually rendered some data
41218 if (this.paginationProxy.isRowsToRender()) {
41219 var event_2 = {
41220 type: _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_FIRST_DATA_RENDERED,
41221 firstRow: newFirst,
41222 lastRow: newLast,
41223 api: this.gridApi,
41224 columnApi: this.columnApi
41225 };
41226 // added a small delay here because in some scenarios this can be fired
41227 // before the grid is actually rendered, causing component creation
41228 // on EVENT_FIRST_DATA_RENDERED to fail.
41229 window.setTimeout(function () { return _this.eventService.dispatchEventOnce(event_2); }, 50);
41230 }
41231 };
41232 RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {
41233 // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.
41234 // all the other row models just hard code so the method just returns back false
41235 var res = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);
41236 if (res) {
41237 this.updateContainerHeights();
41238 }
41239 return res;
41240 };
41241 RowRenderer.prototype.getFirstVirtualRenderedRow = function () {
41242 return this.firstRenderedRow;
41243 };
41244 RowRenderer.prototype.getLastVirtualRenderedRow = function () {
41245 return this.lastRenderedRow;
41246 };
41247 // check that none of the rows to remove are editing or focused as:
41248 // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,
41249 // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered
41250 // the edit is reset - so we want to keep it rendered.
41251 // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,
41252 // otherwise the user can range select and drag (with focus cell going out of the viewport)
41253 // and then ctrl+c, nothing will happen if cell is removed from dom.
41254 // c) if detail record of master detail, as users complained that the context of detail rows
41255 // was getting lost when detail row out of view. eg user expands to show detail row,
41256 // then manipulates the detail panel (eg sorts the detail grid), then context is lost
41257 // after detail panel is scrolled out of / into view.
41258 RowRenderer.prototype.doNotUnVirtualiseRow = function (rowComp) {
41259 var REMOVE_ROW = false;
41260 var KEEP_ROW = true;
41261 var rowNode = rowComp.getRowNode();
41262 var rowHasFocus = this.focusService.isRowNodeFocused(rowNode);
41263 var rowIsEditing = rowComp.isEditing();
41264 var rowIsDetail = rowNode.detail;
41265 var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;
41266 // if we deffo don't want to keep it,
41267 if (!mightWantToKeepRow) {
41268 return REMOVE_ROW;
41269 }
41270 // editing row, only remove if it is no longer rendered, eg filtered out or new data set.
41271 // the reason we want to keep is if user is scrolling up and down, we don't want to loose
41272 // the context of the editing in process.
41273 var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);
41274 return rowNodePresent ? KEEP_ROW : REMOVE_ROW;
41275 };
41276 RowRenderer.prototype.createRowCon = function (rowNode, animate, afterScroll) {
41277 var rowCtrlFromCache = this.cachedRowCtrls ? this.cachedRowCtrls.getRow(rowNode) : null;
41278 if (rowCtrlFromCache) {
41279 return rowCtrlFromCache;
41280 }
41281 // we don't use animations frames for printing, so the user can put the grid into print mode
41282 // and immediately print - otherwise the user would have to wait for the rows to draw in the background
41283 // (via the animation frames) which is awkward to do from code.
41284 // we only do the animation frames after scrolling, as this is where we want the smooth user experience.
41285 // having animation frames for other times makes the grid look 'jumpy'.
41286 var suppressAnimationFrame = this.gridOptionsWrapper.isSuppressAnimationFrame();
41287 var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;
41288 var res = new _row_rowCtrl__WEBPACK_IMPORTED_MODULE_1__["RowCtrl"](rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);
41289 return res;
41290 };
41291 RowRenderer.prototype.getRenderedNodes = function () {
41292 var renderedRows = this.rowCtrlsByRowIndex;
41293 return Object.keys(renderedRows).map(function (key) { return renderedRows[key].getRowNode(); });
41294 };
41295 RowRenderer.prototype.getRowByPosition = function (rowPosition) {
41296 var rowComponent;
41297 switch (rowPosition.rowPinned) {
41298 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_TOP:
41299 rowComponent = this.topRowCtrls[rowPosition.rowIndex];
41300 break;
41301 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_BOTTOM:
41302 rowComponent = this.bottomRowCtrls[rowPosition.rowIndex];
41303 break;
41304 default:
41305 rowComponent = this.rowCtrlsByRowIndex[rowPosition.rowIndex];
41306 break;
41307 }
41308 return rowComponent;
41309 };
41310 RowRenderer.prototype.getRowNode = function (gridRow) {
41311 switch (gridRow.rowPinned) {
41312 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_TOP:
41313 return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
41314 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_BOTTOM:
41315 return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
41316 default:
41317 return this.rowModel.getRow(gridRow.rowIndex);
41318 }
41319 };
41320 // returns true if any row between startIndex and endIndex is rendered. used by
41321 // SSRM or IRM, as they don't want to purge visible blocks from cache.
41322 RowRenderer.prototype.isRangeInRenderedViewport = function (startIndex, endIndex) {
41323 // parent closed means the parent node is not expanded, thus these blocks are not visible
41324 var parentClosed = startIndex == null || endIndex == null;
41325 if (parentClosed) {
41326 return false;
41327 }
41328 var blockAfterViewport = startIndex > this.lastRenderedRow;
41329 var blockBeforeViewport = endIndex < this.firstRenderedRow;
41330 var blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;
41331 return blockInsideViewport;
41332 };
41333 __decorate([
41334 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("paginationProxy")
41335 ], RowRenderer.prototype, "paginationProxy", void 0);
41336 __decorate([
41337 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("columnModel")
41338 ], RowRenderer.prototype, "columnModel", void 0);
41339 __decorate([
41340 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("pinnedRowModel")
41341 ], RowRenderer.prototype, "pinnedRowModel", void 0);
41342 __decorate([
41343 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("rowModel")
41344 ], RowRenderer.prototype, "rowModel", void 0);
41345 __decorate([
41346 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("focusService")
41347 ], RowRenderer.prototype, "focusService", void 0);
41348 __decorate([
41349 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("columnApi")
41350 ], RowRenderer.prototype, "columnApi", void 0);
41351 __decorate([
41352 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("gridApi")
41353 ], RowRenderer.prototype, "gridApi", void 0);
41354 __decorate([
41355 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("beans")
41356 ], RowRenderer.prototype, "beans", void 0);
41357 __decorate([
41358 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("rowContainerHeightService")
41359 ], RowRenderer.prototype, "rowContainerHeightService", void 0);
41360 __decorate([
41361 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Optional"])("ctrlsService")
41362 ], RowRenderer.prototype, "ctrlsService", void 0);
41363 __decorate([
41364 _context_context__WEBPACK_IMPORTED_MODULE_5__["PostConstruct"]
41365 ], RowRenderer.prototype, "postConstruct", null);
41366 RowRenderer = __decorate([
41367 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Bean"])("rowRenderer")
41368 ], RowRenderer);
41369 return RowRenderer;
41370}(_context_beanStub__WEBPACK_IMPORTED_MODULE_6__["BeanStub"]));
41371
41372var RowCtrlCache = /** @class */ (function () {
41373 function RowCtrlCache(maxCount) {
41374 // map for fast access
41375 this.entriesMap = {};
41376 // list for keeping order
41377 this.entriesList = [];
41378 this.maxCount = maxCount;
41379 }
41380 RowCtrlCache.prototype.addRow = function (rowCtrl) {
41381 this.entriesMap[rowCtrl.getRowNode().id] = rowCtrl;
41382 this.entriesList.push(rowCtrl);
41383 rowCtrl.setCached(true);
41384 if (this.entriesList.length > this.maxCount) {
41385 var rowCtrlToDestroy = this.entriesList[0];
41386 rowCtrlToDestroy.destroyFirstPass();
41387 rowCtrlToDestroy.destroySecondPass();
41388 this.removeFromCache(rowCtrlToDestroy);
41389 }
41390 };
41391 RowCtrlCache.prototype.getRow = function (rowNode) {
41392 if (rowNode == null || rowNode.id == null) {
41393 return null;
41394 }
41395 var res = this.entriesMap[rowNode.id];
41396 if (!res) {
41397 return null;
41398 }
41399 this.removeFromCache(res);
41400 res.setCached(false);
41401 // this can happen if user reloads data, and a new RowNode is reusing
41402 // the same ID as the old one
41403 var rowNodeMismatch = res.getRowNode() != rowNode;
41404 return rowNodeMismatch ? null : res;
41405 };
41406 RowCtrlCache.prototype.removeFromCache = function (rowCtrl) {
41407 var rowNodeId = rowCtrl.getRowNode().id;
41408 delete this.entriesMap[rowNodeId];
41409 Object(_utils_array__WEBPACK_IMPORTED_MODULE_12__["removeFromArray"])(this.entriesList, rowCtrl);
41410 };
41411 RowCtrlCache.prototype.getEntries = function () {
41412 return this.entriesList;
41413 };
41414 return RowCtrlCache;
41415}());
41416
41417
41418
41419
41420/***/ }),
41421/* 179 */
41422/***/ (function(module, __webpack_exports__, __webpack_require__) {
41423
41424"use strict";
41425__webpack_require__.r(__webpack_exports__);
41426/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueFormatterService", function() { return ValueFormatterService; });
41427/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
41428/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
41429/**
41430 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41431 * @version v27.3.0
41432 * @link https://www.ag-grid.com/
41433 * @license MIT
41434 */
41435var __extends = (undefined && undefined.__extends) || (function () {
41436 var extendStatics = function (d, b) {
41437 extendStatics = Object.setPrototypeOf ||
41438 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
41439 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
41440 return extendStatics(d, b);
41441 };
41442 return function (d, b) {
41443 extendStatics(d, b);
41444 function __() { this.constructor = d; }
41445 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41446 };
41447})();
41448var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
41449 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41450 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41451 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;
41452 return c > 3 && r && Object.defineProperty(target, key, r), r;
41453};
41454
41455
41456var ValueFormatterService = /** @class */ (function (_super) {
41457 __extends(ValueFormatterService, _super);
41458 function ValueFormatterService() {
41459 return _super !== null && _super.apply(this, arguments) || this;
41460 }
41461 ValueFormatterService.prototype.formatValue = function (column, node, value, suppliedFormatter, useFormatterFromColumn) {
41462 if (useFormatterFromColumn === void 0) { useFormatterFromColumn = true; }
41463 var result = null;
41464 var formatter;
41465 var colDef = column.getColDef();
41466 if (suppliedFormatter) {
41467 // use supplied formatter if provided, e.g. set filter items can have their own value formatters
41468 formatter = suppliedFormatter;
41469 }
41470 else if (useFormatterFromColumn) {
41471 // if row is pinned, give preference to the pinned formatter
41472 formatter = node && node.rowPinned && colDef.pinnedRowValueFormatter ?
41473 colDef.pinnedRowValueFormatter : colDef.valueFormatter;
41474 }
41475 if (formatter) {
41476 var params = {
41477 value: value,
41478 node: node,
41479 data: node ? node.data : null,
41480 colDef: colDef,
41481 column: column,
41482 api: this.gridOptionsWrapper.getApi(),
41483 columnApi: this.gridOptionsWrapper.getColumnApi(),
41484 context: this.gridOptionsWrapper.getContext()
41485 };
41486 result = this.expressionService.evaluate(formatter, params);
41487 }
41488 else if (colDef.refData) {
41489 return colDef.refData[value] || '';
41490 }
41491 // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (i.e. with spaces)
41492 if (result == null && Array.isArray(value)) {
41493 result = value.join(', ');
41494 }
41495 return result;
41496 };
41497 __decorate([
41498 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('expressionService')
41499 ], ValueFormatterService.prototype, "expressionService", void 0);
41500 ValueFormatterService = __decorate([
41501 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('valueFormatterService')
41502 ], ValueFormatterService);
41503 return ValueFormatterService;
41504}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
41505
41506
41507
41508
41509
41510/***/ }),
41511/* 180 */
41512/***/ (function(module, __webpack_exports__, __webpack_require__) {
41513
41514"use strict";
41515__webpack_require__.r(__webpack_exports__);
41516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PinnedRowModel", function() { return PinnedRowModel; });
41517/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(94);
41518/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
41519/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
41520/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
41521/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20);
41522/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
41523/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18);
41524/**
41525 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41526 * @version v27.3.0
41527 * @link https://www.ag-grid.com/
41528 * @license MIT
41529 */
41530var __extends = (undefined && undefined.__extends) || (function () {
41531 var extendStatics = function (d, b) {
41532 extendStatics = Object.setPrototypeOf ||
41533 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
41534 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
41535 return extendStatics(d, b);
41536 };
41537 return function (d, b) {
41538 extendStatics(d, b);
41539 function __() { this.constructor = d; }
41540 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41541 };
41542})();
41543var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
41544 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41545 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41546 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;
41547 return c > 3 && r && Object.defineProperty(target, key, r), r;
41548};
41549
41550
41551
41552
41553
41554
41555
41556var PinnedRowModel = /** @class */ (function (_super) {
41557 __extends(PinnedRowModel, _super);
41558 function PinnedRowModel() {
41559 return _super !== null && _super.apply(this, arguments) || this;
41560 }
41561 PinnedRowModel.prototype.init = function () {
41562 this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());
41563 this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());
41564 };
41565 PinnedRowModel.prototype.isEmpty = function (floating) {
41566 var rows = floating === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;
41567 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missingOrEmpty"])(rows);
41568 };
41569 PinnedRowModel.prototype.isRowsToRender = function (floating) {
41570 return !this.isEmpty(floating);
41571 };
41572 PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {
41573 var rows = floating === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;
41574 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missingOrEmpty"])(rows)) {
41575 return 0; // this should never happen, just in case, 0 is graceful failure
41576 }
41577 for (var i = 0; i < rows.length; i++) {
41578 var rowNode = rows[i];
41579 var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;
41580 // only need to range check against the top pixel, as we are going through the list
41581 // in order, first row to hit the pixel wins
41582 if (rowTopPixel >= pixel) {
41583 return i;
41584 }
41585 }
41586 return rows.length - 1;
41587 };
41588 PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {
41589 this.pinnedTopRows = this.createNodesFromData(rowData, true);
41590 var event = {
41591 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_PINNED_ROW_DATA_CHANGED,
41592 api: this.gridApi,
41593 columnApi: this.columnApi
41594 };
41595 this.eventService.dispatchEvent(event);
41596 };
41597 PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {
41598 this.pinnedBottomRows = this.createNodesFromData(rowData, false);
41599 var event = {
41600 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_PINNED_ROW_DATA_CHANGED,
41601 api: this.gridApi,
41602 columnApi: this.columnApi
41603 };
41604 this.eventService.dispatchEvent(event);
41605 };
41606 PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {
41607 var _this = this;
41608 var rowNodes = [];
41609 if (allData) {
41610 var nextRowTop_1 = 0;
41611 allData.forEach(function (dataItem, index) {
41612 var rowNode = new _entities_rowNode__WEBPACK_IMPORTED_MODULE_0__["RowNode"](_this.beans);
41613 rowNode.data = dataItem;
41614 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;
41615 rowNode.id = idPrefix + index;
41616 rowNode.rowPinned = isTop ? _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_TOP : _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_BOTTOM;
41617 rowNode.setRowTop(nextRowTop_1);
41618 rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);
41619 rowNode.setRowIndex(index);
41620 nextRowTop_1 += rowNode.rowHeight;
41621 rowNodes.push(rowNode);
41622 });
41623 }
41624 return rowNodes;
41625 };
41626 PinnedRowModel.prototype.getPinnedTopRowData = function () {
41627 return this.pinnedTopRows;
41628 };
41629 PinnedRowModel.prototype.getPinnedBottomRowData = function () {
41630 return this.pinnedBottomRows;
41631 };
41632 PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {
41633 return this.getTotalHeight(this.pinnedTopRows);
41634 };
41635 PinnedRowModel.prototype.getPinnedTopRowCount = function () {
41636 return this.pinnedTopRows ? this.pinnedTopRows.length : 0;
41637 };
41638 PinnedRowModel.prototype.getPinnedBottomRowCount = function () {
41639 return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;
41640 };
41641 PinnedRowModel.prototype.getPinnedTopRow = function (index) {
41642 return this.pinnedTopRows[index];
41643 };
41644 PinnedRowModel.prototype.getPinnedBottomRow = function (index) {
41645 return this.pinnedBottomRows[index];
41646 };
41647 PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {
41648 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missingOrEmpty"])(this.pinnedTopRows)) {
41649 return;
41650 }
41651 this.pinnedTopRows.forEach(callback);
41652 };
41653 PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {
41654 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missingOrEmpty"])(this.pinnedBottomRows)) {
41655 return;
41656 }
41657 this.pinnedBottomRows.forEach(callback);
41658 };
41659 PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {
41660 return this.getTotalHeight(this.pinnedBottomRows);
41661 };
41662 PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {
41663 if (!rowNodes || rowNodes.length === 0) {
41664 return 0;
41665 }
41666 var lastNode = Object(_utils_array__WEBPACK_IMPORTED_MODULE_6__["last"])(rowNodes);
41667 return lastNode.rowTop + lastNode.rowHeight;
41668 };
41669 __decorate([
41670 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
41671 ], PinnedRowModel.prototype, "columnApi", void 0);
41672 __decorate([
41673 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
41674 ], PinnedRowModel.prototype, "gridApi", void 0);
41675 __decorate([
41676 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('beans')
41677 ], PinnedRowModel.prototype, "beans", void 0);
41678 __decorate([
41679 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
41680 ], PinnedRowModel.prototype, "init", null);
41681 PinnedRowModel = __decorate([
41682 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('pinnedRowModel')
41683 ], PinnedRowModel);
41684 return PinnedRowModel;
41685}(_context_beanStub__WEBPACK_IMPORTED_MODULE_4__["BeanStub"]));
41686
41687
41688
41689
41690
41691/***/ }),
41692/* 181 */
41693/***/ (function(module, __webpack_exports__, __webpack_require__) {
41694
41695"use strict";
41696__webpack_require__.r(__webpack_exports__);
41697/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ServerSideTransactionResultStatus", function() { return ServerSideTransactionResultStatus; });
41698/**
41699 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41700 * @version v27.3.0
41701 * @link https://www.ag-grid.com/
41702 * @license MIT
41703 */
41704var ServerSideTransactionResultStatus;
41705(function (ServerSideTransactionResultStatus) {
41706 /** Transaction was successfully applied */
41707 ServerSideTransactionResultStatus["Applied"] = "Applied";
41708 /**
41709 * Store was not found, transaction not applied.
41710 * Either invalid route, or the parent row has not yet been expanded.
41711 */
41712 ServerSideTransactionResultStatus["StoreNotFound"] = "StoreNotFound";
41713 /**
41714 * Store is loading, transaction not applied.
41715 */
41716 ServerSideTransactionResultStatus["StoreLoading"] = "StoreLoading";
41717 /**
41718 * Store is loading (as max loads exceeded), transaction not applied.
41719 */
41720 ServerSideTransactionResultStatus["StoreWaitingToLoad"] = "StoreWaitingToLoad";
41721 /**
41722 * Store load attempt failed, transaction not applied.
41723 */
41724 ServerSideTransactionResultStatus["StoreLoadingFailed"] = "StoreLoadingFailed";
41725 /**
41726 * Store is type Partial, which doesn't accept transactions
41727 */
41728 ServerSideTransactionResultStatus["StoreWrongType"] = "StoreWrongType";
41729 /**
41730 * Transaction was cancelled, due to grid.
41731 * Callback isApplyServerSideTransaction() returning false
41732 */
41733 ServerSideTransactionResultStatus["Cancelled"] = "Cancelled";
41734})(ServerSideTransactionResultStatus || (ServerSideTransactionResultStatus = {}));
41735
41736
41737
41738
41739/***/ }),
41740/* 182 */
41741/***/ (function(module, __webpack_exports__, __webpack_require__) {
41742
41743"use strict";
41744__webpack_require__.r(__webpack_exports__);
41745/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChangedPath", function() { return ChangedPath; });
41746/**
41747 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41748 * @version v27.3.0
41749 * @link https://www.ag-grid.com/
41750 * @license MIT
41751 */
41752// when doing transactions, or change detection, and grouping is present
41753// in the data, there is no need for the ClientSideRowModel to update each
41754// group after an update, ony parts that were impacted by the change.
41755// this class keeps track of all groups that were impacted by a transaction.
41756// the the different CSRM operations (filter, sort etc) use the forEach method
41757// to visit each group that was changed.
41758var ChangedPath = /** @class */ (function () {
41759 function ChangedPath(keepingColumns, rootNode) {
41760 // whether changed path is active of not. it is active when a) doing
41761 // a transaction update or b) doing change detection. if we are doing
41762 // a CSRM refresh for other reasons (after sort or filter, or user calling
41763 // setRowData() without delta mode) then we are not active. we are also
41764 // marked as not active if secondary columns change in pivot (as this impacts
41765 // aggregations)
41766 this.active = true;
41767 // for each node in the change path, we also store which columns need
41768 // to be re-aggregated.
41769 this.nodeIdsToColumns = {};
41770 // for quick lookup, all items in the change path are mapped by nodeId
41771 this.mapToItems = {};
41772 this.keepingColumns = keepingColumns;
41773 this.pathRoot = {
41774 rowNode: rootNode,
41775 children: null
41776 };
41777 this.mapToItems[rootNode.id] = this.pathRoot;
41778 }
41779 // can be set inactive by:
41780 // a) ClientSideRowModel, if no transactions or
41781 // b) PivotService, if secondary columns changed
41782 ChangedPath.prototype.setInactive = function () {
41783 this.active = false;
41784 };
41785 ChangedPath.prototype.isActive = function () {
41786 return this.active;
41787 };
41788 ChangedPath.prototype.depthFirstSearchChangedPath = function (pathItem, callback) {
41789 if (pathItem.children) {
41790 for (var i = 0; i < pathItem.children.length; i++) {
41791 this.depthFirstSearchChangedPath(pathItem.children[i], callback);
41792 }
41793 }
41794 callback(pathItem.rowNode);
41795 };
41796 ChangedPath.prototype.depthFirstSearchEverything = function (rowNode, callback, traverseEverything) {
41797 if (rowNode.childrenAfterGroup) {
41798 for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {
41799 var childNode = rowNode.childrenAfterGroup[i];
41800 if (childNode.childrenAfterGroup) {
41801 this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i], callback, traverseEverything);
41802 }
41803 else if (traverseEverything) {
41804 callback(childNode);
41805 }
41806 }
41807 }
41808 callback(rowNode);
41809 };
41810 // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback
41811 // will be called for child nodes in addition to parent nodes.
41812 ChangedPath.prototype.forEachChangedNodeDepthFirst = function (callback, traverseLeafNodes) {
41813 if (traverseLeafNodes === void 0) { traverseLeafNodes = false; }
41814 if (this.active) {
41815 // if we are active, then use the change path to callback
41816 // only for updated groups
41817 this.depthFirstSearchChangedPath(this.pathRoot, callback);
41818 }
41819 else {
41820 // we are not active, so callback for everything, walk the entire path
41821 this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);
41822 }
41823 };
41824 ChangedPath.prototype.executeFromRootNode = function (callback) {
41825 callback(this.pathRoot.rowNode);
41826 };
41827 ChangedPath.prototype.createPathItems = function (rowNode) {
41828 var pointer = rowNode;
41829 var newEntryCount = 0;
41830 while (!this.mapToItems[pointer.id]) {
41831 var newEntry = {
41832 rowNode: pointer,
41833 children: null
41834 };
41835 this.mapToItems[pointer.id] = newEntry;
41836 newEntryCount++;
41837 pointer = pointer.parent;
41838 }
41839 return newEntryCount;
41840 };
41841 ChangedPath.prototype.populateColumnsMap = function (rowNode, columns) {
41842 var _this = this;
41843 if (!this.keepingColumns || !columns) {
41844 return;
41845 }
41846 var pointer = rowNode;
41847 while (pointer) {
41848 // if columns, add the columns in all the way to parent, merging
41849 // in any other columns that might be there already
41850 if (!this.nodeIdsToColumns[pointer.id]) {
41851 this.nodeIdsToColumns[pointer.id] = {};
41852 }
41853 columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });
41854 pointer = pointer.parent;
41855 }
41856 };
41857 ChangedPath.prototype.linkPathItems = function (rowNode, newEntryCount) {
41858 var pointer = rowNode;
41859 for (var i = 0; i < newEntryCount; i++) {
41860 var thisItem = this.mapToItems[pointer.id];
41861 var parentItem = this.mapToItems[pointer.parent.id];
41862 if (!parentItem.children) {
41863 parentItem.children = [];
41864 }
41865 parentItem.children.push(thisItem);
41866 pointer = pointer.parent;
41867 }
41868 };
41869 // called by
41870 // 1) change detection (provides cols) and
41871 // 2) groupStage if doing transaction update (doesn't provide cols)
41872 ChangedPath.prototype.addParentNode = function (rowNode, columns) {
41873 if (!rowNode || rowNode.isRowPinned()) {
41874 return;
41875 }
41876 // we cannot do both steps below in the same loop as
41877 // the second loop has a dependency on the first loop.
41878 // ie the hierarchy cannot be stitched up yet because
41879 // we don't have it built yet
41880 // create the new PathItem objects.
41881 var newEntryCount = this.createPathItems(rowNode);
41882 // link in the node items
41883 this.linkPathItems(rowNode, newEntryCount);
41884 // update columns
41885 this.populateColumnsMap(rowNode, columns);
41886 };
41887 ChangedPath.prototype.canSkip = function (rowNode) {
41888 return this.active && !this.mapToItems[rowNode.id];
41889 };
41890 ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {
41891 if (!this.keepingColumns) {
41892 return valueColumns;
41893 }
41894 var colsForThisNode = this.nodeIdsToColumns[rowNode.id];
41895 var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });
41896 return result;
41897 };
41898 ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {
41899 if (!this.keepingColumns) {
41900 return null;
41901 }
41902 var colsForThisNode = this.nodeIdsToColumns[rowNode.id];
41903 var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });
41904 return result;
41905 };
41906 return ChangedPath;
41907}());
41908
41909
41910
41911
41912
41913/***/ }),
41914/* 183 */
41915/***/ (function(module, __webpack_exports__, __webpack_require__) {
41916
41917"use strict";
41918__webpack_require__.r(__webpack_exports__);
41919/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlock", function() { return RowNodeBlock; });
41920/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
41921/**
41922 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41923 * @version v27.3.0
41924 * @link https://www.ag-grid.com/
41925 * @license MIT
41926 */
41927var __extends = (undefined && undefined.__extends) || (function () {
41928 var extendStatics = function (d, b) {
41929 extendStatics = Object.setPrototypeOf ||
41930 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
41931 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
41932 return extendStatics(d, b);
41933 };
41934 return function (d, b) {
41935 extendStatics(d, b);
41936 function __() { this.constructor = d; }
41937 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41938 };
41939})();
41940
41941var RowNodeBlock = /** @class */ (function (_super) {
41942 __extends(RowNodeBlock, _super);
41943 function RowNodeBlock(id) {
41944 var _this = _super.call(this) || this;
41945 _this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;
41946 _this.version = 0;
41947 _this.id = id;
41948 return _this;
41949 }
41950 RowNodeBlock.prototype.getId = function () {
41951 return this.id;
41952 };
41953 RowNodeBlock.prototype.load = function () {
41954 this.state = RowNodeBlock.STATE_LOADING;
41955 this.loadFromDatasource();
41956 };
41957 RowNodeBlock.prototype.getVersion = function () {
41958 return this.version;
41959 };
41960 RowNodeBlock.prototype.setStateWaitingToLoad = function () {
41961 // in case any current loads in progress, this will have their results ignored
41962 this.version++;
41963 this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;
41964 };
41965 RowNodeBlock.prototype.getState = function () {
41966 return this.state;
41967 };
41968 RowNodeBlock.prototype.pageLoadFailed = function (version) {
41969 var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);
41970 if (requestMostRecentAndLive) {
41971 this.state = RowNodeBlock.STATE_FAILED;
41972 this.processServerFail();
41973 }
41974 this.dispatchLoadCompleted(false);
41975 };
41976 RowNodeBlock.prototype.success = function (version, params) {
41977 this.successCommon(version, params);
41978 };
41979 RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {
41980 this.successCommon(version, { rowData: rows, rowCount: lastRow });
41981 };
41982 RowNodeBlock.prototype.isRequestMostRecentAndLive = function (version) {
41983 // thisIsMostRecentRequest - if block was refreshed, then another request
41984 // could of been sent after this one.
41985 var thisIsMostRecentRequest = version === this.version;
41986 // weAreNotDestroyed - if InfiniteStore is purged, then blocks are destroyed
41987 // and new blocks created. so data loads of old blocks are discarded.
41988 var weAreNotDestroyed = this.isAlive();
41989 return thisIsMostRecentRequest && weAreNotDestroyed;
41990 };
41991 RowNodeBlock.prototype.successCommon = function (version, params) {
41992 // need to dispatch load complete before processing the data, as PaginationComp checks
41993 // RowNodeBlockLoader to see if it is still loading, so the RowNodeBlockLoader needs to
41994 // be updated first (via LoadComplete event) before PaginationComp updates (via processServerResult method)
41995 this.dispatchLoadCompleted();
41996 var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);
41997 if (requestMostRecentAndLive) {
41998 this.state = RowNodeBlock.STATE_LOADED;
41999 this.processServerResult(params);
42000 }
42001 };
42002 RowNodeBlock.prototype.dispatchLoadCompleted = function (success) {
42003 if (success === void 0) { success = true; }
42004 // we fire event regardless of processing data or now, as we want
42005 // the concurrentLoadRequests count to be reduced in BlockLoader
42006 var event = {
42007 type: RowNodeBlock.EVENT_LOAD_COMPLETE,
42008 success: success,
42009 block: this
42010 };
42011 this.dispatchEvent(event);
42012 };
42013 RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';
42014 RowNodeBlock.STATE_WAITING_TO_LOAD = 'needsLoading';
42015 RowNodeBlock.STATE_LOADING = 'loading';
42016 RowNodeBlock.STATE_LOADED = 'loaded';
42017 RowNodeBlock.STATE_FAILED = 'failed';
42018 return RowNodeBlock;
42019}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
42020
42021
42022
42023
42024
42025/***/ }),
42026/* 184 */
42027/***/ (function(module, __webpack_exports__, __webpack_require__) {
42028
42029"use strict";
42030__webpack_require__.r(__webpack_exports__);
42031/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlockLoader", function() { return RowNodeBlockLoader; });
42032/* harmony import */ var _rowNodeBlock__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(183);
42033/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
42034/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
42035/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37);
42036/**
42037 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42038 * @version v27.3.0
42039 * @link https://www.ag-grid.com/
42040 * @license MIT
42041 */
42042var __extends = (undefined && undefined.__extends) || (function () {
42043 var extendStatics = function (d, b) {
42044 extendStatics = Object.setPrototypeOf ||
42045 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42046 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42047 return extendStatics(d, b);
42048 };
42049 return function (d, b) {
42050 extendStatics(d, b);
42051 function __() { this.constructor = d; }
42052 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42053 };
42054})();
42055var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
42056 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42057 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
42058 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;
42059 return c > 3 && r && Object.defineProperty(target, key, r), r;
42060};
42061var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
42062 return function (target, key) { decorator(target, key, paramIndex); }
42063};
42064
42065
42066
42067
42068var RowNodeBlockLoader = /** @class */ (function (_super) {
42069 __extends(RowNodeBlockLoader, _super);
42070 function RowNodeBlockLoader() {
42071 var _this = _super !== null && _super.apply(this, arguments) || this;
42072 _this.activeBlockLoadsCount = 0;
42073 _this.blocks = [];
42074 _this.active = true;
42075 return _this;
42076 }
42077 RowNodeBlockLoader_1 = RowNodeBlockLoader;
42078 RowNodeBlockLoader.prototype.postConstruct = function () {
42079 this.maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();
42080 var blockLoadDebounceMillis = this.gridOptionsWrapper.getBlockLoadDebounceMillis();
42081 if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {
42082 this.checkBlockToLoadDebounce = _utils__WEBPACK_IMPORTED_MODULE_3__["_"].debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);
42083 }
42084 };
42085 RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {
42086 this.logger = loggerFactory.create('RowNodeBlockLoader');
42087 };
42088 RowNodeBlockLoader.prototype.addBlock = function (block) {
42089 this.blocks.push(block);
42090 // note that we do not remove this listener when removing the block. this is because the
42091 // cache can get destroyed (and containing blocks) when a block is loading. however the loading block
42092 // is still counted as an active loading block and we must decrement activeBlockLoadsCount when it finishes.
42093 block.addEventListener(_rowNodeBlock__WEBPACK_IMPORTED_MODULE_0__["RowNodeBlock"].EVENT_LOAD_COMPLETE, this.loadComplete.bind(this));
42094 this.checkBlockToLoad();
42095 };
42096 RowNodeBlockLoader.prototype.removeBlock = function (block) {
42097 _utils__WEBPACK_IMPORTED_MODULE_3__["_"].removeFromArray(this.blocks, block);
42098 };
42099 RowNodeBlockLoader.prototype.destroy = function () {
42100 _super.prototype.destroy.call(this);
42101 this.active = false;
42102 };
42103 RowNodeBlockLoader.prototype.loadComplete = function () {
42104 this.activeBlockLoadsCount--;
42105 this.checkBlockToLoad();
42106 if (this.activeBlockLoadsCount == 0) {
42107 this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADER_FINISHED_EVENT });
42108 }
42109 };
42110 RowNodeBlockLoader.prototype.checkBlockToLoad = function () {
42111 if (this.checkBlockToLoadDebounce) {
42112 this.checkBlockToLoadDebounce();
42113 }
42114 else {
42115 this.performCheckBlocksToLoad();
42116 }
42117 };
42118 RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {
42119 if (!this.active) {
42120 return;
42121 }
42122 this.printCacheStatus();
42123 if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {
42124 this.logger.log("checkBlockToLoad: max loads exceeded");
42125 return;
42126 }
42127 var blockToLoad = null;
42128 this.blocks.forEach(function (block) {
42129 if (block.getState() === _rowNodeBlock__WEBPACK_IMPORTED_MODULE_0__["RowNodeBlock"].STATE_WAITING_TO_LOAD) {
42130 blockToLoad = block;
42131 }
42132 });
42133 if (blockToLoad) {
42134 blockToLoad.load();
42135 this.activeBlockLoadsCount++;
42136 this.printCacheStatus();
42137 }
42138 };
42139 RowNodeBlockLoader.prototype.getBlockState = function () {
42140 var result = {};
42141 this.blocks.forEach(function (block) {
42142 var _a = block.getBlockStateJson(), id = _a.id, state = _a.state;
42143 result[id] = state;
42144 });
42145 return result;
42146 };
42147 RowNodeBlockLoader.prototype.printCacheStatus = function () {
42148 if (this.logger.isLogging()) {
42149 this.logger.log("printCacheStatus: activePageLoadsCount = " + this.activeBlockLoadsCount + ","
42150 + (" blocks = " + JSON.stringify(this.getBlockState())));
42151 }
42152 };
42153 RowNodeBlockLoader.prototype.isLoading = function () {
42154 return this.activeBlockLoadsCount > 0;
42155 };
42156 var RowNodeBlockLoader_1;
42157 RowNodeBlockLoader.BLOCK_LOADER_FINISHED_EVENT = 'blockLoaderFinished';
42158 __decorate([
42159 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
42160 ], RowNodeBlockLoader.prototype, "postConstruct", null);
42161 __decorate([
42162 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Qualifier"])('loggerFactory'))
42163 ], RowNodeBlockLoader.prototype, "setBeans", null);
42164 RowNodeBlockLoader = RowNodeBlockLoader_1 = __decorate([
42165 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('rowNodeBlockLoader')
42166 ], RowNodeBlockLoader);
42167 return RowNodeBlockLoader;
42168}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
42169
42170
42171
42172
42173
42174/***/ }),
42175/* 185 */
42176/***/ (function(module, __webpack_exports__, __webpack_require__) {
42177
42178"use strict";
42179__webpack_require__.r(__webpack_exports__);
42180/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PaginationProxy", function() { return PaginationProxy; });
42181/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
42182/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
42183/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
42184/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
42185/* harmony import */ var _utils_number__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(46);
42186/**
42187 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42188 * @version v27.3.0
42189 * @link https://www.ag-grid.com/
42190 * @license MIT
42191 */
42192var __extends = (undefined && undefined.__extends) || (function () {
42193 var extendStatics = function (d, b) {
42194 extendStatics = Object.setPrototypeOf ||
42195 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42196 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42197 return extendStatics(d, b);
42198 };
42199 return function (d, b) {
42200 extendStatics(d, b);
42201 function __() { this.constructor = d; }
42202 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42203 };
42204})();
42205var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
42206 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42207 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
42208 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;
42209 return c > 3 && r && Object.defineProperty(target, key, r), r;
42210};
42211
42212
42213
42214
42215
42216var PaginationProxy = /** @class */ (function (_super) {
42217 __extends(PaginationProxy, _super);
42218 function PaginationProxy() {
42219 var _this = _super !== null && _super.apply(this, arguments) || this;
42220 _this.currentPage = 0;
42221 _this.topDisplayedRowIndex = 0;
42222 _this.bottomDisplayedRowIndex = 0;
42223 _this.pixelOffset = 0;
42224 _this.masterRowCount = 0;
42225 return _this;
42226 }
42227 PaginationProxy.prototype.postConstruct = function () {
42228 this.active = this.gridOptionsWrapper.isPagination();
42229 this.paginateChildRows = this.gridOptionsWrapper.isPaginateChildRows();
42230 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));
42231 this.addManagedListener(this.gridOptionsWrapper, 'paginationPageSize', this.onPaginationPageSizeChanged.bind(this));
42232 this.onModelUpdated();
42233 };
42234 PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {
42235 var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());
42236 if (res) {
42237 this.calculatePages();
42238 }
42239 return res;
42240 };
42241 PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {
42242 this.calculatePages();
42243 var paginationChangedEvent = {
42244 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PAGINATION_CHANGED,
42245 animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,
42246 newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,
42247 newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,
42248 keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false,
42249 api: this.gridApi,
42250 columnApi: this.columnApi
42251 };
42252 this.eventService.dispatchEvent(paginationChangedEvent);
42253 };
42254 PaginationProxy.prototype.onPaginationPageSizeChanged = function () {
42255 this.calculatePages();
42256 var paginationChangedEvent = {
42257 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PAGINATION_CHANGED,
42258 animate: false,
42259 newData: false,
42260 newPage: false,
42261 // important to keep rendered rows, otherwise every time grid is resized,
42262 // we would destroy all the rows.
42263 keepRenderedRows: true,
42264 api: this.gridApi,
42265 columnApi: this.columnApi
42266 };
42267 this.eventService.dispatchEvent(paginationChangedEvent);
42268 };
42269 PaginationProxy.prototype.goToPage = function (page) {
42270 if (!this.active || this.currentPage === page) {
42271 return;
42272 }
42273 this.currentPage = page;
42274 var event = {
42275 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_MODEL_UPDATED,
42276 animate: false,
42277 keepRenderedRows: false,
42278 newData: false,
42279 newPage: true,
42280 api: this.gridApi,
42281 columnApi: this.columnApi
42282 };
42283 this.onModelUpdated(event);
42284 };
42285 PaginationProxy.prototype.getPixelOffset = function () {
42286 return this.pixelOffset;
42287 };
42288 PaginationProxy.prototype.getRow = function (index) {
42289 return this.rowModel.getRow(index);
42290 };
42291 PaginationProxy.prototype.getRowNode = function (id) {
42292 return this.rowModel.getRowNode(id);
42293 };
42294 PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {
42295 return this.rowModel.getRowIndexAtPixel(pixel);
42296 };
42297 PaginationProxy.prototype.getCurrentPageHeight = function () {
42298 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(this.topRowBounds) || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(this.bottomRowBounds)) {
42299 return 0;
42300 }
42301 return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);
42302 };
42303 PaginationProxy.prototype.getCurrentPagePixelRange = function () {
42304 var pageFirstPixel = this.topRowBounds ? this.topRowBounds.rowTop : 0;
42305 var pageLastPixel = this.bottomRowBounds ? this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight : 0;
42306 return { pageFirstPixel: pageFirstPixel, pageLastPixel: pageLastPixel };
42307 };
42308 PaginationProxy.prototype.isRowPresent = function (rowNode) {
42309 if (!this.rowModel.isRowPresent(rowNode)) {
42310 return false;
42311 }
42312 var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;
42313 return nodeIsInPage;
42314 };
42315 PaginationProxy.prototype.isEmpty = function () {
42316 return this.rowModel.isEmpty();
42317 };
42318 PaginationProxy.prototype.isRowsToRender = function () {
42319 return this.rowModel.isRowsToRender();
42320 };
42321 PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {
42322 return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);
42323 };
42324 PaginationProxy.prototype.forEachNode = function (callback) {
42325 return this.rowModel.forEachNode(callback);
42326 };
42327 PaginationProxy.prototype.getType = function () {
42328 return this.rowModel.getType();
42329 };
42330 PaginationProxy.prototype.getRowBounds = function (index) {
42331 var res = this.rowModel.getRowBounds(index);
42332 res.rowIndex = index;
42333 return res;
42334 };
42335 PaginationProxy.prototype.getPageFirstRow = function () {
42336 return this.topRowBounds ? this.topRowBounds.rowIndex : -1;
42337 };
42338 PaginationProxy.prototype.getPageLastRow = function () {
42339 return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;
42340 };
42341 PaginationProxy.prototype.getRowCount = function () {
42342 return this.rowModel.getRowCount();
42343 };
42344 PaginationProxy.prototype.getPageForIndex = function (index) {
42345 return Math.floor(index / this.pageSize);
42346 };
42347 PaginationProxy.prototype.goToPageWithIndex = function (index) {
42348 if (!this.active) {
42349 return;
42350 }
42351 var pageNumber = this.getPageForIndex(index);
42352 this.goToPage(pageNumber);
42353 };
42354 PaginationProxy.prototype.isRowInPage = function (row) {
42355 if (!this.active) {
42356 return true;
42357 }
42358 var rowPage = this.getPageForIndex(row.rowIndex);
42359 return rowPage === this.currentPage;
42360 };
42361 PaginationProxy.prototype.isLastPageFound = function () {
42362 return this.rowModel.isLastRowIndexKnown();
42363 };
42364 PaginationProxy.prototype.getCurrentPage = function () {
42365 return this.currentPage;
42366 };
42367 PaginationProxy.prototype.goToNextPage = function () {
42368 this.goToPage(this.currentPage + 1);
42369 };
42370 PaginationProxy.prototype.goToPreviousPage = function () {
42371 this.goToPage(this.currentPage - 1);
42372 };
42373 PaginationProxy.prototype.goToFirstPage = function () {
42374 this.goToPage(0);
42375 };
42376 PaginationProxy.prototype.goToLastPage = function () {
42377 var rowCount = this.rowModel.getRowCount();
42378 var lastPage = Math.floor(rowCount / this.pageSize);
42379 this.goToPage(lastPage);
42380 };
42381 PaginationProxy.prototype.getPageSize = function () {
42382 return this.pageSize;
42383 };
42384 PaginationProxy.prototype.getTotalPages = function () {
42385 return this.totalPages;
42386 };
42387 PaginationProxy.prototype.setPageSize = function () {
42388 // show put this into super class
42389 this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();
42390 if (this.pageSize == null || this.pageSize < 1) {
42391 this.pageSize = 100;
42392 }
42393 };
42394 PaginationProxy.prototype.calculatePages = function () {
42395 if (this.active) {
42396 this.setPageSize();
42397 if (this.paginateChildRows) {
42398 this.calculatePagesAllRows();
42399 }
42400 else {
42401 this.calculatePagesMasterRowsOnly();
42402 }
42403 }
42404 else {
42405 this.calculatedPagesNotActive();
42406 }
42407 this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);
42408 if (this.topRowBounds) {
42409 this.topRowBounds.rowIndex = this.topDisplayedRowIndex;
42410 }
42411 this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);
42412 if (this.bottomRowBounds) {
42413 this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;
42414 }
42415 this.setPixelOffset(Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(this.topRowBounds) ? this.topRowBounds.rowTop : 0);
42416 };
42417 PaginationProxy.prototype.setPixelOffset = function (value) {
42418 if (this.pixelOffset === value) {
42419 return;
42420 }
42421 this.pixelOffset = value;
42422 this.eventService.dispatchEvent({ type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PAGINATION_PIXEL_OFFSET_CHANGED });
42423 };
42424 PaginationProxy.prototype.setZeroRows = function () {
42425 this.masterRowCount = 0;
42426 this.topDisplayedRowIndex = 0;
42427 this.bottomDisplayedRowIndex = -1;
42428 this.currentPage = 0;
42429 this.totalPages = 0;
42430 };
42431 PaginationProxy.prototype.calculatePagesMasterRowsOnly = function () {
42432 // const csrm = <ClientSideRowModel> this.rowModel;
42433 // const rootNode = csrm.getRootNode();
42434 // const masterRows = rootNode.childrenAfterSort;
42435 this.masterRowCount = this.rowModel.getTopLevelRowCount();
42436 // we say <=0 (rather than =0) as viewport returns -1 when no rows
42437 if (this.masterRowCount <= 0) {
42438 this.setZeroRows();
42439 return;
42440 }
42441 var masterLastRowIndex = this.masterRowCount - 1;
42442 this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;
42443 if (this.currentPage >= this.totalPages) {
42444 this.currentPage = this.totalPages - 1;
42445 }
42446 if (!Object(_utils_number__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(this.currentPage) || this.currentPage < 0) {
42447 this.currentPage = 0;
42448 }
42449 var masterPageStartIndex = this.pageSize * this.currentPage;
42450 var masterPageEndIndex = (this.pageSize * (this.currentPage + 1)) - 1;
42451 if (masterPageEndIndex > masterLastRowIndex) {
42452 masterPageEndIndex = masterLastRowIndex;
42453 }
42454 this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);
42455 // masterRows[masterPageStartIndex].rowIndex;
42456 if (masterPageEndIndex === masterLastRowIndex) {
42457 // if showing the last master row, then we want to show the very last row of the model
42458 this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;
42459 }
42460 else {
42461 var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);
42462 //masterRows[masterPageEndIndex + 1].rowIndex;
42463 // this gets the index of the last child - eg current row is open, we want to display all children,
42464 // the index of the last child is one less than the index of the next parent row.
42465 this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;
42466 }
42467 };
42468 PaginationProxy.prototype.getMasterRowCount = function () {
42469 return this.masterRowCount;
42470 };
42471 PaginationProxy.prototype.calculatePagesAllRows = function () {
42472 this.masterRowCount = this.rowModel.getRowCount();
42473 if (this.masterRowCount === 0) {
42474 this.setZeroRows();
42475 return;
42476 }
42477 var maxRowIndex = this.masterRowCount - 1;
42478 this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;
42479 if (this.currentPage >= this.totalPages) {
42480 this.currentPage = this.totalPages - 1;
42481 }
42482 if (!Object(_utils_number__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(this.currentPage) || this.currentPage < 0) {
42483 this.currentPage = 0;
42484 }
42485 this.topDisplayedRowIndex = this.pageSize * this.currentPage;
42486 this.bottomDisplayedRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;
42487 if (this.bottomDisplayedRowIndex > maxRowIndex) {
42488 this.bottomDisplayedRowIndex = maxRowIndex;
42489 }
42490 };
42491 PaginationProxy.prototype.calculatedPagesNotActive = function () {
42492 this.pageSize = this.rowModel.getRowCount();
42493 this.totalPages = 1;
42494 this.currentPage = 0;
42495 this.topDisplayedRowIndex = 0;
42496 this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;
42497 };
42498 __decorate([
42499 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('rowModel')
42500 ], PaginationProxy.prototype, "rowModel", void 0);
42501 __decorate([
42502 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnApi')
42503 ], PaginationProxy.prototype, "columnApi", void 0);
42504 __decorate([
42505 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridApi')
42506 ], PaginationProxy.prototype, "gridApi", void 0);
42507 __decorate([
42508 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
42509 ], PaginationProxy.prototype, "postConstruct", null);
42510 PaginationProxy = __decorate([
42511 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('paginationProxy')
42512 ], PaginationProxy);
42513 return PaginationProxy;
42514}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
42515
42516
42517
42518
42519
42520/***/ }),
42521/* 186 */
42522/***/ (function(module, __webpack_exports__, __webpack_require__) {
42523
42524"use strict";
42525__webpack_require__.r(__webpack_exports__);
42526/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StylingService", function() { return StylingService; });
42527/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
42528/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
42529/**
42530 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42531 * @version v27.3.0
42532 * @link https://www.ag-grid.com/
42533 * @license MIT
42534 */
42535var __extends = (undefined && undefined.__extends) || (function () {
42536 var extendStatics = function (d, b) {
42537 extendStatics = Object.setPrototypeOf ||
42538 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42539 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42540 return extendStatics(d, b);
42541 };
42542 return function (d, b) {
42543 extendStatics(d, b);
42544 function __() { this.constructor = d; }
42545 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42546 };
42547})();
42548var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
42549 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42550 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
42551 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;
42552 return c > 3 && r && Object.defineProperty(target, key, r), r;
42553};
42554
42555
42556var StylingService = /** @class */ (function (_super) {
42557 __extends(StylingService, _super);
42558 function StylingService() {
42559 return _super !== null && _super.apply(this, arguments) || this;
42560 }
42561 StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {
42562 this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);
42563 this.processStaticCellClasses(colDef, params, onApplicableClass);
42564 };
42565 StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {
42566 if (classRules == null) {
42567 return;
42568 }
42569 var classNames = Object.keys(classRules);
42570 var classesToApply = {};
42571 var classesToRemove = {};
42572 var _loop_1 = function (i) {
42573 var className = classNames[i];
42574 var rule = classRules[className];
42575 var resultOfRule;
42576 if (typeof rule === 'string') {
42577 resultOfRule = this_1.expressionService.evaluate(rule, params);
42578 }
42579 else if (typeof rule === 'function') {
42580 resultOfRule = rule(params);
42581 }
42582 // in case className = 'my-class1 my-class2', we need to split into individual class names
42583 className.split(' ').forEach(function (singleClass) {
42584 if (singleClass == null || singleClass.trim() == '') {
42585 return;
42586 }
42587 resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;
42588 });
42589 };
42590 var this_1 = this;
42591 for (var i = 0; i < classNames.length; i++) {
42592 _loop_1(i);
42593 }
42594 // we remove all classes first, then add all classes second,
42595 // in case a class appears in more than one rule, this means it will be added
42596 // if appears in at least one truthy rule
42597 if (onNotApplicableClass) {
42598 Object.keys(classesToRemove).forEach(onNotApplicableClass);
42599 }
42600 Object.keys(classesToApply).forEach(onApplicableClass);
42601 };
42602 StylingService.prototype.getStaticCellClasses = function (colDef, params) {
42603 var cellClass = colDef.cellClass;
42604 if (!cellClass) {
42605 return [];
42606 }
42607 var classOrClasses;
42608 if (typeof cellClass === 'function') {
42609 var cellClassFunc = cellClass;
42610 classOrClasses = cellClassFunc(params);
42611 }
42612 else {
42613 classOrClasses = cellClass;
42614 }
42615 if (typeof classOrClasses === 'string') {
42616 classOrClasses = [classOrClasses];
42617 }
42618 return classOrClasses || [];
42619 };
42620 StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {
42621 var classOrClasses = this.getStaticCellClasses(colDef, params);
42622 classOrClasses.forEach(function (cssClassItem) {
42623 onApplicableClass(cssClassItem);
42624 });
42625 };
42626 __decorate([
42627 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('expressionService')
42628 ], StylingService.prototype, "expressionService", void 0);
42629 StylingService = __decorate([
42630 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('stylingService')
42631 ], StylingService);
42632 return StylingService;
42633}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
42634
42635
42636
42637
42638
42639/***/ }),
42640/* 187 */
42641/***/ (function(module, __webpack_exports__, __webpack_require__) {
42642
42643"use strict";
42644__webpack_require__.r(__webpack_exports__);
42645/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgRadioButton", function() { return AgRadioButton; });
42646/* harmony import */ var _agCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
42647/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24);
42648/**
42649 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42650 * @version v27.3.0
42651 * @link https://www.ag-grid.com/
42652 * @license MIT
42653 */
42654var __extends = (undefined && undefined.__extends) || (function () {
42655 var extendStatics = function (d, b) {
42656 extendStatics = Object.setPrototypeOf ||
42657 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42658 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42659 return extendStatics(d, b);
42660 };
42661 return function (d, b) {
42662 extendStatics(d, b);
42663 function __() { this.constructor = d; }
42664 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42665 };
42666})();
42667
42668
42669var AgRadioButton = /** @class */ (function (_super) {
42670 __extends(AgRadioButton, _super);
42671 function AgRadioButton(config) {
42672 return _super.call(this, config, 'ag-radio-button', 'radio') || this;
42673 }
42674 AgRadioButton.prototype.isSelected = function () {
42675 return this.eInput.checked;
42676 };
42677 AgRadioButton.prototype.toggle = function () {
42678 if (this.eInput.disabled) {
42679 return;
42680 }
42681 // do not allow an active radio button to be deselected
42682 if (!this.isSelected()) {
42683 this.setValue(true);
42684 }
42685 };
42686 AgRadioButton.prototype.addInputListeners = function () {
42687 _super.prototype.addInputListeners.call(this);
42688 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CHECKBOX_CHANGED, this.onChange.bind(this));
42689 };
42690 /**
42691 * This ensures that if another radio button in the same named group is selected, we deselect this radio button.
42692 * By default the browser does this for you, but we are managing classes ourselves in order to ensure input
42693 * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,
42694 * not deselected, so we need to use our own event.
42695 */
42696 AgRadioButton.prototype.onChange = function (event) {
42697 if (event.selected &&
42698 event.name &&
42699 this.eInput.name &&
42700 this.eInput.name === event.name &&
42701 event.id &&
42702 this.eInput.id !== event.id) {
42703 this.setValue(false, true);
42704 }
42705 };
42706 return AgRadioButton;
42707}(_agCheckbox__WEBPACK_IMPORTED_MODULE_0__["AgCheckbox"]));
42708
42709
42710
42711
42712
42713/***/ }),
42714/* 188 */
42715/***/ (function(module, __webpack_exports__, __webpack_require__) {
42716
42717"use strict";
42718__webpack_require__.r(__webpack_exports__);
42719/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgToggleButton", function() { return AgToggleButton; });
42720/* harmony import */ var _agCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
42721/**
42722 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42723 * @version v27.3.0
42724 * @link https://www.ag-grid.com/
42725 * @license MIT
42726 */
42727var __extends = (undefined && undefined.__extends) || (function () {
42728 var extendStatics = function (d, b) {
42729 extendStatics = Object.setPrototypeOf ||
42730 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42731 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42732 return extendStatics(d, b);
42733 };
42734 return function (d, b) {
42735 extendStatics(d, b);
42736 function __() { this.constructor = d; }
42737 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42738 };
42739})();
42740
42741var AgToggleButton = /** @class */ (function (_super) {
42742 __extends(AgToggleButton, _super);
42743 function AgToggleButton(config) {
42744 return _super.call(this, config, 'ag-toggle-button') || this;
42745 }
42746 AgToggleButton.prototype.setValue = function (value, silent) {
42747 _super.prototype.setValue.call(this, value, silent);
42748 this.addOrRemoveCssClass('ag-selected', this.getValue());
42749 return this;
42750 };
42751 return AgToggleButton;
42752}(_agCheckbox__WEBPACK_IMPORTED_MODULE_0__["AgCheckbox"]));
42753
42754
42755
42756
42757
42758/***/ }),
42759/* 189 */
42760/***/ (function(module, __webpack_exports__, __webpack_require__) {
42761
42762"use strict";
42763__webpack_require__.r(__webpack_exports__);
42764/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgInputTextField", function() { return AgInputTextField; });
42765/* harmony import */ var _agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71);
42766/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
42767/**
42768 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42769 * @version v27.3.0
42770 * @link https://www.ag-grid.com/
42771 * @license MIT
42772 */
42773var __extends = (undefined && undefined.__extends) || (function () {
42774 var extendStatics = function (d, b) {
42775 extendStatics = Object.setPrototypeOf ||
42776 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42777 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42778 return extendStatics(d, b);
42779 };
42780 return function (d, b) {
42781 extendStatics(d, b);
42782 function __() { this.constructor = d; }
42783 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42784 };
42785})();
42786
42787
42788var AgInputTextField = /** @class */ (function (_super) {
42789 __extends(AgInputTextField, _super);
42790 function AgInputTextField(config, className, inputType) {
42791 if (className === void 0) { className = 'ag-text-field'; }
42792 if (inputType === void 0) { inputType = 'text'; }
42793 return _super.call(this, config, className, inputType) || this;
42794 }
42795 AgInputTextField.prototype.postConstruct = function () {
42796 _super.prototype.postConstruct.call(this);
42797 if (this.config.allowedCharPattern) {
42798 this.preventDisallowedCharacters();
42799 }
42800 };
42801 AgInputTextField.prototype.setValue = function (value, silent) {
42802 var ret = _super.prototype.setValue.call(this, value, silent);
42803 if (this.eInput.value !== value) {
42804 this.eInput.value = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_1__["exists"])(value) ? value : '';
42805 }
42806 return ret;
42807 };
42808 AgInputTextField.prototype.preventDisallowedCharacters = function () {
42809 var pattern = new RegExp("[" + this.config.allowedCharPattern + "]");
42810 var preventDisallowedCharacters = function (event) {
42811 if (event.key && !pattern.test(event.key)) {
42812 event.preventDefault();
42813 }
42814 };
42815 this.addManagedListener(this.eInput, 'keypress', preventDisallowedCharacters);
42816 this.addManagedListener(this.eInput, 'paste', function (e) {
42817 var _a;
42818 var text = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');
42819 if (text && text.split('').some(function (c) { return !pattern.test(c); })) {
42820 e.preventDefault();
42821 }
42822 });
42823 };
42824 return AgInputTextField;
42825}(_agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractInputField"]));
42826
42827
42828
42829
42830
42831/***/ }),
42832/* 190 */
42833/***/ (function(module, __webpack_exports__, __webpack_require__) {
42834
42835"use strict";
42836__webpack_require__.r(__webpack_exports__);
42837/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgInputTextArea", function() { return AgInputTextArea; });
42838/* harmony import */ var _agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71);
42839/**
42840 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42841 * @version v27.3.0
42842 * @link https://www.ag-grid.com/
42843 * @license MIT
42844 */
42845var __extends = (undefined && undefined.__extends) || (function () {
42846 var extendStatics = function (d, b) {
42847 extendStatics = Object.setPrototypeOf ||
42848 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42849 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42850 return extendStatics(d, b);
42851 };
42852 return function (d, b) {
42853 extendStatics(d, b);
42854 function __() { this.constructor = d; }
42855 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42856 };
42857})();
42858
42859var AgInputTextArea = /** @class */ (function (_super) {
42860 __extends(AgInputTextArea, _super);
42861 function AgInputTextArea(config) {
42862 return _super.call(this, config, 'ag-text-area', null, 'textarea') || this;
42863 }
42864 AgInputTextArea.prototype.setValue = function (value, silent) {
42865 var ret = _super.prototype.setValue.call(this, value, silent);
42866 this.eInput.value = value;
42867 return ret;
42868 };
42869 AgInputTextArea.prototype.setCols = function (cols) {
42870 this.eInput.cols = cols;
42871 return this;
42872 };
42873 AgInputTextArea.prototype.setRows = function (rows) {
42874 this.eInput.rows = rows;
42875 return this;
42876 };
42877 return AgInputTextArea;
42878}(_agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractInputField"]));
42879
42880
42881
42882
42883
42884/***/ }),
42885/* 191 */
42886/***/ (function(module, __webpack_exports__, __webpack_require__) {
42887
42888"use strict";
42889__webpack_require__.r(__webpack_exports__);
42890/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgInputNumberField", function() { return AgInputNumberField; });
42891/* harmony import */ var _agInputTextField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(189);
42892/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
42893/**
42894 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42895 * @version v27.3.0
42896 * @link https://www.ag-grid.com/
42897 * @license MIT
42898 */
42899var __extends = (undefined && undefined.__extends) || (function () {
42900 var extendStatics = function (d, b) {
42901 extendStatics = Object.setPrototypeOf ||
42902 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42903 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42904 return extendStatics(d, b);
42905 };
42906 return function (d, b) {
42907 extendStatics(d, b);
42908 function __() { this.constructor = d; }
42909 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42910 };
42911})();
42912
42913
42914var AgInputNumberField = /** @class */ (function (_super) {
42915 __extends(AgInputNumberField, _super);
42916 function AgInputNumberField(config) {
42917 return _super.call(this, config, 'ag-number-field', 'number') || this;
42918 }
42919 AgInputNumberField.prototype.postConstruct = function () {
42920 var _this = this;
42921 _super.prototype.postConstruct.call(this);
42922 this.addManagedListener(this.eInput, 'blur', function () {
42923 var floatedValue = parseFloat(_this.eInput.value);
42924 var value = isNaN(floatedValue) ? '' : _this.normalizeValue(floatedValue.toString());
42925 if (_this.value !== value) {
42926 _this.setValue(value);
42927 }
42928 });
42929 this.eInput.step = 'any';
42930 };
42931 AgInputNumberField.prototype.normalizeValue = function (value) {
42932 if (value === '') {
42933 return '';
42934 }
42935 if (this.precision) {
42936 value = this.adjustPrecision(value);
42937 }
42938 var val = parseFloat(value);
42939 if (this.min != null && val < this.min) {
42940 value = this.min.toString();
42941 }
42942 else if (this.max != null && val > this.max) {
42943 value = this.max.toString();
42944 }
42945 return value;
42946 };
42947 AgInputNumberField.prototype.adjustPrecision = function (value) {
42948 if (this.precision) {
42949 var floatString = parseFloat(value).toFixed(this.precision);
42950 value = parseFloat(floatString).toString();
42951 }
42952 return value;
42953 };
42954 AgInputNumberField.prototype.setMin = function (min) {
42955 if (this.min === min) {
42956 return this;
42957 }
42958 this.min = min;
42959 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["addOrRemoveAttribute"])(this.eInput, 'min', min);
42960 return this;
42961 };
42962 AgInputNumberField.prototype.setMax = function (max) {
42963 if (this.max === max) {
42964 return this;
42965 }
42966 this.max = max;
42967 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["addOrRemoveAttribute"])(this.eInput, 'max', max);
42968 return this;
42969 };
42970 AgInputNumberField.prototype.setPrecision = function (precision) {
42971 this.precision = precision;
42972 return this;
42973 };
42974 AgInputNumberField.prototype.setStep = function (step) {
42975 if (this.step === step) {
42976 return this;
42977 }
42978 this.step = step;
42979 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["addOrRemoveAttribute"])(this.eInput, 'step', step);
42980 return this;
42981 };
42982 AgInputNumberField.prototype.setValue = function (value, silent) {
42983 value = this.adjustPrecision(value);
42984 var normalizedValue = this.normalizeValue(value);
42985 if (value != normalizedValue) {
42986 return this;
42987 }
42988 return _super.prototype.setValue.call(this, value, silent);
42989 };
42990 return AgInputNumberField;
42991}(_agInputTextField__WEBPACK_IMPORTED_MODULE_0__["AgInputTextField"]));
42992
42993
42994
42995
42996
42997/***/ }),
42998/* 192 */
42999/***/ (function(module, __webpack_exports__, __webpack_require__) {
43000
43001"use strict";
43002__webpack_require__.r(__webpack_exports__);
43003/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgInputRange", function() { return AgInputRange; });
43004/* harmony import */ var _agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71);
43005/**
43006 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43007 * @version v27.3.0
43008 * @link https://www.ag-grid.com/
43009 * @license MIT
43010 */
43011var __extends = (undefined && undefined.__extends) || (function () {
43012 var extendStatics = function (d, b) {
43013 extendStatics = Object.setPrototypeOf ||
43014 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43015 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43016 return extendStatics(d, b);
43017 };
43018 return function (d, b) {
43019 extendStatics(d, b);
43020 function __() { this.constructor = d; }
43021 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43022 };
43023})();
43024
43025var AgInputRange = /** @class */ (function (_super) {
43026 __extends(AgInputRange, _super);
43027 function AgInputRange(config) {
43028 return _super.call(this, config, 'ag-range-field', 'range') || this;
43029 }
43030 AgInputRange.prototype.postConstruct = function () {
43031 _super.prototype.postConstruct.call(this);
43032 var _a = this.config, min = _a.min, max = _a.max, step = _a.step;
43033 if (min != null) {
43034 this.setMinValue(min);
43035 }
43036 if (max != null) {
43037 this.setMaxValue(max);
43038 }
43039 this.setStep(step || 1);
43040 };
43041 AgInputRange.prototype.addInputListeners = function () {
43042 var _this = this;
43043 this.addManagedListener(this.eInput, 'input', function (e) {
43044 var value = e.target.value;
43045 _this.setValue(value);
43046 });
43047 };
43048 AgInputRange.prototype.setMinValue = function (value) {
43049 this.min = value;
43050 this.eInput.setAttribute('min', value.toString());
43051 return this;
43052 };
43053 AgInputRange.prototype.setMaxValue = function (value) {
43054 this.max = value;
43055 this.eInput.setAttribute('max', value.toString());
43056 return this;
43057 };
43058 AgInputRange.prototype.setStep = function (value) {
43059 this.eInput.setAttribute('step', value.toString());
43060 return this;
43061 };
43062 AgInputRange.prototype.setValue = function (value, silent) {
43063 if (this.min != null) {
43064 value = Math.max(parseFloat(value), this.min).toString();
43065 }
43066 if (this.max != null) {
43067 value = Math.min(parseFloat(value), this.max).toString();
43068 }
43069 var ret = _super.prototype.setValue.call(this, value, silent);
43070 this.eInput.value = value;
43071 return ret;
43072 };
43073 return AgInputRange;
43074}(_agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractInputField"]));
43075
43076
43077
43078
43079
43080/***/ }),
43081/* 193 */
43082/***/ (function(module, __webpack_exports__, __webpack_require__) {
43083
43084"use strict";
43085__webpack_require__.r(__webpack_exports__);
43086/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgSlider", function() { return AgSlider; });
43087/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
43088/* harmony import */ var _agAbstractLabel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68);
43089/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67);
43090/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
43091/**
43092 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43093 * @version v27.3.0
43094 * @link https://www.ag-grid.com/
43095 * @license MIT
43096 */
43097var __extends = (undefined && undefined.__extends) || (function () {
43098 var extendStatics = function (d, b) {
43099 extendStatics = Object.setPrototypeOf ||
43100 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43101 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43102 return extendStatics(d, b);
43103 };
43104 return function (d, b) {
43105 extendStatics(d, b);
43106 function __() { this.constructor = d; }
43107 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43108 };
43109})();
43110var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
43111 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
43112 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43113 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;
43114 return c > 3 && r && Object.defineProperty(target, key, r), r;
43115};
43116
43117
43118
43119
43120var AgSlider = /** @class */ (function (_super) {
43121 __extends(AgSlider, _super);
43122 function AgSlider(config) {
43123 var _this = _super.call(this, config, AgSlider.TEMPLATE) || this;
43124 _this.labelAlignment = 'top';
43125 return _this;
43126 }
43127 AgSlider.prototype.init = function () {
43128 this.eSlider.addCssClass('ag-slider-field');
43129 };
43130 AgSlider.prototype.onValueChange = function (callbackFn) {
43131 var _this = this;
43132 var eventChanged = _agAbstractField__WEBPACK_IMPORTED_MODULE_2__["AgAbstractField"].EVENT_CHANGED;
43133 this.addManagedListener(this.eText, eventChanged, function () {
43134 var textValue = parseFloat(_this.eText.getValue());
43135 _this.eSlider.setValue(textValue.toString(), true);
43136 callbackFn(textValue || 0);
43137 });
43138 this.addManagedListener(this.eSlider, eventChanged, function () {
43139 var sliderValue = _this.eSlider.getValue();
43140 _this.eText.setValue(sliderValue, true);
43141 callbackFn(parseFloat(sliderValue));
43142 });
43143 return this;
43144 };
43145 AgSlider.prototype.setSliderWidth = function (width) {
43146 this.eSlider.setWidth(width);
43147 return this;
43148 };
43149 AgSlider.prototype.setTextFieldWidth = function (width) {
43150 this.eText.setWidth(width);
43151 return this;
43152 };
43153 AgSlider.prototype.setMinValue = function (minValue) {
43154 this.eSlider.setMinValue(minValue);
43155 this.eText.setMin(minValue);
43156 return this;
43157 };
43158 AgSlider.prototype.setMaxValue = function (maxValue) {
43159 this.eSlider.setMaxValue(maxValue);
43160 this.eText.setMax(maxValue);
43161 return this;
43162 };
43163 AgSlider.prototype.getValue = function () {
43164 return this.eText.getValue();
43165 };
43166 AgSlider.prototype.setValue = function (value) {
43167 if (this.getValue() === value) {
43168 return this;
43169 }
43170 this.eText.setValue(value, true);
43171 this.eSlider.setValue(value, true);
43172 this.dispatchEvent({ type: _agAbstractField__WEBPACK_IMPORTED_MODULE_2__["AgAbstractField"].EVENT_CHANGED });
43173 return this;
43174 };
43175 AgSlider.prototype.setStep = function (step) {
43176 this.eSlider.setStep(step);
43177 this.eText.setStep(step);
43178 return this;
43179 };
43180 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>";
43181 __decorate([
43182 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eLabel')
43183 ], AgSlider.prototype, "eLabel", void 0);
43184 __decorate([
43185 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eSlider')
43186 ], AgSlider.prototype, "eSlider", void 0);
43187 __decorate([
43188 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eText')
43189 ], AgSlider.prototype, "eText", void 0);
43190 __decorate([
43191 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
43192 ], AgSlider.prototype, "init", null);
43193 return AgSlider;
43194}(_agAbstractLabel__WEBPACK_IMPORTED_MODULE_1__["AgAbstractLabel"]));
43195
43196
43197
43198
43199
43200/***/ }),
43201/* 194 */
43202/***/ (function(module, __webpack_exports__, __webpack_require__) {
43203
43204"use strict";
43205__webpack_require__.r(__webpack_exports__);
43206/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgAngleSelect", function() { return AgAngleSelect; });
43207/* harmony import */ var _agAbstractLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(68);
43208/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
43209/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
43210/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67);
43211/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
43212/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42);
43213/**
43214 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43215 * @version v27.3.0
43216 * @link https://www.ag-grid.com/
43217 * @license MIT
43218 */
43219var __extends = (undefined && undefined.__extends) || (function () {
43220 var extendStatics = function (d, b) {
43221 extendStatics = Object.setPrototypeOf ||
43222 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43223 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43224 return extendStatics(d, b);
43225 };
43226 return function (d, b) {
43227 extendStatics(d, b);
43228 function __() { this.constructor = d; }
43229 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43230 };
43231})();
43232var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
43233 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
43234 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43235 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;
43236 return c > 3 && r && Object.defineProperty(target, key, r), r;
43237};
43238
43239
43240
43241
43242
43243
43244var AgAngleSelect = /** @class */ (function (_super) {
43245 __extends(AgAngleSelect, _super);
43246 function AgAngleSelect(config) {
43247 var _this = _super.call(this, config, AgAngleSelect.TEMPLATE) || this;
43248 _this.radius = 0;
43249 _this.offsetX = 0;
43250 _this.offsetY = 0;
43251 return _this;
43252 }
43253 AgAngleSelect.prototype.postConstruct = function () {
43254 var _this = this;
43255 _super.prototype.postConstruct.call(this);
43256 this.dragListener = {
43257 eElement: this.eParentCircle,
43258 dragStartPixels: 0,
43259 onDragStart: function (e) {
43260 _this.parentCircleRect = _this.eParentCircle.getBoundingClientRect();
43261 },
43262 onDragging: function (e) { return _this.calculateAngleDrag(e); },
43263 onDragStop: function () { }
43264 };
43265 this.dragService.addDragSource(this.dragListener);
43266 this.eAngleValue
43267 .setLabel('')
43268 .setLabelWidth(5)
43269 .setInputWidth(45)
43270 .setMin(0)
43271 .setMax(360)
43272 .setValue("" + this.degrees)
43273 .onValueChange(function (value) {
43274 if (value == null || value === '') {
43275 value = '0';
43276 }
43277 value = _this.eAngleValue.normalizeValue(value);
43278 var floatValue = parseFloat(value);
43279 if (floatValue > 180) {
43280 floatValue = floatValue - 360;
43281 }
43282 _this.setValue(floatValue);
43283 });
43284 this.updateNumberInput();
43285 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(this.getValue())) {
43286 this.eAngleValue.setValue(this.normalizeNegativeValue(this.getValue()).toString());
43287 }
43288 this.addManagedListener(this, _agAbstractField__WEBPACK_IMPORTED_MODULE_3__["AgAbstractField"].EVENT_CHANGED, function () {
43289 var eDocument = _this.gridOptionsWrapper.getDocument();
43290 if (_this.eAngleValue.getInputElement().contains(eDocument.activeElement)) {
43291 return;
43292 }
43293 _this.updateNumberInput();
43294 });
43295 };
43296 AgAngleSelect.prototype.updateNumberInput = function () {
43297 var normalizedValue = this.normalizeNegativeValue(this.getValue());
43298 this.eAngleValue.setValue(normalizedValue.toString());
43299 };
43300 AgAngleSelect.prototype.positionChildCircle = function (radians) {
43301 var rect = this.parentCircleRect || { width: 24, height: 24 };
43302 var eChildCircle = this.eChildCircle;
43303 var centerX = rect.width / 2;
43304 var centerY = rect.height / 2;
43305 eChildCircle.style.left = centerX + Math.cos(radians) * 8 + "px";
43306 eChildCircle.style.top = centerY + Math.sin(radians) * 8 + "px";
43307 };
43308 AgAngleSelect.prototype.calculatePolar = function () {
43309 var x = this.offsetX;
43310 var y = this.offsetY;
43311 var radians = Math.atan2(y, x);
43312 this.degrees = this.toDegrees(radians);
43313 this.radius = Math.sqrt((x * x) + (y * y));
43314 this.positionChildCircle(radians);
43315 };
43316 AgAngleSelect.prototype.calculateCartesian = function () {
43317 var radians = this.toRadians(this.getValue());
43318 var radius = this.getRadius();
43319 this
43320 .setOffsetX(Math.cos(radians) * radius)
43321 .setOffsetY(Math.sin(radians) * radius);
43322 };
43323 AgAngleSelect.prototype.setOffsetX = function (offset) {
43324 if (this.offsetX !== offset) {
43325 this.offsetX = offset;
43326 this.calculatePolar();
43327 }
43328 return this;
43329 };
43330 AgAngleSelect.prototype.setOffsetY = function (offset) {
43331 if (this.offsetY !== offset) {
43332 this.offsetY = offset;
43333 this.calculatePolar();
43334 }
43335 return this;
43336 };
43337 AgAngleSelect.prototype.calculateAngleDrag = function (e) {
43338 var rect = this.parentCircleRect;
43339 var centerX = rect.width / 2;
43340 var centerY = rect.height / 2;
43341 var x = e.clientX - rect.left;
43342 var y = e.clientY - rect.top;
43343 var dx = x - centerX;
43344 var dy = y - centerY;
43345 var radians = Math.atan2(dy, dx);
43346 this.setValue(radians, true);
43347 };
43348 AgAngleSelect.prototype.toDegrees = function (radians) {
43349 return radians / Math.PI * 180;
43350 };
43351 AgAngleSelect.prototype.toRadians = function (degrees) {
43352 return degrees / 180 * Math.PI;
43353 };
43354 AgAngleSelect.prototype.normalizeNegativeValue = function (degrees) {
43355 return degrees < 0 ? 360 + degrees : degrees;
43356 };
43357 AgAngleSelect.prototype.normalizeAngle180 = function (radians) {
43358 radians %= Math.PI * 2;
43359 if (radians < -Math.PI) {
43360 radians += Math.PI * 2;
43361 }
43362 else if (radians >= Math.PI) {
43363 radians -= Math.PI * 2;
43364 }
43365 return radians;
43366 };
43367 AgAngleSelect.prototype.getRadius = function () {
43368 return this.radius;
43369 };
43370 AgAngleSelect.prototype.setRadius = function (r) {
43371 if (this.radius === r) {
43372 return this;
43373 }
43374 this.radius = r;
43375 this.calculateCartesian();
43376 return this;
43377 };
43378 AgAngleSelect.prototype.onValueChange = function (callbackFn) {
43379 var _this = this;
43380 this.addManagedListener(this, _agAbstractField__WEBPACK_IMPORTED_MODULE_3__["AgAbstractField"].EVENT_CHANGED, function () {
43381 callbackFn(_this.degrees);
43382 });
43383 return this;
43384 };
43385 AgAngleSelect.prototype.getValue = function (radians) {
43386 return radians ? this.toRadians(this.degrees) : this.degrees;
43387 };
43388 AgAngleSelect.prototype.setValue = function (degrees, radians) {
43389 var radiansValue;
43390 if (!radians) {
43391 radiansValue = this.normalizeAngle180(this.toRadians(degrees));
43392 }
43393 else {
43394 radiansValue = degrees;
43395 }
43396 degrees = this.toDegrees(radiansValue);
43397 if (this.degrees !== degrees) {
43398 this.degrees = Math.floor(degrees);
43399 this.calculateCartesian();
43400 this.positionChildCircle(radiansValue);
43401 this.dispatchEvent({ type: _agAbstractField__WEBPACK_IMPORTED_MODULE_3__["AgAbstractField"].EVENT_CHANGED });
43402 }
43403 return this;
43404 };
43405 AgAngleSelect.prototype.setWidth = function (width) {
43406 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["setFixedWidth"])(this.getGui(), width);
43407 return this;
43408 };
43409 AgAngleSelect.prototype.destroy = function () {
43410 this.dragService.removeDragSource(this.dragListener);
43411 _super.prototype.destroy.call(this);
43412 };
43413 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>";
43414 __decorate([
43415 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLabel')
43416 ], AgAngleSelect.prototype, "eLabel", void 0);
43417 __decorate([
43418 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eParentCircle')
43419 ], AgAngleSelect.prototype, "eParentCircle", void 0);
43420 __decorate([
43421 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eChildCircle')
43422 ], AgAngleSelect.prototype, "eChildCircle", void 0);
43423 __decorate([
43424 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eAngleValue')
43425 ], AgAngleSelect.prototype, "eAngleValue", void 0);
43426 __decorate([
43427 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('dragService')
43428 ], AgAngleSelect.prototype, "dragService", void 0);
43429 return AgAngleSelect;
43430}(_agAbstractLabel__WEBPACK_IMPORTED_MODULE_0__["AgAbstractLabel"]));
43431
43432
43433
43434
43435
43436/***/ }),
43437/* 195 */
43438/***/ (function(module, __webpack_exports__, __webpack_require__) {
43439
43440"use strict";
43441__webpack_require__.r(__webpack_exports__);
43442/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgColorPicker", function() { return AgColorPicker; });
43443/* harmony import */ var _agColorPanel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(196);
43444/* harmony import */ var _agDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(197);
43445/* harmony import */ var _agPickerField__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69);
43446/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
43447/**
43448 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43449 * @version v27.3.0
43450 * @link https://www.ag-grid.com/
43451 * @license MIT
43452 */
43453var __extends = (undefined && undefined.__extends) || (function () {
43454 var extendStatics = function (d, b) {
43455 extendStatics = Object.setPrototypeOf ||
43456 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43457 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43458 return extendStatics(d, b);
43459 };
43460 return function (d, b) {
43461 extendStatics(d, b);
43462 function __() { this.constructor = d; }
43463 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43464 };
43465})();
43466
43467
43468
43469
43470var AgColorPicker = /** @class */ (function (_super) {
43471 __extends(AgColorPicker, _super);
43472 function AgColorPicker(config) {
43473 var _this = _super.call(this, config, 'ag-color-picker', 'colorPicker') || this;
43474 if (config && config.color) {
43475 _this.value = config.color;
43476 }
43477 return _this;
43478 }
43479 AgColorPicker.prototype.postConstruct = function () {
43480 _super.prototype.postConstruct.call(this);
43481 if (this.value) {
43482 this.setValue(this.value);
43483 }
43484 };
43485 AgColorPicker.prototype.showPicker = function () {
43486 var _this = this;
43487 var eGuiRect = this.getGui().getBoundingClientRect();
43488 var colorDialog = this.createBean(new _agDialog__WEBPACK_IMPORTED_MODULE_1__["AgDialog"]({
43489 closable: false,
43490 modal: true,
43491 hideTitleBar: true,
43492 minWidth: 190,
43493 width: 190,
43494 height: 250,
43495 x: eGuiRect.right - 190,
43496 y: eGuiRect.top - 250
43497 }));
43498 this.isPickerDisplayed = true;
43499 colorDialog.addCssClass('ag-color-dialog');
43500 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaExpanded"])(this.eWrapper, true);
43501 var colorPanel = this.createBean(new _agColorPanel__WEBPACK_IMPORTED_MODULE_0__["AgColorPanel"]({ picker: this }));
43502 colorPanel.addDestroyFunc(function () {
43503 if (colorDialog.isAlive()) {
43504 _this.destroyBean(colorDialog);
43505 }
43506 });
43507 colorDialog.setParentComponent(this);
43508 colorDialog.setBodyComponent(colorPanel);
43509 colorPanel.setValue(this.getValue());
43510 colorDialog.addDestroyFunc(function () {
43511 // here we check if the picker was already being
43512 // destroyed to avoid a stack overflow
43513 if (!_this.isDestroyingPicker) {
43514 _this.isDestroyingPicker = true;
43515 if (colorPanel.isAlive()) {
43516 _this.destroyBean(colorPanel);
43517 }
43518 }
43519 else {
43520 _this.isDestroyingPicker = false;
43521 }
43522 if (_this.isAlive()) {
43523 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaExpanded"])(_this.eWrapper, false);
43524 _this.getFocusableElement().focus();
43525 }
43526 _this.isPickerDisplayed = false;
43527 });
43528 return colorDialog;
43529 };
43530 AgColorPicker.prototype.setValue = function (color) {
43531 if (this.value === color) {
43532 return this;
43533 }
43534 this.eDisplayField.style.backgroundColor = color;
43535 return _super.prototype.setValue.call(this, color);
43536 };
43537 AgColorPicker.prototype.getValue = function () {
43538 return this.value;
43539 };
43540 return AgColorPicker;
43541}(_agPickerField__WEBPACK_IMPORTED_MODULE_2__["AgPickerField"]));
43542
43543
43544
43545
43546
43547/***/ }),
43548/* 196 */
43549/***/ (function(module, __webpack_exports__, __webpack_require__) {
43550
43551"use strict";
43552__webpack_require__.r(__webpack_exports__);
43553/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgColorPanel", function() { return AgColorPanel; });
43554/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
43555/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
43556/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
43557/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
43558/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
43559/**
43560 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43561 * @version v27.3.0
43562 * @link https://www.ag-grid.com/
43563 * @license MIT
43564 */
43565var __extends = (undefined && undefined.__extends) || (function () {
43566 var extendStatics = function (d, b) {
43567 extendStatics = Object.setPrototypeOf ||
43568 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43569 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43570 return extendStatics(d, b);
43571 };
43572 return function (d, b) {
43573 extendStatics(d, b);
43574 function __() { this.constructor = d; }
43575 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43576 };
43577})();
43578var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
43579 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
43580 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43581 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;
43582 return c > 3 && r && Object.defineProperty(target, key, r), r;
43583};
43584var __read = (undefined && undefined.__read) || function (o, n) {
43585 var m = typeof Symbol === "function" && o[Symbol.iterator];
43586 if (!m) return o;
43587 var i = m.call(o), r, ar = [], e;
43588 try {
43589 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
43590 }
43591 catch (error) { e = { error: error }; }
43592 finally {
43593 try {
43594 if (r && !r.done && (m = i["return"])) m.call(i);
43595 }
43596 finally { if (e) throw e.error; }
43597 }
43598 return ar;
43599};
43600
43601
43602
43603
43604
43605var AgColorPanel = /** @class */ (function (_super) {
43606 __extends(AgColorPanel, _super);
43607 function AgColorPanel(config) {
43608 var _this = _super.call(this, AgColorPanel.TEMPLATE) || this;
43609 _this.H = 1; // in the [0, 1] range
43610 _this.S = 1; // in the [0, 1] range
43611 _this.B = 1; // in the [0, 1] range
43612 _this.A = 1; // in the [0, 1] range
43613 _this.isSpectrumDragging = false;
43614 _this.isSpectrumHueDragging = false;
43615 _this.isSpectrumAlphaDragging = false;
43616 _this.colorChanged = false;
43617 _this.picker = config.picker;
43618 return _this;
43619 }
43620 AgColorPanel.prototype.postConstruct = function () {
43621 var eGui = this.getGui();
43622 this.initRecentColors();
43623 this.addManagedListener(this.spectrumVal, 'mousedown', this.onSpectrumDraggerDown.bind(this));
43624 this.addManagedListener(eGui, 'mousemove', this.onSpectrumDraggerMove.bind(this));
43625 this.addManagedListener(this.spectrumHue, 'mousedown', this.onSpectrumHueDown.bind(this));
43626 this.addManagedListener(eGui, 'mousemove', this.onSpectrumHueMove.bind(this));
43627 this.addManagedListener(this.spectrumAlpha, 'mousedown', this.onSpectrumAlphaDown.bind(this));
43628 this.addManagedListener(eGui, 'mousemove', this.onSpectrumAlphaMove.bind(this));
43629 // Listening to `mouseup` on the document on purpose. The user might release the mouse button
43630 // outside the UI control. When the mouse returns back to the control's area, the dragging
43631 // of the thumb is not expected and seen as a bug.
43632 this.addManagedListener(document, 'mouseup', this.onMouseUp.bind(this));
43633 this.addManagedListener(this.recentColors, 'click', this.onRecentColorClick.bind(this));
43634 };
43635 AgColorPanel.prototype.refreshSpectrumRect = function () {
43636 return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();
43637 };
43638 AgColorPanel.prototype.refreshHueRect = function () {
43639 return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();
43640 };
43641 AgColorPanel.prototype.refreshAlphaRect = function () {
43642 return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();
43643 };
43644 AgColorPanel.prototype.onSpectrumDraggerDown = function (e) {
43645 this.refreshSpectrumRect();
43646 this.isSpectrumDragging = true;
43647 this.moveDragger(e);
43648 };
43649 AgColorPanel.prototype.onSpectrumDraggerMove = function (e) {
43650 if (this.isSpectrumDragging) {
43651 this.moveDragger(e);
43652 }
43653 };
43654 AgColorPanel.prototype.onSpectrumHueDown = function (e) {
43655 this.refreshHueRect();
43656 this.isSpectrumHueDragging = true;
43657 this.moveHueSlider(e);
43658 };
43659 AgColorPanel.prototype.onSpectrumHueMove = function (e) {
43660 if (this.isSpectrumHueDragging) {
43661 this.moveHueSlider(e);
43662 }
43663 };
43664 AgColorPanel.prototype.onSpectrumAlphaDown = function (e) {
43665 this.refreshAlphaRect();
43666 this.isSpectrumAlphaDragging = true;
43667 this.moveAlphaSlider(e);
43668 };
43669 AgColorPanel.prototype.onSpectrumAlphaMove = function (e) {
43670 if (this.isSpectrumAlphaDragging) {
43671 this.moveAlphaSlider(e);
43672 }
43673 };
43674 AgColorPanel.prototype.onMouseUp = function () {
43675 this.isSpectrumDragging = false;
43676 this.isSpectrumHueDragging = false;
43677 this.isSpectrumAlphaDragging = false;
43678 };
43679 AgColorPanel.prototype.moveDragger = function (e) {
43680 var valRect = this.spectrumValRect;
43681 if (valRect) {
43682 var x = e.clientX - valRect.left;
43683 var y = e.clientY - valRect.top;
43684 x = Math.max(x, 0);
43685 x = Math.min(x, valRect.width);
43686 y = Math.max(y, 0);
43687 y = Math.min(y, valRect.height);
43688 this.setSpectrumValue(x / valRect.width, 1 - y / valRect.height);
43689 }
43690 };
43691 AgColorPanel.prototype.moveHueSlider = function (e) {
43692 var hueRect = this.spectrumHueRect;
43693 if (hueRect) {
43694 var slider = this.spectrumHueSlider;
43695 var sliderRect = slider.getBoundingClientRect();
43696 var x = e.clientX - hueRect.left;
43697 x = Math.max(x, 0);
43698 x = Math.min(x, hueRect.width);
43699 this.H = 1 - x / hueRect.width;
43700 slider.style.left = (x + sliderRect.width / 2) + 'px';
43701 this.update();
43702 }
43703 };
43704 AgColorPanel.prototype.moveAlphaSlider = function (e) {
43705 var alphaRect = this.spectrumAlphaRect;
43706 if (alphaRect) {
43707 var slider = this.spectrumAlphaSlider;
43708 var sliderRect = slider.getBoundingClientRect();
43709 var x = e.clientX - alphaRect.left;
43710 x = Math.max(x, 0);
43711 x = Math.min(x, alphaRect.width);
43712 this.A = x / alphaRect.width;
43713 slider.style.left = (x + sliderRect.width / 2) + 'px';
43714 this.update();
43715 }
43716 };
43717 AgColorPanel.prototype.update = function () {
43718 var color = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromHSB(this.H * 360, this.S, this.B, this.A);
43719 var spectrumColor = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromHSB(this.H * 360, 1, 1);
43720 var rgbaColor = color.toRgbaString();
43721 // the recent color list needs to know color has actually changed
43722 var colorPicker = this.picker;
43723 var existingColor = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromString(colorPicker.getValue());
43724 if (existingColor.toRgbaString() !== rgbaColor) {
43725 this.colorChanged = true;
43726 }
43727 colorPicker.setValue(rgbaColor);
43728 this.spectrumColor.style.backgroundColor = spectrumColor.toRgbaString();
43729 this.spectrumDragger.style.backgroundColor = rgbaColor;
43730 };
43731 /**
43732 * @param saturation In the [0, 1] interval.
43733 * @param brightness In the [0, 1] interval.
43734 */
43735 AgColorPanel.prototype.setSpectrumValue = function (saturation, brightness) {
43736 var valRect = this.spectrumValRect || this.refreshSpectrumRect();
43737 if (valRect) {
43738 var dragger = this.spectrumDragger;
43739 var draggerRect = dragger.getBoundingClientRect();
43740 saturation = Math.max(0, saturation);
43741 saturation = Math.min(1, saturation);
43742 brightness = Math.max(0, brightness);
43743 brightness = Math.min(1, brightness);
43744 this.S = saturation;
43745 this.B = brightness;
43746 dragger.style.left = (saturation * valRect.width - draggerRect.width / 2) + 'px';
43747 dragger.style.top = ((1 - brightness) * valRect.height - draggerRect.height / 2) + 'px';
43748 this.update();
43749 }
43750 };
43751 AgColorPanel.prototype.initRecentColors = function () {
43752 var recentColors = AgColorPanel.recentColors;
43753 var innerHtml = recentColors.map(function (color, index) {
43754 return "<div class=\"ag-recent-color\" id=" + index + " style=\"background-color: " + color + "; width: 15px; height: 15px;\" recent-color=\"" + color + "\"></div>";
43755 });
43756 this.recentColors.innerHTML = innerHtml.join('');
43757 };
43758 AgColorPanel.prototype.setValue = function (val) {
43759 var color = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromString(val);
43760 var _a = __read(color.toHSB(), 3), h = _a[0], s = _a[1], b = _a[2];
43761 this.H = (isNaN(h) ? 0 : h) / 360;
43762 this.A = color.a;
43763 var spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();
43764 var spectrumAlphaRect = this.spectrumAlphaRect || this.refreshAlphaRect();
43765 this.spectrumHueSlider.style.left = ((this.H - 1) * -spectrumHueRect.width) + "px";
43766 this.spectrumAlphaSlider.style.left = (this.A * spectrumAlphaRect.width) + "px";
43767 this.setSpectrumValue(s, b);
43768 };
43769 AgColorPanel.prototype.onRecentColorClick = function (e) {
43770 var target = e.target;
43771 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(target.id)) {
43772 return;
43773 }
43774 var id = parseInt(target.id, 10);
43775 this.setValue(AgColorPanel.recentColors[id]);
43776 this.destroy();
43777 };
43778 AgColorPanel.prototype.addRecentColor = function () {
43779 var color = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromHSB(this.H * 360, this.S, this.B, this.A);
43780 var rgbaColor = color.toRgbaString();
43781 var recentColors = AgColorPanel.recentColors;
43782 if (!this.colorChanged || recentColors[0] === rgbaColor) {
43783 return;
43784 }
43785 // remove duplicate color
43786 recentColors = recentColors.filter(function (currentColor) { return currentColor != rgbaColor; });
43787 // add color to head
43788 recentColors = [rgbaColor].concat(recentColors);
43789 // ensure we don't exceed max number of recent colors
43790 if (recentColors.length > AgColorPanel.maxRecentColors) {
43791 recentColors = recentColors.slice(0, AgColorPanel.maxRecentColors);
43792 }
43793 AgColorPanel.recentColors = recentColors;
43794 };
43795 AgColorPanel.prototype.destroy = function () {
43796 this.addRecentColor();
43797 _super.prototype.destroy.call(this);
43798 };
43799 AgColorPanel.maxRecentColors = 8;
43800 AgColorPanel.recentColors = [];
43801 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>";
43802 __decorate([
43803 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumColor')
43804 ], AgColorPanel.prototype, "spectrumColor", void 0);
43805 __decorate([
43806 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumVal')
43807 ], AgColorPanel.prototype, "spectrumVal", void 0);
43808 __decorate([
43809 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumDragger')
43810 ], AgColorPanel.prototype, "spectrumDragger", void 0);
43811 __decorate([
43812 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumHue')
43813 ], AgColorPanel.prototype, "spectrumHue", void 0);
43814 __decorate([
43815 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumHueSlider')
43816 ], AgColorPanel.prototype, "spectrumHueSlider", void 0);
43817 __decorate([
43818 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumAlpha')
43819 ], AgColorPanel.prototype, "spectrumAlpha", void 0);
43820 __decorate([
43821 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumAlphaSlider')
43822 ], AgColorPanel.prototype, "spectrumAlphaSlider", void 0);
43823 __decorate([
43824 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('recentColors')
43825 ], AgColorPanel.prototype, "recentColors", void 0);
43826 __decorate([
43827 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
43828 ], AgColorPanel.prototype, "postConstruct", null);
43829 return AgColorPanel;
43830}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
43831
43832
43833
43834
43835
43836/***/ }),
43837/* 197 */
43838/***/ (function(module, __webpack_exports__, __webpack_require__) {
43839
43840"use strict";
43841__webpack_require__.r(__webpack_exports__);
43842/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgDialog", function() { return AgDialog; });
43843/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
43844/* harmony import */ var _agPanel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(198);
43845/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36);
43846/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
43847/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48);
43848/**
43849 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43850 * @version v27.3.0
43851 * @link https://www.ag-grid.com/
43852 * @license MIT
43853 */
43854var __extends = (undefined && undefined.__extends) || (function () {
43855 var extendStatics = function (d, b) {
43856 extendStatics = Object.setPrototypeOf ||
43857 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43858 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43859 return extendStatics(d, b);
43860 };
43861 return function (d, b) {
43862 extendStatics(d, b);
43863 function __() { this.constructor = d; }
43864 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43865 };
43866})();
43867var __assign = (undefined && undefined.__assign) || function () {
43868 __assign = Object.assign || function(t) {
43869 for (var s, i = 1, n = arguments.length; i < n; i++) {
43870 s = arguments[i];
43871 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
43872 t[p] = s[p];
43873 }
43874 return t;
43875 };
43876 return __assign.apply(this, arguments);
43877};
43878var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
43879 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
43880 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43881 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;
43882 return c > 3 && r && Object.defineProperty(target, key, r), r;
43883};
43884
43885
43886
43887
43888
43889var AgDialog = /** @class */ (function (_super) {
43890 __extends(AgDialog, _super);
43891 function AgDialog(config) {
43892 var _this = _super.call(this, __assign(__assign({}, config), { popup: true })) || this;
43893 _this.isMaximizable = false;
43894 _this.isMaximized = false;
43895 _this.maximizeListeners = [];
43896 _this.resizeListenerDestroy = null;
43897 _this.lastPosition = {
43898 x: 0,
43899 y: 0,
43900 width: 0,
43901 height: 0
43902 };
43903 return _this;
43904 }
43905 AgDialog.prototype.postConstruct = function () {
43906 var _this = this;
43907 var eGui = this.getGui();
43908 var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;
43909 this.addCssClass('ag-dialog');
43910 _super.prototype.postConstruct.call(this);
43911 this.addManagedListener(eGui, 'focusin', function (e) {
43912 if (eGui.contains(e.relatedTarget)) {
43913 return;
43914 }
43915 _this.popupService.bringPopupToFront(eGui);
43916 });
43917 if (movable) {
43918 this.setMovable(movable);
43919 }
43920 if (maximizable) {
43921 this.setMaximizable(maximizable);
43922 }
43923 if (resizable) {
43924 this.setResizable(resizable);
43925 }
43926 };
43927 AgDialog.prototype.renderComponent = function () {
43928 var eGui = this.getGui();
43929 var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal, title = _a.title;
43930 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
43931 var addPopupRes = this.popupService.addPopup({
43932 modal: modal,
43933 eChild: eGui,
43934 closeOnEsc: true,
43935 closedCallback: this.destroy.bind(this),
43936 alwaysOnTop: alwaysOnTop,
43937 ariaLabel: title || translate('ariaLabelDialog', 'Dialog')
43938 });
43939 if (addPopupRes) {
43940 this.close = addPopupRes.hideFunc;
43941 }
43942 };
43943 AgDialog.prototype.toggleMaximize = function () {
43944 var position = this.positionableFeature.getPosition();
43945 if (this.isMaximized) {
43946 var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;
43947 this.setWidth(width);
43948 this.setHeight(height);
43949 this.positionableFeature.offsetElement(x, y);
43950 }
43951 else {
43952 this.lastPosition.width = this.getWidth();
43953 this.lastPosition.height = this.getHeight();
43954 this.lastPosition.x = position.x;
43955 this.lastPosition.y = position.y;
43956 this.positionableFeature.offsetElement(0, 0);
43957 this.setHeight('100%');
43958 this.setWidth('100%');
43959 }
43960 this.isMaximized = !this.isMaximized;
43961 this.refreshMaximizeIcon();
43962 };
43963 AgDialog.prototype.refreshMaximizeIcon = function () {
43964 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(this.maximizeIcon, !this.isMaximized);
43965 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(this.minimizeIcon, this.isMaximized);
43966 };
43967 AgDialog.prototype.clearMaximizebleListeners = function () {
43968 if (this.maximizeListeners.length) {
43969 this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });
43970 this.maximizeListeners.length = 0;
43971 }
43972 if (this.resizeListenerDestroy) {
43973 this.resizeListenerDestroy();
43974 this.resizeListenerDestroy = null;
43975 }
43976 };
43977 AgDialog.prototype.destroy = function () {
43978 this.maximizeButtonComp = this.destroyBean(this.maximizeButtonComp);
43979 this.clearMaximizebleListeners();
43980 _super.prototype.destroy.call(this);
43981 };
43982 AgDialog.prototype.setResizable = function (resizable) {
43983 this.positionableFeature.setResizable(resizable);
43984 };
43985 AgDialog.prototype.setMovable = function (movable) {
43986 this.positionableFeature.setMovable(movable, this.eTitleBar);
43987 };
43988 AgDialog.prototype.setMaximizable = function (maximizable) {
43989 var _this = this;
43990 if (!maximizable) {
43991 this.clearMaximizebleListeners();
43992 if (this.maximizeButtonComp) {
43993 this.destroyBean(this.maximizeButtonComp);
43994 this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;
43995 }
43996 return;
43997 }
43998 var eTitleBar = this.eTitleBar;
43999 if (!eTitleBar || maximizable === this.isMaximizable) {
44000 return;
44001 }
44002 var maximizeButtonComp = this.maximizeButtonComp =
44003 this.createBean(new _component__WEBPACK_IMPORTED_MODULE_2__["Component"](/* html */ "<div class=\"ag-dialog-button\"></span>"));
44004 var eGui = maximizeButtonComp.getGui();
44005 eGui.appendChild(this.maximizeIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])('maximize', this.gridOptionsWrapper));
44006 this.maximizeIcon.classList.add('ag-panel-title-bar-button-icon');
44007 eGui.appendChild(this.minimizeIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])('minimize', this.gridOptionsWrapper));
44008 this.minimizeIcon.classList.add('ag-panel-title-bar-button-icon', 'ag-hidden');
44009 maximizeButtonComp.addManagedListener(eGui, 'click', this.toggleMaximize.bind(this));
44010 this.addTitleBarButton(maximizeButtonComp, 0);
44011 this.maximizeListeners.push(this.addManagedListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));
44012 this.resizeListenerDestroy = this.addManagedListener(this, 'resize', function () {
44013 _this.isMaximized = false;
44014 _this.refreshMaximizeIcon();
44015 });
44016 };
44017 __decorate([
44018 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
44019 ], AgDialog.prototype, "popupService", void 0);
44020 return AgDialog;
44021}(_agPanel__WEBPACK_IMPORTED_MODULE_1__["AgPanel"]));
44022
44023
44024
44025
44026
44027/***/ }),
44028/* 198 */
44029/***/ (function(module, __webpack_exports__, __webpack_require__) {
44030
44031"use strict";
44032__webpack_require__.r(__webpack_exports__);
44033/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgPanel", function() { return AgPanel; });
44034/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
44035/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
44036/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36);
44037/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
44038/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48);
44039/* harmony import */ var _rendering_features_positionableFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(176);
44040/**
44041 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
44042 * @version v27.3.0
44043 * @link https://www.ag-grid.com/
44044 * @license MIT
44045 */
44046var __extends = (undefined && undefined.__extends) || (function () {
44047 var extendStatics = function (d, b) {
44048 extendStatics = Object.setPrototypeOf ||
44049 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44050 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44051 return extendStatics(d, b);
44052 };
44053 return function (d, b) {
44054 extendStatics(d, b);
44055 function __() { this.constructor = d; }
44056 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44057 };
44058})();
44059var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
44060 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44061 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
44062 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;
44063 return c > 3 && r && Object.defineProperty(target, key, r), r;
44064};
44065
44066
44067
44068
44069
44070
44071var AgPanel = /** @class */ (function (_super) {
44072 __extends(AgPanel, _super);
44073 function AgPanel(config) {
44074 var _this = _super.call(this, AgPanel.getTemplate(config)) || this;
44075 _this.closable = true;
44076 _this.config = config;
44077 return _this;
44078 }
44079 AgPanel.getTemplate = function (config) {
44080 var cssIdentifier = (config && config.cssIdentifier) || 'default';
44081 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>";
44082 };
44083 AgPanel.prototype.postConstruct = function () {
44084 var _this = this;
44085 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;
44086 this.positionableFeature = new _rendering_features_positionableFeature__WEBPACK_IMPORTED_MODULE_5__["PositionableFeature"](this.getGui(), {
44087 minWidth: minWidth, width: width, minHeight: minHeight, height: height, centered: centered, x: x, y: y, popup: popup,
44088 calculateTopBuffer: function () { return _this.positionableFeature.getHeight() - _this.getBodyHeight(); }
44089 });
44090 this.createManagedBean(this.positionableFeature);
44091 var eGui = this.getGui();
44092 if (component) {
44093 this.setBodyComponent(component);
44094 }
44095 if (!hideTitleBar) {
44096 if (title) {
44097 this.setTitle(title);
44098 }
44099 this.setClosable(closable != null ? closable : this.closable);
44100 }
44101 else {
44102 this.eTitleBar.classList.add('ag-hidden');
44103 }
44104 this.addManagedListener(this.eTitleBar, 'mousedown', function (e) {
44105 var eDocument = _this.gridOptionsWrapper.getDocument();
44106 if (eGui.contains(e.relatedTarget) ||
44107 eGui.contains(eDocument.activeElement) ||
44108 _this.eTitleBarButtons.contains(e.target)) {
44109 e.preventDefault();
44110 return;
44111 }
44112 var focusEl = _this.eContentWrapper.querySelector('button, [href], input, select, textarea, [tabindex]');
44113 if (focusEl) {
44114 focusEl.focus();
44115 }
44116 });
44117 if (popup && this.positionableFeature.isPositioned()) {
44118 return;
44119 }
44120 if (this.renderComponent) {
44121 this.renderComponent();
44122 }
44123 this.positionableFeature.initialisePosition();
44124 this.eContentWrapper.style.height = '0';
44125 };
44126 AgPanel.prototype.renderComponent = function () {
44127 var _this = this;
44128 var eGui = this.getGui();
44129 eGui.focus();
44130 this.close = function () {
44131 eGui.parentElement.removeChild(eGui);
44132 _this.destroy();
44133 };
44134 };
44135 AgPanel.prototype.getHeight = function () {
44136 return this.positionableFeature.getHeight();
44137 };
44138 AgPanel.prototype.setHeight = function (height) {
44139 this.positionableFeature.setHeight(height);
44140 };
44141 AgPanel.prototype.getWidth = function () {
44142 return this.positionableFeature.getWidth();
44143 };
44144 AgPanel.prototype.setWidth = function (width) {
44145 this.positionableFeature.setWidth(width);
44146 };
44147 AgPanel.prototype.setClosable = function (closable) {
44148 if (closable !== this.closable) {
44149 this.closable = closable;
44150 }
44151 if (closable) {
44152 var closeButtonComp = this.closeButtonComp = new _component__WEBPACK_IMPORTED_MODULE_2__["Component"](AgPanel.CLOSE_BTN_TEMPLATE);
44153 this.getContext().createBean(closeButtonComp);
44154 var eGui = closeButtonComp.getGui();
44155 var child = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])('close', this.gridOptionsWrapper);
44156 child.classList.add('ag-panel-title-bar-button-icon');
44157 eGui.appendChild(child);
44158 this.addTitleBarButton(closeButtonComp);
44159 closeButtonComp.addManagedListener(eGui, 'click', this.onBtClose.bind(this));
44160 }
44161 else if (this.closeButtonComp) {
44162 var eGui = this.closeButtonComp.getGui();
44163 eGui.parentElement.removeChild(eGui);
44164 this.closeButtonComp = this.destroyBean(this.closeButtonComp);
44165 }
44166 };
44167 AgPanel.prototype.setBodyComponent = function (bodyComponent) {
44168 bodyComponent.setParentComponent(this);
44169 this.eContentWrapper.appendChild(bodyComponent.getGui());
44170 };
44171 AgPanel.prototype.addTitleBarButton = function (button, position) {
44172 var eTitleBarButtons = this.eTitleBarButtons;
44173 var buttons = eTitleBarButtons.children;
44174 var len = buttons.length;
44175 if (position == null) {
44176 position = len;
44177 }
44178 position = Math.max(0, Math.min(position, len));
44179 button.addCssClass('ag-panel-title-bar-button');
44180 var eGui = button.getGui();
44181 if (position === 0) {
44182 eTitleBarButtons.insertAdjacentElement('afterbegin', eGui);
44183 }
44184 else if (position === len) {
44185 eTitleBarButtons.insertAdjacentElement('beforeend', eGui);
44186 }
44187 else {
44188 buttons[position - 1].insertAdjacentElement('afterend', eGui);
44189 }
44190 button.setParentComponent(this);
44191 };
44192 AgPanel.prototype.getBodyHeight = function () {
44193 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["getInnerHeight"])(this.eContentWrapper);
44194 };
44195 AgPanel.prototype.getBodyWidth = function () {
44196 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["getInnerWidth"])(this.eContentWrapper);
44197 };
44198 AgPanel.prototype.setTitle = function (title) {
44199 this.eTitle.innerText = title;
44200 };
44201 // called when user hits the 'x' in the top right
44202 AgPanel.prototype.onBtClose = function () {
44203 this.close();
44204 };
44205 AgPanel.prototype.destroy = function () {
44206 if (this.closeButtonComp) {
44207 this.closeButtonComp = this.destroyBean(this.closeButtonComp);
44208 }
44209 var eGui = this.getGui();
44210 if (eGui && eGui.offsetParent) {
44211 this.close();
44212 }
44213 _super.prototype.destroy.call(this);
44214 };
44215 AgPanel.CLOSE_BTN_TEMPLATE = "<div class=\"ag-button\"></div>";
44216 __decorate([
44217 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eContentWrapper')
44218 ], AgPanel.prototype, "eContentWrapper", void 0);
44219 __decorate([
44220 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eTitleBar')
44221 ], AgPanel.prototype, "eTitleBar", void 0);
44222 __decorate([
44223 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eTitleBarButtons')
44224 ], AgPanel.prototype, "eTitleBarButtons", void 0);
44225 __decorate([
44226 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eTitle')
44227 ], AgPanel.prototype, "eTitle", void 0);
44228 __decorate([
44229 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
44230 ], AgPanel.prototype, "postConstruct", null);
44231 return AgPanel;
44232}(_component__WEBPACK_IMPORTED_MODULE_2__["Component"]));
44233
44234
44235
44236
44237
44238/***/ }),
44239/* 199 */
44240/***/ (function(module, __webpack_exports__, __webpack_require__) {
44241
44242"use strict";
44243__webpack_require__.r(__webpack_exports__);
44244/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgGroupComponent", function() { return AgGroupComponent; });
44245/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
44246/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
44247/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
44248/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);
44249/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
44250/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65);
44251/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
44252/**
44253 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
44254 * @version v27.3.0
44255 * @link https://www.ag-grid.com/
44256 * @license MIT
44257 */
44258var __extends = (undefined && undefined.__extends) || (function () {
44259 var extendStatics = function (d, b) {
44260 extendStatics = Object.setPrototypeOf ||
44261 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44262 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44263 return extendStatics(d, b);
44264 };
44265 return function (d, b) {
44266 extendStatics(d, b);
44267 function __() { this.constructor = d; }
44268 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44269 };
44270})();
44271var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
44272 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44273 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
44274 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;
44275 return c > 3 && r && Object.defineProperty(target, key, r), r;
44276};
44277
44278
44279
44280
44281
44282
44283
44284var AgGroupComponent = /** @class */ (function (_super) {
44285 __extends(AgGroupComponent, _super);
44286 function AgGroupComponent(params) {
44287 if (params === void 0) { params = {}; }
44288 var _this = _super.call(this, AgGroupComponent.getTemplate(params)) || this;
44289 _this.suppressEnabledCheckbox = true;
44290 _this.suppressOpenCloseIcons = false;
44291 var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;
44292 _this.title = title;
44293 _this.cssIdentifier = params.cssIdentifier || 'default';
44294 _this.enabled = enabled != null ? enabled : true;
44295 _this.items = items || [];
44296 _this.alignItems = params.alignItems || 'center';
44297 if (suppressEnabledCheckbox != null) {
44298 _this.suppressEnabledCheckbox = suppressEnabledCheckbox;
44299 }
44300 if (suppressOpenCloseIcons != null) {
44301 _this.suppressOpenCloseIcons = suppressOpenCloseIcons;
44302 }
44303 return _this;
44304 }
44305 AgGroupComponent.getTemplate = function (params) {
44306 var cssIdentifier = params.cssIdentifier || 'default';
44307 var direction = params.direction || 'vertical';
44308 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>";
44309 };
44310 AgGroupComponent.prototype.postConstruct = function () {
44311 if (this.items.length) {
44312 var initialItems = this.items;
44313 this.items = [];
44314 this.addItems(initialItems);
44315 }
44316 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
44317 this.cbGroupEnabled.setLabel(localeTextFunc('enabled', 'Enabled'));
44318 if (this.title) {
44319 this.setTitle(this.title);
44320 }
44321 if (this.enabled) {
44322 this.setEnabled(this.enabled);
44323 }
44324 this.setAlignItems(this.alignItems);
44325 this.hideEnabledCheckbox(this.suppressEnabledCheckbox);
44326 this.hideOpenCloseIcons(this.suppressOpenCloseIcons);
44327 this.setupExpandContract();
44328 this.refreshAriaStatus();
44329 this.refreshChildDisplay();
44330 };
44331 AgGroupComponent.prototype.setupExpandContract = function () {
44332 var _this = this;
44333 this.eGroupClosedIcon.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnSelectClosed', this.gridOptionsWrapper, null));
44334 this.eGroupOpenedIcon.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnSelectOpen', this.gridOptionsWrapper, null));
44335 this.addManagedListener(this.eTitleBar, 'click', function () { return _this.toggleGroupExpand(); });
44336 this.addManagedListener(this.eTitleBar, 'keydown', function (e) {
44337 switch (e.key) {
44338 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].ENTER:
44339 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].SPACE:
44340 e.preventDefault();
44341 _this.toggleGroupExpand();
44342 break;
44343 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT:
44344 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].LEFT:
44345 e.preventDefault();
44346 _this.toggleGroupExpand(e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT);
44347 break;
44348 }
44349 });
44350 };
44351 AgGroupComponent.prototype.refreshAriaStatus = function () {
44352 if (!this.suppressOpenCloseIcons) {
44353 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["setAriaExpanded"])(this.eTitleBar, this.expanded);
44354 }
44355 };
44356 AgGroupComponent.prototype.refreshChildDisplay = function () {
44357 var showIcon = !this.suppressOpenCloseIcons;
44358 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eToolbar, this.expanded && !this.suppressEnabledCheckbox);
44359 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eGroupOpenedIcon, showIcon && this.expanded);
44360 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eGroupClosedIcon, showIcon && !this.expanded);
44361 };
44362 AgGroupComponent.prototype.isExpanded = function () {
44363 return this.expanded;
44364 };
44365 AgGroupComponent.prototype.setAlignItems = function (alignment) {
44366 if (this.alignItems !== alignment) {
44367 this.removeCssClass("ag-group-item-alignment-" + this.alignItems);
44368 }
44369 this.alignItems = alignment;
44370 var newCls = "ag-group-item-alignment-" + this.alignItems;
44371 this.addCssClass(newCls);
44372 return this;
44373 };
44374 AgGroupComponent.prototype.toggleGroupExpand = function (expanded) {
44375 if (this.suppressOpenCloseIcons) {
44376 this.expanded = true;
44377 this.refreshChildDisplay();
44378 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eContainer, true);
44379 return this;
44380 }
44381 expanded = expanded != null ? expanded : !this.expanded;
44382 if (this.expanded === expanded) {
44383 return this;
44384 }
44385 this.expanded = expanded;
44386 this.refreshAriaStatus();
44387 this.refreshChildDisplay();
44388 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eContainer, expanded);
44389 this.dispatchEvent({ type: this.expanded ? AgGroupComponent.EVENT_EXPANDED : AgGroupComponent.EVENT_COLLAPSED });
44390 return this;
44391 };
44392 AgGroupComponent.prototype.addItems = function (items) {
44393 var _this = this;
44394 items.forEach(function (item) { return _this.addItem(item); });
44395 };
44396 AgGroupComponent.prototype.addItem = function (item) {
44397 var container = this.eContainer;
44398 var el = item instanceof _component__WEBPACK_IMPORTED_MODULE_0__["Component"] ? item.getGui() : item;
44399 el.classList.add('ag-group-item', "ag-" + this.cssIdentifier + "-group-item");
44400 container.appendChild(el);
44401 this.items.push(el);
44402 };
44403 AgGroupComponent.prototype.hideItem = function (hide, index) {
44404 var itemToHide = this.items[index];
44405 itemToHide.classList.toggle('ag-hidden', hide);
44406 };
44407 AgGroupComponent.prototype.setTitle = function (title) {
44408 this.eTitle.innerText = title;
44409 return this;
44410 };
44411 AgGroupComponent.prototype.addCssClassToTitleBar = function (cssClass) {
44412 this.eTitleBar.classList.add(cssClass);
44413 };
44414 AgGroupComponent.prototype.setEnabled = function (enabled, skipToggle) {
44415 this.enabled = enabled;
44416 this.refreshDisabledStyles();
44417 this.toggleGroupExpand(enabled);
44418 if (!skipToggle) {
44419 this.cbGroupEnabled.setValue(enabled);
44420 }
44421 return this;
44422 };
44423 AgGroupComponent.prototype.isEnabled = function () {
44424 return this.enabled;
44425 };
44426 AgGroupComponent.prototype.onEnableChange = function (callbackFn) {
44427 var _this = this;
44428 this.cbGroupEnabled.onValueChange(function (newSelection) {
44429 _this.setEnabled(newSelection, true);
44430 callbackFn(newSelection);
44431 });
44432 return this;
44433 };
44434 AgGroupComponent.prototype.hideEnabledCheckbox = function (hide) {
44435 this.suppressEnabledCheckbox = hide;
44436 this.refreshChildDisplay();
44437 this.refreshDisabledStyles();
44438 return this;
44439 };
44440 AgGroupComponent.prototype.hideOpenCloseIcons = function (hide) {
44441 this.suppressOpenCloseIcons = hide;
44442 if (hide) {
44443 this.toggleGroupExpand(true);
44444 }
44445 return this;
44446 };
44447 AgGroupComponent.prototype.refreshDisabledStyles = function () {
44448 this.addOrRemoveCssClass('ag-disabled', !this.enabled);
44449 if (this.suppressEnabledCheckbox && !this.enabled) {
44450 this.eTitleBar.classList.add('ag-disabled-group-title-bar');
44451 this.eTitleBar.removeAttribute('tabindex');
44452 }
44453 else {
44454 this.eTitleBar.classList.remove('ag-disabled-group-title-bar');
44455 this.eTitleBar.setAttribute('tabindex', '0');
44456 }
44457 this.eContainer.classList.toggle('ag-disabled-group-container', !this.enabled);
44458 };
44459 AgGroupComponent.EVENT_EXPANDED = 'expanded';
44460 AgGroupComponent.EVENT_COLLAPSED = 'collapsed';
44461 __decorate([
44462 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eTitleBar')
44463 ], AgGroupComponent.prototype, "eTitleBar", void 0);
44464 __decorate([
44465 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eGroupOpenedIcon')
44466 ], AgGroupComponent.prototype, "eGroupOpenedIcon", void 0);
44467 __decorate([
44468 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eGroupClosedIcon')
44469 ], AgGroupComponent.prototype, "eGroupClosedIcon", void 0);
44470 __decorate([
44471 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eToolbar')
44472 ], AgGroupComponent.prototype, "eToolbar", void 0);
44473 __decorate([
44474 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('cbGroupEnabled')
44475 ], AgGroupComponent.prototype, "cbGroupEnabled", void 0);
44476 __decorate([
44477 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eTitle')
44478 ], AgGroupComponent.prototype, "eTitle", void 0);
44479 __decorate([
44480 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eContainer')
44481 ], AgGroupComponent.prototype, "eContainer", void 0);
44482 __decorate([
44483 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
44484 ], AgGroupComponent.prototype, "postConstruct", null);
44485 return AgGroupComponent;
44486}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
44487
44488
44489
44490
44491
44492/***/ }),
44493/* 200 */
44494/***/ (function(module, __webpack_exports__, __webpack_require__) {
44495
44496"use strict";
44497__webpack_require__.r(__webpack_exports__);
44498/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgMenuItemComponent", function() { return AgMenuItemComponent; });
44499/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
44500/* harmony import */ var _agMenuList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(201);
44501/* harmony import */ var _agMenuPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(204);
44502/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36);
44503/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
44504/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(48);
44505/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
44506/* harmony import */ var _customTooltipFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(56);
44507/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44);
44508/**
44509 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
44510 * @version v27.3.0
44511 * @link https://www.ag-grid.com/
44512 * @license MIT
44513 */
44514var __extends = (undefined && undefined.__extends) || (function () {
44515 var extendStatics = function (d, b) {
44516 extendStatics = Object.setPrototypeOf ||
44517 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44518 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44519 return extendStatics(d, b);
44520 };
44521 return function (d, b) {
44522 extendStatics(d, b);
44523 function __() { this.constructor = d; }
44524 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44525 };
44526})();
44527var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
44528 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44529 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
44530 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;
44531 return c > 3 && r && Object.defineProperty(target, key, r), r;
44532};
44533
44534
44535
44536
44537
44538
44539
44540
44541
44542
44543var AgMenuItemComponent = /** @class */ (function (_super) {
44544 __extends(AgMenuItemComponent, _super);
44545 function AgMenuItemComponent(params) {
44546 var _this = _super.call(this) || this;
44547 _this.params = params;
44548 _this.isActive = false;
44549 _this.subMenuIsOpen = false;
44550 _this.setTemplate(/* html */ "<div class=\"" + _this.getClassName() + "\" tabindex=\"-1\" role=\"treeitem\"></div>");
44551 return _this;
44552 }
44553 AgMenuItemComponent.prototype.init = function () {
44554 var _this = this;
44555 this.addIcon();
44556 this.addName();
44557 this.addShortcut();
44558 this.addSubMenu();
44559 this.addTooltip();
44560 var eGui = this.getGui();
44561 if (this.params.disabled) {
44562 this.addCssClass(this.getClassName('disabled'));
44563 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaDisabled"])(eGui, true);
44564 }
44565 else {
44566 this.addGuiEventListener('click', function (e) { return _this.onItemSelected(e); });
44567 this.addGuiEventListener('keydown', function (e) {
44568 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].ENTER || e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].SPACE) {
44569 e.preventDefault();
44570 _this.onItemSelected(e);
44571 }
44572 });
44573 this.addGuiEventListener('mousedown', function (e) {
44574 // Prevent event bubbling to other event handlers such as PopupService triggering
44575 // premature closing of any open sub-menu popup.
44576 e.stopPropagation();
44577 e.preventDefault();
44578 });
44579 this.addGuiEventListener('mouseenter', function () { return _this.onMouseEnter(); });
44580 this.addGuiEventListener('mouseleave', function () { return _this.onMouseLeave(); });
44581 }
44582 if (this.params.cssClasses) {
44583 this.params.cssClasses.forEach(function (it) { return _this.addCssClass(it); });
44584 }
44585 };
44586 AgMenuItemComponent.prototype.isDisabled = function () {
44587 return !!this.params.disabled;
44588 };
44589 AgMenuItemComponent.prototype.openSubMenu = function (activateFirstItem) {
44590 var _this = this;
44591 if (activateFirstItem === void 0) { activateFirstItem = false; }
44592 this.closeSubMenu();
44593 if (!this.params.subMenu) {
44594 return;
44595 }
44596 var ePopup = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(/* html */ "<div class=\"ag-menu\" role=\"presentation\"></div>");
44597 var destroySubMenu;
44598 if (this.params.subMenu instanceof Array) {
44599 var currentLevel = Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["getAriaLevel"])(this.getGui());
44600 var nextLevel = isNaN(currentLevel) ? 1 : (currentLevel + 1);
44601 var childMenu_1 = this.createBean(new _agMenuList__WEBPACK_IMPORTED_MODULE_1__["AgMenuList"](nextLevel));
44602 childMenu_1.setParentComponent(this);
44603 childMenu_1.addMenuItems(this.params.subMenu);
44604 ePopup.appendChild(childMenu_1.getGui());
44605 // bubble menu item selected events
44606 this.addManagedListener(childMenu_1, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });
44607 childMenu_1.addGuiEventListener('mouseenter', function () { return _this.cancelDeactivate(); });
44608 destroySubMenu = function () { return _this.destroyBean(childMenu_1); };
44609 if (activateFirstItem) {
44610 setTimeout(function () { return childMenu_1.activateFirstItem(); }, 0);
44611 }
44612 }
44613 else {
44614 var subMenu_1 = this.params.subMenu;
44615 var menuPanel = this.createBean(new _agMenuPanel__WEBPACK_IMPORTED_MODULE_2__["AgMenuPanel"](subMenu_1));
44616 menuPanel.setParentComponent(this);
44617 var subMenuGui_1 = menuPanel.getGui();
44618 var mouseEvent_1 = 'mouseenter';
44619 var mouseEnterListener_1 = function () { return _this.cancelDeactivate(); };
44620 subMenuGui_1.addEventListener(mouseEvent_1, mouseEnterListener_1);
44621 destroySubMenu = function () { return subMenuGui_1.removeEventListener(mouseEvent_1, mouseEnterListener_1); };
44622 ePopup.appendChild(subMenuGui_1);
44623 if (subMenu_1.afterGuiAttached) {
44624 setTimeout(function () { return subMenu_1.afterGuiAttached(); }, 0);
44625 }
44626 }
44627 var eGui = this.getGui();
44628 var positionCallback = this.popupService.positionPopupForMenu.bind(this.popupService, { eventSource: eGui, ePopup: ePopup });
44629 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
44630 var addPopupRes = this.popupService.addPopup({
44631 modal: true,
44632 eChild: ePopup,
44633 positionCallback: positionCallback,
44634 anchorToElement: eGui,
44635 ariaLabel: translate('ariaLabelSubMenu', 'SubMenu')
44636 });
44637 this.subMenuIsOpen = true;
44638 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaExpanded"])(eGui, true);
44639 this.hideSubMenu = function () {
44640 if (addPopupRes) {
44641 addPopupRes.hideFunc();
44642 }
44643 _this.subMenuIsOpen = false;
44644 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaExpanded"])(eGui, false);
44645 destroySubMenu();
44646 };
44647 };
44648 AgMenuItemComponent.prototype.closeSubMenu = function () {
44649 if (!this.hideSubMenu) {
44650 return;
44651 }
44652 this.hideSubMenu();
44653 this.hideSubMenu = null;
44654 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaExpanded"])(this.getGui(), false);
44655 };
44656 AgMenuItemComponent.prototype.isSubMenuOpen = function () {
44657 return this.subMenuIsOpen;
44658 };
44659 AgMenuItemComponent.prototype.activate = function (openSubMenu) {
44660 var _this = this;
44661 this.cancelActivate();
44662 if (this.params.disabled) {
44663 return;
44664 }
44665 this.isActive = true;
44666 this.addCssClass(this.getClassName('active'));
44667 this.getGui().focus();
44668 if (openSubMenu && this.params.subMenu) {
44669 window.setTimeout(function () {
44670 if (_this.isAlive() && _this.isActive) {
44671 _this.openSubMenu();
44672 }
44673 }, 300);
44674 }
44675 this.onItemActivated();
44676 };
44677 AgMenuItemComponent.prototype.deactivate = function () {
44678 this.cancelDeactivate();
44679 this.removeCssClass(this.getClassName('active'));
44680 this.isActive = false;
44681 if (this.subMenuIsOpen) {
44682 this.hideSubMenu();
44683 }
44684 };
44685 AgMenuItemComponent.prototype.addIcon = function () {
44686 if (!this.params.checked && !this.params.icon && this.params.isCompact) {
44687 return;
44688 }
44689 var icon = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(/* html */ "<span ref=\"eIcon\" class=\"" + this.getClassName('part') + " " + this.getClassName('icon') + "\" role=\"presentation\"></span>");
44690 if (this.params.checked) {
44691 icon.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_5__["createIconNoSpan"])('check', this.gridOptionsWrapper));
44692 }
44693 else if (this.params.icon) {
44694 if (Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["isNodeOrElement"])(this.params.icon)) {
44695 icon.appendChild(this.params.icon);
44696 }
44697 else if (typeof this.params.icon === 'string') {
44698 icon.innerHTML = this.params.icon;
44699 }
44700 else {
44701 console.warn('AG Grid: menu item icon must be DOM node or string');
44702 }
44703 }
44704 this.getGui().appendChild(icon);
44705 };
44706 AgMenuItemComponent.prototype.addName = function () {
44707 if (!this.params.name && this.params.isCompact) {
44708 return;
44709 }
44710 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>");
44711 this.getGui().appendChild(name);
44712 };
44713 AgMenuItemComponent.prototype.addTooltip = function () {
44714 if (!this.params.tooltip) {
44715 return;
44716 }
44717 this.tooltip = this.params.tooltip;
44718 if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {
44719 this.getGui().setAttribute('title', this.tooltip);
44720 }
44721 else {
44722 this.createManagedBean(new _customTooltipFeature__WEBPACK_IMPORTED_MODULE_7__["CustomTooltipFeature"](this));
44723 }
44724 };
44725 AgMenuItemComponent.prototype.getTooltipParams = function () {
44726 return {
44727 location: 'menu',
44728 value: this.tooltip
44729 };
44730 };
44731 AgMenuItemComponent.prototype.addShortcut = function () {
44732 if (!this.params.shortcut && this.params.isCompact) {
44733 return;
44734 }
44735 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>");
44736 this.getGui().appendChild(shortcut);
44737 };
44738 AgMenuItemComponent.prototype.addSubMenu = function () {
44739 if (!this.params.subMenu && this.params.isCompact) {
44740 return;
44741 }
44742 var pointer = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(/* html */ "<span ref=\"ePopupPointer\" class=\"" + this.getClassName('part') + " " + this.getClassName('popup-pointer') + "\"></span>");
44743 var eGui = this.getGui();
44744 if (this.params.subMenu) {
44745 var iconName = this.gridOptionsWrapper.isEnableRtl() ? 'smallLeft' : 'smallRight';
44746 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaExpanded"])(eGui, false);
44747 pointer.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_5__["createIconNoSpan"])(iconName, this.gridOptionsWrapper));
44748 }
44749 eGui.appendChild(pointer);
44750 };
44751 AgMenuItemComponent.prototype.onItemSelected = function (event) {
44752 if (this.params.action) {
44753 this.params.action();
44754 }
44755 else {
44756 this.openSubMenu(event && event.type === 'keydown');
44757 }
44758 if (this.params.subMenu && !this.params.action) {
44759 return;
44760 }
44761 var e = {
44762 type: AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED,
44763 action: this.params.action,
44764 checked: this.params.checked,
44765 cssClasses: this.params.cssClasses,
44766 disabled: this.params.disabled,
44767 icon: this.params.icon,
44768 name: this.params.name,
44769 shortcut: this.params.shortcut,
44770 subMenu: this.params.subMenu,
44771 tooltip: this.params.tooltip,
44772 event: event
44773 };
44774 this.dispatchEvent(e);
44775 };
44776 AgMenuItemComponent.prototype.onItemActivated = function () {
44777 var event = {
44778 type: AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED,
44779 menuItem: this,
44780 };
44781 this.dispatchEvent(event);
44782 };
44783 AgMenuItemComponent.prototype.cancelActivate = function () {
44784 if (this.activateTimeoutId) {
44785 window.clearTimeout(this.activateTimeoutId);
44786 this.activateTimeoutId = 0;
44787 }
44788 };
44789 AgMenuItemComponent.prototype.cancelDeactivate = function () {
44790 if (this.deactivateTimeoutId) {
44791 window.clearTimeout(this.deactivateTimeoutId);
44792 this.deactivateTimeoutId = 0;
44793 }
44794 };
44795 AgMenuItemComponent.prototype.onMouseEnter = function () {
44796 var _this = this;
44797 this.cancelDeactivate();
44798 if (this.params.isAnotherSubMenuOpen()) {
44799 // wait to see if the user enters the open sub-menu
44800 this.activateTimeoutId = window.setTimeout(function () { return _this.activate(true); }, AgMenuItemComponent.ACTIVATION_DELAY);
44801 }
44802 else {
44803 // activate immediately
44804 this.activate(true);
44805 }
44806 };
44807 AgMenuItemComponent.prototype.onMouseLeave = function () {
44808 var _this = this;
44809 this.cancelActivate();
44810 if (this.isSubMenuOpen()) {
44811 // wait to see if the user enters the sub-menu
44812 this.deactivateTimeoutId = window.setTimeout(function () { return _this.deactivate(); }, AgMenuItemComponent.ACTIVATION_DELAY);
44813 }
44814 else {
44815 // de-activate immediately
44816 this.deactivate();
44817 }
44818 };
44819 AgMenuItemComponent.prototype.getClassName = function (suffix) {
44820 var prefix = this.params.isCompact ? 'ag-compact-menu-option' : 'ag-menu-option';
44821 return suffix ? prefix + "-" + suffix : prefix;
44822 };
44823 AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED = 'menuItemSelected';
44824 AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED = 'menuItemActivated';
44825 AgMenuItemComponent.ACTIVATION_DELAY = 80;
44826 __decorate([
44827 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
44828 ], AgMenuItemComponent.prototype, "popupService", void 0);
44829 __decorate([
44830 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
44831 ], AgMenuItemComponent.prototype, "init", null);
44832 return AgMenuItemComponent;
44833}(_component__WEBPACK_IMPORTED_MODULE_3__["Component"]));
44834
44835
44836
44837
44838
44839/***/ }),
44840/* 201 */
44841/***/ (function(module, __webpack_exports__, __webpack_require__) {
44842
44843"use strict";
44844__webpack_require__.r(__webpack_exports__);
44845/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgMenuList", function() { return AgMenuList; });
44846/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
44847/* harmony import */ var _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(200);
44848/* harmony import */ var _tabGuardComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(202);
44849/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65);
44850/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
44851/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18);
44852/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
44853/**
44854 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
44855 * @version v27.3.0
44856 * @link https://www.ag-grid.com/
44857 * @license MIT
44858 */
44859var __extends = (undefined && undefined.__extends) || (function () {
44860 var extendStatics = function (d, b) {
44861 extendStatics = Object.setPrototypeOf ||
44862 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44863 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44864 return extendStatics(d, b);
44865 };
44866 return function (d, b) {
44867 extendStatics(d, b);
44868 function __() { this.constructor = d; }
44869 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44870 };
44871})();
44872var __assign = (undefined && undefined.__assign) || function () {
44873 __assign = Object.assign || function(t) {
44874 for (var s, i = 1, n = arguments.length; i < n; i++) {
44875 s = arguments[i];
44876 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
44877 t[p] = s[p];
44878 }
44879 return t;
44880 };
44881 return __assign.apply(this, arguments);
44882};
44883var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
44884 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44885 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
44886 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;
44887 return c > 3 && r && Object.defineProperty(target, key, r), r;
44888};
44889
44890
44891
44892
44893
44894
44895
44896var AgMenuList = /** @class */ (function (_super) {
44897 __extends(AgMenuList, _super);
44898 function AgMenuList(level) {
44899 if (level === void 0) { level = 1; }
44900 var _this = _super.call(this, /* html */ "<div class=\"ag-menu-list\" role=\"tree\"></div>") || this;
44901 _this.level = level;
44902 _this.menuItems = [];
44903 return _this;
44904 }
44905 AgMenuList.prototype.postConstruct = function () {
44906 var _this = this;
44907 this.initialiseTabGuard({
44908 onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },
44909 handleKeyDown: function (e) { return _this.handleKeyDown(e); }
44910 });
44911 };
44912 AgMenuList.prototype.onTabKeyDown = function (e) {
44913 var parent = this.getParentComponent();
44914 var parentGui = parent && parent.getGui();
44915 var isManaged = parentGui && parentGui.classList.contains('ag-focus-managed');
44916 if (!isManaged) {
44917 e.preventDefault();
44918 }
44919 if (e.shiftKey) {
44920 this.closeIfIsChild(e);
44921 }
44922 };
44923 AgMenuList.prototype.handleKeyDown = function (e) {
44924 switch (e.key) {
44925 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP:
44926 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].RIGHT:
44927 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].DOWN:
44928 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].LEFT:
44929 e.preventDefault();
44930 this.handleNavKey(e.key);
44931 break;
44932 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].ESCAPE:
44933 var topMenu = this.findTopMenu();
44934 if (topMenu) {
44935 this.focusService.focusInto(topMenu.getGui());
44936 }
44937 break;
44938 }
44939 };
44940 AgMenuList.prototype.clearActiveItem = function () {
44941 if (this.activeMenuItem) {
44942 this.activeMenuItem.deactivate();
44943 this.activeMenuItem = null;
44944 }
44945 };
44946 AgMenuList.prototype.addMenuItems = function (menuItems) {
44947 var _this = this;
44948 if (menuItems == null) {
44949 return;
44950 }
44951 menuItems.forEach(function (menuItemOrString) {
44952 if (menuItemOrString === 'separator') {
44953 _this.addSeparator();
44954 }
44955 else if (typeof menuItemOrString === 'string') {
44956 console.warn("AG Grid: unrecognised menu item " + menuItemOrString);
44957 }
44958 else {
44959 _this.addItem(menuItemOrString);
44960 }
44961 });
44962 };
44963 AgMenuList.prototype.addItem = function (menuItemDef) {
44964 var _this = this;
44965 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(); }); } })));
44966 menuItem.setParentComponent(this);
44967 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["setAriaLevel"])(menuItem.getGui(), this.level);
44968 this.menuItems.push(menuItem);
44969 this.appendChild(menuItem.getGui());
44970 this.addManagedListener(menuItem, _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"].EVENT_MENU_ITEM_SELECTED, function (event) {
44971 _this.dispatchEvent(event);
44972 });
44973 this.addManagedListener(menuItem, _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"].EVENT_MENU_ITEM_ACTIVATED, function (event) {
44974 if (_this.activeMenuItem && _this.activeMenuItem !== event.menuItem) {
44975 _this.activeMenuItem.deactivate();
44976 }
44977 _this.activeMenuItem = event.menuItem;
44978 });
44979 };
44980 AgMenuList.prototype.activateFirstItem = function () {
44981 var item = this.menuItems.filter(function (currentItem) { return !currentItem.isDisabled(); })[0];
44982 if (!item) {
44983 return;
44984 }
44985 item.activate();
44986 };
44987 AgMenuList.prototype.addSeparator = function () {
44988 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>";
44989 this.appendChild(Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["loadTemplate"])(separatorHtml));
44990 };
44991 AgMenuList.prototype.findTopMenu = function () {
44992 var parent = this.getParentComponent();
44993 if (!parent && this instanceof AgMenuList) {
44994 return this;
44995 }
44996 while (true) {
44997 var nextParent = parent && parent.getParentComponent && parent.getParentComponent();
44998 if (!nextParent || (!(nextParent instanceof AgMenuList || nextParent instanceof _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"]))) {
44999 break;
45000 }
45001 parent = nextParent;
45002 }
45003 return parent instanceof AgMenuList ? parent : undefined;
45004 };
45005 AgMenuList.prototype.handleNavKey = function (key) {
45006 switch (key) {
45007 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP:
45008 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].DOWN:
45009 var nextItem = this.findNextItem(key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP);
45010 if (nextItem && nextItem !== this.activeMenuItem) {
45011 nextItem.activate();
45012 }
45013 return;
45014 }
45015 var left = this.gridOptionsWrapper.isEnableRtl() ? _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].RIGHT : _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].LEFT;
45016 if (key === left) {
45017 this.closeIfIsChild();
45018 }
45019 else {
45020 this.openChild();
45021 }
45022 };
45023 AgMenuList.prototype.closeIfIsChild = function (e) {
45024 var parentItem = this.getParentComponent();
45025 if (parentItem && parentItem instanceof _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"]) {
45026 if (e) {
45027 e.preventDefault();
45028 }
45029 parentItem.closeSubMenu();
45030 parentItem.getGui().focus();
45031 }
45032 };
45033 AgMenuList.prototype.openChild = function () {
45034 if (this.activeMenuItem) {
45035 this.activeMenuItem.openSubMenu(true);
45036 }
45037 };
45038 AgMenuList.prototype.findNextItem = function (up) {
45039 var items = this.menuItems.filter(function (item) { return !item.isDisabled(); });
45040 if (!items.length) {
45041 return;
45042 }
45043 if (!this.activeMenuItem) {
45044 return up ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_5__["last"])(items) : items[0];
45045 }
45046 if (up) {
45047 items.reverse();
45048 }
45049 var nextItem;
45050 var foundCurrent = false;
45051 for (var i = 0; i < items.length; i++) {
45052 var item = items[i];
45053 if (!foundCurrent) {
45054 if (item === this.activeMenuItem) {
45055 foundCurrent = true;
45056 }
45057 continue;
45058 }
45059 nextItem = item;
45060 break;
45061 }
45062 return nextItem || this.activeMenuItem;
45063 };
45064 AgMenuList.prototype.destroy = function () {
45065 this.clearActiveItem();
45066 _super.prototype.destroy.call(this);
45067 };
45068 __decorate([
45069 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
45070 ], AgMenuList.prototype, "focusService", void 0);
45071 __decorate([
45072 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
45073 ], AgMenuList.prototype, "postConstruct", null);
45074 return AgMenuList;
45075}(_tabGuardComp__WEBPACK_IMPORTED_MODULE_2__["TabGuardComp"]));
45076
45077
45078
45079
45080
45081/***/ }),
45082/* 202 */
45083/***/ (function(module, __webpack_exports__, __webpack_require__) {
45084
45085"use strict";
45086__webpack_require__.r(__webpack_exports__);
45087/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabGuardComp", function() { return TabGuardComp; });
45088/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
45089/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
45090/* harmony import */ var _tabGuardCtrl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(203);
45091/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
45092/**
45093 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
45094 * @version v27.3.0
45095 * @link https://www.ag-grid.com/
45096 * @license MIT
45097 */
45098var __extends = (undefined && undefined.__extends) || (function () {
45099 var extendStatics = function (d, b) {
45100 extendStatics = Object.setPrototypeOf ||
45101 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45102 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45103 return extendStatics(d, b);
45104 };
45105 return function (d, b) {
45106 extendStatics(d, b);
45107 function __() { this.constructor = d; }
45108 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45109 };
45110})();
45111var __read = (undefined && undefined.__read) || function (o, n) {
45112 var m = typeof Symbol === "function" && o[Symbol.iterator];
45113 if (!m) return o;
45114 var i = m.call(o), r, ar = [], e;
45115 try {
45116 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
45117 }
45118 catch (error) { e = { error: error }; }
45119 finally {
45120 try {
45121 if (r && !r.done && (m = i["return"])) m.call(i);
45122 }
45123 finally { if (e) throw e.error; }
45124 }
45125 return ar;
45126};
45127var __spread = (undefined && undefined.__spread) || function () {
45128 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
45129 return ar;
45130};
45131
45132
45133
45134
45135var TabGuardComp = /** @class */ (function (_super) {
45136 __extends(TabGuardComp, _super);
45137 function TabGuardComp() {
45138 return _super !== null && _super.apply(this, arguments) || this;
45139 }
45140 TabGuardComp.prototype.initialiseTabGuard = function (params) {
45141 this.eTopGuard = this.createTabGuard('top');
45142 this.eBottomGuard = this.createTabGuard('bottom');
45143 this.eFocusableElement = this.getFocusableElement();
45144 var tabGuards = [this.eTopGuard, this.eBottomGuard];
45145 var compProxy = {
45146 setTabIndex: function (tabIndex) {
45147 tabGuards.forEach(function (tabGuard) { return tabIndex != null ? tabGuard.setAttribute('tabIndex', tabIndex) : tabGuard.removeAttribute('tabIndex'); });
45148 }
45149 };
45150 this.addTabGuards(this.eTopGuard, this.eBottomGuard);
45151 this.tabGuardCtrl = this.createManagedBean(new _tabGuardCtrl__WEBPACK_IMPORTED_MODULE_2__["TabGuardCtrl"]({
45152 comp: compProxy,
45153 eTopGuard: this.eTopGuard,
45154 eBottomGuard: this.eBottomGuard,
45155 eFocusableElement: this.eFocusableElement,
45156 onFocusIn: params.onFocusIn,
45157 onFocusOut: params.onFocusOut,
45158 focusInnerElement: params.focusInnerElement,
45159 handleKeyDown: params.handleKeyDown,
45160 onTabKeyDown: params.onTabKeyDown,
45161 shouldStopEventPropagation: params.shouldStopEventPropagation
45162 }));
45163 };
45164 TabGuardComp.prototype.createTabGuard = function (side) {
45165 var tabGuard = document.createElement('div');
45166 tabGuard.classList.add('ag-tab-guard', "ag-tab-guard-" + side);
45167 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaRole"])(tabGuard, 'presentation');
45168 return tabGuard;
45169 };
45170 TabGuardComp.prototype.addTabGuards = function (topTabGuard, bottomTabGuard) {
45171 this.eFocusableElement.insertAdjacentElement('afterbegin', topTabGuard);
45172 this.eFocusableElement.insertAdjacentElement('beforeend', bottomTabGuard);
45173 };
45174 TabGuardComp.prototype.removeAllChildrenExceptTabGuards = function () {
45175 var tabGuards = [this.eTopGuard, this.eBottomGuard];
45176 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["clearElement"])(this.getFocusableElement());
45177 this.addTabGuards.apply(this, __spread(tabGuards));
45178 };
45179 TabGuardComp.prototype.forceFocusOutOfContainer = function (up) {
45180 if (up === void 0) { up = false; }
45181 this.tabGuardCtrl.forceFocusOutOfContainer(up);
45182 };
45183 TabGuardComp.prototype.appendChild = function (newChild, container) {
45184 if (!Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["isNodeOrElement"])(newChild)) {
45185 newChild = newChild.getGui();
45186 }
45187 var bottomTabGuard = this.eBottomGuard;
45188 if (bottomTabGuard) {
45189 bottomTabGuard.insertAdjacentElement('beforebegin', newChild);
45190 }
45191 else {
45192 _super.prototype.appendChild.call(this, newChild, container);
45193 }
45194 };
45195 return TabGuardComp;
45196}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
45197
45198
45199
45200
45201
45202/***/ }),
45203/* 203 */
45204/***/ (function(module, __webpack_exports__, __webpack_require__) {
45205
45206"use strict";
45207__webpack_require__.r(__webpack_exports__);
45208/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabGuardCtrl", function() { return TabGuardCtrl; });
45209/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
45210/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
45211/* harmony import */ var _managedFocusFeature__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(64);
45212/**
45213 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
45214 * @version v27.3.0
45215 * @link https://www.ag-grid.com/
45216 * @license MIT
45217 */
45218var __extends = (undefined && undefined.__extends) || (function () {
45219 var extendStatics = function (d, b) {
45220 extendStatics = Object.setPrototypeOf ||
45221 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45222 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45223 return extendStatics(d, b);
45224 };
45225 return function (d, b) {
45226 extendStatics(d, b);
45227 function __() { this.constructor = d; }
45228 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45229 };
45230})();
45231var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
45232 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45233 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
45234 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;
45235 return c > 3 && r && Object.defineProperty(target, key, r), r;
45236};
45237
45238
45239
45240var TabGuardCtrl = /** @class */ (function (_super) {
45241 __extends(TabGuardCtrl, _super);
45242 function TabGuardCtrl(params) {
45243 var _this = _super.call(this) || this;
45244 _this.skipTabGuardFocus = false;
45245 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;
45246 _this.comp = comp;
45247 _this.eTopGuard = eTopGuard;
45248 _this.eBottomGuard = eBottomGuard;
45249 _this.providedFocusInnerElement = focusInnerElement;
45250 _this.eFocusableElement = eFocusableElement;
45251 _this.providedFocusIn = onFocusIn;
45252 _this.providedFocusOut = onFocusOut;
45253 _this.providedShouldStopEventPropagation = shouldStopEventPropagation;
45254 _this.providedOnTabKeyDown = onTabKeyDown;
45255 _this.providedHandleKeyDown = handleKeyDown;
45256 return _this;
45257 }
45258 TabGuardCtrl.prototype.postConstruct = function () {
45259 var _this = this;
45260 this.createManagedBean(new _managedFocusFeature__WEBPACK_IMPORTED_MODULE_2__["ManagedFocusFeature"](this.eFocusableElement, {
45261 shouldStopEventPropagation: function () { return _this.shouldStopEventPropagation(); },
45262 onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },
45263 handleKeyDown: function (e) { return _this.handleKeyDown(e); },
45264 onFocusIn: function (e) { return _this.onFocusIn(e); },
45265 onFocusOut: function (e) { return _this.onFocusOut(e); }
45266 }));
45267 this.activateTabGuards();
45268 [this.eTopGuard, this.eBottomGuard].forEach(function (guard) { return _this.addManagedListener(guard, 'focus', _this.onFocus.bind(_this)); });
45269 };
45270 TabGuardCtrl.prototype.handleKeyDown = function (e) {
45271 if (this.providedHandleKeyDown) {
45272 this.providedHandleKeyDown(e);
45273 }
45274 };
45275 TabGuardCtrl.prototype.tabGuardsAreActive = function () {
45276 return !!this.eTopGuard && this.eTopGuard.hasAttribute('tabIndex');
45277 };
45278 TabGuardCtrl.prototype.shouldStopEventPropagation = function () {
45279 if (this.providedShouldStopEventPropagation) {
45280 return this.providedShouldStopEventPropagation();
45281 }
45282 return false;
45283 };
45284 TabGuardCtrl.prototype.activateTabGuards = function () {
45285 this.comp.setTabIndex(this.getGridTabIndex());
45286 };
45287 TabGuardCtrl.prototype.deactivateTabGuards = function () {
45288 this.comp.setTabIndex();
45289 };
45290 TabGuardCtrl.prototype.onFocus = function (e) {
45291 if (this.skipTabGuardFocus) {
45292 this.skipTabGuardFocus = false;
45293 return;
45294 }
45295 var fromBottom = e.target === this.eBottomGuard;
45296 if (this.providedFocusInnerElement) {
45297 this.providedFocusInnerElement(fromBottom);
45298 }
45299 else {
45300 this.focusInnerElement(fromBottom);
45301 }
45302 };
45303 TabGuardCtrl.prototype.onFocusIn = function (e) {
45304 if (this.providedFocusIn && this.providedFocusIn(e)) {
45305 return;
45306 }
45307 this.deactivateTabGuards();
45308 };
45309 TabGuardCtrl.prototype.onFocusOut = function (e) {
45310 if (this.providedFocusOut && this.providedFocusOut(e)) {
45311 return;
45312 }
45313 if (!this.eFocusableElement.contains(e.relatedTarget)) {
45314 this.activateTabGuards();
45315 }
45316 };
45317 TabGuardCtrl.prototype.onTabKeyDown = function (e) {
45318 var _this = this;
45319 if (this.providedOnTabKeyDown) {
45320 this.providedOnTabKeyDown(e);
45321 return;
45322 }
45323 if (e.defaultPrevented) {
45324 return;
45325 }
45326 var tabGuardsAreActive = this.tabGuardsAreActive();
45327 if (tabGuardsAreActive) {
45328 this.deactivateTabGuards();
45329 }
45330 var nextRoot = this.getNextFocusableElement(e.shiftKey);
45331 if (tabGuardsAreActive) {
45332 // ensure the tab guards are only re-instated once the event has finished processing, to avoid the browser
45333 // tabbing to the tab guard from inside the component
45334 setTimeout(function () { return _this.activateTabGuards(); }, 0);
45335 }
45336 if (!nextRoot) {
45337 return;
45338 }
45339 nextRoot.focus();
45340 e.preventDefault();
45341 };
45342 TabGuardCtrl.prototype.getGridTabIndex = function () {
45343 return this.gridOptionsWrapper.getGridTabIndex();
45344 };
45345 TabGuardCtrl.prototype.focusInnerElement = function (fromBottom) {
45346 if (fromBottom === void 0) { fromBottom = false; }
45347 var focusable = this.focusService.findFocusableElements(this.eFocusableElement);
45348 if (this.tabGuardsAreActive()) {
45349 // remove tab guards from this component from list of focusable elements
45350 focusable.splice(0, 1);
45351 focusable.splice(focusable.length - 1, 1);
45352 }
45353 if (!focusable.length) {
45354 return;
45355 }
45356 focusable[fromBottom ? focusable.length - 1 : 0].focus();
45357 };
45358 TabGuardCtrl.prototype.getNextFocusableElement = function (backwards) {
45359 return this.focusService.findNextFocusableElement(this.eFocusableElement, false, backwards);
45360 };
45361 TabGuardCtrl.prototype.forceFocusOutOfContainer = function (up) {
45362 if (up === void 0) { up = false; }
45363 var tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;
45364 this.activateTabGuards();
45365 this.skipTabGuardFocus = true;
45366 tabGuardToFocus.focus();
45367 };
45368 __decorate([
45369 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
45370 ], TabGuardCtrl.prototype, "focusService", void 0);
45371 __decorate([
45372 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
45373 ], TabGuardCtrl.prototype, "postConstruct", null);
45374 return TabGuardCtrl;
45375}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
45376
45377
45378
45379
45380
45381/***/ }),
45382/* 204 */
45383/***/ (function(module, __webpack_exports__, __webpack_require__) {
45384
45385"use strict";
45386__webpack_require__.r(__webpack_exports__);
45387/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgMenuPanel", function() { return AgMenuPanel; });
45388/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
45389/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
45390/* harmony import */ var _tabGuardComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(202);
45391/**
45392 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
45393 * @version v27.3.0
45394 * @link https://www.ag-grid.com/
45395 * @license MIT
45396 */
45397var __extends = (undefined && undefined.__extends) || (function () {
45398 var extendStatics = function (d, b) {
45399 extendStatics = Object.setPrototypeOf ||
45400 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45401 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45402 return extendStatics(d, b);
45403 };
45404 return function (d, b) {
45405 extendStatics(d, b);
45406 function __() { this.constructor = d; }
45407 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45408 };
45409})();
45410var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
45411 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45412 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
45413 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;
45414 return c > 3 && r && Object.defineProperty(target, key, r), r;
45415};
45416
45417
45418
45419var AgMenuPanel = /** @class */ (function (_super) {
45420 __extends(AgMenuPanel, _super);
45421 function AgMenuPanel(wrappedComponent) {
45422 var _this = _super.call(this) || this;
45423 _this.wrappedComponent = wrappedComponent;
45424 _this.setTemplateFromElement(wrappedComponent.getGui());
45425 return _this;
45426 }
45427 AgMenuPanel.prototype.postConstruct = function () {
45428 var _this = this;
45429 this.initialiseTabGuard({
45430 onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },
45431 handleKeyDown: function (e) { return _this.handleKeyDown(e); }
45432 });
45433 };
45434 AgMenuPanel.prototype.handleKeyDown = function (e) {
45435 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ESCAPE) {
45436 this.closePanel();
45437 }
45438 };
45439 AgMenuPanel.prototype.onTabKeyDown = function (e) {
45440 if (e.defaultPrevented) {
45441 return;
45442 }
45443 this.closePanel();
45444 e.preventDefault();
45445 };
45446 AgMenuPanel.prototype.closePanel = function () {
45447 var menuItem = this.parentComponent;
45448 menuItem.closeSubMenu();
45449 setTimeout(function () { return menuItem.getGui().focus(); }, 0);
45450 };
45451 __decorate([
45452 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
45453 ], AgMenuPanel.prototype, "postConstruct", null);
45454 return AgMenuPanel;
45455}(_tabGuardComp__WEBPACK_IMPORTED_MODULE_2__["TabGuardComp"]));
45456
45457
45458
45459
45460
45461/***/ }),
45462/* 205 */
45463/***/ (function(module, __webpack_exports__, __webpack_require__) {
45464
45465"use strict";
45466__webpack_require__.r(__webpack_exports__);
45467/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupService", function() { return PopupService; });
45468/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
45469/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
45470/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
45471/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
45472/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
45473/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
45474/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65);
45475/* harmony import */ var _focusService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(206);
45476/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(37);
45477/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(44);
45478/**
45479 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
45480 * @version v27.3.0
45481 * @link https://www.ag-grid.com/
45482 * @license MIT
45483 */
45484var __extends = (undefined && undefined.__extends) || (function () {
45485 var extendStatics = function (d, b) {
45486 extendStatics = Object.setPrototypeOf ||
45487 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45488 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45489 return extendStatics(d, b);
45490 };
45491 return function (d, b) {
45492 extendStatics(d, b);
45493 function __() { this.constructor = d; }
45494 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45495 };
45496})();
45497var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
45498 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45499 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
45500 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;
45501 return c > 3 && r && Object.defineProperty(target, key, r), r;
45502};
45503
45504
45505
45506
45507
45508
45509
45510
45511
45512
45513var DIRECTION;
45514(function (DIRECTION) {
45515 DIRECTION[DIRECTION["vertical"] = 0] = "vertical";
45516 DIRECTION[DIRECTION["horizontal"] = 1] = "horizontal";
45517})(DIRECTION || (DIRECTION = {}));
45518var instanceIdSeq = 0;
45519var PopupService = /** @class */ (function (_super) {
45520 __extends(PopupService, _super);
45521 function PopupService() {
45522 var _this = _super !== null && _super.apply(this, arguments) || this;
45523 _this.popupList = [];
45524 return _this;
45525 }
45526 PopupService.prototype.postConstruct = function () {
45527 var _this = this;
45528 this.ctrlsService.whenReady(function (p) {
45529 _this.gridCtrl = p.gridCtrl;
45530 _this.addManagedListener(_this.gridCtrl, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_KEYBOARD_FOCUS, function () {
45531 _this.popupList.forEach(function (popup) { return popup.element.classList.add(_focusService__WEBPACK_IMPORTED_MODULE_7__["FocusService"].AG_KEYBOARD_FOCUS); });
45532 });
45533 _this.addManagedListener(_this.gridCtrl, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_MOUSE_FOCUS, function () {
45534 _this.popupList.forEach(function (popup) { return popup.element.classList.remove(_focusService__WEBPACK_IMPORTED_MODULE_7__["FocusService"].AG_KEYBOARD_FOCUS); });
45535 });
45536 });
45537 };
45538 PopupService.prototype.getPopupParent = function () {
45539 var ePopupParent = this.gridOptionsWrapper.getPopupParent();
45540 if (ePopupParent) {
45541 return ePopupParent;
45542 }
45543 return this.gridCtrl.getGui();
45544 };
45545 PopupService.prototype.positionPopupForMenu = function (params) {
45546 var sourceRect = params.eventSource.getBoundingClientRect();
45547 var parentRect = this.getParentRect();
45548 var y = this.keepXYWithinBounds(params.ePopup, sourceRect.top - parentRect.top, DIRECTION.vertical);
45549 var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;
45550 params.ePopup.style.minWidth = minWidth + "px";
45551 var widthOfParent = parentRect.right - parentRect.left;
45552 var maxX = widthOfParent - minWidth;
45553 // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup
45554 // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,
45555 // we try place it first to the left, and then if not to the right.
45556 var x;
45557 if (this.gridOptionsWrapper.isEnableRtl()) {
45558 // for RTL, try left first
45559 x = xLeftPosition();
45560 if (x < 0) {
45561 x = xRightPosition();
45562 }
45563 if (x > maxX) {
45564 x = 0;
45565 }
45566 }
45567 else {
45568 // for LTR, try right first
45569 x = xRightPosition();
45570 if (x > maxX) {
45571 x = xLeftPosition();
45572 }
45573 if (x < 0) {
45574 x = 0;
45575 }
45576 }
45577 params.ePopup.style.left = x + "px";
45578 params.ePopup.style.top = y + "px";
45579 function xRightPosition() {
45580 return sourceRect.right - parentRect.left - 2;
45581 }
45582 function xLeftPosition() {
45583 return sourceRect.left - parentRect.left - minWidth;
45584 }
45585 };
45586 PopupService.prototype.positionPopupUnderMouseEvent = function (params) {
45587 var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY;
45588 var _a = this.calculatePointerAlign(params.mouseEvent), x = _a.x, y = _a.y;
45589 this.positionPopup({
45590 ePopup: ePopup,
45591 x: x,
45592 y: y,
45593 nudgeX: nudgeX,
45594 nudgeY: nudgeY,
45595 keepWithinBounds: true
45596 });
45597 this.callPostProcessPopup(params.type, params.ePopup, null, params.mouseEvent, params.column, params.rowNode);
45598 };
45599 PopupService.prototype.calculatePointerAlign = function (e) {
45600 var parentRect = this.getParentRect();
45601 return {
45602 x: e.clientX - parentRect.left,
45603 y: e.clientY - parentRect.top
45604 };
45605 };
45606 PopupService.prototype.positionPopupUnderComponent = function (params) {
45607 var sourceRect = params.eventSource.getBoundingClientRect();
45608 var alignSide = params.alignSide || 'left';
45609 var parentRect = this.getParentRect();
45610 var x = sourceRect.left - parentRect.left;
45611 if (alignSide === 'right') {
45612 x -= (params.ePopup.offsetWidth - sourceRect.width);
45613 }
45614 this.positionPopup({
45615 ePopup: params.ePopup,
45616 nudgeX: params.nudgeX,
45617 nudgeY: params.nudgeY,
45618 x: x,
45619 y: sourceRect.top - parentRect.top + sourceRect.height,
45620 keepWithinBounds: params.keepWithinBounds
45621 });
45622 this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);
45623 };
45624 PopupService.prototype.positionPopupOverComponent = function (params) {
45625 var sourceRect = params.eventSource.getBoundingClientRect();
45626 var parentRect = this.getParentRect();
45627 this.positionPopup({
45628 ePopup: params.ePopup,
45629 nudgeX: params.nudgeX,
45630 nudgeY: params.nudgeY,
45631 x: sourceRect.left - parentRect.left,
45632 y: sourceRect.top - parentRect.top,
45633 keepWithinBounds: params.keepWithinBounds
45634 });
45635 this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);
45636 };
45637 PopupService.prototype.callPostProcessPopup = function (type, ePopup, eventSource, mouseEvent, column, rowNode) {
45638 var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();
45639 if (callback) {
45640 var params = {
45641 column: column,
45642 rowNode: rowNode,
45643 ePopup: ePopup,
45644 type: type,
45645 eventSource: eventSource,
45646 mouseEvent: mouseEvent
45647 };
45648 callback(params);
45649 }
45650 };
45651 PopupService.prototype.positionPopup = function (params) {
45652 var ePopup = params.ePopup, keepWithinBounds = params.keepWithinBounds, nudgeX = params.nudgeX, nudgeY = params.nudgeY;
45653 var x = params.x, y = params.y;
45654 if (nudgeX) {
45655 x += nudgeX;
45656 }
45657 if (nudgeY) {
45658 y += nudgeY;
45659 }
45660 // if popup is overflowing to the bottom, move it up
45661 if (keepWithinBounds) {
45662 x = this.keepXYWithinBounds(ePopup, x, DIRECTION.horizontal);
45663 y = this.keepXYWithinBounds(ePopup, y, DIRECTION.vertical);
45664 }
45665 ePopup.style.left = x + "px";
45666 ePopup.style.top = y + "px";
45667 };
45668 PopupService.prototype.getActivePopups = function () {
45669 return this.popupList.map(function (popup) { return popup.element; });
45670 };
45671 PopupService.prototype.getPopupList = function () {
45672 return this.popupList;
45673 };
45674 PopupService.prototype.getParentRect = function () {
45675 // subtract the popup parent borders, because popupParent.getBoundingClientRect
45676 // returns the rect outside the borders, but the 0,0 coordinate for absolute
45677 // positioning is inside the border, leading the popup to be off by the width
45678 // of the border
45679 var eDocument = this.gridOptionsWrapper.getDocument();
45680 var popupParent = this.getPopupParent();
45681 if (popupParent === eDocument.body) {
45682 popupParent = eDocument.documentElement;
45683 }
45684 var style = getComputedStyle(popupParent);
45685 var bounds = popupParent.getBoundingClientRect();
45686 return {
45687 top: bounds.top + parseFloat(style.borderTopWidth) || 0,
45688 left: bounds.left + parseFloat(style.borderLeftWidth) || 0,
45689 right: bounds.right + parseFloat(style.borderRightWidth) || 0,
45690 bottom: bounds.bottom + parseFloat(style.borderBottomWidth) || 0,
45691 };
45692 };
45693 PopupService.prototype.keepXYWithinBounds = function (ePopup, position, direction) {
45694 var isVertical = direction === DIRECTION.vertical;
45695 var sizeProperty = isVertical ? 'clientHeight' : 'clientWidth';
45696 var anchorProperty = isVertical ? 'top' : 'left';
45697 var offsetProperty = isVertical ? 'offsetHeight' : 'offsetWidth';
45698 var scrollPositionProperty = isVertical ? 'scrollTop' : 'scrollLeft';
45699 var eDocument = this.gridOptionsWrapper.getDocument();
45700 var docElement = eDocument.documentElement;
45701 var popupParent = this.getPopupParent();
45702 var parentRect = popupParent.getBoundingClientRect();
45703 var documentRect = eDocument.documentElement.getBoundingClientRect();
45704 var isBody = popupParent === eDocument.body;
45705 var offsetSize = ePopup[offsetProperty];
45706 var getSize = isVertical ? _utils_dom__WEBPACK_IMPORTED_MODULE_3__["getAbsoluteHeight"] : _utils_dom__WEBPACK_IMPORTED_MODULE_3__["getAbsoluteWidth"];
45707 var sizeOfParent = isBody ? (getSize(docElement) + docElement[scrollPositionProperty]) : popupParent[sizeProperty];
45708 if (isBody) {
45709 sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);
45710 }
45711 var max = sizeOfParent - offsetSize;
45712 return Math.min(Math.max(position, 0), Math.abs(max));
45713 };
45714 PopupService.prototype.keepPopupPositionedRelativeTo = function (params) {
45715 var _this = this;
45716 var eParent = this.getPopupParent();
45717 var parentRect = eParent.getBoundingClientRect();
45718 var sourceRect = params.element.getBoundingClientRect();
45719 var initialDiffTop = parentRect.top - sourceRect.top;
45720 var initialDiffLeft = parentRect.left - sourceRect.left;
45721 var lastDiffTop = initialDiffTop;
45722 var lastDiffLeft = initialDiffLeft;
45723 var topPx = params.ePopup.style.top;
45724 var top = parseInt(topPx.substring(0, topPx.length - 1), 10);
45725 var leftPx = params.ePopup.style.left;
45726 var left = parseInt(leftPx.substring(0, leftPx.length - 1), 10);
45727 return new _utils__WEBPACK_IMPORTED_MODULE_8__["AgPromise"](function (resolve) {
45728 _this.getFrameworkOverrides().setInterval(function () {
45729 var pRect = eParent.getBoundingClientRect();
45730 var sRect = params.element.getBoundingClientRect();
45731 var elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;
45732 if (elementNotInDom) {
45733 params.hidePopup();
45734 return;
45735 }
45736 var currentDiffTop = pRect.top - sRect.top;
45737 if (currentDiffTop != lastDiffTop) {
45738 var newTop = _this.keepXYWithinBounds(params.ePopup, top + initialDiffTop - currentDiffTop, DIRECTION.vertical);
45739 params.ePopup.style.top = newTop + "px";
45740 }
45741 lastDiffTop = currentDiffTop;
45742 var currentDiffLeft = pRect.left - sRect.left;
45743 if (currentDiffLeft != lastDiffLeft) {
45744 var newLeft = _this.keepXYWithinBounds(params.ePopup, left + initialDiffLeft - currentDiffLeft, DIRECTION.horizontal);
45745 params.ePopup.style.left = newLeft + "px";
45746 }
45747 lastDiffLeft = currentDiffLeft;
45748 }, 200).then(function (intervalId) {
45749 var result = function () {
45750 if (intervalId != null) {
45751 window.clearInterval(intervalId);
45752 }
45753 };
45754 resolve(result);
45755 });
45756 });
45757 };
45758 PopupService.prototype.addPopup = function (params) {
45759 var _this = this;
45760 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;
45761 var eDocument = this.gridOptionsWrapper.getDocument();
45762 var destroyPositionTracker = new _utils__WEBPACK_IMPORTED_MODULE_8__["AgPromise"](function (resolve) { return resolve(function () { }); });
45763 if (!eDocument) {
45764 console.warn('ag-grid: could not find the document, document is empty');
45765 return { hideFunc: function () { }, stopAnchoringPromise: destroyPositionTracker };
45766 }
45767 var pos = this.popupList.findIndex(function (popup) { return popup.element === eChild; });
45768 if (pos !== -1) {
45769 var popup = this.popupList[pos];
45770 return { hideFunc: popup.hideFunc, stopAnchoringPromise: popup.stopAnchoringPromise };
45771 }
45772 var ePopupParent = this.getPopupParent();
45773 if (eChild.style.top == null) {
45774 eChild.style.top = '0px';
45775 }
45776 if (eChild.style.left == null) {
45777 eChild.style.left = '0px';
45778 }
45779 // add env CSS class to child, in case user provided a popup parent, which means
45780 // theme class may be missing
45781 var eWrapper = document.createElement('div');
45782 var theme = this.environment.getTheme().theme;
45783 if (theme) {
45784 eWrapper.classList.add(theme);
45785 }
45786 eWrapper.classList.add('ag-popup');
45787 eChild.classList.add(this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr', 'ag-popup-child');
45788 if (!eChild.hasAttribute('role')) {
45789 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_9__["setAriaRole"])(eChild, 'dialog');
45790 }
45791 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_9__["setAriaLabel"])(eChild, ariaLabel);
45792 if (this.focusService.isKeyboardMode()) {
45793 eChild.classList.add(_focusService__WEBPACK_IMPORTED_MODULE_7__["FocusService"].AG_KEYBOARD_FOCUS);
45794 }
45795 eWrapper.appendChild(eChild);
45796 ePopupParent.appendChild(eWrapper);
45797 if (alwaysOnTop) {
45798 this.setAlwaysOnTop(eWrapper, true);
45799 }
45800 else {
45801 this.bringPopupToFront(eWrapper);
45802 }
45803 var popupHidden = false;
45804 var hidePopupOnKeyboardEvent = function (event) {
45805 if (!eWrapper.contains(eDocument.activeElement)) {
45806 return;
45807 }
45808 var key = event.key;
45809 if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].ESCAPE) {
45810 hidePopup({ keyboardEvent: event });
45811 }
45812 };
45813 var hidePopupOnMouseEvent = function (event) { return hidePopup({ mouseEvent: event }); };
45814 var hidePopupOnTouchEvent = function (event) { return hidePopup({ touchEvent: event }); };
45815 var hidePopup = function (popupParams) {
45816 if (popupParams === void 0) { popupParams = {}; }
45817 var mouseEvent = popupParams.mouseEvent, touchEvent = popupParams.touchEvent, keyboardEvent = popupParams.keyboardEvent;
45818 if (
45819 // we don't hide popup if the event was on the child, or any
45820 // children of this child
45821 _this.isEventFromCurrentPopup({ mouseEvent: mouseEvent, touchEvent: touchEvent }, eChild) ||
45822 // if the event to close is actually the open event, then ignore it
45823 _this.isEventSameChainAsOriginalEvent({ originalMouseEvent: click, mouseEvent: mouseEvent, touchEvent: touchEvent }) ||
45824 // this method should only be called once. the client can have different
45825 // paths, each one wanting to close, so this method may be called multiple times.
45826 popupHidden) {
45827 return;
45828 }
45829 popupHidden = true;
45830 ePopupParent.removeChild(eWrapper);
45831 eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);
45832 eDocument.removeEventListener('mousedown', hidePopupOnMouseEvent);
45833 eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);
45834 eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);
45835 _this.eventService.removeEventListener(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DRAG_STARTED, hidePopupOnMouseEvent);
45836 if (closedCallback) {
45837 closedCallback(mouseEvent || touchEvent || keyboardEvent);
45838 }
45839 _this.popupList = _this.popupList.filter(function (popup) { return popup.element !== eChild; });
45840 if (destroyPositionTracker) {
45841 destroyPositionTracker.then(function (destroyFunc) { return destroyFunc && destroyFunc(); });
45842 }
45843 };
45844 if (afterGuiAttached) {
45845 afterGuiAttached({ hidePopup: hidePopup });
45846 }
45847 // if we add these listeners now, then the current mouse
45848 // click will be included, which we don't want
45849 window.setTimeout(function () {
45850 if (closeOnEsc) {
45851 eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);
45852 }
45853 if (modal) {
45854 eDocument.addEventListener('mousedown', hidePopupOnMouseEvent);
45855 _this.eventService.addEventListener(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DRAG_STARTED, hidePopupOnMouseEvent);
45856 eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);
45857 eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);
45858 }
45859 }, 0);
45860 if (positionCallback) {
45861 positionCallback();
45862 }
45863 if (anchorToElement) {
45864 // keeps popup positioned under created, eg if context menu, if user scrolls
45865 // using touchpad and the cell moves, it moves the popup to keep it with the cell.
45866 destroyPositionTracker = this.keepPopupPositionedRelativeTo({
45867 element: anchorToElement,
45868 ePopup: eChild,
45869 hidePopup: hidePopup
45870 });
45871 }
45872 this.popupList.push({
45873 element: eChild,
45874 wrapper: eWrapper,
45875 hideFunc: hidePopup,
45876 stopAnchoringPromise: destroyPositionTracker,
45877 instanceId: instanceIdSeq++,
45878 isAnchored: !!anchorToElement
45879 });
45880 return {
45881 hideFunc: hidePopup,
45882 stopAnchoringPromise: destroyPositionTracker
45883 };
45884 };
45885 PopupService.prototype.hasAnchoredPopup = function () {
45886 return this.popupList.some(function (popup) { return popup.isAnchored; });
45887 };
45888 PopupService.prototype.isEventFromCurrentPopup = function (params, target) {
45889 var mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;
45890 var event = mouseEvent ? mouseEvent : touchEvent;
45891 if (!event) {
45892 return false;
45893 }
45894 var indexOfThisChild = this.popupList.findIndex(function (popup) { return popup.element === target; });
45895 if (indexOfThisChild === -1) {
45896 return false;
45897 }
45898 for (var i = indexOfThisChild; i < this.popupList.length; i++) {
45899 var popup = this.popupList[i];
45900 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isElementInEventPath"])(popup.element, event)) {
45901 return true;
45902 }
45903 }
45904 // if the user did not write their own Custom Element to be rendered as popup
45905 // and this component has an additional popup element, they should have the
45906 // `ag-custom-component-popup` class to be detected as part of the Custom Component
45907 return this.isElementWithinCustomPopup(event.target);
45908 };
45909 PopupService.prototype.isElementWithinCustomPopup = function (el) {
45910 var eDocument = this.gridOptionsWrapper.getDocument();
45911 while (el && el !== eDocument.body) {
45912 if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {
45913 return true;
45914 }
45915 el = el.parentElement;
45916 }
45917 return false;
45918 };
45919 // in some browsers, the context menu event can be fired before the click event, which means
45920 // the context menu event could open the popup, but then the click event closes it straight away.
45921 PopupService.prototype.isEventSameChainAsOriginalEvent = function (params) {
45922 var originalMouseEvent = params.originalMouseEvent, mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;
45923 // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that
45924 // the event is a different event, however that is an edge case that is not very relevant (the user clicking
45925 // twice on the same location isn't a normal path).
45926 // event could be mouse event or touch event.
45927 var mouseEventOrTouch = null;
45928 if (mouseEvent) {
45929 // mouse event can be used direction, it has coordinates
45930 mouseEventOrTouch = mouseEvent;
45931 }
45932 else if (touchEvent) {
45933 // touch event doesn't have coordinates, need it's touch object
45934 mouseEventOrTouch = touchEvent.touches[0];
45935 }
45936 if (mouseEventOrTouch && originalMouseEvent) {
45937 // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed
45938 // by browser click (when you finger up, touch is interrupted as click in browser)
45939 var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;
45940 var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;
45941 var xMatch = Math.abs(originalMouseEvent.screenX - screenX_1) < 5;
45942 var yMatch = Math.abs(originalMouseEvent.screenY - screenY_1) < 5;
45943 if (xMatch && yMatch) {
45944 return true;
45945 }
45946 }
45947 return false;
45948 };
45949 PopupService.prototype.getWrapper = function (ePopup) {
45950 while (!ePopup.classList.contains('ag-popup') && ePopup.parentElement) {
45951 ePopup = ePopup.parentElement;
45952 }
45953 return ePopup.classList.contains('ag-popup') ? ePopup : null;
45954 };
45955 PopupService.prototype.setAlwaysOnTop = function (ePopup, alwaysOnTop) {
45956 var eWrapper = this.getWrapper(ePopup);
45957 if (!eWrapper) {
45958 return;
45959 }
45960 eWrapper.classList.toggle('ag-always-on-top', !!alwaysOnTop);
45961 if (alwaysOnTop) {
45962 this.bringPopupToFront(eWrapper);
45963 }
45964 };
45965 PopupService.prototype.bringPopupToFront = function (ePopup) {
45966 var parent = this.getPopupParent();
45967 var popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));
45968 var popupLen = popupList.length;
45969 var alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));
45970 var onTopLength = alwaysOnTopList.length;
45971 var eWrapper = this.getWrapper(ePopup);
45972 if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {
45973 return;
45974 }
45975 var pos = popupList.indexOf(eWrapper);
45976 var innerEls = eWrapper.querySelectorAll('div');
45977 var innerElsScrollMap = [];
45978 innerEls.forEach(function (el) {
45979 if (el.scrollTop !== 0) {
45980 innerElsScrollMap.push([el, el.scrollTop]);
45981 }
45982 });
45983 if (onTopLength) {
45984 var isPopupAlwaysOnTop = eWrapper.classList.contains('ag-always-on-top');
45985 if (isPopupAlwaysOnTop) {
45986 if (pos !== popupLen - 1) {
45987 Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(alwaysOnTopList).insertAdjacentElement('afterend', eWrapper);
45988 }
45989 }
45990 else if (pos !== popupLen - onTopLength - 1) {
45991 alwaysOnTopList[0].insertAdjacentElement('beforebegin', eWrapper);
45992 }
45993 }
45994 else if (pos !== popupLen - 1) {
45995 Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(popupList).insertAdjacentElement('afterend', eWrapper);
45996 }
45997 while (innerElsScrollMap.length) {
45998 var currentEl = innerElsScrollMap.pop();
45999 currentEl[0].scrollTop = currentEl[1];
46000 }
46001 var params = {
46002 type: 'popupToFront',
46003 api: this.gridOptionsWrapper.getApi(),
46004 columnApi: this.gridOptionsWrapper.getColumnApi(),
46005 eWrapper: eWrapper
46006 };
46007 this.eventService.dispatchEvent(params);
46008 };
46009 __decorate([
46010 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('environment')
46011 ], PopupService.prototype, "environment", void 0);
46012 __decorate([
46013 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
46014 ], PopupService.prototype, "focusService", void 0);
46015 __decorate([
46016 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
46017 ], PopupService.prototype, "ctrlsService", void 0);
46018 __decorate([
46019 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
46020 ], PopupService.prototype, "postConstruct", null);
46021 PopupService = __decorate([
46022 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('popupService')
46023 ], PopupService);
46024 return PopupService;
46025}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
46026
46027
46028
46029
46030
46031/***/ }),
46032/* 206 */
46033/***/ (function(module, __webpack_exports__, __webpack_require__) {
46034
46035"use strict";
46036__webpack_require__.r(__webpack_exports__);
46037/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FocusService", function() { return FocusService; });
46038/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
46039/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
46040/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
46041/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(64);
46042/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
46043/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
46044/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15);
46045/* harmony import */ var _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(120);
46046/* harmony import */ var _headerRendering_cells_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(155);
46047/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(18);
46048/**
46049 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46050 * @version v27.3.0
46051 * @link https://www.ag-grid.com/
46052 * @license MIT
46053 */
46054var __extends = (undefined && undefined.__extends) || (function () {
46055 var extendStatics = function (d, b) {
46056 extendStatics = Object.setPrototypeOf ||
46057 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
46058 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
46059 return extendStatics(d, b);
46060 };
46061 return function (d, b) {
46062 extendStatics(d, b);
46063 function __() { this.constructor = d; }
46064 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
46065 };
46066})();
46067var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
46068 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46069 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
46070 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;
46071 return c > 3 && r && Object.defineProperty(target, key, r), r;
46072};
46073var __read = (undefined && undefined.__read) || function (o, n) {
46074 var m = typeof Symbol === "function" && o[Symbol.iterator];
46075 if (!m) return o;
46076 var i = m.call(o), r, ar = [], e;
46077 try {
46078 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
46079 }
46080 catch (error) { e = { error: error }; }
46081 finally {
46082 try {
46083 if (r && !r.done && (m = i["return"])) m.call(i);
46084 }
46085 finally { if (e) throw e.error; }
46086 }
46087 return ar;
46088};
46089var __spread = (undefined && undefined.__spread) || function () {
46090 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
46091 return ar;
46092};
46093
46094
46095
46096
46097
46098
46099
46100
46101
46102
46103var FocusService = /** @class */ (function (_super) {
46104 __extends(FocusService, _super);
46105 function FocusService() {
46106 return _super !== null && _super.apply(this, arguments) || this;
46107 }
46108 FocusService_1 = FocusService;
46109 /**
46110 * Adds a gridCore to the list of the gridCores monitoring Keyboard Mode
46111 * in a specific HTMLDocument.
46112 *
46113 * @param doc {Document} - The Document containing the gridCore.
46114 * @param gridCore {GridComp} - The GridCore to be monitored.
46115 */
46116 FocusService.addKeyboardModeEvents = function (doc, controller) {
46117 var docControllers = FocusService_1.instancesMonitored.get(doc);
46118 if (docControllers && docControllers.length > 0) {
46119 if (docControllers.indexOf(controller) === -1) {
46120 docControllers.push(controller);
46121 }
46122 }
46123 else {
46124 FocusService_1.instancesMonitored.set(doc, [controller]);
46125 doc.addEventListener('keydown', FocusService_1.toggleKeyboardMode);
46126 doc.addEventListener('mousedown', FocusService_1.toggleKeyboardMode);
46127 }
46128 };
46129 /**
46130 * Removes a gridCore from the list of the gridCores monitoring Keyboard Mode
46131 * in a specific HTMLDocument.
46132 *
46133 * @param doc {Document} - The Document containing the gridCore.
46134 * @param gridCore {GridComp} - The GridCore to be removed.
46135 */
46136 FocusService.removeKeyboardModeEvents = function (doc, controller) {
46137 var docControllers = FocusService_1.instancesMonitored.get(doc);
46138 var newControllers = [];
46139 if (docControllers && docControllers.length) {
46140 newControllers = __spread(docControllers).filter(function (currentGridCore) { return currentGridCore !== controller; });
46141 FocusService_1.instancesMonitored.set(doc, newControllers);
46142 }
46143 if (newControllers.length === 0) {
46144 doc.removeEventListener('keydown', FocusService_1.toggleKeyboardMode);
46145 doc.removeEventListener('mousedown', FocusService_1.toggleKeyboardMode);
46146 }
46147 };
46148 /**
46149 * This method will be called by `keydown` and `mousedown` events on all Documents monitoring
46150 * KeyboardMode. It will then fire a KEYBOARD_FOCUS, MOUSE_FOCUS on each gridCore present in
46151 * the Document allowing each gridCore to maintain a state for KeyboardMode.
46152 *
46153 * @param event {KeyboardEvent | MouseEvent | TouchEvent} - The event triggered.
46154 */
46155 FocusService.toggleKeyboardMode = function (event) {
46156 var isKeyboardActive = FocusService_1.keyboardModeActive;
46157 var isKeyboardEvent = event.type === 'keydown';
46158 if (isKeyboardEvent) {
46159 // the following keys should not toggle keyboard mode.
46160 if (event.ctrlKey || event.metaKey || event.altKey) {
46161 return;
46162 }
46163 }
46164 if (isKeyboardActive && isKeyboardEvent || !isKeyboardActive && !isKeyboardEvent) {
46165 return;
46166 }
46167 FocusService_1.keyboardModeActive = isKeyboardEvent;
46168 var doc = event.target.ownerDocument;
46169 if (!doc) {
46170 return;
46171 }
46172 var controllersForDoc = FocusService_1.instancesMonitored.get(doc);
46173 if (controllersForDoc) {
46174 controllersForDoc.forEach(function (controller) {
46175 controller.dispatchEvent({ type: isKeyboardEvent ? _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_KEYBOARD_FOCUS : _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_MOUSE_FOCUS });
46176 });
46177 }
46178 };
46179 FocusService.prototype.init = function () {
46180 var _this = this;
46181 var clearFocusedCellListener = this.clearFocusedCell.bind(this);
46182 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, clearFocusedCellListener);
46183 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onColumnEverythingChanged.bind(this));
46184 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_GROUP_OPENED, clearFocusedCellListener);
46185 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, clearFocusedCellListener);
46186 this.ctrlsService.whenReady(function (p) {
46187 _this.gridCtrl = p.gridCtrl;
46188 var doc = _this.gridOptionsWrapper.getDocument();
46189 FocusService_1.addKeyboardModeEvents(doc, _this.gridCtrl);
46190 _this.addDestroyFunc(function () { return _this.unregisterGridCompController(_this.gridCtrl); });
46191 });
46192 };
46193 FocusService.prototype.unregisterGridCompController = function (gridCompController) {
46194 var doc = this.gridOptionsWrapper.getDocument();
46195 FocusService_1.removeKeyboardModeEvents(doc, gridCompController);
46196 };
46197 FocusService.prototype.onColumnEverythingChanged = function () {
46198 // if the columns change, check and see if this column still exists. if it does, then
46199 // we can keep the focused cell. if it doesn't, then we need to drop the focused cell.
46200 if (!this.focusedCellPosition) {
46201 return;
46202 }
46203 var col = this.focusedCellPosition.column;
46204 var colFromColumnModel = this.columnModel.getGridColumn(col.getId());
46205 if (col !== colFromColumnModel) {
46206 this.clearFocusedCell();
46207 }
46208 };
46209 FocusService.prototype.isKeyboardMode = function () {
46210 return FocusService_1.keyboardModeActive;
46211 };
46212 // we check if the browser is focusing something, and if it is, and
46213 // it's the cell we think is focused, then return the cell. so this
46214 // methods returns the cell if a) we think it has focus and b) the
46215 // browser thinks it has focus. this then returns nothing if we
46216 // first focus a cell, then second click outside the grid, as then the
46217 // grid cell will still be focused as far as the grid is concerned,
46218 // however the browser focus will have moved somewhere else.
46219 FocusService.prototype.getFocusCellToUseAfterRefresh = function () {
46220 var eDocument = this.gridOptionsWrapper.getDocument();
46221 if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh() || !this.focusedCellPosition) {
46222 return null;
46223 }
46224 // we check that the browser is actually focusing on the grid, if it is not, then
46225 // we have nothing to worry about. we check for ROW data, as this covers both focused Rows (for Full Width Rows)
46226 // and Cells (covers cells as cells live in rows)
46227 if (this.isDomDataMissingInHierarchy(eDocument.activeElement, _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_7__["RowCtrl"].DOM_DATA_KEY_ROW_CTRL)) {
46228 return null;
46229 }
46230 return this.focusedCellPosition;
46231 };
46232 FocusService.prototype.getFocusHeaderToUseAfterRefresh = function () {
46233 var eDocument = this.gridOptionsWrapper.getDocument();
46234 if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh() || !this.focusedHeaderPosition) {
46235 return null;
46236 }
46237 // we check that the browser is actually focusing on the grid, if it is not, then
46238 // we have nothing to worry about
46239 if (this.isDomDataMissingInHierarchy(eDocument.activeElement, _headerRendering_cells_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_8__["AbstractHeaderCellCtrl"].DOM_DATA_KEY_HEADER_CTRL)) {
46240 return null;
46241 }
46242 return this.focusedHeaderPosition;
46243 };
46244 FocusService.prototype.isDomDataMissingInHierarchy = function (eBrowserCell, key) {
46245 var ePointer = eBrowserCell;
46246 while (ePointer) {
46247 var data = this.gridOptionsWrapper.getDomData(ePointer, key);
46248 if (data) {
46249 return false;
46250 }
46251 ePointer = ePointer.parentNode;
46252 }
46253 return true;
46254 };
46255 FocusService.prototype.clearFocusedCell = function () {
46256 this.focusedCellPosition = null;
46257 this.onCellFocused(false);
46258 };
46259 FocusService.prototype.getFocusedCell = function () {
46260 return this.focusedCellPosition;
46261 };
46262 FocusService.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {
46263 if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }
46264 var gridColumn = this.columnModel.getGridColumn(colKey);
46265 // if column doesn't exist, then blank the focused cell and return. this can happen when user sets new columns,
46266 // and the focused cell is in a column that no longer exists. after columns change, the grid refreshes and tries
46267 // to re-focus the focused cell.
46268 if (!gridColumn) {
46269 this.focusedCellPosition = null;
46270 return;
46271 }
46272 this.focusedCellPosition = gridColumn ? { rowIndex: rowIndex, rowPinned: Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["makeNull"])(floating), column: gridColumn } : null;
46273 this.onCellFocused(forceBrowserFocus);
46274 };
46275 FocusService.prototype.isCellFocused = function (cellPosition) {
46276 if (this.focusedCellPosition == null) {
46277 return false;
46278 }
46279 return this.focusedCellPosition.column === cellPosition.column &&
46280 this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);
46281 };
46282 FocusService.prototype.isRowNodeFocused = function (rowNode) {
46283 return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);
46284 };
46285 FocusService.prototype.isHeaderWrapperFocused = function (headerCtrl) {
46286 if (this.focusedHeaderPosition == null) {
46287 return false;
46288 }
46289 var column = headerCtrl.getColumnGroupChild();
46290 var headerRowIndex = headerCtrl.getRowIndex();
46291 var pinned = headerCtrl.getPinned();
46292 var _a = this.focusedHeaderPosition, focusedColumn = _a.column, focusedHeaderRowIndex = _a.headerRowIndex;
46293 return column === focusedColumn &&
46294 headerRowIndex === focusedHeaderRowIndex &&
46295 pinned == focusedColumn.getPinned();
46296 };
46297 FocusService.prototype.clearFocusedHeader = function () {
46298 this.focusedHeaderPosition = null;
46299 };
46300 FocusService.prototype.getFocusedHeader = function () {
46301 return this.focusedHeaderPosition;
46302 };
46303 FocusService.prototype.setFocusedHeader = function (headerRowIndex, column) {
46304 this.focusedHeaderPosition = { headerRowIndex: headerRowIndex, column: column };
46305 };
46306 FocusService.prototype.focusHeaderPosition = function (params) {
46307 var direction = params.direction, fromTab = params.fromTab, allowUserOverride = params.allowUserOverride, event = params.event;
46308 var headerPosition = params.headerPosition;
46309 if (allowUserOverride) {
46310 var gridOptionsWrapper = this.gridOptionsWrapper;
46311 var currentPosition = this.getFocusedHeader();
46312 var headerRowCount = this.headerNavigationService.getHeaderRowCount();
46313 if (fromTab) {
46314 var userFunc = gridOptionsWrapper.getTabToNextHeaderFunc();
46315 if (userFunc) {
46316 var params_1 = {
46317 backwards: direction === 'Before',
46318 previousHeaderPosition: currentPosition,
46319 nextHeaderPosition: headerPosition,
46320 headerRowCount: headerRowCount,
46321 };
46322 headerPosition = userFunc(params_1);
46323 }
46324 }
46325 else {
46326 var userFunc = gridOptionsWrapper.getNavigateToNextHeaderFunc();
46327 if (userFunc && event) {
46328 var params_2 = {
46329 key: event.key,
46330 previousHeaderPosition: currentPosition,
46331 nextHeaderPosition: headerPosition,
46332 headerRowCount: headerRowCount,
46333 event: event,
46334 };
46335 headerPosition = userFunc(params_2);
46336 }
46337 }
46338 }
46339 if (!headerPosition) {
46340 return false;
46341 }
46342 if (headerPosition.headerRowIndex === -1) {
46343 return this.focusGridView(headerPosition.column);
46344 }
46345 this.headerNavigationService.scrollToColumn(headerPosition.column, direction);
46346 var headerRowContainerCtrl = this.ctrlsService.getHeaderRowContainerCtrl(headerPosition.column.getPinned());
46347 // this will automatically call the setFocusedHeader method above
46348 var focusSuccess = headerRowContainerCtrl.focusHeader(headerPosition.headerRowIndex, headerPosition.column, event);
46349 return focusSuccess;
46350 };
46351 FocusService.prototype.focusFirstHeader = function () {
46352 var firstColumn = this.columnModel.getAllDisplayedColumns()[0];
46353 if (!firstColumn) {
46354 return false;
46355 }
46356 if (firstColumn.getParent()) {
46357 firstColumn = this.columnModel.getColumnGroupAtLevel(firstColumn, 0);
46358 }
46359 return this.focusHeaderPosition({
46360 headerPosition: { headerRowIndex: 0, column: firstColumn }
46361 });
46362 };
46363 FocusService.prototype.focusLastHeader = function (event) {
46364 var headerRowIndex = this.headerNavigationService.getHeaderRowCount() - 1;
46365 var column = Object(_utils_array__WEBPACK_IMPORTED_MODULE_9__["last"])(this.columnModel.getAllDisplayedColumns());
46366 return this.focusHeaderPosition({
46367 headerPosition: { headerRowIndex: headerRowIndex, column: column },
46368 event: event
46369 });
46370 };
46371 FocusService.prototype.isAnyCellFocused = function () {
46372 return !!this.focusedCellPosition;
46373 };
46374 FocusService.prototype.isRowFocused = function (rowIndex, floating) {
46375 if (this.focusedCellPosition == null) {
46376 return false;
46377 }
46378 return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["makeNull"])(floating);
46379 };
46380 FocusService.prototype.findFocusableElements = function (rootNode, exclude, onlyUnmanaged) {
46381 if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }
46382 var focusableString = _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].FOCUSABLE_SELECTOR;
46383 var excludeString = _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].FOCUSABLE_EXCLUDE;
46384 if (exclude) {
46385 excludeString += ', ' + exclude;
46386 }
46387 if (onlyUnmanaged) {
46388 excludeString += ', [tabindex="-1"]';
46389 }
46390 var nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString));
46391 var excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));
46392 if (!excludeNodes.length) {
46393 return nodes;
46394 }
46395 var diff = function (a, b) { return a.filter(function (element) { return b.indexOf(element) === -1; }); };
46396 return diff(nodes, excludeNodes);
46397 };
46398 FocusService.prototype.focusInto = function (rootNode, up, onlyUnmanaged) {
46399 if (up === void 0) { up = false; }
46400 if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }
46401 var focusableElements = this.findFocusableElements(rootNode, null, onlyUnmanaged);
46402 var toFocus = up ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_9__["last"])(focusableElements) : focusableElements[0];
46403 if (toFocus) {
46404 toFocus.focus();
46405 return true;
46406 }
46407 return false;
46408 };
46409 FocusService.prototype.findNextFocusableElement = function (rootNode, onlyManaged, backwards) {
46410 if (rootNode === void 0) { rootNode = this.eGridDiv; }
46411 var focusable = this.findFocusableElements(rootNode, onlyManaged ? ':not([tabindex="-1"])' : null);
46412 var eDocument = this.gridOptionsWrapper.getDocument();
46413 var activeEl = eDocument.activeElement;
46414 var currentIndex;
46415 if (onlyManaged) {
46416 currentIndex = focusable.findIndex(function (el) { return el.contains(activeEl); });
46417 }
46418 else {
46419 currentIndex = focusable.indexOf(activeEl);
46420 }
46421 var nextIndex = currentIndex + (backwards ? -1 : 1);
46422 if (nextIndex < 0 || nextIndex >= focusable.length) {
46423 return null;
46424 }
46425 return focusable[nextIndex];
46426 };
46427 FocusService.prototype.isFocusUnderManagedComponent = function (rootNode) {
46428 var eDocument = this.gridOptionsWrapper.getDocument();
46429 var managedContainers = rootNode.querySelectorAll("." + _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_3__["ManagedFocusFeature"].FOCUS_MANAGED_CLASS);
46430 if (!managedContainers.length) {
46431 return false;
46432 }
46433 for (var i = 0; i < managedContainers.length; i++) {
46434 if (managedContainers[i].contains(eDocument.activeElement)) {
46435 return true;
46436 }
46437 }
46438 return false;
46439 };
46440 FocusService.prototype.findTabbableParent = function (node, limit) {
46441 if (limit === void 0) { limit = 5; }
46442 var counter = 0;
46443 while (node && Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["getTabIndex"])(node) === null && ++counter <= limit) {
46444 node = node.parentElement;
46445 }
46446 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["getTabIndex"])(node) === null) {
46447 return null;
46448 }
46449 return node;
46450 };
46451 FocusService.prototype.onCellFocused = function (forceBrowserFocus) {
46452 var event = {
46453 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_CELL_FOCUSED,
46454 forceBrowserFocus: forceBrowserFocus,
46455 rowIndex: null,
46456 column: null,
46457 floating: null,
46458 api: this.gridApi,
46459 columnApi: this.columnApi,
46460 rowPinned: null,
46461 isFullWidthCell: false
46462 };
46463 if (this.focusedCellPosition) {
46464 var rowIndex = event.rowIndex = this.focusedCellPosition.rowIndex;
46465 var rowPinned = event.rowPinned = this.focusedCellPosition.rowPinned;
46466 event.column = this.focusedCellPosition.column;
46467 var rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex: rowIndex, rowPinned: rowPinned });
46468 if (rowCtrl) {
46469 event.isFullWidthCell = rowCtrl.isFullWidth();
46470 }
46471 }
46472 this.eventService.dispatchEvent(event);
46473 };
46474 FocusService.prototype.focusGridView = function (column, backwards) {
46475 // if suppressCellFocus is `true`, it means the user does not want to
46476 // navigate between the cells using tab. Instead, we put focus on either
46477 // the header or after the grid, depending on whether tab or shift-tab was pressed.
46478 if (this.gridOptionsWrapper.isSuppressCellFocus()) {
46479 if (backwards) {
46480 return this.focusLastHeader();
46481 }
46482 return this.focusNextGridCoreContainer(false);
46483 }
46484 var nextRow = backwards
46485 ? this.rowPositionUtils.getLastRow()
46486 : this.rowPositionUtils.getFirstRow();
46487 if (!nextRow) {
46488 return false;
46489 }
46490 var rowIndex = nextRow.rowIndex, rowPinned = nextRow.rowPinned;
46491 var focusedHeader = this.getFocusedHeader();
46492 if (!column && focusedHeader) {
46493 column = focusedHeader.column;
46494 }
46495 if (rowIndex == null || !column) {
46496 return false;
46497 }
46498 this.navigationService.ensureCellVisible({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });
46499 this.setFocusedCell(rowIndex, column, Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["makeNull"])(rowPinned), true);
46500 if (this.rangeService) {
46501 var cellPosition = { rowIndex: rowIndex, rowPinned: rowPinned, column: column };
46502 this.rangeService.setRangeToCell(cellPosition);
46503 }
46504 return true;
46505 };
46506 FocusService.prototype.focusNextGridCoreContainer = function (backwards) {
46507 if (this.gridCtrl.focusNextInnerContainer(backwards)) {
46508 return true;
46509 }
46510 if (!backwards && !this.gridCtrl.isDetailGrid()) {
46511 this.gridCtrl.forceFocusOutOfContainer();
46512 }
46513 return false;
46514 };
46515 var FocusService_1;
46516 FocusService.AG_KEYBOARD_FOCUS = 'ag-keyboard-focus';
46517 FocusService.keyboardModeActive = false;
46518 FocusService.instancesMonitored = new Map();
46519 __decorate([
46520 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('eGridDiv')
46521 ], FocusService.prototype, "eGridDiv", void 0);
46522 __decorate([
46523 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
46524 ], FocusService.prototype, "columnModel", void 0);
46525 __decorate([
46526 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('headerNavigationService')
46527 ], FocusService.prototype, "headerNavigationService", void 0);
46528 __decorate([
46529 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
46530 ], FocusService.prototype, "columnApi", void 0);
46531 __decorate([
46532 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
46533 ], FocusService.prototype, "gridApi", void 0);
46534 __decorate([
46535 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
46536 ], FocusService.prototype, "rowRenderer", void 0);
46537 __decorate([
46538 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowPositionUtils')
46539 ], FocusService.prototype, "rowPositionUtils", void 0);
46540 __decorate([
46541 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('rangeService')
46542 ], FocusService.prototype, "rangeService", void 0);
46543 __decorate([
46544 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('navigationService')
46545 ], FocusService.prototype, "navigationService", void 0);
46546 __decorate([
46547 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
46548 ], FocusService.prototype, "ctrlsService", void 0);
46549 __decorate([
46550 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
46551 ], FocusService.prototype, "init", null);
46552 FocusService = FocusService_1 = __decorate([
46553 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('focusService')
46554 ], FocusService);
46555 return FocusService;
46556}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
46557
46558
46559
46560
46561
46562/***/ }),
46563/* 207 */
46564/***/ (function(module, __webpack_exports__, __webpack_require__) {
46565
46566"use strict";
46567__webpack_require__.r(__webpack_exports__);
46568/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualList", function() { return VirtualList; });
46569/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
46570/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
46571/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
46572/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65);
46573/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
46574/* harmony import */ var _tabGuardComp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(202);
46575/**
46576 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46577 * @version v27.3.0
46578 * @link https://www.ag-grid.com/
46579 * @license MIT
46580 */
46581var __extends = (undefined && undefined.__extends) || (function () {
46582 var extendStatics = function (d, b) {
46583 extendStatics = Object.setPrototypeOf ||
46584 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
46585 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
46586 return extendStatics(d, b);
46587 };
46588 return function (d, b) {
46589 extendStatics(d, b);
46590 function __() { this.constructor = d; }
46591 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
46592 };
46593})();
46594var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
46595 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46596 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
46597 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;
46598 return c > 3 && r && Object.defineProperty(target, key, r), r;
46599};
46600
46601
46602
46603
46604
46605
46606var VirtualList = /** @class */ (function (_super) {
46607 __extends(VirtualList, _super);
46608 function VirtualList(cssIdentifier, ariaRole, listName) {
46609 if (cssIdentifier === void 0) { cssIdentifier = 'default'; }
46610 if (ariaRole === void 0) { ariaRole = 'listbox'; }
46611 var _this = _super.call(this, VirtualList.getTemplate(cssIdentifier)) || this;
46612 _this.cssIdentifier = cssIdentifier;
46613 _this.ariaRole = ariaRole;
46614 _this.listName = listName;
46615 _this.renderedRows = new Map();
46616 _this.rowHeight = 20;
46617 _this.isDestroyed = false;
46618 return _this;
46619 }
46620 VirtualList.prototype.postConstruct = function () {
46621 var _this = this;
46622 this.addScrollListener();
46623 this.rowHeight = this.getItemHeight();
46624 this.addResizeObserver();
46625 this.initialiseTabGuard({
46626 onFocusIn: function (e) { return _this.onFocusIn(e); },
46627 onFocusOut: function (e) { return _this.onFocusOut(e); },
46628 focusInnerElement: function (fromBottom) { return _this.focusInnerElement(fromBottom); },
46629 onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },
46630 handleKeyDown: function (e) { return _this.handleKeyDown(e); }
46631 });
46632 this.setAriaProperties();
46633 };
46634 VirtualList.prototype.setAriaProperties = function () {
46635 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
46636 var listName = translate('ariaDefaultListName', this.listName || 'List');
46637 var ariaEl = this.eContainer;
46638 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaRole"])(ariaEl, this.ariaRole);
46639 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaLabel"])(ariaEl, listName);
46640 };
46641 VirtualList.prototype.addResizeObserver = function () {
46642 var listener = this.drawVirtualRows.bind(this);
46643 var destroyObserver = this.resizeObserverService.observeResize(this.getGui(), listener);
46644 this.addDestroyFunc(destroyObserver);
46645 };
46646 VirtualList.prototype.focusInnerElement = function (fromBottom) {
46647 this.focusRow(fromBottom ? this.model.getRowCount() - 1 : 0);
46648 };
46649 VirtualList.prototype.onFocusIn = function (e) {
46650 var target = e.target;
46651 if (target.classList.contains('ag-virtual-list-item')) {
46652 this.lastFocusedRowIndex = Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["getAriaPosInSet"])(target) - 1;
46653 }
46654 return false;
46655 };
46656 VirtualList.prototype.onFocusOut = function (e) {
46657 if (!this.getFocusableElement().contains(e.relatedTarget)) {
46658 this.lastFocusedRowIndex = null;
46659 }
46660 return false;
46661 };
46662 VirtualList.prototype.handleKeyDown = function (e) {
46663 switch (e.key) {
46664 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP:
46665 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].DOWN:
46666 if (this.navigate(e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP)) {
46667 e.preventDefault();
46668 }
46669 break;
46670 }
46671 };
46672 VirtualList.prototype.onTabKeyDown = function (e) {
46673 if (this.navigate(e.shiftKey)) {
46674 e.preventDefault();
46675 }
46676 else {
46677 // focus on the first or last focusable element to ensure that any other handlers start from there
46678 this.focusService.focusInto(this.getGui(), !e.shiftKey);
46679 }
46680 };
46681 VirtualList.prototype.navigate = function (up) {
46682 if (this.lastFocusedRowIndex == null) {
46683 return false;
46684 }
46685 var nextRow = this.lastFocusedRowIndex + (up ? -1 : 1);
46686 if (nextRow < 0 || nextRow >= this.model.getRowCount()) {
46687 return false;
46688 }
46689 this.focusRow(nextRow);
46690 return true;
46691 };
46692 VirtualList.prototype.getLastFocusedRow = function () {
46693 return this.lastFocusedRowIndex;
46694 };
46695 VirtualList.prototype.focusRow = function (rowNumber) {
46696 var _this = this;
46697 this.ensureIndexVisible(rowNumber);
46698 window.setTimeout(function () {
46699 var renderedRow = _this.renderedRows.get(rowNumber);
46700 if (renderedRow) {
46701 renderedRow.eDiv.focus();
46702 }
46703 }, 10);
46704 };
46705 VirtualList.prototype.getComponentAt = function (rowIndex) {
46706 var comp = this.renderedRows.get(rowIndex);
46707 return comp && comp.rowComponent;
46708 };
46709 VirtualList.getTemplate = function (cssIdentifier) {
46710 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>";
46711 };
46712 VirtualList.prototype.getItemHeight = function () {
46713 return this.gridOptionsWrapper.getListItemHeight();
46714 };
46715 VirtualList.prototype.ensureIndexVisible = function (index) {
46716 var lastRow = this.model.getRowCount();
46717 if (typeof index !== 'number' || index < 0 || index >= lastRow) {
46718 console.warn('AG Grid: invalid row index for ensureIndexVisible: ' + index);
46719 return;
46720 }
46721 var rowTopPixel = index * this.rowHeight;
46722 var rowBottomPixel = rowTopPixel + this.rowHeight;
46723 var eGui = this.getGui();
46724 var viewportTopPixel = eGui.scrollTop;
46725 var viewportHeight = eGui.offsetHeight;
46726 var viewportBottomPixel = viewportTopPixel + viewportHeight;
46727 var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;
46728 var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;
46729 if (viewportScrolledPastRow) {
46730 // if row is before, scroll up with row at top
46731 eGui.scrollTop = rowTopPixel;
46732 }
46733 else if (viewportScrolledBeforeRow) {
46734 // if row is below, scroll down with row at bottom
46735 var newScrollPosition = rowBottomPixel - viewportHeight;
46736 eGui.scrollTop = newScrollPosition;
46737 }
46738 };
46739 VirtualList.prototype.setComponentCreator = function (componentCreator) {
46740 this.componentCreator = componentCreator;
46741 };
46742 VirtualList.prototype.getRowHeight = function () {
46743 return this.rowHeight;
46744 };
46745 VirtualList.prototype.getScrollTop = function () {
46746 return this.getGui().scrollTop;
46747 };
46748 VirtualList.prototype.setRowHeight = function (rowHeight) {
46749 this.rowHeight = rowHeight;
46750 this.refresh();
46751 };
46752 VirtualList.prototype.refresh = function () {
46753 var _this = this;
46754 if (this.model == null || this.isDestroyed) {
46755 return;
46756 }
46757 var rowCount = this.model.getRowCount();
46758 this.eContainer.style.height = rowCount * this.rowHeight + "px";
46759 // ensure height is applied before attempting to redraw rows
46760 Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["waitUntil"])(function () { return _this.eContainer.clientHeight >= rowCount * _this.rowHeight; }, function () {
46761 if (_this.isDestroyed) {
46762 return;
46763 }
46764 _this.clearVirtualRows();
46765 _this.drawVirtualRows();
46766 });
46767 };
46768 VirtualList.prototype.clearVirtualRows = function () {
46769 var _this = this;
46770 this.renderedRows.forEach(function (_, rowIndex) { return _this.removeRow(rowIndex); });
46771 };
46772 VirtualList.prototype.drawVirtualRows = function () {
46773 var gui = this.getGui();
46774 var topPixel = gui.scrollTop;
46775 var bottomPixel = topPixel + gui.offsetHeight;
46776 var firstRow = Math.floor(topPixel / this.rowHeight);
46777 var lastRow = Math.floor(bottomPixel / this.rowHeight);
46778 this.ensureRowsRendered(firstRow, lastRow);
46779 };
46780 VirtualList.prototype.ensureRowsRendered = function (start, finish) {
46781 var _this = this;
46782 // remove any rows that are no longer required
46783 this.renderedRows.forEach(function (_, rowIndex) {
46784 if ((rowIndex < start || rowIndex > finish) && rowIndex !== _this.lastFocusedRowIndex) {
46785 _this.removeRow(rowIndex);
46786 }
46787 });
46788 // insert any required new rows
46789 for (var rowIndex = start; rowIndex <= finish; rowIndex++) {
46790 if (this.renderedRows.has(rowIndex)) {
46791 continue;
46792 }
46793 // check this row actually exists (in case overflow buffer window exceeds real data)
46794 if (rowIndex < this.model.getRowCount()) {
46795 this.insertRow(rowIndex);
46796 }
46797 }
46798 };
46799 VirtualList.prototype.insertRow = function (rowIndex) {
46800 var _this = this;
46801 var value = this.model.getRow(rowIndex);
46802 var eDiv = document.createElement('div');
46803 eDiv.classList.add('ag-virtual-list-item', "ag-" + this.cssIdentifier + "-virtual-list-item");
46804 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaRole"])(eDiv, this.ariaRole === 'tree' ? 'treeitem' : 'option');
46805 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaSetSize"])(eDiv, this.model.getRowCount());
46806 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaPosInSet"])(eDiv, rowIndex + 1);
46807 eDiv.setAttribute('tabindex', '-1');
46808 if (typeof this.model.isRowSelected === 'function') {
46809 var isSelected = this.model.isRowSelected(rowIndex);
46810 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaSelected"])(eDiv, !!isSelected);
46811 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaChecked"])(eDiv, isSelected);
46812 }
46813 eDiv.style.height = this.rowHeight + "px";
46814 eDiv.style.top = this.rowHeight * rowIndex + "px";
46815 var rowComponent = this.componentCreator(value, eDiv);
46816 rowComponent.addGuiEventListener('focusin', function () { return _this.lastFocusedRowIndex = rowIndex; });
46817 eDiv.appendChild(rowComponent.getGui());
46818 // keep the DOM order consistent with the order of the rows
46819 if (this.renderedRows.has(rowIndex - 1)) {
46820 this.renderedRows.get(rowIndex - 1).eDiv.insertAdjacentElement('afterend', eDiv);
46821 }
46822 else if (this.renderedRows.has(rowIndex + 1)) {
46823 this.renderedRows.get(rowIndex + 1).eDiv.insertAdjacentElement('beforebegin', eDiv);
46824 }
46825 else {
46826 this.eContainer.appendChild(eDiv);
46827 }
46828 this.renderedRows.set(rowIndex, { rowComponent: rowComponent, eDiv: eDiv });
46829 };
46830 VirtualList.prototype.removeRow = function (rowIndex) {
46831 var component = this.renderedRows.get(rowIndex);
46832 this.eContainer.removeChild(component.eDiv);
46833 this.destroyBean(component.rowComponent);
46834 this.renderedRows.delete(rowIndex);
46835 };
46836 VirtualList.prototype.addScrollListener = function () {
46837 var _this = this;
46838 this.addGuiEventListener('scroll', function () { return _this.drawVirtualRows(); });
46839 };
46840 VirtualList.prototype.setModel = function (model) {
46841 this.model = model;
46842 };
46843 VirtualList.prototype.destroy = function () {
46844 if (this.isDestroyed) {
46845 return;
46846 }
46847 this.clearVirtualRows();
46848 this.isDestroyed = true;
46849 _super.prototype.destroy.call(this);
46850 };
46851 __decorate([
46852 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('resizeObserverService')
46853 ], VirtualList.prototype, "resizeObserverService", void 0);
46854 __decorate([
46855 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
46856 ], VirtualList.prototype, "focusService", void 0);
46857 __decorate([
46858 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eContainer')
46859 ], VirtualList.prototype, "eContainer", void 0);
46860 __decorate([
46861 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
46862 ], VirtualList.prototype, "postConstruct", null);
46863 return VirtualList;
46864}(_tabGuardComp__WEBPACK_IMPORTED_MODULE_5__["TabGuardComp"]));
46865
46866
46867
46868
46869
46870/***/ }),
46871/* 208 */
46872/***/ (function(module, __webpack_exports__, __webpack_require__) {
46873
46874"use strict";
46875__webpack_require__.r(__webpack_exports__);
46876/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VanillaFrameworkOverrides", function() { return VanillaFrameworkOverrides; });
46877/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
46878/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
46879/**
46880 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46881 * @version v27.3.0
46882 * @link https://www.ag-grid.com/
46883 * @license MIT
46884 */
46885
46886
46887var OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'];
46888var PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];
46889/** The base frameworks, eg React & Angular, override this bean with implementations specific to their requirement. */
46890var VanillaFrameworkOverrides = /** @class */ (function () {
46891 function VanillaFrameworkOverrides() {
46892 this.isOutsideAngular = function (eventType) { return Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["includes"])(OUTSIDE_ANGULAR_EVENTS, eventType); };
46893 }
46894 // for Vanilla JS, we use simple timeout
46895 VanillaFrameworkOverrides.prototype.setTimeout = function (action, timeout) {
46896 window.setTimeout(action, timeout);
46897 };
46898 VanillaFrameworkOverrides.prototype.setInterval = function (action, timeout) {
46899 return new _utils__WEBPACK_IMPORTED_MODULE_1__["AgPromise"](function (resolve) {
46900 resolve(window.setInterval(action, timeout));
46901 });
46902 };
46903 // for Vanilla JS, we just add the event to the element
46904 VanillaFrameworkOverrides.prototype.addEventListener = function (element, type, listener, useCapture) {
46905 var isPassive = Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["includes"])(PASSIVE_EVENTS, type);
46906 element.addEventListener(type, listener, { capture: !!useCapture, passive: isPassive });
46907 };
46908 // for Vanilla JS, we just execute the listener
46909 VanillaFrameworkOverrides.prototype.dispatchEvent = function (eventType, listener, global) {
46910 if (global === void 0) { global = false; }
46911 listener();
46912 };
46913 VanillaFrameworkOverrides.prototype.frameworkComponent = function (name) {
46914 return null;
46915 };
46916 VanillaFrameworkOverrides.prototype.isFrameworkComponent = function (comp) {
46917 return false;
46918 };
46919 return VanillaFrameworkOverrides;
46920}());
46921
46922
46923
46924
46925
46926/***/ }),
46927/* 209 */
46928/***/ (function(module, __webpack_exports__, __webpack_require__) {
46929
46930"use strict";
46931__webpack_require__.r(__webpack_exports__);
46932/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellNavigationService", function() { return CellNavigationService; });
46933/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
46934/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
46935/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
46936/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
46937/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
46938/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65);
46939/**
46940 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46941 * @version v27.3.0
46942 * @link https://www.ag-grid.com/
46943 * @license MIT
46944 */
46945var __extends = (undefined && undefined.__extends) || (function () {
46946 var extendStatics = function (d, b) {
46947 extendStatics = Object.setPrototypeOf ||
46948 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
46949 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
46950 return extendStatics(d, b);
46951 };
46952 return function (d, b) {
46953 extendStatics(d, b);
46954 function __() { this.constructor = d; }
46955 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
46956 };
46957})();
46958var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
46959 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46960 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
46961 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;
46962 return c > 3 && r && Object.defineProperty(target, key, r), r;
46963};
46964
46965
46966
46967
46968
46969
46970var CellNavigationService = /** @class */ (function (_super) {
46971 __extends(CellNavigationService, _super);
46972 function CellNavigationService() {
46973 return _super !== null && _super.apply(this, arguments) || this;
46974 }
46975 // returns null if no cell to focus on, ie at the end of the grid
46976 CellNavigationService.prototype.getNextCellToFocus = function (key, focusedCell, ctrlPressed) {
46977 if (ctrlPressed === void 0) { ctrlPressed = false; }
46978 if (ctrlPressed) {
46979 return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);
46980 }
46981 return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);
46982 };
46983 CellNavigationService.prototype.getNextCellToFocusWithCtrlPressed = function (key, focusedCell) {
46984 var upKey = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].UP;
46985 var downKey = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].DOWN;
46986 var leftKey = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].LEFT;
46987 var column;
46988 var rowIndex;
46989 if (upKey || downKey) {
46990 rowIndex = upKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();
46991 column = focusedCell.column;
46992 }
46993 else {
46994 var allColumns = this.columnModel.getAllDisplayedColumns();
46995 var isRtl = this.gridOptionsWrapper.isEnableRtl();
46996 rowIndex = focusedCell.rowIndex;
46997 column = leftKey !== isRtl ? allColumns[0] : Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(allColumns);
46998 }
46999 return {
47000 rowIndex: rowIndex,
47001 rowPinned: null,
47002 column: column
47003 };
47004 };
47005 CellNavigationService.prototype.getNextCellToFocusWithoutCtrlPressed = function (key, focusedCell) {
47006 // starting with the provided cell, we keep moving until we find a cell we can
47007 // focus on.
47008 var pointer = focusedCell;
47009 var finished = false;
47010 // finished will be true when either:
47011 // a) cell found that we can focus on
47012 // b) run out of cells (ie the method returns null)
47013 while (!finished) {
47014 switch (key) {
47015 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].UP:
47016 pointer = this.getCellAbove(pointer);
47017 break;
47018 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].DOWN:
47019 pointer = this.getCellBelow(pointer);
47020 break;
47021 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT:
47022 if (this.gridOptionsWrapper.isEnableRtl()) {
47023 pointer = this.getCellToLeft(pointer);
47024 }
47025 else {
47026 pointer = this.getCellToRight(pointer);
47027 }
47028 break;
47029 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].LEFT:
47030 if (this.gridOptionsWrapper.isEnableRtl()) {
47031 pointer = this.getCellToRight(pointer);
47032 }
47033 else {
47034 pointer = this.getCellToLeft(pointer);
47035 }
47036 break;
47037 default:
47038 pointer = null;
47039 console.warn('AG Grid: unknown key for navigation ' + key);
47040 break;
47041 }
47042 if (pointer) {
47043 finished = this.isCellGoodToFocusOn(pointer);
47044 }
47045 else {
47046 finished = true;
47047 }
47048 }
47049 return pointer;
47050 };
47051 CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {
47052 var column = gridCell.column;
47053 var rowNode;
47054 switch (gridCell.rowPinned) {
47055 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP:
47056 rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);
47057 break;
47058 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM:
47059 rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);
47060 break;
47061 default:
47062 rowNode = this.rowModel.getRow(gridCell.rowIndex);
47063 break;
47064 }
47065 if (!rowNode) {
47066 return false;
47067 }
47068 var suppressNavigable = column.isSuppressNavigable(rowNode);
47069 return !suppressNavigable;
47070 };
47071 CellNavigationService.prototype.getCellToLeft = function (lastCell) {
47072 if (!lastCell) {
47073 return null;
47074 }
47075 var colToLeft = this.columnModel.getDisplayedColBefore(lastCell.column);
47076 if (!colToLeft) {
47077 return null;
47078 }
47079 return {
47080 rowIndex: lastCell.rowIndex,
47081 column: colToLeft,
47082 rowPinned: lastCell.rowPinned
47083 };
47084 };
47085 CellNavigationService.prototype.getCellToRight = function (lastCell) {
47086 if (!lastCell) {
47087 return null;
47088 }
47089 var colToRight = this.columnModel.getDisplayedColAfter(lastCell.column);
47090 // if already on right, do nothing
47091 if (!colToRight) {
47092 return null;
47093 }
47094 return {
47095 rowIndex: lastCell.rowIndex,
47096 column: colToRight,
47097 rowPinned: lastCell.rowPinned
47098 };
47099 };
47100 CellNavigationService.prototype.getRowBelow = function (rowPosition) {
47101 // if already on top row, do nothing
47102 var index = rowPosition.rowIndex;
47103 var pinned = rowPosition.rowPinned;
47104 if (this.isLastRowInContainer(rowPosition)) {
47105 switch (pinned) {
47106 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM:
47107 // never any rows after pinned bottom
47108 return null;
47109 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP:
47110 // if on last row of pinned top, then next row is main body (if rows exist),
47111 // otherwise it's the pinned bottom
47112 if (this.rowModel.isRowsToRender()) {
47113 return { rowIndex: this.paginationProxy.getPageFirstRow(), rowPinned: null };
47114 }
47115 if (this.pinnedRowModel.isRowsToRender(_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM)) {
47116 return { rowIndex: 0, rowPinned: _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM };
47117 }
47118 return null;
47119 default:
47120 // if in the main body, then try pinned bottom, otherwise return nothing
47121 if (this.pinnedRowModel.isRowsToRender(_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM)) {
47122 return { rowIndex: 0, rowPinned: _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM };
47123 }
47124 return null;
47125 }
47126 }
47127 return { rowIndex: index + 1, rowPinned: pinned };
47128 };
47129 CellNavigationService.prototype.getCellBelow = function (lastCell) {
47130 if (!lastCell) {
47131 return null;
47132 }
47133 var rowBelow = this.getRowBelow(lastCell);
47134 if (rowBelow) {
47135 return {
47136 rowIndex: rowBelow.rowIndex,
47137 column: lastCell.column,
47138 rowPinned: rowBelow.rowPinned
47139 };
47140 }
47141 return null;
47142 };
47143 CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {
47144 var pinned = rowPosition.rowPinned;
47145 var index = rowPosition.rowIndex;
47146 if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP) {
47147 var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;
47148 return lastTopIndex <= index;
47149 }
47150 if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM) {
47151 var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;
47152 return lastBottomIndex <= index;
47153 }
47154 var lastBodyIndex = this.paginationProxy.getPageLastRow();
47155 return lastBodyIndex <= index;
47156 };
47157 CellNavigationService.prototype.getRowAbove = function (rowPosition) {
47158 // if already on top row, do nothing
47159 var index = rowPosition.rowIndex;
47160 var pinned = rowPosition.rowPinned;
47161 var isFirstRow = pinned ? index === 0 : index === this.paginationProxy.getPageFirstRow();
47162 // if already on top row, do nothing
47163 if (isFirstRow) {
47164 if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP) {
47165 return null;
47166 }
47167 if (!pinned) {
47168 if (this.pinnedRowModel.isRowsToRender(_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP)) {
47169 return this.getLastFloatingTopRow();
47170 }
47171 return null;
47172 }
47173 // last floating bottom
47174 if (this.rowModel.isRowsToRender()) {
47175 return this.getLastBodyCell();
47176 }
47177 if (this.pinnedRowModel.isRowsToRender(_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP)) {
47178 return this.getLastFloatingTopRow();
47179 }
47180 return null;
47181 }
47182 return { rowIndex: index - 1, rowPinned: pinned };
47183 };
47184 CellNavigationService.prototype.getCellAbove = function (lastCell) {
47185 if (!lastCell) {
47186 return null;
47187 }
47188 var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });
47189 if (rowAbove) {
47190 return {
47191 rowIndex: rowAbove.rowIndex,
47192 column: lastCell.column,
47193 rowPinned: rowAbove.rowPinned
47194 };
47195 }
47196 return null;
47197 };
47198 CellNavigationService.prototype.getLastBodyCell = function () {
47199 var lastBodyRow = this.paginationProxy.getPageLastRow();
47200 return { rowIndex: lastBodyRow, rowPinned: null };
47201 };
47202 CellNavigationService.prototype.getLastFloatingTopRow = function () {
47203 var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;
47204 return { rowIndex: lastFloatingRow, rowPinned: _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP };
47205 };
47206 CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {
47207 if (backwards) {
47208 return this.getNextTabbedCellBackwards(gridCell);
47209 }
47210 return this.getNextTabbedCellForwards(gridCell);
47211 };
47212 CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {
47213 var displayedColumns = this.columnModel.getAllDisplayedColumns();
47214 var newRowIndex = gridCell.rowIndex;
47215 var newFloating = gridCell.rowPinned;
47216 // move along to the next cell
47217 var newColumn = this.columnModel.getDisplayedColAfter(gridCell.column);
47218 // check if end of the row, and if so, go forward a row
47219 if (!newColumn) {
47220 newColumn = displayedColumns[0];
47221 var rowBelow = this.getRowBelow(gridCell);
47222 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(rowBelow)) {
47223 return null;
47224 }
47225 // If we are tabbing and there is a paging panel present, tabbing should go
47226 // to the paging panel instead of loading the next page.
47227 if (!rowBelow.rowPinned && !this.paginationProxy.isRowInPage(rowBelow)) {
47228 return null;
47229 }
47230 newRowIndex = rowBelow ? rowBelow.rowIndex : null;
47231 newFloating = rowBelow ? rowBelow.rowPinned : null;
47232 }
47233 return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };
47234 };
47235 CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {
47236 var displayedColumns = this.columnModel.getAllDisplayedColumns();
47237 var newRowIndex = gridCell.rowIndex;
47238 var newFloating = gridCell.rowPinned;
47239 // move along to the next cell
47240 var newColumn = this.columnModel.getDisplayedColBefore(gridCell.column);
47241 // check if end of the row, and if so, go forward a row
47242 if (!newColumn) {
47243 newColumn = Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(displayedColumns);
47244 var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });
47245 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(rowAbove)) {
47246 return null;
47247 }
47248 // If we are tabbing and there is a paging panel present, tabbing should go
47249 // to the paging panel instead of loading the next page.
47250 if (!rowAbove.rowPinned && !this.paginationProxy.isRowInPage(rowAbove)) {
47251 return null;
47252 }
47253 newRowIndex = rowAbove ? rowAbove.rowIndex : null;
47254 newFloating = rowAbove ? rowAbove.rowPinned : null;
47255 }
47256 return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };
47257 };
47258 __decorate([
47259 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
47260 ], CellNavigationService.prototype, "columnModel", void 0);
47261 __decorate([
47262 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
47263 ], CellNavigationService.prototype, "rowModel", void 0);
47264 __decorate([
47265 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedRowModel')
47266 ], CellNavigationService.prototype, "pinnedRowModel", void 0);
47267 __decorate([
47268 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
47269 ], CellNavigationService.prototype, "paginationProxy", void 0);
47270 CellNavigationService = __decorate([
47271 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('cellNavigationService')
47272 ], CellNavigationService);
47273 return CellNavigationService;
47274}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
47275
47276
47277
47278
47279
47280/***/ }),
47281/* 210 */
47282/***/ (function(module, __webpack_exports__, __webpack_require__) {
47283
47284"use strict";
47285__webpack_require__.r(__webpack_exports__);
47286/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AlignedGridsService", function() { return AlignedGridsService; });
47287/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
47288/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
47289/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
47290/**
47291 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
47292 * @version v27.3.0
47293 * @link https://www.ag-grid.com/
47294 * @license MIT
47295 */
47296var __extends = (undefined && undefined.__extends) || (function () {
47297 var extendStatics = function (d, b) {
47298 extendStatics = Object.setPrototypeOf ||
47299 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
47300 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
47301 return extendStatics(d, b);
47302 };
47303 return function (d, b) {
47304 extendStatics(d, b);
47305 function __() { this.constructor = d; }
47306 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
47307 };
47308})();
47309var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
47310 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
47311 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
47312 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;
47313 return c > 3 && r && Object.defineProperty(target, key, r), r;
47314};
47315var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
47316 return function (target, key) { decorator(target, key, paramIndex); }
47317};
47318
47319
47320
47321
47322
47323
47324var AlignedGridsService = /** @class */ (function (_super) {
47325 __extends(AlignedGridsService, _super);
47326 function AlignedGridsService() {
47327 var _this = _super !== null && _super.apply(this, arguments) || this;
47328 // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master
47329 // while processing a master event) we mark this if consuming an event, and if we are, then
47330 // we don't fire back any events.
47331 _this.consuming = false;
47332 return _this;
47333 }
47334 AlignedGridsService.prototype.setBeans = function (loggerFactory) {
47335 this.logger = loggerFactory.create('AlignedGridsService');
47336 };
47337 AlignedGridsService.prototype.init = function () {
47338 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));
47339 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));
47340 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));
47341 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));
47342 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));
47343 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));
47344 };
47345 // common logic across all the fire methods
47346 AlignedGridsService.prototype.fireEvent = function (callback) {
47347 // if we are already consuming, then we are acting on an event from a master,
47348 // so we don't cause a cyclic firing of events
47349 if (this.consuming) {
47350 return;
47351 }
47352 // iterate through the aligned grids, and pass each aligned grid service to the callback
47353 var otherGrids = this.gridOptionsWrapper.getAlignedGrids();
47354 if (otherGrids) {
47355 otherGrids.forEach(function (otherGridOptions) {
47356 if (otherGridOptions.api) {
47357 var alignedGridService = otherGridOptions.api.__getAlignedGridService();
47358 callback(alignedGridService);
47359 }
47360 });
47361 }
47362 };
47363 // common logic across all consume methods. very little common logic, however extracting
47364 // guarantees consistency across the methods.
47365 AlignedGridsService.prototype.onEvent = function (callback) {
47366 this.consuming = true;
47367 callback();
47368 this.consuming = false;
47369 };
47370 AlignedGridsService.prototype.fireColumnEvent = function (event) {
47371 this.fireEvent(function (alignedGridsService) {
47372 alignedGridsService.onColumnEvent(event);
47373 });
47374 };
47375 AlignedGridsService.prototype.fireScrollEvent = function (event) {
47376 if (event.direction !== 'horizontal') {
47377 return;
47378 }
47379 this.fireEvent(function (alignedGridsService) {
47380 alignedGridsService.onScrollEvent(event);
47381 });
47382 };
47383 AlignedGridsService.prototype.onScrollEvent = function (event) {
47384 var _this = this;
47385 this.onEvent(function () {
47386 var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
47387 gridBodyCon.getScrollFeature().setHorizontalScrollPosition(event.left);
47388 });
47389 };
47390 AlignedGridsService.prototype.getMasterColumns = function (event) {
47391 var result = [];
47392 if (event.columns) {
47393 event.columns.forEach(function (column) {
47394 result.push(column);
47395 });
47396 }
47397 else if (event.column) {
47398 result.push(event.column);
47399 }
47400 return result;
47401 };
47402 AlignedGridsService.prototype.getColumnIds = function (event) {
47403 var result = [];
47404 if (event.columns) {
47405 event.columns.forEach(function (column) {
47406 result.push(column.getColId());
47407 });
47408 }
47409 else if (event.column) {
47410 result.push(event.column.getColId());
47411 }
47412 return result;
47413 };
47414 AlignedGridsService.prototype.onColumnEvent = function (event) {
47415 var _this = this;
47416 this.onEvent(function () {
47417 switch (event.type) {
47418 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_MOVED:
47419 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_VISIBLE:
47420 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PINNED:
47421 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_RESIZED:
47422 var colEvent = event;
47423 _this.processColumnEvent(colEvent);
47424 break;
47425 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_GROUP_OPENED:
47426 var groupOpenedEvent = event;
47427 _this.processGroupOpenedEvent(groupOpenedEvent);
47428 break;
47429 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PIVOT_CHANGED:
47430 // we cannot support pivoting with aligned grids as the columns will be out of sync as the
47431 // grids will have columns created based on the row data of the grid.
47432 console.warn('AG Grid: pivoting is not supported with aligned grids. ' +
47433 'You can only use one of these features at a time in a grid.');
47434 break;
47435 }
47436 });
47437 };
47438 AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {
47439 // likewise for column group
47440 var masterColumnGroup = groupOpenedEvent.columnGroup;
47441 var otherColumnGroup = null;
47442 if (masterColumnGroup) {
47443 var groupId = masterColumnGroup.getGroupId();
47444 otherColumnGroup = this.columnModel.getProvidedColumnGroup(groupId);
47445 }
47446 if (masterColumnGroup && !otherColumnGroup) {
47447 return;
47448 }
47449 this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());
47450 this.columnModel.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), "alignedGridChanged");
47451 };
47452 AlignedGridsService.prototype.processColumnEvent = function (colEvent) {
47453 var _this = this;
47454 // the column in the event is from the master grid. need to
47455 // look up the equivalent from this (other) grid
47456 var masterColumn = colEvent.column;
47457 var otherColumn = null;
47458 if (masterColumn) {
47459 otherColumn = this.columnModel.getPrimaryColumn(masterColumn.getColId());
47460 }
47461 // if event was with respect to a master column, that is not present in this
47462 // grid, then we ignore the event
47463 if (masterColumn && !otherColumn) {
47464 return;
47465 }
47466 // in time, all the methods below should use the column ids, it's a more generic way
47467 // of handling columns, and also allows for single or multi column events
47468 var masterColumns = this.getMasterColumns(colEvent);
47469 switch (colEvent.type) {
47470 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_MOVED:
47471 // when the user moves columns via setColumnState, we can't depend on moving specific columns
47472 // to an index, as there maybe be many indexes columns moved to (as wasn't result of a mouse drag).
47473 // so only way to be sure is match the order of all columns using Column State.
47474 {
47475 var movedEvent = colEvent;
47476 var srcColState = colEvent.columnApi.getColumnState();
47477 var destColState = srcColState.map(function (s) { return ({ colId: s.colId }); });
47478 this.columnModel.applyColumnState({ state: destColState, applyOrder: true }, "alignedGridChanged");
47479 this.logger.log("onColumnEvent-> processing " + colEvent.type + " toIndex = " + movedEvent.toIndex);
47480 }
47481 break;
47482 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_VISIBLE:
47483 // when the user changes visibility via setColumnState, we can't depend on visibility flag in event
47484 // as there maybe be mix of true/false (as wasn't result of a mouse click to set visiblity).
47485 // so only way to be sure is match the visibility of all columns using Column State.
47486 {
47487 var visibleEvent = colEvent;
47488 var srcColState = colEvent.columnApi.getColumnState();
47489 var destColState = srcColState.map(function (s) { return ({ colId: s.colId, hide: s.hide }); });
47490 this.columnModel.applyColumnState({ state: destColState }, "alignedGridChanged");
47491 this.logger.log("onColumnEvent-> processing " + colEvent.type + " visible = " + visibleEvent.visible);
47492 }
47493 break;
47494 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PINNED:
47495 {
47496 var pinnedEvent = colEvent;
47497 var srcColState = colEvent.columnApi.getColumnState();
47498 var destColState = srcColState.map(function (s) { return ({ colId: s.colId, pinned: s.pinned }); });
47499 this.columnModel.applyColumnState({ state: destColState }, "alignedGridChanged");
47500 this.logger.log("onColumnEvent-> processing " + colEvent.type + " pinned = " + pinnedEvent.pinned);
47501 }
47502 break;
47503 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_RESIZED:
47504 var resizedEvent_1 = colEvent;
47505 masterColumns.forEach(function (column) {
47506 _this.logger.log("onColumnEvent-> processing " + colEvent.type + " actualWidth = " + column.getActualWidth());
47507 var columnWidths = [{ key: column.getColId(), newWidth: column.getActualWidth() }];
47508 _this.columnModel.setColumnWidths(columnWidths, false, resizedEvent_1.finished, "alignedGridChanged");
47509 });
47510 break;
47511 }
47512 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
47513 var isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();
47514 var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();
47515 if (alignedGrids) {
47516 alignedGrids.forEach(function (grid) {
47517 if (grid.api) {
47518 grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);
47519 }
47520 });
47521 }
47522 };
47523 __decorate([
47524 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
47525 ], AlignedGridsService.prototype, "columnModel", void 0);
47526 __decorate([
47527 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
47528 ], AlignedGridsService.prototype, "ctrlsService", void 0);
47529 __decorate([
47530 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Qualifier"])('loggerFactory'))
47531 ], AlignedGridsService.prototype, "setBeans", null);
47532 __decorate([
47533 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
47534 ], AlignedGridsService.prototype, "init", null);
47535 AlignedGridsService = __decorate([
47536 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('alignedGridsService')
47537 ], AlignedGridsService);
47538 return AlignedGridsService;
47539}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
47540
47541
47542
47543
47544
47545/***/ }),
47546/* 211 */
47547/***/ (function(module, __webpack_exports__, __webpack_require__) {
47548
47549"use strict";
47550__webpack_require__.r(__webpack_exports__);
47551/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return Grid; });
47552/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridCoreCreator", function() { return GridCoreCreator; });
47553/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112);
47554/* harmony import */ var _selectionService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(212);
47555/* harmony import */ var _columns_columnApi__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(213);
47556/* harmony import */ var _columns_columnModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22);
47557/* harmony import */ var _rendering_rowRenderer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(178);
47558/* harmony import */ var _headerRendering_gridHeaderComp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(167);
47559/* harmony import */ var _filter_filterManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(107);
47560/* harmony import */ var _valueService_valueService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(214);
47561/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(11);
47562/* harmony import */ var _gridBodyComp_gridBodyComp__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(110);
47563/* harmony import */ var _gridApi__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(156);
47564/* harmony import */ var _columns_columnFactory__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(5);
47565/* harmony import */ var _columns_displayedGroupCreator__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(29);
47566/* harmony import */ var _valueService_expressionService__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(215);
47567/* harmony import */ var _templateService__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(216);
47568/* harmony import */ var _widgets_popupService__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(205);
47569/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(217);
47570/* harmony import */ var _columns_columnUtils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(28);
47571/* harmony import */ var _rendering_autoWidthCalculator__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(177);
47572/* harmony import */ var _headerRendering_common_horizontalResizeService__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(170);
47573/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(12);
47574/* harmony import */ var _gridComp_gridComp__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(218);
47575/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(97);
47576/* harmony import */ var _dragAndDrop_dragService__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(106);
47577/* harmony import */ var _sortController__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(220);
47578/* harmony import */ var _focusService__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(206);
47579/* harmony import */ var _gridBodyComp_mouseEventService__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(138);
47580/* harmony import */ var _cellNavigationService__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(209);
47581/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(23);
47582/* harmony import */ var _rendering_valueFormatterService__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(179);
47583/* harmony import */ var _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(163);
47584/* harmony import */ var _widgets_agRadioButton__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(187);
47585/* harmony import */ var _vanillaFrameworkOverrides__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(208);
47586/* harmony import */ var _gridBodyComp_scrollVisibleService__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(137);
47587/* harmony import */ var _styling_stylingService__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(186);
47588/* harmony import */ var _rendering_columnHoverService__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(221);
47589/* harmony import */ var _rendering_columnAnimationService__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(222);
47590/* harmony import */ var _columns_autoGroupColService__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(223);
47591/* harmony import */ var _pagination_paginationProxy__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(185);
47592/* harmony import */ var _pagination_paginationAutoPageSizeService__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(224);
47593/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(15);
47594/* harmony import */ var _valueService_valueCache__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(225);
47595/* harmony import */ var _valueService_changeDetectionService__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(226);
47596/* harmony import */ var _alignedGridsService__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(210);
47597/* harmony import */ var _components_framework_userComponentFactory__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(102);
47598/* harmony import */ var _components_framework_userComponentRegistry__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(34);
47599/* harmony import */ var _components_framework_agComponentUtils__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(227);
47600/* harmony import */ var _components_framework_componentMetadataProvider__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(228);
47601/* harmony import */ var _rendering_beans__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(128);
47602/* harmony import */ var _environment__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(229);
47603/* harmony import */ var _misc_animationFrameService__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(175);
47604/* harmony import */ var _gridBodyComp_navigationService__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(139);
47605/* harmony import */ var _rendering_rowContainerHeightService__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(230);
47606/* harmony import */ var _rowNodes_selectableService__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(231);
47607/* harmony import */ var _pagination_paginationComp__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(232);
47608/* harmony import */ var _misc_resizeObserverService__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(174);
47609/* harmony import */ var _rendering_overlays_overlayWrapperComponent__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(233);
47610/* harmony import */ var _widgets_agGroupComponent__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(199);
47611/* harmony import */ var _widgets_agDialog__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(197);
47612/* harmony import */ var _widgets_agPanel__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(198);
47613/* harmony import */ var _widgets_agInputTextField__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(189);
47614/* harmony import */ var _widgets_agInputTextArea__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(190);
47615/* harmony import */ var _widgets_agSlider__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(193);
47616/* harmony import */ var _widgets_agColorPicker__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(195);
47617/* harmony import */ var _widgets_agInputNumberField__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(191);
47618/* harmony import */ var _widgets_agInputRange__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(192);
47619/* harmony import */ var _widgets_agSelect__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(66);
47620/* harmony import */ var _widgets_agAngleSelect__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(194);
47621/* harmony import */ var _widgets_agToggleButton__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(188);
47622/* harmony import */ var _entities_rowPosition__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(234);
47623/* harmony import */ var _entities_cellPosition__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(235);
47624/* harmony import */ var _pinnedRowModel_pinnedRowModel__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(180);
47625/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(17);
47626/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(16);
47627/* harmony import */ var _undoRedo_undoRedoService__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(236);
47628/* harmony import */ var _components_agStackComponentsRegistry__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(32);
47629/* harmony import */ var _headerRendering_common_headerPosition__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(238);
47630/* harmony import */ var _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(169);
47631/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(7);
47632/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(13);
47633/* harmony import */ var _columns_columnDefFactory__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(239);
47634/* harmony import */ var _rendering_row_rowCssClassCalculator__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(240);
47635/* harmony import */ var _rowNodeCache_rowNodeBlockLoader__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(184);
47636/* harmony import */ var _rowNodes_rowNodeSorter__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(241);
47637/* harmony import */ var _ctrlsService__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(242);
47638/* harmony import */ var _ctrlsFactory__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(243);
47639/* harmony import */ var _gridBodyComp_fakeHScrollComp__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(244);
47640/* harmony import */ var _gridBodyComp_pinnedWidthService__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(246);
47641/* harmony import */ var _gridBodyComp_rowContainer_rowContainerComp__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(140);
47642/* harmony import */ var _entities_rowNodeEventThrottle__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(247);
47643/* harmony import */ var _headerRendering_cells_column_standardMenu__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(171);
47644/**
47645 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
47646 * @version v27.3.0
47647 * @link https://www.ag-grid.com/
47648 * @license MIT
47649 */
47650var __read = (undefined && undefined.__read) || function (o, n) {
47651 var m = typeof Symbol === "function" && o[Symbol.iterator];
47652 if (!m) return o;
47653 var i = m.call(o), r, ar = [], e;
47654 try {
47655 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
47656 }
47657 catch (error) { e = { error: error }; }
47658 finally {
47659 try {
47660 if (r && !r.done && (m = i["return"])) m.call(i);
47661 }
47662 finally { if (e) throw e.error; }
47663 }
47664 return ar;
47665};
47666var __spread = (undefined && undefined.__spread) || function () {
47667 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
47668 return ar;
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
47752
47753
47754
47755
47756
47757
47758
47759
47760
47761// creates JavaScript vanilla Grid, including JavaScript (ag-stack) components, which can
47762// be wrapped by the framework wrappers
47763var Grid = /** @class */ (function () {
47764 function Grid(eGridDiv, gridOptions, params) {
47765 if (!gridOptions) {
47766 console.error('AG Grid: no gridOptions provided to the grid');
47767 return;
47768 }
47769 this.gridOptions = gridOptions;
47770 new GridCoreCreator().create(eGridDiv, gridOptions, function (context) {
47771 var gridComp = new _gridComp_gridComp__WEBPACK_IMPORTED_MODULE_21__["GridComp"](eGridDiv);
47772 context.createBean(gridComp);
47773 }, undefined, params);
47774 }
47775 Grid.prototype.destroy = function () {
47776 if (this.gridOptions && this.gridOptions.api) {
47777 this.gridOptions.api.destroy();
47778 }
47779 };
47780 return Grid;
47781}());
47782
47783// created services of grid only, no UI, so frameworks can use this if providing
47784// their own UI
47785var GridCoreCreator = /** @class */ (function () {
47786 function GridCoreCreator() {
47787 }
47788 GridCoreCreator.prototype.create = function (eGridDiv, gridOptions, createUi, acceptChanges, params) {
47789 var _this = this;
47790 var debug = !!gridOptions.debug;
47791 var registeredModules = this.getRegisteredModules(params);
47792 var beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules);
47793 var providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);
47794 if (!beanClasses) {
47795 return;
47796 } // happens when no row model found
47797 var contextParams = {
47798 providedBeanInstances: providedBeanInstances,
47799 beanClasses: beanClasses,
47800 debug: debug
47801 };
47802 var logger = new _logger__WEBPACK_IMPORTED_MODULE_16__["Logger"]('AG Grid', function () { return gridOptions.debug; });
47803 var contextLogger = new _logger__WEBPACK_IMPORTED_MODULE_16__["Logger"]('Context', function () { return contextParams.debug; });
47804 var context = new _context_context__WEBPACK_IMPORTED_MODULE_20__["Context"](contextParams, contextLogger);
47805 var beans = context.getBean('beans');
47806 this.registerModuleUserComponents(beans, registeredModules);
47807 this.registerStackComponents(beans, registeredModules);
47808 this.registerControllers(beans, registeredModules);
47809 createUi(context);
47810 // we wait until the UI has finished initialising before setting in columns and rows
47811 beans.ctrlsService.whenReady(function () {
47812 _this.setColumnsAndData(beans);
47813 _this.dispatchGridReadyEvent(beans, gridOptions);
47814 var isEnterprise = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_73__["ModuleNames"].EnterpriseCoreModule);
47815 logger.log("initialised successfully, enterprise = " + isEnterprise);
47816 });
47817 if (acceptChanges) {
47818 acceptChanges(context);
47819 }
47820 };
47821 GridCoreCreator.prototype.registerControllers = function (beans, registeredModules) {
47822 registeredModules.forEach(function (module) {
47823 if (module.controllers) {
47824 module.controllers.forEach(function (meta) { return beans.ctrlsFactory.register(meta); });
47825 }
47826 });
47827 };
47828 GridCoreCreator.prototype.registerStackComponents = function (beans, registeredModules) {
47829 var agStackComponents = this.createAgStackComponentsList(registeredModules);
47830 beans.agStackComponentsRegistry.setupComponents(agStackComponents);
47831 };
47832 GridCoreCreator.prototype.getRegisteredModules = function (params) {
47833 var passedViaConstructor = params ? params.modules : null;
47834 var registered = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].getRegisteredModules();
47835 var allModules = [];
47836 var mapNames = {};
47837 // adds to list and removes duplicates
47838 function addModule(moduleBased, mod) {
47839 function addIndividualModule(currentModule) {
47840 if (!mapNames[currentModule.moduleName]) {
47841 mapNames[currentModule.moduleName] = true;
47842 allModules.push(currentModule);
47843 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].register(currentModule, moduleBased);
47844 }
47845 }
47846 addIndividualModule(mod);
47847 if (mod.dependantModules) {
47848 mod.dependantModules.forEach(addModule.bind(null, moduleBased));
47849 }
47850 }
47851 if (passedViaConstructor) {
47852 passedViaConstructor.forEach(addModule.bind(null, true));
47853 }
47854 if (registered) {
47855 registered.forEach(addModule.bind(null, !_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].isPackageBased()));
47856 }
47857 return allModules;
47858 };
47859 GridCoreCreator.prototype.registerModuleUserComponents = function (beans, registeredModules) {
47860 var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });
47861 moduleUserComps.forEach(function (compMeta) {
47862 beans.userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);
47863 });
47864 };
47865 GridCoreCreator.prototype.createProvidedBeans = function (eGridDiv, gridOptions, params) {
47866 var frameworkOverrides = params ? params.frameworkOverrides : null;
47867 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_78__["missing"])(frameworkOverrides)) {
47868 frameworkOverrides = new _vanillaFrameworkOverrides__WEBPACK_IMPORTED_MODULE_32__["VanillaFrameworkOverrides"]();
47869 }
47870 var seed = {
47871 gridOptions: gridOptions,
47872 eGridDiv: eGridDiv,
47873 globalEventListener: params ? params.globalEventListener : null,
47874 frameworkOverrides: frameworkOverrides
47875 };
47876 if (params && params.providedBeanInstances) {
47877 Object.assign(seed, params.providedBeanInstances);
47878 }
47879 return seed;
47880 };
47881 GridCoreCreator.prototype.createAgStackComponentsList = function (registeredModules) {
47882 var components = [
47883 { componentName: 'AgCheckbox', componentClass: _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_30__["AgCheckbox"] },
47884 { componentName: 'AgRadioButton', componentClass: _widgets_agRadioButton__WEBPACK_IMPORTED_MODULE_31__["AgRadioButton"] },
47885 { componentName: 'AgToggleButton', componentClass: _widgets_agToggleButton__WEBPACK_IMPORTED_MODULE_68__["AgToggleButton"] },
47886 { componentName: 'AgInputTextField', componentClass: _widgets_agInputTextField__WEBPACK_IMPORTED_MODULE_60__["AgInputTextField"] },
47887 { componentName: 'AgInputTextArea', componentClass: _widgets_agInputTextArea__WEBPACK_IMPORTED_MODULE_61__["AgInputTextArea"] },
47888 { componentName: 'AgInputNumberField', componentClass: _widgets_agInputNumberField__WEBPACK_IMPORTED_MODULE_64__["AgInputNumberField"] },
47889 { componentName: 'AgInputRange', componentClass: _widgets_agInputRange__WEBPACK_IMPORTED_MODULE_65__["AgInputRange"] },
47890 { componentName: 'AgSelect', componentClass: _widgets_agSelect__WEBPACK_IMPORTED_MODULE_66__["AgSelect"] },
47891 { componentName: 'AgSlider', componentClass: _widgets_agSlider__WEBPACK_IMPORTED_MODULE_62__["AgSlider"] },
47892 { componentName: 'AgAngleSelect', componentClass: _widgets_agAngleSelect__WEBPACK_IMPORTED_MODULE_67__["AgAngleSelect"] },
47893 { componentName: 'AgColorPicker', componentClass: _widgets_agColorPicker__WEBPACK_IMPORTED_MODULE_63__["AgColorPicker"] },
47894 { componentName: 'AgGridBody', componentClass: _gridBodyComp_gridBodyComp__WEBPACK_IMPORTED_MODULE_9__["GridBodyComp"] },
47895 { componentName: 'AgHeaderRoot', componentClass: _headerRendering_gridHeaderComp__WEBPACK_IMPORTED_MODULE_5__["GridHeaderComp"] },
47896 { componentName: 'AgPagination', componentClass: _pagination_paginationComp__WEBPACK_IMPORTED_MODULE_54__["PaginationComp"] },
47897 { componentName: 'AgOverlayWrapper', componentClass: _rendering_overlays_overlayWrapperComponent__WEBPACK_IMPORTED_MODULE_56__["OverlayWrapperComponent"] },
47898 { componentName: 'AgGroupComponent', componentClass: _widgets_agGroupComponent__WEBPACK_IMPORTED_MODULE_57__["AgGroupComponent"] },
47899 { componentName: 'AgPanel', componentClass: _widgets_agPanel__WEBPACK_IMPORTED_MODULE_59__["AgPanel"] },
47900 { componentName: 'AgDialog', componentClass: _widgets_agDialog__WEBPACK_IMPORTED_MODULE_58__["AgDialog"] },
47901 { componentName: 'AgRowContainer', componentClass: _gridBodyComp_rowContainer_rowContainerComp__WEBPACK_IMPORTED_MODULE_88__["RowContainerComp"] },
47902 { componentName: 'AgFakeHorizontalScroll', componentClass: _gridBodyComp_fakeHScrollComp__WEBPACK_IMPORTED_MODULE_86__["FakeHScrollComp"] }
47903 ];
47904 var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });
47905 components = components.concat(moduleAgStackComps);
47906 return components;
47907 };
47908 GridCoreCreator.prototype.createBeansList = function (rowModelType, registeredModules) {
47909 var rowModelClass = this.getRowModelClass(rowModelType, registeredModules);
47910 if (!rowModelClass) {
47911 return;
47912 }
47913 // beans should only contain SERVICES, it should NEVER contain COMPONENTS
47914 var beans = [
47915 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"],
47916 _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"],
47917 _components_framework_componentMetadataProvider__WEBPACK_IMPORTED_MODULE_47__["ComponentMetadataProvider"], _misc_resizeObserverService__WEBPACK_IMPORTED_MODULE_55__["ResizeObserverService"], _components_framework_userComponentFactory__WEBPACK_IMPORTED_MODULE_44__["UserComponentFactory"],
47918 _rendering_rowContainerHeightService__WEBPACK_IMPORTED_MODULE_52__["RowContainerHeightService"], _headerRendering_common_horizontalResizeService__WEBPACK_IMPORTED_MODULE_19__["HorizontalResizeService"],
47919 _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"],
47920 _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"],
47921 _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"],
47922 _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"],
47923 _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"],
47924 _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"],
47925 _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"],
47926 _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"],
47927 _undoRedo_undoRedoService__WEBPACK_IMPORTED_MODULE_74__["UndoRedoService"], _components_agStackComponentsRegistry__WEBPACK_IMPORTED_MODULE_75__["AgStackComponentsRegistry"], _columns_columnDefFactory__WEBPACK_IMPORTED_MODULE_80__["ColumnDefFactory"],
47928 _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"],
47929 _gridBodyComp_pinnedWidthService__WEBPACK_IMPORTED_MODULE_87__["PinnedWidthService"], _entities_rowNodeEventThrottle__WEBPACK_IMPORTED_MODULE_89__["RowNodeEventThrottle"], _ctrlsFactory__WEBPACK_IMPORTED_MODULE_85__["CtrlsFactory"]
47930 ];
47931 var moduleBeans = this.extractModuleEntity(registeredModules, function (module) { return module.beans ? module.beans : []; });
47932 beans.push.apply(beans, __spread(moduleBeans));
47933 // check for duplicates, as different modules could include the same beans that
47934 // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community
47935 var beansNoDuplicates = [];
47936 beans.forEach(function (bean) {
47937 if (beansNoDuplicates.indexOf(bean) < 0) {
47938 beansNoDuplicates.push(bean);
47939 }
47940 });
47941 return beansNoDuplicates;
47942 };
47943 GridCoreCreator.prototype.extractModuleEntity = function (moduleEntities, extractor) {
47944 return [].concat.apply([], __spread(moduleEntities.map(extractor)));
47945 };
47946 GridCoreCreator.prototype.setColumnsAndData = function (beans) {
47947 var columnDefs = beans.gridOptionsWrapper.getColumnDefs();
47948 beans.columnModel.setColumnDefs(columnDefs || [], "gridInitializing");
47949 beans.rowModel.start();
47950 };
47951 GridCoreCreator.prototype.dispatchGridReadyEvent = function (beans, gridOptions) {
47952 var readyEvent = {
47953 type: _events__WEBPACK_IMPORTED_MODULE_28__["Events"].EVENT_GRID_READY,
47954 api: gridOptions.api,
47955 columnApi: gridOptions.columnApi
47956 };
47957 beans.eventService.dispatchEvent(readyEvent);
47958 };
47959 GridCoreCreator.prototype.getRowModelClass = function (rowModelType, registeredModules) {
47960 // default to client side
47961 if (!rowModelType) {
47962 rowModelType = _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
47963 }
47964 var rowModelClasses = {};
47965 registeredModules.forEach(function (module) {
47966 Object(_utils_object__WEBPACK_IMPORTED_MODULE_79__["iterateObject"])(module.rowModels, function (key, value) {
47967 rowModelClasses[key] = value;
47968 });
47969 });
47970 var rowModelClass = rowModelClasses[rowModelType];
47971 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_78__["exists"])(rowModelClass)) {
47972 return rowModelClass;
47973 }
47974 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].isPackageBased()) {
47975 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))
47976 // If package based only the enterprise row models could be missing.
47977 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/");
47978 else {
47979 console.error('AG Grid: could not find row model for rowModelType ' + rowModelType);
47980 }
47981 }
47982 else {
47983 if (rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_INFINITE) {
47984 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/");
47985 }
47986 else if (rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_VIEWPORT) {
47987 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/");
47988 }
47989 else if (rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE) {
47990 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/");
47991 }
47992 else if (rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
47993 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/");
47994 }
47995 else {
47996 console.error('AG Grid: could not find row model for rowModelType ' + rowModelType);
47997 }
47998 }
47999 };
48000 return GridCoreCreator;
48001}());
48002
48003
48004
48005
48006
48007/***/ }),
48008/* 212 */
48009/***/ (function(module, __webpack_exports__, __webpack_require__) {
48010
48011"use strict";
48012__webpack_require__.r(__webpack_exports__);
48013/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectionService", function() { return SelectionService; });
48014/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
48015/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
48016/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
48017/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
48018/* harmony import */ var _utils_changedPath__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(182);
48019/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13);
48020/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
48021/**
48022 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
48023 * @version v27.3.0
48024 * @link https://www.ag-grid.com/
48025 * @license MIT
48026 */
48027var __extends = (undefined && undefined.__extends) || (function () {
48028 var extendStatics = function (d, b) {
48029 extendStatics = Object.setPrototypeOf ||
48030 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
48031 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
48032 return extendStatics(d, b);
48033 };
48034 return function (d, b) {
48035 extendStatics(d, b);
48036 function __() { this.constructor = d; }
48037 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
48038 };
48039})();
48040var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
48041 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48042 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
48043 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;
48044 return c > 3 && r && Object.defineProperty(target, key, r), r;
48045};
48046var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
48047 return function (target, key) { decorator(target, key, paramIndex); }
48048};
48049
48050
48051
48052
48053
48054
48055
48056
48057
48058
48059var SelectionService = /** @class */ (function (_super) {
48060 __extends(SelectionService, _super);
48061 function SelectionService() {
48062 return _super !== null && _super.apply(this, arguments) || this;
48063 }
48064 SelectionService.prototype.setBeans = function (loggerFactory) {
48065 this.logger = loggerFactory.create('selectionService');
48066 this.reset();
48067 };
48068 SelectionService.prototype.init = function () {
48069 this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();
48070 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_SELECTED, this.onRowSelected.bind(this));
48071 };
48072 SelectionService.prototype.setLastSelectedNode = function (rowNode) {
48073 this.lastSelectedNode = rowNode;
48074 };
48075 SelectionService.prototype.getLastSelectedNode = function () {
48076 return this.lastSelectedNode;
48077 };
48078 SelectionService.prototype.getSelectedNodes = function () {
48079 var selectedNodes = [];
48080 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (key, rowNode) {
48081 if (rowNode) {
48082 selectedNodes.push(rowNode);
48083 }
48084 });
48085 return selectedNodes;
48086 };
48087 SelectionService.prototype.getSelectedRows = function () {
48088 var selectedRows = [];
48089 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (key, rowNode) {
48090 if (rowNode && rowNode.data) {
48091 selectedRows.push(rowNode.data);
48092 }
48093 });
48094 return selectedRows;
48095 };
48096 SelectionService.prototype.removeGroupsFromSelection = function () {
48097 var _this = this;
48098 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (key, rowNode) {
48099 if (rowNode && rowNode.group) {
48100 _this.selectedNodes[rowNode.id] = undefined;
48101 }
48102 });
48103 };
48104 // should only be called if groupSelectsChildren=true
48105 SelectionService.prototype.updateGroupsFromChildrenSelections = function (changedPath) {
48106 // we only do this when group selection state depends on selected children
48107 if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {
48108 return;
48109 }
48110 // also only do it if CSRM (code should never allow this anyway)
48111 if (this.rowModel.getType() !== _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
48112 return;
48113 }
48114 var clientSideRowModel = this.rowModel;
48115 var rootNode = clientSideRowModel.getRootNode();
48116 if (!changedPath) {
48117 changedPath = new _utils_changedPath__WEBPACK_IMPORTED_MODULE_4__["ChangedPath"](true, rootNode);
48118 changedPath.setInactive();
48119 }
48120 changedPath.forEachChangedNodeDepthFirst(function (rowNode) {
48121 if (rowNode !== rootNode) {
48122 rowNode.calculateSelectedFromChildren();
48123 }
48124 });
48125 // clientSideRowModel.getTopLevelNodes()!.forEach((rowNode: RowNode) => {
48126 // rowNode.depthFirstSearch((node) => {
48127 // if (node.group) {
48128 // }
48129 // });
48130 // });
48131 };
48132 SelectionService.prototype.getNodeForIdIfSelected = function (id) {
48133 return this.selectedNodes[id];
48134 };
48135 SelectionService.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {
48136 var _this = this;
48137 var groupsToRefresh = {};
48138 var updatedCount = 0;
48139 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (key, otherRowNode) {
48140 if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {
48141 var rowNode = _this.selectedNodes[otherRowNode.id];
48142 updatedCount += rowNode.setSelectedParams({
48143 newValue: false,
48144 clearSelection: false,
48145 suppressFinishActions: true
48146 });
48147 if (_this.groupSelectsChildren && otherRowNode.parent) {
48148 groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;
48149 }
48150 }
48151 });
48152 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(groupsToRefresh, function (key, group) {
48153 group.calculateSelectedFromChildren();
48154 });
48155 return updatedCount;
48156 };
48157 SelectionService.prototype.onRowSelected = function (event) {
48158 var rowNode = event.node;
48159 // we do not store the group rows when the groups select children
48160 if (this.groupSelectsChildren && rowNode.group) {
48161 return;
48162 }
48163 if (rowNode.isSelected()) {
48164 this.selectedNodes[rowNode.id] = rowNode;
48165 }
48166 else {
48167 this.selectedNodes[rowNode.id] = undefined;
48168 }
48169 };
48170 SelectionService.prototype.syncInRowNode = function (rowNode, oldNode) {
48171 this.syncInOldRowNode(rowNode, oldNode);
48172 this.syncInNewRowNode(rowNode);
48173 };
48174 // if the id has changed for the node, then this means the rowNode
48175 // is getting used for a different data item, which breaks
48176 // our selectedNodes, as the node now is mapped by the old id
48177 // which is inconsistent. so to keep the old node as selected,
48178 // we swap in the clone (with the old id and old data). this means
48179 // the oldNode is effectively a daemon we keep a reference to,
48180 // so if client calls api.getSelectedNodes(), it gets the daemon
48181 // in the result. when the client un-selects, the reference to the
48182 // daemon is removed. the daemon, because it's an oldNode, is not
48183 // used by the grid for rendering, it's a copy of what the node used
48184 // to be like before the id was changed.
48185 SelectionService.prototype.syncInOldRowNode = function (rowNode, oldNode) {
48186 var oldNodeHasDifferentId = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(oldNode) && (rowNode.id !== oldNode.id);
48187 if (oldNodeHasDifferentId && oldNode) {
48188 var id = oldNode.id;
48189 var oldNodeSelected = this.selectedNodes[id] == rowNode;
48190 if (oldNodeSelected) {
48191 this.selectedNodes[oldNode.id] = oldNode;
48192 }
48193 }
48194 };
48195 SelectionService.prototype.syncInNewRowNode = function (rowNode) {
48196 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(this.selectedNodes[rowNode.id])) {
48197 rowNode.setSelectedInitialValue(true);
48198 this.selectedNodes[rowNode.id] = rowNode;
48199 }
48200 else {
48201 rowNode.setSelectedInitialValue(false);
48202 }
48203 };
48204 SelectionService.prototype.reset = function () {
48205 this.logger.log('reset');
48206 this.selectedNodes = {};
48207 this.lastSelectedNode = null;
48208 };
48209 // returns a list of all nodes at 'best cost' - a feature to be used
48210 // with groups / trees. if a group has all it's children selected,
48211 // then the group appears in the result, but not the children.
48212 // Designed for use with 'children' as the group selection type,
48213 // where groups don't actually appear in the selection normally.
48214 SelectionService.prototype.getBestCostNodeSelection = function () {
48215 if (this.rowModel.getType() !== _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
48216 console.warn('AG Grid: `getBestCostNodeSelection` is only available when using normal row model');
48217 return;
48218 }
48219 var clientSideRowModel = this.rowModel;
48220 var topLevelNodes = clientSideRowModel.getTopLevelNodes();
48221 if (topLevelNodes === null) {
48222 console.warn('AG Grid: `selectAll` not available doing `rowModel=virtual`');
48223 return;
48224 }
48225 var result = [];
48226 // recursive function, to find the selected nodes
48227 function traverse(nodes) {
48228 for (var i = 0, l = nodes.length; i < l; i++) {
48229 var node = nodes[i];
48230 if (node.isSelected()) {
48231 result.push(node);
48232 }
48233 else {
48234 // if not selected, then if it's a group, and the group
48235 // has children, continue to search for selections
48236 var maybeGroup = node;
48237 if (maybeGroup.group && maybeGroup.children) {
48238 traverse(maybeGroup.children);
48239 }
48240 }
48241 }
48242 }
48243 traverse(topLevelNodes);
48244 return result;
48245 };
48246 SelectionService.prototype.setRowModel = function (rowModel) {
48247 this.rowModel = rowModel;
48248 };
48249 SelectionService.prototype.isEmpty = function () {
48250 var count = 0;
48251 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (nodeId, rowNode) {
48252 if (rowNode) {
48253 count++;
48254 }
48255 });
48256 return count === 0;
48257 };
48258 SelectionService.prototype.deselectAllRowNodes = function (justFiltered) {
48259 if (justFiltered === void 0) { justFiltered = false; }
48260 var callback = function (rowNode) { return rowNode.selectThisNode(false); };
48261 var rowModelClientSide = this.rowModel.getType() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
48262 if (justFiltered) {
48263 if (!rowModelClientSide) {
48264 console.error('AG Grid: selecting just filtered only works with In Memory Row Model');
48265 return;
48266 }
48267 var clientSideRowModel = this.rowModel;
48268 clientSideRowModel.forEachNodeAfterFilter(callback);
48269 }
48270 else {
48271 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (id, rowNode) {
48272 // remember the reference can be to null, as we never 'delete' from the map
48273 if (rowNode) {
48274 callback(rowNode);
48275 }
48276 });
48277 // this clears down the map (whereas above only sets the items in map to 'undefined')
48278 this.reset();
48279 }
48280 // the above does not clean up the parent rows if they are selected
48281 if (rowModelClientSide && this.groupSelectsChildren) {
48282 this.updateGroupsFromChildrenSelections();
48283 }
48284 var event = {
48285 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SELECTION_CHANGED,
48286 api: this.gridApi,
48287 columnApi: this.columnApi
48288 };
48289 this.eventService.dispatchEvent(event);
48290 };
48291 SelectionService.prototype.selectAllRowNodes = function (justFiltered) {
48292 if (justFiltered === void 0) { justFiltered = false; }
48293 if (this.rowModel.getType() !== _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
48294 throw new Error("selectAll only available with normal row model, ie not " + this.rowModel.getType());
48295 }
48296 var clientSideRowModel = this.rowModel;
48297 var callback = function (rowNode) { return rowNode.selectThisNode(true); };
48298 if (justFiltered) {
48299 clientSideRowModel.forEachNodeAfterFilter(callback);
48300 }
48301 else {
48302 clientSideRowModel.forEachNode(callback);
48303 }
48304 // the above does not clean up the parent rows if they are selected
48305 if (this.rowModel.getType() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {
48306 this.updateGroupsFromChildrenSelections();
48307 }
48308 var event = {
48309 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SELECTION_CHANGED,
48310 api: this.gridApi,
48311 columnApi: this.columnApi
48312 };
48313 this.eventService.dispatchEvent(event);
48314 };
48315 /**
48316 * @method
48317 * @deprecated
48318 */
48319 SelectionService.prototype.selectNode = function (rowNode, tryMulti) {
48320 if (rowNode) {
48321 rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });
48322 }
48323 };
48324 /**
48325 * @method
48326 * @deprecated
48327 */
48328 SelectionService.prototype.deselectIndex = function (rowIndex) {
48329 var node = this.rowModel.getRow(rowIndex);
48330 this.deselectNode(node);
48331 };
48332 /**
48333 * @method
48334 * @deprecated
48335 */
48336 SelectionService.prototype.deselectNode = function (rowNode) {
48337 if (rowNode) {
48338 rowNode.setSelectedParams({ newValue: false, clearSelection: false });
48339 }
48340 };
48341 /**
48342 * @method
48343 * @deprecated
48344 */
48345 SelectionService.prototype.selectIndex = function (index, tryMulti) {
48346 var node = this.rowModel.getRow(index);
48347 this.selectNode(node, tryMulti);
48348 };
48349 __decorate([
48350 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
48351 ], SelectionService.prototype, "rowModel", void 0);
48352 __decorate([
48353 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
48354 ], SelectionService.prototype, "columnApi", void 0);
48355 __decorate([
48356 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
48357 ], SelectionService.prototype, "gridApi", void 0);
48358 __decorate([
48359 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('loggerFactory'))
48360 ], SelectionService.prototype, "setBeans", null);
48361 __decorate([
48362 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
48363 ], SelectionService.prototype, "init", null);
48364 SelectionService = __decorate([
48365 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('selectionService')
48366 ], SelectionService);
48367 return SelectionService;
48368}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
48369
48370
48371
48372
48373
48374/***/ }),
48375/* 213 */
48376/***/ (function(module, __webpack_exports__, __webpack_require__) {
48377
48378"use strict";
48379__webpack_require__.r(__webpack_exports__);
48380/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnApi", function() { return ColumnApi; });
48381/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
48382/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
48383/**
48384 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
48385 * @version v27.3.0
48386 * @link https://www.ag-grid.com/
48387 * @license MIT
48388 */
48389var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
48390 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48391 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
48392 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;
48393 return c > 3 && r && Object.defineProperty(target, key, r), r;
48394};
48395
48396
48397var ColumnApi = /** @class */ (function () {
48398 function ColumnApi() {
48399 }
48400 /** 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. */
48401 ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {
48402 // AG-3403 validate that gridWidth is provided because this method has the same name as
48403 // a method on the grid API that takes no arguments, and it's easy to confuse the two
48404 if (typeof gridWidth === "undefined") {
48405 console.error('AG Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');
48406 }
48407 this.columnModel.sizeColumnsToFit(gridWidth, 'api');
48408 };
48409 /** Call this if you want to open or close a column group. */
48410 ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnModel.setColumnGroupOpened(group, newValue, 'api'); };
48411 /** Returns the column group with the given name. */
48412 ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnModel.getColumnGroup(name, instanceId); };
48413 /** Returns the provided column group with the given name. */
48414 ColumnApi.prototype.getProvidedColumnGroup = function (name) { return this.columnModel.getProvidedColumnGroup(name); };
48415 /** 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. */
48416 ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnModel.getDisplayNameForColumn(column, location) || ''; };
48417 /** Returns the display name for a column group (when grouping columns). */
48418 ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnModel.getDisplayNameForColumnGroup(columnGroup, location) || ''; };
48419 /** Returns the column with the given `colKey`, which can either be the `colId` (a string) or the `colDef` (an object). */
48420 ColumnApi.prototype.getColumn = function (key) { return this.columnModel.getPrimaryColumn(key); };
48421 /** Applies the state of the columns from a previous state. Returns `false` if one or more columns could not be found. */
48422 ColumnApi.prototype.applyColumnState = function (params) { return this.columnModel.applyColumnState(params, 'api'); };
48423 /** Gets the state of the columns. Typically used when saving column state. */
48424 ColumnApi.prototype.getColumnState = function () { return this.columnModel.getColumnState(); };
48425 /** Sets the state back to match the originally provided column definitions. */
48426 ColumnApi.prototype.resetColumnState = function () { this.columnModel.resetColumnState('api'); };
48427 /** Gets the state of the column groups. Typically used when saving column group state. */
48428 ColumnApi.prototype.getColumnGroupState = function () { return this.columnModel.getColumnGroupState(); };
48429 /** Sets the state of the column group state from a previous state. */
48430 ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnModel.setColumnGroupState(stateItems, 'api'); };
48431 /** Sets the state back to match the originally provided column definitions. */
48432 ColumnApi.prototype.resetColumnGroupState = function () { this.columnModel.resetColumnGroupState('api'); };
48433 /** Returns `true` if pinning left or right, otherwise `false`. */
48434 ColumnApi.prototype.isPinning = function () { return this.columnModel.isPinningLeft() || this.columnModel.isPinningRight(); };
48435 /** Returns `true` if pinning left, otherwise `false`. */
48436 ColumnApi.prototype.isPinningLeft = function () { return this.columnModel.isPinningLeft(); };
48437 /** Returns `true` if pinning right, otherwise `false`. */
48438 ColumnApi.prototype.isPinningRight = function () { return this.columnModel.isPinningRight(); };
48439 /** 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. */
48440 ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnModel.getDisplayedColAfter(col); };
48441 /** Same as `getVisibleColAfter` except gives column to the left. */
48442 ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnModel.getDisplayedColBefore(col); };
48443 /** Sets the visibility of a column. Key can be the column ID or `Column` object. */
48444 ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnModel.setColumnVisible(key, visible, 'api'); };
48445 /** Same as `setColumnVisible`, but provide a list of column keys. */
48446 ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnModel.setColumnsVisible(keys, visible, 'api'); };
48447 /** Sets the column pinned / unpinned. Key can be the column ID, field, `ColDef` object or `Column` object. */
48448 ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnModel.setColumnPinned(key, pinned, 'api'); };
48449 /** Same as `setColumnPinned`, but provide a list of column keys. */
48450 ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnModel.setColumnsPinned(keys, pinned, 'api'); };
48451 /** Returns all the columns, regardless of visible or not. */
48452 ColumnApi.prototype.getAllColumns = function () { return this.columnModel.getAllPrimaryColumns(); };
48453 /**
48454 * Returns all the grid columns, same as `getAllColumns()`, except
48455 *
48456 * a) it has the order of the columns that are presented in the grid
48457 *
48458 * b) it's after the 'pivot' step, so if pivoting, has the value columns for the pivot.
48459 */
48460 ColumnApi.prototype.getAllGridColumns = function () { return this.columnModel.getAllGridColumns(); };
48461 /** Same as `getAllDisplayedColumns` but just for the pinned left portion of the grid. */
48462 ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnModel.getDisplayedLeftColumns(); };
48463 /** Same as `getAllDisplayedColumns` but just for the center portion of the grid. */
48464 ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnModel.getDisplayedCenterColumns(); };
48465 /** Same as `getAllDisplayedColumns` but just for the pinned right portion of the grid. */
48466 ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnModel.getDisplayedRightColumns(); };
48467 /** 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. */
48468 ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnModel.getAllDisplayedColumns(); };
48469 /** 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. */
48470 ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnModel.getViewportColumns(); };
48471 /** 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. */
48472 ColumnApi.prototype.moveColumn = function (key, toIndex) {
48473 if (typeof key === 'number') {
48474 // moveColumn used to take indexes, so this is advising user who hasn't moved to new method name
48475 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');
48476 this.columnModel.moveColumnByIndex(key, toIndex, 'api');
48477 }
48478 else {
48479 this.columnModel.moveColumn(key, toIndex, 'api');
48480 }
48481 };
48482 /** Same as `moveColumn` but works on index locations. */
48483 ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnModel.moveColumnByIndex(fromIndex, toIndex, 'api'); };
48484 /** Same as `moveColumn` but works on list. */
48485 ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnModel.moveColumns(columnsToMoveKeys, toIndex, 'api'); };
48486 /** Move the column to a new position in the row grouping order. */
48487 ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnModel.moveRowGroupColumn(fromIndex, toIndex); };
48488 /** Sets the agg function for a column. `aggFunc` can be one of `'min' | 'max' | 'sum'`. */
48489 ColumnApi.prototype.setColumnAggFunc = function (key, aggFunc) { this.columnModel.setColumnAggFunc(key, aggFunc); };
48490 /** 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`. */
48491 ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished, source) {
48492 if (finished === void 0) { finished = true; }
48493 this.columnModel.setColumnWidths([{ key: key, newWidth: newWidth }], false, finished, source);
48494 };
48495 /** 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`. */
48496 ColumnApi.prototype.setColumnWidths = function (columnWidths, finished, source) {
48497 if (finished === void 0) { finished = true; }
48498 this.columnModel.setColumnWidths(columnWidths, false, finished, source);
48499 };
48500 /** Set the pivot mode. */
48501 ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnModel.setPivotMode(pivotMode); };
48502 /** Get the pivot mode. */
48503 ColumnApi.prototype.isPivotMode = function () { return this.columnModel.isPivotMode(); };
48504 /** Returns the pivot column for the given `pivotKeys` and `valueColId`. Useful to then call operations on the pivot column. */
48505 ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) { return this.columnModel.getSecondaryPivotColumn(pivotKeys, valueColKey); };
48506 /** Set the value columns. */
48507 ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnModel.setValueColumns(colKeys, 'api'); };
48508 /** Get value columns. */
48509 ColumnApi.prototype.getValueColumns = function () { return this.columnModel.getValueColumns(); };
48510 /** Remove a value column. */
48511 ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnModel.removeValueColumn(colKey, 'api'); };
48512 /** Same as `removeValueColumns` but provide a list. */
48513 ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnModel.removeValueColumns(colKeys, 'api'); };
48514 /** Add a value column. */
48515 ColumnApi.prototype.addValueColumn = function (colKey) { this.columnModel.addValueColumn(colKey, 'api'); };
48516 /** Same as `addValueColumn` but provide a list. */
48517 ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnModel.addValueColumns(colKeys, 'api'); };
48518 /** Set the row group columns. */
48519 ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnModel.setRowGroupColumns(colKeys, 'api'); };
48520 /** Remove a column from the row groups. */
48521 ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnModel.removeRowGroupColumn(colKey, 'api'); };
48522 /** Same as `removeRowGroupColumn` but provide a list of columns. */
48523 ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnModel.removeRowGroupColumns(colKeys, 'api'); };
48524 /** Add a column to the row groups. */
48525 ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnModel.addRowGroupColumn(colKey, 'api'); };
48526 /** Same as `addRowGroupColumn` but provide a list of columns. */
48527 ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnModel.addRowGroupColumns(colKeys, 'api'); };
48528 /** Get row group columns. */
48529 ColumnApi.prototype.getRowGroupColumns = function () { return this.columnModel.getRowGroupColumns(); };
48530 /** Set the pivot columns. */
48531 ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnModel.setPivotColumns(colKeys, 'api'); };
48532 /** Remove a pivot column. */
48533 ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnModel.removePivotColumn(colKey, 'api'); };
48534 /** Same as `removePivotColumn` but provide a list of columns. */
48535 ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnModel.removePivotColumns(colKeys, 'api'); };
48536 /** Add a pivot column. */
48537 ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnModel.addPivotColumn(colKey, 'api'); };
48538 /** Same as `addPivotColumn` but provide a list of columns. */
48539 ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnModel.addPivotColumns(colKeys, 'api'); };
48540 /** Get the pivot columns. */
48541 ColumnApi.prototype.getPivotColumns = function () { return this.columnModel.getPivotColumns(); };
48542 /** Same as `getAllDisplayedColumnGroups` but just for the pinned left portion of the grid. */
48543 ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeLeft(); };
48544 /** Same as `getAllDisplayedColumnGroups` but just for the center portion of the grid. */
48545 ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeCentre(); };
48546 /** Same as `getAllDisplayedColumnGroups` but just for the pinned right portion of the grid. */
48547 ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeRight(); };
48548 /** 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. */
48549 ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnModel.getAllDisplayedTrees(); };
48550 /** Auto-sizes a column based on its contents. */
48551 ColumnApi.prototype.autoSizeColumn = function (key, skipHeader) { return this.columnModel.autoSizeColumn(key, skipHeader, 'api'); };
48552 /** Same as `autoSizeColumn`, but provide a list of column keys. */
48553 ColumnApi.prototype.autoSizeColumns = function (keys, skipHeader) {
48554 this.columnModel.autoSizeColumns({ columns: keys, skipHeader: skipHeader });
48555 };
48556 /** Calls `autoSizeColumns` on all displayed columns. */
48557 ColumnApi.prototype.autoSizeAllColumns = function (skipHeader) { this.columnModel.autoSizeAllColumns(skipHeader, 'api'); };
48558 /** Set the secondary pivot columns. */
48559 ColumnApi.prototype.setSecondaryColumns = function (colDefs) { this.columnModel.setSecondaryColumns(colDefs, 'api'); };
48560 /** Returns the grid's secondary columns. */
48561 ColumnApi.prototype.getSecondaryColumns = function () { return this.columnModel.getSecondaryColumns(); };
48562 /** Returns the grid's primary columns. */
48563 ColumnApi.prototype.getPrimaryColumns = function () { return this.columnModel.getAllPrimaryColumns(); };
48564 ColumnApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {
48565 // some users were raising support issues with regards memory leaks. the problem was the customers applications
48566 // were keeping references to the API. trying to educate them all would be difficult, easier to just remove
48567 // all references in the API so at least the core grid can be garbage collected.
48568 //
48569 // wait about 100ms before clearing down the references, in case user has some cleanup to do,
48570 // and needs to deference the API first
48571 setTimeout(_utils__WEBPACK_IMPORTED_MODULE_1__["_"].removeAllReferences.bind(window, this, 'Column API'), 100);
48572 };
48573 // below goes through deprecated items, prints message to user, then calls the new version of the same method
48574 // public getColumnDefs(): (ColDef | ColGroupDef)[] {
48575 // this.setColumnGroupOpened(group, newValue);
48576 // return null;
48577 // }
48578 /** @deprecated columnGroupOpened no longer exists, use setColumnGroupOpened */
48579 ColumnApi.prototype.columnGroupOpened = function (group, newValue) {
48580 console.error('AG Grid: columnGroupOpened no longer exists, use setColumnGroupOpened');
48581 this.setColumnGroupOpened(group, newValue);
48582 };
48583 /** @deprecated hideColumns is deprecated, use setColumnsVisible */
48584 ColumnApi.prototype.hideColumns = function (colIds, hide) {
48585 console.error('AG Grid: hideColumns is deprecated, use setColumnsVisible');
48586 this.columnModel.setColumnsVisible(colIds, !hide, 'api');
48587 };
48588 /** @deprecated hideColumn is deprecated, use setColumnVisible */
48589 ColumnApi.prototype.hideColumn = function (colId, hide) {
48590 console.error('AG Grid: hideColumn is deprecated, use setColumnVisible');
48591 this.columnModel.setColumnVisible(colId, !hide, 'api');
48592 };
48593 /** @deprecated setState is deprecated, use setColumnState */
48594 ColumnApi.prototype.setState = function (columnState) {
48595 console.error('AG Grid: setState is deprecated, use setColumnState');
48596 return this.setColumnState(columnState);
48597 };
48598 /** @deprecated getState is deprecated, use getColumnState */
48599 ColumnApi.prototype.getState = function () {
48600 console.error('AG Grid: getState is deprecated, use getColumnState');
48601 return this.getColumnState();
48602 };
48603 /** @deprecated resetState is deprecated, use resetColumnState */
48604 ColumnApi.prototype.resetState = function () {
48605 console.error('AG Grid: resetState is deprecated, use resetColumnState');
48606 this.resetColumnState();
48607 };
48608 /** @deprecated getAggregationColumns is deprecated, use getValueColumns */
48609 ColumnApi.prototype.getAggregationColumns = function () {
48610 console.error('AG Grid: getAggregationColumns is deprecated, use getValueColumns');
48611 return this.columnModel.getValueColumns();
48612 };
48613 /** @deprecated removeAggregationColumn is deprecated, use removeValueColumn */
48614 ColumnApi.prototype.removeAggregationColumn = function (colKey) {
48615 console.error('AG Grid: removeAggregationColumn is deprecated, use removeValueColumn');
48616 this.columnModel.removeValueColumn(colKey, 'api');
48617 };
48618 /** @deprecated removeAggregationColumns is deprecated, use removeValueColumns */
48619 ColumnApi.prototype.removeAggregationColumns = function (colKeys) {
48620 console.error('AG Grid: removeAggregationColumns is deprecated, use removeValueColumns');
48621 this.columnModel.removeValueColumns(colKeys, 'api');
48622 };
48623 /** @deprecated addAggregationColumn is deprecated, use addValueColumn */
48624 ColumnApi.prototype.addAggregationColumn = function (colKey) {
48625 console.error('AG Grid: addAggregationColumn is deprecated, use addValueColumn');
48626 this.columnModel.addValueColumn(colKey, 'api');
48627 };
48628 /** @deprecated addAggregationColumns is deprecated, use addValueColumns */
48629 ColumnApi.prototype.addAggregationColumns = function (colKeys) {
48630 console.error('AG Grid: addAggregationColumns is deprecated, use addValueColumns');
48631 this.columnModel.addValueColumns(colKeys, 'api');
48632 };
48633 /** @deprecated setColumnAggFunction is deprecated, use setColumnAggFunc */
48634 ColumnApi.prototype.setColumnAggFunction = function (column, aggFunc) {
48635 console.error('AG Grid: setColumnAggFunction is deprecated, use setColumnAggFunc');
48636 this.columnModel.setColumnAggFunc(column, aggFunc, 'api');
48637 };
48638 /** @deprecated getDisplayNameForCol is deprecated, use getDisplayNameForColumn */
48639 ColumnApi.prototype.getDisplayNameForCol = function (column) {
48640 console.error('AG Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn');
48641 return this.getDisplayNameForColumn(column, null);
48642 };
48643 /** @deprecated setColumnState is deprecated, use applyColumnState. */
48644 ColumnApi.prototype.setColumnState = function (columnState) {
48645 console.error('AG Grid: setColumnState is deprecated, use applyColumnState');
48646 return this.columnModel.applyColumnState({ state: columnState, applyOrder: true }, 'api');
48647 };
48648 /** @deprecated getOriginalColumnGroup is deprecated, use getProvidedColumnGroup. */
48649 ColumnApi.prototype.getOriginalColumnGroup = function (name) {
48650 console.error('AG Grid: getOriginalColumnGroup is deprecated, use getProvidedColumnGroup');
48651 return this.columnModel.getProvidedColumnGroup(name);
48652 };
48653 __decorate([
48654 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
48655 ], ColumnApi.prototype, "columnModel", void 0);
48656 __decorate([
48657 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
48658 ], ColumnApi.prototype, "cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid", null);
48659 ColumnApi = __decorate([
48660 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('columnApi')
48661 ], ColumnApi);
48662 return ColumnApi;
48663}());
48664
48665
48666
48667
48668
48669/***/ }),
48670/* 214 */
48671/***/ (function(module, __webpack_exports__, __webpack_require__) {
48672
48673"use strict";
48674__webpack_require__.r(__webpack_exports__);
48675/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueService", function() { return ValueService; });
48676/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
48677/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
48678/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
48679/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
48680/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
48681/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14);
48682/**
48683 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
48684 * @version v27.3.0
48685 * @link https://www.ag-grid.com/
48686 * @license MIT
48687 */
48688var __extends = (undefined && undefined.__extends) || (function () {
48689 var extendStatics = function (d, b) {
48690 extendStatics = Object.setPrototypeOf ||
48691 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
48692 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
48693 return extendStatics(d, b);
48694 };
48695 return function (d, b) {
48696 extendStatics(d, b);
48697 function __() { this.constructor = d; }
48698 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
48699 };
48700})();
48701var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
48702 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48703 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
48704 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;
48705 return c > 3 && r && Object.defineProperty(target, key, r), r;
48706};
48707
48708
48709
48710
48711
48712
48713var ValueService = /** @class */ (function (_super) {
48714 __extends(ValueService, _super);
48715 function ValueService() {
48716 var _this = _super !== null && _super.apply(this, arguments) || this;
48717 _this.initialised = false;
48718 return _this;
48719 }
48720 ValueService.prototype.init = function () {
48721 var _this = this;
48722 this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();
48723 this.initialised = true;
48724 // We listen to our own event and use it to call the columnSpecific callback,
48725 // this way the handler calls are correctly interleaved with other global events
48726 this.eventService.addEventListener(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_VALUE_CHANGED, function (event) { return _this.callColumnCellValueChangedHandler(event); }, this.gridOptionsWrapper.useAsyncEvents());
48727 };
48728 ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {
48729 if (forFilter === void 0) { forFilter = false; }
48730 if (ignoreAggData === void 0) { ignoreAggData = false; }
48731 // hack - the grid is getting refreshed before this bean gets initialised, race condition.
48732 // really should have a way so they get initialised in the right order???
48733 if (!this.initialised) {
48734 this.init();
48735 }
48736 if (!rowNode) {
48737 return;
48738 }
48739 // pull these out to make code below easier to read
48740 var colDef = column.getColDef();
48741 var field = colDef.field;
48742 var colId = column.getId();
48743 var data = rowNode.data;
48744 var result;
48745 // if there is a value getter, this gets precedence over a field
48746 var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;
48747 var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;
48748 if (forFilter && colDef.filterValueGetter) {
48749 result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);
48750 }
48751 else if (this.gridOptionsWrapper.isTreeData() && aggDataExists) {
48752 result = rowNode.aggData[colId];
48753 }
48754 else if (this.gridOptionsWrapper.isTreeData() && colDef.valueGetter) {
48755 result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);
48756 }
48757 else if (this.gridOptionsWrapper.isTreeData() && (field && data)) {
48758 result = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getValueUsingField"])(data, field, column.isFieldContainsDots());
48759 }
48760 else if (groupDataExists) {
48761 result = rowNode.groupData[colId];
48762 }
48763 else if (aggDataExists) {
48764 result = rowNode.aggData[colId];
48765 }
48766 else if (colDef.valueGetter) {
48767 result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);
48768 }
48769 else if (field && data) {
48770 result = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getValueUsingField"])(data, field, column.isFieldContainsDots());
48771 }
48772 // the result could be an expression itself, if we are allowing cell values to be expressions
48773 if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {
48774 var cellValueGetter = result.substring(1);
48775 result = this.executeValueGetter(cellValueGetter, data, column, rowNode);
48776 }
48777 if (result == null) {
48778 var openedGroup = this.getOpenedGroup(rowNode, column);
48779 if (openedGroup != null) {
48780 return openedGroup;
48781 }
48782 }
48783 return result;
48784 };
48785 ValueService.prototype.getOpenedGroup = function (rowNode, column) {
48786 if (!this.gridOptionsWrapper.isShowOpenedGroup()) {
48787 return;
48788 }
48789 var colDef = column.getColDef();
48790 if (!colDef.showRowGroup) {
48791 return;
48792 }
48793 var showRowGroup = column.getColDef().showRowGroup;
48794 var pointer = rowNode.parent;
48795 while (pointer != null) {
48796 if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getId())) {
48797 return pointer.key;
48798 }
48799 pointer = pointer.parent;
48800 }
48801 return undefined;
48802 };
48803 /**
48804 * Sets the value of a GridCell
48805 * @param rowNode The `RowNode` to be updated
48806 * @param colKey The `Column` to be updated
48807 * @param newValue The new value to be set
48808 * @param eventSource The event source
48809 * @returns `True` if the value has been updated, otherwise`False`.
48810 */
48811 ValueService.prototype.setValue = function (rowNode, colKey, newValue, eventSource) {
48812 var column = this.columnModel.getPrimaryColumn(colKey);
48813 if (!rowNode || !column) {
48814 return false;
48815 }
48816 // this will only happen if user is trying to paste into a group row, which doesn't make sense
48817 // the user should not be trying to paste into group rows
48818 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["missing"])(rowNode.data)) {
48819 rowNode.data = {};
48820 }
48821 // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter
48822 var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;
48823 // need either a field or a newValueHandler for this to work
48824 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)) {
48825 // we don't tell user about newValueHandler, as that is deprecated
48826 console.warn("AG Grid: you need either field or valueSetter set on colDef for editing to work");
48827 return false;
48828 }
48829 var params = {
48830 node: rowNode,
48831 data: rowNode.data,
48832 oldValue: this.getValue(column, rowNode),
48833 newValue: newValue,
48834 colDef: column.getColDef(),
48835 column: column,
48836 api: this.gridOptionsWrapper.getApi(),
48837 columnApi: this.gridOptionsWrapper.getColumnApi(),
48838 context: this.gridOptionsWrapper.getContext()
48839 };
48840 params.newValue = newValue;
48841 var valueWasDifferent;
48842 if (newValueHandler && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(newValueHandler)) {
48843 valueWasDifferent = newValueHandler(params);
48844 }
48845 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(valueSetter)) {
48846 valueWasDifferent = this.expressionService.evaluate(valueSetter, params);
48847 }
48848 else {
48849 valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());
48850 }
48851 // in case user forgot to return something (possible if they are not using TypeScript
48852 // and just forgot, or using an old newValueHandler we didn't always expect a return
48853 // value here), we default the return value to true, so we always refresh.
48854 if (valueWasDifferent === undefined) {
48855 valueWasDifferent = true;
48856 }
48857 // if no change to the value, then no need to do the updating, or notifying via events.
48858 // otherwise the user could be tabbing around the grid, and cellValueChange would get called
48859 // all the time.
48860 if (!valueWasDifferent) {
48861 return false;
48862 }
48863 // reset quick filter on this row
48864 rowNode.resetQuickFilterAggregateText();
48865 this.valueCache.onDataChanged();
48866 params.newValue = this.getValue(column, rowNode);
48867 var event = {
48868 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_VALUE_CHANGED,
48869 event: null,
48870 rowIndex: rowNode.rowIndex,
48871 rowPinned: rowNode.rowPinned,
48872 column: params.column,
48873 api: params.api,
48874 columnApi: params.columnApi,
48875 colDef: params.colDef,
48876 context: params.context,
48877 data: rowNode.data,
48878 node: rowNode,
48879 oldValue: params.oldValue,
48880 newValue: params.newValue,
48881 value: params.newValue,
48882 source: eventSource
48883 };
48884 this.eventService.dispatchEvent(event);
48885 return true;
48886 };
48887 ValueService.prototype.callColumnCellValueChangedHandler = function (event) {
48888 var onCellValueChanged = event.colDef.onCellValueChanged;
48889 if (typeof onCellValueChanged === 'function') {
48890 onCellValueChanged({
48891 node: event.node,
48892 data: event.data,
48893 oldValue: event.oldValue,
48894 newValue: event.newValue,
48895 colDef: event.colDef,
48896 column: event.column,
48897 api: event.api,
48898 columnApi: event.columnApi,
48899 context: event.context
48900 });
48901 }
48902 };
48903 ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {
48904 if (!field) {
48905 return false;
48906 }
48907 // if no '.', then it's not a deep value
48908 var valuesAreSame = false;
48909 if (!isFieldContainsDots) {
48910 data[field] = newValue;
48911 }
48912 else {
48913 // otherwise it is a deep value, so need to dig for it
48914 var fieldPieces = field.split('.');
48915 var currentObject = data;
48916 while (fieldPieces.length > 0 && currentObject) {
48917 var fieldPiece = fieldPieces.shift();
48918 if (fieldPieces.length === 0) {
48919 currentObject[fieldPiece] = newValue;
48920 }
48921 else {
48922 currentObject = currentObject[fieldPiece];
48923 }
48924 }
48925 }
48926 return !valuesAreSame;
48927 };
48928 ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {
48929 var params = {
48930 data: data,
48931 node: rowNode,
48932 column: column,
48933 colDef: column.getColDef(),
48934 api: this.gridOptionsWrapper.getApi(),
48935 columnApi: this.gridOptionsWrapper.getColumnApi(),
48936 context: this.gridOptionsWrapper.getContext(),
48937 getValue: this.getValueCallback.bind(this, rowNode)
48938 };
48939 return this.expressionService.evaluate(valueGetter, params);
48940 };
48941 ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {
48942 var colId = column.getId();
48943 // if inside the same turn, just return back the value we got last time
48944 var valueFromCache = this.valueCache.getValue(rowNode, colId);
48945 if (valueFromCache !== undefined) {
48946 return valueFromCache;
48947 }
48948 var params = {
48949 data: data,
48950 node: rowNode,
48951 column: column,
48952 colDef: column.getColDef(),
48953 api: this.gridOptionsWrapper.getApi(),
48954 columnApi: this.gridOptionsWrapper.getColumnApi(),
48955 context: this.gridOptionsWrapper.getContext(),
48956 getValue: this.getValueCallback.bind(this, rowNode)
48957 };
48958 var result = this.expressionService.evaluate(valueGetter, params);
48959 // if a turn is active, store the value in case the grid asks for it again
48960 this.valueCache.setValue(rowNode, colId, result);
48961 return result;
48962 };
48963 ValueService.prototype.getValueCallback = function (node, field) {
48964 var otherColumn = this.columnModel.getPrimaryColumn(field);
48965 if (otherColumn) {
48966 return this.getValue(otherColumn, node);
48967 }
48968 return null;
48969 };
48970 // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col
48971 ValueService.prototype.getKeyForNode = function (col, rowNode) {
48972 var value = this.getValue(col, rowNode);
48973 var keyCreator = col.getColDef().keyCreator;
48974 var result = value;
48975 if (keyCreator) {
48976 var keyParams = {
48977 value: value,
48978 colDef: col.getColDef(),
48979 column: col,
48980 node: rowNode,
48981 data: rowNode.data,
48982 api: this.gridOptionsWrapper.getApi(),
48983 columnApi: this.gridOptionsWrapper.getColumnApi(),
48984 context: this.gridOptionsWrapper.getContext()
48985 };
48986 result = keyCreator(keyParams);
48987 }
48988 // if already a string, or missing, just return it
48989 if (typeof result === 'string' || result == null) {
48990 return result;
48991 }
48992 result = String(result);
48993 if (result === '[object Object]') {
48994 Object(_utils_function__WEBPACK_IMPORTED_MODULE_5__["doOnce"])(function () {
48995 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');
48996 }, 'getKeyForNode - warn about [object,object]');
48997 }
48998 return result;
48999 };
49000 __decorate([
49001 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('expressionService')
49002 ], ValueService.prototype, "expressionService", void 0);
49003 __decorate([
49004 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
49005 ], ValueService.prototype, "columnModel", void 0);
49006 __decorate([
49007 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueCache')
49008 ], ValueService.prototype, "valueCache", void 0);
49009 __decorate([
49010 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
49011 ], ValueService.prototype, "init", null);
49012 ValueService = __decorate([
49013 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('valueService')
49014 ], ValueService);
49015 return ValueService;
49016}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
49017
49018
49019
49020
49021
49022/***/ }),
49023/* 215 */
49024/***/ (function(module, __webpack_exports__, __webpack_require__) {
49025
49026"use strict";
49027__webpack_require__.r(__webpack_exports__);
49028/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpressionService", function() { return ExpressionService; });
49029/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49030/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49031/**
49032 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49033 * @version v27.3.0
49034 * @link https://www.ag-grid.com/
49035 * @license MIT
49036 */
49037var __extends = (undefined && undefined.__extends) || (function () {
49038 var extendStatics = function (d, b) {
49039 extendStatics = Object.setPrototypeOf ||
49040 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49041 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49042 return extendStatics(d, b);
49043 };
49044 return function (d, b) {
49045 extendStatics(d, b);
49046 function __() { this.constructor = d; }
49047 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49048 };
49049})();
49050var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49051 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49052 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49053 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;
49054 return c > 3 && r && Object.defineProperty(target, key, r), r;
49055};
49056var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
49057 return function (target, key) { decorator(target, key, paramIndex); }
49058};
49059
49060
49061
49062var ExpressionService = /** @class */ (function (_super) {
49063 __extends(ExpressionService, _super);
49064 function ExpressionService() {
49065 var _this = _super !== null && _super.apply(this, arguments) || this;
49066 _this.expressionToFunctionCache = {};
49067 return _this;
49068 }
49069 ExpressionService.prototype.setBeans = function (loggerFactory) {
49070 this.logger = loggerFactory.create('ExpressionService');
49071 };
49072 ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {
49073 if (typeof expressionOrFunc === 'function') {
49074 // valueGetter is a function, so just call it
49075 var func = expressionOrFunc;
49076 return func(params);
49077 }
49078 else if (typeof expressionOrFunc === 'string') {
49079 // valueGetter is an expression, so execute the expression
49080 var expression = expressionOrFunc;
49081 return this.evaluateExpression(expression, params);
49082 }
49083 else {
49084 console.error('AG Grid: value should be either a string or a function', expressionOrFunc);
49085 }
49086 };
49087 ExpressionService.prototype.evaluateExpression = function (expression, params) {
49088 try {
49089 var javaScriptFunction = this.createExpressionFunction(expression);
49090 // the params don't have all these values, rather we add every possible
49091 // value a params can have, which makes whatever is in the params available.
49092 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);
49093 return result;
49094 }
49095 catch (e) {
49096 // the expression failed, which can happen, as it's the client that
49097 // provides the expression. so print a nice message
49098 // tslint:disable-next-line
49099 console.log('Processing of the expression failed');
49100 // tslint:disable-next-line
49101 console.log('Expression = ' + expression);
49102 // tslint:disable-next-line
49103 console.log('Params =', params);
49104 // tslint:disable-next-line
49105 console.log('Exception = ' + e);
49106 return null;
49107 }
49108 };
49109 ExpressionService.prototype.createExpressionFunction = function (expression) {
49110 // check cache first
49111 if (this.expressionToFunctionCache[expression]) {
49112 return this.expressionToFunctionCache[expression];
49113 }
49114 // if not found in cache, return the function
49115 var functionBody = this.createFunctionBody(expression);
49116 var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);
49117 // store in cache
49118 this.expressionToFunctionCache[expression] = theFunction;
49119 return theFunction;
49120 };
49121 ExpressionService.prototype.createFunctionBody = function (expression) {
49122 // if the expression has the 'return' word in it, then use as is,
49123 // if not, then wrap it with return and ';' to make a function
49124 if (expression.indexOf('return') >= 0) {
49125 return expression;
49126 }
49127 else {
49128 return 'return ' + expression + ';';
49129 }
49130 };
49131 __decorate([
49132 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('loggerFactory'))
49133 ], ExpressionService.prototype, "setBeans", null);
49134 ExpressionService = __decorate([
49135 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('expressionService')
49136 ], ExpressionService);
49137 return ExpressionService;
49138}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49139
49140
49141
49142
49143
49144/***/ }),
49145/* 216 */
49146/***/ (function(module, __webpack_exports__, __webpack_require__) {
49147
49148"use strict";
49149__webpack_require__.r(__webpack_exports__);
49150/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TemplateService", function() { return TemplateService; });
49151/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49152/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49153/**
49154 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49155 * @version v27.3.0
49156 * @link https://www.ag-grid.com/
49157 * @license MIT
49158 */
49159var __extends = (undefined && undefined.__extends) || (function () {
49160 var extendStatics = function (d, b) {
49161 extendStatics = Object.setPrototypeOf ||
49162 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49163 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49164 return extendStatics(d, b);
49165 };
49166 return function (d, b) {
49167 extendStatics(d, b);
49168 function __() { this.constructor = d; }
49169 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49170 };
49171})();
49172var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49173 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49174 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49175 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;
49176 return c > 3 && r && Object.defineProperty(target, key, r), r;
49177};
49178
49179
49180var TemplateService = /** @class */ (function (_super) {
49181 __extends(TemplateService, _super);
49182 function TemplateService() {
49183 var _this = _super !== null && _super.apply(this, arguments) || this;
49184 _this.templateCache = {};
49185 _this.waitingCallbacks = {};
49186 return _this;
49187 }
49188 // returns the template if it is loaded, or null if it is not loaded
49189 // but will call the callback when it is loaded
49190 TemplateService.prototype.getTemplate = function (url, callback) {
49191 var templateFromCache = this.templateCache[url];
49192 if (templateFromCache) {
49193 return templateFromCache;
49194 }
49195 var callbackList = this.waitingCallbacks[url];
49196 var that = this;
49197 if (!callbackList) {
49198 // first time this was called, so need a new list for callbacks
49199 callbackList = [];
49200 this.waitingCallbacks[url] = callbackList;
49201 // and also need to do the http request
49202 var client = new XMLHttpRequest();
49203 client.onload = function () {
49204 that.handleHttpResult(this, url);
49205 };
49206 client.open("GET", url);
49207 client.send();
49208 }
49209 // add this callback
49210 if (callback) {
49211 callbackList.push(callback);
49212 }
49213 // caller needs to wait for template to load, so return null
49214 return null;
49215 };
49216 TemplateService.prototype.handleHttpResult = function (httpResult, url) {
49217 if (httpResult.status !== 200 || httpResult.response === null) {
49218 console.warn("AG Grid: Unable to get template error " + httpResult.status + " - " + url);
49219 return;
49220 }
49221 // response success, so process it
49222 // in IE9 the response is in - responseText
49223 this.templateCache[url] = httpResult.response || httpResult.responseText;
49224 // inform all listeners that this is now in the cache
49225 var callbacks = this.waitingCallbacks[url];
49226 for (var i = 0; i < callbacks.length; i++) {
49227 var callback = callbacks[i];
49228 // we could pass the callback the response, however we know the client of this code
49229 // is the cell renderer, and it passes the 'cellRefresh' method in as the callback
49230 // which doesn't take any parameters.
49231 callback();
49232 }
49233 };
49234 TemplateService = __decorate([
49235 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('templateService')
49236 ], TemplateService);
49237 return TemplateService;
49238}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49239
49240
49241
49242
49243
49244/***/ }),
49245/* 217 */
49246/***/ (function(module, __webpack_exports__, __webpack_require__) {
49247
49248"use strict";
49249__webpack_require__.r(__webpack_exports__);
49250/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoggerFactory", function() { return LoggerFactory; });
49251/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Logger", function() { return Logger; });
49252/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49253/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49254/**
49255 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49256 * @version v27.3.0
49257 * @link https://www.ag-grid.com/
49258 * @license MIT
49259 */
49260var __extends = (undefined && undefined.__extends) || (function () {
49261 var extendStatics = function (d, b) {
49262 extendStatics = Object.setPrototypeOf ||
49263 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49264 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49265 return extendStatics(d, b);
49266 };
49267 return function (d, b) {
49268 extendStatics(d, b);
49269 function __() { this.constructor = d; }
49270 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49271 };
49272})();
49273var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49274 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49275 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49276 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;
49277 return c > 3 && r && Object.defineProperty(target, key, r), r;
49278};
49279var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
49280 return function (target, key) { decorator(target, key, paramIndex); }
49281};
49282
49283
49284
49285var LoggerFactory = /** @class */ (function (_super) {
49286 __extends(LoggerFactory, _super);
49287 function LoggerFactory() {
49288 return _super !== null && _super.apply(this, arguments) || this;
49289 }
49290 LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {
49291 this.logging = gridOptionsWrapper.isDebug();
49292 };
49293 LoggerFactory.prototype.create = function (name) {
49294 return new Logger(name, this.isLogging.bind(this));
49295 };
49296 LoggerFactory.prototype.isLogging = function () {
49297 return this.logging;
49298 };
49299 __decorate([
49300 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('gridOptionsWrapper'))
49301 ], LoggerFactory.prototype, "setBeans", null);
49302 LoggerFactory = __decorate([
49303 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('loggerFactory')
49304 ], LoggerFactory);
49305 return LoggerFactory;
49306}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49307
49308var Logger = /** @class */ (function () {
49309 function Logger(name, isLoggingFunc) {
49310 this.name = name;
49311 this.isLoggingFunc = isLoggingFunc;
49312 }
49313 Logger.prototype.isLogging = function () {
49314 return this.isLoggingFunc();
49315 };
49316 Logger.prototype.log = function (message) {
49317 if (this.isLoggingFunc()) {
49318 // tslint:disable-next-line
49319 console.log('AG Grid.' + this.name + ': ' + message);
49320 }
49321 };
49322 return Logger;
49323}());
49324
49325
49326
49327
49328
49329/***/ }),
49330/* 218 */
49331/***/ (function(module, __webpack_exports__, __webpack_require__) {
49332
49333"use strict";
49334__webpack_require__.r(__webpack_exports__);
49335/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridComp", function() { return GridComp; });
49336/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49337/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
49338/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
49339/* harmony import */ var _focusService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(206);
49340/* harmony import */ var _gridCtrl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(219);
49341/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(111);
49342/* harmony import */ var _widgets_tabGuardComp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(202);
49343/**
49344 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49345 * @version v27.3.0
49346 * @link https://www.ag-grid.com/
49347 * @license MIT
49348 */
49349var __extends = (undefined && undefined.__extends) || (function () {
49350 var extendStatics = function (d, b) {
49351 extendStatics = Object.setPrototypeOf ||
49352 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49353 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49354 return extendStatics(d, b);
49355 };
49356 return function (d, b) {
49357 extendStatics(d, b);
49358 function __() { this.constructor = d; }
49359 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49360 };
49361})();
49362var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49363 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49364 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49365 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;
49366 return c > 3 && r && Object.defineProperty(target, key, r), r;
49367};
49368
49369
49370
49371
49372
49373
49374
49375var GridComp = /** @class */ (function (_super) {
49376 __extends(GridComp, _super);
49377 function GridComp(eGridDiv) {
49378 var _this = _super.call(this, undefined) || this;
49379 _this.eGridDiv = eGridDiv;
49380 return _this;
49381 }
49382 GridComp.prototype.postConstruct = function () {
49383 var _this = this;
49384 this.logger = this.loggerFactory.create('GridComp');
49385 var compProxy = {
49386 destroyGridUi: function () { return _this.destroyBean(_this); },
49387 setRtlClass: function (cssClass) { return _this.addCssClass(cssClass); },
49388 addOrRemoveKeyboardFocusClass: function (addOrRemove) { return _this.addOrRemoveCssClass(_focusService__WEBPACK_IMPORTED_MODULE_3__["FocusService"].AG_KEYBOARD_FOCUS, addOrRemove); },
49389 forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),
49390 updateLayoutClasses: this.updateLayoutClasses.bind(this),
49391 getFocusableContainers: this.getFocusableContainers.bind(this),
49392 setUserSelect: function (value) {
49393 _this.getGui().style.userSelect = value != null ? value : '';
49394 _this.getGui().style.webkitUserSelect = value != null ? value : '';
49395 },
49396 setCursor: function (value) {
49397 _this.getGui().style.cursor = value != null ? value : '';
49398 }
49399 };
49400 this.ctrl = this.createManagedBean(new _gridCtrl__WEBPACK_IMPORTED_MODULE_4__["GridCtrl"]());
49401 var template = this.createTemplate();
49402 this.setTemplate(template);
49403 this.ctrl.setComp(compProxy, this.eGridDiv, this.getGui());
49404 this.insertGridIntoDom();
49405 this.initialiseTabGuard({
49406 // we want to override the default behaviour to do nothing for onTabKeyDown
49407 onTabKeyDown: function () { return undefined; },
49408 focusInnerElement: function (fromBottom) { return _this.ctrl.focusInnerElement(fromBottom); }
49409 });
49410 };
49411 GridComp.prototype.insertGridIntoDom = function () {
49412 var _this = this;
49413 var eGui = this.getGui();
49414 this.eGridDiv.appendChild(eGui);
49415 this.addDestroyFunc(function () {
49416 _this.eGridDiv.removeChild(eGui);
49417 _this.logger.log('Grid removed from DOM');
49418 });
49419 };
49420 GridComp.prototype.updateLayoutClasses = function (cssClass, params) {
49421 var eRootWrapperBodyClassList = this.eRootWrapperBody.classList;
49422 eRootWrapperBodyClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
49423 eRootWrapperBodyClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].NORMAL, params.normal);
49424 eRootWrapperBodyClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].PRINT, params.print);
49425 this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
49426 this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].NORMAL, params.normal);
49427 this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].PRINT, params.print);
49428 };
49429 GridComp.prototype.createTemplate = function () {
49430 var dropZones = this.ctrl.showDropZones() ? '<ag-grid-header-drop-zones></ag-grid-header-drop-zones>' : '';
49431 var sideBar = this.ctrl.showSideBar() ? '<ag-side-bar ref="sideBar"></ag-side-bar>' : '';
49432 var statusBar = this.ctrl.showStatusBar() ? '<ag-status-bar ref="statusBar"></ag-status-bar>' : '';
49433 var watermark = this.ctrl.showWatermark() ? '<ag-watermark></ag-watermark>' : '';
49434 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>";
49435 return template;
49436 };
49437 GridComp.prototype.getFocusableElement = function () {
49438 return this.eRootWrapperBody;
49439 };
49440 GridComp.prototype.getFocusableContainers = function () {
49441 var focusableContainers = [
49442 this.gridBodyComp.getGui()
49443 ];
49444 if (this.sideBarComp) {
49445 focusableContainers.push(this.sideBarComp.getGui());
49446 }
49447 return focusableContainers.filter(function (el) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isVisible"])(el); });
49448 };
49449 __decorate([
49450 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('loggerFactory')
49451 ], GridComp.prototype, "loggerFactory", void 0);
49452 __decorate([
49453 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('gridBody')
49454 ], GridComp.prototype, "gridBodyComp", void 0);
49455 __decorate([
49456 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('sideBar')
49457 ], GridComp.prototype, "sideBarComp", void 0);
49458 __decorate([
49459 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('rootWrapperBody')
49460 ], GridComp.prototype, "eRootWrapperBody", void 0);
49461 __decorate([
49462 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
49463 ], GridComp.prototype, "postConstruct", null);
49464 return GridComp;
49465}(_widgets_tabGuardComp__WEBPACK_IMPORTED_MODULE_6__["TabGuardComp"]));
49466
49467
49468
49469
49470
49471/***/ }),
49472/* 219 */
49473/***/ (function(module, __webpack_exports__, __webpack_require__) {
49474
49475"use strict";
49476__webpack_require__.r(__webpack_exports__);
49477/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridCtrl", function() { return GridCtrl; });
49478/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49479/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49480/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17);
49481/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
49482/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(111);
49483/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24);
49484/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18);
49485/**
49486 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49487 * @version v27.3.0
49488 * @link https://www.ag-grid.com/
49489 * @license MIT
49490 */
49491var __extends = (undefined && undefined.__extends) || (function () {
49492 var extendStatics = function (d, b) {
49493 extendStatics = Object.setPrototypeOf ||
49494 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49495 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49496 return extendStatics(d, b);
49497 };
49498 return function (d, b) {
49499 extendStatics(d, b);
49500 function __() { this.constructor = d; }
49501 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49502 };
49503})();
49504var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49505 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49506 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49507 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;
49508 return c > 3 && r && Object.defineProperty(target, key, r), r;
49509};
49510
49511
49512
49513
49514
49515
49516
49517var GridCtrl = /** @class */ (function (_super) {
49518 __extends(GridCtrl, _super);
49519 function GridCtrl() {
49520 return _super !== null && _super.apply(this, arguments) || this;
49521 }
49522 GridCtrl.prototype.setComp = function (view, eGridDiv, eGui) {
49523 var _this = this;
49524 this.view = view;
49525 this.eGridHostDiv = eGridDiv;
49526 this.eGui = eGui;
49527 this.mouseEventService.stampTopLevelGridCompWithGridInstance(eGridDiv);
49528 this.createManagedBean(new _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutFeature"](this.view));
49529 // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,
49530 // which doLayout indirectly depends on
49531 this.addRtlSupport();
49532 this.addManagedListener(this, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_KEYBOARD_FOCUS, function () {
49533 _this.view.addOrRemoveKeyboardFocusClass(true);
49534 });
49535 this.addManagedListener(this, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_MOUSE_FOCUS, function () {
49536 _this.view.addOrRemoveKeyboardFocusClass(false);
49537 });
49538 var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridHostDiv, this.onGridSizeChanged.bind(this));
49539 this.addDestroyFunc(function () { return unsubscribeFromResize(); });
49540 this.ctrlsService.registerGridCtrl(this);
49541 };
49542 GridCtrl.prototype.isDetailGrid = function () {
49543 var _a, _b;
49544 var el = this.focusService.findTabbableParent(this.getGui());
49545 return ((_b = (_a = el) === null || _a === void 0 ? void 0 : _a.getAttribute('row-id')) === null || _b === void 0 ? void 0 : _b.startsWith('detail')) || false;
49546 };
49547 GridCtrl.prototype.showDropZones = function () {
49548 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RowGroupingModule);
49549 };
49550 GridCtrl.prototype.showSideBar = function () {
49551 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].SideBarModule);
49552 };
49553 GridCtrl.prototype.showStatusBar = function () {
49554 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].StatusBarModule);
49555 };
49556 GridCtrl.prototype.showWatermark = function () {
49557 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].EnterpriseCoreModule);
49558 };
49559 GridCtrl.prototype.onGridSizeChanged = function () {
49560 var event = {
49561 type: _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_GRID_SIZE_CHANGED,
49562 api: this.gridApi,
49563 columnApi: this.columnApi,
49564 clientWidth: this.eGridHostDiv.clientWidth,
49565 clientHeight: this.eGridHostDiv.clientHeight
49566 };
49567 this.eventService.dispatchEvent(event);
49568 };
49569 GridCtrl.prototype.addRtlSupport = function () {
49570 var cssClass = this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr';
49571 this.view.setRtlClass(cssClass);
49572 };
49573 GridCtrl.prototype.destroyGridUi = function () {
49574 this.view.destroyGridUi();
49575 };
49576 GridCtrl.prototype.getGui = function () {
49577 return this.eGui;
49578 };
49579 GridCtrl.prototype.setResizeCursor = function (on) {
49580 this.view.setCursor(on ? 'ew-resize' : null);
49581 };
49582 GridCtrl.prototype.disableUserSelect = function (on) {
49583 this.view.setUserSelect(on ? 'none' : null);
49584 };
49585 GridCtrl.prototype.focusNextInnerContainer = function (backwards) {
49586 var eDocument = this.gridOptionsWrapper.getDocument();
49587 var focusableContainers = this.view.getFocusableContainers();
49588 var idxWithFocus = focusableContainers.findIndex(function (container) { return container.contains(eDocument.activeElement); });
49589 var nextIdx = idxWithFocus + (backwards ? -1 : 1);
49590 if (nextIdx <= 0 || nextIdx >= focusableContainers.length) {
49591 return false;
49592 }
49593 return this.focusService.focusInto(focusableContainers[nextIdx]);
49594 };
49595 GridCtrl.prototype.focusInnerElement = function (fromBottom) {
49596 var focusableContainers = this.view.getFocusableContainers();
49597 if (fromBottom) {
49598 if (focusableContainers.length > 1) {
49599 return this.focusService.focusInto(Object(_utils_array__WEBPACK_IMPORTED_MODULE_6__["last"])(focusableContainers), true);
49600 }
49601 var lastColumn = Object(_utils_array__WEBPACK_IMPORTED_MODULE_6__["last"])(this.columnModel.getAllDisplayedColumns());
49602 if (this.focusService.focusGridView(lastColumn, true)) {
49603 return true;
49604 }
49605 }
49606 return this.focusService.focusFirstHeader();
49607 };
49608 GridCtrl.prototype.forceFocusOutOfContainer = function (up) {
49609 if (up === void 0) { up = false; }
49610 this.view.forceFocusOutOfContainer(up);
49611 };
49612 __decorate([
49613 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
49614 ], GridCtrl.prototype, "columnApi", void 0);
49615 __decorate([
49616 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
49617 ], GridCtrl.prototype, "gridApi", void 0);
49618 __decorate([
49619 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
49620 ], GridCtrl.prototype, "focusService", void 0);
49621 __decorate([
49622 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('resizeObserverService')
49623 ], GridCtrl.prototype, "resizeObserverService", void 0);
49624 __decorate([
49625 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
49626 ], GridCtrl.prototype, "columnModel", void 0);
49627 __decorate([
49628 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
49629 ], GridCtrl.prototype, "ctrlsService", void 0);
49630 __decorate([
49631 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('mouseEventService')
49632 ], GridCtrl.prototype, "mouseEventService", void 0);
49633 return GridCtrl;
49634}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49635
49636
49637
49638
49639
49640/***/ }),
49641/* 220 */
49642/***/ (function(module, __webpack_exports__, __webpack_require__) {
49643
49644"use strict";
49645__webpack_require__.r(__webpack_exports__);
49646/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortController", function() { return SortController; });
49647/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49648/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49649/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
49650/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
49651/**
49652 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49653 * @version v27.3.0
49654 * @link https://www.ag-grid.com/
49655 * @license MIT
49656 */
49657var __extends = (undefined && undefined.__extends) || (function () {
49658 var extendStatics = function (d, b) {
49659 extendStatics = Object.setPrototypeOf ||
49660 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49661 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49662 return extendStatics(d, b);
49663 };
49664 return function (d, b) {
49665 extendStatics(d, b);
49666 function __() { this.constructor = d; }
49667 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49668 };
49669})();
49670var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49671 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49672 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49673 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;
49674 return c > 3 && r && Object.defineProperty(target, key, r), r;
49675};
49676
49677
49678
49679
49680var SortController = /** @class */ (function (_super) {
49681 __extends(SortController, _super);
49682 function SortController() {
49683 return _super !== null && _super.apply(this, arguments) || this;
49684 }
49685 SortController_1 = SortController;
49686 SortController.prototype.progressSort = function (column, multiSort, source) {
49687 var nextDirection = this.getNextSortDirection(column);
49688 this.setSortForColumn(column, nextDirection, multiSort, source);
49689 };
49690 SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {
49691 // auto correct - if sort not legal value, then set it to 'no sort' (which is null)
49692 if (sort !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC && sort !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC) {
49693 sort = null;
49694 }
49695 // update sort on current col
49696 column.setSort(sort, source);
49697 var doingMultiSort = (multiSort || this.gridOptionsWrapper.isAlwaysMultiSort()) && !this.gridOptionsWrapper.isSuppressMultiSort();
49698 // clear sort on all columns except this one, and update the icons
49699 if (!doingMultiSort) {
49700 this.clearSortBarThisColumn(column, source);
49701 }
49702 // sortIndex used for knowing order of cols when multi-col sort
49703 this.updateSortIndex(column);
49704 this.dispatchSortChangedEvents(source);
49705 };
49706 SortController.prototype.updateSortIndex = function (lastColToChange) {
49707 // update sortIndex on all sorting cols
49708 var allSortedCols = this.getColumnsWithSortingOrdered();
49709 var sortIndex = 0;
49710 allSortedCols.forEach(function (col) {
49711 if (col !== lastColToChange) {
49712 col.setSortIndex(sortIndex);
49713 sortIndex++;
49714 }
49715 });
49716 // last col to change always gets the last sort index, it's added to the end
49717 if (lastColToChange.getSort()) {
49718 lastColToChange.setSortIndex(sortIndex);
49719 }
49720 // clear sort index on all cols not sorting
49721 var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();
49722 allCols.filter(function (col) { return col.getSort() == null; }).forEach(function (col) { return col.setSortIndex(); });
49723 };
49724 // gets called by API, so if data changes, use can call this, which will end up
49725 // working out the sort order again of the rows.
49726 SortController.prototype.onSortChanged = function (source) {
49727 this.dispatchSortChangedEvents(source);
49728 };
49729 SortController.prototype.isSortActive = function () {
49730 // pull out all the columns that have sorting set
49731 var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();
49732 var sortedCols = allCols.filter(function (column) { return !!column.getSort(); });
49733 return sortedCols && sortedCols.length > 0;
49734 };
49735 SortController.prototype.dispatchSortChangedEvents = function (source) {
49736 var event = {
49737 type: _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_SORT_CHANGED,
49738 api: this.gridApi,
49739 columnApi: this.columnApi,
49740 source: source
49741 };
49742 this.eventService.dispatchEvent(event);
49743 };
49744 SortController.prototype.clearSortBarThisColumn = function (columnToSkip, source) {
49745 this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {
49746 // Do not clear if either holding shift, or if column in question was clicked
49747 if (columnToClear !== columnToSkip) {
49748 // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise
49749 // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.
49750 columnToClear.setSort(undefined, source);
49751 }
49752 });
49753 };
49754 SortController.prototype.getNextSortDirection = function (column) {
49755 var sortingOrder;
49756 if (column.getColDef().sortingOrder) {
49757 sortingOrder = column.getColDef().sortingOrder;
49758 }
49759 else if (this.gridOptionsWrapper.getSortingOrder()) {
49760 sortingOrder = this.gridOptionsWrapper.getSortingOrder();
49761 }
49762 else {
49763 sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;
49764 }
49765 if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {
49766 console.warn("AG Grid: sortingOrder must be an array with at least one element, currently it's " + sortingOrder);
49767 return null;
49768 }
49769 var currentIndex = sortingOrder.indexOf(column.getSort());
49770 var notInArray = currentIndex < 0;
49771 var lastItemInArray = currentIndex == sortingOrder.length - 1;
49772 var result;
49773 if (notInArray || lastItemInArray) {
49774 result = sortingOrder[0];
49775 }
49776 else {
49777 result = sortingOrder[currentIndex + 1];
49778 }
49779 // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid
49780 if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {
49781 console.warn('AG Grid: invalid sort type ' + result);
49782 return null;
49783 }
49784 return result;
49785 };
49786 SortController.prototype.getColumnsWithSortingOrdered = function () {
49787 // pull out all the columns that have sorting set
49788 var allColumnsIncludingAuto = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();
49789 var columnsWithSorting = allColumnsIncludingAuto.filter(function (column) { return !!column.getSort(); });
49790 // when both cols are missing sortIndex, we use the position of the col in all cols list.
49791 // this means if colDefs only have sort, but no sortIndex, we deterministically pick which
49792 // cols is sorted by first.
49793 var allColsIndexes = {};
49794 allColumnsIncludingAuto.forEach(function (col, index) { return allColsIndexes[col.getId()] = index; });
49795 // put the columns in order of which one got sorted first
49796 columnsWithSorting.sort(function (a, b) {
49797 var iA = a.getSortIndex();
49798 var iB = b.getSortIndex();
49799 if (iA != null && iB != null) {
49800 return iA - iB; // both present, normal comparison
49801 }
49802 else if (iA == null && iB == null) {
49803 // both missing, compare using column positions
49804 var posA = allColsIndexes[a.getId()];
49805 var posB = allColsIndexes[b.getId()];
49806 return posA > posB ? 1 : -1;
49807 }
49808 else if (iB == null) {
49809 return -1; // iB missing
49810 }
49811 else {
49812 return 1; // iA missing
49813 }
49814 });
49815 return columnsWithSorting;
49816 };
49817 // used by server side row models, to sent sort to server
49818 SortController.prototype.getSortModel = function () {
49819 return this.getColumnsWithSortingOrdered().map(function (column) { return ({
49820 sort: column.getSort(),
49821 colId: column.getId()
49822 }); });
49823 };
49824 SortController.prototype.getSortOptions = function () {
49825 return this.getColumnsWithSortingOrdered().map(function (column) { return ({
49826 sort: column.getSort(),
49827 column: column
49828 }); });
49829 };
49830 var SortController_1;
49831 SortController.DEFAULT_SORTING_ORDER = [_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC, _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC, null];
49832 __decorate([
49833 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
49834 ], SortController.prototype, "columnModel", void 0);
49835 __decorate([
49836 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
49837 ], SortController.prototype, "columnApi", void 0);
49838 __decorate([
49839 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
49840 ], SortController.prototype, "gridApi", void 0);
49841 SortController = SortController_1 = __decorate([
49842 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('sortController')
49843 ], SortController);
49844 return SortController;
49845}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49846
49847
49848
49849
49850
49851/***/ }),
49852/* 221 */
49853/***/ (function(module, __webpack_exports__, __webpack_require__) {
49854
49855"use strict";
49856__webpack_require__.r(__webpack_exports__);
49857/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnHoverService", function() { return ColumnHoverService; });
49858/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49859/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
49860/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
49861/**
49862 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49863 * @version v27.3.0
49864 * @link https://www.ag-grid.com/
49865 * @license MIT
49866 */
49867var __extends = (undefined && undefined.__extends) || (function () {
49868 var extendStatics = function (d, b) {
49869 extendStatics = Object.setPrototypeOf ||
49870 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49871 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49872 return extendStatics(d, b);
49873 };
49874 return function (d, b) {
49875 extendStatics(d, b);
49876 function __() { this.constructor = d; }
49877 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49878 };
49879})();
49880var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49881 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49882 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49883 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;
49884 return c > 3 && r && Object.defineProperty(target, key, r), r;
49885};
49886
49887
49888
49889var ColumnHoverService = /** @class */ (function (_super) {
49890 __extends(ColumnHoverService, _super);
49891 function ColumnHoverService() {
49892 return _super !== null && _super.apply(this, arguments) || this;
49893 }
49894 ColumnHoverService.prototype.setMouseOver = function (columns) {
49895 this.selectedColumns = columns;
49896 var event = {
49897 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_HOVER_CHANGED,
49898 api: this.gridApi,
49899 columnApi: this.columnApi
49900 };
49901 this.eventService.dispatchEvent(event);
49902 };
49903 ColumnHoverService.prototype.clearMouseOver = function () {
49904 this.selectedColumns = null;
49905 var event = {
49906 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_HOVER_CHANGED,
49907 api: this.gridApi,
49908 columnApi: this.columnApi
49909 };
49910 this.eventService.dispatchEvent(event);
49911 };
49912 ColumnHoverService.prototype.isHovered = function (column) {
49913 return !!this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;
49914 };
49915 __decorate([
49916 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
49917 ], ColumnHoverService.prototype, "columnApi", void 0);
49918 __decorate([
49919 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
49920 ], ColumnHoverService.prototype, "gridApi", void 0);
49921 ColumnHoverService = __decorate([
49922 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('columnHoverService')
49923 ], ColumnHoverService);
49924 return ColumnHoverService;
49925}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
49926
49927
49928
49929
49930
49931/***/ }),
49932/* 222 */
49933/***/ (function(module, __webpack_exports__, __webpack_require__) {
49934
49935"use strict";
49936__webpack_require__.r(__webpack_exports__);
49937/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnAnimationService", function() { return ColumnAnimationService; });
49938/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49939/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49940/**
49941 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49942 * @version v27.3.0
49943 * @link https://www.ag-grid.com/
49944 * @license MIT
49945 */
49946var __extends = (undefined && undefined.__extends) || (function () {
49947 var extendStatics = function (d, b) {
49948 extendStatics = Object.setPrototypeOf ||
49949 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49950 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49951 return extendStatics(d, b);
49952 };
49953 return function (d, b) {
49954 extendStatics(d, b);
49955 function __() { this.constructor = d; }
49956 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49957 };
49958})();
49959var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49960 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49961 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49962 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;
49963 return c > 3 && r && Object.defineProperty(target, key, r), r;
49964};
49965
49966
49967var ColumnAnimationService = /** @class */ (function (_super) {
49968 __extends(ColumnAnimationService, _super);
49969 function ColumnAnimationService() {
49970 var _this = _super !== null && _super.apply(this, arguments) || this;
49971 _this.executeNextFuncs = [];
49972 _this.executeLaterFuncs = [];
49973 _this.active = false;
49974 _this.animationThreadCount = 0;
49975 return _this;
49976 }
49977 ColumnAnimationService.prototype.postConstruct = function () {
49978 var _this = this;
49979 this.ctrlsService.whenReady(function (p) { return _this.gridBodyCtrl = p.gridBodyCtrl; });
49980 };
49981 ColumnAnimationService.prototype.isActive = function () {
49982 return this.active;
49983 };
49984 ColumnAnimationService.prototype.start = function () {
49985 if (this.active) {
49986 return;
49987 }
49988 if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {
49989 return;
49990 }
49991 // if doing RTL, we don't animate open / close as due to how the pixels are inverted,
49992 // the animation moves all the row the the right rather than to the left (ie it's the static
49993 // columns that actually get their coordinates updated)
49994 if (this.gridOptionsWrapper.isEnableRtl()) {
49995 return;
49996 }
49997 this.ensureAnimationCssClassPresent();
49998 this.active = true;
49999 };
50000 ColumnAnimationService.prototype.finish = function () {
50001 if (!this.active) {
50002 return;
50003 }
50004 this.flush();
50005 this.active = false;
50006 };
50007 ColumnAnimationService.prototype.executeNextVMTurn = function (func) {
50008 if (this.active) {
50009 this.executeNextFuncs.push(func);
50010 }
50011 else {
50012 func();
50013 }
50014 };
50015 ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {
50016 if (this.active) {
50017 this.executeLaterFuncs.push(func);
50018 }
50019 else {
50020 func();
50021 }
50022 };
50023 ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {
50024 var _this = this;
50025 // up the count, so we can tell if someone else has updated the count
50026 // by the time the 'wait' func executes
50027 this.animationThreadCount++;
50028 var animationThreadCountCopy = this.animationThreadCount;
50029 this.gridBodyCtrl.setColumnMovingCss(true);
50030 this.executeLaterFuncs.push(function () {
50031 // only remove the class if this thread was the last one to update it
50032 if (_this.animationThreadCount === animationThreadCountCopy) {
50033 _this.gridBodyCtrl.setColumnMovingCss(false);
50034 }
50035 });
50036 };
50037 ColumnAnimationService.prototype.flush = function () {
50038 var nowFuncs = this.executeNextFuncs;
50039 this.executeNextFuncs = [];
50040 var waitFuncs = this.executeLaterFuncs;
50041 this.executeLaterFuncs = [];
50042 if (nowFuncs.length === 0 && waitFuncs.length === 0) {
50043 return;
50044 }
50045 window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);
50046 window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);
50047 };
50048 __decorate([
50049 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
50050 ], ColumnAnimationService.prototype, "ctrlsService", void 0);
50051 __decorate([
50052 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
50053 ], ColumnAnimationService.prototype, "postConstruct", null);
50054 ColumnAnimationService = __decorate([
50055 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('columnAnimationService')
50056 ], ColumnAnimationService);
50057 return ColumnAnimationService;
50058}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50059
50060
50061
50062
50063
50064/***/ }),
50065/* 223 */
50066/***/ (function(module, __webpack_exports__, __webpack_require__) {
50067
50068"use strict";
50069__webpack_require__.r(__webpack_exports__);
50070/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AutoGroupColService", function() { return AutoGroupColService; });
50071/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50072/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
50073/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
50074/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
50075/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
50076/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
50077/**
50078 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50079 * @version v27.3.0
50080 * @link https://www.ag-grid.com/
50081 * @license MIT
50082 */
50083var __extends = (undefined && undefined.__extends) || (function () {
50084 var extendStatics = function (d, b) {
50085 extendStatics = Object.setPrototypeOf ||
50086 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50087 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50088 return extendStatics(d, b);
50089 };
50090 return function (d, b) {
50091 extendStatics(d, b);
50092 function __() { this.constructor = d; }
50093 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50094 };
50095})();
50096var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50097 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50098 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50099 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;
50100 return c > 3 && r && Object.defineProperty(target, key, r), r;
50101};
50102
50103
50104
50105
50106
50107
50108var AutoGroupColService = /** @class */ (function (_super) {
50109 __extends(AutoGroupColService, _super);
50110 function AutoGroupColService() {
50111 return _super !== null && _super.apply(this, arguments) || this;
50112 }
50113 AutoGroupColService_1 = AutoGroupColService;
50114 AutoGroupColService.prototype.createAutoGroupColumns = function (existingCols, rowGroupColumns) {
50115 var _this = this;
50116 var groupAutoColumns = [];
50117 var doingTreeData = this.gridOptionsWrapper.isTreeData();
50118 var doingMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();
50119 if (doingTreeData && doingMultiAutoColumn) {
50120 console.warn('AG Grid: you cannot mix groupMultiAutoColumn with treeData, only one column can be used to display groups when doing tree data');
50121 doingMultiAutoColumn = false;
50122 }
50123 // if doing groupMultiAutoColumn, then we call the method multiple times, once
50124 // for each column we are grouping by
50125 if (doingMultiAutoColumn) {
50126 rowGroupColumns.forEach(function (rowGroupCol, index) {
50127 groupAutoColumns.push(_this.createOneAutoGroupColumn(existingCols, rowGroupCol, index));
50128 });
50129 }
50130 else {
50131 groupAutoColumns.push(this.createOneAutoGroupColumn(existingCols));
50132 }
50133 return groupAutoColumns;
50134 };
50135 // rowGroupCol and index are missing if groupMultiAutoColumn=false
50136 AutoGroupColService.prototype.createOneAutoGroupColumn = function (existingCols, rowGroupCol, index) {
50137 // if one provided by user, use it, otherwise create one
50138 var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);
50139 // if doing multi, set the field
50140 var colId;
50141 if (rowGroupCol) {
50142 colId = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].GROUP_AUTO_COLUMN_ID + "-" + rowGroupCol.getId();
50143 }
50144 else {
50145 colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_BUNDLE_ID;
50146 }
50147 var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();
50148 Object(_utils_object__WEBPACK_IMPORTED_MODULE_4__["mergeDeep"])(defaultAutoColDef, userAutoColDef);
50149 defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);
50150 defaultAutoColDef.colId = colId;
50151 // For tree data the filter is always allowed
50152 if (!this.gridOptionsWrapper.isTreeData()) {
50153 // we would only allow filter if the user has provided field or value getter. otherwise the filter
50154 // would not be able to work.
50155 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);
50156 if (noFieldOrValueGetter) {
50157 defaultAutoColDef.filter = false;
50158 }
50159 }
50160 // if showing many cols, we don't want to show more than one with a checkbox for selection
50161 if (index && index > 0) {
50162 defaultAutoColDef.headerCheckboxSelection = false;
50163 }
50164 var existingCol = existingCols.find(function (col) { return col.getId() == colId; });
50165 if (existingCol) {
50166 existingCol.setColDef(defaultAutoColDef, null);
50167 this.columnFactory.applyColumnState(existingCol, defaultAutoColDef);
50168 return existingCol;
50169 }
50170 var newCol = new _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"](defaultAutoColDef, null, colId, true);
50171 this.context.createBean(newCol);
50172 return newCol;
50173 };
50174 AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {
50175 var userDef = this.gridOptionsWrapper.getAutoGroupColumnDef();
50176 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
50177 var res = {
50178 headerName: localeTextFunc('group', 'Group')
50179 };
50180 var userHasProvidedGroupCellRenderer = userDef &&
50181 (userDef.cellRenderer || userDef.cellRendererFramework || userDef.cellRendererSelector);
50182 // only add the default group cell renderer if user hasn't provided one
50183 if (!userHasProvidedGroupCellRenderer) {
50184 res.cellRenderer = 'agGroupCellRenderer';
50185 }
50186 // we never allow moving the group column
50187 // defaultAutoColDef.suppressMovable = true;
50188 if (rowGroupCol) {
50189 var colDef = rowGroupCol.getColDef();
50190 Object.assign(res, {
50191 // cellRendererParams.groupKey: colDefToCopy.field;
50192 headerName: this.columnModel.getDisplayNameForColumn(rowGroupCol, 'header'),
50193 headerValueGetter: colDef.headerValueGetter
50194 });
50195 if (colDef.cellRenderer || colDef.cellRendererFramework) {
50196 Object.assign(res, {
50197 cellRendererParams: {
50198 innerRenderer: colDef.cellRenderer,
50199 innerRendererFramework: colDef.cellRendererFramework,
50200 innerRendererParams: colDef.cellRendererParams
50201 }
50202 });
50203 }
50204 res.showRowGroup = rowGroupCol.getColId();
50205 }
50206 else {
50207 res.showRowGroup = true;
50208 }
50209 return res;
50210 };
50211 var AutoGroupColService_1;
50212 AutoGroupColService.GROUP_AUTO_COLUMN_BUNDLE_ID = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].GROUP_AUTO_COLUMN_ID;
50213 __decorate([
50214 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
50215 ], AutoGroupColService.prototype, "columnModel", void 0);
50216 __decorate([
50217 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnFactory')
50218 ], AutoGroupColService.prototype, "columnFactory", void 0);
50219 AutoGroupColService = AutoGroupColService_1 = __decorate([
50220 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('autoGroupColService')
50221 ], AutoGroupColService);
50222 return AutoGroupColService;
50223}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
50224
50225
50226
50227
50228
50229/***/ }),
50230/* 224 */
50231/***/ (function(module, __webpack_exports__, __webpack_require__) {
50232
50233"use strict";
50234__webpack_require__.r(__webpack_exports__);
50235/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PaginationAutoPageSizeService", function() { return PaginationAutoPageSizeService; });
50236/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
50237/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
50238/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
50239/**
50240 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50241 * @version v27.3.0
50242 * @link https://www.ag-grid.com/
50243 * @license MIT
50244 */
50245var __extends = (undefined && undefined.__extends) || (function () {
50246 var extendStatics = function (d, b) {
50247 extendStatics = Object.setPrototypeOf ||
50248 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50249 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50250 return extendStatics(d, b);
50251 };
50252 return function (d, b) {
50253 extendStatics(d, b);
50254 function __() { this.constructor = d; }
50255 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50256 };
50257})();
50258var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50259 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50260 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50261 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;
50262 return c > 3 && r && Object.defineProperty(target, key, r), r;
50263};
50264
50265
50266
50267var PaginationAutoPageSizeService = /** @class */ (function (_super) {
50268 __extends(PaginationAutoPageSizeService, _super);
50269 function PaginationAutoPageSizeService() {
50270 return _super !== null && _super.apply(this, arguments) || this;
50271 }
50272 PaginationAutoPageSizeService.prototype.postConstruct = function () {
50273 var _this = this;
50274 this.ctrlsService.whenReady(function (p) {
50275 _this.centerRowContainerCon = p.centerRowContainerCtrl;
50276 _this.addManagedListener(_this.eventService, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_BODY_HEIGHT_CHANGED, _this.onBodyHeightChanged.bind(_this));
50277 _this.addManagedListener(_this.eventService, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, _this.onScrollVisibilityChanged.bind(_this));
50278 _this.checkPageSize();
50279 });
50280 };
50281 PaginationAutoPageSizeService.prototype.notActive = function () {
50282 return !this.gridOptionsWrapper.isPaginationAutoPageSize();
50283 };
50284 PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {
50285 this.checkPageSize();
50286 };
50287 PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {
50288 this.checkPageSize();
50289 };
50290 PaginationAutoPageSizeService.prototype.checkPageSize = function () {
50291 if (this.notActive()) {
50292 return;
50293 }
50294 var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();
50295 var bodyHeight = this.centerRowContainerCon.getViewportSizeFeature().getBodyHeight();
50296 if (bodyHeight > 0) {
50297 var newPageSize = Math.floor(bodyHeight / rowHeight);
50298 this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);
50299 }
50300 };
50301 __decorate([
50302 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
50303 ], PaginationAutoPageSizeService.prototype, "ctrlsService", void 0);
50304 __decorate([
50305 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
50306 ], PaginationAutoPageSizeService.prototype, "postConstruct", null);
50307 PaginationAutoPageSizeService = __decorate([
50308 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('paginationAutoPageSizeService')
50309 ], PaginationAutoPageSizeService);
50310 return PaginationAutoPageSizeService;
50311}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
50312
50313
50314
50315
50316
50317/***/ }),
50318/* 225 */
50319/***/ (function(module, __webpack_exports__, __webpack_require__) {
50320
50321"use strict";
50322__webpack_require__.r(__webpack_exports__);
50323/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueCache", function() { return ValueCache; });
50324/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50325/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
50326/**
50327 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50328 * @version v27.3.0
50329 * @link https://www.ag-grid.com/
50330 * @license MIT
50331 */
50332var __extends = (undefined && undefined.__extends) || (function () {
50333 var extendStatics = function (d, b) {
50334 extendStatics = Object.setPrototypeOf ||
50335 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50336 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50337 return extendStatics(d, b);
50338 };
50339 return function (d, b) {
50340 extendStatics(d, b);
50341 function __() { this.constructor = d; }
50342 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50343 };
50344})();
50345var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50346 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50347 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50348 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;
50349 return c > 3 && r && Object.defineProperty(target, key, r), r;
50350};
50351
50352
50353var ValueCache = /** @class */ (function (_super) {
50354 __extends(ValueCache, _super);
50355 function ValueCache() {
50356 var _this = _super !== null && _super.apply(this, arguments) || this;
50357 _this.cacheVersion = 0;
50358 return _this;
50359 }
50360 ValueCache.prototype.init = function () {
50361 this.active = this.gridOptionsWrapper.isValueCache();
50362 this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();
50363 };
50364 ValueCache.prototype.onDataChanged = function () {
50365 if (this.neverExpires) {
50366 return;
50367 }
50368 this.expire();
50369 };
50370 ValueCache.prototype.expire = function () {
50371 this.cacheVersion++;
50372 };
50373 ValueCache.prototype.setValue = function (rowNode, colId, value) {
50374 if (this.active) {
50375 if (rowNode.__cacheVersion !== this.cacheVersion) {
50376 rowNode.__cacheVersion = this.cacheVersion;
50377 rowNode.__cacheData = {};
50378 }
50379 rowNode.__cacheData[colId] = value;
50380 }
50381 };
50382 ValueCache.prototype.getValue = function (rowNode, colId) {
50383 if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {
50384 return undefined;
50385 }
50386 return rowNode.__cacheData[colId];
50387 };
50388 __decorate([
50389 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
50390 ], ValueCache.prototype, "init", null);
50391 ValueCache = __decorate([
50392 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('valueCache')
50393 ], ValueCache);
50394 return ValueCache;
50395}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50396
50397
50398
50399
50400
50401/***/ }),
50402/* 226 */
50403/***/ (function(module, __webpack_exports__, __webpack_require__) {
50404
50405"use strict";
50406__webpack_require__.r(__webpack_exports__);
50407/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChangeDetectionService", function() { return ChangeDetectionService; });
50408/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
50409/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
50410/* harmony import */ var _utils_changedPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(182);
50411/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
50412/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23);
50413/**
50414 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50415 * @version v27.3.0
50416 * @link https://www.ag-grid.com/
50417 * @license MIT
50418 */
50419var __extends = (undefined && undefined.__extends) || (function () {
50420 var extendStatics = function (d, b) {
50421 extendStatics = Object.setPrototypeOf ||
50422 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50423 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50424 return extendStatics(d, b);
50425 };
50426 return function (d, b) {
50427 extendStatics(d, b);
50428 function __() { this.constructor = d; }
50429 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50430 };
50431})();
50432var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50433 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50434 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50435 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;
50436 return c > 3 && r && Object.defineProperty(target, key, r), r;
50437};
50438
50439
50440
50441
50442
50443var ChangeDetectionService = /** @class */ (function (_super) {
50444 __extends(ChangeDetectionService, _super);
50445 function ChangeDetectionService() {
50446 return _super !== null && _super.apply(this, arguments) || this;
50447 }
50448 ChangeDetectionService.prototype.init = function () {
50449 if (this.rowModel.getType() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
50450 this.clientSideRowModel = this.rowModel;
50451 }
50452 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));
50453 };
50454 ChangeDetectionService.prototype.onCellValueChanged = function (event) {
50455 // Clipboard service manages its own change detection, so no need to do it here.
50456 // The clipboard manages its own as otherwise this would happen once for every cell
50457 // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,
50458 // this doChangeDetection would get called 100 times (once for each cell), instead clipboard
50459 // service executes the logic we have here once (in essence batching up all cell changes
50460 // into one change detection).
50461 if (event.source === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].SOURCE_PASTE) {
50462 return;
50463 }
50464 this.doChangeDetection(event.node, event.column);
50465 };
50466 ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {
50467 if (this.gridOptionsWrapper.isSuppressChangeDetection()) {
50468 return;
50469 }
50470 // step 1 of change detection is to update the aggregated values
50471 if (this.clientSideRowModel && !rowNode.isRowPinned()) {
50472 var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();
50473 var changedPath = new _utils_changedPath__WEBPACK_IMPORTED_MODULE_2__["ChangedPath"](onlyChangedColumns, this.clientSideRowModel.getRootNode());
50474 changedPath.addParentNode(rowNode.parent, [column]);
50475 this.clientSideRowModel.doAggregate(changedPath);
50476 }
50477 // step 2 of change detection is to refresh the cells
50478 this.rowRenderer.refreshCells();
50479 };
50480 __decorate([
50481 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowModel')
50482 ], ChangeDetectionService.prototype, "rowModel", void 0);
50483 __decorate([
50484 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
50485 ], ChangeDetectionService.prototype, "rowRenderer", void 0);
50486 __decorate([
50487 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
50488 ], ChangeDetectionService.prototype, "init", null);
50489 ChangeDetectionService = __decorate([
50490 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('changeDetectionService')
50491 ], ChangeDetectionService);
50492 return ChangeDetectionService;
50493}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
50494
50495
50496
50497
50498
50499/***/ }),
50500/* 227 */
50501/***/ (function(module, __webpack_exports__, __webpack_require__) {
50502
50503"use strict";
50504__webpack_require__.r(__webpack_exports__);
50505/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgComponentUtils", function() { return AgComponentUtils; });
50506/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50507/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
50508/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
50509/**
50510 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50511 * @version v27.3.0
50512 * @link https://www.ag-grid.com/
50513 * @license MIT
50514 */
50515var __extends = (undefined && undefined.__extends) || (function () {
50516 var extendStatics = function (d, b) {
50517 extendStatics = Object.setPrototypeOf ||
50518 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50519 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50520 return extendStatics(d, b);
50521 };
50522 return function (d, b) {
50523 extendStatics(d, b);
50524 function __() { this.constructor = d; }
50525 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50526 };
50527})();
50528var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50529 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50530 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50531 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;
50532 return c > 3 && r && Object.defineProperty(target, key, r), r;
50533};
50534
50535
50536
50537var AgComponentUtils = /** @class */ (function (_super) {
50538 __extends(AgComponentUtils, _super);
50539 function AgComponentUtils() {
50540 return _super !== null && _super.apply(this, arguments) || this;
50541 }
50542 AgComponentUtils.prototype.adaptFunction = function (propertyName, jsCompFunc) {
50543 var metadata = this.componentMetadataProvider.retrieve(propertyName);
50544 if (metadata && metadata.functionAdapter) {
50545 return metadata.functionAdapter(jsCompFunc);
50546 }
50547 return null;
50548 };
50549 AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {
50550 var Adapter = /** @class */ (function () {
50551 function Adapter() {
50552 }
50553 Adapter.prototype.refresh = function (params) {
50554 return false;
50555 };
50556 Adapter.prototype.getGui = function () {
50557 return this.eGui;
50558 };
50559 Adapter.prototype.init = function (params) {
50560 var callbackResult = callback(params);
50561 var type = typeof callbackResult;
50562 if (type === 'string' || type === 'number' || type === 'boolean') {
50563 this.eGui = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["loadTemplate"])('<span>' + callbackResult + '</span>');
50564 return;
50565 }
50566 if (callbackResult == null) {
50567 this.eGui = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["loadTemplate"])('<span></span>');
50568 return;
50569 }
50570 this.eGui = callbackResult;
50571 };
50572 return Adapter;
50573 }());
50574 return Adapter;
50575 };
50576 AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {
50577 if (!candidate) {
50578 return false;
50579 }
50580 return candidate.prototype && 'getGui' in candidate.prototype;
50581 };
50582 __decorate([
50583 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("componentMetadataProvider")
50584 ], AgComponentUtils.prototype, "componentMetadataProvider", void 0);
50585 AgComponentUtils = __decorate([
50586 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])("agComponentUtils")
50587 ], AgComponentUtils);
50588 return AgComponentUtils;
50589}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50590
50591
50592
50593
50594
50595/***/ }),
50596/* 228 */
50597/***/ (function(module, __webpack_exports__, __webpack_require__) {
50598
50599"use strict";
50600__webpack_require__.r(__webpack_exports__);
50601/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentMetadataProvider", function() { return ComponentMetadataProvider; });
50602/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50603/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
50604/**
50605 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50606 * @version v27.3.0
50607 * @link https://www.ag-grid.com/
50608 * @license MIT
50609 */
50610var __extends = (undefined && undefined.__extends) || (function () {
50611 var extendStatics = function (d, b) {
50612 extendStatics = Object.setPrototypeOf ||
50613 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50614 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50615 return extendStatics(d, b);
50616 };
50617 return function (d, b) {
50618 extendStatics(d, b);
50619 function __() { this.constructor = d; }
50620 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50621 };
50622})();
50623var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50624 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50625 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50626 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;
50627 return c > 3 && r && Object.defineProperty(target, key, r), r;
50628};
50629
50630
50631var ComponentMetadataProvider = /** @class */ (function (_super) {
50632 __extends(ComponentMetadataProvider, _super);
50633 function ComponentMetadataProvider() {
50634 return _super !== null && _super.apply(this, arguments) || this;
50635 }
50636 ComponentMetadataProvider.prototype.postConstruct = function () {
50637 this.componentMetaData = {
50638 dateComponent: {
50639 mandatoryMethodList: ['getDate', 'setDate'],
50640 optionalMethodList: ['afterGuiAttached', 'setInputPlaceholder', 'setInputAriaLabel']
50641 },
50642 detailCellRenderer: {
50643 mandatoryMethodList: [],
50644 optionalMethodList: ['refresh'],
50645 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50646 },
50647 headerComponent: {
50648 mandatoryMethodList: [],
50649 optionalMethodList: ['refresh']
50650 },
50651 headerGroupComponent: {
50652 mandatoryMethodList: [],
50653 optionalMethodList: []
50654 },
50655 loadingCellRenderer: {
50656 mandatoryMethodList: [],
50657 optionalMethodList: []
50658 },
50659 loadingOverlayComponent: {
50660 mandatoryMethodList: [],
50661 optionalMethodList: []
50662 },
50663 noRowsOverlayComponent: {
50664 mandatoryMethodList: [],
50665 optionalMethodList: []
50666 },
50667 floatingFilterComponent: {
50668 mandatoryMethodList: ['onParentModelChanged'],
50669 optionalMethodList: ['afterGuiAttached']
50670 },
50671 floatingFilterWrapperComponent: {
50672 mandatoryMethodList: [],
50673 optionalMethodList: []
50674 },
50675 cellRenderer: {
50676 mandatoryMethodList: [],
50677 optionalMethodList: ['refresh', 'afterGuiAttached'],
50678 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50679 },
50680 cellEditor: {
50681 mandatoryMethodList: ['getValue'],
50682 optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'getPopupPosition', 'focusIn', 'focusOut', 'afterGuiAttached']
50683 },
50684 innerRenderer: {
50685 mandatoryMethodList: [],
50686 optionalMethodList: ['afterGuiAttached'],
50687 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50688 },
50689 fullWidthCellRenderer: {
50690 mandatoryMethodList: [],
50691 optionalMethodList: ['refresh', 'afterGuiAttached'],
50692 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50693 },
50694 pinnedRowCellRenderer: {
50695 mandatoryMethodList: [],
50696 optionalMethodList: ['refresh', 'afterGuiAttached'],
50697 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50698 },
50699 groupRowRenderer: {
50700 mandatoryMethodList: [],
50701 optionalMethodList: ['afterGuiAttached'],
50702 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50703 },
50704 filter: {
50705 mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],
50706 optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']
50707 },
50708 filterComponent: {
50709 mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],
50710 optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']
50711 },
50712 statusPanel: {
50713 mandatoryMethodList: [],
50714 optionalMethodList: ['afterGuiAttached'],
50715 },
50716 toolPanel: {
50717 mandatoryMethodList: [],
50718 optionalMethodList: ['refresh', 'afterGuiAttached']
50719 },
50720 tooltipComponent: {
50721 mandatoryMethodList: [],
50722 optionalMethodList: []
50723 }
50724 };
50725 };
50726 ComponentMetadataProvider.prototype.retrieve = function (name) {
50727 return this.componentMetaData[name];
50728 };
50729 __decorate([
50730 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("agComponentUtils")
50731 ], ComponentMetadataProvider.prototype, "agComponentUtils", void 0);
50732 __decorate([
50733 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
50734 ], ComponentMetadataProvider.prototype, "postConstruct", null);
50735 ComponentMetadataProvider = __decorate([
50736 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])("componentMetadataProvider")
50737 ], ComponentMetadataProvider);
50738 return ComponentMetadataProvider;
50739}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50740
50741
50742
50743
50744
50745/***/ }),
50746/* 229 */
50747/***/ (function(module, __webpack_exports__, __webpack_require__) {
50748
50749"use strict";
50750__webpack_require__.r(__webpack_exports__);
50751/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return Environment; });
50752/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50753/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
50754/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
50755/**
50756 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50757 * @version v27.3.0
50758 * @link https://www.ag-grid.com/
50759 * @license MIT
50760 */
50761var __extends = (undefined && undefined.__extends) || (function () {
50762 var extendStatics = function (d, b) {
50763 extendStatics = Object.setPrototypeOf ||
50764 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50765 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50766 return extendStatics(d, b);
50767 };
50768 return function (d, b) {
50769 extendStatics(d, b);
50770 function __() { this.constructor = d; }
50771 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50772 };
50773})();
50774var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50775 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50776 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50777 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;
50778 return c > 3 && r && Object.defineProperty(target, key, r), r;
50779};
50780
50781
50782
50783var MAT_GRID_SIZE = 8;
50784var BASE_GRID_SIZE = 4;
50785var BALHAM_GRID_SIZE = 4;
50786var ALPINE_GRID_SIZE = 6;
50787var HARD_CODED_SIZES = {
50788 // this item is required for custom themes
50789 'ag-theme-custom': {
50790 headerHeight: 25,
50791 headerCellMinWidth: 24,
50792 listItemHeight: BASE_GRID_SIZE * 5,
50793 rowHeight: 25,
50794 chartMenuPanelWidth: 220
50795 },
50796 'ag-theme-material': {
50797 headerHeight: MAT_GRID_SIZE * 7,
50798 headerCellMinWidth: 48,
50799 listItemHeight: MAT_GRID_SIZE * 4,
50800 rowHeight: MAT_GRID_SIZE * 6,
50801 chartMenuPanelWidth: 240
50802 },
50803 'ag-theme-balham': {
50804 headerHeight: BALHAM_GRID_SIZE * 8,
50805 headerCellMinWidth: 24,
50806 listItemHeight: BALHAM_GRID_SIZE * 6,
50807 rowHeight: BALHAM_GRID_SIZE * 7,
50808 chartMenuPanelWidth: 220
50809 },
50810 'ag-theme-alpine': {
50811 headerHeight: ALPINE_GRID_SIZE * 8,
50812 headerCellMinWidth: 36,
50813 listItemHeight: ALPINE_GRID_SIZE * 4,
50814 rowHeight: ALPINE_GRID_SIZE * 7,
50815 chartMenuPanelWidth: 240
50816 }
50817};
50818/**
50819 * this object contains a list of Sass variables and an array
50820 * of CSS styles required to get the correct value.
50821 * eg. $virtual-item-height requires a structure, so we can get its height.
50822 * <div class="ag-theme-balham">
50823 * <div class="ag-virtual-list-container">
50824 * <div class="ag-virtual-list-item"></div>
50825 * </div>
50826 * </div>
50827 */
50828var SASS_PROPERTY_BUILDER = {
50829 headerHeight: ['ag-header-row'],
50830 headerCellMinWidth: ['ag-header-cell'],
50831 listItemHeight: ['ag-virtual-list-item'],
50832 rowHeight: ['ag-row'],
50833 chartMenuPanelWidth: ['ag-chart-docked-container']
50834};
50835var CALCULATED_SIZES = {};
50836var Environment = /** @class */ (function (_super) {
50837 __extends(Environment, _super);
50838 function Environment() {
50839 return _super !== null && _super.apply(this, arguments) || this;
50840 }
50841 Environment.prototype.getSassVariable = function (theme, key) {
50842 var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'custom');
50843 var defaultValue = HARD_CODED_SIZES[useTheme][key];
50844 var calculatedValue = 0;
50845 if (!CALCULATED_SIZES[theme]) {
50846 CALCULATED_SIZES[theme] = {};
50847 }
50848 var size = CALCULATED_SIZES[theme][key];
50849 if (size != null) {
50850 return size;
50851 }
50852 if (SASS_PROPERTY_BUILDER[key]) {
50853 var classList = SASS_PROPERTY_BUILDER[key];
50854 var div = document.createElement('div');
50855 div.classList.add(theme);
50856 div.style.position = 'absolute';
50857 var el = classList.reduce(function (prevEl, currentClass) {
50858 var currentDiv = document.createElement('div');
50859 currentDiv.style.position = 'static';
50860 currentDiv.classList.add(currentClass);
50861 prevEl.appendChild(currentDiv);
50862 return currentDiv;
50863 }, div);
50864 if (document.body) {
50865 document.body.appendChild(div);
50866 var sizeName = key.toLowerCase().indexOf('height') !== -1 ? 'height' : 'width';
50867 calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);
50868 document.body.removeChild(div);
50869 }
50870 }
50871 CALCULATED_SIZES[theme][key] = calculatedValue || defaultValue;
50872 return CALCULATED_SIZES[theme][key];
50873 };
50874 Environment.prototype.isThemeDark = function () {
50875 var theme = this.getTheme().theme;
50876 return !!theme && theme.indexOf('dark') >= 0;
50877 };
50878 Environment.prototype.chartMenuPanelWidth = function () {
50879 var theme = this.getTheme().themeFamily;
50880 return this.getSassVariable(theme, 'chartMenuPanelWidth');
50881 };
50882 Environment.prototype.getTheme = function () {
50883 var reg = /\bag-(material|(?:theme-([\w\-]*)))\b/;
50884 var el = this.eGridDiv;
50885 var themeMatch = null;
50886 while (el) {
50887 themeMatch = reg.exec(el.className);
50888 if (!themeMatch) {
50889 el = el.parentElement || undefined;
50890 }
50891 else {
50892 break;
50893 }
50894 }
50895 if (!themeMatch) {
50896 return {};
50897 }
50898 var theme = themeMatch[0];
50899 var usingOldTheme = themeMatch[2] === undefined;
50900 if (usingOldTheme) {
50901 var newTheme_1 = theme.replace('ag-', 'ag-theme-');
50902 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');
50903 }
50904 return { theme: theme, el: el, themeFamily: theme.replace(/-dark$/, '') };
50905 };
50906 __decorate([
50907 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('eGridDiv')
50908 ], Environment.prototype, "eGridDiv", void 0);
50909 Environment = __decorate([
50910 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('environment')
50911 ], Environment);
50912 return Environment;
50913}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50914
50915
50916
50917
50918
50919/***/ }),
50920/* 230 */
50921/***/ (function(module, __webpack_exports__, __webpack_require__) {
50922
50923"use strict";
50924__webpack_require__.r(__webpack_exports__);
50925/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerHeightService", function() { return RowContainerHeightService; });
50926/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
50927/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
50928/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
50929/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
50930/**
50931 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50932 * @version v27.3.0
50933 * @link https://www.ag-grid.com/
50934 * @license MIT
50935 */
50936var __extends = (undefined && undefined.__extends) || (function () {
50937 var extendStatics = function (d, b) {
50938 extendStatics = Object.setPrototypeOf ||
50939 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50940 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50941 return extendStatics(d, b);
50942 };
50943 return function (d, b) {
50944 extendStatics(d, b);
50945 function __() { this.constructor = d; }
50946 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50947 };
50948})();
50949var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50950 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50951 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50952 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;
50953 return c > 3 && r && Object.defineProperty(target, key, r), r;
50954};
50955var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
50956 return function (target, key) { decorator(target, key, paramIndex); }
50957};
50958
50959
50960
50961
50962/**
50963 * This class solves the 'max height' problem, where the user might want to show more data than
50964 * the max div height actually allows.
50965 */
50966var RowContainerHeightService = /** @class */ (function (_super) {
50967 __extends(RowContainerHeightService, _super);
50968 function RowContainerHeightService() {
50969 var _this = _super !== null && _super.apply(this, arguments) || this;
50970 // the scrollY position
50971 _this.scrollY = 0;
50972 // how tall the body is
50973 _this.uiBodyHeight = 0;
50974 return _this;
50975 }
50976 RowContainerHeightService.prototype.agWire = function (loggerFactory) {
50977 this.logger = loggerFactory.create("RowContainerHeightService");
50978 };
50979 RowContainerHeightService.prototype.postConstruct = function () {
50980 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));
50981 this.maxDivHeight = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["getMaxDivHeight"])();
50982 this.logger.log('maxDivHeight = ' + this.maxDivHeight);
50983 };
50984 RowContainerHeightService.prototype.isStretching = function () {
50985 return this.stretching;
50986 };
50987 RowContainerHeightService.prototype.getDivStretchOffset = function () {
50988 return this.divStretchOffset;
50989 };
50990 RowContainerHeightService.prototype.updateOffset = function () {
50991 if (!this.stretching) {
50992 return;
50993 }
50994 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
50995 var newScrollY = gridBodyCon.getScrollFeature().getVScrollPosition().top;
50996 var newBodyHeight = this.getUiBodyHeight();
50997 var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;
50998 if (atLeastOneChanged) {
50999 this.scrollY = newScrollY;
51000 this.uiBodyHeight = newBodyHeight;
51001 this.calculateOffset();
51002 }
51003 };
51004 RowContainerHeightService.prototype.calculateOffset = function () {
51005 this.setUiContainerHeight(this.maxDivHeight);
51006 this.pixelsToShave = this.modelHeight - this.uiContainerHeight;
51007 this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;
51008 var scrollPercent = this.scrollY / this.maxScrollY;
51009 var divStretchOffset = scrollPercent * this.pixelsToShave;
51010 this.logger.log("Div Stretch Offset = " + divStretchOffset + " (" + this.pixelsToShave + " * " + scrollPercent + ")");
51011 this.setDivStretchOffset(divStretchOffset);
51012 };
51013 RowContainerHeightService.prototype.setUiContainerHeight = function (height) {
51014 if (height !== this.uiContainerHeight) {
51015 this.uiContainerHeight = height;
51016 this.eventService.dispatchEvent({ type: _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_CONTAINER_HEIGHT_CHANGED });
51017 }
51018 };
51019 RowContainerHeightService.prototype.clearOffset = function () {
51020 this.setUiContainerHeight(this.modelHeight);
51021 this.pixelsToShave = 0;
51022 this.setDivStretchOffset(0);
51023 };
51024 RowContainerHeightService.prototype.setDivStretchOffset = function (newOffset) {
51025 // because we are talking pixels, no point in confusing things with half numbers
51026 var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;
51027 if (this.divStretchOffset === newOffsetFloor) {
51028 return;
51029 }
51030 this.divStretchOffset = newOffsetFloor;
51031 this.eventService.dispatchEvent({ type: _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_HEIGHT_SCALE_CHANGED });
51032 };
51033 RowContainerHeightService.prototype.setModelHeight = function (modelHeight) {
51034 this.modelHeight = modelHeight;
51035 this.stretching = modelHeight != null // null happens when in print layout
51036 && this.maxDivHeight > 0
51037 && modelHeight > this.maxDivHeight;
51038 if (this.stretching) {
51039 this.calculateOffset();
51040 }
51041 else {
51042 this.clearOffset();
51043 }
51044 };
51045 RowContainerHeightService.prototype.getUiContainerHeight = function () {
51046 return this.uiContainerHeight;
51047 };
51048 RowContainerHeightService.prototype.getRealPixelPosition = function (modelPixel) {
51049 return modelPixel - this.divStretchOffset;
51050 };
51051 RowContainerHeightService.prototype.getUiBodyHeight = function () {
51052 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
51053 var pos = gridBodyCon.getScrollFeature().getVScrollPosition();
51054 return pos.bottom - pos.top;
51055 };
51056 RowContainerHeightService.prototype.getScrollPositionForPixel = function (rowTop) {
51057 if (this.pixelsToShave <= 0) {
51058 return rowTop;
51059 }
51060 var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();
51061 var scrollPercent = rowTop / modelMaxScroll;
51062 var scrollPixel = this.maxScrollY * scrollPercent;
51063 return scrollPixel;
51064 };
51065 __decorate([
51066 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
51067 ], RowContainerHeightService.prototype, "ctrlsService", void 0);
51068 __decorate([
51069 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Qualifier"])("loggerFactory"))
51070 ], RowContainerHeightService.prototype, "agWire", null);
51071 __decorate([
51072 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
51073 ], RowContainerHeightService.prototype, "postConstruct", null);
51074 RowContainerHeightService = __decorate([
51075 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('rowContainerHeightService')
51076 ], RowContainerHeightService);
51077 return RowContainerHeightService;
51078}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
51079
51080
51081
51082
51083
51084/***/ }),
51085/* 231 */
51086/***/ (function(module, __webpack_exports__, __webpack_require__) {
51087
51088"use strict";
51089__webpack_require__.r(__webpack_exports__);
51090/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectableService", function() { return SelectableService; });
51091/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51092/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
51093/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
51094/**
51095 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51096 * @version v27.3.0
51097 * @link https://www.ag-grid.com/
51098 * @license MIT
51099 */
51100var __extends = (undefined && undefined.__extends) || (function () {
51101 var extendStatics = function (d, b) {
51102 extendStatics = Object.setPrototypeOf ||
51103 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51104 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51105 return extendStatics(d, b);
51106 };
51107 return function (d, b) {
51108 extendStatics(d, b);
51109 function __() { this.constructor = d; }
51110 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51111 };
51112})();
51113var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51114 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51115 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51116 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;
51117 return c > 3 && r && Object.defineProperty(target, key, r), r;
51118};
51119
51120
51121
51122var SelectableService = /** @class */ (function (_super) {
51123 __extends(SelectableService, _super);
51124 function SelectableService() {
51125 return _super !== null && _super.apply(this, arguments) || this;
51126 }
51127 SelectableService.prototype.init = function () {
51128 this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();
51129 this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();
51130 };
51131 SelectableService.prototype.updateSelectableAfterGrouping = function (rowNode) {
51132 if (this.isRowSelectableFunc) {
51133 var nextChildrenFunc = function (node) { return node.childrenAfterGroup; };
51134 this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);
51135 }
51136 };
51137 SelectableService.prototype.recurseDown = function (children, nextChildrenFunc) {
51138 var _this = this;
51139 if (!children) {
51140 return;
51141 }
51142 children.forEach(function (child) {
51143 if (!child.group) {
51144 return;
51145 } // only interested in groups
51146 if (child.hasChildren()) {
51147 _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);
51148 }
51149 var rowSelectable;
51150 if (_this.groupSelectsChildren) {
51151 // have this group selectable if at least one direct child is selectable
51152 var firstSelectable = (nextChildrenFunc(child) || []).find(function (rowNode) { return rowNode.selectable === true; });
51153 rowSelectable = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(firstSelectable);
51154 }
51155 else {
51156 // directly retrieve selectable value from user callback
51157 rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;
51158 }
51159 child.setRowSelectable(rowSelectable);
51160 });
51161 };
51162 __decorate([
51163 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
51164 ], SelectableService.prototype, "init", null);
51165 SelectableService = __decorate([
51166 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('selectableService')
51167 ], SelectableService);
51168 return SelectableService;
51169}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
51170
51171
51172
51173
51174
51175/***/ }),
51176/* 232 */
51177/***/ (function(module, __webpack_exports__, __webpack_require__) {
51178
51179"use strict";
51180__webpack_require__.r(__webpack_exports__);
51181/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PaginationComp", function() { return PaginationComp; });
51182/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
51183/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
51184/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
51185/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
51186/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48);
51187/* harmony import */ var _utils_number__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(46);
51188/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
51189/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(65);
51190/**
51191 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51192 * @version v27.3.0
51193 * @link https://www.ag-grid.com/
51194 * @license MIT
51195 */
51196var __extends = (undefined && undefined.__extends) || (function () {
51197 var extendStatics = function (d, b) {
51198 extendStatics = Object.setPrototypeOf ||
51199 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51200 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51201 return extendStatics(d, b);
51202 };
51203 return function (d, b) {
51204 extendStatics(d, b);
51205 function __() { this.constructor = d; }
51206 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51207 };
51208})();
51209var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51210 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51211 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51212 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;
51213 return c > 3 && r && Object.defineProperty(target, key, r), r;
51214};
51215
51216
51217
51218
51219
51220
51221
51222
51223var PaginationComp = /** @class */ (function (_super) {
51224 __extends(PaginationComp, _super);
51225 function PaginationComp() {
51226 var _this = _super.call(this) || this;
51227 _this.previousAndFirstButtonsDisabled = false;
51228 _this.nextButtonDisabled = false;
51229 _this.lastButtonDisabled = false;
51230 return _this;
51231 }
51232 PaginationComp.prototype.postConstruct = function () {
51233 var _this = this;
51234 var isRtl = this.gridOptionsWrapper.isEnableRtl();
51235 this.setTemplate(this.getTemplate());
51236 this.btFirst.insertAdjacentElement('afterbegin', Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])(isRtl ? 'last' : 'first', this.gridOptionsWrapper));
51237 this.btPrevious.insertAdjacentElement('afterbegin', Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])(isRtl ? 'next' : 'previous', this.gridOptionsWrapper));
51238 this.btNext.insertAdjacentElement('afterbegin', Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])(isRtl ? 'previous' : 'next', this.gridOptionsWrapper));
51239 this.btLast.insertAdjacentElement('afterbegin', Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])(isRtl ? 'first' : 'last', this.gridOptionsWrapper));
51240 var isPaging = this.gridOptionsWrapper.isPagination();
51241 var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();
51242 if (!paginationPanelEnabled) {
51243 this.setDisplayed(false);
51244 return;
51245 }
51246 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));
51247 [
51248 { el: this.btFirst, fn: this.onBtFirst.bind(this) },
51249 { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },
51250 { el: this.btNext, fn: this.onBtNext.bind(this) },
51251 { el: this.btLast, fn: this.onBtLast.bind(this) }
51252 ].forEach(function (item) {
51253 var el = item.el, fn = item.fn;
51254 _this.addManagedListener(el, 'click', fn);
51255 _this.addManagedListener(el, 'keydown', function (e) {
51256 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_7__["KeyCode"].ENTER || e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_7__["KeyCode"].SPACE) {
51257 e.preventDefault();
51258 fn();
51259 }
51260 });
51261 });
51262 this.onPaginationChanged();
51263 };
51264 PaginationComp.prototype.onPaginationChanged = function () {
51265 this.enableOrDisableButtons();
51266 this.updateRowLabels();
51267 this.setCurrentPageLabel();
51268 this.setTotalLabels();
51269 };
51270 PaginationComp.prototype.onBtFirst = function () {
51271 if (!this.previousAndFirstButtonsDisabled) {
51272 this.paginationProxy.goToFirstPage();
51273 }
51274 };
51275 PaginationComp.prototype.setCurrentPageLabel = function () {
51276 var pagesExist = this.paginationProxy.getTotalPages() > 0;
51277 var currentPage = this.paginationProxy.getCurrentPage();
51278 var toDisplay = pagesExist ? currentPage + 1 : 0;
51279 this.lbCurrent.innerHTML = this.formatNumber(toDisplay);
51280 };
51281 PaginationComp.prototype.formatNumber = function (value) {
51282 var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();
51283 if (userFunc) {
51284 var params = { value: value };
51285 return userFunc(params);
51286 }
51287 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
51288 var thousandSeparator = localeTextFunc('thousandSeparator', ',');
51289 var decimalSeparator = localeTextFunc('decimalSeparator', '.');
51290 return Object(_utils_number__WEBPACK_IMPORTED_MODULE_5__["formatNumberCommas"])(value, thousandSeparator, decimalSeparator);
51291 };
51292 PaginationComp.prototype.getTemplate = function () {
51293 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
51294 var strPage = localeTextFunc('page', 'Page');
51295 var strTo = localeTextFunc('to', 'to');
51296 var strOf = localeTextFunc('of', 'of');
51297 var strFirst = localeTextFunc('firstPage', 'First Page');
51298 var strPrevious = localeTextFunc('previousPage', 'Previous Page');
51299 var strNext = localeTextFunc('nextPage', 'Next Page');
51300 var strLast = localeTextFunc('lastPage', 'Last Page');
51301 var compId = this.getCompId();
51302 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>";
51303 };
51304 PaginationComp.prototype.onBtNext = function () {
51305 if (!this.nextButtonDisabled) {
51306 this.paginationProxy.goToNextPage();
51307 }
51308 };
51309 PaginationComp.prototype.onBtPrevious = function () {
51310 if (!this.previousAndFirstButtonsDisabled) {
51311 this.paginationProxy.goToPreviousPage();
51312 }
51313 };
51314 PaginationComp.prototype.onBtLast = function () {
51315 if (!this.lastButtonDisabled) {
51316 this.paginationProxy.goToLastPage();
51317 }
51318 };
51319 PaginationComp.prototype.enableOrDisableButtons = function () {
51320 var currentPage = this.paginationProxy.getCurrentPage();
51321 var maxRowFound = this.paginationProxy.isLastPageFound();
51322 var totalPages = this.paginationProxy.getTotalPages();
51323 this.previousAndFirstButtonsDisabled = currentPage === 0;
51324 this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);
51325 this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);
51326 var zeroPagesToDisplay = this.isZeroPagesToDisplay();
51327 var onLastPage = maxRowFound && currentPage === (totalPages - 1);
51328 this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;
51329 this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);
51330 this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);
51331 this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);
51332 };
51333 PaginationComp.prototype.toggleButtonDisabled = function (button, disabled) {
51334 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["setAriaDisabled"])(button, disabled);
51335 button.classList.toggle('ag-disabled', disabled);
51336 if (disabled) {
51337 button.removeAttribute('tabindex');
51338 }
51339 else {
51340 button.setAttribute('tabindex', '0');
51341 }
51342 };
51343 PaginationComp.prototype.updateRowLabels = function () {
51344 var currentPage = this.paginationProxy.getCurrentPage();
51345 var pageSize = this.paginationProxy.getPageSize();
51346 var maxRowFound = this.paginationProxy.isLastPageFound();
51347 var rowCount = this.paginationProxy.isLastPageFound() ?
51348 this.paginationProxy.getMasterRowCount() : null;
51349 var startRow;
51350 var endRow;
51351 if (this.isZeroPagesToDisplay()) {
51352 startRow = endRow = 0;
51353 }
51354 else {
51355 startRow = (pageSize * currentPage) + 1;
51356 endRow = startRow + pageSize - 1;
51357 if (maxRowFound && endRow > rowCount) {
51358 endRow = rowCount;
51359 }
51360 }
51361 this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);
51362 if (this.rowNodeBlockLoader.isLoading()) {
51363 this.lbLastRowOnPage.innerHTML = '?';
51364 }
51365 else {
51366 this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);
51367 }
51368 };
51369 PaginationComp.prototype.isZeroPagesToDisplay = function () {
51370 var maxRowFound = this.paginationProxy.isLastPageFound();
51371 var totalPages = this.paginationProxy.getTotalPages();
51372 return maxRowFound && totalPages === 0;
51373 };
51374 PaginationComp.prototype.setTotalLabels = function () {
51375 var lastPageFound = this.paginationProxy.isLastPageFound();
51376 var totalPages = this.paginationProxy.getTotalPages();
51377 var rowCount = lastPageFound ? this.paginationProxy.getMasterRowCount() : null;
51378 // When `pivotMode=true` and no grouping or value columns exist, a single 'hidden' group row (root node) is in
51379 // the grid and the pagination totals will correctly display total = 1. However this is confusing to users as
51380 // they can't see it. To address this UX issue we simply set the totals to zero in the pagination panel.
51381 if (rowCount === 1) {
51382 var firstRow = this.paginationProxy.getRow(0);
51383 // a group node with no group or agg data will not be visible to users
51384 var hiddenGroupRow = firstRow && firstRow.group && !(firstRow.groupData || firstRow.aggData);
51385 if (hiddenGroupRow) {
51386 this.setTotalLabelsToZero();
51387 return;
51388 }
51389 }
51390 if (lastPageFound) {
51391 this.lbTotal.innerHTML = this.formatNumber(totalPages);
51392 this.lbRecordCount.innerHTML = this.formatNumber(rowCount);
51393 }
51394 else {
51395 var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');
51396 this.lbTotal.innerHTML = moreText;
51397 this.lbRecordCount.innerHTML = moreText;
51398 }
51399 };
51400 PaginationComp.prototype.setTotalLabelsToZero = function () {
51401 this.lbFirstRowOnPage.innerHTML = this.formatNumber(0);
51402 this.lbCurrent.innerHTML = this.formatNumber(0);
51403 this.lbLastRowOnPage.innerHTML = this.formatNumber(0);
51404 this.lbTotal.innerHTML = this.formatNumber(0);
51405 this.lbRecordCount.innerHTML = this.formatNumber(0);
51406 };
51407 __decorate([
51408 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('paginationProxy')
51409 ], PaginationComp.prototype, "paginationProxy", void 0);
51410 __decorate([
51411 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowNodeBlockLoader')
51412 ], PaginationComp.prototype, "rowNodeBlockLoader", void 0);
51413 __decorate([
51414 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('btFirst')
51415 ], PaginationComp.prototype, "btFirst", void 0);
51416 __decorate([
51417 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('btPrevious')
51418 ], PaginationComp.prototype, "btPrevious", void 0);
51419 __decorate([
51420 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('btNext')
51421 ], PaginationComp.prototype, "btNext", void 0);
51422 __decorate([
51423 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('btLast')
51424 ], PaginationComp.prototype, "btLast", void 0);
51425 __decorate([
51426 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbRecordCount')
51427 ], PaginationComp.prototype, "lbRecordCount", void 0);
51428 __decorate([
51429 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbFirstRowOnPage')
51430 ], PaginationComp.prototype, "lbFirstRowOnPage", void 0);
51431 __decorate([
51432 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbLastRowOnPage')
51433 ], PaginationComp.prototype, "lbLastRowOnPage", void 0);
51434 __decorate([
51435 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbCurrent')
51436 ], PaginationComp.prototype, "lbCurrent", void 0);
51437 __decorate([
51438 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbTotal')
51439 ], PaginationComp.prototype, "lbTotal", void 0);
51440 __decorate([
51441 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
51442 ], PaginationComp.prototype, "postConstruct", null);
51443 return PaginationComp;
51444}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
51445
51446
51447
51448
51449
51450/***/ }),
51451/* 233 */
51452/***/ (function(module, __webpack_exports__, __webpack_require__) {
51453
51454"use strict";
51455__webpack_require__.r(__webpack_exports__);
51456/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OverlayWrapperComponent", function() { return OverlayWrapperComponent; });
51457/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51458/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
51459/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
51460/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
51461/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(111);
51462/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24);
51463/**
51464 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51465 * @version v27.3.0
51466 * @link https://www.ag-grid.com/
51467 * @license MIT
51468 */
51469var __extends = (undefined && undefined.__extends) || (function () {
51470 var extendStatics = function (d, b) {
51471 extendStatics = Object.setPrototypeOf ||
51472 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51473 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51474 return extendStatics(d, b);
51475 };
51476 return function (d, b) {
51477 extendStatics(d, b);
51478 function __() { this.constructor = d; }
51479 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51480 };
51481})();
51482var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51483 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51484 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51485 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;
51486 return c > 3 && r && Object.defineProperty(target, key, r), r;
51487};
51488
51489
51490
51491
51492
51493
51494var LoadingType;
51495(function (LoadingType) {
51496 LoadingType[LoadingType["Loading"] = 0] = "Loading";
51497 LoadingType[LoadingType["NoRows"] = 1] = "NoRows";
51498})(LoadingType || (LoadingType = {}));
51499var OverlayWrapperComponent = /** @class */ (function (_super) {
51500 __extends(OverlayWrapperComponent, _super);
51501 function OverlayWrapperComponent() {
51502 var _this = _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;
51503 _this.inProgress = false;
51504 _this.destroyRequested = false;
51505 _this.manuallyDisplayed = false;
51506 return _this;
51507 }
51508 OverlayWrapperComponent.prototype.updateLayoutClasses = function (cssClass, params) {
51509 var overlayWrapperClassList = this.eOverlayWrapper.classList;
51510 overlayWrapperClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
51511 overlayWrapperClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutCssClasses"].NORMAL, params.normal);
51512 overlayWrapperClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutCssClasses"].PRINT, params.print);
51513 };
51514 OverlayWrapperComponent.prototype.postConstruct = function () {
51515 this.createManagedBean(new _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutFeature"](this));
51516 this.setDisplayed(false);
51517 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));
51518 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));
51519 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));
51520 if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {
51521 this.showLoadingOverlay();
51522 }
51523 this.gridApi.registerOverlayWrapperComp(this);
51524 };
51525 OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {
51526 var overlayWrapperClassList = this.eOverlayWrapper.classList;
51527 overlayWrapperClassList.toggle('ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);
51528 overlayWrapperClassList.toggle('ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);
51529 };
51530 OverlayWrapperComponent.prototype.showLoadingOverlay = function () {
51531 if (this.gridOptionsWrapper.isSuppressLoadingOverlay()) {
51532 return;
51533 }
51534 var params = {};
51535 var compDetails = this.userComponentFactory.getLoadingOverlayCompDetails(params);
51536 var promise = compDetails.newAgStackInstance();
51537 this.showOverlay(promise, LoadingType.Loading);
51538 };
51539 OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {
51540 if (this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {
51541 return;
51542 }
51543 var params = {};
51544 var compDetails = this.userComponentFactory.getNoRowsOverlayCompDetails(params);
51545 var promise = compDetails.newAgStackInstance();
51546 this.showOverlay(promise, LoadingType.NoRows);
51547 };
51548 OverlayWrapperComponent.prototype.showOverlay = function (workItem, type) {
51549 var _this = this;
51550 if (this.inProgress) {
51551 return;
51552 }
51553 this.setWrapperTypeClass(type);
51554 this.destroyActiveOverlay();
51555 this.inProgress = true;
51556 if (workItem) {
51557 workItem.then(function (comp) {
51558 _this.inProgress = false;
51559 _this.eOverlayWrapper.appendChild(comp.getGui());
51560 _this.activeOverlay = comp;
51561 if (_this.destroyRequested) {
51562 _this.destroyRequested = false;
51563 _this.destroyActiveOverlay();
51564 }
51565 });
51566 }
51567 this.manuallyDisplayed = this.columnModel.isReady() && !this.paginationProxy.isEmpty();
51568 this.setDisplayed(true);
51569 };
51570 OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {
51571 if (this.inProgress) {
51572 this.destroyRequested = true;
51573 return;
51574 }
51575 if (!this.activeOverlay) {
51576 return;
51577 }
51578 this.activeOverlay = this.getContext().destroyBean(this.activeOverlay);
51579 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["clearElement"])(this.eOverlayWrapper);
51580 };
51581 OverlayWrapperComponent.prototype.hideOverlay = function () {
51582 this.manuallyDisplayed = false;
51583 this.destroyActiveOverlay();
51584 this.setDisplayed(false);
51585 };
51586 OverlayWrapperComponent.prototype.destroy = function () {
51587 this.destroyActiveOverlay();
51588 _super.prototype.destroy.call(this);
51589 };
51590 OverlayWrapperComponent.prototype.showOrHideOverlay = function () {
51591 var isEmpty = this.paginationProxy.isEmpty();
51592 var isSuppressNoRowsOverlay = this.gridOptionsWrapper.isSuppressNoRowsOverlay();
51593 if (isEmpty && !isSuppressNoRowsOverlay) {
51594 this.showNoRowsOverlay();
51595 }
51596 else {
51597 this.hideOverlay();
51598 }
51599 };
51600 OverlayWrapperComponent.prototype.onRowDataChanged = function () {
51601 this.showOrHideOverlay();
51602 };
51603 OverlayWrapperComponent.prototype.onNewColumnsLoaded = function () {
51604 // hide overlay if columns and rows exist, this can happen if columns are loaded after data.
51605 // this problem exists before of the race condition between the services (column controller in this case)
51606 // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,
51607 // this race condition would not happen.
51608 if (this.columnModel.isReady() && !this.paginationProxy.isEmpty() && !this.manuallyDisplayed) {
51609 this.hideOverlay();
51610 }
51611 };
51612 // wrapping in outer div, and wrapper, is needed to center the loading icon
51613 // The idea for centering came from here: http://www.vanseodesign.com/css/vertical-centering/
51614 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>";
51615 __decorate([
51616 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentFactory')
51617 ], OverlayWrapperComponent.prototype, "userComponentFactory", void 0);
51618 __decorate([
51619 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
51620 ], OverlayWrapperComponent.prototype, "paginationProxy", void 0);
51621 __decorate([
51622 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
51623 ], OverlayWrapperComponent.prototype, "gridApi", void 0);
51624 __decorate([
51625 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
51626 ], OverlayWrapperComponent.prototype, "columnModel", void 0);
51627 __decorate([
51628 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('eOverlayWrapper')
51629 ], OverlayWrapperComponent.prototype, "eOverlayWrapper", void 0);
51630 __decorate([
51631 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
51632 ], OverlayWrapperComponent.prototype, "postConstruct", null);
51633 return OverlayWrapperComponent;
51634}(_widgets_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
51635
51636
51637
51638
51639
51640/***/ }),
51641/* 234 */
51642/***/ (function(module, __webpack_exports__, __webpack_require__) {
51643
51644"use strict";
51645__webpack_require__.r(__webpack_exports__);
51646/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowPositionUtils", function() { return RowPositionUtils; });
51647/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51648/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
51649/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
51650/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
51651/**
51652 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51653 * @version v27.3.0
51654 * @link https://www.ag-grid.com/
51655 * @license MIT
51656 */
51657var __extends = (undefined && undefined.__extends) || (function () {
51658 var extendStatics = function (d, b) {
51659 extendStatics = Object.setPrototypeOf ||
51660 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51661 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51662 return extendStatics(d, b);
51663 };
51664 return function (d, b) {
51665 extendStatics(d, b);
51666 function __() { this.constructor = d; }
51667 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51668 };
51669})();
51670var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51671 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51672 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51673 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;
51674 return c > 3 && r && Object.defineProperty(target, key, r), r;
51675};
51676
51677
51678
51679
51680var RowPositionUtils = /** @class */ (function (_super) {
51681 __extends(RowPositionUtils, _super);
51682 function RowPositionUtils() {
51683 return _super !== null && _super.apply(this, arguments) || this;
51684 }
51685 RowPositionUtils.prototype.getFirstRow = function () {
51686 var rowIndex = 0;
51687 var rowPinned;
51688 if (this.pinnedRowModel.getPinnedTopRowCount()) {
51689 rowPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP;
51690 }
51691 else if (this.rowModel.getRowCount()) {
51692 rowPinned = null;
51693 rowIndex = this.paginationProxy.getPageFirstRow();
51694 }
51695 else if (this.pinnedRowModel.getPinnedBottomRowCount()) {
51696 rowPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM;
51697 }
51698 return rowPinned === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };
51699 };
51700 RowPositionUtils.prototype.getLastRow = function () {
51701 var rowIndex;
51702 var rowPinned = null;
51703 var pinnedBottomCount = this.pinnedRowModel.getPinnedBottomRowCount();
51704 var pinnedTopCount = this.pinnedRowModel.getPinnedTopRowCount();
51705 if (pinnedBottomCount) {
51706 rowPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM;
51707 rowIndex = pinnedBottomCount - 1;
51708 }
51709 else if (this.rowModel.getRowCount()) {
51710 rowPinned = null;
51711 rowIndex = this.paginationProxy.getPageLastRow();
51712 }
51713 else if (pinnedTopCount) {
51714 rowPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP;
51715 rowIndex = pinnedTopCount - 1;
51716 }
51717 return rowIndex === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };
51718 };
51719 RowPositionUtils.prototype.getRowNode = function (gridRow) {
51720 switch (gridRow.rowPinned) {
51721 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP:
51722 return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
51723 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM:
51724 return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
51725 default:
51726 return this.rowModel.getRow(gridRow.rowIndex);
51727 }
51728 };
51729 RowPositionUtils.prototype.sameRow = function (rowA, rowB) {
51730 // if both missing
51731 if (!rowA && !rowB) {
51732 return true;
51733 }
51734 // if only one missing
51735 if ((rowA && !rowB) || (!rowA && rowB)) {
51736 return false;
51737 }
51738 // otherwise compare (use == to compare rowPinned because it can be null or undefined)
51739 return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;
51740 };
51741 // tests if this row selection is before the other row selection
51742 RowPositionUtils.prototype.before = function (rowA, rowB) {
51743 switch (rowA.rowPinned) {
51744 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP:
51745 // we we are floating top, and other isn't, then we are always before
51746 if (rowB.rowPinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP) {
51747 return true;
51748 }
51749 break;
51750 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM:
51751 // if we are floating bottom, and the other isn't, then we are never before
51752 if (rowB.rowPinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM) {
51753 return false;
51754 }
51755 break;
51756 default:
51757 // if we are not floating, but the other one is floating...
51758 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(rowB.rowPinned)) {
51759 return rowB.rowPinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP;
51760 }
51761 break;
51762 }
51763 return rowA.rowIndex < rowB.rowIndex;
51764 };
51765 __decorate([
51766 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
51767 ], RowPositionUtils.prototype, "rowModel", void 0);
51768 __decorate([
51769 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedRowModel')
51770 ], RowPositionUtils.prototype, "pinnedRowModel", void 0);
51771 __decorate([
51772 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
51773 ], RowPositionUtils.prototype, "paginationProxy", void 0);
51774 RowPositionUtils = __decorate([
51775 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('rowPositionUtils')
51776 ], RowPositionUtils);
51777 return RowPositionUtils;
51778}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
51779
51780
51781
51782
51783
51784/***/ }),
51785/* 235 */
51786/***/ (function(module, __webpack_exports__, __webpack_require__) {
51787
51788"use strict";
51789__webpack_require__.r(__webpack_exports__);
51790/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellPositionUtils", function() { return CellPositionUtils; });
51791/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51792/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
51793/**
51794 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51795 * @version v27.3.0
51796 * @link https://www.ag-grid.com/
51797 * @license MIT
51798 */
51799var __extends = (undefined && undefined.__extends) || (function () {
51800 var extendStatics = function (d, b) {
51801 extendStatics = Object.setPrototypeOf ||
51802 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51803 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51804 return extendStatics(d, b);
51805 };
51806 return function (d, b) {
51807 extendStatics(d, b);
51808 function __() { this.constructor = d; }
51809 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51810 };
51811})();
51812var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51813 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51814 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51815 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;
51816 return c > 3 && r && Object.defineProperty(target, key, r), r;
51817};
51818
51819
51820var CellPositionUtils = /** @class */ (function (_super) {
51821 __extends(CellPositionUtils, _super);
51822 function CellPositionUtils() {
51823 return _super !== null && _super.apply(this, arguments) || this;
51824 }
51825 CellPositionUtils.prototype.createId = function (cellPosition) {
51826 var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;
51827 return this.createIdFromValues(rowIndex, column, rowPinned);
51828 };
51829 CellPositionUtils.prototype.createIdFromValues = function (rowIndex, column, rowPinned) {
51830 return rowIndex + "." + (rowPinned == null ? 'null' : rowPinned) + "." + column.getId();
51831 };
51832 CellPositionUtils.prototype.equals = function (cellA, cellB) {
51833 var colsMatch = cellA.column === cellB.column;
51834 var floatingMatch = cellA.rowPinned === cellB.rowPinned;
51835 var indexMatch = cellA.rowIndex === cellB.rowIndex;
51836 return colsMatch && floatingMatch && indexMatch;
51837 };
51838 CellPositionUtils = __decorate([
51839 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('cellPositionUtils')
51840 ], CellPositionUtils);
51841 return CellPositionUtils;
51842}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
51843
51844
51845
51846
51847
51848/***/ }),
51849/* 236 */
51850/***/ (function(module, __webpack_exports__, __webpack_require__) {
51851
51852"use strict";
51853__webpack_require__.r(__webpack_exports__);
51854/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UndoRedoService", function() { return UndoRedoService; });
51855/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51856/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24);
51857/* harmony import */ var _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(237);
51858/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
51859/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16);
51860/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(17);
51861/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20);
51862/**
51863 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51864 * @version v27.3.0
51865 * @link https://www.ag-grid.com/
51866 * @license MIT
51867 */
51868var __extends = (undefined && undefined.__extends) || (function () {
51869 var extendStatics = function (d, b) {
51870 extendStatics = Object.setPrototypeOf ||
51871 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51872 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51873 return extendStatics(d, b);
51874 };
51875 return function (d, b) {
51876 extendStatics(d, b);
51877 function __() { this.constructor = d; }
51878 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51879 };
51880})();
51881var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51882 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51883 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51884 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;
51885 return c > 3 && r && Object.defineProperty(target, key, r), r;
51886};
51887
51888
51889
51890
51891
51892
51893
51894var UndoRedoService = /** @class */ (function (_super) {
51895 __extends(UndoRedoService, _super);
51896 function UndoRedoService() {
51897 var _this = _super !== null && _super.apply(this, arguments) || this;
51898 _this.cellValueChanges = [];
51899 _this.activeCellEdit = null;
51900 _this.activeRowEdit = null;
51901 _this.isPasting = false;
51902 _this.isFilling = false;
51903 _this.onCellValueChanged = function (event) {
51904 var eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };
51905 var isCellEditing = _this.activeCellEdit !== null && _this.cellPositionUtils.equals(_this.activeCellEdit, eventCell);
51906 var isRowEditing = _this.activeRowEdit !== null && _this.rowPositionUtils.sameRow(_this.activeRowEdit, eventCell);
51907 var shouldCaptureAction = isCellEditing || isRowEditing || _this.isPasting || _this.isFilling;
51908 if (!shouldCaptureAction) {
51909 return;
51910 }
51911 var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;
51912 var cellValueChange = {
51913 rowPinned: rowPinned,
51914 rowIndex: rowIndex,
51915 columnId: column.getColId(),
51916 newValue: value,
51917 oldValue: oldValue
51918 };
51919 _this.cellValueChanges.push(cellValueChange);
51920 };
51921 _this.clearStacks = function () {
51922 _this.undoStack.clear();
51923 _this.redoStack.clear();
51924 };
51925 return _this;
51926 }
51927 UndoRedoService.prototype.init = function () {
51928 if (!this.gridOptionsWrapper.isUndoRedoCellEditing()) {
51929 return;
51930 }
51931 var undoRedoLimit = this.gridOptionsWrapper.getUndoRedoCellEditingLimit();
51932 if (undoRedoLimit <= 0) {
51933 return;
51934 }
51935 this.undoStack = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoStack"](undoRedoLimit);
51936 this.redoStack = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoStack"](undoRedoLimit);
51937 this.addRowEditingListeners();
51938 this.addCellEditingListeners();
51939 this.addPasteListeners();
51940 this.addFillListeners();
51941 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged);
51942 // undo / redo is restricted to actual editing so we clear the stacks when other operations are
51943 // performed that change the order of the row / cols.
51944 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_MODEL_UPDATED, this.clearStacks);
51945 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks);
51946 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_NEW_COLUMNS_LOADED, this.clearStacks);
51947 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_GROUP_OPENED, this.clearStacks);
51948 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks);
51949 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_MOVED, this.clearStacks);
51950 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_PINNED, this.clearStacks);
51951 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_VISIBLE, this.clearStacks);
51952 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_DRAG_END, this.clearStacks);
51953 };
51954 UndoRedoService.prototype.getCurrentUndoStackSize = function () {
51955 return this.undoStack ? this.undoStack.getCurrentStackSize() : 0;
51956 };
51957 UndoRedoService.prototype.getCurrentRedoStackSize = function () {
51958 return this.redoStack ? this.redoStack.getCurrentStackSize() : 0;
51959 };
51960 UndoRedoService.prototype.undo = function () {
51961 if (!this.undoStack) {
51962 return;
51963 }
51964 var undoAction = this.undoStack.pop();
51965 if (!undoAction || !undoAction.cellValueChanges) {
51966 return;
51967 }
51968 this.processAction(undoAction, function (cellValueChange) { return cellValueChange.oldValue; });
51969 if (undoAction instanceof _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["FillUndoRedoAction"]) {
51970 this.processRangeAndCellFocus(undoAction.cellValueChanges, undoAction.initialRange);
51971 }
51972 else {
51973 this.processRangeAndCellFocus(undoAction.cellValueChanges);
51974 }
51975 this.redoStack.push(undoAction);
51976 };
51977 UndoRedoService.prototype.redo = function () {
51978 if (!this.redoStack) {
51979 return;
51980 }
51981 var redoAction = this.redoStack.pop();
51982 if (!redoAction || !redoAction.cellValueChanges) {
51983 return;
51984 }
51985 this.processAction(redoAction, function (cellValueChange) { return cellValueChange.newValue; });
51986 if (redoAction instanceof _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["FillUndoRedoAction"]) {
51987 this.processRangeAndCellFocus(redoAction.cellValueChanges, redoAction.finalRange);
51988 }
51989 else {
51990 this.processRangeAndCellFocus(redoAction.cellValueChanges);
51991 }
51992 this.undoStack.push(redoAction);
51993 };
51994 UndoRedoService.prototype.processAction = function (action, valueExtractor) {
51995 var _this = this;
51996 action.cellValueChanges.forEach(function (cellValueChange) {
51997 var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;
51998 var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };
51999 var currentRow = _this.getRowNode(rowPosition);
52000 // checks if the row has been filtered out
52001 if (!currentRow.displayed) {
52002 return;
52003 }
52004 currentRow.setDataValue(columnId, valueExtractor(cellValueChange));
52005 });
52006 };
52007 UndoRedoService.prototype.processRangeAndCellFocus = function (cellValueChanges, range) {
52008 var lastFocusedCell;
52009 if (range) {
52010 var startRow = range.startRow;
52011 var endRow = range.endRow;
52012 lastFocusedCell = {
52013 rowPinned: startRow.rowPinned,
52014 rowIndex: startRow.rowIndex,
52015 columnId: range.startColumn.getColId()
52016 };
52017 this.setLastFocusedCell(lastFocusedCell);
52018 var cellRangeParams = {
52019 rowStartIndex: startRow.rowIndex,
52020 rowStartPinned: startRow.rowPinned,
52021 rowEndIndex: endRow.rowIndex,
52022 rowEndPinned: endRow.rowPinned,
52023 columnStart: range.startColumn,
52024 columns: range.columns
52025 };
52026 this.gridApi.addCellRange(cellRangeParams);
52027 return;
52028 }
52029 var cellValueChange = cellValueChanges[0];
52030 var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;
52031 var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };
52032 var row = this.getRowNode(rowPosition);
52033 lastFocusedCell = {
52034 rowPinned: cellValueChange.rowPinned,
52035 rowIndex: row.rowIndex,
52036 columnId: cellValueChange.columnId
52037 };
52038 this.setLastFocusedCell(lastFocusedCell);
52039 };
52040 UndoRedoService.prototype.setLastFocusedCell = function (lastFocusedCell) {
52041 var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;
52042 this.gridApi.ensureIndexVisible(rowIndex);
52043 this.gridApi.ensureColumnVisible(columnId);
52044 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_5__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_4__["ModuleNames"].RangeSelectionModule)) {
52045 this.gridApi.clearRangeSelection();
52046 }
52047 this.focusService.setFocusedCell(rowIndex, columnId, rowPinned, true);
52048 };
52049 UndoRedoService.prototype.addRowEditingListeners = function () {
52050 var _this = this;
52051 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_EDITING_STARTED, function (e) {
52052 _this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };
52053 });
52054 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_EDITING_STOPPED, function () {
52055 var action = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoAction"](_this.cellValueChanges);
52056 _this.pushActionsToUndoStack(action);
52057 _this.activeRowEdit = null;
52058 });
52059 };
52060 UndoRedoService.prototype.addCellEditingListeners = function () {
52061 var _this = this;
52062 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_EDITING_STARTED, function (e) {
52063 _this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };
52064 });
52065 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_EDITING_STOPPED, function () {
52066 _this.activeCellEdit = null;
52067 var shouldPushAction = !_this.activeRowEdit && !_this.isPasting && !_this.isFilling;
52068 if (shouldPushAction) {
52069 var action = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoAction"](_this.cellValueChanges);
52070 _this.pushActionsToUndoStack(action);
52071 }
52072 });
52073 };
52074 UndoRedoService.prototype.addPasteListeners = function () {
52075 var _this = this;
52076 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PASTE_START, function () {
52077 _this.isPasting = true;
52078 });
52079 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PASTE_END, function () {
52080 var action = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoAction"](_this.cellValueChanges);
52081 _this.pushActionsToUndoStack(action);
52082 _this.isPasting = false;
52083 });
52084 };
52085 UndoRedoService.prototype.addFillListeners = function () {
52086 var _this = this;
52087 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_FILL_START, function () {
52088 _this.isFilling = true;
52089 });
52090 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_FILL_END, function (event) {
52091 var action = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["FillUndoRedoAction"](_this.cellValueChanges, event.initialRange, event.finalRange);
52092 _this.pushActionsToUndoStack(action);
52093 _this.isFilling = false;
52094 });
52095 };
52096 UndoRedoService.prototype.pushActionsToUndoStack = function (action) {
52097 this.undoStack.push(action);
52098 this.cellValueChanges = [];
52099 this.redoStack.clear();
52100 };
52101 UndoRedoService.prototype.getRowNode = function (gridRow) {
52102 switch (gridRow.rowPinned) {
52103 case _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_TOP:
52104 return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
52105 case _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_BOTTOM:
52106 return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
52107 default:
52108 return this.rowModel.getRow(gridRow.rowIndex);
52109 }
52110 };
52111 __decorate([
52112 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
52113 ], UndoRedoService.prototype, "focusService", void 0);
52114 __decorate([
52115 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
52116 ], UndoRedoService.prototype, "gridApi", void 0);
52117 __decorate([
52118 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
52119 ], UndoRedoService.prototype, "rowModel", void 0);
52120 __decorate([
52121 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedRowModel')
52122 ], UndoRedoService.prototype, "pinnedRowModel", void 0);
52123 __decorate([
52124 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('cellPositionUtils')
52125 ], UndoRedoService.prototype, "cellPositionUtils", void 0);
52126 __decorate([
52127 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowPositionUtils')
52128 ], UndoRedoService.prototype, "rowPositionUtils", void 0);
52129 __decorate([
52130 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
52131 ], UndoRedoService.prototype, "init", null);
52132 UndoRedoService = __decorate([
52133 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('undoRedoService')
52134 ], UndoRedoService);
52135 return UndoRedoService;
52136}(_context_beanStub__WEBPACK_IMPORTED_MODULE_6__["BeanStub"]));
52137
52138
52139
52140
52141
52142/***/ }),
52143/* 237 */
52144/***/ (function(module, __webpack_exports__, __webpack_require__) {
52145
52146"use strict";
52147__webpack_require__.r(__webpack_exports__);
52148/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UndoRedoAction", function() { return UndoRedoAction; });
52149/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FillUndoRedoAction", function() { return FillUndoRedoAction; });
52150/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UndoRedoStack", function() { return UndoRedoStack; });
52151/**
52152 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52153 * @version v27.3.0
52154 * @link https://www.ag-grid.com/
52155 * @license MIT
52156 */
52157var __extends = (undefined && undefined.__extends) || (function () {
52158 var extendStatics = function (d, b) {
52159 extendStatics = Object.setPrototypeOf ||
52160 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52161 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52162 return extendStatics(d, b);
52163 };
52164 return function (d, b) {
52165 extendStatics(d, b);
52166 function __() { this.constructor = d; }
52167 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52168 };
52169})();
52170var UndoRedoAction = /** @class */ (function () {
52171 function UndoRedoAction(cellValueChanges) {
52172 this.cellValueChanges = cellValueChanges;
52173 }
52174 return UndoRedoAction;
52175}());
52176
52177var FillUndoRedoAction = /** @class */ (function (_super) {
52178 __extends(FillUndoRedoAction, _super);
52179 function FillUndoRedoAction(cellValueChanges, initialRange, finalRange) {
52180 var _this = _super.call(this, cellValueChanges) || this;
52181 _this.initialRange = initialRange;
52182 _this.finalRange = finalRange;
52183 return _this;
52184 }
52185 return FillUndoRedoAction;
52186}(UndoRedoAction));
52187
52188var UndoRedoStack = /** @class */ (function () {
52189 function UndoRedoStack(maxStackSize) {
52190 this.actionStack = [];
52191 this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;
52192 this.actionStack = new Array(this.maxStackSize);
52193 }
52194 UndoRedoStack.prototype.pop = function () {
52195 return this.actionStack.pop();
52196 };
52197 UndoRedoStack.prototype.push = function (item) {
52198 var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;
52199 if (!shouldAddActions) {
52200 return;
52201 }
52202 if (this.actionStack.length === this.maxStackSize) {
52203 this.actionStack.shift();
52204 }
52205 this.actionStack.push(item);
52206 };
52207 UndoRedoStack.prototype.clear = function () {
52208 this.actionStack = [];
52209 };
52210 UndoRedoStack.prototype.getCurrentStackSize = function () {
52211 return this.actionStack.length;
52212 };
52213 UndoRedoStack.DEFAULT_STACK_SIZE = 10;
52214 return UndoRedoStack;
52215}());
52216
52217
52218
52219
52220
52221/***/ }),
52222/* 238 */
52223/***/ (function(module, __webpack_exports__, __webpack_require__) {
52224
52225"use strict";
52226__webpack_require__.r(__webpack_exports__);
52227/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderPositionUtils", function() { return HeaderPositionUtils; });
52228/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
52229/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
52230/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
52231/* harmony import */ var _row_headerRowComp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(149);
52232/**
52233 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52234 * @version v27.3.0
52235 * @link https://www.ag-grid.com/
52236 * @license MIT
52237 */
52238var __extends = (undefined && undefined.__extends) || (function () {
52239 var extendStatics = function (d, b) {
52240 extendStatics = Object.setPrototypeOf ||
52241 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52242 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52243 return extendStatics(d, b);
52244 };
52245 return function (d, b) {
52246 extendStatics(d, b);
52247 function __() { this.constructor = d; }
52248 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52249 };
52250})();
52251var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52252 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52253 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52254 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;
52255 return c > 3 && r && Object.defineProperty(target, key, r), r;
52256};
52257
52258
52259
52260
52261var HeaderPositionUtils = /** @class */ (function (_super) {
52262 __extends(HeaderPositionUtils, _super);
52263 function HeaderPositionUtils() {
52264 return _super !== null && _super.apply(this, arguments) || this;
52265 }
52266 HeaderPositionUtils.prototype.findHeader = function (focusedHeader, direction) {
52267 var nextColumn;
52268 var getGroupMethod;
52269 var getColMethod;
52270 if (focusedHeader.column instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_2__["ColumnGroup"]) {
52271 getGroupMethod = "getDisplayedGroup" + direction;
52272 nextColumn = this.columnModel[getGroupMethod](focusedHeader.column);
52273 }
52274 else {
52275 getColMethod = "getDisplayedCol" + direction;
52276 nextColumn = this.columnModel[getColMethod](focusedHeader.column);
52277 }
52278 if (nextColumn) {
52279 return {
52280 column: nextColumn,
52281 headerRowIndex: focusedHeader.headerRowIndex
52282 };
52283 }
52284 };
52285 HeaderPositionUtils.prototype.findColAtEdgeForHeaderRow = function (level, position) {
52286 var displayedColumns = this.columnModel.getAllDisplayedColumns();
52287 var column = displayedColumns[position === 'start' ? 0 : displayedColumns.length - 1];
52288 if (!column) {
52289 return;
52290 }
52291 var childContainer = this.ctrlsService.getHeaderRowContainerCtrl(column.getPinned());
52292 var type = childContainer.getRowType(level);
52293 if (type == _row_headerRowComp__WEBPACK_IMPORTED_MODULE_3__["HeaderRowType"].COLUMN_GROUP) {
52294 var columnGroup = this.columnModel.getColumnGroupAtLevel(column, level);
52295 return {
52296 headerRowIndex: level,
52297 column: columnGroup
52298 };
52299 }
52300 return {
52301 // if type==null, means the header level didn't exist
52302 headerRowIndex: type == null ? -1 : level,
52303 column: column
52304 };
52305 };
52306 __decorate([
52307 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
52308 ], HeaderPositionUtils.prototype, "columnModel", void 0);
52309 __decorate([
52310 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
52311 ], HeaderPositionUtils.prototype, "ctrlsService", void 0);
52312 HeaderPositionUtils = __decorate([
52313 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('headerPositionUtils')
52314 ], HeaderPositionUtils);
52315 return HeaderPositionUtils;
52316}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
52317
52318
52319
52320
52321
52322/***/ }),
52323/* 239 */
52324/***/ (function(module, __webpack_exports__, __webpack_require__) {
52325
52326"use strict";
52327__webpack_require__.r(__webpack_exports__);
52328/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnDefFactory", function() { return ColumnDefFactory; });
52329/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
52330/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
52331/**
52332 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52333 * @version v27.3.0
52334 * @link https://www.ag-grid.com/
52335 * @license MIT
52336 */
52337var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52338 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52339 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52340 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;
52341 return c > 3 && r && Object.defineProperty(target, key, r), r;
52342};
52343
52344
52345var ColumnDefFactory = /** @class */ (function () {
52346 function ColumnDefFactory() {
52347 }
52348 ColumnDefFactory.prototype.buildColumnDefs = function (cols, rowGroupColumns, pivotColumns) {
52349 var _this = this;
52350 var res = [];
52351 var colGroupDefs = {};
52352 cols.forEach(function (col) {
52353 var colDef = _this.createDefFromColumn(col, rowGroupColumns, pivotColumns);
52354 var addToResult = true;
52355 var childDef = colDef;
52356 var pointer = col.getOriginalParent();
52357 while (pointer) {
52358 var parentDef = null;
52359 // we don't include padding groups, as the column groups provided
52360 // by application didn't have these. the whole point of padding groups
52361 // is to balance the column tree that the user provided.
52362 if (pointer.isPadding()) {
52363 pointer = pointer.getOriginalParent();
52364 continue;
52365 }
52366 // if colDef for this group already exists, use it
52367 var existingParentDef = colGroupDefs[pointer.getGroupId()];
52368 if (existingParentDef) {
52369 existingParentDef.children.push(childDef);
52370 // if we added to result, it would be the second time we did it
52371 addToResult = false;
52372 // we don't want to continue up the tree, as it has already been
52373 // done for this group
52374 break;
52375 }
52376 parentDef = _this.createDefFromGroup(pointer);
52377 if (parentDef) {
52378 parentDef.children = [childDef];
52379 colGroupDefs[parentDef.groupId] = parentDef;
52380 childDef = parentDef;
52381 pointer = pointer.getOriginalParent();
52382 }
52383 }
52384 if (addToResult) {
52385 res.push(childDef);
52386 }
52387 });
52388 return res;
52389 };
52390 ColumnDefFactory.prototype.createDefFromGroup = function (group) {
52391 var defCloned = Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["deepCloneDefinition"])(group.getColGroupDef(), ['children']);
52392 if (defCloned) {
52393 defCloned.groupId = group.getGroupId();
52394 }
52395 return defCloned;
52396 };
52397 ColumnDefFactory.prototype.createDefFromColumn = function (col, rowGroupColumns, pivotColumns) {
52398 var colDefCloned = Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["deepCloneDefinition"])(col.getColDef());
52399 colDefCloned.colId = col.getColId();
52400 colDefCloned.width = col.getActualWidth();
52401 colDefCloned.rowGroup = col.isRowGroupActive();
52402 colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;
52403 colDefCloned.pivot = col.isPivotActive();
52404 colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;
52405 colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;
52406 colDefCloned.hide = col.isVisible() ? undefined : true;
52407 colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;
52408 colDefCloned.sort = col.getSort() ? col.getSort() : null;
52409 colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;
52410 return colDefCloned;
52411 };
52412 ColumnDefFactory = __decorate([
52413 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('columnDefFactory')
52414 ], ColumnDefFactory);
52415 return ColumnDefFactory;
52416}());
52417
52418
52419
52420
52421
52422/***/ }),
52423/* 240 */
52424/***/ (function(module, __webpack_exports__, __webpack_require__) {
52425
52426"use strict";
52427__webpack_require__.r(__webpack_exports__);
52428/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowCssClassCalculator", function() { return RowCssClassCalculator; });
52429/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
52430/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
52431/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
52432/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
52433/**
52434 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52435 * @version v27.3.0
52436 * @link https://www.ag-grid.com/
52437 * @license MIT
52438 */
52439var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52440 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52441 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52442 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;
52443 return c > 3 && r && Object.defineProperty(target, key, r), r;
52444};
52445
52446
52447
52448
52449var RowCssClassCalculator = /** @class */ (function () {
52450 function RowCssClassCalculator() {
52451 }
52452 RowCssClassCalculator.prototype.getInitialRowClasses = function (params) {
52453 var classes = [];
52454 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(params.extraCssClass)) {
52455 classes.push(params.extraCssClass);
52456 }
52457 classes.push('ag-row');
52458 classes.push(params.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');
52459 if (params.fadeRowIn) {
52460 classes.push('ag-opacity-zero');
52461 }
52462 classes.push(params.rowIsEven ? 'ag-row-even' : 'ag-row-odd');
52463 if (params.rowNode.isRowPinned()) {
52464 classes.push('ag-row-pinned');
52465 }
52466 if (params.rowNode.isSelected()) {
52467 classes.push('ag-row-selected');
52468 }
52469 if (params.rowNode.footer) {
52470 classes.push('ag-row-footer');
52471 }
52472 classes.push('ag-row-level-' + params.rowLevel);
52473 if (params.rowNode.stub) {
52474 classes.push('ag-row-loading');
52475 }
52476 if (params.fullWidthRow) {
52477 classes.push('ag-full-width-row');
52478 }
52479 if (params.expandable) {
52480 classes.push('ag-row-group');
52481 classes.push(params.rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');
52482 }
52483 if (params.rowNode.dragging) {
52484 classes.push('ag-row-dragging');
52485 }
52486 Object(_utils_array__WEBPACK_IMPORTED_MODULE_1__["pushAll"])(classes, this.processClassesFromGridOptions(params.rowNode));
52487 Object(_utils_array__WEBPACK_IMPORTED_MODULE_1__["pushAll"])(classes, this.preProcessRowClassRules(params.rowNode));
52488 // we use absolute position unless we are doing print layout
52489 classes.push(params.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');
52490 if (params.firstRowOnPage) {
52491 classes.push('ag-row-first');
52492 }
52493 if (params.lastRowOnPage) {
52494 classes.push('ag-row-last');
52495 }
52496 if (params.fullWidthRow) {
52497 if (params.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_LEFT) {
52498 classes.push('ag-cell-last-left-pinned');
52499 }
52500 if (params.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_RIGHT) {
52501 classes.push('ag-cell-first-right-pinned');
52502 }
52503 }
52504 return classes;
52505 };
52506 RowCssClassCalculator.prototype.processClassesFromGridOptions = function (rowNode) {
52507 var res = [];
52508 var process = function (rowCls) {
52509 if (typeof rowCls === 'string') {
52510 res.push(rowCls);
52511 }
52512 else if (Array.isArray(rowCls)) {
52513 rowCls.forEach(function (e) { return res.push(e); });
52514 }
52515 };
52516 // part 1 - rowClass
52517 var rowClass = this.gridOptionsWrapper.getRowClass();
52518 if (rowClass) {
52519 if (typeof rowClass === 'function') {
52520 console.warn('AG Grid: rowClass should not be a function, please use getRowClass instead');
52521 return [];
52522 }
52523 process(rowClass);
52524 }
52525 // part 2 - rowClassFunc
52526 var rowClassFunc = this.gridOptionsWrapper.getRowClassFunc();
52527 if (rowClassFunc) {
52528 var params = {
52529 data: rowNode.data,
52530 node: rowNode,
52531 rowIndex: rowNode.rowIndex
52532 };
52533 var rowClassFuncResult = rowClassFunc(params);
52534 process(rowClassFuncResult);
52535 }
52536 return res;
52537 };
52538 RowCssClassCalculator.prototype.preProcessRowClassRules = function (rowNode) {
52539 var res = [];
52540 this.processRowClassRules(rowNode, function (className) {
52541 res.push(className);
52542 }, function (className) {
52543 // not catered for, if creating, no need
52544 // to remove class as it was never there
52545 });
52546 return res;
52547 };
52548 RowCssClassCalculator.prototype.processRowClassRules = function (rowNode, onApplicableClass, onNotApplicableClass) {
52549 var rowClassParams = {
52550 data: rowNode.data,
52551 node: rowNode,
52552 rowIndex: rowNode.rowIndex,
52553 api: this.gridOptionsWrapper.getApi(),
52554 columnApi: this.gridOptionsWrapper.getColumnApi(),
52555 context: this.gridOptionsWrapper.getContext()
52556 };
52557 this.stylingService.processClassRules(this.gridOptionsWrapper.rowClassRules(), rowClassParams, onApplicableClass, onNotApplicableClass);
52558 };
52559 RowCssClassCalculator.prototype.calculateRowLevel = function (rowNode) {
52560 if (rowNode.group) {
52561 return rowNode.level;
52562 }
52563 // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item
52564 return rowNode.parent ? (rowNode.parent.level + 1) : 0;
52565 };
52566 __decorate([
52567 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('stylingService')
52568 ], RowCssClassCalculator.prototype, "stylingService", void 0);
52569 __decorate([
52570 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridOptionsWrapper')
52571 ], RowCssClassCalculator.prototype, "gridOptionsWrapper", void 0);
52572 RowCssClassCalculator = __decorate([
52573 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('rowCssClassCalculator')
52574 ], RowCssClassCalculator);
52575 return RowCssClassCalculator;
52576}());
52577
52578
52579
52580
52581
52582/***/ }),
52583/* 241 */
52584/***/ (function(module, __webpack_exports__, __webpack_require__) {
52585
52586"use strict";
52587__webpack_require__.r(__webpack_exports__);
52588/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNodeSorter", function() { return RowNodeSorter; });
52589/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
52590/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
52591/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
52592/**
52593 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52594 * @version v27.3.0
52595 * @link https://www.ag-grid.com/
52596 * @license MIT
52597 */
52598var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52599 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52600 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52601 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;
52602 return c > 3 && r && Object.defineProperty(target, key, r), r;
52603};
52604
52605
52606
52607// this logic is used by both SSRM and CSRM
52608var RowNodeSorter = /** @class */ (function () {
52609 function RowNodeSorter() {
52610 }
52611 RowNodeSorter.prototype.doFullSort = function (rowNodes, sortOptions) {
52612 var mapper = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };
52613 var sortedRowNodes = rowNodes.map(mapper);
52614 sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));
52615 return sortedRowNodes.map(function (item) { return item.rowNode; });
52616 };
52617 RowNodeSorter.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {
52618 var nodeA = sortedNodeA.rowNode;
52619 var nodeB = sortedNodeB.rowNode;
52620 // Iterate columns, return the first that doesn't match
52621 for (var i = 0, len = sortOptions.length; i < len; i++) {
52622 var sortOption = sortOptions[i];
52623 var isInverted = sortOption.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC;
52624 var valueA = this.getValue(nodeA, sortOption.column);
52625 var valueB = this.getValue(nodeB, sortOption.column);
52626 var comparatorResult = void 0;
52627 var providedComparator = this.getComparator(sortOption, nodeA);
52628 if (providedComparator) {
52629 //if comparator provided, use it
52630 comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isInverted);
52631 }
52632 else {
52633 //otherwise do our own comparison
52634 comparatorResult = _utils__WEBPACK_IMPORTED_MODULE_1__["_"].defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());
52635 }
52636 // user provided comparators can return 'NaN' if they don't correctly handle 'undefined' values, this
52637 // typically occurs when the comparator is used on a group row
52638 var validResult = !isNaN(comparatorResult);
52639 if (validResult && comparatorResult !== 0) {
52640 return sortOption.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC ? comparatorResult : comparatorResult * -1;
52641 }
52642 }
52643 // All matched, we make is so that the original sort order is kept:
52644 return sortedNodeA.currentPos - sortedNodeB.currentPos;
52645 };
52646 RowNodeSorter.prototype.getComparator = function (sortOption, rowNode) {
52647 var column = sortOption.column;
52648 // comparator on col get preference over everything else
52649 var comparatorOnCol = column.getColDef().comparator;
52650 if (comparatorOnCol != null) {
52651 return comparatorOnCol;
52652 }
52653 // if no comparator on col, see if we are showing a group, and if we are, get comparator from row group col
52654 if (rowNode.rowGroupColumn) {
52655 return rowNode.rowGroupColumn.getColDef().comparator;
52656 }
52657 if (!column.getColDef().showRowGroup) {
52658 return;
52659 }
52660 // if a 'field' is supplied on the autoGroupColumnDef we need to use the associated column comparator
52661 var groupLeafField = !rowNode.group && column.getColDef().field;
52662 if (!groupLeafField) {
52663 return;
52664 }
52665 var primaryColumn = this.columnModel.getPrimaryColumn(groupLeafField);
52666 if (!primaryColumn) {
52667 return;
52668 }
52669 return primaryColumn.getColDef().comparator;
52670 };
52671 RowNodeSorter.prototype.getValue = function (nodeA, column) {
52672 return this.valueService.getValue(column, nodeA, false, false);
52673 };
52674 __decorate([
52675 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridOptionsWrapper')
52676 ], RowNodeSorter.prototype, "gridOptionsWrapper", void 0);
52677 __decorate([
52678 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueService')
52679 ], RowNodeSorter.prototype, "valueService", void 0);
52680 __decorate([
52681 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
52682 ], RowNodeSorter.prototype, "columnModel", void 0);
52683 RowNodeSorter = __decorate([
52684 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('rowNodeSorter')
52685 ], RowNodeSorter);
52686 return RowNodeSorter;
52687}());
52688
52689
52690
52691
52692
52693/***/ }),
52694/* 242 */
52695/***/ (function(module, __webpack_exports__, __webpack_require__) {
52696
52697"use strict";
52698__webpack_require__.r(__webpack_exports__);
52699/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CtrlsService", function() { return CtrlsService; });
52700/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
52701/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
52702/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
52703/**
52704 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52705 * @version v27.3.0
52706 * @link https://www.ag-grid.com/
52707 * @license MIT
52708 */
52709var __extends = (undefined && undefined.__extends) || (function () {
52710 var extendStatics = function (d, b) {
52711 extendStatics = Object.setPrototypeOf ||
52712 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52713 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52714 return extendStatics(d, b);
52715 };
52716 return function (d, b) {
52717 extendStatics(d, b);
52718 function __() { this.constructor = d; }
52719 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52720 };
52721})();
52722var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52723 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52724 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52725 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;
52726 return c > 3 && r && Object.defineProperty(target, key, r), r;
52727};
52728
52729
52730
52731var CtrlsService = /** @class */ (function (_super) {
52732 __extends(CtrlsService, _super);
52733 function CtrlsService() {
52734 var _this = _super !== null && _super.apply(this, arguments) || this;
52735 _this.ready = false;
52736 _this.readyCallbacks = [];
52737 return _this;
52738 }
52739 CtrlsService_1 = CtrlsService;
52740 CtrlsService.prototype.checkReady = function () {
52741 this.ready =
52742 this.gridCtrl != null
52743 && this.gridBodyCtrl != null
52744 && this.centerRowContainerCtrl != null
52745 && this.leftRowContainerCtrl != null
52746 && this.rightRowContainerCtrl != null
52747 && this.bottomCenterRowContainerCtrl != null
52748 && this.bottomLeftRowContainerCtrl != null
52749 && this.bottomRightRowContainerCtrl != null
52750 && this.topCenterRowContainerCtrl != null
52751 && this.topLeftRowContainerCtrl != null
52752 && this.topRightRowContainerCtrl != null
52753 && this.centerHeaderRowContainerCtrl != null
52754 && this.leftHeaderRowContainerCtrl != null
52755 && this.rightHeaderRowContainerCtrl != null
52756 && this.fakeHScrollCtrl != null
52757 && this.gridHeaderCtrl != null;
52758 if (this.ready) {
52759 var p_1 = this.createReadyParams();
52760 this.readyCallbacks.forEach(function (c) { return c(p_1); });
52761 this.readyCallbacks.length = 0;
52762 }
52763 };
52764 CtrlsService.prototype.whenReady = function (callback) {
52765 if (this.ready) {
52766 callback(this.createReadyParams());
52767 }
52768 else {
52769 this.readyCallbacks.push(callback);
52770 }
52771 };
52772 CtrlsService.prototype.createReadyParams = function () {
52773 return {
52774 centerRowContainerCtrl: this.centerRowContainerCtrl,
52775 leftRowContainerCtrl: this.leftRowContainerCtrl,
52776 rightRowContainerCtrl: this.rightRowContainerCtrl,
52777 bottomCenterRowContainerCtrl: this.bottomCenterRowContainerCtrl,
52778 bottomLeftRowContainerCtrl: this.bottomLeftRowContainerCtrl,
52779 bottomRightRowContainerCtrl: this.bottomRightRowContainerCtrl,
52780 topCenterRowContainerCtrl: this.topCenterRowContainerCtrl,
52781 topLeftRowContainerCtrl: this.topLeftRowContainerCtrl,
52782 topRightRowContainerCtrl: this.topRightRowContainerCtrl,
52783 centerHeaderRowContainerCtrl: this.centerHeaderRowContainerCtrl,
52784 leftHeaderRowContainerCtrl: this.leftHeaderRowContainerCtrl,
52785 rightHeaderRowContainerCtrl: this.rightHeaderRowContainerCtrl,
52786 fakeHScrollCtrl: this.fakeHScrollCtrl,
52787 gridBodyCtrl: this.gridBodyCtrl,
52788 gridCtrl: this.gridCtrl,
52789 gridHeaderCtrl: this.gridHeaderCtrl,
52790 };
52791 };
52792 CtrlsService.prototype.registerFakeHScrollCtrl = function (ctrl) {
52793 this.fakeHScrollCtrl = ctrl;
52794 this.checkReady();
52795 };
52796 CtrlsService.prototype.registerGridHeaderCtrl = function (gridHeaderCtrl) {
52797 this.gridHeaderCtrl = gridHeaderCtrl;
52798 this.checkReady();
52799 };
52800 CtrlsService.prototype.registerCenterRowContainerCtrl = function (ctrl) {
52801 this.centerRowContainerCtrl = ctrl;
52802 this.checkReady();
52803 };
52804 CtrlsService.prototype.registerLeftRowContainerCtrl = function (ctrl) {
52805 this.leftRowContainerCtrl = ctrl;
52806 this.checkReady();
52807 };
52808 CtrlsService.prototype.registerRightRowContainerCtrl = function (ctrl) {
52809 this.rightRowContainerCtrl = ctrl;
52810 this.checkReady();
52811 };
52812 CtrlsService.prototype.registerTopCenterRowContainerCtrl = function (ctrl) {
52813 this.topCenterRowContainerCtrl = ctrl;
52814 this.checkReady();
52815 };
52816 CtrlsService.prototype.registerTopLeftRowContainerCon = function (ctrl) {
52817 this.topLeftRowContainerCtrl = ctrl;
52818 this.checkReady();
52819 };
52820 CtrlsService.prototype.registerTopRightRowContainerCtrl = function (ctrl) {
52821 this.topRightRowContainerCtrl = ctrl;
52822 this.checkReady();
52823 };
52824 CtrlsService.prototype.registerBottomCenterRowContainerCtrl = function (ctrl) {
52825 this.bottomCenterRowContainerCtrl = ctrl;
52826 this.checkReady();
52827 };
52828 CtrlsService.prototype.registerBottomLeftRowContainerCtrl = function (ctrl) {
52829 this.bottomLeftRowContainerCtrl = ctrl;
52830 this.checkReady();
52831 };
52832 CtrlsService.prototype.registerBottomRightRowContainerCtrl = function (ctrl) {
52833 this.bottomRightRowContainerCtrl = ctrl;
52834 this.checkReady();
52835 };
52836 CtrlsService.prototype.registerHeaderContainer = function (ctrl, pinned) {
52837 switch (pinned) {
52838 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT:
52839 this.leftHeaderRowContainerCtrl = ctrl;
52840 break;
52841 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT:
52842 this.rightHeaderRowContainerCtrl = ctrl;
52843 break;
52844 default:
52845 this.centerHeaderRowContainerCtrl = ctrl;
52846 break;
52847 }
52848 this.checkReady();
52849 };
52850 CtrlsService.prototype.registerGridBodyCtrl = function (ctrl) {
52851 this.gridBodyCtrl = ctrl;
52852 this.checkReady();
52853 };
52854 CtrlsService.prototype.registerGridCtrl = function (ctrl) {
52855 this.gridCtrl = ctrl;
52856 this.checkReady();
52857 };
52858 CtrlsService.prototype.getFakeHScrollCtrl = function () {
52859 return this.fakeHScrollCtrl;
52860 };
52861 CtrlsService.prototype.getGridHeaderCtrl = function () {
52862 return this.gridHeaderCtrl;
52863 };
52864 CtrlsService.prototype.getGridCtrl = function () {
52865 return this.gridCtrl;
52866 };
52867 CtrlsService.prototype.getCenterRowContainerCtrl = function () {
52868 return this.centerRowContainerCtrl;
52869 };
52870 CtrlsService.prototype.getTopCenterRowContainerCtrl = function () {
52871 return this.topCenterRowContainerCtrl;
52872 };
52873 CtrlsService.prototype.getBottomCenterRowContainerCtrl = function () {
52874 return this.bottomCenterRowContainerCtrl;
52875 };
52876 CtrlsService.prototype.getGridBodyCtrl = function () {
52877 return this.gridBodyCtrl;
52878 };
52879 CtrlsService.prototype.getHeaderRowContainerCtrls = function () {
52880 return [this.leftHeaderRowContainerCtrl, this.rightHeaderRowContainerCtrl, this.centerHeaderRowContainerCtrl];
52881 };
52882 CtrlsService.prototype.getHeaderRowContainerCtrl = function (pinned) {
52883 switch (pinned) {
52884 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT: return this.leftHeaderRowContainerCtrl;
52885 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT: return this.rightHeaderRowContainerCtrl;
52886 default: return this.centerHeaderRowContainerCtrl;
52887 }
52888 };
52889 var CtrlsService_1;
52890 CtrlsService.NAME = 'ctrlsService';
52891 CtrlsService = CtrlsService_1 = __decorate([
52892 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])(CtrlsService_1.NAME)
52893 ], CtrlsService);
52894 return CtrlsService;
52895}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
52896
52897
52898
52899
52900
52901/***/ }),
52902/* 243 */
52903/***/ (function(module, __webpack_exports__, __webpack_require__) {
52904
52905"use strict";
52906__webpack_require__.r(__webpack_exports__);
52907/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CtrlsFactory", function() { return CtrlsFactory; });
52908/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
52909/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
52910/**
52911 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52912 * @version v27.3.0
52913 * @link https://www.ag-grid.com/
52914 * @license MIT
52915 */
52916var __extends = (undefined && undefined.__extends) || (function () {
52917 var extendStatics = function (d, b) {
52918 extendStatics = Object.setPrototypeOf ||
52919 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52920 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52921 return extendStatics(d, b);
52922 };
52923 return function (d, b) {
52924 extendStatics(d, b);
52925 function __() { this.constructor = d; }
52926 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52927 };
52928})();
52929var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52930 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52931 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52932 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;
52933 return c > 3 && r && Object.defineProperty(target, key, r), r;
52934};
52935
52936
52937var CtrlsFactory = /** @class */ (function (_super) {
52938 __extends(CtrlsFactory, _super);
52939 function CtrlsFactory() {
52940 var _this = _super !== null && _super.apply(this, arguments) || this;
52941 _this.registry = {};
52942 return _this;
52943 }
52944 CtrlsFactory.prototype.register = function (meta) {
52945 this.registry[meta.controllerName] = meta.controllerClass;
52946 };
52947 CtrlsFactory.prototype.getInstance = function (name) {
52948 var ControllerClass = this.registry[name];
52949 if (ControllerClass == null) {
52950 return undefined;
52951 }
52952 return new ControllerClass();
52953 };
52954 CtrlsFactory = __decorate([
52955 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('ctrlsFactory')
52956 ], CtrlsFactory);
52957 return CtrlsFactory;
52958}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
52959
52960
52961
52962
52963
52964/***/ }),
52965/* 244 */
52966/***/ (function(module, __webpack_exports__, __webpack_require__) {
52967
52968"use strict";
52969__webpack_require__.r(__webpack_exports__);
52970/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FakeHScrollComp", function() { return FakeHScrollComp; });
52971/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
52972/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
52973/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
52974/* harmony import */ var _fakeHScrollCtrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(245);
52975/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
52976/* harmony import */ var _centerWidthFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(136);
52977/**
52978 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52979 * @version v27.3.0
52980 * @link https://www.ag-grid.com/
52981 * @license MIT
52982 */
52983var __extends = (undefined && undefined.__extends) || (function () {
52984 var extendStatics = function (d, b) {
52985 extendStatics = Object.setPrototypeOf ||
52986 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52987 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52988 return extendStatics(d, b);
52989 };
52990 return function (d, b) {
52991 extendStatics(d, b);
52992 function __() { this.constructor = d; }
52993 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52994 };
52995})();
52996var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52997 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52998 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52999 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;
53000 return c > 3 && r && Object.defineProperty(target, key, r), r;
53001};
53002
53003
53004
53005
53006
53007
53008var FakeHScrollComp = /** @class */ (function (_super) {
53009 __extends(FakeHScrollComp, _super);
53010 function FakeHScrollComp() {
53011 return _super.call(this, FakeHScrollComp.TEMPLATE) || this;
53012 }
53013 FakeHScrollComp.prototype.postConstruct = function () {
53014 var _this = this;
53015 var compProxy = {
53016 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
53017 setHeight: function (height) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedHeight"])(_this.getGui(), height); },
53018 setContainerHeight: function (height) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedHeight"])(_this.eContainer, height); },
53019 setViewportHeight: function (height) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedHeight"])(_this.eViewport, height); },
53020 setRightSpacerFixedWidth: function (width) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedWidth"])(_this.eRightSpacer, width); },
53021 setLeftSpacerFixedWidth: function (width) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedWidth"])(_this.eLeftSpacer, width); },
53022 includeLeftSpacerScrollerCss: function (cssClass, include) {
53023 return _this.eLeftSpacer.classList.toggle(cssClass, include);
53024 },
53025 includeRightSpacerScrollerCss: function (cssClass, include) {
53026 return _this.eRightSpacer.classList.toggle(cssClass, include);
53027 },
53028 };
53029 var ctrl = this.createManagedBean(new _fakeHScrollCtrl__WEBPACK_IMPORTED_MODULE_3__["FakeHScrollCtrl"]());
53030 ctrl.setComp(compProxy, this.getGui(), this.eViewport, this.eContainer);
53031 this.createManagedBean(new _centerWidthFeature__WEBPACK_IMPORTED_MODULE_5__["CenterWidthFeature"](function (width) { return _this.eContainer.style.width = width + "px"; }));
53032 };
53033 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>";
53034 __decorate([
53035 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLeftSpacer')
53036 ], FakeHScrollComp.prototype, "eLeftSpacer", void 0);
53037 __decorate([
53038 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eRightSpacer')
53039 ], FakeHScrollComp.prototype, "eRightSpacer", void 0);
53040 __decorate([
53041 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eViewport')
53042 ], FakeHScrollComp.prototype, "eViewport", void 0);
53043 __decorate([
53044 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eContainer')
53045 ], FakeHScrollComp.prototype, "eContainer", void 0);
53046 __decorate([
53047 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
53048 ], FakeHScrollComp.prototype, "postConstruct", null);
53049 return FakeHScrollComp;
53050}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
53051
53052
53053
53054
53055
53056/***/ }),
53057/* 245 */
53058/***/ (function(module, __webpack_exports__, __webpack_require__) {
53059
53060"use strict";
53061__webpack_require__.r(__webpack_exports__);
53062/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FakeHScrollCtrl", function() { return FakeHScrollCtrl; });
53063/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
53064/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43);
53065/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
53066/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
53067/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(112);
53068/**
53069 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53070 * @version v27.3.0
53071 * @link https://www.ag-grid.com/
53072 * @license MIT
53073 */
53074var __extends = (undefined && undefined.__extends) || (function () {
53075 var extendStatics = function (d, b) {
53076 extendStatics = Object.setPrototypeOf ||
53077 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
53078 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
53079 return extendStatics(d, b);
53080 };
53081 return function (d, b) {
53082 extendStatics(d, b);
53083 function __() { this.constructor = d; }
53084 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
53085 };
53086})();
53087var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53088 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53089 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53090 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;
53091 return c > 3 && r && Object.defineProperty(target, key, r), r;
53092};
53093
53094
53095
53096
53097
53098var FakeHScrollCtrl = /** @class */ (function (_super) {
53099 __extends(FakeHScrollCtrl, _super);
53100 function FakeHScrollCtrl() {
53101 return _super.call(this) || this;
53102 }
53103 FakeHScrollCtrl.prototype.setComp = function (view, eGui, eViewport, eContainer) {
53104 this.view = view;
53105 this.eViewport = eViewport;
53106 this.eContainer = eContainer;
53107 this.eGui = eGui;
53108 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));
53109 this.onScrollVisibilityChanged();
53110 // When doing printing, this changes whether cols are pinned or not
53111 var spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);
53112 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, spacerWidthsListener);
53113 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, spacerWidthsListener);
53114 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_DOM_LAYOUT, spacerWidthsListener);
53115 this.setFakeHScrollSpacerWidths();
53116 if (this.invisibleScrollbar) {
53117 this.hideAndShowInvisibleScrollAsNeeded();
53118 this.addActiveListenerToggles();
53119 }
53120 this.ctrlsService.registerFakeHScrollCtrl(this);
53121 };
53122 FakeHScrollCtrl.prototype.addActiveListenerToggles = function () {
53123 var _this = this;
53124 var activateEvents = ['mouseenter', 'mousedown', 'touchstart'];
53125 var deactivateEvents = ['mouseleave', 'mouseup', 'touchend'];
53126 activateEvents.forEach(function (eventName) { return _this.addManagedListener(_this.eGui, eventName, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-active', true); }); });
53127 deactivateEvents.forEach(function (eventName) { return _this.addManagedListener(_this.eGui, eventName, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-active', false); }); });
53128 };
53129 FakeHScrollCtrl.prototype.postConstruct = function () {
53130 this.enableRtl = this.gridOptionsWrapper.isEnableRtl();
53131 this.invisibleScrollbar = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_1__["isInvisibleScrollbar"])();
53132 };
53133 FakeHScrollCtrl.prototype.onScrollVisibilityChanged = function () {
53134 this.setScrollVisible();
53135 this.setFakeHScrollSpacerWidths();
53136 };
53137 FakeHScrollCtrl.prototype.hideAndShowInvisibleScrollAsNeeded = function () {
53138 var _this = this;
53139 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL, function (params) {
53140 if (params.direction === 'horizontal') {
53141 _this.view.addOrRemoveCssClass('ag-scrollbar-scrolling', true);
53142 }
53143 });
53144 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL_END, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-scrolling', false); });
53145 };
53146 FakeHScrollCtrl.prototype.setFakeHScrollSpacerWidths = function () {
53147 var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();
53148 // we pad the right based on a) if cols are pinned to the right and
53149 // b) if v scroll is showing on the right (normal position of scroll)
53150 var rightSpacing = this.columnModel.getDisplayedColumnsRightWidth();
53151 var scrollOnRight = !this.enableRtl && vScrollShowing;
53152 var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();
53153 if (scrollOnRight) {
53154 rightSpacing += scrollbarWidth;
53155 }
53156 this.view.setRightSpacerFixedWidth(rightSpacing);
53157 this.view.includeRightSpacerScrollerCss('ag-scroller-corner', rightSpacing <= scrollbarWidth);
53158 // we pad the left based on a) if cols are pinned to the left and
53159 // b) if v scroll is showing on the left (happens in LTR layout only)
53160 var leftSpacing = this.columnModel.getDisplayedColumnsLeftWidth();
53161 var scrollOnLeft = this.enableRtl && vScrollShowing;
53162 if (scrollOnLeft) {
53163 leftSpacing += scrollbarWidth;
53164 }
53165 this.view.setLeftSpacerFixedWidth(leftSpacing);
53166 this.view.includeLeftSpacerScrollerCss('ag-scroller-corner', leftSpacing <= scrollbarWidth);
53167 };
53168 FakeHScrollCtrl.prototype.setScrollVisible = function () {
53169 var hScrollShowing = this.scrollVisibleService.isHorizontalScrollShowing();
53170 var invisibleScrollbar = this.invisibleScrollbar;
53171 var isSuppressHorizontalScroll = this.gridOptionsWrapper.isSuppressHorizontalScroll();
53172 var scrollbarWidth = hScrollShowing ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;
53173 var adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 15 : scrollbarWidth;
53174 var scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;
53175 this.view.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);
53176 this.view.setHeight(scrollContainerSize);
53177 this.view.setViewportHeight(scrollContainerSize);
53178 this.view.setContainerHeight(scrollContainerSize);
53179 };
53180 FakeHScrollCtrl.prototype.getViewport = function () {
53181 return this.eViewport;
53182 };
53183 FakeHScrollCtrl.prototype.getContainer = function () {
53184 return this.eContainer;
53185 };
53186 __decorate([
53187 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('scrollVisibleService')
53188 ], FakeHScrollCtrl.prototype, "scrollVisibleService", void 0);
53189 __decorate([
53190 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
53191 ], FakeHScrollCtrl.prototype, "columnModel", void 0);
53192 __decorate([
53193 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
53194 ], FakeHScrollCtrl.prototype, "ctrlsService", void 0);
53195 __decorate([
53196 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
53197 ], FakeHScrollCtrl.prototype, "postConstruct", null);
53198 return FakeHScrollCtrl;
53199}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
53200
53201
53202
53203
53204
53205/***/ }),
53206/* 246 */
53207/***/ (function(module, __webpack_exports__, __webpack_require__) {
53208
53209"use strict";
53210__webpack_require__.r(__webpack_exports__);
53211/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PinnedWidthService", function() { return PinnedWidthService; });
53212/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
53213/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
53214/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112);
53215/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
53216/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
53217/**
53218 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53219 * @version v27.3.0
53220 * @link https://www.ag-grid.com/
53221 * @license MIT
53222 */
53223var __extends = (undefined && undefined.__extends) || (function () {
53224 var extendStatics = function (d, b) {
53225 extendStatics = Object.setPrototypeOf ||
53226 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
53227 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
53228 return extendStatics(d, b);
53229 };
53230 return function (d, b) {
53231 extendStatics(d, b);
53232 function __() { this.constructor = d; }
53233 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
53234 };
53235})();
53236var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53237 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53238 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53239 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;
53240 return c > 3 && r && Object.defineProperty(target, key, r), r;
53241};
53242
53243
53244
53245
53246
53247var PinnedWidthService = /** @class */ (function (_super) {
53248 __extends(PinnedWidthService, _super);
53249 function PinnedWidthService() {
53250 return _super !== null && _super.apply(this, arguments) || this;
53251 }
53252 PinnedWidthService.prototype.postConstruct = function () {
53253 var listener = this.checkContainerWidths.bind(this);
53254 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
53255 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);
53256 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__["GridOptionsWrapper"].PROP_DOM_LAYOUT, listener);
53257 };
53258 PinnedWidthService.prototype.checkContainerWidths = function () {
53259 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].DOM_LAYOUT_PRINT;
53260 var newLeftWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsLeftWidth();
53261 var newRightWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsRightWidth();
53262 if (newLeftWidth != this.leftWidth) {
53263 this.leftWidth = newLeftWidth;
53264 this.eventService.dispatchEvent({ type: _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_LEFT_PINNED_WIDTH_CHANGED });
53265 }
53266 if (newRightWidth != this.rightWidth) {
53267 this.rightWidth = newRightWidth;
53268 this.eventService.dispatchEvent({ type: _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_RIGHT_PINNED_WIDTH_CHANGED });
53269 }
53270 };
53271 PinnedWidthService.prototype.getPinnedRightWidth = function () {
53272 return this.rightWidth;
53273 };
53274 PinnedWidthService.prototype.getPinnedLeftWidth = function () {
53275 return this.leftWidth;
53276 };
53277 __decorate([
53278 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
53279 ], PinnedWidthService.prototype, "columnModel", void 0);
53280 __decorate([
53281 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
53282 ], PinnedWidthService.prototype, "postConstruct", null);
53283 PinnedWidthService = __decorate([
53284 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('pinnedWidthService')
53285 ], PinnedWidthService);
53286 return PinnedWidthService;
53287}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
53288
53289
53290
53291
53292
53293/***/ }),
53294/* 247 */
53295/***/ (function(module, __webpack_exports__, __webpack_require__) {
53296
53297"use strict";
53298__webpack_require__.r(__webpack_exports__);
53299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNodeEventThrottle", function() { return RowNodeEventThrottle; });
53300/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
53301/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
53302/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
53303/**
53304 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53305 * @version v27.3.0
53306 * @link https://www.ag-grid.com/
53307 * @license MIT
53308 */
53309var __extends = (undefined && undefined.__extends) || (function () {
53310 var extendStatics = function (d, b) {
53311 extendStatics = Object.setPrototypeOf ||
53312 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
53313 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
53314 return extendStatics(d, b);
53315 };
53316 return function (d, b) {
53317 extendStatics(d, b);
53318 function __() { this.constructor = d; }
53319 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
53320 };
53321})();
53322var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53323 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53324 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53325 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;
53326 return c > 3 && r && Object.defineProperty(target, key, r), r;
53327};
53328
53329
53330
53331var RowNodeEventThrottle = /** @class */ (function (_super) {
53332 __extends(RowNodeEventThrottle, _super);
53333 function RowNodeEventThrottle() {
53334 var _this = _super !== null && _super.apply(this, arguments) || this;
53335 _this.events = [];
53336 return _this;
53337 }
53338 RowNodeEventThrottle.prototype.postConstruct = function () {
53339 if (this.rowModel.getType() == _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
53340 this.clientSideRowModel = this.rowModel;
53341 }
53342 };
53343 // because the user can call rowNode.setExpanded() many times in one VM turn,
53344 // we throttle the calls to ClientSideRowModel using animationFrameService. this means for 100
53345 // row nodes getting expanded, we only update the CSRM once, and then we fire all events after
53346 // CSRM has updated.
53347 //
53348 // if we did not do this, then the user could call setExpanded on 100+ rows, causing the grid
53349 // to re-render 100+ times, which would be a performance lag.
53350 //
53351 // we use animationFrameService
53352 // rather than _.debounce() so this will get done if anyone flushes the animationFrameService
53353 // (eg user calls api.ensureRowVisible(), which in turn flushes ).
53354 RowNodeEventThrottle.prototype.dispatchExpanded = function (event) {
53355 var _this = this;
53356 // if not using CSRM, we don't debounce. otherwise this breaks the SSRM.
53357 if (this.clientSideRowModel == null) {
53358 this.eventService.dispatchEvent(event);
53359 return;
53360 }
53361 this.events.push(event);
53362 var func = function () {
53363 if (_this.clientSideRowModel) {
53364 _this.clientSideRowModel.onRowGroupOpened();
53365 }
53366 _this.events.forEach(function (e) { return _this.eventService.dispatchEvent(e); });
53367 _this.events = [];
53368 };
53369 if (this.dispatchExpandedDebounced == null) {
53370 this.dispatchExpandedDebounced = this.animationFrameService.debounce(func);
53371 }
53372 this.dispatchExpandedDebounced();
53373 };
53374 __decorate([
53375 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('animationFrameService')
53376 ], RowNodeEventThrottle.prototype, "animationFrameService", void 0);
53377 __decorate([
53378 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('rowModel')
53379 ], RowNodeEventThrottle.prototype, "rowModel", void 0);
53380 __decorate([
53381 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
53382 ], RowNodeEventThrottle.prototype, "postConstruct", null);
53383 RowNodeEventThrottle = __decorate([
53384 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('rowNodeEventThrottle')
53385 ], RowNodeEventThrottle);
53386 return RowNodeEventThrottle;
53387}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
53388
53389
53390
53391
53392
53393/***/ }),
53394/* 248 */
53395/***/ (function(module, __webpack_exports__, __webpack_require__) {
53396
53397"use strict";
53398__webpack_require__.r(__webpack_exports__);
53399/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultGroupComparator", function() { return defaultGroupComparator; });
53400/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
53401/**
53402 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53403 * @version v27.3.0
53404 * @link https://www.ag-grid.com/
53405 * @license MIT
53406 */
53407
53408function defaultGroupComparator(valueA, valueB, nodeA, nodeB, accentedCompare) {
53409 if (accentedCompare === void 0) { accentedCompare = false; }
53410 console.warn('AG Grid: Since ag-grid 11.0.0 defaultGroupComparator is not necessary. You can remove this from your colDef');
53411 var nodeAIsGroup = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(nodeA) && nodeA.group;
53412 var nodeBIsGroup = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(nodeB) && nodeB.group;
53413 var bothAreGroups = nodeAIsGroup && nodeBIsGroup;
53414 var bothAreNormal = !nodeAIsGroup && !nodeBIsGroup;
53415 if (bothAreGroups) {
53416 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["defaultComparator"])(nodeA.key, nodeB.key, accentedCompare);
53417 }
53418 if (bothAreNormal) {
53419 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["defaultComparator"])(valueA, valueB, accentedCompare);
53420 }
53421 if (nodeAIsGroup) {
53422 return 1;
53423 }
53424 return -1;
53425}
53426
53427
53428
53429
53430/***/ }),
53431/* 249 */
53432/***/ (function(module, __webpack_exports__, __webpack_require__) {
53433
53434"use strict";
53435__webpack_require__.r(__webpack_exports__);
53436/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseComponentWrapper", function() { return BaseComponentWrapper; });
53437/**
53438 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53439 * @version v27.3.0
53440 * @link https://www.ag-grid.com/
53441 * @license MIT
53442 */
53443var BaseComponentWrapper = /** @class */ (function () {
53444 function BaseComponentWrapper() {
53445 }
53446 BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentType) {
53447 var _this = this;
53448 if (optionalMethodList === void 0) { optionalMethodList = []; }
53449 var wrapper = this.createWrapper(OriginalConstructor, componentType);
53450 mandatoryMethodList.forEach((function (methodName) {
53451 _this.createMethod(wrapper, methodName, true);
53452 }));
53453 optionalMethodList.forEach((function (methodName) {
53454 _this.createMethod(wrapper, methodName, false);
53455 }));
53456 return wrapper;
53457 };
53458 BaseComponentWrapper.prototype.unwrap = function (comp) {
53459 return comp;
53460 };
53461 BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {
53462 wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));
53463 };
53464 BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {
53465 return function () {
53466 if (wrapper.hasMethod(methodName)) {
53467 return wrapper.callMethod(methodName, arguments);
53468 }
53469 if (mandatory) {
53470 console.warn('AG Grid: Framework component is missing the method ' + methodName + '()');
53471 }
53472 return null;
53473 };
53474 };
53475 return BaseComponentWrapper;
53476}());
53477
53478
53479
53480
53481
53482/***/ }),
53483/* 250 */
53484/***/ (function(module, __webpack_exports__, __webpack_require__) {
53485
53486"use strict";
53487__webpack_require__.r(__webpack_exports__);
53488/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BarColumnLabelPlacement", function() { return BarColumnLabelPlacement; });
53489/**
53490 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53491 * @version v27.3.0
53492 * @link https://www.ag-grid.com/
53493 * @license MIT
53494 */
53495var BarColumnLabelPlacement;
53496(function (BarColumnLabelPlacement) {
53497 BarColumnLabelPlacement["InsideBase"] = "insideBase";
53498 BarColumnLabelPlacement["InsideEnd"] = "insideEnd";
53499 BarColumnLabelPlacement["Center"] = "center";
53500 BarColumnLabelPlacement["OutsideEnd"] = "outsideEnd";
53501})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));
53502
53503
53504
53505
53506/***/ }),
53507/* 251 */
53508/***/ (function(module, __webpack_exports__, __webpack_require__) {
53509
53510"use strict";
53511__webpack_require__.r(__webpack_exports__);
53512/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModel", function() { return ClientSideRowModel; });
53513/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
53514/* harmony import */ var _clientSideNodeManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(252);
53515var __extends = (undefined && undefined.__extends) || (function () {
53516 var extendStatics = function (d, b) {
53517 extendStatics = Object.setPrototypeOf ||
53518 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
53519 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
53520 return extendStatics(d, b);
53521 };
53522 return function (d, b) {
53523 extendStatics(d, b);
53524 function __() { this.constructor = d; }
53525 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
53526 };
53527})();
53528var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53529 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53530 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53531 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;
53532 return c > 3 && r && Object.defineProperty(target, key, r), r;
53533};
53534
53535
53536var RecursionType;
53537(function (RecursionType) {
53538 RecursionType[RecursionType["Normal"] = 0] = "Normal";
53539 RecursionType[RecursionType["AfterFilter"] = 1] = "AfterFilter";
53540 RecursionType[RecursionType["AfterFilterAndSort"] = 2] = "AfterFilterAndSort";
53541 RecursionType[RecursionType["PivotNodes"] = 3] = "PivotNodes";
53542})(RecursionType || (RecursionType = {}));
53543var ClientSideRowModel = /** @class */ (function (_super) {
53544 __extends(ClientSideRowModel, _super);
53545 function ClientSideRowModel() {
53546 return _super !== null && _super.apply(this, arguments) || this;
53547 }
53548 ClientSideRowModel.prototype.init = function () {
53549 var refreshEverythingFunc = this.refreshModel.bind(this, { step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING });
53550 var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();
53551 var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {
53552 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING,
53553 afterColumnsChanged: true,
53554 keepRenderedRows: true,
53555 animate: animate
53556 });
53557 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_NEW_COLUMNS_LOADED, refreshEverythingAfterColsChangedFunc);
53558 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);
53559 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));
53560 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 }));
53561 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
53562 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
53563 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);
53564 var refreshMapListener = this.refreshModel.bind(this, {
53565 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP,
53566 keepRenderedRows: true,
53567 animate: animate
53568 });
53569 this.addManagedListener(this.gridOptionsWrapper, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"].PROP_GROUP_REMOVE_SINGLE_CHILDREN, refreshMapListener);
53570 this.addManagedListener(this.gridOptionsWrapper, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"].PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, refreshMapListener);
53571 this.rootNode = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
53572 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);
53573 };
53574 ClientSideRowModel.prototype.start = function () {
53575 var rowData = this.gridOptionsWrapper.getRowData();
53576 if (rowData) {
53577 this.setRowData(rowData);
53578 }
53579 };
53580 ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {
53581 var atLeastOneChange;
53582 var res = false;
53583 // we do this multiple times as changing the row heights can also change the first and last rows,
53584 // so the first pass can make lots of rows smaller, which means the second pass we end up changing
53585 // more rows.
53586 do {
53587 atLeastOneChange = false;
53588 var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);
53589 var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);
53590 // keep check to current page if doing pagination
53591 var firstRow = Math.max(rowAtStartPixel, startLimitIndex);
53592 var lastRow = Math.min(rowAtEndPixel, endLimitIndex);
53593 for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {
53594 var rowNode = this.getRow(rowIndex);
53595 if (rowNode.rowHeightEstimated) {
53596 var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);
53597 rowNode.setRowHeight(rowHeight.height);
53598 atLeastOneChange = true;
53599 res = true;
53600 }
53601 }
53602 if (atLeastOneChange) {
53603 this.setRowTopAndRowIndex();
53604 }
53605 } while (atLeastOneChange);
53606 return res;
53607 };
53608 ClientSideRowModel.prototype.setRowTopAndRowIndex = function () {
53609 var defaultRowHeight = this.gridOptionsWrapper.getDefaultRowHeight();
53610 var nextRowTop = 0;
53611 // mapping displayed rows is not needed for this method, however it's used in
53612 // clearRowTopAndRowIndex(), and given we are looping through this.rowsToDisplay here,
53613 // we create the map here for performance reasons, so we don't loop a second time
53614 // in clearRowTopAndRowIndex()
53615 var displayedRowsMapped = new Set();
53616 // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time
53617 // with these two layouts.
53618 var allowEstimate = this.gridOptionsWrapper.getDomLayout() === _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_NORMAL;
53619 for (var i = 0; i < this.rowsToDisplay.length; i++) {
53620 var rowNode = this.rowsToDisplay[i];
53621 if (rowNode.id != null) {
53622 displayedRowsMapped.add(rowNode.id);
53623 }
53624 if (rowNode.rowHeight == null) {
53625 var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode, allowEstimate, defaultRowHeight);
53626 rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);
53627 }
53628 rowNode.setRowTop(nextRowTop);
53629 rowNode.setRowIndex(i);
53630 nextRowTop += rowNode.rowHeight;
53631 }
53632 return displayedRowsMapped;
53633 };
53634 ClientSideRowModel.prototype.clearRowTopAndRowIndex = function (changedPath, displayedRowsMapped) {
53635 var changedPathActive = changedPath.isActive();
53636 var clearIfNotDisplayed = function (rowNode) {
53637 if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {
53638 rowNode.clearRowTopAndRowIndex();
53639 }
53640 };
53641 var recurse = function (rowNode) {
53642 clearIfNotDisplayed(rowNode);
53643 clearIfNotDisplayed(rowNode.detailNode);
53644 clearIfNotDisplayed(rowNode.sibling);
53645 if (rowNode.hasChildren()) {
53646 if (rowNode.childrenAfterGroup) {
53647 // if a changedPath is active, it means we are here because of a transaction update or
53648 // a change detection. neither of these impacts the open/closed state of groups. so if
53649 // a group is not open this time, it was not open last time. so we know all closed groups
53650 // already have their top positions cleared. so there is no need to traverse all the way
53651 // when changedPath is active and the rowNode is not expanded.
53652 var isRootNode = rowNode.level == -1; // we need to give special consideration for root node,
53653 // as expanded=undefined for root node
53654 var skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;
53655 if (!skipChildren) {
53656 rowNode.childrenAfterGroup.forEach(recurse);
53657 }
53658 }
53659 }
53660 };
53661 recurse(this.rootNode);
53662 };
53663 // returns false if row was moved, otherwise true
53664 ClientSideRowModel.prototype.ensureRowsAtPixel = function (rowNodes, pixel, increment) {
53665 var _this = this;
53666 if (increment === void 0) { increment = 0; }
53667 var indexAtPixelNow = this.getRowIndexAtPixel(pixel);
53668 var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);
53669 var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();
53670 if (rowNodeAtPixelNow === rowNodes[0]) {
53671 return false;
53672 }
53673 rowNodes.forEach(function (rowNode) {
53674 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].removeFromArray(_this.rootNode.allLeafChildren, rowNode);
53675 });
53676 rowNodes.forEach(function (rowNode, idx) {
53677 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].insertIntoArray(_this.rootNode.allLeafChildren, rowNode, Math.max(indexAtPixelNow + increment, 0) + idx);
53678 });
53679 this.refreshModel({
53680 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING,
53681 keepRenderedRows: true,
53682 keepEditingRows: true,
53683 animate: animate
53684 });
53685 return true;
53686 };
53687 ClientSideRowModel.prototype.highlightRowAtPixel = function (rowNode, pixel) {
53688 var indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;
53689 var rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;
53690 if (!rowNodeAtPixelNow || !rowNode || rowNodeAtPixelNow === rowNode || pixel == null) {
53691 if (this.lastHighlightedRow) {
53692 this.lastHighlightedRow.setHighlighted(null);
53693 this.lastHighlightedRow = null;
53694 }
53695 return;
53696 }
53697 var highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);
53698 if (this.lastHighlightedRow && this.lastHighlightedRow !== rowNodeAtPixelNow) {
53699 this.lastHighlightedRow.setHighlighted(null);
53700 this.lastHighlightedRow = null;
53701 }
53702 rowNodeAtPixelNow.setHighlighted(highlight);
53703 this.lastHighlightedRow = rowNodeAtPixelNow;
53704 };
53705 ClientSideRowModel.prototype.getHighlightPosition = function (pixel, rowNode) {
53706 if (!rowNode) {
53707 var index = this.getRowIndexAtPixel(pixel);
53708 rowNode = this.getRow(index || 0);
53709 if (!rowNode) {
53710 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowHighlightPosition"].Below;
53711 }
53712 }
53713 var rowTop = rowNode.rowTop, rowHeight = rowNode.rowHeight;
53714 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;
53715 };
53716 ClientSideRowModel.prototype.getLastHighlightedRowNode = function () {
53717 return this.lastHighlightedRow;
53718 };
53719 ClientSideRowModel.prototype.isLastRowIndexKnown = function () {
53720 return true;
53721 };
53722 ClientSideRowModel.prototype.getRowCount = function () {
53723 if (this.rowsToDisplay) {
53724 return this.rowsToDisplay.length;
53725 }
53726 return 0;
53727 };
53728 ClientSideRowModel.prototype.getTopLevelRowCount = function () {
53729 var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;
53730 if (showingRootNode) {
53731 return 1;
53732 }
53733 var filteredChildren = this.rootNode.childrenAfterAggFilter;
53734 return filteredChildren ? filteredChildren.length : 0;
53735 };
53736 ClientSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {
53737 var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;
53738 if (showingRootNode) {
53739 return topLevelIndex;
53740 }
53741 var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];
53742 if (this.gridOptionsWrapper.isGroupHideOpenParents()) {
53743 // if hideOpenParents, and this row open, then this row is now displayed at this index, first child is
53744 while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {
53745 rowNode = rowNode.childrenAfterSort[0];
53746 }
53747 }
53748 return rowNode.rowIndex;
53749 };
53750 ClientSideRowModel.prototype.getRowBounds = function (index) {
53751 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.rowsToDisplay)) {
53752 return null;
53753 }
53754 var rowNode = this.rowsToDisplay[index];
53755 if (rowNode) {
53756 return {
53757 rowTop: rowNode.rowTop,
53758 rowHeight: rowNode.rowHeight
53759 };
53760 }
53761 return null;
53762 };
53763 ClientSideRowModel.prototype.onRowGroupOpened = function () {
53764 var animate = this.gridOptionsWrapper.isAnimateRows();
53765 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP, keepRenderedRows: true, animate: animate });
53766 };
53767 ClientSideRowModel.prototype.onFilterChanged = function (event) {
53768 if (event.afterDataChange) {
53769 return;
53770 }
53771 var animate = this.gridOptionsWrapper.isAnimateRows();
53772 var primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some(function (col) { return col.isPrimary(); });
53773 var step = primaryOrQuickFilterChanged ? _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].FILTER : _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].FILTER_AGGREGATES;
53774 this.refreshModel({ step: step, keepRenderedRows: true, animate: animate });
53775 };
53776 ClientSideRowModel.prototype.onSortChanged = function () {
53777 var animate = this.gridOptionsWrapper.isAnimateRows();
53778 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });
53779 };
53780 ClientSideRowModel.prototype.getType = function () {
53781 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
53782 };
53783 ClientSideRowModel.prototype.onValueChanged = function () {
53784 if (this.columnModel.isPivotActive()) {
53785 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].PIVOT });
53786 }
53787 else {
53788 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].AGGREGATE });
53789 }
53790 };
53791 ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {
53792 // for updates, if the row is updated at all, then we re-calc all the values
53793 // in that row. we could compare each value to each old value, however if we
53794 // did this, we would be calling the valueService twice, once on the old value
53795 // and once on the new value. so it's less valueGetter calls if we just assume
53796 // each column is different. that way the changedPath is used so that only
53797 // the impacted parent rows are recalculated, parents who's children have
53798 // not changed are not impacted.
53799 var noTransactions = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(rowNodeTransactions);
53800 var changedPath = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ChangedPath"](false, this.rootNode);
53801 if (noTransactions || this.gridOptionsWrapper.isTreeData()) {
53802 changedPath.setInactive();
53803 }
53804 return changedPath;
53805 };
53806 ClientSideRowModel.prototype.isSuppressModelUpdateAfterUpdateTransaction = function (params) {
53807 if (!this.gridOptionsWrapper.isSuppressModelUpdateAfterUpdateTransaction()) {
53808 return false;
53809 }
53810 // return true if we are only doing update transactions
53811 if (params.rowNodeTransactions == null) {
53812 return false;
53813 }
53814 var transWithAddsOrDeletes = params.rowNodeTransactions.filter(function (tx) {
53815 return (tx.add != null && tx.add.length > 0) || (tx.remove != null && tx.remove.length > 0);
53816 });
53817 var transactionsContainUpdatesOnly = transWithAddsOrDeletes == null || transWithAddsOrDeletes.length == 0;
53818 return transactionsContainUpdatesOnly;
53819 };
53820 ClientSideRowModel.prototype.refreshModel = function (params) {
53821 if (this.isSuppressModelUpdateAfterUpdateTransaction(params)) {
53822 return;
53823 }
53824 // this goes through the pipeline of stages. what's in my head is similar
53825 // to the diagram on this page:
53826 // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html
53827 // however we want to keep the results of each stage, hence we manually call
53828 // each step rather than have them chain each other.
53829 // fallthrough in below switch is on purpose,
53830 // eg if STEP_FILTER, then all steps below this
53831 // step get done
53832 // let start: number;
53833 // console.log('======= start =======');
53834 var changedPath = this.createChangePath(params.rowNodeTransactions);
53835 switch (params.step) {
53836 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING:
53837 this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, !!params.afterColumnsChanged);
53838 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].FILTER:
53839 this.doFilter(changedPath);
53840 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].PIVOT:
53841 this.doPivot(changedPath);
53842 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].AGGREGATE: // depends on agg fields
53843 this.doAggregate(changedPath);
53844 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].FILTER_AGGREGATES:
53845 this.doFilterAggregates(changedPath);
53846 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].SORT:
53847 this.doSort(params.rowNodeTransactions, changedPath);
53848 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP:
53849 this.doRowsToDisplay();
53850 }
53851 // set all row tops to null, then set row tops on all visible rows. if we don't
53852 // do this, then the algorithm below only sets row tops, old row tops from old rows
53853 // will still lie around
53854 var displayedNodesMapped = this.setRowTopAndRowIndex();
53855 this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);
53856 var event = {
53857 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_MODEL_UPDATED,
53858 api: this.gridApi,
53859 columnApi: this.columnApi,
53860 animate: params.animate,
53861 keepRenderedRows: params.keepRenderedRows,
53862 newData: params.newData,
53863 newPage: false
53864 };
53865 this.eventService.dispatchEvent(event);
53866 };
53867 ClientSideRowModel.prototype.isEmpty = function () {
53868 var rowsMissing = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;
53869 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.rootNode) || rowsMissing || !this.columnModel.isReady();
53870 };
53871 ClientSideRowModel.prototype.isRowsToRender = function () {
53872 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;
53873 };
53874 ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {
53875 // if lastSelectedNode is missing, we start at the first row
53876 var firstRowHit = !lastInRange;
53877 var lastRowHit = false;
53878 var lastRow;
53879 var result = [];
53880 var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();
53881 this.forEachNodeAfterFilterAndSort(function (rowNode) {
53882 var lookingForLastRow = firstRowHit && !lastRowHit;
53883 // check if we need to flip the select switch
53884 if (!firstRowHit) {
53885 if (rowNode === lastInRange || rowNode === firstInRange) {
53886 firstRowHit = true;
53887 }
53888 }
53889 var skipThisGroupNode = rowNode.group && groupsSelectChildren;
53890 if (!skipThisGroupNode) {
53891 var inRange = firstRowHit && !lastRowHit;
53892 var childOfLastRow = rowNode.isParentOfNode(lastRow);
53893 if (inRange || childOfLastRow) {
53894 result.push(rowNode);
53895 }
53896 }
53897 if (lookingForLastRow) {
53898 if (rowNode === lastInRange || rowNode === firstInRange) {
53899 lastRowHit = true;
53900 if (rowNode === lastInRange) {
53901 lastRow = lastInRange;
53902 }
53903 else {
53904 lastRow = firstInRange;
53905 }
53906 }
53907 }
53908 });
53909 return result;
53910 };
53911 ClientSideRowModel.prototype.setDatasource = function (datasource) {
53912 console.error('AG Grid: should never call setDatasource on clientSideRowController');
53913 };
53914 ClientSideRowModel.prototype.getTopLevelNodes = function () {
53915 return this.rootNode ? this.rootNode.childrenAfterGroup : null;
53916 };
53917 ClientSideRowModel.prototype.getRootNode = function () {
53918 return this.rootNode;
53919 };
53920 ClientSideRowModel.prototype.getRow = function (index) {
53921 return this.rowsToDisplay[index];
53922 };
53923 ClientSideRowModel.prototype.isRowPresent = function (rowNode) {
53924 return this.rowsToDisplay.indexOf(rowNode) >= 0;
53925 };
53926 ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {
53927 if (this.isEmpty()) {
53928 return -1;
53929 }
53930 // do binary search of tree
53931 // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/
53932 var bottomPointer = 0;
53933 var topPointer = this.rowsToDisplay.length - 1;
53934 // quick check, if the pixel is out of bounds, then return last row
53935 if (pixelToMatch <= 0) {
53936 // if pixel is less than or equal zero, it's always the first row
53937 return 0;
53938 }
53939 var lastNode = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].last(this.rowsToDisplay);
53940 if (lastNode.rowTop <= pixelToMatch) {
53941 return this.rowsToDisplay.length - 1;
53942 }
53943 while (true) {
53944 var midPointer = Math.floor((bottomPointer + topPointer) / 2);
53945 var currentRowNode = this.rowsToDisplay[midPointer];
53946 if (this.isRowInPixel(currentRowNode, pixelToMatch)) {
53947 return midPointer;
53948 }
53949 if (currentRowNode.rowTop < pixelToMatch) {
53950 bottomPointer = midPointer + 1;
53951 }
53952 else if (currentRowNode.rowTop > pixelToMatch) {
53953 topPointer = midPointer - 1;
53954 }
53955 }
53956 };
53957 ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {
53958 var topPixel = rowNode.rowTop;
53959 var bottomPixel = rowNode.rowTop + rowNode.rowHeight;
53960 var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;
53961 return pixelInRow;
53962 };
53963 ClientSideRowModel.prototype.forEachLeafNode = function (callback) {
53964 if (this.rootNode.allLeafChildren) {
53965 this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });
53966 }
53967 };
53968 ClientSideRowModel.prototype.forEachNode = function (callback) {
53969 this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);
53970 };
53971 ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback) {
53972 this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterAggFilter, callback, RecursionType.AfterFilter, 0);
53973 };
53974 ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {
53975 this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);
53976 };
53977 ClientSideRowModel.prototype.forEachPivotNode = function (callback) {
53978 this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);
53979 };
53980 // iterates through each item in memory, and calls the callback function
53981 // nodes - the rowNodes to traverse
53982 // callback - the user provided callback
53983 // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc
53984 // index - works similar to the index in forEach in javascript's array function
53985 ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {
53986 if (!nodes) {
53987 return index;
53988 }
53989 for (var i = 0; i < nodes.length; i++) {
53990 var node = nodes[i];
53991 callback(node, index++);
53992 // go to the next level if it is a group
53993 if (node.hasChildren()) {
53994 // depending on the recursion type, we pick a difference set of children
53995 var nodeChildren = null;
53996 switch (recursionType) {
53997 case RecursionType.Normal:
53998 nodeChildren = node.childrenAfterGroup;
53999 break;
54000 case RecursionType.AfterFilter:
54001 nodeChildren = node.childrenAfterAggFilter;
54002 break;
54003 case RecursionType.AfterFilterAndSort:
54004 nodeChildren = node.childrenAfterSort;
54005 break;
54006 case RecursionType.PivotNodes:
54007 // for pivot, we don't go below leafGroup levels
54008 nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;
54009 break;
54010 }
54011 if (nodeChildren) {
54012 index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);
54013 }
54014 }
54015 }
54016 return index;
54017 };
54018 // it's possible to recompute the aggregate without doing the other parts
54019 // + gridApi.recomputeAggregates()
54020 ClientSideRowModel.prototype.doAggregate = function (changedPath) {
54021 if (this.aggregationStage) {
54022 this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });
54023 }
54024 };
54025 ClientSideRowModel.prototype.doFilterAggregates = function (changedPath) {
54026 if (this.filterAggregatesStage) {
54027 this.filterAggregatesStage.execute({ rowNode: this.rootNode, changedPath: changedPath });
54028 }
54029 else {
54030 // If filterAggregatesStage is undefined, then so is the grouping stage, so all children should be on the rootNode.
54031 this.rootNode.childrenAfterAggFilter = this.rootNode.childrenAfterFilter;
54032 }
54033 };
54034 // + gridApi.expandAll()
54035 // + gridApi.collapseAll()
54036 ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {
54037 var usingTreeData = this.gridOptionsWrapper.isTreeData();
54038 var usingPivotMode = this.columnModel.isPivotActive();
54039 var recursiveExpandOrCollapse = function (rowNodes) {
54040 if (!rowNodes) {
54041 return;
54042 }
54043 rowNodes.forEach(function (rowNode) {
54044 var actionRow = function () {
54045 rowNode.expanded = expand;
54046 recursiveExpandOrCollapse(rowNode.childrenAfterGroup);
54047 };
54048 if (usingTreeData) {
54049 var hasChildren = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(rowNode.childrenAfterGroup);
54050 if (hasChildren) {
54051 actionRow();
54052 }
54053 return;
54054 }
54055 if (usingPivotMode) {
54056 var notLeafGroup = !rowNode.leafGroup;
54057 if (notLeafGroup) {
54058 actionRow();
54059 }
54060 return;
54061 }
54062 var isRowGroup = rowNode.group;
54063 if (isRowGroup) {
54064 actionRow();
54065 }
54066 });
54067 };
54068 if (this.rootNode) {
54069 recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);
54070 }
54071 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP });
54072 var eventSource = expand ? 'expandAll' : 'collapseAll';
54073 var event = {
54074 api: this.gridApi,
54075 columnApi: this.columnApi,
54076 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_EXPAND_COLLAPSE_ALL,
54077 source: eventSource
54078 };
54079 this.eventService.dispatchEvent(event);
54080 };
54081 ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {
54082 this.sortStage.execute({
54083 rowNode: this.rootNode,
54084 rowNodeTransactions: rowNodeTransactions,
54085 changedPath: changedPath
54086 });
54087 };
54088 ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {
54089 if (this.groupStage) {
54090 if (rowNodeTransactions) {
54091 this.groupStage.execute({
54092 rowNode: this.rootNode,
54093 rowNodeTransactions: rowNodeTransactions,
54094 rowNodeOrder: rowNodeOrder,
54095 changedPath: changedPath
54096 });
54097 }
54098 else {
54099 this.groupStage.execute({
54100 rowNode: this.rootNode,
54101 changedPath: changedPath,
54102 afterColumnsChanged: afterColumnsChanged
54103 });
54104 // set open/closed state on groups
54105 this.restoreGroupState(groupState);
54106 }
54107 if (this.gridOptionsWrapper.isGroupSelectsChildren()) {
54108 this.selectionService.updateGroupsFromChildrenSelections(changedPath);
54109 }
54110 }
54111 else {
54112 this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;
54113 if (this.rootNode.sibling) {
54114 this.rootNode.sibling.childrenAfterGroup = this.rootNode.childrenAfterGroup;
54115 }
54116 this.rootNode.updateHasChildren();
54117 }
54118 };
54119 ClientSideRowModel.prototype.restoreGroupState = function (groupState) {
54120 if (!groupState) {
54121 return;
54122 }
54123 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {
54124 // if the group was open last time, then open it this time. however
54125 // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'
54126 // setting will take effect.
54127 if (typeof groupState[key] === 'boolean') {
54128 node.expanded = groupState[key];
54129 }
54130 });
54131 };
54132 ClientSideRowModel.prototype.doFilter = function (changedPath) {
54133 this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });
54134 };
54135 ClientSideRowModel.prototype.doPivot = function (changedPath) {
54136 if (this.pivotStage) {
54137 this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });
54138 }
54139 };
54140 ClientSideRowModel.prototype.getGroupState = function () {
54141 if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {
54142 return null;
54143 }
54144 var result = {};
54145 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });
54146 return result;
54147 };
54148 ClientSideRowModel.prototype.getCopyOfNodesMap = function () {
54149 return this.nodeManager.getCopyOfNodesMap();
54150 };
54151 ClientSideRowModel.prototype.getRowNode = function (id) {
54152 // although id is typed a string, this could be called by the user, and they could have passed a number
54153 var idIsGroup = typeof id == 'string' && id.indexOf(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"].ID_PREFIX_ROW_GROUP) == 0;
54154 if (idIsGroup) {
54155 // only one users complained about getRowNode not working for groups, after years of
54156 // this working for normal rows. so have done quick implementation. if users complain
54157 // about performance, then GroupStage should store / manage created groups in a map,
54158 // which is a chunk of work.
54159 var res_1 = undefined;
54160 this.forEachNode(function (node) {
54161 if (node.id === id) {
54162 res_1 = node;
54163 }
54164 });
54165 return res_1;
54166 }
54167 return this.nodeManager.getRowNode(id);
54168 };
54169 // rows: the rows to put into the model
54170 ClientSideRowModel.prototype.setRowData = function (rowData) {
54171 // no need to invalidate cache, as the cache is stored on the rowNode,
54172 // so new rowNodes means the cache is wiped anyway.
54173 // remember group state, so we can expand groups that should be expanded
54174 var groupState = this.getGroupState();
54175 this.nodeManager.setRowData(rowData);
54176 // - clears selection
54177 this.selectionService.reset();
54178 // - updates filters
54179 this.filterManager.onNewRowsLoaded('rowDataUpdated');
54180 // this event kicks off:
54181 // - shows 'no rows' overlay if needed
54182 var rowDataChangedEvent = {
54183 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ROW_DATA_CHANGED,
54184 api: this.gridApi,
54185 columnApi: this.columnApi
54186 };
54187 this.eventService.dispatchEvent(rowDataChangedEvent);
54188 this.refreshModel({
54189 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING,
54190 groupState: groupState,
54191 newData: true
54192 });
54193 };
54194 ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {
54195 var _this = this;
54196 if (this.applyAsyncTransactionsTimeout == null) {
54197 this.rowDataTransactionBatch = [];
54198 var waitMillis = this.gridOptionsWrapper.getAsyncTransactionWaitMillis();
54199 this.applyAsyncTransactionsTimeout = window.setTimeout(function () {
54200 _this.executeBatchUpdateRowData();
54201 }, waitMillis);
54202 }
54203 this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });
54204 };
54205 ClientSideRowModel.prototype.flushAsyncTransactions = function () {
54206 if (this.applyAsyncTransactionsTimeout != null) {
54207 clearTimeout(this.applyAsyncTransactionsTimeout);
54208 this.executeBatchUpdateRowData();
54209 }
54210 };
54211 ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {
54212 var _this = this;
54213 this.valueCache.onDataChanged();
54214 var callbackFuncsBound = [];
54215 var rowNodeTrans = [];
54216 // The rowGroup stage uses rowNodeOrder if order was provided. if we didn't pass 'true' to
54217 // commonUpdateRowData, using addIndex would have no effect when grouping.
54218 var forceRowNodeOrder = false;
54219 if (this.rowDataTransactionBatch) {
54220 this.rowDataTransactionBatch.forEach(function (tranItem) {
54221 var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, undefined);
54222 rowNodeTrans.push(rowNodeTran);
54223 if (tranItem.callback) {
54224 callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));
54225 }
54226 if (typeof tranItem.rowDataTransaction.addIndex === 'number') {
54227 forceRowNodeOrder = true;
54228 }
54229 });
54230 }
54231 this.commonUpdateRowData(rowNodeTrans, undefined, forceRowNodeOrder);
54232 // do callbacks in next VM turn so it's async
54233 if (callbackFuncsBound.length > 0) {
54234 window.setTimeout(function () {
54235 callbackFuncsBound.forEach(function (func) { return func(); });
54236 }, 0);
54237 }
54238 if (rowNodeTrans.length > 0) {
54239 var event_1 = {
54240 api: this.gridOptionsWrapper.getApi(),
54241 columnApi: this.gridOptionsWrapper.getColumnApi(),
54242 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ASYNC_TRANSACTIONS_FLUSHED,
54243 results: rowNodeTrans
54244 };
54245 this.eventService.dispatchEvent(event_1);
54246 }
54247 this.rowDataTransactionBatch = null;
54248 this.applyAsyncTransactionsTimeout = undefined;
54249 };
54250 ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {
54251 this.valueCache.onDataChanged();
54252 var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);
54253 // if doing immutableData, addIndex is never present. however if doing standard transaction, and user
54254 // provided addIndex, then this is used in updateRowData. However if doing Enterprise, then the rowGroup
54255 // stage also uses the
54256 var forceRowNodeOrder = typeof rowDataTran.addIndex === 'number';
54257 this.commonUpdateRowData([rowNodeTran], rowNodeOrder, forceRowNodeOrder);
54258 return rowNodeTran;
54259 };
54260 ClientSideRowModel.prototype.createRowNodeOrder = function () {
54261 var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();
54262 if (suppressSortOrder) {
54263 return;
54264 }
54265 var orderMap = {};
54266 if (this.rootNode && this.rootNode.allLeafChildren) {
54267 for (var index = 0; index < this.rootNode.allLeafChildren.length; index++) {
54268 var node = this.rootNode.allLeafChildren[index];
54269 orderMap[node.id] = index;
54270 }
54271 }
54272 return orderMap;
54273 };
54274 // common to updateRowData and batchUpdateRowData
54275 ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder, forceRowNodeOrder) {
54276 var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();
54277 if (forceRowNodeOrder) {
54278 rowNodeOrder = this.createRowNodeOrder();
54279 }
54280 this.refreshModel({
54281 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING,
54282 rowNodeTransactions: rowNodeTrans,
54283 rowNodeOrder: rowNodeOrder,
54284 keepRenderedRows: true,
54285 keepEditingRows: true,
54286 animate: animate
54287 });
54288 var event = {
54289 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ROW_DATA_UPDATED,
54290 api: this.gridApi,
54291 columnApi: this.columnApi
54292 };
54293 this.eventService.dispatchEvent(event);
54294 };
54295 ClientSideRowModel.prototype.doRowsToDisplay = function () {
54296 this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });
54297 };
54298 ClientSideRowModel.prototype.onRowHeightChanged = function () {
54299 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP, keepRenderedRows: true, keepEditingRows: true });
54300 };
54301 ClientSideRowModel.prototype.resetRowHeights = function () {
54302 var atLeastOne = false;
54303 this.forEachNode(function (rowNode) {
54304 rowNode.setRowHeight(rowNode.rowHeight, true);
54305 // we keep the height each row is at, however we set estimated=true rather than clear the height.
54306 // this means the grid will not reset the row heights back to defaults, rather it will re-calc
54307 // the height for each row as the row is displayed. otherwise the scroll will jump when heights are reset.
54308 var detailNode = rowNode.detailNode;
54309 if (detailNode) {
54310 detailNode.setRowHeight(detailNode.rowHeight, true);
54311 }
54312 atLeastOne = true;
54313 });
54314 if (atLeastOne) {
54315 this.onRowHeightChanged();
54316 }
54317 };
54318 __decorate([
54319 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
54320 ], ClientSideRowModel.prototype, "columnModel", void 0);
54321 __decorate([
54322 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('selectionService')
54323 ], ClientSideRowModel.prototype, "selectionService", void 0);
54324 __decorate([
54325 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
54326 ], ClientSideRowModel.prototype, "filterManager", void 0);
54327 __decorate([
54328 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueCache')
54329 ], ClientSideRowModel.prototype, "valueCache", void 0);
54330 __decorate([
54331 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
54332 ], ClientSideRowModel.prototype, "columnApi", void 0);
54333 __decorate([
54334 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
54335 ], ClientSideRowModel.prototype, "gridApi", void 0);
54336 __decorate([
54337 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('animationFrameService')
54338 ], ClientSideRowModel.prototype, "animationFrameService", void 0);
54339 __decorate([
54340 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('beans')
54341 ], ClientSideRowModel.prototype, "beans", void 0);
54342 __decorate([
54343 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterStage')
54344 ], ClientSideRowModel.prototype, "filterStage", void 0);
54345 __decorate([
54346 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortStage')
54347 ], ClientSideRowModel.prototype, "sortStage", void 0);
54348 __decorate([
54349 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('flattenStage')
54350 ], ClientSideRowModel.prototype, "flattenStage", void 0);
54351 __decorate([
54352 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Optional"])('groupStage')
54353 ], ClientSideRowModel.prototype, "groupStage", void 0);
54354 __decorate([
54355 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Optional"])('aggregationStage')
54356 ], ClientSideRowModel.prototype, "aggregationStage", void 0);
54357 __decorate([
54358 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Optional"])('pivotStage')
54359 ], ClientSideRowModel.prototype, "pivotStage", void 0);
54360 __decorate([
54361 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Optional"])('filterAggregatesStage')
54362 ], ClientSideRowModel.prototype, "filterAggregatesStage", void 0);
54363 __decorate([
54364 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
54365 ], ClientSideRowModel.prototype, "init", null);
54366 ClientSideRowModel = __decorate([
54367 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('rowModel')
54368 ], ClientSideRowModel);
54369 return ClientSideRowModel;
54370}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
54371
54372
54373
54374/***/ }),
54375/* 252 */
54376/***/ (function(module, __webpack_exports__, __webpack_require__) {
54377
54378"use strict";
54379__webpack_require__.r(__webpack_exports__);
54380/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideNodeManager", function() { return ClientSideNodeManager; });
54381/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54382var __read = (undefined && undefined.__read) || function (o, n) {
54383 var m = typeof Symbol === "function" && o[Symbol.iterator];
54384 if (!m) return o;
54385 var i = m.call(o), r, ar = [], e;
54386 try {
54387 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
54388 }
54389 catch (error) { e = { error: error }; }
54390 finally {
54391 try {
54392 if (r && !r.done && (m = i["return"])) m.call(i);
54393 }
54394 finally { if (e) throw e.error; }
54395 }
54396 return ar;
54397};
54398var __spread = (undefined && undefined.__spread) || function () {
54399 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
54400 return ar;
54401};
54402
54403var ClientSideNodeManager = /** @class */ (function () {
54404 function ClientSideNodeManager(rootNode, gridOptionsWrapper, eventService, columnModel, gridApi, columnApi, selectionService, beans) {
54405 this.nextId = 0;
54406 // when user is provide the id's, we also keep a map of ids to row nodes for convenience
54407 this.allNodesMap = {};
54408 this.rootNode = rootNode;
54409 this.gridOptionsWrapper = gridOptionsWrapper;
54410 this.eventService = eventService;
54411 this.columnModel = columnModel;
54412 this.gridApi = gridApi;
54413 this.columnApi = columnApi;
54414 this.beans = beans;
54415 this.selectionService = selectionService;
54416 this.rootNode.group = true;
54417 this.rootNode.level = -1;
54418 this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;
54419 this.rootNode.allLeafChildren = [];
54420 this.rootNode.childrenAfterGroup = [];
54421 this.rootNode.childrenAfterSort = [];
54422 this.rootNode.childrenAfterAggFilter = [];
54423 this.rootNode.childrenAfterFilter = [];
54424 // if we make this class a bean, then can annotate postConstruct
54425 this.postConstruct();
54426 }
54427 // @PostConstruct - this is not a bean, so postConstruct called by constructor
54428 ClientSideNodeManager.prototype.postConstruct = function () {
54429 // func below doesn't have 'this' pointer, so need to pull out these bits
54430 this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();
54431 this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();
54432 this.doingTreeData = this.gridOptionsWrapper.isTreeData();
54433 this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();
54434 };
54435 ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {
54436 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].cloneObject(this.allNodesMap);
54437 };
54438 ClientSideNodeManager.prototype.getRowNode = function (id) {
54439 return this.allNodesMap[id];
54440 };
54441 ClientSideNodeManager.prototype.setRowData = function (rowData) {
54442 var _this = this;
54443 if (typeof rowData === 'string') {
54444 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');
54445 return;
54446 }
54447 var rootNode = this.rootNode;
54448 var sibling = this.rootNode.sibling;
54449 rootNode.childrenAfterFilter = null;
54450 rootNode.childrenAfterGroup = null;
54451 rootNode.childrenAfterAggFilter = null;
54452 rootNode.childrenAfterSort = null;
54453 rootNode.childrenMapped = null;
54454 rootNode.updateHasChildren();
54455 this.nextId = 0;
54456 this.allNodesMap = {};
54457 if (rowData) {
54458 // we use rootNode as the parent, however if using ag-grid-enterprise, the grouping stage
54459 // sets the parent node on each row (even if we are not grouping). so setting parent node
54460 // here is for benefit of ag-grid-community users
54461 rootNode.allLeafChildren = rowData.map(function (dataItem) { return _this.createNode(dataItem, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });
54462 }
54463 else {
54464 rootNode.allLeafChildren = [];
54465 rootNode.childrenAfterGroup = [];
54466 }
54467 if (sibling) {
54468 sibling.childrenAfterFilter = rootNode.childrenAfterFilter;
54469 sibling.childrenAfterGroup = rootNode.childrenAfterGroup;
54470 sibling.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;
54471 sibling.childrenAfterSort = rootNode.childrenAfterSort;
54472 sibling.childrenMapped = rootNode.childrenMapped;
54473 sibling.allLeafChildren = rootNode.allLeafChildren;
54474 }
54475 };
54476 ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {
54477 var rowNodeTransaction = {
54478 remove: [],
54479 update: [],
54480 add: []
54481 };
54482 var nodesToUnselect = [];
54483 this.executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect);
54484 this.executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect);
54485 this.executeAdd(rowDataTran, rowNodeTransaction);
54486 this.updateSelection(nodesToUnselect);
54487 if (rowNodeOrder) {
54488 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);
54489 }
54490 return rowNodeTransaction;
54491 };
54492 ClientSideNodeManager.prototype.updateSelection = function (nodesToUnselect) {
54493 var selectionChanged = nodesToUnselect.length > 0;
54494 if (selectionChanged) {
54495 nodesToUnselect.forEach(function (rowNode) {
54496 rowNode.setSelected(false, false, true);
54497 });
54498 }
54499 // we do this regardless of nodes to unselect or not, as it's possible
54500 // a new node was inserted, so a parent that was previously selected (as all
54501 // children were selected) should not be tri-state (as new one unselected against
54502 // all other selected children).
54503 this.selectionService.updateGroupsFromChildrenSelections();
54504 if (selectionChanged) {
54505 var event_1 = {
54506 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SELECTION_CHANGED,
54507 api: this.gridApi,
54508 columnApi: this.columnApi
54509 };
54510 this.eventService.dispatchEvent(event_1);
54511 }
54512 };
54513 ClientSideNodeManager.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {
54514 var _this = this;
54515 var add = rowDataTran.add, addIndex = rowDataTran.addIndex;
54516 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(add)) {
54517 return;
54518 }
54519 // create new row nodes for each data item
54520 var newNodes = add.map(function (item) { return _this.createNode(item, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });
54521 // add new row nodes to the root nodes 'allLeafChildren'
54522 var useIndex = typeof addIndex === 'number' && addIndex >= 0;
54523 var nodesBeforeIndex;
54524 var nodesAfterIndex;
54525 if (useIndex) {
54526 // new rows are inserted in one go by concatenating them in between the existing rows at the desired index.
54527 // this is much faster than splicing them individually into 'allLeafChildren' when there are large inserts.
54528 // allLeafChildren can be out of order, so we loop over all the Nodes to find the correct index that
54529 // represents the position `addIndex` intended to be.
54530 var allLeafChildren_1 = this.rootNode.allLeafChildren;
54531 // if addIndex is 0, it should always be added at the start of the array
54532 // there is no need to verify the order of node by nodeIndex.
54533 var normalizedAddIndex = addIndex === 0 ? 0 : (allLeafChildren_1.reduce(function (prevIdx, currNode, currIdx) {
54534 var _a;
54535 var rowIndex = currNode.rowIndex;
54536 var prevValueAtIndex = (_a = allLeafChildren_1[prevIdx]) === null || _a === void 0 ? void 0 : _a.rowIndex;
54537 var shouldUpdateIndex = rowIndex != null && prevValueAtIndex != null && rowIndex < addIndex && rowIndex > prevValueAtIndex;
54538 return shouldUpdateIndex ? currIdx : prevIdx;
54539 }, 0) + 1);
54540 nodesBeforeIndex = allLeafChildren_1.slice(0, normalizedAddIndex);
54541 nodesAfterIndex = allLeafChildren_1.slice(normalizedAddIndex, allLeafChildren_1.length);
54542 }
54543 else {
54544 nodesBeforeIndex = this.rootNode.allLeafChildren;
54545 nodesAfterIndex = [];
54546 }
54547 this.rootNode.allLeafChildren = __spread(nodesBeforeIndex, newNodes, nodesAfterIndex);
54548 if (this.rootNode.sibling) {
54549 this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;
54550 }
54551 // add new row nodes to the transaction add items
54552 rowNodeTransaction.add = newNodes;
54553 };
54554 ClientSideNodeManager.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {
54555 var _this = this;
54556 var remove = rowDataTran.remove;
54557 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(remove)) {
54558 return;
54559 }
54560 var rowIdsRemoved = {};
54561 remove.forEach(function (item) {
54562 var rowNode = _this.lookupRowNode(item);
54563 if (!rowNode) {
54564 return;
54565 }
54566 // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for
54567 // each row node updated, instead it is raised once by the calling code if any selected nodes exist.
54568 if (rowNode.isSelected()) {
54569 nodesToUnselect.push(rowNode);
54570 }
54571 // so row renderer knows to fade row out (and not reposition it)
54572 rowNode.clearRowTopAndRowIndex();
54573 // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially
54574 // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list
54575 rowIdsRemoved[rowNode.id] = true;
54576 // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);
54577 delete _this.allNodesMap[rowNode.id];
54578 rowNodeTransaction.remove.push(rowNode);
54579 });
54580 this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });
54581 if (this.rootNode.sibling) {
54582 this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;
54583 }
54584 };
54585 ClientSideNodeManager.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {
54586 var _this = this;
54587 var update = rowDataTran.update;
54588 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(update)) {
54589 return;
54590 }
54591 update.forEach(function (item) {
54592 var rowNode = _this.lookupRowNode(item);
54593 if (!rowNode) {
54594 return;
54595 }
54596 rowNode.updateData(item);
54597 if (!rowNode.selectable && rowNode.isSelected()) {
54598 nodesToUnselect.push(rowNode);
54599 }
54600 _this.setMasterForRow(rowNode, item, ClientSideNodeManager.TOP_LEVEL, false);
54601 rowNodeTransaction.update.push(rowNode);
54602 });
54603 };
54604 ClientSideNodeManager.prototype.lookupRowNode = function (data) {
54605 var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();
54606 var rowNode;
54607 if (getRowIdFunc) {
54608 // find rowNode using id
54609 var id = getRowIdFunc({ data: data, level: 0 });
54610 rowNode = this.allNodesMap[id];
54611 if (!rowNode) {
54612 console.error("AG Grid: could not find row id=" + id + ", data item was not found for this id");
54613 return null;
54614 }
54615 }
54616 else {
54617 // find rowNode using object references
54618 rowNode = this.rootNode.allLeafChildren.find(function (node) { return node.data === data; });
54619 if (!rowNode) {
54620 console.error("AG Grid: could not find data item as object was not found", data);
54621 console.error("Consider using getRowId to help the Grid find matching row data");
54622 return null;
54623 }
54624 }
54625 return rowNode || null;
54626 };
54627 ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {
54628 var node = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
54629 node.group = false;
54630 this.setMasterForRow(node, dataItem, level, true);
54631 if (parent && !this.suppressParentsInRowNodes) {
54632 node.parent = parent;
54633 }
54634 node.level = level;
54635 node.setDataAndId(dataItem, this.nextId.toString());
54636 if (this.allNodesMap[node.id]) {
54637 console.warn("AG Grid: duplicate node id '" + node.id + "' detected from getRowId callback, this could cause issues in your grid.");
54638 }
54639 this.allNodesMap[node.id] = node;
54640 this.nextId++;
54641 return node;
54642 };
54643 ClientSideNodeManager.prototype.setMasterForRow = function (rowNode, data, level, setExpanded) {
54644 if (this.doingTreeData) {
54645 rowNode.setMaster(false);
54646 if (setExpanded) {
54647 rowNode.expanded = false;
54648 }
54649 }
54650 else {
54651 // this is the default, for when doing grid data
54652 if (this.doingMasterDetail) {
54653 // if we are doing master detail, then the
54654 // default is that everything can be a Master Row.
54655 if (this.isRowMasterFunc) {
54656 rowNode.setMaster(this.isRowMasterFunc(data));
54657 }
54658 else {
54659 rowNode.setMaster(true);
54660 }
54661 }
54662 else {
54663 rowNode.setMaster(false);
54664 }
54665 if (setExpanded) {
54666 var rowGroupColumns = this.columnModel.getRowGroupColumns();
54667 var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;
54668 // need to take row group into account when determining level
54669 var masterRowLevel = level + numRowGroupColumns;
54670 rowNode.expanded = rowNode.master ? this.isExpanded(masterRowLevel) : false;
54671 }
54672 }
54673 };
54674 ClientSideNodeManager.prototype.isExpanded = function (level) {
54675 var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();
54676 if (expandByDefault === -1) {
54677 return true;
54678 }
54679 return level < expandByDefault;
54680 };
54681 ClientSideNodeManager.TOP_LEVEL = 0;
54682 ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';
54683 return ClientSideNodeManager;
54684}());
54685
54686
54687
54688/***/ }),
54689/* 253 */
54690/***/ (function(module, __webpack_exports__, __webpack_require__) {
54691
54692"use strict";
54693__webpack_require__.r(__webpack_exports__);
54694/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterStage", function() { return FilterStage; });
54695/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54696var __extends = (undefined && undefined.__extends) || (function () {
54697 var extendStatics = function (d, b) {
54698 extendStatics = Object.setPrototypeOf ||
54699 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
54700 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
54701 return extendStatics(d, b);
54702 };
54703 return function (d, b) {
54704 extendStatics(d, b);
54705 function __() { this.constructor = d; }
54706 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54707 };
54708})();
54709var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
54710 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54711 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54712 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;
54713 return c > 3 && r && Object.defineProperty(target, key, r), r;
54714};
54715
54716var FilterStage = /** @class */ (function (_super) {
54717 __extends(FilterStage, _super);
54718 function FilterStage() {
54719 return _super !== null && _super.apply(this, arguments) || this;
54720 }
54721 FilterStage.prototype.execute = function (params) {
54722 var changedPath = params.changedPath;
54723 this.filterService.filter(changedPath);
54724 };
54725 __decorate([
54726 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterService')
54727 ], FilterStage.prototype, "filterService", void 0);
54728 FilterStage = __decorate([
54729 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('filterStage')
54730 ], FilterStage);
54731 return FilterStage;
54732}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
54733
54734
54735
54736/***/ }),
54737/* 254 */
54738/***/ (function(module, __webpack_exports__, __webpack_require__) {
54739
54740"use strict";
54741__webpack_require__.r(__webpack_exports__);
54742/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortStage", function() { return SortStage; });
54743/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54744var __extends = (undefined && undefined.__extends) || (function () {
54745 var extendStatics = function (d, b) {
54746 extendStatics = Object.setPrototypeOf ||
54747 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
54748 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
54749 return extendStatics(d, b);
54750 };
54751 return function (d, b) {
54752 extendStatics(d, b);
54753 function __() { this.constructor = d; }
54754 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54755 };
54756})();
54757var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
54758 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54759 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54760 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;
54761 return c > 3 && r && Object.defineProperty(target, key, r), r;
54762};
54763
54764var SortStage = /** @class */ (function (_super) {
54765 __extends(SortStage, _super);
54766 function SortStage() {
54767 return _super !== null && _super.apply(this, arguments) || this;
54768 }
54769 SortStage.prototype.execute = function (params) {
54770 var sortOptions = this.sortController.getSortOptions();
54771 var sortActive = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(sortOptions) && sortOptions.length > 0;
54772 var deltaSort = sortActive
54773 && _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(params.rowNodeTransactions)
54774 // in time we can remove this check, so that delta sort is always
54775 // on if transactions are present. it's off for now so that we can
54776 // selectively turn it on and test it with some select users before
54777 // rolling out to everyone.
54778 && this.gridOptionsWrapper.isDeltaSort();
54779 var sortContainsGroupColumns = sortOptions.some(function (opt) { return !!opt.column.getColDef().showRowGroup; });
54780 this.sortService.sort(sortOptions, sortActive, deltaSort, params.rowNodeTransactions, params.changedPath, sortContainsGroupColumns);
54781 };
54782 __decorate([
54783 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortService')
54784 ], SortStage.prototype, "sortService", void 0);
54785 __decorate([
54786 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortController')
54787 ], SortStage.prototype, "sortController", void 0);
54788 __decorate([
54789 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
54790 ], SortStage.prototype, "columnModel", void 0);
54791 SortStage = __decorate([
54792 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('sortStage')
54793 ], SortStage);
54794 return SortStage;
54795}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
54796
54797
54798
54799/***/ }),
54800/* 255 */
54801/***/ (function(module, __webpack_exports__, __webpack_require__) {
54802
54803"use strict";
54804__webpack_require__.r(__webpack_exports__);
54805/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FlattenStage", function() { return FlattenStage; });
54806/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54807var __extends = (undefined && undefined.__extends) || (function () {
54808 var extendStatics = function (d, b) {
54809 extendStatics = Object.setPrototypeOf ||
54810 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
54811 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
54812 return extendStatics(d, b);
54813 };
54814 return function (d, b) {
54815 extendStatics(d, b);
54816 function __() { this.constructor = d; }
54817 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54818 };
54819})();
54820var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
54821 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54822 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54823 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;
54824 return c > 3 && r && Object.defineProperty(target, key, r), r;
54825};
54826
54827var FlattenStage = /** @class */ (function (_super) {
54828 __extends(FlattenStage, _super);
54829 function FlattenStage() {
54830 return _super !== null && _super.apply(this, arguments) || this;
54831 }
54832 FlattenStage.prototype.execute = function (params) {
54833 var rootNode = params.rowNode;
54834 // even if not doing grouping, we do the mapping, as the client might
54835 // of passed in data that already has a grouping in it somewhere
54836 var result = [];
54837 // putting value into a wrapper so it's passed by reference
54838 var nextRowTop = { value: 0 };
54839 var skipLeafNodes = this.columnModel.isPivotMode();
54840 // if we are reducing, and not grouping, then we want to show the root node, as that
54841 // is where the pivot values are
54842 var showRootNode = skipLeafNodes && rootNode.leafGroup;
54843 var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;
54844 this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);
54845 // we do not want the footer total if the gris is empty
54846 var atLeastOneRowPresent = result.length > 0;
54847 var includeGroupTotalFooter = !showRootNode
54848 // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)
54849 && atLeastOneRowPresent
54850 && this.gridOptionsWrapper.isGroupIncludeTotalFooter();
54851 if (includeGroupTotalFooter) {
54852 this.ensureFooterNodeExists(rootNode);
54853 this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);
54854 }
54855 return result;
54856 };
54857 FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {
54858 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(rowsToFlatten)) {
54859 return;
54860 }
54861 var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();
54862 // these two are mutually exclusive, so if first set, we don't set the second
54863 var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();
54864 var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();
54865 for (var i = 0; i < rowsToFlatten.length; i++) {
54866 var rowNode = rowsToFlatten[i];
54867 // check all these cases, for working out if this row should be included in the final mapped list
54868 var isParent = rowNode.hasChildren();
54869 var isSkippedLeafNode = skipLeafNodes && !isParent;
54870 var isRemovedSingleChildrenGroup = groupRemoveSingleChildren &&
54871 isParent &&
54872 rowNode.childrenAfterGroup.length === 1;
54873 var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren &&
54874 isParent &&
54875 rowNode.leafGroup &&
54876 rowNode.childrenAfterGroup.length === 1;
54877 // hide open parents means when group is open, we don't show it. we also need to make sure the
54878 // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).
54879 // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')
54880 var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;
54881 var isHiddenOpenParent = hideOpenParents && rowNode.expanded && !rowNode.master && (!neverAllowToExpand);
54882 var thisRowShouldBeRendered = !isSkippedLeafNode && !isHiddenOpenParent &&
54883 !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;
54884 if (thisRowShouldBeRendered) {
54885 this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);
54886 }
54887 // if we are pivoting, we never map below the leaf group
54888 if (skipLeafNodes && rowNode.leafGroup) {
54889 continue;
54890 }
54891 if (isParent) {
54892 var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;
54893 // we traverse the group if it is expended, however we always traverse if the parent node
54894 // was removed (as the group will never be opened if it is not displayed, we show the children instead)
54895 if (rowNode.expanded || excludedParent) {
54896 // if the parent was excluded, then ui level is that of the parent
54897 var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;
54898 this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);
54899 // put a footer in if user is looking for it
54900 if (this.gridOptionsWrapper.isGroupIncludeFooter()) {
54901 this.ensureFooterNodeExists(rowNode);
54902 this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);
54903 }
54904 }
54905 }
54906 else if (rowNode.master && rowNode.expanded) {
54907 var detailNode = this.createDetailNode(rowNode);
54908 this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);
54909 }
54910 }
54911 };
54912 // duplicated method, it's also in floatingRowModel
54913 FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {
54914 var isGroupMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();
54915 result.push(rowNode);
54916 rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);
54917 };
54918 FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {
54919 // only create footer node once, otherwise we have daemons and
54920 // the animate screws up with the daemons hanging around
54921 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(groupNode.sibling)) {
54922 return;
54923 }
54924 var footerNode = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
54925 Object.keys(groupNode).forEach(function (key) {
54926 footerNode[key] = groupNode[key];
54927 });
54928 footerNode.footer = true;
54929 footerNode.setRowTop(null);
54930 footerNode.setRowIndex(null);
54931 // manually set oldRowTop to null so we discard any
54932 // previous information about its position.
54933 footerNode.oldRowTop = null;
54934 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(footerNode.id)) {
54935 footerNode.id = 'rowGroupFooter_' + footerNode.id;
54936 }
54937 // get both header and footer to reference each other as siblings. this is never undone,
54938 // only overwritten. so if a group is expanded, then contracted, it will have a ghost
54939 // sibling - but that's fine, as we can ignore this if the header is contracted.
54940 footerNode.sibling = groupNode;
54941 groupNode.sibling = footerNode;
54942 };
54943 FlattenStage.prototype.createDetailNode = function (masterNode) {
54944 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(masterNode.detailNode)) {
54945 return masterNode.detailNode;
54946 }
54947 var detailNode = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
54948 detailNode.detail = true;
54949 detailNode.selectable = false;
54950 detailNode.parent = masterNode;
54951 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(masterNode.id)) {
54952 detailNode.id = 'detail_' + masterNode.id;
54953 }
54954 detailNode.data = masterNode.data;
54955 detailNode.level = masterNode.level + 1;
54956 masterNode.detailNode = detailNode;
54957 return detailNode;
54958 };
54959 __decorate([
54960 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
54961 ], FlattenStage.prototype, "columnModel", void 0);
54962 __decorate([
54963 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('beans')
54964 ], FlattenStage.prototype, "beans", void 0);
54965 FlattenStage = __decorate([
54966 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('flattenStage')
54967 ], FlattenStage);
54968 return FlattenStage;
54969}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
54970
54971
54972
54973/***/ }),
54974/* 256 */
54975/***/ (function(module, __webpack_exports__, __webpack_require__) {
54976
54977"use strict";
54978__webpack_require__.r(__webpack_exports__);
54979/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortService", function() { return SortService; });
54980/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54981var __extends = (undefined && undefined.__extends) || (function () {
54982 var extendStatics = function (d, b) {
54983 extendStatics = Object.setPrototypeOf ||
54984 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
54985 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
54986 return extendStatics(d, b);
54987 };
54988 return function (d, b) {
54989 extendStatics(d, b);
54990 function __() { this.constructor = d; }
54991 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54992 };
54993})();
54994var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
54995 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54996 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54997 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;
54998 return c > 3 && r && Object.defineProperty(target, key, r), r;
54999};
55000
55001var SortService = /** @class */ (function (_super) {
55002 __extends(SortService, _super);
55003 function SortService() {
55004 return _super !== null && _super.apply(this, arguments) || this;
55005 }
55006 SortService.prototype.init = function () {
55007 this.postSortFunc = this.gridOptionsWrapper.getPostSortFunc();
55008 };
55009 SortService.prototype.sort = function (sortOptions, sortActive, useDeltaSort, rowNodeTransactions, changedPath, sortContainsGroupColumns) {
55010 var _this = this;
55011 var groupMaintainOrder = this.gridOptionsWrapper.isGroupMaintainOrder();
55012 var groupColumnsPresent = this.columnModel.getAllGridColumns().some(function (c) { return c.isRowGroupActive(); });
55013 var allDirtyNodes = {};
55014 if (useDeltaSort && rowNodeTransactions) {
55015 allDirtyNodes = this.calculateDirtyNodes(rowNodeTransactions);
55016 }
55017 var isPivotMode = this.columnModel.isPivotMode();
55018 var callback = function (rowNode) {
55019 // we clear out the 'pull down open parents' first, as the values mix up the sorting
55020 _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);
55021 // It's pointless to sort rows which aren't being displayed. in pivot mode we don't need to sort the leaf group children.
55022 var skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;
55023 // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,
55024 // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we
55025 // are going to inspect the original array position. This is what sortedRowNodes is for.
55026 var skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;
55027 if (!sortActive || skipSortingGroups || skipSortingPivotLeafs) {
55028 // when 'groupMaintainOrder' is enabled we skip sorting groups unless we are sorting on group columns
55029 var childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);
55030 if (groupMaintainOrder && rowNode.childrenAfterSort) {
55031 var indexedOrders_1 = rowNode.childrenAfterSort.reduce(function (acc, row, idx) {
55032 acc[row.id] = idx;
55033 return acc;
55034 }, {});
55035 childrenToBeSorted.sort(function (row1, row2) { return (indexedOrders_1[row1.id] || 0) - (indexedOrders_1[row2.id] || 0); });
55036 }
55037 rowNode.childrenAfterSort = childrenToBeSorted;
55038 }
55039 else if (useDeltaSort) {
55040 rowNode.childrenAfterSort = _this.doDeltaSort(rowNode, allDirtyNodes, changedPath, sortOptions);
55041 }
55042 else {
55043 rowNode.childrenAfterSort = _this.rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);
55044 }
55045 if (rowNode.sibling) {
55046 rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;
55047 }
55048 _this.updateChildIndexes(rowNode);
55049 if (_this.postSortFunc) {
55050 var params = { nodes: rowNode.childrenAfterSort };
55051 _this.postSortFunc(params);
55052 }
55053 };
55054 if (changedPath) {
55055 changedPath.forEachChangedNodeDepthFirst(callback);
55056 }
55057 this.updateGroupDataForHideOpenParents(changedPath);
55058 };
55059 SortService.prototype.calculateDirtyNodes = function (rowNodeTransactions) {
55060 var dirtyNodes = {};
55061 var addNodesFunc = function (rowNodes) {
55062 if (rowNodes) {
55063 rowNodes.forEach(function (rowNode) { return dirtyNodes[rowNode.id] = true; });
55064 }
55065 };
55066 // all leaf level nodes in the transaction were impacted
55067 if (rowNodeTransactions) {
55068 rowNodeTransactions.forEach(function (tran) {
55069 addNodesFunc(tran.add);
55070 addNodesFunc(tran.update);
55071 addNodesFunc(tran.remove);
55072 });
55073 }
55074 return dirtyNodes;
55075 };
55076 SortService.prototype.doDeltaSort = function (rowNode, allTouchedNodes, changedPath, sortOptions) {
55077 var _this = this;
55078 var unsortedRows = rowNode.childrenAfterAggFilter;
55079 var oldSortedRows = rowNode.childrenAfterSort;
55080 if (!oldSortedRows) {
55081 return this.rowNodeSorter.doFullSort(unsortedRows, sortOptions);
55082 }
55083 var untouchedRowsMap = {};
55084 var touchedRows = [];
55085 unsortedRows.forEach(function (row) {
55086 if (allTouchedNodes[row.id] || !changedPath.canSkip(row)) {
55087 touchedRows.push(row);
55088 }
55089 else {
55090 untouchedRowsMap[row.id] = true;
55091 }
55092 });
55093 var sortedUntouchedRows = oldSortedRows.filter(function (child) { return untouchedRowsMap[child.id]; });
55094 var mapNodeToSortedNode = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };
55095 var sortedChangedRows = touchedRows
55096 .map(mapNodeToSortedNode)
55097 .sort(function (a, b) { return _this.rowNodeSorter.compareRowNodes(sortOptions, a, b); });
55098 return this.mergeSortedArrays(sortOptions, sortedChangedRows, sortedUntouchedRows.map(mapNodeToSortedNode)).map(function (_a) {
55099 var rowNode = _a.rowNode;
55100 return rowNode;
55101 });
55102 };
55103 // Merge two sorted arrays into each other
55104 SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {
55105 var res = [];
55106 var i = 0;
55107 var j = 0;
55108 // Traverse both array, adding them in order
55109 while (i < arr1.length && j < arr2.length) {
55110 // Check if current element of first
55111 // array is smaller than current element
55112 // of second array. If yes, store first
55113 // array element and increment first array
55114 // index. Otherwise do same with second array
55115 var compareResult = this.rowNodeSorter.compareRowNodes(sortOptions, arr1[i], arr2[j]);
55116 if (compareResult < 0) {
55117 res.push(arr1[i++]);
55118 }
55119 else {
55120 res.push(arr2[j++]);
55121 }
55122 }
55123 // add remaining from arr1
55124 while (i < arr1.length) {
55125 res.push(arr1[i++]);
55126 }
55127 // add remaining from arr2
55128 while (j < arr2.length) {
55129 res.push(arr2[j++]);
55130 }
55131 return res;
55132 };
55133 SortService.prototype.updateChildIndexes = function (rowNode) {
55134 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(rowNode.childrenAfterSort)) {
55135 return;
55136 }
55137 var listToSort = rowNode.childrenAfterSort;
55138 for (var i = 0; i < listToSort.length; i++) {
55139 var child = listToSort[i];
55140 var firstChild = i === 0;
55141 var lastChild = i === rowNode.childrenAfterSort.length - 1;
55142 child.setFirstChild(firstChild);
55143 child.setLastChild(lastChild);
55144 child.setChildIndex(i);
55145 }
55146 };
55147 SortService.prototype.updateGroupDataForHideOpenParents = function (changedPath) {
55148 var _this = this;
55149 if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {
55150 return;
55151 }
55152 if (this.gridOptionsWrapper.isTreeData()) {
55153 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).";
55154 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn(msg_1); }, 'sortService.hideOpenParentsWithTreeData');
55155 return false;
55156 }
55157 // recurse breadth first over group nodes after sort to 'pull down' group data to child groups
55158 var callback = function (rowNode) {
55159 _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);
55160 rowNode.childrenAfterSort.forEach(function (child) {
55161 if (child.hasChildren()) {
55162 callback(child);
55163 }
55164 });
55165 };
55166 if (changedPath) {
55167 changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });
55168 }
55169 };
55170 SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {
55171 var _this = this;
55172 if (!this.gridOptionsWrapper.isGroupHideOpenParents() || _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(rowNodes)) {
55173 return;
55174 }
55175 rowNodes.forEach(function (childRowNode) {
55176 var groupDisplayCols = _this.columnModel.getGroupDisplayColumns();
55177 groupDisplayCols.forEach(function (groupDisplayCol) {
55178 var showRowGroup = groupDisplayCol.getColDef().showRowGroup;
55179 if (typeof showRowGroup !== 'string') {
55180 console.error('AG Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');
55181 return;
55182 }
55183 var displayingGroupKey = showRowGroup;
55184 var rowGroupColumn = _this.columnModel.getPrimaryColumn(displayingGroupKey);
55185 var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;
55186 if (thisRowNodeMatches) {
55187 return;
55188 }
55189 if (clearOperation) {
55190 // if doing a clear operation, we clear down the value for every possible group column
55191 childRowNode.setGroupValue(groupDisplayCol.getId(), undefined);
55192 }
55193 else {
55194 // if doing a set operation, we set only where the pull down is to occur
55195 var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);
55196 if (parentToStealFrom) {
55197 childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);
55198 }
55199 }
55200 });
55201 });
55202 };
55203 __decorate([
55204 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
55205 ], SortService.prototype, "columnModel", void 0);
55206 __decorate([
55207 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowNodeSorter')
55208 ], SortService.prototype, "rowNodeSorter", void 0);
55209 __decorate([
55210 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
55211 ], SortService.prototype, "init", null);
55212 SortService = __decorate([
55213 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('sortService')
55214 ], SortService);
55215 return SortService;
55216}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
55217
55218
55219
55220/***/ }),
55221/* 257 */
55222/***/ (function(module, __webpack_exports__, __webpack_require__) {
55223
55224"use strict";
55225__webpack_require__.r(__webpack_exports__);
55226/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterService", function() { return FilterService; });
55227/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55228var __extends = (undefined && undefined.__extends) || (function () {
55229 var extendStatics = function (d, b) {
55230 extendStatics = Object.setPrototypeOf ||
55231 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55232 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55233 return extendStatics(d, b);
55234 };
55235 return function (d, b) {
55236 extendStatics(d, b);
55237 function __() { this.constructor = d; }
55238 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55239 };
55240})();
55241var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
55242 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55243 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55244 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;
55245 return c > 3 && r && Object.defineProperty(target, key, r), r;
55246};
55247
55248var FilterService = /** @class */ (function (_super) {
55249 __extends(FilterService, _super);
55250 function FilterService() {
55251 return _super !== null && _super.apply(this, arguments) || this;
55252 }
55253 FilterService.prototype.filter = function (changedPath) {
55254 var filterActive = this.filterManager.isColumnFilterPresent()
55255 || this.filterManager.isQuickFilterPresent()
55256 || this.gridOptionsWrapper.isExternalFilterPresent();
55257 this.filterNodes(filterActive, changedPath);
55258 };
55259 FilterService.prototype.filterNodes = function (filterActive, changedPath) {
55260 var _this = this;
55261 var filterCallback = function (rowNode, includeChildNodes) {
55262 // recursively get all children that are groups to also filter
55263 if (rowNode.hasChildren()) {
55264 // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes
55265 if (filterActive && !includeChildNodes) {
55266 rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {
55267 // a group is included in the result if it has any children of it's own.
55268 // by this stage, the child groups are already filtered
55269 var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;
55270 // both leaf level nodes and tree data nodes have data. these get added if
55271 // the data passes the filter
55272 var passBecauseDataPasses = childNode.data
55273 && _this.filterManager.doesRowPassFilter({ rowNode: childNode });
55274 // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass
55275 return passBecauseChildren || passBecauseDataPasses;
55276 });
55277 }
55278 else {
55279 // if not filtering, the result is the original list
55280 rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;
55281 }
55282 }
55283 else {
55284 rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;
55285 }
55286 if (rowNode.sibling) {
55287 rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;
55288 }
55289 };
55290 if (this.doingTreeDataFiltering()) {
55291 var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {
55292 // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes
55293 // filter, and parent nodes will be include if any children exist.
55294 if (rowNode.childrenAfterGroup) {
55295 for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {
55296 var childNode = rowNode.childrenAfterGroup[i];
55297 // first check if current node passes filter before invoking child nodes
55298 var foundInParent = alreadyFoundInParent
55299 || _this.filterManager.doesRowPassFilter({ rowNode: childNode });
55300 if (childNode.childrenAfterGroup) {
55301 treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);
55302 }
55303 else {
55304 filterCallback(childNode, foundInParent);
55305 }
55306 }
55307 }
55308 filterCallback(rowNode, alreadyFoundInParent);
55309 };
55310 var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };
55311 changedPath.executeFromRootNode(treeDataFilterCallback);
55312 }
55313 else {
55314 var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };
55315 changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);
55316 }
55317 };
55318 FilterService.prototype.doingTreeDataFiltering = function () {
55319 return this.gridOptionsWrapper.isTreeData() && !this.gridOptionsWrapper.isExcludeChildrenWhenTreeDataFiltering();
55320 };
55321 __decorate([
55322 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
55323 ], FilterService.prototype, "filterManager", void 0);
55324 FilterService = __decorate([
55325 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])("filterService")
55326 ], FilterService);
55327 return FilterService;
55328}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
55329
55330
55331
55332/***/ }),
55333/* 258 */
55334/***/ (function(module, __webpack_exports__, __webpack_require__) {
55335
55336"use strict";
55337__webpack_require__.r(__webpack_exports__);
55338/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ImmutableService", function() { return ImmutableService; });
55339/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55340var __extends = (undefined && undefined.__extends) || (function () {
55341 var extendStatics = function (d, b) {
55342 extendStatics = Object.setPrototypeOf ||
55343 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55344 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55345 return extendStatics(d, b);
55346 };
55347 return function (d, b) {
55348 extendStatics(d, b);
55349 function __() { this.constructor = d; }
55350 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55351 };
55352})();
55353var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
55354 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55355 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55356 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;
55357 return c > 3 && r && Object.defineProperty(target, key, r), r;
55358};
55359var __read = (undefined && undefined.__read) || function (o, n) {
55360 var m = typeof Symbol === "function" && o[Symbol.iterator];
55361 if (!m) return o;
55362 var i = m.call(o), r, ar = [], e;
55363 try {
55364 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
55365 }
55366 catch (error) { e = { error: error }; }
55367 finally {
55368 try {
55369 if (r && !r.done && (m = i["return"])) m.call(i);
55370 }
55371 finally { if (e) throw e.error; }
55372 }
55373 return ar;
55374};
55375
55376var ImmutableService = /** @class */ (function (_super) {
55377 __extends(ImmutableService, _super);
55378 function ImmutableService() {
55379 return _super !== null && _super.apply(this, arguments) || this;
55380 }
55381 ImmutableService.prototype.postConstruct = function () {
55382 if (this.rowModel.getType() === _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
55383 this.clientSideRowModel = this.rowModel;
55384 }
55385 };
55386 ImmutableService.prototype.isActive = function () {
55387 return this.gridOptionsWrapper.isImmutableData();
55388 };
55389 ImmutableService.prototype.setRowData = function (rowData) {
55390 var transactionAndMap = this.createTransactionForRowData(rowData);
55391 if (!transactionAndMap) {
55392 return;
55393 }
55394 var _a = __read(transactionAndMap, 2), transaction = _a[0], orderIdMap = _a[1];
55395 var nodeTransaction = this.clientSideRowModel.updateRowData(transaction, orderIdMap);
55396 // need to force updating of full width rows - note this wouldn't be necessary the full width cell comp listened
55397 // to the data change event on the row node and refreshed itself.
55398 if (nodeTransaction) {
55399 this.rowRenderer.refreshFullWidthRows(nodeTransaction.update);
55400 }
55401 // - shows 'no rows' overlay if needed
55402 var rowDataChangedEvent = {
55403 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ROW_DATA_CHANGED,
55404 api: this.gridApi,
55405 columnApi: this.columnApi
55406 };
55407 this.eventService.dispatchEvent(rowDataChangedEvent);
55408 };
55409 // converts the setRowData() command to a transaction
55410 ImmutableService.prototype.createTransactionForRowData = function (rowData) {
55411 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.clientSideRowModel)) {
55412 console.error('AG Grid: ImmutableService only works with ClientSideRowModel');
55413 return;
55414 }
55415 var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();
55416 if (getRowIdFunc == null) {
55417 console.error('AG Grid: ImmutableService requires getRowId() callback to be implemented, your row data needs IDs!');
55418 return;
55419 }
55420 // convert the data into a transaction object by working out adds, removes and updates
55421 var transaction = {
55422 remove: [],
55423 update: [],
55424 add: []
55425 };
55426 var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();
55427 var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();
55428 var orderMap = suppressSortOrder ? undefined : {};
55429 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(rowData)) {
55430 // split all the new data in the following:
55431 // if new, push to 'add'
55432 // if update, push to 'update'
55433 // if not changed, do not include in the transaction
55434 rowData.forEach(function (data, index) {
55435 var id = getRowIdFunc({ data: data, level: 0 });
55436 var existingNode = existingNodesMap[id];
55437 if (orderMap) {
55438 orderMap[id] = index;
55439 }
55440 if (existingNode) {
55441 var dataHasChanged = existingNode.data !== data;
55442 if (dataHasChanged) {
55443 transaction.update.push(data);
55444 }
55445 // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta
55446 // remove from list, so we know the item is not to be removed
55447 existingNodesMap[id] = undefined;
55448 }
55449 else {
55450 transaction.add.push(data);
55451 }
55452 });
55453 }
55454 // at this point, all rows that are left, should be removed
55455 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].iterateObject(existingNodesMap, function (id, rowNode) {
55456 if (rowNode) {
55457 transaction.remove.push(rowNode.data);
55458 }
55459 });
55460 return [transaction, orderMap];
55461 };
55462 __decorate([
55463 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
55464 ], ImmutableService.prototype, "rowModel", void 0);
55465 __decorate([
55466 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
55467 ], ImmutableService.prototype, "rowRenderer", void 0);
55468 __decorate([
55469 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
55470 ], ImmutableService.prototype, "columnApi", void 0);
55471 __decorate([
55472 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
55473 ], ImmutableService.prototype, "gridApi", void 0);
55474 __decorate([
55475 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
55476 ], ImmutableService.prototype, "postConstruct", null);
55477 ImmutableService = __decorate([
55478 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('immutableService')
55479 ], ImmutableService);
55480 return ImmutableService;
55481}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
55482
55483
55484
55485/***/ }),
55486/* 259 */
55487/***/ (function(module, __webpack_exports__, __webpack_require__) {
55488
55489"use strict";
55490__webpack_require__.r(__webpack_exports__);
55491/* harmony import */ var _csvExport_baseCreator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(260);
55492/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseCreator", function() { return _csvExport_baseCreator__WEBPACK_IMPORTED_MODULE_0__["BaseCreator"]; });
55493
55494/* harmony import */ var _csvExport_sessions_baseGridSerializingSession__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(261);
55495/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseGridSerializingSession", function() { return _csvExport_sessions_baseGridSerializingSession__WEBPACK_IMPORTED_MODULE_1__["BaseGridSerializingSession"]; });
55496
55497/* harmony import */ var _csvExport_csvCreator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(262);
55498/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CsvCreator", function() { return _csvExport_csvCreator__WEBPACK_IMPORTED_MODULE_2__["CsvCreator"]; });
55499
55500/* harmony import */ var _csvExportModule__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(265);
55501/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CsvExportModule", function() { return _csvExportModule__WEBPACK_IMPORTED_MODULE_3__["CsvExportModule"]; });
55502
55503/* harmony import */ var _csvExport_downloader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(263);
55504/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Downloader", function() { return _csvExport_downloader__WEBPACK_IMPORTED_MODULE_4__["Downloader"]; });
55505
55506/* harmony import */ var _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(266);
55507/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridSerializer", function() { return _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_5__["GridSerializer"]; });
55508
55509/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowType", function() { return _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_5__["RowType"]; });
55510
55511/* harmony import */ var _csvExport_xmlFactory__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(267);
55512/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "XmlFactory", function() { return _csvExport_xmlFactory__WEBPACK_IMPORTED_MODULE_6__["XmlFactory"]; });
55513
55514/* harmony import */ var _csvExport_zipContainer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(268);
55515/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZipContainer", function() { return _csvExport_zipContainer__WEBPACK_IMPORTED_MODULE_7__["ZipContainer"]; });
55516
55517
55518
55519
55520
55521
55522
55523
55524
55525
55526
55527/***/ }),
55528/* 260 */
55529/***/ (function(module, __webpack_exports__, __webpack_require__) {
55530
55531"use strict";
55532__webpack_require__.r(__webpack_exports__);
55533/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseCreator", function() { return BaseCreator; });
55534var BaseCreator = /** @class */ (function () {
55535 function BaseCreator() {
55536 }
55537 BaseCreator.prototype.setBeans = function (beans) {
55538 this.beans = beans;
55539 };
55540 BaseCreator.prototype.getFileName = function (fileName) {
55541 var extension = this.getDefaultFileExtension();
55542 if (fileName == null || !fileName.length) {
55543 fileName = this.getDefaultFileName();
55544 }
55545 return fileName.indexOf('.') === -1 ? fileName + "." + extension : fileName;
55546 };
55547 BaseCreator.prototype.getData = function (params) {
55548 var serializingSession = this.createSerializingSession(params);
55549 var data = this.beans.gridSerializer.serialize(serializingSession, params);
55550 return data;
55551 };
55552 return BaseCreator;
55553}());
55554
55555
55556
55557/***/ }),
55558/* 261 */
55559/***/ (function(module, __webpack_exports__, __webpack_require__) {
55560
55561"use strict";
55562__webpack_require__.r(__webpack_exports__);
55563/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseGridSerializingSession", function() { return BaseGridSerializingSession; });
55564var BaseGridSerializingSession = /** @class */ (function () {
55565 function BaseGridSerializingSession(config) {
55566 this.groupColumns = [];
55567 var columnModel = config.columnModel, valueService = config.valueService, gridOptionsWrapper = config.gridOptionsWrapper, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, processGroupHeaderCallback = config.processGroupHeaderCallback, processRowGroupCallback = config.processRowGroupCallback;
55568 this.columnModel = columnModel;
55569 this.valueService = valueService;
55570 this.gridOptionsWrapper = gridOptionsWrapper;
55571 this.processCellCallback = processCellCallback;
55572 this.processHeaderCallback = processHeaderCallback;
55573 this.processGroupHeaderCallback = processGroupHeaderCallback;
55574 this.processRowGroupCallback = processRowGroupCallback;
55575 }
55576 BaseGridSerializingSession.prototype.prepare = function (columnsToExport) {
55577 this.groupColumns = columnsToExport.filter(function (col) { return !!col.getColDef().showRowGroup; });
55578 };
55579 BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {
55580 var value = this.getHeaderName(this.processHeaderCallback, column);
55581 return value != null ? value : '';
55582 };
55583 BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, accumulatedRowIndex, type, node) {
55584 // we render the group summary text e.g. "-> Parent -> Child"...
55585 var groupIndex = this.gridOptionsWrapper.isGroupMultiAutoColumn() ? node.rowGroupIndex : 0;
55586 var renderGroupSummaryCell =
55587 // on group rows
55588 node && node.group
55589 && (
55590 // in the group column if groups appear in regular grid cells
55591 index === groupIndex && this.groupColumns.indexOf(column) !== -1
55592 // or the first cell in the row, if we're doing full width rows
55593 || (index === 0 && this.gridOptionsWrapper.isGroupUseEntireRow(this.columnModel.isPivotMode())));
55594 var valueForCell;
55595 if (renderGroupSummaryCell) {
55596 valueForCell = this.createValueForGroupNode(node);
55597 }
55598 else {
55599 valueForCell = this.valueService.getValue(column, node);
55600 }
55601 var value = this.processCell(accumulatedRowIndex, node, column, valueForCell, this.processCellCallback, type);
55602 return value != null ? value : '';
55603 };
55604 BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {
55605 if (callback) {
55606 return callback({
55607 column: column,
55608 api: this.gridOptionsWrapper.getApi(),
55609 columnApi: this.gridOptionsWrapper.getColumnApi(),
55610 context: this.gridOptionsWrapper.getContext()
55611 });
55612 }
55613 return this.columnModel.getDisplayNameForColumn(column, 'csv', true);
55614 };
55615 BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {
55616 if (this.processRowGroupCallback) {
55617 return this.processRowGroupCallback({
55618 node: node,
55619 api: this.gridOptionsWrapper.getApi(),
55620 columnApi: this.gridOptionsWrapper.getColumnApi(),
55621 context: this.gridOptionsWrapper.getContext(),
55622 });
55623 }
55624 var keys = [node.key];
55625 if (!this.gridOptionsWrapper.isGroupMultiAutoColumn()) {
55626 while (node.parent) {
55627 node = node.parent;
55628 keys.push(node.key);
55629 }
55630 }
55631 return keys.reverse().join(' -> ');
55632 };
55633 BaseGridSerializingSession.prototype.processCell = function (accumulatedRowIndex, rowNode, column, value, processCellCallback, type) {
55634 if (processCellCallback) {
55635 return processCellCallback({
55636 accumulatedRowIndex: accumulatedRowIndex,
55637 column: column,
55638 node: rowNode,
55639 value: value,
55640 api: this.gridOptionsWrapper.getApi(),
55641 columnApi: this.gridOptionsWrapper.getColumnApi(),
55642 context: this.gridOptionsWrapper.getContext(),
55643 type: type
55644 });
55645 }
55646 return value != null ? value : '';
55647 };
55648 return BaseGridSerializingSession;
55649}());
55650
55651
55652
55653/***/ }),
55654/* 262 */
55655/***/ (function(module, __webpack_exports__, __webpack_require__) {
55656
55657"use strict";
55658__webpack_require__.r(__webpack_exports__);
55659/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CsvCreator", function() { return CsvCreator; });
55660/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55661/* harmony import */ var _baseCreator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(260);
55662/* harmony import */ var _downloader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(263);
55663/* harmony import */ var _sessions_csvSerializingSession__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(264);
55664var __extends = (undefined && undefined.__extends) || (function () {
55665 var extendStatics = function (d, b) {
55666 extendStatics = Object.setPrototypeOf ||
55667 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55668 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55669 return extendStatics(d, b);
55670 };
55671 return function (d, b) {
55672 extendStatics(d, b);
55673 function __() { this.constructor = d; }
55674 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55675 };
55676})();
55677var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
55678 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55679 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55680 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;
55681 return c > 3 && r && Object.defineProperty(target, key, r), r;
55682};
55683
55684
55685
55686
55687var CsvCreator = /** @class */ (function (_super) {
55688 __extends(CsvCreator, _super);
55689 function CsvCreator() {
55690 return _super !== null && _super.apply(this, arguments) || this;
55691 }
55692 CsvCreator.prototype.postConstruct = function () {
55693 this.setBeans({
55694 gridSerializer: this.gridSerializer,
55695 gridOptionsWrapper: this.gridOptionsWrapper
55696 });
55697 };
55698 CsvCreator.prototype.getMergedParams = function (params) {
55699 var baseParams = this.gridOptionsWrapper.getDefaultExportParams('csv');
55700 return Object.assign({}, baseParams, params);
55701 };
55702 CsvCreator.prototype.export = function (userParams) {
55703 if (this.isExportSuppressed()) {
55704 console.warn("AG Grid: Export cancelled. Export is not allowed as per your configuration.");
55705 return '';
55706 }
55707 var mergedParams = this.getMergedParams(userParams);
55708 var data = this.getData(mergedParams);
55709 var packagedFile = new Blob(["\ufeff", data], { type: 'text/plain' });
55710 _downloader__WEBPACK_IMPORTED_MODULE_2__["Downloader"].download(this.getFileName(mergedParams.fileName), packagedFile);
55711 return data;
55712 };
55713 CsvCreator.prototype.exportDataAsCsv = function (params) {
55714 return this.export(params);
55715 };
55716 CsvCreator.prototype.getDataAsCsv = function (params) {
55717 var mergedParams = this.getMergedParams(params);
55718 return this.getData(mergedParams);
55719 };
55720 CsvCreator.prototype.getDefaultFileName = function () {
55721 return 'export.csv';
55722 };
55723 CsvCreator.prototype.getDefaultFileExtension = function () {
55724 return 'csv';
55725 };
55726 CsvCreator.prototype.createSerializingSession = function (params) {
55727 var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;
55728 var _b = params, processCellCallback = _b.processCellCallback, processHeaderCallback = _b.processHeaderCallback, processGroupHeaderCallback = _b.processGroupHeaderCallback, processRowGroupCallback = _b.processRowGroupCallback, suppressQuotes = _b.suppressQuotes, columnSeparator = _b.columnSeparator;
55729 return new _sessions_csvSerializingSession__WEBPACK_IMPORTED_MODULE_3__["CsvSerializingSession"]({
55730 columnModel: columnModel,
55731 valueService: valueService,
55732 gridOptionsWrapper: gridOptionsWrapper,
55733 processCellCallback: processCellCallback || undefined,
55734 processHeaderCallback: processHeaderCallback || undefined,
55735 processGroupHeaderCallback: processGroupHeaderCallback || undefined,
55736 processRowGroupCallback: processRowGroupCallback || undefined,
55737 suppressQuotes: suppressQuotes || false,
55738 columnSeparator: columnSeparator || ','
55739 });
55740 };
55741 CsvCreator.prototype.isExportSuppressed = function () {
55742 return this.gridOptionsWrapper.isSuppressCsvExport();
55743 };
55744 __decorate([
55745 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
55746 ], CsvCreator.prototype, "columnModel", void 0);
55747 __decorate([
55748 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueService')
55749 ], CsvCreator.prototype, "valueService", void 0);
55750 __decorate([
55751 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridSerializer')
55752 ], CsvCreator.prototype, "gridSerializer", void 0);
55753 __decorate([
55754 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridOptionsWrapper')
55755 ], CsvCreator.prototype, "gridOptionsWrapper", void 0);
55756 __decorate([
55757 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
55758 ], CsvCreator.prototype, "postConstruct", null);
55759 CsvCreator = __decorate([
55760 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('csvCreator')
55761 ], CsvCreator);
55762 return CsvCreator;
55763}(_baseCreator__WEBPACK_IMPORTED_MODULE_1__["BaseCreator"]));
55764
55765
55766
55767/***/ }),
55768/* 263 */
55769/***/ (function(module, __webpack_exports__, __webpack_require__) {
55770
55771"use strict";
55772__webpack_require__.r(__webpack_exports__);
55773/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Downloader", function() { return Downloader; });
55774var Downloader = /** @class */ (function () {
55775 function Downloader() {
55776 }
55777 Downloader.download = function (fileName, content) {
55778 var win = document.defaultView || window;
55779 if (!win) {
55780 console.warn('AG Grid: There is no `window` associated with the current `document`');
55781 return;
55782 }
55783 var element = document.createElement('a');
55784 // @ts-ignore
55785 var url = win.URL.createObjectURL(content);
55786 element.setAttribute('href', url);
55787 element.setAttribute('download', fileName);
55788 element.style.display = 'none';
55789 document.body.appendChild(element);
55790 element.dispatchEvent(new MouseEvent('click', {
55791 bubbles: false,
55792 cancelable: true,
55793 view: win
55794 }));
55795 document.body.removeChild(element);
55796 win.setTimeout(function () {
55797 // @ts-ignore
55798 win.URL.revokeObjectURL(url);
55799 }, 0);
55800 };
55801 return Downloader;
55802}());
55803
55804
55805
55806/***/ }),
55807/* 264 */
55808/***/ (function(module, __webpack_exports__, __webpack_require__) {
55809
55810"use strict";
55811__webpack_require__.r(__webpack_exports__);
55812/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CsvSerializingSession", function() { return CsvSerializingSession; });
55813/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55814/* harmony import */ var _baseGridSerializingSession__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(261);
55815var __extends = (undefined && undefined.__extends) || (function () {
55816 var extendStatics = function (d, b) {
55817 extendStatics = Object.setPrototypeOf ||
55818 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55819 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55820 return extendStatics(d, b);
55821 };
55822 return function (d, b) {
55823 extendStatics(d, b);
55824 function __() { this.constructor = d; }
55825 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55826 };
55827})();
55828
55829
55830var LINE_SEPARATOR = '\r\n';
55831var CsvSerializingSession = /** @class */ (function (_super) {
55832 __extends(CsvSerializingSession, _super);
55833 function CsvSerializingSession(config) {
55834 var _this = _super.call(this, config) || this;
55835 _this.isFirstLine = true;
55836 _this.result = '';
55837 var suppressQuotes = config.suppressQuotes, columnSeparator = config.columnSeparator;
55838 _this.suppressQuotes = suppressQuotes;
55839 _this.columnSeparator = columnSeparator;
55840 return _this;
55841 }
55842 CsvSerializingSession.prototype.addCustomContent = function (content) {
55843 var _this = this;
55844 if (!content) {
55845 return;
55846 }
55847 if (typeof content === 'string') {
55848 if (!/^\s*\n/.test(content)) {
55849 this.beginNewLine();
55850 }
55851 // replace whatever newlines are supplied with the style we're using
55852 content = content.replace(/\r?\n/g, LINE_SEPARATOR);
55853 this.result += content;
55854 }
55855 else {
55856 content.forEach(function (row) {
55857 _this.beginNewLine();
55858 row.forEach(function (cell, index) {
55859 if (index !== 0) {
55860 _this.result += _this.columnSeparator;
55861 }
55862 _this.result += _this.putInQuotes(cell.data.value || '');
55863 if (cell.mergeAcross) {
55864 _this.appendEmptyCells(cell.mergeAcross);
55865 }
55866 });
55867 });
55868 }
55869 };
55870 CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {
55871 this.beginNewLine();
55872 return {
55873 onColumn: this.onNewHeaderGroupingRowColumn.bind(this)
55874 };
55875 };
55876 CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (header, index, span) {
55877 if (index != 0) {
55878 this.result += this.columnSeparator;
55879 }
55880 this.result += this.putInQuotes(header);
55881 this.appendEmptyCells(span);
55882 };
55883 CsvSerializingSession.prototype.appendEmptyCells = function (count) {
55884 for (var i = 1; i <= count; i++) {
55885 this.result += this.columnSeparator + this.putInQuotes("");
55886 }
55887 };
55888 CsvSerializingSession.prototype.onNewHeaderRow = function () {
55889 this.beginNewLine();
55890 return {
55891 onColumn: this.onNewHeaderRowColumn.bind(this)
55892 };
55893 };
55894 CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index) {
55895 if (index != 0) {
55896 this.result += this.columnSeparator;
55897 }
55898 this.result += this.putInQuotes(this.extractHeaderValue(column));
55899 };
55900 CsvSerializingSession.prototype.onNewBodyRow = function () {
55901 this.beginNewLine();
55902 return {
55903 onColumn: this.onNewBodyRowColumn.bind(this)
55904 };
55905 };
55906 CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {
55907 if (index != 0) {
55908 this.result += this.columnSeparator;
55909 }
55910 this.result += this.putInQuotes(this.extractRowCellValue(column, index, index, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].EXPORT_TYPE_CSV, node));
55911 };
55912 CsvSerializingSession.prototype.putInQuotes = function (value) {
55913 if (this.suppressQuotes) {
55914 return value;
55915 }
55916 if (value === null || value === undefined) {
55917 return '""';
55918 }
55919 var stringValue;
55920 if (typeof value === 'string') {
55921 stringValue = value;
55922 }
55923 else if (typeof value.toString === 'function') {
55924 stringValue = value.toString();
55925 }
55926 else {
55927 console.warn('AG Grid: unknown value type during csv conversion');
55928 stringValue = '';
55929 }
55930 // replace each " with "" (ie two sets of double quotes is how to do double quotes in csv)
55931 var valueEscaped = stringValue.replace(/"/g, "\"\"");
55932 return '"' + valueEscaped + '"';
55933 };
55934 CsvSerializingSession.prototype.parse = function () {
55935 return this.result;
55936 };
55937 CsvSerializingSession.prototype.beginNewLine = function () {
55938 if (!this.isFirstLine) {
55939 this.result += LINE_SEPARATOR;
55940 }
55941 this.isFirstLine = false;
55942 };
55943 return CsvSerializingSession;
55944}(_baseGridSerializingSession__WEBPACK_IMPORTED_MODULE_1__["BaseGridSerializingSession"]));
55945
55946
55947
55948/***/ }),
55949/* 265 */
55950/***/ (function(module, __webpack_exports__, __webpack_require__) {
55951
55952"use strict";
55953__webpack_require__.r(__webpack_exports__);
55954/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CsvExportModule", function() { return CsvExportModule; });
55955/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55956/* harmony import */ var _csvExport_csvCreator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(262);
55957/* harmony import */ var _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(266);
55958
55959
55960
55961var CsvExportModule = {
55962 moduleName: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ModuleNames"].CsvExportModule,
55963 beans: [_csvExport_csvCreator__WEBPACK_IMPORTED_MODULE_1__["CsvCreator"], _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_2__["GridSerializer"]]
55964};
55965
55966
55967/***/ }),
55968/* 266 */
55969/***/ (function(module, __webpack_exports__, __webpack_require__) {
55970
55971"use strict";
55972__webpack_require__.r(__webpack_exports__);
55973/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowType", function() { return RowType; });
55974/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridSerializer", function() { return GridSerializer; });
55975/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55976var __extends = (undefined && undefined.__extends) || (function () {
55977 var extendStatics = function (d, b) {
55978 extendStatics = Object.setPrototypeOf ||
55979 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55980 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55981 return extendStatics(d, b);
55982 };
55983 return function (d, b) {
55984 extendStatics(d, b);
55985 function __() { this.constructor = d; }
55986 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55987 };
55988})();
55989var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
55990 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55991 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55992 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;
55993 return c > 3 && r && Object.defineProperty(target, key, r), r;
55994};
55995
55996var RowType;
55997(function (RowType) {
55998 RowType[RowType["HEADER_GROUPING"] = 0] = "HEADER_GROUPING";
55999 RowType[RowType["HEADER"] = 1] = "HEADER";
56000 RowType[RowType["BODY"] = 2] = "BODY";
56001})(RowType || (RowType = {}));
56002var GridSerializer = /** @class */ (function (_super) {
56003 __extends(GridSerializer, _super);
56004 function GridSerializer() {
56005 return _super !== null && _super.apply(this, arguments) || this;
56006 }
56007 GridSerializer.prototype.serialize = function (gridSerializingSession, params) {
56008 if (params === void 0) { params = {}; }
56009 var columnsToExport = this.getColumnsToExport(params.allColumns, params.columnKeys);
56010 var serializeChain = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].compose(
56011 // first pass, put in the header names of the cols
56012 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));
56013 return serializeChain(gridSerializingSession).parse();
56014 };
56015 GridSerializer.prototype.processRow = function (gridSerializingSession, params, columnsToExport, node) {
56016 var _this = this;
56017 var rowSkipper = params.shouldRowBeSkipped || (function () { return false; });
56018 var gridOptionsWrapper = this.gridOptionsWrapper;
56019 var context = gridOptionsWrapper.getContext();
56020 var api = gridOptionsWrapper.getApi();
56021 var columnApi = gridOptionsWrapper.getColumnApi();
56022 var skipSingleChildrenGroup = gridOptionsWrapper.isGroupRemoveSingleChildren();
56023 var hideOpenParents = gridOptionsWrapper.isGroupHideOpenParents();
56024 var skipLowestSingleChildrenGroup = gridOptionsWrapper.isGroupRemoveLowestSingleChildren();
56025 var isLeafNode = this.columnModel.isPivotMode() ? node.leafGroup : !node.group;
56026 var skipRowGroups = params.skipGroups || params.skipRowGroups;
56027 var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;
56028 var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);
56029 if (skipRowGroups && params.skipGroups) {
56030 _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');
56031 }
56032 var rowPosition = { rowIndex: node.rowIndex, rowPinned: node.rowPinned };
56033 if ((!isLeafNode && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents)) ||
56034 (params.onlySelected && !node.isSelected()) ||
56035 (params.rowNodes && !params.rowNodes.some(function (position) { return _this.rowPositionUtils.sameRow(position, rowPosition); })) ||
56036 (params.skipPinnedTop && node.rowPinned === 'top') ||
56037 (params.skipPinnedBottom && node.rowPinned === 'bottom')) {
56038 return;
56039 }
56040 // if we are in pivotMode, then the grid will show the root node only
56041 // if it's not a leaf group
56042 var nodeIsRootNode = node.level === -1;
56043 if (nodeIsRootNode && !node.leafGroup) {
56044 return;
56045 }
56046 var shouldRowBeSkipped = rowSkipper({ node: node, api: api, columnApi: columnApi, context: context });
56047 if (shouldRowBeSkipped) {
56048 return;
56049 }
56050 var rowAccumulator = gridSerializingSession.onNewBodyRow();
56051 columnsToExport.forEach(function (column, index) {
56052 rowAccumulator.onColumn(column, index, node);
56053 });
56054 if (params.getCustomContentBelowRow) {
56055 var content = params.getCustomContentBelowRow({ node: node, api: api, columnApi: columnApi, context: context });
56056 if (content) {
56057 gridSerializingSession.addCustomContent(content);
56058 }
56059 }
56060 };
56061 GridSerializer.prototype.appendContent = function (params) {
56062 return function (gridSerializingSession) {
56063 var appendContent = params.customFooter || params.appendContent;
56064 if (appendContent) {
56065 if (params.customFooter) {
56066 _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');
56067 }
56068 gridSerializingSession.addCustomContent(appendContent);
56069 }
56070 return gridSerializingSession;
56071 };
56072 };
56073 GridSerializer.prototype.prependContent = function (params) {
56074 return function (gridSerializingSession) {
56075 var prependContent = params.customHeader || params.prependContent;
56076 if (prependContent) {
56077 if (params.customHeader) {
56078 _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');
56079 }
56080 gridSerializingSession.addCustomContent(prependContent);
56081 }
56082 return gridSerializingSession;
56083 };
56084 };
56085 GridSerializer.prototype.prepareSession = function (columnsToExport) {
56086 return function (gridSerializingSession) {
56087 gridSerializingSession.prepare(columnsToExport);
56088 return gridSerializingSession;
56089 };
56090 };
56091 GridSerializer.prototype.exportColumnGroups = function (params, columnsToExport) {
56092 var _this = this;
56093 return function (gridSerializingSession) {
56094 if (!params.skipColumnGroupHeaders) {
56095 var groupInstanceIdCreator = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["GroupInstanceIdCreator"]();
56096 var displayedGroups = _this.displayedGroupCreator.createDisplayedGroups(columnsToExport, _this.columnModel.getGridBalancedTree(), groupInstanceIdCreator, null);
56097 _this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, params.processGroupHeaderCallback);
56098 }
56099 else if (params.columnGroups) {
56100 _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');
56101 }
56102 return gridSerializingSession;
56103 };
56104 };
56105 GridSerializer.prototype.exportHeaders = function (params, columnsToExport) {
56106 return function (gridSerializingSession) {
56107 if (!params.skipHeader && !params.skipColumnHeaders) {
56108 var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();
56109 columnsToExport.forEach(function (column, index) {
56110 gridRowIterator_1.onColumn(column, index, undefined);
56111 });
56112 }
56113 else if (params.skipHeader) {
56114 _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');
56115 }
56116 return gridSerializingSession;
56117 };
56118 };
56119 GridSerializer.prototype.processPinnedTopRows = function (params, columnsToExport) {
56120 var _this = this;
56121 return function (gridSerializingSession) {
56122 var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);
56123 _this.pinnedRowModel.forEachPinnedTopRow(processRow);
56124 return gridSerializingSession;
56125 };
56126 };
56127 GridSerializer.prototype.processRows = function (params, columnsToExport) {
56128 var _this = this;
56129 return function (gridSerializingSession) {
56130 // when in pivot mode, we always render cols on screen, never 'all columns'
56131 var rowModel = _this.rowModel;
56132 var rowModelType = rowModel.getType();
56133 var usingCsrm = rowModelType === _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
56134 var usingSsrm = rowModelType === _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE;
56135 var onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;
56136 var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);
56137 if (_this.columnModel.isPivotMode()) {
56138 if (usingCsrm) {
56139 rowModel.forEachPivotNode(processRow);
56140 }
56141 else {
56142 // must be enterprise, so we can just loop through all the nodes
56143 rowModel.forEachNode(processRow);
56144 }
56145 }
56146 else {
56147 // onlySelectedAllPages: user doing pagination and wants selected items from
56148 // other pages, so cannot use the standard row model as it won't have rows from
56149 // other pages.
56150 // onlySelectedNonStandardModel: if user wants selected in non standard row model
56151 // (eg viewport) then again RowModel cannot be used, so need to use selected instead.
56152 if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {
56153 var selectedNodes = _this.selectionService.getSelectedNodes();
56154 selectedNodes.forEach(processRow);
56155 }
56156 else {
56157 // here is everything else - including standard row model and selected. we don't use
56158 // the selection model even when just using selected, so that the result is the order
56159 // of the rows appearing on the screen.
56160 if (usingCsrm) {
56161 rowModel.forEachNodeAfterFilterAndSort(processRow);
56162 }
56163 else if (usingSsrm) {
56164 rowModel.forEachNodeAfterFilterAndSort(processRow);
56165 }
56166 else {
56167 rowModel.forEachNode(processRow);
56168 }
56169 }
56170 }
56171 return gridSerializingSession;
56172 };
56173 };
56174 GridSerializer.prototype.processPinnedBottomRows = function (params, columnsToExport) {
56175 var _this = this;
56176 return function (gridSerializingSession) {
56177 var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);
56178 _this.pinnedRowModel.forEachPinnedBottomRow(processRow);
56179 return gridSerializingSession;
56180 };
56181 };
56182 GridSerializer.prototype.getColumnsToExport = function (allColumns, columnKeys) {
56183 if (allColumns === void 0) { allColumns = false; }
56184 var isPivotMode = this.columnModel.isPivotMode();
56185 if (columnKeys && columnKeys.length) {
56186 return this.columnModel.getGridColumns(columnKeys);
56187 }
56188 if (allColumns && !isPivotMode) {
56189 // add auto group column for tree data
56190 var columns = this.gridOptionsWrapper.isTreeData()
56191 ? this.columnModel.getGridColumns([_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].GROUP_AUTO_COLUMN_ID])
56192 : [];
56193 return columns.concat(this.columnModel.getAllPrimaryColumns() || []);
56194 }
56195 return this.columnModel.getAllDisplayedColumns();
56196 };
56197 GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession, processGroupHeaderCallback) {
56198 var directChildrenHeaderGroups = [];
56199 displayedGroups.forEach(function (columnGroupChild) {
56200 var columnGroup = columnGroupChild;
56201 if (!columnGroup.getChildren) {
56202 return;
56203 }
56204 columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });
56205 });
56206 if (displayedGroups.length > 0 && displayedGroups[0] instanceof _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
56207 this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);
56208 }
56209 if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {
56210 this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession, processGroupHeaderCallback);
56211 }
56212 };
56213 GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups, processGroupHeaderCallback) {
56214 var _this = this;
56215 var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();
56216 var columnIndex = 0;
56217 displayedGroups.forEach(function (columnGroupChild) {
56218 var columnGroup = columnGroupChild;
56219 var name;
56220 if (processGroupHeaderCallback) {
56221 name = processGroupHeaderCallback({
56222 columnGroup: columnGroup,
56223 api: _this.gridOptionsWrapper.getApi(),
56224 columnApi: _this.gridOptionsWrapper.getColumnApi(),
56225 context: _this.gridOptionsWrapper.getContext()
56226 });
56227 }
56228 else {
56229 name = _this.columnModel.getDisplayNameForColumnGroup(columnGroup, 'header');
56230 }
56231 var collapsibleGroupRanges = columnGroup.getLeafColumns().reduce(function (collapsibleGroups, currentColumn, currentIdx, arr) {
56232 var lastGroup = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].last(collapsibleGroups);
56233 var groupShow = currentColumn.getColumnGroupShow() === 'open';
56234 if (!groupShow) {
56235 if (lastGroup && lastGroup[1] == null) {
56236 lastGroup[1] = currentIdx - 1;
56237 }
56238 }
56239 else if (!lastGroup || lastGroup[1] != null) {
56240 lastGroup = [currentIdx];
56241 collapsibleGroups.push(lastGroup);
56242 }
56243 if (currentIdx === arr.length - 1 && lastGroup && lastGroup[1] == null) {
56244 lastGroup[1] = currentIdx;
56245 }
56246 return collapsibleGroups;
56247 }, []);
56248 gridRowIterator.onColumn(name || '', columnIndex++, columnGroup.getLeafColumns().length - 1, collapsibleGroupRanges);
56249 });
56250 };
56251 __decorate([
56252 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('displayedGroupCreator')
56253 ], GridSerializer.prototype, "displayedGroupCreator", void 0);
56254 __decorate([
56255 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
56256 ], GridSerializer.prototype, "columnModel", void 0);
56257 __decorate([
56258 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
56259 ], GridSerializer.prototype, "rowModel", void 0);
56260 __decorate([
56261 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedRowModel')
56262 ], GridSerializer.prototype, "pinnedRowModel", void 0);
56263 __decorate([
56264 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('selectionService')
56265 ], GridSerializer.prototype, "selectionService", void 0);
56266 __decorate([
56267 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowPositionUtils')
56268 ], GridSerializer.prototype, "rowPositionUtils", void 0);
56269 GridSerializer = __decorate([
56270 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])("gridSerializer")
56271 ], GridSerializer);
56272 return GridSerializer;
56273}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
56274
56275
56276
56277/***/ }),
56278/* 267 */
56279/***/ (function(module, __webpack_exports__, __webpack_require__) {
56280
56281"use strict";
56282__webpack_require__.r(__webpack_exports__);
56283/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XmlFactory", function() { return XmlFactory; });
56284var LINE_SEPARATOR = '\r\n';
56285var XmlFactory = /** @class */ (function () {
56286 function XmlFactory() {
56287 }
56288 XmlFactory.createHeader = function (headerElement) {
56289 if (headerElement === void 0) { headerElement = {}; }
56290 var headerStart = '<?';
56291 var headerEnd = '?>';
56292 var keys = ['version'];
56293 if (!headerElement.version) {
56294 headerElement.version = "1.0";
56295 }
56296 if (headerElement.encoding) {
56297 keys.push('encoding');
56298 }
56299 if (headerElement.standalone) {
56300 keys.push('standalone');
56301 }
56302 var att = keys.map(function (key) { return key + "=\"" + headerElement[key] + "\""; }).join(' ');
56303 return headerStart + "xml " + att + " " + headerEnd;
56304 };
56305 XmlFactory.createXml = function (xmlElement, booleanTransformer) {
56306 var _this = this;
56307 var props = '';
56308 if (xmlElement.properties) {
56309 if (xmlElement.properties.prefixedAttributes) {
56310 xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {
56311 Object.keys(prefixedSet.map).forEach(function (key) {
56312 props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);
56313 });
56314 });
56315 }
56316 if (xmlElement.properties.rawMap) {
56317 Object.keys(xmlElement.properties.rawMap).forEach(function (key) {
56318 props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);
56319 });
56320 }
56321 }
56322 var result = '<' + xmlElement.name + props;
56323 if (!xmlElement.children && xmlElement.textNode == null) {
56324 return result + '/>' + LINE_SEPARATOR;
56325 }
56326 if (xmlElement.textNode != null) {
56327 return result + '>' + xmlElement.textNode + '</' + xmlElement.name + '>' + LINE_SEPARATOR;
56328 }
56329 result += '>' + LINE_SEPARATOR;
56330 if (xmlElement.children) {
56331 xmlElement.children.forEach(function (it) {
56332 result += _this.createXml(it, booleanTransformer);
56333 });
56334 }
56335 return result + '</' + xmlElement.name + '>' + LINE_SEPARATOR;
56336 };
56337 XmlFactory.returnAttributeIfPopulated = function (key, value, booleanTransformer) {
56338 if (!value && value !== '' && value !== 0) {
56339 return '';
56340 }
56341 var xmlValue = value;
56342 if ((typeof (value) === 'boolean')) {
56343 if (booleanTransformer) {
56344 xmlValue = booleanTransformer(value);
56345 }
56346 }
56347 return " " + key + "=\"" + xmlValue + "\"";
56348 };
56349 return XmlFactory;
56350}());
56351
56352
56353
56354/***/ }),
56355/* 268 */
56356/***/ (function(module, __webpack_exports__, __webpack_require__) {
56357
56358"use strict";
56359__webpack_require__.r(__webpack_exports__);
56360/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipContainer", function() { return ZipContainer; });
56361/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
56362var __values = (undefined && undefined.__values) || function(o) {
56363 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
56364 if (m) return m.call(o);
56365 if (o && typeof o.length === "number") return {
56366 next: function () {
56367 if (o && i >= o.length) o = void 0;
56368 return { value: o && o[i++], done: !o };
56369 }
56370 };
56371 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
56372};
56373
56374// table for crc calculation
56375// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references
56376var crcTable = new Uint32Array([
56377 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
56378 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
56379 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
56380 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
56381 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
56382 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
56383 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
56384 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
56385 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
56386 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
56387 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
56388 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
56389 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
56390 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
56391 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
56392 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
56393 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
56394 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
56395 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
56396 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
56397 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
56398 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
56399 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
56400 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
56401 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
56402 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
56403 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
56404 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
56405 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
56406 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
56407 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
56408 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
56409 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
56410 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
56411 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
56412 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
56413 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
56414 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
56415 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
56416 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
56417 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
56418 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
56419 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
56420]);
56421var ZipContainer = /** @class */ (function () {
56422 function ZipContainer() {
56423 }
56424 ZipContainer.addFolders = function (paths) {
56425 paths.forEach(this.addFolder.bind(this));
56426 };
56427 ZipContainer.addFolder = function (path) {
56428 this.folders.push({
56429 path: path,
56430 created: new Date(),
56431 isBase64: false
56432 });
56433 };
56434 ZipContainer.addFile = function (path, content, isBase64) {
56435 if (isBase64 === void 0) { isBase64 = false; }
56436 this.files.push({
56437 path: path,
56438 created: new Date(),
56439 content: content,
56440 isBase64: isBase64
56441 });
56442 };
56443 ZipContainer.getContent = function (mimeType) {
56444 if (mimeType === void 0) { mimeType = 'application/zip'; }
56445 var textOutput = this.buildFileStream();
56446 var uInt8Output = this.buildUint8Array(textOutput);
56447 this.clearStream();
56448 return new Blob([uInt8Output], { type: mimeType });
56449 };
56450 ZipContainer.clearStream = function () {
56451 this.folders = [];
56452 this.files = [];
56453 };
56454 ZipContainer.buildFileStream = function (fData) {
56455 var e_1, _a;
56456 if (fData === void 0) { fData = ''; }
56457 var totalFiles = this.folders.concat(this.files);
56458 var len = totalFiles.length;
56459 var foData = '';
56460 var lL = 0;
56461 var cL = 0;
56462 try {
56463 for (var totalFiles_1 = __values(totalFiles), totalFiles_1_1 = totalFiles_1.next(); !totalFiles_1_1.done; totalFiles_1_1 = totalFiles_1.next()) {
56464 var currentFile = totalFiles_1_1.value;
56465 var _b = this.getHeader(currentFile, lL), fileHeader = _b.fileHeader, folderHeader = _b.folderHeader, content = _b.content;
56466 lL += fileHeader.length + content.length;
56467 cL += folderHeader.length;
56468 fData += fileHeader + content;
56469 foData += folderHeader;
56470 }
56471 }
56472 catch (e_1_1) { e_1 = { error: e_1_1 }; }
56473 finally {
56474 try {
56475 if (totalFiles_1_1 && !totalFiles_1_1.done && (_a = totalFiles_1.return)) _a.call(totalFiles_1);
56476 }
56477 finally { if (e_1) throw e_1.error; }
56478 }
56479 var foEnd = this.buildFolderEnd(len, cL, lL);
56480 return fData + foData + foEnd;
56481 };
56482 ZipContainer.getHeader = function (currentFile, offset) {
56483 var content = currentFile.content, path = currentFile.path, created = currentFile.created, isBase64 = currentFile.isBase64;
56484 var utf8_encode = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].utf8_encode, decToHex = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].decToHex;
56485 var utfPath = utf8_encode(path);
56486 var isUTF8 = utfPath !== path;
56487 var time = this.convertTime(created);
56488 var dt = this.convertDate(created);
56489 var extraFields = '';
56490 if (isUTF8) {
56491 var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;
56492 extraFields = "\x75\x70" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;
56493 }
56494 var _a = !content ? { size: 0, content: '' } : this.getConvertedContent(content, isBase64), size = _a.size, convertedContent = _a.content;
56495 var header = '\x0A\x00' +
56496 (isUTF8 ? '\x00\x08' : '\x00\x00') +
56497 '\x00\x00' +
56498 decToHex(time, 2) + // last modified time
56499 decToHex(dt, 2) + // last modified date
56500 decToHex(size ? this.getFromCrc32Table(convertedContent) : 0, 4) +
56501 decToHex(size, 4) + // compressed size
56502 decToHex(size, 4) + // uncompressed size
56503 decToHex(utfPath.length, 2) + // file name length
56504 decToHex(extraFields.length, 2); // extra field length
56505 var fileHeader = 'PK\x03\x04' + header + utfPath + extraFields;
56506 var folderHeader = 'PK\x01\x02' + // central header
56507 '\x14\x00' +
56508 header + // file header
56509 '\x00\x00' +
56510 '\x00\x00' +
56511 '\x00\x00' +
56512 (content ? '\x00\x00\x00\x00' : '\x10\x00\x00\x00') + // external file attributes
56513 decToHex(offset, 4) + // relative offset of local header
56514 utfPath + // file name
56515 extraFields; // extra field
56516 return { fileHeader: fileHeader, folderHeader: folderHeader, content: convertedContent || '' };
56517 };
56518 ZipContainer.getConvertedContent = function (content, isBase64) {
56519 if (isBase64 === void 0) { isBase64 = false; }
56520 if (isBase64) {
56521 content = content.split(';base64,')[1];
56522 }
56523 content = isBase64 ? atob(content) : content;
56524 return {
56525 size: content.length,
56526 content: content
56527 };
56528 };
56529 ZipContainer.buildFolderEnd = function (tLen, cLen, lLen) {
56530 var decToHex = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].decToHex;
56531 return 'PK\x05\x06' + // central folder end
56532 '\x00\x00' +
56533 '\x00\x00' +
56534 decToHex(tLen, 2) + // total number of entries in the central folder
56535 decToHex(tLen, 2) + // total number of entries in the central folder
56536 decToHex(cLen, 4) + // size of the central folder
56537 decToHex(lLen, 4) + // central folder start offset
56538 '\x00\x00';
56539 };
56540 ZipContainer.buildUint8Array = function (content) {
56541 var uint8 = new Uint8Array(content.length);
56542 for (var i = 0; i < uint8.length; i++) {
56543 uint8[i] = content.charCodeAt(i);
56544 }
56545 return uint8;
56546 };
56547 ZipContainer.getFromCrc32Table = function (content) {
56548 if (!content.length) {
56549 return 0;
56550 }
56551 var size = content.length;
56552 var iterable = new Uint8Array(size);
56553 for (var i = 0; i < size; i++) {
56554 iterable[i] = content.charCodeAt(i);
56555 }
56556 var crc = 0 ^ (-1);
56557 var j = 0;
56558 var k = 0;
56559 var l = 0;
56560 for (var i = 0; i < size; i++) {
56561 j = iterable[i];
56562 k = (crc ^ j) & 0xFF;
56563 l = crcTable[k];
56564 crc = (crc >>> 8) ^ l;
56565 }
56566 return crc ^ (-1);
56567 };
56568 ZipContainer.convertTime = function (date) {
56569 var time = date.getHours();
56570 time <<= 6;
56571 time = time | date.getMinutes();
56572 time <<= 5;
56573 time = time | date.getSeconds() / 2;
56574 return time;
56575 };
56576 ZipContainer.convertDate = function (date) {
56577 var dt = date.getFullYear() - 1980;
56578 dt <<= 4;
56579 dt = dt | (date.getMonth() + 1);
56580 dt <<= 5;
56581 dt = dt | date.getDate();
56582 return dt;
56583 };
56584 ZipContainer.folders = [];
56585 ZipContainer.files = [];
56586 return ZipContainer;
56587}());
56588
56589
56590
56591/***/ }),
56592/* 269 */
56593/***/ (function(module, __webpack_exports__, __webpack_require__) {
56594
56595"use strict";
56596__webpack_require__.r(__webpack_exports__);
56597/* harmony import */ var _infiniteRowModelModule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(270);
56598/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "InfiniteRowModelModule", function() { return _infiniteRowModelModule__WEBPACK_IMPORTED_MODULE_0__["InfiniteRowModelModule"]; });
56599
56600
56601
56602
56603/***/ }),
56604/* 270 */
56605/***/ (function(module, __webpack_exports__, __webpack_require__) {
56606
56607"use strict";
56608__webpack_require__.r(__webpack_exports__);
56609/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfiniteRowModelModule", function() { return InfiniteRowModelModule; });
56610/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
56611/* harmony import */ var _infiniteRowModel_infiniteRowModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(271);
56612
56613
56614var InfiniteRowModelModule = {
56615 moduleName: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ModuleNames"].InfiniteRowModelModule,
56616 rowModels: { infinite: _infiniteRowModel_infiniteRowModel__WEBPACK_IMPORTED_MODULE_1__["InfiniteRowModel"] }
56617};
56618
56619
56620/***/ }),
56621/* 271 */
56622/***/ (function(module, __webpack_exports__, __webpack_require__) {
56623
56624"use strict";
56625__webpack_require__.r(__webpack_exports__);
56626/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfiniteRowModel", function() { return InfiniteRowModel; });
56627/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
56628/* harmony import */ var _infiniteCache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(272);
56629var __extends = (undefined && undefined.__extends) || (function () {
56630 var extendStatics = function (d, b) {
56631 extendStatics = Object.setPrototypeOf ||
56632 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
56633 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
56634 return extendStatics(d, b);
56635 };
56636 return function (d, b) {
56637 extendStatics(d, b);
56638 function __() { this.constructor = d; }
56639 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
56640 };
56641})();
56642var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
56643 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
56644 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
56645 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;
56646 return c > 3 && r && Object.defineProperty(target, key, r), r;
56647};
56648
56649
56650var InfiniteRowModel = /** @class */ (function (_super) {
56651 __extends(InfiniteRowModel, _super);
56652 function InfiniteRowModel() {
56653 return _super !== null && _super.apply(this, arguments) || this;
56654 }
56655 InfiniteRowModel.prototype.getRowBounds = function (index) {
56656 return {
56657 rowHeight: this.rowHeight,
56658 rowTop: this.rowHeight * index
56659 };
56660 };
56661 // we don't implement as lazy row heights is not supported in this row model
56662 InfiniteRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {
56663 return false;
56664 };
56665 InfiniteRowModel.prototype.init = function () {
56666 var _this = this;
56667 if (!this.gridOptionsWrapper.isRowModelInfinite()) {
56668 return;
56669 }
56670 this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();
56671 this.addEventListeners();
56672 this.addDestroyFunc(function () { return _this.destroyCache(); });
56673 this.verifyProps();
56674 };
56675 InfiniteRowModel.prototype.verifyProps = function () {
56676 if (this.gridOptionsWrapper.getInitialGroupOrderComparator() != null) {
56677 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.";
56678 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn(message_1); }, 'IRM.InitialGroupOrderComparator');
56679 }
56680 };
56681 InfiniteRowModel.prototype.start = function () {
56682 this.setDatasource(this.gridOptionsWrapper.getDatasource());
56683 };
56684 InfiniteRowModel.prototype.destroyDatasource = function () {
56685 if (this.datasource) {
56686 this.getContext().destroyBean(this.datasource);
56687 this.rowRenderer.datasourceChanged();
56688 this.datasource = null;
56689 }
56690 };
56691 InfiniteRowModel.prototype.addEventListeners = function () {
56692 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
56693 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
56694 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));
56695 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_STORE_UPDATED, this.onCacheUpdated.bind(this));
56696 };
56697 InfiniteRowModel.prototype.onFilterChanged = function () {
56698 this.reset();
56699 };
56700 InfiniteRowModel.prototype.onSortChanged = function () {
56701 this.reset();
56702 };
56703 InfiniteRowModel.prototype.onColumnEverything = function () {
56704 var resetRequired;
56705 // if cache params, we require reset only if sort model has changed. we don't need to check
56706 // for filter model, as the filter manager will fire an event when columns change that result
56707 // in the filter changing.
56708 if (this.cacheParams) {
56709 resetRequired = this.isSortModelDifferent();
56710 }
56711 else {
56712 // if no cacheParams, means first time creating the cache, so always create one
56713 resetRequired = true;
56714 }
56715 if (resetRequired) {
56716 this.reset();
56717 }
56718 };
56719 InfiniteRowModel.prototype.isSortModelDifferent = function () {
56720 return !_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());
56721 };
56722 InfiniteRowModel.prototype.getType = function () {
56723 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_INFINITE;
56724 };
56725 InfiniteRowModel.prototype.setDatasource = function (datasource) {
56726 this.destroyDatasource();
56727 this.datasource = datasource;
56728 // only reset if we have a valid datasource to working with
56729 if (datasource) {
56730 this.reset();
56731 }
56732 };
56733 InfiniteRowModel.prototype.isEmpty = function () {
56734 return !this.infiniteCache;
56735 };
56736 InfiniteRowModel.prototype.isRowsToRender = function () {
56737 return !!this.infiniteCache;
56738 };
56739 InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {
56740 return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];
56741 };
56742 InfiniteRowModel.prototype.reset = function () {
56743 // important to return here, as the user could be setting filter or sort before
56744 // data-source is set
56745 if (!this.datasource) {
56746 return;
56747 }
56748 // if user is providing id's, then this means we can keep the selection between datasource hits,
56749 // as the rows will keep their unique id's even if, for example, server side sorting or filtering
56750 // is done.
56751 var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();
56752 var userGeneratingIds = getRowIdFunc != null;
56753 if (!userGeneratingIds) {
56754 this.selectionService.reset();
56755 }
56756 this.resetCache();
56757 var event = this.createModelUpdatedEvent();
56758 this.eventService.dispatchEvent(event);
56759 };
56760 InfiniteRowModel.prototype.createModelUpdatedEvent = function () {
56761 return {
56762 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_MODEL_UPDATED,
56763 api: this.gridApi,
56764 columnApi: this.columnApi,
56765 // not sure if these should all be false - noticed if after implementing,
56766 // maybe they should be true?
56767 newPage: false,
56768 newData: false,
56769 keepRenderedRows: true,
56770 animate: false
56771 };
56772 };
56773 InfiniteRowModel.prototype.resetCache = function () {
56774 // if not first time creating a cache, need to destroy the old one
56775 this.destroyCache();
56776 this.cacheParams = {
56777 // the user provided datasource
56778 datasource: this.datasource,
56779 // sort and filter model
56780 filterModel: this.filterManager.getFilterModel(),
56781 sortModel: this.sortController.getSortModel(),
56782 rowNodeBlockLoader: this.rowNodeBlockLoader,
56783 // properties - this way we take a snapshot of them, so if user changes any, they will be
56784 // used next time we create a new cache, which is generally after a filter or sort change,
56785 // or a new datasource is set
56786 initialRowCount: this.defaultIfInvalid(this.gridOptionsWrapper.getInfiniteInitialRowCount(), 1),
56787 maxBlocksInCache: this.gridOptionsWrapper.getMaxBlocksInCache(),
56788 rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),
56789 // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past
56790 // the current page and request first row of next page
56791 overflowSize: this.defaultIfInvalid(this.gridOptionsWrapper.getCacheOverflowSize(), 1),
56792 // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the
56793 // server for one page at a time. so the default if not specified is 100.
56794 blockSize: this.defaultIfInvalid(this.gridOptionsWrapper.getCacheBlockSize(), 100),
56795 // the cache could create this, however it is also used by the pages, so handy to create it
56796 // here as the settings are also passed to the pages
56797 lastAccessedSequence: new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["NumberSequence"]()
56798 };
56799 this.infiniteCache = this.createBean(new _infiniteCache__WEBPACK_IMPORTED_MODULE_1__["InfiniteCache"](this.cacheParams));
56800 };
56801 InfiniteRowModel.prototype.defaultIfInvalid = function (value, defaultValue) {
56802 return value > 0 ? value : defaultValue;
56803 };
56804 InfiniteRowModel.prototype.destroyCache = function () {
56805 if (this.infiniteCache) {
56806 this.infiniteCache = this.destroyBean(this.infiniteCache);
56807 }
56808 };
56809 InfiniteRowModel.prototype.onCacheUpdated = function () {
56810 var event = this.createModelUpdatedEvent();
56811 this.eventService.dispatchEvent(event);
56812 };
56813 InfiniteRowModel.prototype.getRow = function (rowIndex) {
56814 if (!this.infiniteCache) {
56815 return undefined;
56816 }
56817 if (rowIndex >= this.infiniteCache.getRowCount()) {
56818 return undefined;
56819 }
56820 return this.infiniteCache.getRow(rowIndex);
56821 };
56822 InfiniteRowModel.prototype.getRowNode = function (id) {
56823 var result;
56824 this.forEachNode(function (rowNode) {
56825 if (rowNode.id === id) {
56826 result = rowNode;
56827 }
56828 });
56829 return result;
56830 };
56831 InfiniteRowModel.prototype.forEachNode = function (callback) {
56832 if (this.infiniteCache) {
56833 this.infiniteCache.forEachNodeDeep(callback);
56834 }
56835 };
56836 InfiniteRowModel.prototype.getTopLevelRowCount = function () {
56837 return this.getRowCount();
56838 };
56839 InfiniteRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {
56840 return topLevelIndex;
56841 };
56842 InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {
56843 if (this.rowHeight !== 0) { // avoid divide by zero error
56844 var rowIndexForPixel = Math.floor(pixel / this.rowHeight);
56845 var lastRowIndex = this.getRowCount() - 1;
56846 if (rowIndexForPixel > lastRowIndex) {
56847 return lastRowIndex;
56848 }
56849 return rowIndexForPixel;
56850 }
56851 return 0;
56852 };
56853 InfiniteRowModel.prototype.getRowCount = function () {
56854 return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;
56855 };
56856 InfiniteRowModel.prototype.isRowPresent = function (rowNode) {
56857 var foundRowNode = this.getRowNode(rowNode.id);
56858 return !!foundRowNode;
56859 };
56860 InfiniteRowModel.prototype.refreshCache = function () {
56861 if (this.infiniteCache) {
56862 this.infiniteCache.refreshCache();
56863 }
56864 };
56865 InfiniteRowModel.prototype.purgeCache = function () {
56866 if (this.infiniteCache) {
56867 this.infiniteCache.purgeCache();
56868 }
56869 };
56870 // for iRowModel
56871 InfiniteRowModel.prototype.isLastRowIndexKnown = function () {
56872 if (this.infiniteCache) {
56873 return this.infiniteCache.isLastRowIndexKnown();
56874 }
56875 return false;
56876 };
56877 InfiniteRowModel.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {
56878 if (this.infiniteCache) {
56879 this.infiniteCache.setRowCount(rowCount, lastRowIndexKnown);
56880 }
56881 };
56882 __decorate([
56883 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
56884 ], InfiniteRowModel.prototype, "filterManager", void 0);
56885 __decorate([
56886 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortController')
56887 ], InfiniteRowModel.prototype, "sortController", void 0);
56888 __decorate([
56889 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('selectionService')
56890 ], InfiniteRowModel.prototype, "selectionService", void 0);
56891 __decorate([
56892 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
56893 ], InfiniteRowModel.prototype, "gridApi", void 0);
56894 __decorate([
56895 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
56896 ], InfiniteRowModel.prototype, "columnApi", void 0);
56897 __decorate([
56898 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
56899 ], InfiniteRowModel.prototype, "rowRenderer", void 0);
56900 __decorate([
56901 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowNodeBlockLoader')
56902 ], InfiniteRowModel.prototype, "rowNodeBlockLoader", void 0);
56903 __decorate([
56904 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
56905 ], InfiniteRowModel.prototype, "init", null);
56906 __decorate([
56907 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
56908 ], InfiniteRowModel.prototype, "destroyDatasource", null);
56909 InfiniteRowModel = __decorate([
56910 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('rowModel')
56911 ], InfiniteRowModel);
56912 return InfiniteRowModel;
56913}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
56914
56915
56916
56917/***/ }),
56918/* 272 */
56919/***/ (function(module, __webpack_exports__, __webpack_require__) {
56920
56921"use strict";
56922__webpack_require__.r(__webpack_exports__);
56923/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfiniteCache", function() { return InfiniteCache; });
56924/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
56925/* harmony import */ var _infiniteBlock__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(273);
56926var __extends = (undefined && undefined.__extends) || (function () {
56927 var extendStatics = function (d, b) {
56928 extendStatics = Object.setPrototypeOf ||
56929 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
56930 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
56931 return extendStatics(d, b);
56932 };
56933 return function (d, b) {
56934 extendStatics(d, b);
56935 function __() { this.constructor = d; }
56936 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
56937 };
56938})();
56939var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
56940 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
56941 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
56942 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;
56943 return c > 3 && r && Object.defineProperty(target, key, r), r;
56944};
56945var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
56946 return function (target, key) { decorator(target, key, paramIndex); }
56947};
56948
56949
56950var InfiniteCache = /** @class */ (function (_super) {
56951 __extends(InfiniteCache, _super);
56952 function InfiniteCache(params) {
56953 var _this = _super.call(this) || this;
56954 _this.lastRowIndexKnown = false;
56955 _this.blocks = {};
56956 _this.blockCount = 0;
56957 _this.rowCount = params.initialRowCount;
56958 _this.params = params;
56959 return _this;
56960 }
56961 InfiniteCache.prototype.setBeans = function (loggerFactory) {
56962 this.logger = loggerFactory.create('InfiniteCache');
56963 };
56964 // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,
56965 // it will want new pages in the cache as it asks for rows. only when we are inserting /
56966 // removing rows via the api is dontCreatePage set, where we move rows between the pages.
56967 InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {
56968 if (dontCreatePage === void 0) { dontCreatePage = false; }
56969 var blockId = Math.floor(rowIndex / this.params.blockSize);
56970 var block = this.blocks[blockId];
56971 if (!block) {
56972 if (dontCreatePage) {
56973 return undefined;
56974 }
56975 block = this.createBlock(blockId);
56976 }
56977 return block.getRow(rowIndex);
56978 };
56979 InfiniteCache.prototype.createBlock = function (blockNumber) {
56980 var newBlock = this.createBean(new _infiniteBlock__WEBPACK_IMPORTED_MODULE_1__["InfiniteBlock"](blockNumber, this, this.params));
56981 this.blocks[newBlock.getId()] = newBlock;
56982 this.blockCount++;
56983 this.purgeBlocksIfNeeded(newBlock);
56984 this.params.rowNodeBlockLoader.addBlock(newBlock);
56985 return newBlock;
56986 };
56987 // we have this on infinite row model only, not server side row model,
56988 // because for server side, it would leave the children in inconsistent
56989 // state - eg if a node had children, but after the refresh it had data
56990 // for a different row, then the children would be with the wrong row node.
56991 InfiniteCache.prototype.refreshCache = function () {
56992 var nothingToRefresh = this.blockCount == 0;
56993 if (nothingToRefresh) {
56994 this.purgeCache();
56995 return;
56996 }
56997 this.getBlocksInOrder().forEach(function (block) { return block.setStateWaitingToLoad(); });
56998 this.params.rowNodeBlockLoader.checkBlockToLoad();
56999 };
57000 InfiniteCache.prototype.destroyAllBlocks = function () {
57001 var _this = this;
57002 this.getBlocksInOrder().forEach(function (block) { return _this.destroyBlock(block); });
57003 };
57004 InfiniteCache.prototype.getRowCount = function () {
57005 return this.rowCount;
57006 };
57007 InfiniteCache.prototype.isLastRowIndexKnown = function () {
57008 return this.lastRowIndexKnown;
57009 };
57010 // block calls this, when page loaded
57011 InfiniteCache.prototype.pageLoaded = function (block, lastRow) {
57012 // if we are not active, then we ignore all events, otherwise we could end up getting the
57013 // grid to refresh even though we are no longer the active cache
57014 if (!this.isAlive()) {
57015 return;
57016 }
57017 this.logger.log("onPageLoaded: page = " + block.getId() + ", lastRow = " + lastRow);
57018 this.checkRowCount(block, lastRow);
57019 // we fire cacheUpdated even if the row count has not changed, as some items need updating even
57020 // if no new rows to render. for example the pagination panel has '?' as the total rows when loading
57021 // is underway, which would need to get updated when loading finishes.
57022 this.onCacheUpdated();
57023 };
57024 InfiniteCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {
57025 var _this = this;
57026 // we exclude checking for the page just created, as this has yet to be accessed and hence
57027 // the lastAccessed stamp will not be updated for the first time yet
57028 var blocksForPurging = this.getBlocksInOrder().filter(function (b) { return b != blockToExclude; });
57029 var lastAccessedComparator = function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); };
57030 blocksForPurging.sort(lastAccessedComparator);
57031 // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.
57032 // in other words, after the splice operation below, we have taken out the blocks
57033 // we want to keep, which means we are left with blocks that we can potentially purge
57034 var maxBlocksProvided = this.params.maxBlocksInCache > 0;
57035 var blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;
57036 var emptyBlocksToKeep = InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;
57037 blocksForPurging.forEach(function (block, index) {
57038 var purgeBecauseBlockEmpty = block.getState() === _infiniteBlock__WEBPACK_IMPORTED_MODULE_1__["InfiniteBlock"].STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;
57039 var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;
57040 if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {
57041 // if the block currently has rows been displayed, then don't remove it either.
57042 // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)
57043 // but the screen is showing 20 rows, so at least 4 blocks are needed.
57044 if (_this.isBlockCurrentlyDisplayed(block)) {
57045 return;
57046 }
57047 // don't want to loose keyboard focus, so keyboard navigation can continue. so keep focused blocks.
57048 if (_this.isBlockFocused(block)) {
57049 return;
57050 }
57051 // at this point, block is not needed, so burn baby burn
57052 _this.removeBlockFromCache(block);
57053 }
57054 });
57055 };
57056 InfiniteCache.prototype.isBlockFocused = function (block) {
57057 var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();
57058 if (!focusedCell) {
57059 return false;
57060 }
57061 if (focusedCell.rowPinned != null) {
57062 return false;
57063 }
57064 var blockIndexStart = block.getStartRow();
57065 var blockIndexEnd = block.getEndRow();
57066 var hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;
57067 return hasFocus;
57068 };
57069 InfiniteCache.prototype.isBlockCurrentlyDisplayed = function (block) {
57070 var startIndex = block.getStartRow();
57071 var endIndex = block.getEndRow() - 1;
57072 return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);
57073 };
57074 InfiniteCache.prototype.removeBlockFromCache = function (blockToRemove) {
57075 if (!blockToRemove) {
57076 return;
57077 }
57078 this.destroyBlock(blockToRemove);
57079 // we do not want to remove the 'loaded' event listener, as the
57080 // concurrent loads count needs to be updated when the load is complete
57081 // if the purged page is in loading state
57082 };
57083 InfiniteCache.prototype.checkRowCount = function (block, lastRow) {
57084 // if client provided a last row, we always use it, as it could change between server calls
57085 // if user deleted data and then called refresh on the grid.
57086 if (typeof lastRow === 'number' && lastRow >= 0) {
57087 this.rowCount = lastRow;
57088 this.lastRowIndexKnown = true;
57089 }
57090 else if (!this.lastRowIndexKnown) {
57091 // otherwise, see if we need to add some virtual rows
57092 var lastRowIndex = (block.getId() + 1) * this.params.blockSize;
57093 var lastRowIndexPlusOverflow = lastRowIndex + this.params.overflowSize;
57094 if (this.rowCount < lastRowIndexPlusOverflow) {
57095 this.rowCount = lastRowIndexPlusOverflow;
57096 }
57097 }
57098 };
57099 InfiniteCache.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {
57100 this.rowCount = rowCount;
57101 // if undefined is passed, we do not set this value, if one of {true,false}
57102 // is passed, we do set the value.
57103 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(lastRowIndexKnown)) {
57104 this.lastRowIndexKnown = lastRowIndexKnown;
57105 }
57106 // if we are still searching, then the row count must not end at the end
57107 // of a particular page, otherwise the searching will not pop into the
57108 // next page
57109 if (!this.lastRowIndexKnown) {
57110 if (this.rowCount % this.params.blockSize === 0) {
57111 this.rowCount++;
57112 }
57113 }
57114 this.onCacheUpdated();
57115 };
57116 InfiniteCache.prototype.forEachNodeDeep = function (callback) {
57117 var _this = this;
57118 var sequence = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["NumberSequence"]();
57119 this.getBlocksInOrder().forEach(function (block) { return block.forEachNode(callback, sequence, _this.rowCount); });
57120 };
57121 InfiniteCache.prototype.getBlocksInOrder = function () {
57122 // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order
57123 var blockComparator = function (a, b) { return a.getId() - b.getId(); };
57124 var blocks = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].getAllValuesInObject(this.blocks).sort(blockComparator);
57125 return blocks;
57126 };
57127 InfiniteCache.prototype.destroyBlock = function (block) {
57128 delete this.blocks[block.getId()];
57129 this.destroyBean(block);
57130 this.blockCount--;
57131 this.params.rowNodeBlockLoader.removeBlock(block);
57132 };
57133 // gets called 1) row count changed 2) cache purged 3) items inserted
57134 InfiniteCache.prototype.onCacheUpdated = function () {
57135 if (this.isAlive()) {
57136 // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer
57137 // in the valid range. so we must remove these. this can happen if user explicitly sets
57138 // the virtual row count, or the datasource returns a result and sets lastRow to something
57139 // less than virtualRowCount (can happen if user scrolls down, server reduces dataset size).
57140 this.destroyAllBlocksPastVirtualRowCount();
57141 // this results in both row models (infinite and server side) firing ModelUpdated,
57142 // however server side row model also updates the row indexes first
57143 var event_1 = {
57144 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_STORE_UPDATED
57145 };
57146 this.eventService.dispatchEvent(event_1);
57147 }
57148 };
57149 InfiniteCache.prototype.destroyAllBlocksPastVirtualRowCount = function () {
57150 var _this = this;
57151 var blocksToDestroy = [];
57152 this.getBlocksInOrder().forEach(function (block) {
57153 var startRow = block.getId() * _this.params.blockSize;
57154 if (startRow >= _this.rowCount) {
57155 blocksToDestroy.push(block);
57156 }
57157 });
57158 if (blocksToDestroy.length > 0) {
57159 blocksToDestroy.forEach(function (block) { return _this.destroyBlock(block); });
57160 }
57161 };
57162 InfiniteCache.prototype.purgeCache = function () {
57163 var _this = this;
57164 this.getBlocksInOrder().forEach(function (block) { return _this.removeBlockFromCache(block); });
57165 this.lastRowIndexKnown = false;
57166 // if zero rows in the cache, we need to get the SSRM to start asking for rows again.
57167 // otherwise if set to zero rows last time, and we don't update the row count, then after
57168 // the purge there will still be zero rows, meaning the SSRM won't request any rows.
57169 // to kick things off, at least one row needs to be asked for.
57170 if (this.rowCount === 0) {
57171 this.rowCount = this.params.initialRowCount;
57172 }
57173 this.onCacheUpdated();
57174 };
57175 InfiniteCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {
57176 var _this = this;
57177 var result = [];
57178 var lastBlockId = -1;
57179 var inActiveRange = false;
57180 var numberSequence = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["NumberSequence"]();
57181 // if only one node passed, we start the selection at the top
57182 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(firstInRange)) {
57183 inActiveRange = true;
57184 }
57185 var foundGapInSelection = false;
57186 this.getBlocksInOrder().forEach(function (block) {
57187 if (foundGapInSelection) {
57188 return;
57189 }
57190 if (inActiveRange && (lastBlockId + 1 !== block.getId())) {
57191 foundGapInSelection = true;
57192 return;
57193 }
57194 lastBlockId = block.getId();
57195 block.forEachNode(function (rowNode) {
57196 var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;
57197 if (inActiveRange || hitFirstOrLast) {
57198 result.push(rowNode);
57199 }
57200 if (hitFirstOrLast) {
57201 inActiveRange = !inActiveRange;
57202 }
57203 }, numberSequence, _this.rowCount);
57204 });
57205 // inActiveRange will be still true if we never hit the second rowNode
57206 var invalidRange = foundGapInSelection || inActiveRange;
57207 return invalidRange ? [] : result;
57208 };
57209 // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10
57210 // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly
57211 // scrolled over are not needed to be loaded.
57212 InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;
57213 __decorate([
57214 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
57215 ], InfiniteCache.prototype, "rowRenderer", void 0);
57216 __decorate([
57217 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("focusService")
57218 ], InfiniteCache.prototype, "focusService", void 0);
57219 __decorate([
57220 __param(0, Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('loggerFactory'))
57221 ], InfiniteCache.prototype, "setBeans", null);
57222 __decorate([
57223 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
57224 ], InfiniteCache.prototype, "destroyAllBlocks", null);
57225 return InfiniteCache;
57226}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
57227
57228
57229
57230/***/ }),
57231/* 273 */
57232/***/ (function(module, __webpack_exports__, __webpack_require__) {
57233
57234"use strict";
57235__webpack_require__.r(__webpack_exports__);
57236/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfiniteBlock", function() { return InfiniteBlock; });
57237/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
57238var __extends = (undefined && undefined.__extends) || (function () {
57239 var extendStatics = function (d, b) {
57240 extendStatics = Object.setPrototypeOf ||
57241 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
57242 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
57243 return extendStatics(d, b);
57244 };
57245 return function (d, b) {
57246 extendStatics(d, b);
57247 function __() { this.constructor = d; }
57248 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
57249 };
57250})();
57251var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
57252 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
57253 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
57254 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;
57255 return c > 3 && r && Object.defineProperty(target, key, r), r;
57256};
57257
57258var InfiniteBlock = /** @class */ (function (_super) {
57259 __extends(InfiniteBlock, _super);
57260 function InfiniteBlock(id, parentCache, params) {
57261 var _this = _super.call(this, id) || this;
57262 _this.parentCache = parentCache;
57263 _this.params = params;
57264 // we don't need to calculate these now, as the inputs don't change,
57265 // however it makes the code easier to read if we work them out up front
57266 _this.startRow = id * params.blockSize;
57267 _this.endRow = _this.startRow + params.blockSize;
57268 return _this;
57269 }
57270 InfiniteBlock.prototype.postConstruct = function () {
57271 this.createRowNodes();
57272 };
57273 InfiniteBlock.prototype.getBlockStateJson = function () {
57274 return {
57275 id: '' + this.getId(),
57276 state: {
57277 blockNumber: this.getId(),
57278 startRow: this.getStartRow(),
57279 endRow: this.getEndRow(),
57280 pageStatus: this.getState()
57281 }
57282 };
57283 };
57284 InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {
57285 // if there's no id and the rowNode was rendered before, it means this
57286 // was a placeholder rowNode and should not be recycled. Setting
57287 // `alreadyRendered` to `false` forces the rowRenderer to flush it.
57288 if (!rowNode.id && rowNode.alreadyRendered) {
57289 rowNode.alreadyRendered = false;
57290 }
57291 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(data)) {
57292 // this means if the user is not providing id's we just use the
57293 // index for the row. this will allow selection to work (that is based
57294 // on index) as long user is not inserting or deleting rows,
57295 // or wanting to keep selection between server side sorting or filtering
57296 rowNode.setDataAndId(data, index.toString());
57297 }
57298 else {
57299 rowNode.setDataAndId(undefined, undefined);
57300 }
57301 };
57302 InfiniteBlock.prototype.loadFromDatasource = function () {
57303 var _this = this;
57304 var params = this.createLoadParams();
57305 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.params.datasource.getRows)) {
57306 console.warn("AG Grid: datasource is missing getRows method");
57307 return;
57308 }
57309 // put in timeout, to force result to be async
57310 window.setTimeout(function () {
57311 _this.params.datasource.getRows(params);
57312 }, 0);
57313 };
57314 InfiniteBlock.prototype.processServerFail = function () {
57315 // todo - this method has better handling in SSRM
57316 };
57317 InfiniteBlock.prototype.createLoadParams = function () {
57318 // PROBLEM . . . . when the user sets sort via colDef.sort, then this code
57319 // is executing before the sort is set up, so server is not getting the sort
57320 // model. need to change with regards order - so the server side request is
57321 // AFTER thus it gets the right sort model.
57322 var params = {
57323 startRow: this.getStartRow(),
57324 endRow: this.getEndRow(),
57325 successCallback: this.pageLoaded.bind(this, this.getVersion()),
57326 failCallback: this.pageLoadFailed.bind(this, this.getVersion()),
57327 sortModel: this.params.sortModel,
57328 filterModel: this.params.filterModel,
57329 context: this.gridOptionsWrapper.getContext()
57330 };
57331 return params;
57332 };
57333 InfiniteBlock.prototype.forEachNode = function (callback, sequence, rowCount) {
57334 var _this = this;
57335 this.rowNodes.forEach(function (rowNode, index) {
57336 var rowIndex = _this.startRow + index;
57337 if (rowIndex < rowCount) {
57338 callback(rowNode, sequence.next());
57339 }
57340 });
57341 };
57342 InfiniteBlock.prototype.getLastAccessed = function () {
57343 return this.lastAccessed;
57344 };
57345 InfiniteBlock.prototype.getRow = function (rowIndex, dontTouchLastAccessed) {
57346 if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }
57347 if (!dontTouchLastAccessed) {
57348 this.lastAccessed = this.params.lastAccessedSequence.next();
57349 }
57350 var localIndex = rowIndex - this.startRow;
57351 return this.rowNodes[localIndex];
57352 };
57353 InfiniteBlock.prototype.getStartRow = function () {
57354 return this.startRow;
57355 };
57356 InfiniteBlock.prototype.getEndRow = function () {
57357 return this.endRow;
57358 };
57359 // creates empty row nodes, data is missing as not loaded yet
57360 InfiniteBlock.prototype.createRowNodes = function () {
57361 this.rowNodes = [];
57362 for (var i = 0; i < this.params.blockSize; i++) {
57363 var rowIndex = this.startRow + i;
57364 var rowNode = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
57365 rowNode.setRowHeight(this.params.rowHeight);
57366 rowNode.uiLevel = 0;
57367 rowNode.setRowIndex(rowIndex);
57368 rowNode.setRowTop(this.params.rowHeight * rowIndex);
57369 this.rowNodes.push(rowNode);
57370 }
57371 };
57372 InfiniteBlock.prototype.processServerResult = function (params) {
57373 var _this = this;
57374 this.rowNodes.forEach(function (rowNode, index) {
57375 var data = params.rowData ? params.rowData[index] : undefined;
57376 _this.setDataAndId(rowNode, data, _this.startRow + index);
57377 });
57378 var finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;
57379 this.parentCache.pageLoaded(this, finalRowCount);
57380 };
57381 InfiniteBlock.prototype.destroyRowNodes = function () {
57382 this.rowNodes.forEach(function (rowNode) {
57383 // this is needed, so row render knows to fade out the row, otherwise it
57384 // sees row top is present, and thinks the row should be shown.
57385 rowNode.clearRowTopAndRowIndex();
57386 });
57387 };
57388 __decorate([
57389 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('beans')
57390 ], InfiniteBlock.prototype, "beans", void 0);
57391 __decorate([
57392 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
57393 ], InfiniteBlock.prototype, "postConstruct", null);
57394 __decorate([
57395 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
57396 ], InfiniteBlock.prototype, "destroyRowNodes", null);
57397 return InfiniteBlock;
57398}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNodeBlock"]));
57399
57400
57401
57402/***/ }),
57403/* 274 */
57404/***/ (function(module, __webpack_exports__, __webpack_require__) {
57405
57406"use strict";
57407__webpack_require__.r(__webpack_exports__);
57408/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AllCommunityModules", function() { return AllCommunityModules; });
57409/* harmony import */ var _ag_grid_community_client_side_row_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
57410/* harmony import */ var _ag_grid_community_infinite_row_model__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(269);
57411/* harmony import */ var _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(259);
57412/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelModule", function() { return _ag_grid_community_client_side_row_model__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelModule"]; });
57413
57414/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseCreator", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["BaseCreator"]; });
57415
57416/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseGridSerializingSession", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["BaseGridSerializingSession"]; });
57417
57418/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CsvCreator", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["CsvCreator"]; });
57419
57420/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CsvExportModule", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["CsvExportModule"]; });
57421
57422/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Downloader", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["Downloader"]; });
57423
57424/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridSerializer", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["GridSerializer"]; });
57425
57426/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowType", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["RowType"]; });
57427
57428/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "XmlFactory", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["XmlFactory"]; });
57429
57430/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZipContainer", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["ZipContainer"]; });
57431
57432/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "InfiniteRowModelModule", function() { return _ag_grid_community_infinite_row_model__WEBPACK_IMPORTED_MODULE_1__["InfiniteRowModelModule"]; });
57433
57434/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
57435/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnFactory", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnFactory"]; });
57436
57437/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnModel", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnModel"]; });
57438
57439/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnKeyCreator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnKeyCreator"]; });
57440
57441/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnUtils", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnUtils"]; });
57442
57443/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DisplayedGroupCreator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DisplayedGroupCreator"]; });
57444
57445/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupInstanceIdCreator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GroupInstanceIdCreator"]; });
57446
57447/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentUtil", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ComponentUtil"]; });
57448
57449/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgStackComponentsRegistry", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgStackComponentsRegistry"]; });
57450
57451/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColDefUtil", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColDefUtil"]; });
57452
57453/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserComponentRegistry", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["UserComponentRegistry"]; });
57454
57455/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserComponentFactory", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["UserComponentFactory"]; });
57456
57457/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BeanStub", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]; });
57458
57459/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Context", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Context"]; });
57460
57461/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Autowired", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Autowired"]; });
57462
57463/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PostConstruct", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]; });
57464
57465/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PreConstruct", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PreConstruct"]; });
57466
57467/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Optional", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Optional"]; });
57468
57469/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Bean", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Bean"]; });
57470
57471/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Qualifier", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Qualifier"]; });
57472
57473/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PreDestroy", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PreDestroy"]; });
57474
57475/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuerySelector", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["QuerySelector"]; });
57476
57477/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RefSelector", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RefSelector"]; });
57478
57479/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ExcelFactoryMode", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ExcelFactoryMode"]; });
57480
57481/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragAndDropService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DragAndDropService"]; });
57482
57483/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragSourceType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DragSourceType"]; });
57484
57485/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HorizontalDirection", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HorizontalDirection"]; });
57486
57487/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VerticalDirection", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["VerticalDirection"]; });
57488
57489/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DragService"]; });
57490
57491/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Column", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Column"]; });
57492
57493/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnGroup", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnGroup"]; });
57494
57495/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvidedColumnGroup", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ProvidedColumnGroup"]; });
57496
57497/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNode", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowNode"]; });
57498
57499/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowHighlightPosition", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowHighlightPosition"]; });
57500
57501/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FilterManager", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["FilterManager"]; });
57502
57503/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvidedFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ProvidedFilter"]; });
57504
57505/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SimpleFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SimpleFilter"]; });
57506
57507/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScalarFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ScalarFilter"]; });
57508
57509/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["NumberFilter"]; });
57510
57511/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TextFilter"]; });
57512
57513/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DateFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DateFilter"]; });
57514
57515/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextFloatingFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TextFloatingFilter"]; });
57516
57517/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderFilterCellComp"]; });
57518
57519/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FloatingFilterMapper", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["FloatingFilterMapper"]; });
57520
57521/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridBodyComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridBodyComp"]; });
57522
57523/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridBodyCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridBodyCtrl"]; });
57524
57525/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowAnimationCssClasses", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowAnimationCssClasses"]; });
57526
57527/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScrollVisibleService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ScrollVisibleService"]; });
57528
57529/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MouseEventService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["MouseEventService"]; });
57530
57531/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NavigationService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["NavigationService"]; });
57532
57533/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowContainerComp"]; });
57534
57535/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerName", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowContainerName"]; });
57536
57537/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowContainerCtrl"]; });
57538
57539/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowContainerType"]; });
57540
57541/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getRowContainerTypeForName", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["getRowContainerTypeForName"]; });
57542
57543/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BodyDropPivotTarget", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BodyDropPivotTarget"]; });
57544
57545/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BodyDropTarget", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BodyDropTarget"]; });
57546
57547/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CssClassApplier", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CssClassApplier"]; });
57548
57549/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowContainerComp"]; });
57550
57551/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridHeaderComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridHeaderComp"]; });
57552
57553/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridHeaderCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridHeaderCtrl"]; });
57554
57555/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowComp"]; });
57556
57557/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowType"]; });
57558
57559/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowCtrl"]; });
57560
57561/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderCellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderCellCtrl"]; });
57562
57563/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderFilterCellCtrl"]; });
57564
57565/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupCellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderGroupCellCtrl"]; });
57566
57567/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AbstractHeaderCellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AbstractHeaderCellCtrl"]; });
57568
57569/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowContainerCtrl"]; });
57570
57571/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HorizontalResizeService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HorizontalResizeService"]; });
57572
57573/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MoveColumnFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["MoveColumnFeature"]; });
57574
57575/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StandardMenuFactory", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["StandardMenuFactory"]; });
57576
57577/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabbedLayout", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TabbedLayout"]; });
57578
57579/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "simpleHttpRequest", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["simpleHttpRequest"]; });
57580
57581/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResizeObserverService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ResizeObserverService"]; });
57582
57583/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AnimationFrameService"]; });
57584
57585/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LargeTextCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["LargeTextCellEditor"]; });
57586
57587/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupEditorWrapper", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupEditorWrapper"]; });
57588
57589/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupSelectCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupSelectCellEditor"]; });
57590
57591/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupTextCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupTextCellEditor"]; });
57592
57593/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SelectCellEditor"]; });
57594
57595/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TextCellEditor"]; });
57596
57597/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Beans", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Beans"]; });
57598
57599/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimateShowChangeCellRenderer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AnimateShowChangeCellRenderer"]; });
57600
57601/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimateSlideCellRenderer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AnimateSlideCellRenderer"]; });
57602
57603/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupCellRenderer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GroupCellRenderer"]; });
57604
57605/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupCellRendererCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GroupCellRendererCtrl"]; });
57606
57607/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SetLeftFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SetLeftFeature"]; });
57608
57609/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PositionableFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PositionableFeature"]; });
57610
57611/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AutoWidthCalculator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AutoWidthCalculator"]; });
57612
57613/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CheckboxSelectionComponent", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CheckboxSelectionComponent"]; });
57614
57615/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellComp"]; });
57616
57617/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellCtrl"]; });
57618
57619/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowCtrl"]; });
57620
57621/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowRenderer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowRenderer"]; });
57622
57623/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueFormatterService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ValueFormatterService"]; });
57624
57625/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PinnedRowModel", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PinnedRowModel"]; });
57626
57627/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ServerSideTransactionResultStatus", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ServerSideTransactionResultStatus"]; });
57628
57629/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChangedPath", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ChangedPath"]; });
57630
57631/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlock", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowNodeBlock"]; });
57632
57633/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlockLoader", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowNodeBlockLoader"]; });
57634
57635/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PaginationProxy", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PaginationProxy"]; });
57636
57637/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelSteps", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ClientSideRowModelSteps"]; });
57638
57639/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StylingService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["StylingService"]; });
57640
57641/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LayoutCssClasses", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["LayoutCssClasses"]; });
57642
57643/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgAbstractField", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgAbstractField"]; });
57644
57645/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgCheckbox", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgCheckbox"]; });
57646
57647/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgRadioButton", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgRadioButton"]; });
57648
57649/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgToggleButton", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgToggleButton"]; });
57650
57651/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputTextField", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgInputTextField"]; });
57652
57653/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputTextArea", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgInputTextArea"]; });
57654
57655/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputNumberField", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgInputNumberField"]; });
57656
57657/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputRange", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgInputRange"]; });
57658
57659/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgSelect", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgSelect"]; });
57660
57661/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgSlider", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgSlider"]; });
57662
57663/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgAngleSelect", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgAngleSelect"]; });
57664
57665/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgColorPicker", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgColorPicker"]; });
57666
57667/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgGroupComponent", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgGroupComponent"]; });
57668
57669/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuItemComponent", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgMenuItemComponent"]; });
57670
57671/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuList", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgMenuList"]; });
57672
57673/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuPanel", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgMenuPanel"]; });
57674
57675/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgDialog", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgDialog"]; });
57676
57677/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPanel", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgPanel"]; });
57678
57679/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Component"]; });
57680
57681/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CssClassManager", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CssClassManager"]; });
57682
57683/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ManagedFocusFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ManagedFocusFeature"]; });
57684
57685/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabGuardComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TabGuardComp"]; });
57686
57687/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabGuardCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TabGuardCtrl"]; });
57688
57689/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupComponent", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupComponent"]; });
57690
57691/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupService"]; });
57692
57693/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchListener", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TouchListener"]; });
57694
57695/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualList", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["VirtualList"]; });
57696
57697/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellRangeType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellRangeType"]; });
57698
57699/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectionHandleType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SelectionHandleType"]; });
57700
57701/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AutoScrollService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AutoScrollService"]; });
57702
57703/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VanillaFrameworkOverrides", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["VanillaFrameworkOverrides"]; });
57704
57705/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellNavigationService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellNavigationService"]; });
57706
57707/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AlignedGridsService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AlignedGridsService"]; });
57708
57709/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Constants", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Constants"]; });
57710
57711/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "KeyCode", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["KeyCode"]; });
57712
57713/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Grid"]; });
57714
57715/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridCoreCreator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridCoreCreator"]; });
57716
57717/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridApi", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridApi"]; });
57718
57719/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Events"]; });
57720
57721/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FocusService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["FocusService"]; });
57722
57723/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultGroupComparator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["defaultGroupComparator"]; });
57724
57725/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridOptionsWrapper", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"]; });
57726
57727/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EventService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["EventService"]; });
57728
57729/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectableService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SelectableService"]; });
57730
57731/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeSorter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowNodeSorter"]; });
57732
57733/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CtrlsService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CtrlsService"]; });
57734
57735/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridComp"]; });
57736
57737/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridCtrl"]; });
57738
57739/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Logger", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Logger"]; });
57740
57741/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LoggerFactory", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["LoggerFactory"]; });
57742
57743/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectionService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SelectionService"]; });
57744
57745/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SortController", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SortController"]; });
57746
57747/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TemplateService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TemplateService"]; });
57748
57749/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Color"]; });
57750
57751/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stringToArray", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["stringToArray"]; });
57752
57753/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["_"]; });
57754
57755/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberSequence", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["NumberSequence"]; });
57756
57757/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromiseStatus", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgPromiseStatus"]; });
57758
57759/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromise", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgPromise"]; });
57760
57761/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Timer"]; });
57762
57763/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ValueService"]; });
57764
57765/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueCache", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ValueCache"]; });
57766
57767/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ExpressionService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ExpressionService"]; });
57768
57769/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellPositionUtils", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellPositionUtils"]; });
57770
57771/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowPositionUtils", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowPositionUtils"]; });
57772
57773/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderPositionUtils", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderPositionUtils"]; });
57774
57775/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderNavigationService"]; });
57776
57777/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationDirection", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderNavigationDirection"]; });
57778
57779/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PropertyKeys", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PropertyKeys"]; });
57780
57781/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnApi", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnApi"]; });
57782
57783/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseComponentWrapper", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BaseComponentWrapper"]; });
57784
57785/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Environment"]; });
57786
57787/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CustomTooltipFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CustomTooltipFeature"]; });
57788
57789/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BarColumnLabelPlacement", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BarColumnLabelPlacement"]; });
57790
57791/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModuleNames", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"]; });
57792
57793/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModuleRegistry", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ModuleRegistry"]; });
57794
57795
57796
57797
57798var 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"]];
57799
57800
57801
57802
57803
57804
57805/***/ }),
57806/* 275 */
57807/***/ (function(module, exports, __webpack_require__) {
57808
57809var api = __webpack_require__(276);
57810 var content = __webpack_require__(277);
57811
57812 content = content.__esModule ? content.default : content;
57813
57814 if (typeof content === 'string') {
57815 content = [[module.i, content, '']];
57816 }
57817
57818var options = {};
57819
57820options.insert = "head";
57821options.singleton = false;
57822
57823var update = api(content, options);
57824
57825
57826
57827module.exports = content.locals || {};
57828
57829/***/ }),
57830/* 276 */
57831/***/ (function(module, exports, __webpack_require__) {
57832
57833"use strict";
57834
57835
57836var isOldIE = function isOldIE() {
57837 var memo;
57838 return function memorize() {
57839 if (typeof memo === 'undefined') {
57840 // Test for IE <= 9 as proposed by Browserhacks
57841 // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
57842 // Tests for existence of standard globals is to allow style-loader
57843 // to operate correctly into non-standard environments
57844 // @see https://github.com/webpack-contrib/style-loader/issues/177
57845 memo = Boolean(window && document && document.all && !window.atob);
57846 }
57847
57848 return memo;
57849 };
57850}();
57851
57852var getTarget = function getTarget() {
57853 var memo = {};
57854 return function memorize(target) {
57855 if (typeof memo[target] === 'undefined') {
57856 var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
57857
57858 if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
57859 try {
57860 // This will throw an exception if access to iframe is blocked
57861 // due to cross-origin restrictions
57862 styleTarget = styleTarget.contentDocument.head;
57863 } catch (e) {
57864 // istanbul ignore next
57865 styleTarget = null;
57866 }
57867 }
57868
57869 memo[target] = styleTarget;
57870 }
57871
57872 return memo[target];
57873 };
57874}();
57875
57876var stylesInDom = [];
57877
57878function getIndexByIdentifier(identifier) {
57879 var result = -1;
57880
57881 for (var i = 0; i < stylesInDom.length; i++) {
57882 if (stylesInDom[i].identifier === identifier) {
57883 result = i;
57884 break;
57885 }
57886 }
57887
57888 return result;
57889}
57890
57891function modulesToDom(list, options) {
57892 var idCountMap = {};
57893 var identifiers = [];
57894
57895 for (var i = 0; i < list.length; i++) {
57896 var item = list[i];
57897 var id = options.base ? item[0] + options.base : item[0];
57898 var count = idCountMap[id] || 0;
57899 var identifier = "".concat(id, " ").concat(count);
57900 idCountMap[id] = count + 1;
57901 var index = getIndexByIdentifier(identifier);
57902 var obj = {
57903 css: item[1],
57904 media: item[2],
57905 sourceMap: item[3]
57906 };
57907
57908 if (index !== -1) {
57909 stylesInDom[index].references++;
57910 stylesInDom[index].updater(obj);
57911 } else {
57912 stylesInDom.push({
57913 identifier: identifier,
57914 updater: addStyle(obj, options),
57915 references: 1
57916 });
57917 }
57918
57919 identifiers.push(identifier);
57920 }
57921
57922 return identifiers;
57923}
57924
57925function insertStyleElement(options) {
57926 var style = document.createElement('style');
57927 var attributes = options.attributes || {};
57928
57929 if (typeof attributes.nonce === 'undefined') {
57930 var nonce = true ? __webpack_require__.nc : undefined;
57931
57932 if (nonce) {
57933 attributes.nonce = nonce;
57934 }
57935 }
57936
57937 Object.keys(attributes).forEach(function (key) {
57938 style.setAttribute(key, attributes[key]);
57939 });
57940
57941 if (typeof options.insert === 'function') {
57942 options.insert(style);
57943 } else {
57944 var target = getTarget(options.insert || 'head');
57945
57946 if (!target) {
57947 throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
57948 }
57949
57950 target.appendChild(style);
57951 }
57952
57953 return style;
57954}
57955
57956function removeStyleElement(style) {
57957 // istanbul ignore if
57958 if (style.parentNode === null) {
57959 return false;
57960 }
57961
57962 style.parentNode.removeChild(style);
57963}
57964/* istanbul ignore next */
57965
57966
57967var replaceText = function replaceText() {
57968 var textStore = [];
57969 return function replace(index, replacement) {
57970 textStore[index] = replacement;
57971 return textStore.filter(Boolean).join('\n');
57972 };
57973}();
57974
57975function applyToSingletonTag(style, index, remove, obj) {
57976 var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE
57977
57978 /* istanbul ignore if */
57979
57980 if (style.styleSheet) {
57981 style.styleSheet.cssText = replaceText(index, css);
57982 } else {
57983 var cssNode = document.createTextNode(css);
57984 var childNodes = style.childNodes;
57985
57986 if (childNodes[index]) {
57987 style.removeChild(childNodes[index]);
57988 }
57989
57990 if (childNodes.length) {
57991 style.insertBefore(cssNode, childNodes[index]);
57992 } else {
57993 style.appendChild(cssNode);
57994 }
57995 }
57996}
57997
57998function applyToTag(style, options, obj) {
57999 var css = obj.css;
58000 var media = obj.media;
58001 var sourceMap = obj.sourceMap;
58002
58003 if (media) {
58004 style.setAttribute('media', media);
58005 } else {
58006 style.removeAttribute('media');
58007 }
58008
58009 if (sourceMap && typeof btoa !== 'undefined') {
58010 css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
58011 } // For old IE
58012
58013 /* istanbul ignore if */
58014
58015
58016 if (style.styleSheet) {
58017 style.styleSheet.cssText = css;
58018 } else {
58019 while (style.firstChild) {
58020 style.removeChild(style.firstChild);
58021 }
58022
58023 style.appendChild(document.createTextNode(css));
58024 }
58025}
58026
58027var singleton = null;
58028var singletonCounter = 0;
58029
58030function addStyle(obj, options) {
58031 var style;
58032 var update;
58033 var remove;
58034
58035 if (options.singleton) {
58036 var styleIndex = singletonCounter++;
58037 style = singleton || (singleton = insertStyleElement(options));
58038 update = applyToSingletonTag.bind(null, style, styleIndex, false);
58039 remove = applyToSingletonTag.bind(null, style, styleIndex, true);
58040 } else {
58041 style = insertStyleElement(options);
58042 update = applyToTag.bind(null, style, options);
58043
58044 remove = function remove() {
58045 removeStyleElement(style);
58046 };
58047 }
58048
58049 update(obj);
58050 return function updateStyle(newObj) {
58051 if (newObj) {
58052 if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
58053 return;
58054 }
58055
58056 update(obj = newObj);
58057 } else {
58058 remove();
58059 }
58060 };
58061}
58062
58063module.exports = function (list, options) {
58064 options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
58065 // tags it will allow on a page
58066
58067 if (!options.singleton && typeof options.singleton !== 'boolean') {
58068 options.singleton = isOldIE();
58069 }
58070
58071 list = list || [];
58072 var lastIdentifiers = modulesToDom(list, options);
58073 return function update(newList) {
58074 newList = newList || [];
58075
58076 if (Object.prototype.toString.call(newList) !== '[object Array]') {
58077 return;
58078 }
58079
58080 for (var i = 0; i < lastIdentifiers.length; i++) {
58081 var identifier = lastIdentifiers[i];
58082 var index = getIndexByIdentifier(identifier);
58083 stylesInDom[index].references--;
58084 }
58085
58086 var newLastIdentifiers = modulesToDom(newList, options);
58087
58088 for (var _i = 0; _i < lastIdentifiers.length; _i++) {
58089 var _identifier = lastIdentifiers[_i];
58090
58091 var _index = getIndexByIdentifier(_identifier);
58092
58093 if (stylesInDom[_index].references === 0) {
58094 stylesInDom[_index].updater();
58095
58096 stylesInDom.splice(_index, 1);
58097 }
58098 }
58099
58100 lastIdentifiers = newLastIdentifiers;
58101 };
58102};
58103
58104/***/ }),
58105/* 277 */
58106/***/ (function(module, exports, __webpack_require__) {
58107
58108// Imports
58109var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58110exports = ___CSS_LOADER_API_IMPORT___(false);
58111// Module
58112exports.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", ""]);
58113// Exports
58114module.exports = exports;
58115
58116
58117/***/ }),
58118/* 278 */
58119/***/ (function(module, exports, __webpack_require__) {
58120
58121"use strict";
58122
58123
58124/*
58125 MIT License http://www.opensource.org/licenses/mit-license.php
58126 Author Tobias Koppers @sokra
58127*/
58128// css base code, injected by the css-loader
58129// eslint-disable-next-line func-names
58130module.exports = function (useSourceMap) {
58131 var list = []; // return the list of modules as css string
58132
58133 list.toString = function toString() {
58134 return this.map(function (item) {
58135 var content = cssWithMappingToString(item, useSourceMap);
58136
58137 if (item[2]) {
58138 return "@media ".concat(item[2], " {").concat(content, "}");
58139 }
58140
58141 return content;
58142 }).join('');
58143 }; // import a list of modules into the list
58144 // eslint-disable-next-line func-names
58145
58146
58147 list.i = function (modules, mediaQuery, dedupe) {
58148 if (typeof modules === 'string') {
58149 // eslint-disable-next-line no-param-reassign
58150 modules = [[null, modules, '']];
58151 }
58152
58153 var alreadyImportedModules = {};
58154
58155 if (dedupe) {
58156 for (var i = 0; i < this.length; i++) {
58157 // eslint-disable-next-line prefer-destructuring
58158 var id = this[i][0];
58159
58160 if (id != null) {
58161 alreadyImportedModules[id] = true;
58162 }
58163 }
58164 }
58165
58166 for (var _i = 0; _i < modules.length; _i++) {
58167 var item = [].concat(modules[_i]);
58168
58169 if (dedupe && alreadyImportedModules[item[0]]) {
58170 // eslint-disable-next-line no-continue
58171 continue;
58172 }
58173
58174 if (mediaQuery) {
58175 if (!item[2]) {
58176 item[2] = mediaQuery;
58177 } else {
58178 item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
58179 }
58180 }
58181
58182 list.push(item);
58183 }
58184 };
58185
58186 return list;
58187};
58188
58189function cssWithMappingToString(item, useSourceMap) {
58190 var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring
58191
58192 var cssMapping = item[3];
58193
58194 if (!cssMapping) {
58195 return content;
58196 }
58197
58198 if (useSourceMap && typeof btoa === 'function') {
58199 var sourceMapping = toComment(cssMapping);
58200 var sourceURLs = cssMapping.sources.map(function (source) {
58201 return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */");
58202 });
58203 return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
58204 }
58205
58206 return [content].join('\n');
58207} // Adapted from convert-source-map (MIT)
58208
58209
58210function toComment(sourceMap) {
58211 // eslint-disable-next-line no-undef
58212 var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
58213 var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
58214 return "/*# ".concat(data, " */");
58215}
58216
58217/***/ }),
58218/* 279 */
58219/***/ (function(module, exports, __webpack_require__) {
58220
58221var api = __webpack_require__(276);
58222 var content = __webpack_require__(280);
58223
58224 content = content.__esModule ? content.default : content;
58225
58226 if (typeof content === 'string') {
58227 content = [[module.i, content, '']];
58228 }
58229
58230var options = {};
58231
58232options.insert = "head";
58233options.singleton = false;
58234
58235var update = api(content, options);
58236
58237
58238
58239module.exports = content.locals || {};
58240
58241/***/ }),
58242/* 280 */
58243/***/ (function(module, exports, __webpack_require__) {
58244
58245// Imports
58246var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58247exports = ___CSS_LOADER_API_IMPORT___(false);
58248// Module
58249exports.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", ""]);
58250// Exports
58251module.exports = exports;
58252
58253
58254/***/ }),
58255/* 281 */
58256/***/ (function(module, exports, __webpack_require__) {
58257
58258var api = __webpack_require__(276);
58259 var content = __webpack_require__(282);
58260
58261 content = content.__esModule ? content.default : content;
58262
58263 if (typeof content === 'string') {
58264 content = [[module.i, content, '']];
58265 }
58266
58267var options = {};
58268
58269options.insert = "head";
58270options.singleton = false;
58271
58272var update = api(content, options);
58273
58274
58275
58276module.exports = content.locals || {};
58277
58278/***/ }),
58279/* 282 */
58280/***/ (function(module, exports, __webpack_require__) {
58281
58282// Imports
58283var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58284exports = ___CSS_LOADER_API_IMPORT___(false);
58285// Module
58286exports.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", ""]);
58287// Exports
58288module.exports = exports;
58289
58290
58291/***/ }),
58292/* 283 */
58293/***/ (function(module, exports, __webpack_require__) {
58294
58295var api = __webpack_require__(276);
58296 var content = __webpack_require__(284);
58297
58298 content = content.__esModule ? content.default : content;
58299
58300 if (typeof content === 'string') {
58301 content = [[module.i, content, '']];
58302 }
58303
58304var options = {};
58305
58306options.insert = "head";
58307options.singleton = false;
58308
58309var update = api(content, options);
58310
58311
58312
58313module.exports = content.locals || {};
58314
58315/***/ }),
58316/* 284 */
58317/***/ (function(module, exports, __webpack_require__) {
58318
58319// Imports
58320var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58321exports = ___CSS_LOADER_API_IMPORT___(false);
58322// Module
58323exports.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", ""]);
58324// Exports
58325module.exports = exports;
58326
58327
58328/***/ }),
58329/* 285 */
58330/***/ (function(module, exports, __webpack_require__) {
58331
58332var api = __webpack_require__(276);
58333 var content = __webpack_require__(286);
58334
58335 content = content.__esModule ? content.default : content;
58336
58337 if (typeof content === 'string') {
58338 content = [[module.i, content, '']];
58339 }
58340
58341var options = {};
58342
58343options.insert = "head";
58344options.singleton = false;
58345
58346var update = api(content, options);
58347
58348
58349
58350module.exports = content.locals || {};
58351
58352/***/ }),
58353/* 286 */
58354/***/ (function(module, exports, __webpack_require__) {
58355
58356// Imports
58357var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58358exports = ___CSS_LOADER_API_IMPORT___(false);
58359// Module
58360exports.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", ""]);
58361// Exports
58362module.exports = exports;
58363
58364
58365/***/ }),
58366/* 287 */
58367/***/ (function(module, exports, __webpack_require__) {
58368
58369var api = __webpack_require__(276);
58370 var content = __webpack_require__(288);
58371
58372 content = content.__esModule ? content.default : content;
58373
58374 if (typeof content === 'string') {
58375 content = [[module.i, content, '']];
58376 }
58377
58378var options = {};
58379
58380options.insert = "head";
58381options.singleton = false;
58382
58383var update = api(content, options);
58384
58385
58386
58387module.exports = content.locals || {};
58388
58389/***/ }),
58390/* 288 */
58391/***/ (function(module, exports, __webpack_require__) {
58392
58393// Imports
58394var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58395exports = ___CSS_LOADER_API_IMPORT___(false);
58396// Module
58397exports.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", ""]);
58398// Exports
58399module.exports = exports;
58400
58401
58402/***/ }),
58403/* 289 */
58404/***/ (function(module, exports, __webpack_require__) {
58405
58406var api = __webpack_require__(276);
58407 var content = __webpack_require__(290);
58408
58409 content = content.__esModule ? content.default : content;
58410
58411 if (typeof content === 'string') {
58412 content = [[module.i, content, '']];
58413 }
58414
58415var options = {};
58416
58417options.insert = "head";
58418options.singleton = false;
58419
58420var update = api(content, options);
58421
58422
58423
58424module.exports = content.locals || {};
58425
58426/***/ }),
58427/* 290 */
58428/***/ (function(module, exports, __webpack_require__) {
58429
58430// Imports
58431var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58432exports = ___CSS_LOADER_API_IMPORT___(false);
58433// Module
58434exports.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", ""]);
58435// Exports
58436module.exports = exports;
58437
58438
58439/***/ }),
58440/* 291 */
58441/***/ (function(module, exports, __webpack_require__) {
58442
58443var api = __webpack_require__(276);
58444 var content = __webpack_require__(292);
58445
58446 content = content.__esModule ? content.default : content;
58447
58448 if (typeof content === 'string') {
58449 content = [[module.i, content, '']];
58450 }
58451
58452var options = {};
58453
58454options.insert = "head";
58455options.singleton = false;
58456
58457var update = api(content, options);
58458
58459
58460
58461module.exports = content.locals || {};
58462
58463/***/ }),
58464/* 292 */
58465/***/ (function(module, exports, __webpack_require__) {
58466
58467// Imports
58468var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58469exports = ___CSS_LOADER_API_IMPORT___(false);
58470// Module
58471exports.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", ""]);
58472// Exports
58473module.exports = exports;
58474
58475
58476/***/ }),
58477/* 293 */
58478/***/ (function(module, exports, __webpack_require__) {
58479
58480var api = __webpack_require__(276);
58481 var content = __webpack_require__(294);
58482
58483 content = content.__esModule ? content.default : content;
58484
58485 if (typeof content === 'string') {
58486 content = [[module.i, content, '']];
58487 }
58488
58489var options = {};
58490
58491options.insert = "head";
58492options.singleton = false;
58493
58494var update = api(content, options);
58495
58496
58497
58498module.exports = content.locals || {};
58499
58500/***/ }),
58501/* 294 */
58502/***/ (function(module, exports, __webpack_require__) {
58503
58504// Imports
58505var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58506exports = ___CSS_LOADER_API_IMPORT___(false);
58507// Module
58508exports.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", ""]);
58509// Exports
58510module.exports = exports;
58511
58512
58513/***/ }),
58514/* 295 */
58515/***/ (function(module, exports, __webpack_require__) {
58516
58517var api = __webpack_require__(276);
58518 var content = __webpack_require__(296);
58519
58520 content = content.__esModule ? content.default : content;
58521
58522 if (typeof content === 'string') {
58523 content = [[module.i, content, '']];
58524 }
58525
58526var options = {};
58527
58528options.insert = "head";
58529options.singleton = false;
58530
58531var update = api(content, options);
58532
58533
58534
58535module.exports = content.locals || {};
58536
58537/***/ }),
58538/* 296 */
58539/***/ (function(module, exports, __webpack_require__) {
58540
58541// Imports
58542var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58543exports = ___CSS_LOADER_API_IMPORT___(false);
58544// Module
58545exports.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", ""]);
58546// Exports
58547module.exports = exports;
58548
58549
58550/***/ }),
58551/* 297 */
58552/***/ (function(module, exports, __webpack_require__) {
58553
58554var api = __webpack_require__(276);
58555 var content = __webpack_require__(298);
58556
58557 content = content.__esModule ? content.default : content;
58558
58559 if (typeof content === 'string') {
58560 content = [[module.i, content, '']];
58561 }
58562
58563var options = {};
58564
58565options.insert = "head";
58566options.singleton = false;
58567
58568var update = api(content, options);
58569
58570
58571
58572module.exports = content.locals || {};
58573
58574/***/ }),
58575/* 298 */
58576/***/ (function(module, exports, __webpack_require__) {
58577
58578// Imports
58579var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58580exports = ___CSS_LOADER_API_IMPORT___(false);
58581// Module
58582exports.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", ""]);
58583// Exports
58584module.exports = exports;
58585
58586
58587/***/ }),
58588/* 299 */
58589/***/ (function(module, exports, __webpack_require__) {
58590
58591var api = __webpack_require__(276);
58592 var content = __webpack_require__(300);
58593
58594 content = content.__esModule ? content.default : content;
58595
58596 if (typeof content === 'string') {
58597 content = [[module.i, content, '']];
58598 }
58599
58600var options = {};
58601
58602options.insert = "head";
58603options.singleton = false;
58604
58605var update = api(content, options);
58606
58607
58608
58609module.exports = content.locals || {};
58610
58611/***/ }),
58612/* 300 */
58613/***/ (function(module, exports, __webpack_require__) {
58614
58615// Imports
58616var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58617exports = ___CSS_LOADER_API_IMPORT___(false);
58618// Module
58619exports.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", ""]);
58620// Exports
58621module.exports = exports;
58622
58623
58624/***/ }),
58625/* 301 */
58626/***/ (function(module, exports, __webpack_require__) {
58627
58628var api = __webpack_require__(276);
58629 var content = __webpack_require__(302);
58630
58631 content = content.__esModule ? content.default : content;
58632
58633 if (typeof content === 'string') {
58634 content = [[module.i, content, '']];
58635 }
58636
58637var options = {};
58638
58639options.insert = "head";
58640options.singleton = false;
58641
58642var update = api(content, options);
58643
58644
58645
58646module.exports = content.locals || {};
58647
58648/***/ }),
58649/* 302 */
58650/***/ (function(module, exports, __webpack_require__) {
58651
58652// Imports
58653var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58654exports = ___CSS_LOADER_API_IMPORT___(false);
58655// Module
58656exports.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", ""]);
58657// Exports
58658module.exports = exports;
58659
58660
58661/***/ }),
58662/* 303 */
58663/***/ (function(module, exports, __webpack_require__) {
58664
58665var api = __webpack_require__(276);
58666 var content = __webpack_require__(304);
58667
58668 content = content.__esModule ? content.default : content;
58669
58670 if (typeof content === 'string') {
58671 content = [[module.i, content, '']];
58672 }
58673
58674var options = {};
58675
58676options.insert = "head";
58677options.singleton = false;
58678
58679var update = api(content, options);
58680
58681
58682
58683module.exports = content.locals || {};
58684
58685/***/ }),
58686/* 304 */
58687/***/ (function(module, exports, __webpack_require__) {
58688
58689// Imports
58690var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58691exports = ___CSS_LOADER_API_IMPORT___(false);
58692// Module
58693exports.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", ""]);
58694// Exports
58695module.exports = exports;
58696
58697
58698/***/ })
58699/******/ ]);
58700});
\No newline at end of file