@genesislcap/design-system-configurator 15.30.1 → 15.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/dist/{326.326.907adf143069854da5fa.js → 11.11.5c40c4d843db071141f4.js} +71 -71
  2. package/dist/11.d2c3136979fd1ff6a6ae817575abccd8.js.map +1 -0
  3. package/dist/{445.445.5773584467e5d79e6717.js → 387.387.a488f87cce11f32d92bb.js} +113 -39
  4. package/dist/387.59261dcf1a288c8c99ec8ed9b93fe168.js.map +1 -0
  5. package/dist/{588.588.85f1658618ca3f5c3c1b.js → 445.445.c8e3c7ef0c4d13438003.js} +3 -3
  6. package/dist/{588.f1b74829e297a3ecfc5e695e8194c171.js.map → 445.ab373087522fc0c62da0ea72ff58d201.js.map} +1 -1
  7. package/dist/47.47.5bdf8ddf985fb53edd74.js +1093 -0
  8. package/dist/47.c5e5e6beb5c609952d2862513cbe55fe.js.map +1 -0
  9. package/dist/{826.826.279cec1412a2a3d19294.js → 826.826.33783a134ae3bf2ef634.js} +2 -2
  10. package/dist/designSystemConfigurator.7dddd25162dcc4984c5d56a81242c6ea.js.map +1 -0
  11. package/dist/index.html +1 -1
  12. package/dist/main.cb1bed9bc83fbf18d1179147eb103a34.js.map +1 -0
  13. package/dist/main.e029066c32ec19d38cca.js +2 -0
  14. package/dist/remoteEntry.js +2 -2
  15. package/package.json +12 -12
  16. package/dist/326.32a50750d5bbd77af960da1f670b60e7.js.map +0 -1
  17. package/dist/445.ccbb471b8bb9a704f7d9cc0073f43a58.js.map +0 -1
  18. package/dist/625.295a96ecbe30dd36ea5fc96aad3716f6.js.map +0 -1
  19. package/dist/625.625.19d1f86043f46d3fa132.js +0 -1169
  20. package/dist/designSystemConfigurator.d2aa0f210f8ca1dc0ccf26ced8c8abeb.js.map +0 -1
  21. package/dist/main.2798bb968e5b27a100c8.js +0 -2
  22. package/dist/main.3bafc65bacb95b76e2a532080e332fd9.js.map +0 -1
  23. /package/dist/{588.588.85f1658618ca3f5c3c1b.js.LICENSE.txt → 445.445.c8e3c7ef0c4d13438003.js.LICENSE.txt} +0 -0
  24. /package/dist/{826.826.279cec1412a2a3d19294.js.LICENSE.txt → 826.826.33783a134ae3bf2ef634.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"387.387.xxxxxxxxxxxxxxxxxxxx.js","mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCDrB,MAAAgrC,EAAgC5N,EAAAp9B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECAnCirC,EAAgC7N,EAAAp9B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,yBACA,WACA,8BACA,qBACA,gBACA,yBACA,2BACA,cACA,gBACA,2BACA,4BACA,gCACA,+BACA,cACA,YACA,UACA,sBACA,oBACA,qBACA,eACA,eACA,aACA,cACA,mBACA,sBACA,cACA,WACA,YACA,kBACA,YACA,eACA,oBACA,wBACA,oBACA,yBACA,uBACA,2BACA,6BACA,kBACA,mBACA,kCACA,mBACA,mBACA,oBACA,qBACA,iBACA,0BACA,4BACA,iBACA,6BACA,0BACA,sBACA,2BACA,iBACA,gBACA,WACA,wCACA,4BACA,wBACA,oBACA,2BACA,6BACA,2BACA,QACA,wBACA,wBACA,uBACA,qBACA,0BACA,2BACA,mBACA,yBACA,aACA,oBACA,kBACA,kBACA,yBACA,wBACA,mBACA,uBACA,4BACA,8BACA,yBACA,2BACA,uBACA,oBACA,mBACA,+BACA,YACA,gBACA,sBACA,iCACA,sBACA,gCACA,wBACA,gCACA,+BACA,6BACA,qCACA,8BACA,yBACA,8BACA,YACA,0BACA,+BACA,yBACA,4BACA,mBACA,oBACA,cACA,uBACA,4BACA,kCACA,YACA,oBACA,mBACA,iBACA,kBACA,8BACA,kBACA,kBACA,qBACA,0BACA,uBACA,uBACA,aACA,yBACA,0BACA,kCACA,sBACA,mBACA,sCACA,iBACA,eACA,0BACA,aACA,yBACA,8BACA,yBACA,sBACA,oBACA,WACA,eACA,8BACA,0BACA,iBACA,6BACA,0BACA,4BACA,uBACA,yBACA,+BACA,eACA,8BACA,gCACA,gCACA,0BACA,gCACA,oCACA,uCACA,oBACA,iBACA,oBACA,8BACA,sBACA,gCACA,gBACA,0BACA,gCACA,4BACA,sBACA,kCACA,gCACA,0BACA,4BACA,yBACA,2BACA,0BACA,kBACA,uBACA,4CACA,gCACA,sBACA,qBACA,uBACA,UACA,kBACA,eACA,4BACA,+BACA,uBACA,4CACA,+BACA,kBACA,mCACA,4BACA,6BACA,yBACA,iBACA,yBACA,mBACA,kBACA,yBACA,8BACA,2BACA,gCACA,wBACA,kBACA,WACA,8BACA,cACA,mBACA,4BACA,wBACA,iCACA,sBACA,+BACA,0BACA,mCACA,yBACA,kCACA,qBACA,8BACA,gBACA,0BACA,eACA,cACA,cACA,sBACA,mBACA,uBACA,0BACA,iBACA,eACA,iBACA,kBACA,uBACA,kBACA,qBACA,gBACA,2BACA,cACA,mBACA,gBACA,cACA,cACA,eACA,4BACA,iCACA,4BACA,2BACA,wBACA,oBACA,uBACA,uBACA,gBACA,+BACA,2BACA,gCACA,iCACA,uBACA,8BACA,8BACA,WACA,qBAOOC,EAAA,CACP,YACA,kBACA,YACA,eACA,oBACA,wBACA,oBACA,yBACA,uBACA,2BACA,6BACA,kBACA,mBACA,kCACA,mBACA,mBACA,oBACA,qBACA,iBACA,0BACA,4BACA,iBACA,6BACA,0BACA,sBACA,2BACA,iBACA,gBACA,YAOOC,EAAA,CACP,wCACA,4BACA,wBACA,oBACA,2BACA,6BACA,2BACA,QACA,wBACA,wBACA,uBACA,qBACA,0BACA,2BACA,mBACA,yBACA,aACA,oBACA,kBACA,kBACA,yBACA,wBACA,mBACA,uBACA,4BACA,8BACA,yBACA,2BACA,uBACA,oBACA,mBACA,+BACA,YACA,gBACA,sBACA,iCACA,sBACA,gCACA,wBACA,gCACA,+BACA,6BACA,qCACA,8BACA,yBACA,8BACA,YACA,0BACA,+BACA,yBACA,4BACA,mBACA,oBACA,cACA,uBACA,4BACA,kCACA,YACA,oBACA,mBACA,iBACA,kBACA,8BACA,kBACA,kBACA,qBACA,0BACA,uBACA,uBACA,aACA,yBACA,0BACA,kCACA,sBACA,mBACA,sCACA,iBACA,eACA,0BACA,aACA,yBACA,8BACA,yBACA,sBACA,oBACA,WACA,eACA,8BACA,0BACA,iBACA,6BACA,0BACA,4BACA,uBACA,yBACA,+BACA,eACA,8BACA,gCACA,gCACA,0BACA,gCACA,oCACA,uCACA,oBACA,iBACA,oBACA,8BACA,sBACA,gCACA,gBACA,0BA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","sources":["webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-editors/date.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-editors/multiselect.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-editors/number.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-editors/select.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-editors/string.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/action.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/actions-menu.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/boolean.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/editable.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/icon.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/select.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/status-pill.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/text-field.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/text.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell-renderers/utils/accessor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell/cell.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/cell/cell.template.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-selection/column-picker-ag-drag.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-selection/column-picker.utils.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-selection/column-selection.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-selection/column-selection.styles.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-selection/column-selection.template.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-selection/grid-pro-column-drag-bridge.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-selection/resolve-columns-picker-api.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column/column.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column/column.template.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column/utils/grid-pro-columns.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/base.datasource.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/base.types.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/client-side.datasource.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/dataserver-result.filter.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/delivered-block.ledger.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/error-handler.dialog.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/filter.utils.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/row-match.classes.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/row-match.types.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/server-side.resource-base.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/server-side.resource-dataserver.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/server-side.resource-reqrep.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/server-side.datasource.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/server-side.grid-definitions.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/external/ag-head-css.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/external/fonts.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/external/ag-grid-css.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/external/ag-theme-alpine-no-font-css.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/external/ag-theme-balham-no-font-css.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/external/ag-theme-material-no-font-css.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/external/index.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro-genesis-datasource/datasource-events.types.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro-genesis-datasource/grid-pro-genesis-datasource.config.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/client-side.grid-definitions.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro-genesis-datasource/grid-pro-genesis-datasource.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro.definitions.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro.styles.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro.template.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro.types.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/state-persistence/local-state.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/state-persistence/state-persistence.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/status-bar-components/label-value.status-bar.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/status-bar-components/load-more.status-bar.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/status-bar-components/reload.status-bar.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/status-bar-components/row-count.status-bar.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/tooltips/error-tooltip.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/utils/array.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/utils/error.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/utils/logger.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/utils/map.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/utils/string.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-utils/dist/esm/mixins/lifecycle/lifecycle.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-utils/dist/esm/utils/delay.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-utils/dist/esm/utils/dom.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-utils/dist/esm/utils/logger.js"],"sourcesContent":["import { __decorate } from \"tslib\";\nimport { css, html, observable, ref } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport { EDITED_COLUMN_FIELD } from '../grid-pro.types';\ndayjs.extend(utc);\n/**\n * The AG Date Editor element.\n * @public\n * @tagname %%prefix%%-date-editor\n */\nexport class DateEditor extends FoundationElement {\n init(params) {\n if (!params)\n return;\n this.setAttribute('tabindex', '-1');\n this.params = params;\n this.value = params.value;\n this.dateFormat = params.withTime ? 'YYYY-MM-DDTHH:mm' : 'YYYY-MM-DD';\n this.inputType = params.withTime ? 'datetime-local' : 'date';\n this.actualWidth = params.column.getActualWidth();\n }\n getGui() {\n return this;\n }\n refresh(params) {\n return true;\n }\n getValue() {\n return this.value;\n }\n isPopup() {\n return true;\n }\n changeHandler(event) {\n const dateValue = event.target.control.valueAsNumber;\n this.value = !isNaN(dateValue) ? dateValue : undefined;\n }\n afterGuiAttached() {\n this.input.focus();\n }\n isCancelBeforeStart() {\n return !!this.params.data[EDITED_COLUMN_FIELD];\n }\n}\n__decorate([\n observable\n], DateEditor.prototype, \"value\", void 0);\n__decorate([\n observable\n], DateEditor.prototype, \"actualWidth\", void 0);\n/**\n * The AG Select Renderer Styles.\n * @public\n */\nexport const agDateEditorStyles = css `\n :host {\n display: flex;\n }\n`;\n/**\n * Get a Design System prefixed Select template.\n * @param prefix - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Select component template prefixed with the correct design system.\n * @public\n */\nexport const getDateEditorTemplate = (prefix = 'foundation') => html `\n <${prefix}-text-field\n ${ref('input')}\n :value=${(x) => x.value === undefined || x.value === null ? '' : dayjs.utc(x.value).format(x.dateFormat)}\n type=${(x) => x.inputType}\n @input=${(x, c) => x.changeHandler(c.event)}\n style=\"width: ${(x) => x.actualWidth}px\"\n ></${prefix}-text-field>\n`;\n/**\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-select-editor\\>\n */\nexport const foundationDateEditor = DateEditor.compose({\n baseName: 'date-editor',\n styles: agDateEditorStyles,\n template: getDateEditorTemplate(),\n});\n","import { __decorate } from \"tslib\";\nimport { css, html, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { EDITED_COLUMN_FIELD } from '../grid-pro.types';\n/**\n * The AG Multiselect Editor element.\n * @public\n * @tagname %%prefix%%-multiselect-editor\n */\nexport class MultiselectEditor extends FoundationElement {\n init(params) {\n if (!params)\n return;\n this.setAttribute('tabindex', '-1');\n this.params = params;\n this.selectedOptions = params.value;\n // DATASERVER does not support array type so selected options could be fetched from another resource\n if (this.params.selectedOptionsCallback) {\n this.params.selectedOptionsCallback(this.params.data).then((selectedOptions) => {\n this.selectedOptions = selectedOptions;\n });\n }\n // if value was provided as string component will assume it's in csv syntax\n if (typeof params.value === 'string') {\n this.selectedOptions = params.value.split(',');\n }\n }\n getGui() {\n return this;\n }\n destroy() { }\n refresh(params) {\n return true;\n }\n getValue() {\n return this.selectedOptions;\n }\n isPopup() {\n return true;\n }\n changeHandler(event) {\n this.selectedOptions = event.detail;\n }\n isCancelBeforeStart() {\n return !!this.params.data[EDITED_COLUMN_FIELD];\n }\n}\n__decorate([\n observable\n], MultiselectEditor.prototype, \"params\", void 0);\n__decorate([\n observable\n], MultiselectEditor.prototype, \"selectedOptions\", void 0);\n/**\n * The AG Select Renderer Styles.\n * @public\n */\nexport const agMultiselectEditorStyles = css ``;\n/**\n * Get a Design System prefixed Select template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Select component template prefixed with the correct design system.\n * @public\n */\nexport const getMultiselectEditorTemplate = (designSystem = 'foundation') => html `\n <${designSystem}-multiselect\n style=\"width: 100%\"\n ?async=${(x) => x.params.async}\n :selectedOptions=${(x) => x.selectedOptions || []}\n @selectionChange=${(x, c) => x.changeHandler(c.event)}\n >\n <multiselect-datasource\n resourceName=${(x) => x.params.allOptionsResourceName}\n value-field=${(x) => x.params.valueField}\n label-field=${(x) => x.params.labelField}\n :datasourceConfig=${(x) => x.params.datasourceOptions}\n ></multiselect-datasource>\n </${designSystem}-multiselect>\n`;\n/**\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-multiselect-editor\\>\n */\nexport const foundationMultiselectEditor = MultiselectEditor.compose({\n baseName: 'multiselect-editor',\n styles: agMultiselectEditorStyles,\n template: getMultiselectEditorTemplate(),\n});\n","import { __decorate } from \"tslib\";\nimport { css, html, observable, ref } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { EDITED_COLUMN_FIELD } from '../grid-pro.types';\n/**\n * The AG Number Editor element.\n * @public\n * @tagname %%prefix%%-number-editor\n */\nexport class NumberEditor extends FoundationElement {\n init(params) {\n if (!params)\n return;\n this.setAttribute('tabindex', '-1');\n this.params = params;\n this.value = params.value;\n this.actualWidth = params.column.getActualWidth();\n }\n getGui() {\n return this;\n }\n refresh(params) {\n return true;\n }\n getValue() {\n return this.value;\n }\n isPopup() {\n return true;\n }\n afterGuiAttached() {\n this.input.focus();\n }\n changeHandler(event) {\n const value = parseFloat(event.target.value);\n this.value = !isNaN(value) ? value : undefined;\n if (this.params.onChange)\n this.params.onChange(this.value, this.params);\n }\n isCancelBeforeStart() {\n return !!this.params.data[EDITED_COLUMN_FIELD];\n }\n}\n__decorate([\n observable\n], NumberEditor.prototype, \"params\", void 0);\n__decorate([\n observable\n], NumberEditor.prototype, \"value\", void 0);\n__decorate([\n observable\n], NumberEditor.prototype, \"actualWidth\", void 0);\n/**\n * The AG Number Editor Styles.\n * @public\n */\nexport const agNumberEditorStyles = css `\n :host {\n display: flex;\n }\n`;\n/**\n * Get a Design System prefixed Select template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Select component template prefixed with the correct design system.\n * @public\n */\nexport const getNumberEditorTemplate = (designSystem = 'foundation') => html `\n <${designSystem}-number-field\n ${ref('input')}\n withFormatting=${(x) => x.params.withFormatting}\n :options=${(x) => x.params.formatOptions}\n :value=${(x) => (x.value === undefined ? '' : String(x.value))}\n @input=${(x, c) => {\n x.changeHandler(c.event);\n}}\n placeholder=${(x) => x.params.placeholder}\n ?disabled=${(x) => x.params.disabled}\n hideStep\n style=\"width: ${(x) => x.actualWidth}px\"\n ></${designSystem}-number-field>\n`;\n/**\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-number-editor\\>\n */\nexport const foundationNumberEditor = NumberEditor.compose({\n baseName: 'number-editor',\n styles: agNumberEditorStyles,\n template: getNumberEditorTemplate(),\n});\n","import { __decorate } from \"tslib\";\nimport { css, html, observable, ref } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { EDITED_COLUMN_FIELD } from '../grid-pro.types';\n/**\n * The AG Select Editor element.\n * @public\n * @tagname %%prefix%%-select-editor\n */\nexport class SelectEditor extends FoundationElement {\n init(params) {\n if (!params)\n return;\n this.setAttribute('tabindex', '-1');\n this.params = params;\n this.value = params.value;\n this.actualWidth = params.column.getActualWidth();\n }\n getGui() {\n return this;\n }\n refresh(params) {\n return true;\n }\n getValue() {\n return this.value;\n }\n isPopup() {\n return true;\n }\n afterGuiAttached() {\n this.combobox.open = true;\n }\n changeHandler(event) {\n var _a;\n this.value = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value;\n }\n isCancelBeforeStart() {\n return !!this.params.data[EDITED_COLUMN_FIELD];\n }\n}\n__decorate([\n observable\n], SelectEditor.prototype, \"params\", void 0);\n__decorate([\n observable\n], SelectEditor.prototype, \"value\", void 0);\n__decorate([\n observable\n], SelectEditor.prototype, \"actualWidth\", void 0);\n/**\n * The AG Select Renderer Styles.\n * @public\n */\nexport const agSelectEditorStyles = css ``;\n/**\n * Get a Design System prefixed Select template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Select component template prefixed with the correct design system.\n * @public\n */\nexport const getSelectEditorTemplate = (designSystem = 'foundation') => html `\n <${designSystem}-combobox\n style=\"width: ${(x) => x.actualWidth}px\"\n ${ref('combobox')}\n position=${(x) => (x.params.position ? x.params.position(x.params.data) : '')}\n ?async=${(x) => x.params.async}\n @value-change=${(x, c) => x.changeHandler(c.event)}\n >\n <options-datasource\n resourceName=${(x) => x.params.allOptionsResourceName}\n value-field=${(x) => x.params.valueField}\n label-field=${(x) => x.params.labelField}\n option-element=\"${designSystem}-option\"\n ?allow-custom-options=${(x) => x.params.allowCustomOptions}\n :datasourceConfig=${(x) => x.params.datasourceOptions}\n :data=${(x) => x.params.values}\n :initialSelectedValue=${(x) => x.params.value}\n ></options-datasource>\n </${designSystem}-combobox>\n`;\n/**\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-select-editor\\>\n */\nexport const foundationSelectEditor = SelectEditor.compose({\n baseName: 'select-editor',\n styles: agSelectEditorStyles,\n template: getSelectEditorTemplate(),\n});\n","import { __decorate } from \"tslib\";\nimport { css, html, observable, ref } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { EDITED_COLUMN_FIELD } from '../grid-pro.types';\n/**\n * The AG String Editor element.\n * @public\n * @tagname %%prefix%%-string-editor\n */\nexport class StringEditor extends FoundationElement {\n init(params) {\n if (!params)\n return;\n this.setAttribute('tabindex', '-1');\n this.params = params;\n this.value = params.value;\n this.actualWidth = params.column.getActualWidth();\n }\n getGui() {\n return this;\n }\n refresh(params) {\n return true;\n }\n getValue() {\n return this.value;\n }\n isPopup() {\n return true;\n }\n afterGuiAttached() {\n this.input.focus();\n }\n changeHandler(event) {\n this.value = event.target.value;\n }\n isCancelBeforeStart() {\n return !!this.params.data[EDITED_COLUMN_FIELD];\n }\n}\n__decorate([\n observable\n], StringEditor.prototype, \"params\", void 0);\n__decorate([\n observable\n], StringEditor.prototype, \"value\", void 0);\n__decorate([\n observable\n], StringEditor.prototype, \"actualWidth\", void 0);\n/**\n * The AG String Renderer Styles.\n * @public\n */\nexport const agStringEditorStyles = css `\n :host {\n display: flex;\n }\n`;\n/**\n * Get a Design System prefixed String template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A String component template prefixed with the correct design system.\n * @public\n */\nexport const getStringEditorTemplate = (designSystem = 'foundation') => html `\n <${designSystem}-text-field\n ${ref('input')}\n :value=${(x) => (x.value === undefined ? '' : x.value)}\n @input=${(x, c) => {\n x.changeHandler(c.event);\n}}\n placeholder=${(x) => x.params.placeholder}\n style=\"width: ${(x) => x.actualWidth}px\"\n >\n </${designSystem}-text-field>\n`;\n/**\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-string-editor\\>\n */\nexport const foundationStringEditor = StringEditor.compose({\n baseName: 'string-editor',\n styles: agStringEditorStyles,\n template: getStringEditorTemplate(),\n});\n","import { __awaiter, __decorate } from \"tslib\";\nimport { KeyCode } from '@ag-grid-community/core';\nimport { css, html, observable } from '@microsoft/fast-element';\nimport { DesignToken, FoundationElement } from '@microsoft/fast-foundation';\nimport { logger } from '../utils';\n/**\n * The AG Action Renderer element.\n * @public\n * @tagname %%prefix%%-grid-pro-action-renderer\n */\nexport class ActionRenderer extends FoundationElement {\n init(params) {\n if (!params)\n return;\n this.params = params;\n params.eGridCell.addEventListener('keydown', (event) => {\n if (event.key === KeyCode.ENTER) {\n this.clickHandler();\n }\n });\n }\n getGui() {\n return this;\n }\n refresh(params) {\n this.params = params;\n return true;\n }\n isDisabled(data) {\n var _a;\n if (typeof ((_a = this.params) === null || _a === void 0 ? void 0 : _a.isDisabled) === 'function') {\n try {\n return this.params.isDisabled(data);\n }\n catch (error) {\n logger.error('Error executing grid action cell renderer isDisabled callback:', error);\n }\n }\n return false;\n }\n clickHandler() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.params.actionClick)\n return;\n this.pendingAction = true;\n yield this.params.actionClick(this.params.data);\n this.pendingAction = false;\n });\n }\n get dataTestId() {\n var _a, _b;\n if ((_a = this.params) === null || _a === void 0 ? void 0 : _a.dataTestId) {\n return this.params.dataTestId + ((_b = this.params.data[this.params.uniqueFieldName]) !== null && _b !== void 0 ? _b : '');\n }\n return undefined;\n }\n}\n__decorate([\n observable\n], ActionRenderer.prototype, \"params\", void 0);\n__decorate([\n observable\n], ActionRenderer.prototype, \"pendingAction\", void 0);\nconst { create } = DesignToken;\n/**\n * The base height multiplier for the action renderer.\n * @remarks Results in `--action-height-multiplier`. This is a DesignToken {@link https://www.fast.design/docs/design-systems/design-tokens/#what-is-a-design-token} value. Defaults to `0.6px`. May have other values depending on the design system or can be set to a different value.\n * @public\n */\nexport const actionHeightMultiplier = create('action-height-multiplier').withDefault('0.6px');\n/**\n * The AG Action Renderer Styles.\n * @public\n */\nexport const agActionRendererStyles = css `\n .action-container {\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n }\n .action-renderer {\n align-self: center;\n color: var(--accent-foreground-rest);\n display: flex;\n height: calc(\n (var(--base-height-multiplier) + var(--density)) * var(--design-unit) *\n var(--action-height-multiplier)\n );\n }\n`;\n/**\n * A function that returns a Foundation Action Renderer for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-grid-pro-action-renderer\\>\n */\nexport const foundationGridProActionRenderer = ActionRenderer.compose({\n baseName: 'grid-pro-action-renderer',\n styles: css `\n ${agActionRendererStyles}\n `,\n template: html `\n <div class=\"action-container\" part=\"action-container\">\n <foundation-button\n class=\"action-renderer\"\n part=\"action-renderer\"\n style=\"${(x) => x.params.actionButtonStyle || ''}\"\n data-test-id=\"${(x) => x.dataTestId}\"\n ?disabled=${(x) => { var _a; return x.pendingAction || x.isDisabled((_a = x.params) === null || _a === void 0 ? void 0 : _a.data); }}\n appearance=\"${(x) => x.params.appearance}\"\n @click=${(x) => x.clickHandler()}\">${(x) => x.params.actionName}</foundation-button>\n </div>`,\n});\n","import { __decorate } from \"tslib\";\nimport { html, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { GridProRendererTypes } from '../grid-pro.types';\nimport { convertToKebabCase } from '../utils';\n/**\n * The Actions Menu Renderer element.\n * @remarks For multiple actions scenarios.\n * @public\n * @tagname %%prefix%%-grid-pro-actions-menu-renderer\n */\nexport class ActionsMenuRenderer extends FoundationElement {\n init(params) {\n if (!params)\n return;\n this.params = params;\n }\n getGui() {\n return this;\n }\n refresh(params) {\n return false;\n }\n}\n__decorate([\n observable\n], ActionsMenuRenderer.prototype, \"params\", void 0);\n/**\n * A function that returns a Foundation Actions Menu for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-grid-pro-actions-menu-renderer\\>\n */\nexport const foundationGridProActionsMenuRenderer = ActionsMenuRenderer.compose({\n baseName: 'grid-pro-actions-menu-renderer',\n template: html `\n <foundation-actions-menu\n name=\"${(x) => x.params.headerName}\"\n :definition=${(x) => x.params}\n ></foundation-actions-menu>\n `,\n});\n/**\n * Helper function to get ColDef {@link https://www.ag-grid.com/javascript-data-grid/column-properties/} for Actions Menu Renderer.\n * Will take the parameter values for a base ColDef and merge them with the overrideDef (if specified).\n * @param actions - Array of `ActionMenuItem` to be displayed in the menu.\n * @param overrideDef - Optional override for the ColDef. Will override any of the default values. Default is an empty object.\n * @param customActionsOpenerName - Optional custom name for the button that opens the menu. Default is '⋮'.\n * @param isVertical - Optional flag to display the menu vertically. Default is false (displays the menu horizontally, follow the rowHeight).\n * @param buttonAppearance - Optional appearance for the button that opens the menu. Default is 'outline'.\n * @returns Merged ColDef (base ColDef created from the parameters + overrideDef) for Actions Menu Renderer.\n * @example\n * ```ts\n * public exampleActionsMenuDef: ColDef = getActionsMenuDef(\n * [\n * {\n * name: 'View',\n * callback: (rowData) => logger.debug('VIEWW!!!', rowData),\n * },\n * {\n * name: 'Delete',\n * callback: (rowData) => logger.debug('DELETE!!!', rowData),\n * },\n * ],\n * {\n * headerName: 'Instrument Actions',\n * width: 180,\n * },\n * '+',\n * true,\n * 'primary-gradient'\n * );\n * ```\n * @public\n */\nexport const getActionsMenuDef = (actions, overrideDef = {}, customActionsOpenerName = '⋮', isVertical = false, buttonAppearance) => {\n const actionsMenuDef = {\n cellRenderer: GridProRendererTypes.actionsMenu,\n cellRendererParams: {\n actions,\n buttonAppearance,\n isVertical,\n buttonText: customActionsOpenerName,\n },\n cellStyle: { border: 'none', overflow: 'visible' },\n field: `${convertToKebabCase(overrideDef.headerName) || 'actions-menu'}`,\n headerName: 'Actions',\n // valueGetter: (params: ValueGetterParams) => {\n // params.data.actions = actions;\n // params.data.buttonText = customActionsOpenerName;\n // return null;\n // },\n width: 150,\n };\n return Object.assign(Object.assign({}, actionsMenuDef), overrideDef);\n};\n","import { __decorate } from \"tslib\";\nimport { css, html, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { EDITED_COLUMN_FIELD } from '../grid-pro.types';\nimport { logger } from '../utils';\n/**\n * The AG Boolean Renderer element.\n * @public\n * @tagname %%prefix%%-boolean-renderer\n */\nexport class BooleanRenderer extends FoundationElement {\n isDisabled(data) {\n var _a, _b;\n if (typeof ((_a = this.params) === null || _a === void 0 ? void 0 : _a.isDisabled) === 'function') {\n try {\n return this.params.isDisabled(data);\n }\n catch (error) {\n logger.error('Error executing grid action cell renderer isDisabled callback:', error);\n }\n }\n return !((_b = this.params) === null || _b === void 0 ? void 0 : _b.colDef.editable);\n }\n init(params) {\n if (!params)\n return;\n this.params = params;\n this.selected = params.value;\n }\n /** @internal */\n userInputHandler(e) {\n // Strictly prevent any event dispatch or value change if not editable\n if (!this.params.colDef ||\n (typeof this.params.colDef.editable === 'function'\n ? !('column' in this.params &&\n this.params.colDef.editable(this.params))\n : this.params.colDef.editable !== true)) {\n return;\n }\n if (e instanceof MouseEvent) {\n if (e.type !== 'click' || e.button !== 0)\n return;\n this.selected = !this.selected;\n }\n if (e instanceof KeyboardEvent) {\n if (e.type !== 'keydown' || (e.key !== ' ' && e.key !== 'Enter'))\n return;\n this.selected = !this.selected;\n }\n const editedCells = this.params.api.getEditingCells();\n const changingCurrentlyEditedCell = !!editedCells.find((cell) => cell.rowIndex === this.params.node.rowIndex &&\n cell.column.getInstanceId() === this.params.column.getInstanceId());\n if (!changingCurrentlyEditedCell) {\n // below section allows grid renderer to act as grid editor so users can edit data without requesting edit\n // heavily inspired by https://github.com/ag-grid/ag-grid/blob/latest/grid-community-modules/core/src/ts/rendering/cellRenderers/checkboxCellRenderer.ts#L104\n const { column, node, value } = this.params;\n const eventStarted = {\n type: 'cellEditingStarted',\n column: column,\n colDef: column.getColDef(),\n data: node.data,\n node,\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n value,\n };\n this.params.api.dispatchEvent(eventStarted);\n const valueChanged = this.params.node.setDataValue(this.params.column, this.selected, 'edit');\n if (this.params.onChange)\n this.params.onChange(node.data);\n const eventStopped = {\n type: 'cellEditingStopped',\n column: column,\n colDef: column.getColDef(),\n data: node.data,\n node,\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n value,\n oldValue: value,\n newValue: this.selected,\n valueChanged,\n };\n this.params.api.dispatchEvent(eventStopped);\n }\n }\n getGui() {\n return this;\n }\n destroy() { }\n refresh(params) {\n this.selected = params.value;\n return true;\n }\n getValue() {\n return this.selected;\n }\n isCancelBeforeStart() {\n return !!this.params.data[EDITED_COLUMN_FIELD];\n }\n /** @internal */\n getDataTestId() {\n var _a;\n if (!((_a = this.params) === null || _a === void 0 ? void 0 : _a.dataTestId))\n return undefined;\n if (typeof this.params.dataTestId === 'function')\n return this.params.dataTestId(this.params.node.data);\n return this.params.dataTestId;\n }\n}\n__decorate([\n observable\n], BooleanRenderer.prototype, \"params\", void 0);\n__decorate([\n observable\n], BooleanRenderer.prototype, \"selected\", void 0);\n/**\n * The AG Boolean Renderer Styles.\n * @public\n */\nexport const agBooleanRendererStyles = css `\n :host {\n align-center: center;\n display: flex;\n height: 100%;\n }\n`;\n/**\n * Get a Design System prefixed Checkbox template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Checkbox component template prefixed with the correct design system.\n * @public\n */\nexport const getAgBooleanRendererTemplate = (designSystem = 'foundation') => {\n const checkboxComponent = `${designSystem}-checkbox`;\n return html `\n <${checkboxComponent}\n @click=${(x, c) => x.userInputHandler(c.event)}\n @keydown=${(x, c) => x.userInputHandler(c.event)}\n :checked=${(x) => x.selected}\n ?disabled=${(x) => { var _a; return x.isDisabled((_a = x.params) === null || _a === void 0 ? void 0 : _a.data); }}\n data-test-id=\"${(x) => x.getDataTestId()}\"\n ></${checkboxComponent}>\n `;\n};\n/**\n * A function that returns a Foundation Boolean Renderer registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-boolean-renderer\\>\n */\nexport const foundationAgBooleanRenderer = BooleanRenderer.compose({\n baseName: 'boolean-renderer',\n styles: agBooleanRendererStyles,\n template: getAgBooleanRendererTemplate(),\n});\n","import { __decorate } from \"tslib\";\nimport { css, html, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\n/**\n * The AG Editable Renderer element.\n * @public\n * @tagname %%prefix%%-editable-renderer\n */\nexport class EditableRenderer extends FoundationElement {\n init(params) {\n if (!params)\n return;\n this.valueFormatted = params.formatValue(params.value);\n }\n getGui() {\n return this;\n }\n refresh(params) {\n this.valueFormatted = params.formatValue(params.value);\n return true;\n }\n}\n__decorate([\n observable\n], EditableRenderer.prototype, \"valueFormatted\", void 0);\n/**\n * The AG Editable Renderer Styles.\n * @public\n */\nexport const agEditableRendererStyles = css `\n :host {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n`;\n/**\n * Get a Design System prefixed Checkbox template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Checkbox component template prefixed with the correct design system.\n * @public\n */\nexport const getAgEditableRendererTemplate = (designSystem = 'foundation') => {\n return html `\n <span>${(x) => x.valueFormatted}</span>\n <${designSystem}-progress-ring style=\"margin: 0; width: 20px; height: 20px\"></${designSystem}-progress-ring>\n `;\n};\n/**\n * A function that returns a Foundation Editable Renderer registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-editable-renderer\\>\n */\nexport const foundationAgEditableRenderer = EditableRenderer.compose({\n baseName: 'editable-renderer',\n styles: agEditableRendererStyles,\n template: getAgEditableRendererTemplate(),\n});\n","import { __decorate } from \"tslib\";\nimport { css, html, observable, when } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { classNames } from '@microsoft/fast-web-utilities';\n/**\n * The AG Icon Renderer Styles.\n * @public\n */\nexport const agIconRendererStyles = css `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n position: relative;\n }\n\n .icon-container {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n }\n\n .icon-container.with-hover {\n padding: 5px;\n line-height: 1;\n }\n\n .icon-container.with-hover:hover {\n cursor: pointer;\n background-color: var(--neutral-stroke-hover);\n }\n\n .icon-container.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .secondary-icon {\n position: absolute;\n top: 50%;\n bottom: 0px;\n right: -5px;\n z-index: 2;\n line-height: 1;\n }\n`;\nfunction hasIconSrc(params) {\n return (!!params && typeof params.iconSrc === 'string' && params.iconSrc.length > 0);\n}\nfunction hasIconName(params) {\n return (!!params && typeof params.iconName === 'string' && params.iconName.length > 0);\n}\n/**\n * Get a Design System prefixed Icon template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns An Icon component template prefixed with the correct design system.\n * @public\n */\nexport const getIconRendererTemplate = (designSystem = 'rapid') => {\n const iconComponent = `${designSystem}-icon`;\n return html `\n <div\n class=\"icon-container ${(x) => { var _a, _b; return classNames(['with-hover', (_a = x.params) === null || _a === void 0 ? void 0 : _a.showHover], ['disabled', (_b = x.params) === null || _b === void 0 ? void 0 : _b.disabled]); }}\"\n @click=${(x, c) => {\n var _a, _b, _c;\n return !((_a = x.params) === null || _a === void 0 ? void 0 : _a.disabled) && ((_b = x.params) === null || _b === void 0 ? void 0 : _b.clickHandler)\n ? (_c = x.params) === null || _c === void 0 ? void 0 : _c.clickHandler(c.event, x.params.data)\n : null;\n }}\n >\n ${when((x) => hasIconSrc(x.params), html `\n <img\n class=\"icon-image\"\n src=\"${(x) => (hasIconSrc(x.params) ? x.params.iconSrc : '')}\"\n style=\"${(x) => {\n if (!hasIconSrc(x.params))\n return '';\n let styles = `height: ${x.params.iconHeight || '14px'}; width: auto;`;\n if (x.params.iconColor)\n styles += ` color: ${x.params.iconColor};`;\n return styles;\n }}\"\n />\n `)}\n ${when((x) => hasIconName(x.params), html `\n <${iconComponent}\n class=\"${(x) => {\n var _a;\n let classes = 'icon-element';\n if ((_a = x.params) === null || _a === void 0 ? void 0 : _a.showHover)\n classes += ' with-hover';\n return classes;\n }}\"\n name=\"${(x) => (hasIconName(x.params) ? x.params.iconName : '')}\"\n size=\"${(x) => (hasIconName(x.params) ? x.params.iconSize || 'md' : 'md')}\"\n style=\"${(x) => (x.params.iconColor ? `color: ${x.params.iconColor};` : '')}\"\n variant=\"${(x) => x.params.variant}\"\n ></${iconComponent}>\n `)}\n ${when((x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.secondaryIcon; }, html `\n <${iconComponent}\n class=\"secondary-icon\"\n name=\"${(x) => x.params.secondaryIcon}\"\n size=\"xs\"\n style=\"${(x) => (x.params.secondaryIconColor ? `color: ${x.params.secondaryIconColor};` : '')}\"\n ></${iconComponent}>\n `)}\n </div>\n `;\n};\n/**\n * Plain ag-Grid cell renderer for icons.\n * This renderer creates the FAST custom element using document.createElement.\n *\n * @public\n */\nexport class IconRenderer extends FoundationElement {\n // private element: HTMLElement;\n init(params) {\n this.params = params;\n }\n getGui() {\n return this;\n }\n refresh(params) {\n this.params = params;\n return true;\n }\n destroy() { }\n}\n__decorate([\n observable\n], IconRenderer.prototype, \"params\", void 0);\n/**\n * A function that returns a Foundation Icon Renderer registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-icon-renderer\\>\n */\nexport const foundationIconRenderer = IconRenderer.compose({\n baseName: 'icon-renderer',\n template: getIconRendererTemplate(),\n styles: agIconRendererStyles,\n});\n","import { __decorate } from \"tslib\";\nimport { css, html, observable, repeat } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { logger } from '../utils';\nimport { setValueWithAccessor } from './utils';\n/**\n * The AG Select Renderer element.\n * @public\n * @tagname %%prefix%%-select-renderer\n */\nexport class SelectRenderer extends FoundationElement {\n constructor() {\n super(...arguments);\n this.selectionChanged = (e) => {\n this.value = e.target.value;\n this.params.onSelect(e.target.value, this.params);\n };\n }\n init(params) {\n var _a;\n if (!params)\n return;\n this.params = params;\n this.value = setValueWithAccessor((_a = params.node) === null || _a === void 0 ? void 0 : _a.data, params.accessor) || undefined;\n }\n getGui() {\n return this;\n }\n destroy() { }\n refresh(params) {\n return true;\n }\n isDisabled(data) {\n var _a;\n if (typeof ((_a = this.params) === null || _a === void 0 ? void 0 : _a.isDisabled) === 'function') {\n try {\n return this.params.isDisabled(data);\n }\n catch (error) {\n logger.error('Error executing grid action cell renderer isDisabled callback:', error);\n }\n }\n return false;\n }\n}\n__decorate([\n observable\n], SelectRenderer.prototype, \"params\", void 0);\n__decorate([\n observable\n], SelectRenderer.prototype, \"value\", void 0);\n/**\n * The AG Select Renderer Styles.\n * @public\n */\nexport const agSelectRendererStyles = css `\n :host,\n .select-renderer,\n zero-option,\n ::part(listbox),\n ::part(control) {\n max-width: var(--select-renderer-max-width);\n min-width: 100%;\n }\n\n .select-renderer {\n --listbox-max-height: 4;\n --select-renderer-max-width: 100%;\n }\n`;\n/**\n * Get a Design System prefixed Select template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Select component template prefixed with the correct design system.\n * @public\n */\nexport const getSelectRendererTemplate = (designSystem = 'foundation') => {\n const selectComponent = `${designSystem}-select`;\n const optionComponent = `${designSystem}-option`;\n return html `\n <${selectComponent}\n class=\"select-renderer\"\n position=${(x) => (x.params.position ? x.params.position(x.params.node.data) : '')}\n ?disabled=${(x) => { var _a; return x.isDisabled((_a = x.params) === null || _a === void 0 ? void 0 : _a.data); }}\n @change=${(x, c) => x.selectionChanged(c.event)}\n :value=${(x) => x.value}\n >\n <${optionComponent}\n defaultSelected\n style=\"display: none;\"\n >\n ${(x) => x.params.defaultValue || 'Select option'}\n </${optionComponent}>\n ${repeat((x) => x.params.options(x.params.node.data), html `\n <${optionComponent}\n value=${(x) => x.name}\n ?disabled=${(x, c) => { var _a; return typeof x.isDisabled === 'function' ? x.isDisabled((_a = c.parent.params) === null || _a === void 0 ? void 0 : _a.data) : false; }}\n title=\"${(x) => (x.tooltip ? x.tooltip : null)}\"\n >${(x) => x.displayName}</${optionComponent}>\n `)}\n </${selectComponent}>\n `;\n};\n/**\n * A function that returns a Foundation Select Renderer registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-select-renderer\\>\n */\nexport const foundationAgSelectRenderer = SelectRenderer.compose({\n baseName: 'select-renderer', // TODO: others have 'grid-pro' in the name, why not this one?\n styles: agSelectRendererStyles,\n template: getSelectRendererTemplate(),\n});\n","import { __decorate } from \"tslib\";\nimport { css, html, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\n/**\n * The Status Pill Renderer Styles.\n * @public\n */\nexport const agStatusPillRendererStyles = css `\n :host {\n width: 100%;\n display: flex;\n align-items: center;\n height: 100%;\n }\n`;\n/**\n * Get a Design System prefixed Status Pill template.\n * @param designSystem - The design system prefix to use. Defaults to 'rapid'.\n * @returns A Staus Pill component template prefixed with the correct design system.\n * @public\n */\nexport const getStatusPillRendererTemplate = (designSystem = 'rapid') => {\n return html `\n <${designSystem}-status-pill\n background-color=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.backgroundColor; }}\"\n icon-name=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.iconName; }}\"\n icon-src=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.iconSrc; }}\"\n icon-initial=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.iconInitial; }}\"\n icon-initial-background-color=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.iconInitialBackgroundColor; }}\"\n icon-size=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.iconSize; }}\"\n text-color=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.textColor; }}\"\n text=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.text; }}\"\n date-countdown-unit=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.dateCountdownUnit; }}\"\n date-countdown=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.dateCountdown; }}\"\n date-countdown-completed-message=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.dateCountdownCompletedMessage; }}\"\n ?hide-when-countdown-completed=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.hideWhenCountdownCompleted; }}\"\n date-countdown-visible-after=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.dateCountdownVisibleAfter; }}\"\n >\n </${designSystem}-status-pill>\n `;\n};\n/**\n * The AG Status Pill Renderer element.\n * @public\n * @tagname %%prefix%%-status-pill-renderer\n */\nexport class StatusPillRenderer extends FoundationElement {\n init(params) {\n this.params = params;\n }\n getGui() {\n return this;\n }\n refresh(params) {\n this.params = params;\n return true;\n }\n destroy() { }\n}\n__decorate([\n observable\n], StatusPillRenderer.prototype, \"params\", void 0);\n/**\n * A function that returns a Foundation Status Pill Renderer registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-status-pill-renderer\\>\n */\nexport const foundationStatusPillRenderer = StatusPillRenderer.compose({\n baseName: 'status-pill-renderer',\n template: getStatusPillRendererTemplate(),\n styles: agStatusPillRendererStyles,\n});\n","import { __decorate } from \"tslib\";\nimport { sync } from '@genesislcap/foundation-utils';\nimport { css, html, observable, ref } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { logger } from '../utils';\nimport { setValueWithAccessor } from './utils';\n/**\n * The AG Text Field Renderer element.\n * @public\n * @tagname %%prefix%%-grid-text-field-renderer\n */\nexport class AgTextFieldRenderer extends FoundationElement {\n constructor() {\n super(...arguments);\n // Text field value\n this.textValue = '';\n /**\n * On text change handler\n * @param e - CustomEvent\n */\n this.textChanged = (e) => {\n this.textValue = e.target.value;\n this.params.onChange(e.target.value, this.params);\n };\n }\n init(params) {\n var _a;\n if (!params)\n return;\n this.params = params;\n this.textValue =\n this.textValue === ''\n ? setValueWithAccessor((_a = params === null || params === void 0 ? void 0 : params.node) === null || _a === void 0 ? void 0 : _a.data, params.accessor)\n : this.textValue;\n // Intercept keyboard events on the text field element\n this.addEventListener('keydown', (event) => {\n // Check if the key pressed is an arrow key\n if (['ArrowLeft', 'ArrowRight'].includes(event.key)) {\n // Only stop propagation if cursor isn't at the boundaries\n const input = this.textField.control;\n const caretPos = input.selectionStart;\n if (event.key === 'ArrowLeft' && caretPos > 0) {\n event.stopPropagation();\n }\n else if (event.key === 'ArrowRight' && caretPos < input.value.length) {\n event.stopPropagation();\n }\n }\n });\n }\n getGui() {\n return this;\n }\n destroy() { }\n refresh(params) {\n return true;\n }\n isDisabled(data) {\n var _a;\n if (typeof ((_a = this.params) === null || _a === void 0 ? void 0 : _a.isDisabled) === 'function') {\n try {\n return this.params.isDisabled(data);\n }\n catch (error) {\n logger.error('Error executing grid action cell renderer isDisabled callback:', error);\n }\n }\n return false;\n }\n}\n__decorate([\n observable\n], AgTextFieldRenderer.prototype, \"textValue\", void 0);\n__decorate([\n observable\n], AgTextFieldRenderer.prototype, \"params\", void 0);\n/**\n * The AG Text Field Renderer Styles.\n * @public\n */\nexport const textFieldRendererStyles = css `\n :host {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n }\n .text-renderer {\n width: 100%;\n }\n`;\n/**\n * Get a Design System prefixed Text Field template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Text Field component template prefixed with the correct design system.\n * @public\n */\nexport const getTextFieldRendererTemplate = (designSystem = 'foundation') => {\n const textComponent = `${designSystem}-text-field`;\n return html `\n <${textComponent}\n ${ref('textField')}\n type=\"text\"\n class=\"text-renderer\"\n prefix=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.prefix; }}\"\n suffix=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.suffix; }}\"\n ?hide-affix-from-screen-reader=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.hideAffixFromScreenReader; }}\"\n :maxlength=\"${(x) => x.params.maxLength}\"\n ?disabled=${(x) => { var _a; return x.isDisabled((_a = x.params) === null || _a === void 0 ? void 0 : _a.data); }}\n :value=\"${sync((x) => x.textValue)}\"\n @change=\"${(x, c) => x.textChanged(c.event)}\"\n ></${textComponent}>\n `;\n};\n/**\n * A function that returns a Foundation Text Field Renderer registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-grid-pro-text-field-renderer\\>\n */\nexport const foundationAgTextFieldRenderer = AgTextFieldRenderer.compose({\n baseName: 'grid-pro-text-renderer',\n styles: textFieldRendererStyles,\n template: getTextFieldRendererTemplate(),\n});\n","// TODO: DEPRECATED due the incorrect \"text\" name\nimport { AgTextFieldRenderer, getTextFieldRendererTemplate, textFieldRendererStyles, } from './text-field.renderer';\n/**\n * @public\n * @deprecated - Use AgTextFieldRenderer instead\n * @tagname %%prefix%%-grid-text-renderer\n */\nexport class AgTextRenderer extends AgTextFieldRenderer {\n}\n/**\n * @public\n * @deprecated - Use textFieldRendererStyles instead\n */\nexport const textRendererStyles = textFieldRendererStyles;\n/**\n * @public\n * @deprecated - Use getTextFieldRendererTemplate instead\n */\nexport const getTextRendererTemplate = getTextFieldRendererTemplate;\n/**\n * A function that returns a Foundation Text Renderer registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-grid-text-renderer\\>\n * @deprecated - Use foundationAgTextFieldRenderer instead\n */\nexport const foundationAgTextRenderer = AgTextRenderer.compose({\n baseName: 'grid-text-renderer',\n styles: textRendererStyles,\n template: getTextRendererTemplate(),\n});\n","export const setValueWithAccessor = (data, accessor) => {\n // if no '.', then it's not a deep value\n if (accessor.indexOf('.') < 0) {\n // data[field] = newValue;\n return data[accessor];\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n const accessorPieces = accessor.split('.');\n let currentObject = data;\n while (accessorPieces.length > 0 && currentObject) {\n const fieldPiece = accessorPieces.shift();\n if (accessorPieces.length === 0) {\n return currentObject[fieldPiece];\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n};\n","import { __decorate } from \"tslib\";\nimport { customElement, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { CellTemplate as template } from './cell.template';\n/**\n * The Grid Pro Cell element.\n * @remarks Used inside the Grid Pro Column element, to define a cell renderer from the template.\n * @public\n */\nlet GridProCell = class GridProCell extends FoundationElement {\n connectedCallback() {\n super.connectedCallback();\n const wrapperGridProColumn = this.parentElement;\n if (this.renderer) {\n wrapperGridProColumn.definition.cellRenderer = this.renderer;\n }\n if (this.rendererParams) {\n wrapperGridProColumn.definition.cellRendererParams = this.rendererParams;\n }\n }\n init(params) {\n this.rendererParams = params;\n }\n getGui() {\n if (typeof this.renderer !== 'string') {\n return this.renderer(this.rendererParams);\n }\n return this;\n }\n destroy() { }\n refresh(params) {\n return false;\n }\n slottedAgRendererChanged() { }\n};\n__decorate([\n observable\n], GridProCell.prototype, \"renderer\", void 0);\n__decorate([\n observable\n], GridProCell.prototype, \"rendererParams\", void 0);\n__decorate([\n observable\n], GridProCell.prototype, \"slottedRenderer\", void 0);\nGridProCell = __decorate([\n customElement({\n name: 'grid-pro-cell',\n template,\n })\n], GridProCell);\nexport { GridProCell };\n","import { html, slotted } from '@microsoft/fast-element';\n/**\n * The Grid Pro Cell Template.\n * @public\n */\nexport const CellTemplate = html `\n <template>\n <slot ${slotted('slottedRenderer')} @slotchange=\"${(x) => x.slottedAgRendererChanged()}\"></slot>\n </template>\n`;\n","import { DragSourceType } from 'ag-grid-community';\n/**\n * Registers an AG Grid `ToolPanel` drag source on a picker row handle so drops on\n * the grid header use AG column-move (visibility + exact index).\n *\n * @public\n */\nexport function bindAgColumnPickerDrag(bridge, api, handle, colId, dragItemName) {\n var _a;\n const column = (_a = api.getColumn) === null || _a === void 0 ? void 0 : _a.call(api, colId);\n if (!column || handle.hasAttribute('data-ag-column-drag-bound')) {\n return null;\n }\n const { dragAndDrop, gos } = bridge;\n if (!dragAndDrop || !gos) {\n return null;\n }\n if (!gos.get('allowDragFromColumnsToolPanel') && typeof api.setGridOption === 'function') {\n api.setGridOption('allowDragFromColumnsToolPanel', true);\n }\n if (!gos.get('allowDragFromColumnsToolPanel')) {\n return null;\n }\n handle.setAttribute('data-ag-column-drag-bound', '');\n handle.draggable = false;\n let hideColumnOnExit = !gos.get('suppressDragLeaveHidesColumns');\n const source = {\n type: DragSourceType.ToolPanel,\n eElement: handle,\n dragItemName,\n getDefaultIconName: () => (hideColumnOnExit ? 'hide' : 'notAllowed'),\n getDragItem: () => createToolPanelDragItem(column),\n onDragStarted: () => {\n hideColumnOnExit = !gos.get('suppressDragLeaveHidesColumns');\n },\n };\n dragAndDrop.addDragSource(source, true);\n return {\n source,\n remove: () => {\n handle.removeAttribute('data-ag-column-drag-bound');\n handle.classList.remove('grid-pro-columns-handle-grid-drag');\n dragAndDrop.removeDragSource(source);\n },\n };\n}\nfunction createToolPanelDragItem(column) {\n return {\n columns: [column],\n visibleState: { [column.getColId()]: column.isVisible() },\n };\n}\n","/** @public */\nexport const COLUMN_PICKER_SORT_DEFAULT = 'selected-first';\n/** @public */\nexport function resolveColumnPickerSort(sort) {\n return sort === 'ag-grid' ? 'ag-grid' : COLUMN_PICKER_SORT_DEFAULT;\n}\n/** @public */\nexport function toPickerItem(col) {\n const colDef = col.getColDef();\n if (colDef.suppressColumnsToolPanel) {\n return null;\n }\n if (typeof col.isPrimary === 'function' && !col.isPrimary()) {\n return null;\n }\n const colId = col.getColId();\n const headerName = String(colDef.headerName || colDef.field || colId || '');\n return {\n colId,\n headerName,\n visible: col.isVisible(),\n lockVisible: Boolean(colDef.lockVisible),\n };\n}\n/** @public */\nexport function getPickerItems(columns) {\n return columns.map(toPickerItem).filter((item) => item != null);\n}\n/**\n * Column order for the picker list.\n *\n * - `selected-first` (default): displayed columns first, then non-displayed.\n * - `ag-grid`: column-state order (visible/hidden interleaved).\n * @public\n */\nexport function orderColumnsForPicker(displayed, all, sort = COLUMN_PICKER_SORT_DEFAULT, columnState) {\n if (sort === 'ag-grid') {\n if (!(columnState === null || columnState === void 0 ? void 0 : columnState.length)) {\n return all;\n }\n const byId = new Map(all.map((column) => [column.getColId(), column]));\n const ordered = [];\n const seen = new Set();\n for (const state of columnState) {\n const colId = state.colId;\n if (colId == null || seen.has(colId)) {\n continue;\n }\n const column = byId.get(colId);\n if (column) {\n ordered.push(column);\n seen.add(colId);\n }\n }\n for (const column of all) {\n const colId = column.getColId();\n if (!seen.has(colId)) {\n ordered.push(column);\n seen.add(colId);\n }\n }\n return ordered;\n }\n const displayedIds = new Set(displayed.map((column) => column.getColId()));\n return [...displayed, ...all.filter((column) => !displayedIds.has(column.getColId()))];\n}\n/**\n * Splits / filters picker items for the template sections.\n * @public\n */\nexport function partitionPickerItems(items, search, sort = COLUMN_PICKER_SORT_DEFAULT) {\n const query = search.trim().toLowerCase();\n const matches = (item) => !query || item.headerName.toLowerCase().includes(query);\n const filtered = items.filter(matches);\n if (sort === 'ag-grid') {\n return { selected: filtered, unselected: [] };\n }\n return {\n selected: filtered.filter((item) => item.visible),\n unselected: filtered\n .filter((item) => !item.visible)\n .sort((a, b) => a.headerName.localeCompare(b.headerName, undefined, { sensitivity: 'base' })),\n };\n}\n/** @public */\nexport function reorderVisibleIds(allVisibleIds, shownIds, fromId, toId) {\n const shown = [...shownIds];\n const fromIndex = shown.indexOf(fromId);\n const toIndex = shown.indexOf(toId);\n if (fromIndex < 0 || toIndex < 0 || fromId === toId) {\n return null;\n }\n shown.splice(fromIndex, 1);\n shown.splice(toIndex, 0, fromId);\n let index = 0;\n return allVisibleIds.map((id) => {\n if (!shownIds.includes(id)) {\n return id;\n }\n const nextId = shown[index];\n index += 1;\n return nextId;\n });\n}\n/** @public */\nexport function applyVisibleOrder(columnState, visibleOrder) {\n const byId = new Map(columnState.map((state) => [state.colId, state]));\n const orderable = new Set(visibleOrder);\n let index = 0;\n return columnState.map((state) => {\n if (state.hide || !state.colId || !orderable.has(state.colId)) {\n return state;\n }\n const nextId = visibleOrder[index];\n index += 1;\n return (nextId && byId.get(nextId)) || state;\n });\n}\n","import { __decorate } from \"tslib\";\nimport { LifecycleMixin } from '@genesislcap/foundation-utils';\nimport { attr, DOM, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { bindAgColumnPickerDrag } from './column-picker-ag-drag';\nimport { applyVisibleOrder, COLUMN_PICKER_SORT_DEFAULT, getPickerItems, orderColumnsForPicker, partitionPickerItems, reorderVisibleIds, resolveColumnPickerSort, } from './column-picker.utils';\nimport { columnSelectionStyles as styles } from './column-selection.styles';\nimport { getColumnSelectionTemplate } from './column-selection.template';\nimport { resolveColumnDragBridgeDirect, resolveColumnDragBridgeFromApi, } from './grid-pro-column-drag-bridge';\nimport { resolveColumnsPickerApi } from './resolve-columns-picker-api';\n/** Max animation-frame retries while waiting for AG column-drag bridge beans. */\nconst DRAG_BRIDGE_RETRY_MAX_ATTEMPTS = 30;\n/**\n * Instance API storage — keeps a stable binding across LifecycleMixin + FAST\n * field-init / suite isolation (plain `private` was null after connectPicker in CI).\n */\nconst pickerApiByElement = new WeakMap();\n/**\n * Button + popover column picker for Grid Pro (Community).\n *\n * @public\n * @remarks\n * HTML Element: \\<%%prefix%%-column-selection\\>\n *\n * Provide either `:gridApi` (AG v36) or `:gridHost` (Grid Pro element with `gridApi` / `columnApi`).\n *\n * The panel uses the Popover API (`popover=\"manual\"`) so it paints in the top layer and is not\n * clipped by layout ancestors with `overflow: hidden`. Placement is pure CSS (anchor positioning\n * via `showPopover({ source })` + `position-area`).\n *\n * Layout: select-all + search → column list. Ordering via `sort`\n * (`selected-first` default, or `ag-grid`). Checkboxes toggle visibility via\n * `api.setColumnsVisible`; drag handles on hidden rows use AG native DnD onto the grid\n * (`allowDragFromColumnsToolPanel`) even while search is active; visible-row reorder inside\n * the picker uses HTML5 drag and is disabled during search.\n *\n * @tagname %%prefix%%-column-selection\n */\nexport class ColumnSelection extends LifecycleMixin(FoundationElement) {\n constructor() {\n super(...arguments);\n /** Button label. */\n this.label = 'Column Selection';\n /**\n * Column list ordering.\n * - `selected-first` (default): visible first (grid display order), then hidden A–Z.\n * - `ag-grid`: `api.getColumnState()` order (visible/hidden interleaved).\n */\n this.sort = COLUMN_PICKER_SORT_DEFAULT;\n /** Whether the popover is open. */\n this.open = false;\n /** Optional explicit AG grid API (v36). */\n this.gridApi = null;\n /** Grid Pro host element; column API is bridged when needed. */\n this.gridHost = null;\n this.search = '';\n this.selectedItems = [];\n this.unselectedItems = [];\n /** Master checkbox checked when every toggleable column is visible. */\n this.selectAllChecked = false;\n /** Master checkbox mixed when some (but not all) toggleable columns are visible. */\n this.selectAllIndeterminate = false;\n /** Resolved sort; kept in sync with `@attr sort`. */\n this.resolvedSort = COLUMN_PICKER_SORT_DEFAULT;\n /** Source colId while a visible-row drag is in progress. */\n this.dragColId = null;\n /** Row currently showing drag-over highlight (avoid observable updates mid-drag). */\n this.dragOverElement = null;\n /** Cancels row drag listeners when the selected list re-renders. */\n this.dragBindingAbort = null;\n /** AG ToolPanel drag sources registered on hidden-row handles (grid drop). */\n this.agDragBindings = [];\n /** Shared DnD bridge from Grid Pro. */\n this.columnDragBridge = null;\n /** Retries `bindRowDrag` until the DnD bridge is populated. */\n this.dragBridgeRetryId = 0;\n /** Optimistic visibility while the grid applies setColumnsVisible. */\n this.pendingVisibility = new Map();\n /** Stable listener refs so close/disconnect can remove the same functions. */\n this.boundRefresh = () => this.refresh();\n this.handleClickOutside = (event) => {\n if (!this.open || !this.root || !event.isTrusted) {\n return;\n }\n if (!event.composedPath().includes(this.root)) {\n this.open = false;\n }\n };\n }\n get pickerApi() {\n var _a;\n return (_a = pickerApiByElement.get(this)) !== null && _a !== void 0 ? _a : null;\n }\n set pickerApi(api) {\n pickerApiByElement.set(this, api);\n }\n /** Query root for picker DOM (shadow panel). */\n get pickerRoot() {\n var _a;\n return (_a = this.panelEl) !== null && _a !== void 0 ? _a : null;\n }\n /** Panel reorder disabled while search filter is active. */\n get canReorderInPanel() {\n return !this.search.trim();\n }\n /** Handle is draggable onto the grid (hidden columns, or all when using ag-grid sort). */\n canDragToGrid(item) {\n if (item.lockVisible) {\n return false;\n }\n if (this.resolvedSort === 'ag-grid') {\n return true;\n }\n return !item.visible;\n }\n /** Columns in the current (search-filtered) picker lists that can be toggled. */\n get toggleableItems() {\n return [...this.selectedItems, ...this.unselectedItems].filter((item) => !item.lockVisible);\n }\n openChanged(oldValue) {\n // Skip field-init notification before other private fields are constructed.\n if (oldValue === undefined || !this.$fastController.isConnected) {\n return;\n }\n if (this.open) {\n DOM.queueUpdate(() => {\n this.subscribePicker();\n this.refresh();\n this.showPanel();\n // Defer listener — showPopover can emit a same-turn mousedown outside the root.\n requestAnimationFrame(() => {\n if (this.open) {\n document.addEventListener('mousedown', this.handleClickOutside);\n }\n });\n });\n }\n else {\n document.removeEventListener('mousedown', this.handleClickOutside);\n this.unsubscribePicker();\n this.hidePanel();\n }\n }\n sortChanged() {\n this.resolvedSort = resolveColumnPickerSort(this.sort);\n if (this.open) {\n this.refresh();\n }\n }\n gridApiChanged() {\n if (this.open) {\n this.resubscribePicker();\n }\n }\n gridHostChanged() {\n if (this.open) {\n this.resubscribePicker();\n }\n }\n panelElChanged() {\n if (this.open) {\n DOM.queueUpdate(() => {\n this.refresh();\n this.showPanel();\n });\n }\n }\n /**\n * Subscribe to grid column events and rebuild picker lists.\n * Called automatically when the popover opens; exposed for tests/hosts that need an early bind.\n * @internal\n */\n connectPicker() {\n this.subscribePicker();\n this.refresh();\n }\n /**\n * Opens or closes the popover.\n * @public\n */\n toggle() {\n this.open = !this.open;\n }\n /**\n * Closes the popover.\n * @public\n */\n close() {\n this.open = false;\n }\n /**\n * Rebuilds picker lists from current grid column state.\n */\n refresh() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n this.resolvedSort = resolveColumnPickerSort(this.sort);\n if (!this.pickerApi) {\n return;\n }\n const root = this.pickerRoot;\n const activeElement = document.activeElement;\n const activeTestId = activeElement && (root === null || root === void 0 ? void 0 : root.contains(activeElement))\n ? activeElement.getAttribute('data-test-id')\n : null;\n const displayed = (_c = (_b = (_a = this.pickerApi).getAllDisplayedColumns) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : [];\n const all = (_f = (_e = (_d = this.pickerApi).getColumns) === null || _e === void 0 ? void 0 : _e.call(_d)) !== null && _f !== void 0 ? _f : [];\n const columnState = (_j = (_h = (_g = this.pickerApi).getColumnState) === null || _h === void 0 ? void 0 : _h.call(_g)) !== null && _j !== void 0 ? _j : [];\n const ordered = orderColumnsForPicker(displayed, all, this.resolvedSort, columnState);\n const items = this.applyPendingVisibility(getPickerItems(ordered));\n const { selected, unselected } = partitionPickerItems(items, this.search, this.resolvedSort);\n this.selectedItems = selected;\n this.unselectedItems = unselected;\n this.syncSelectAllState();\n if (activeTestId && root) {\n DOM.queueUpdate(() => {\n var _a;\n (_a = root.querySelector(`[data-test-id=\"${activeTestId}\"]`)) === null || _a === void 0 ? void 0 : _a.focus();\n });\n }\n DOM.queueUpdate(() => {\n this.bindRowDrag();\n });\n }\n disconnectedCallback() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n this.hidePanel();\n this.unsubscribePicker();\n this.open = false;\n super.disconnectedCallback();\n }\n showPanel() {\n const panel = this.panelEl;\n if (!panel || typeof panel.showPopover !== 'function') {\n return;\n }\n if (panel.matches(':popover-open')) {\n return;\n }\n // `source` sets the implicit CSS anchor for position-area / anchor().\n try {\n panel.showPopover({\n source: this.buttonEl,\n });\n }\n catch (_a) {\n panel.showPopover();\n }\n }\n hidePanel() {\n const panel = this.panelEl;\n if (!panel || typeof panel.hidePopover !== 'function') {\n return;\n }\n if (panel.matches(':popover-open')) {\n panel.hidePopover();\n }\n }\n subscribePicker() {\n var _a, _b, _c;\n const api = resolveColumnsPickerApi(this.gridHost, this.gridApi);\n if (api && this.pickerApi === api) {\n return;\n }\n this.unsubscribePicker();\n if (!api) {\n return;\n }\n this.pickerApi = api;\n this.columnDragBridge = (_c = (_b = (_a = this.gridHost) === null || _a === void 0 ? void 0 : _a.getColumnDragBridge) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : null;\n this.resolvedSort = resolveColumnPickerSort(this.sort);\n this.pickerApi.addEventListener('columnVisible', this.boundRefresh);\n this.pickerApi.addEventListener('columnMoved', this.boundRefresh);\n this.pickerApi.addEventListener('newColumnsLoaded', this.boundRefresh);\n this.pickerApi.addEventListener('displayedColumnsChanged', this.boundRefresh);\n }\n resubscribePicker() {\n this.subscribePicker();\n this.refresh();\n }\n unsubscribePicker() {\n var _a;\n this.dragBridgeRetryId += 1;\n (_a = this.dragBindingAbort) === null || _a === void 0 ? void 0 : _a.abort();\n this.dragBindingAbort = null;\n for (const binding of this.agDragBindings) {\n binding.remove();\n }\n this.agDragBindings = [];\n this.pendingVisibility.clear();\n if (this.pickerApi) {\n this.pickerApi.removeEventListener('columnVisible', this.boundRefresh);\n this.pickerApi.removeEventListener('columnMoved', this.boundRefresh);\n this.pickerApi.removeEventListener('newColumnsLoaded', this.boundRefresh);\n this.pickerApi.removeEventListener('displayedColumnsChanged', this.boundRefresh);\n }\n this.pickerApi = null;\n }\n syncSelectAllState() {\n const items = this.toggleableItems;\n const visibleCount = items.filter((item) => item.visible).length;\n this.selectAllChecked = items.length > 0 && visibleCount === items.length;\n this.selectAllIndeterminate = visibleCount > 0 && visibleCount < items.length;\n }\n applyPendingVisibility(items) {\n if (!this.pendingVisibility.size) {\n return items;\n }\n return items.map((item) => {\n const pending = this.pendingVisibility.get(item.colId);\n if (pending === undefined) {\n return item;\n }\n if (item.visible === pending) {\n this.pendingVisibility.delete(item.colId);\n }\n return Object.assign(Object.assign({}, item), { visible: pending });\n });\n }\n resolveDragBridge() {\n var _a;\n return ((_a = resolveColumnDragBridgeDirect(this.columnDragBridge)) !== null && _a !== void 0 ? _a : resolveColumnDragBridgeFromApi(this.pickerApi));\n }\n /**\n * Visible rows: HTML5 reorder inside the picker.\n * Hidden rows (or all rows when `sort=ag-grid`): AG ToolPanel drag onto the grid header.\n */\n bindRowDrag() {\n var _a;\n (_a = this.dragBindingAbort) === null || _a === void 0 ? void 0 : _a.abort();\n this.dragBindingAbort = null;\n for (const binding of this.agDragBindings) {\n binding.remove();\n }\n this.agDragBindings = [];\n const root = this.pickerRoot;\n if (!this.pickerApi || !root) {\n return;\n }\n const bridge = this.resolveDragBridge();\n const rows = root.querySelectorAll('.grid-pro-columns-item');\n if (!rows.length) {\n return;\n }\n const abort = new AbortController();\n this.dragBindingAbort = abort;\n const { signal } = abort;\n let needsBridgeRetry = false;\n let boundGridDrag = false;\n rows.forEach((row) => {\n const colId = row.dataset.colId;\n const handle = row.querySelector('.grid-pro-columns-handle');\n if (!colId || !handle) {\n return;\n }\n handle.classList.remove('grid-pro-columns-handle-grid-drag', 'grid-pro-columns-handle-panel-drag');\n handle.removeAttribute('draggable');\n const item = [...this.selectedItems, ...this.unselectedItems].find((i) => i.colId === colId);\n if (!item) {\n return;\n }\n const dragToGrid = this.canDragToGrid(item);\n const reorderInPanel = this.canReorderInPanel &&\n this.resolvedSort === 'selected-first' &&\n item.visible &&\n !row.classList.contains('grid-pro-columns-item--unselected');\n if (dragToGrid) {\n if (bridge) {\n const binding = bindAgColumnPickerDrag(bridge, this.pickerApi, handle, colId, item.headerName);\n if (binding) {\n boundGridDrag = true;\n this.agDragBindings.push(binding);\n handle.classList.add('grid-pro-columns-handle-grid-drag');\n if (!reorderInPanel) {\n return;\n }\n }\n }\n else {\n needsBridgeRetry = true;\n }\n }\n if (!reorderInPanel) {\n return;\n }\n handle.draggable = true;\n handle.classList.add('grid-pro-columns-handle-panel-drag');\n handle.addEventListener('dragstart', (event) => {\n this.onDragStart(event, colId, row);\n }, { signal });\n handle.addEventListener('dragend', () => this.onDragEnd(), { signal });\n row.addEventListener('dragover', (event) => {\n this.onDragOver(event, row);\n }, { signal });\n row.addEventListener('dragleave', (event) => {\n this.onDragLeave(event, row);\n }, { signal });\n row.addEventListener('drop', (event) => {\n this.onDrop(event, colId);\n }, { signal });\n });\n if (needsBridgeRetry && !boundGridDrag) {\n this.scheduleDragBridgeRetry();\n }\n }\n scheduleDragBridgeRetry(attempt = 0) {\n if (attempt > DRAG_BRIDGE_RETRY_MAX_ATTEMPTS || !this.pickerApi) {\n return;\n }\n this.dragBridgeRetryId += 1;\n const retryId = this.dragBridgeRetryId;\n requestAnimationFrame(() => {\n if (retryId !== this.dragBridgeRetryId || !this.isConnected) {\n return;\n }\n if (this.resolveDragBridge()) {\n this.bindRowDrag();\n return;\n }\n this.scheduleDragBridgeRetry(attempt + 1);\n });\n }\n /**\n * @internal\n */\n onSearchInput(value) {\n this.search = value;\n this.refresh();\n }\n /**\n * @internal\n */\n onSelectAllClick(event) {\n var _a, _b;\n (_a = event.preventDefault) === null || _a === void 0 ? void 0 : _a.call(event);\n (_b = event.stopImmediatePropagation) === null || _b === void 0 ? void 0 : _b.call(event);\n if (!this.pickerApi) {\n return;\n }\n const items = this.toggleableItems;\n if (!items.length) {\n return;\n }\n const makeVisible = !this.selectAllChecked;\n const ids = items.filter((item) => item.visible !== makeVisible).map((item) => item.colId);\n if (!ids.length) {\n return;\n }\n for (const id of ids) {\n this.pendingVisibility.set(id, makeVisible);\n }\n this.pickerApi.setColumnsVisible(ids, makeVisible);\n this.refresh();\n }\n /**\n * @internal\n */\n onCheckboxClick(item, event) {\n event.preventDefault();\n event.stopPropagation();\n this.onVisibilityChange(item, !item.visible);\n }\n /**\n * @internal\n */\n onVisibilityChange(item, visible) {\n if (item.lockVisible || !this.pickerApi || item.visible === visible) {\n return;\n }\n this.pendingVisibility.set(item.colId, visible);\n this.pickerApi.setColumnsVisible([item.colId], visible);\n this.refresh();\n }\n /**\n * @internal\n */\n onDragStart(event, colId, row) {\n if (!this.canReorderInPanel) {\n event.preventDefault();\n return;\n }\n this.dragColId = colId;\n if (event.dataTransfer) {\n event.dataTransfer.setData('text/plain', colId);\n event.dataTransfer.effectAllowed = 'move';\n }\n (row !== null && row !== void 0 ? row : event.currentTarget).classList.add('dragging');\n }\n /**\n * @internal\n */\n onDragEnd() {\n var _a;\n this.dragColId = null;\n this.clearDragOverHighlight();\n (_a = this.pickerRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.grid-pro-columns-item.dragging').forEach((row) => {\n row.classList.remove('dragging');\n });\n }\n /**\n * @internal\n */\n onDragOver(event, row) {\n var _a;\n if (!this.canReorderInPanel) {\n return;\n }\n event.preventDefault();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'move';\n }\n if (this.dragOverElement !== row) {\n (_a = this.dragOverElement) === null || _a === void 0 ? void 0 : _a.classList.remove('drag-over');\n this.dragOverElement = row;\n row.classList.add('drag-over');\n }\n }\n /**\n * @internal\n */\n onDragLeave(event, row) {\n if (this.dragOverElement === row && !row.contains(event.relatedTarget)) {\n row.classList.remove('drag-over');\n this.dragOverElement = null;\n }\n }\n /**\n * @internal\n */\n onDrop(event, colId) {\n var _a;\n event.preventDefault();\n this.clearDragOverHighlight();\n const fromId = this.dragColId || ((_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData('text/plain'));\n if (fromId) {\n this.reorderSelected(fromId, colId);\n }\n }\n clearDragOverHighlight() {\n var _a;\n (_a = this.dragOverElement) === null || _a === void 0 ? void 0 : _a.classList.remove('drag-over');\n this.dragOverElement = null;\n }\n /**\n * Applies a new visible-column order via `applyColumnState({ applyOrder: true })`.\n * Hidden columns keep their relative positions; only the visible slice is permuted.\n */\n reorderSelected(fromId, toId) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (!this.pickerApi || !this.pickerApi.getColumnState || !this.pickerApi.applyColumnState) {\n return;\n }\n const displayed = (_c = (_b = (_a = this.pickerApi).getAllDisplayedColumns) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : [];\n const all = (_f = (_e = (_d = this.pickerApi).getColumns) === null || _e === void 0 ? void 0 : _e.call(_d)) !== null && _f !== void 0 ? _f : [];\n const columnState = (_j = (_h = (_g = this.pickerApi).getColumnState) === null || _h === void 0 ? void 0 : _h.call(_g)) !== null && _j !== void 0 ? _j : [];\n const ordered = orderColumnsForPicker(displayed, all, this.resolvedSort, columnState);\n const items = getPickerItems(ordered);\n const allVisibleIds = items.filter((item) => item.visible).map((item) => item.colId);\n const { selected } = partitionPickerItems(items, this.search, this.resolvedSort);\n const shownIds = this.resolvedSort === 'selected-first'\n ? selected.map((item) => item.colId)\n : selected.filter((item) => item.visible).map((item) => item.colId);\n const nextOrder = reorderVisibleIds(allVisibleIds, shownIds, fromId, toId);\n if (!nextOrder) {\n return;\n }\n this.pickerApi.applyColumnState({\n state: applyVisibleOrder(columnState, nextOrder),\n applyOrder: true,\n });\n }\n}\n__decorate([\n attr\n], ColumnSelection.prototype, \"label\", void 0);\n__decorate([\n attr\n], ColumnSelection.prototype, \"sort\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"open\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"gridApi\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"gridHost\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"root\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"buttonEl\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"panelEl\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"search\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"selectedItems\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"unselectedItems\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"selectAllChecked\", void 0);\n__decorate([\n observable\n], ColumnSelection.prototype, \"selectAllIndeterminate\", void 0);\n/**\n * Foundation Column Selection registration.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-column-selection\\>\n */\nexport const foundationColumnSelection = ColumnSelection.compose({\n baseName: 'column-selection',\n template: getColumnSelectionTemplate('foundation'),\n styles,\n});\n","import { css } from '@microsoft/fast-element';\n/**\n * Styles for {@link ColumnSelection}.\n * @public\n */\nexport const columnSelectionStyles = css `\n :host {\n display: inline-flex;\n align-items: center;\n }\n\n .column-selection {\n display: inline-flex;\n align-items: center;\n }\n\n .column-selection-button[data-state='hover'] {\n background: var(--neutral-fill-hover);\n }\n\n .column-selection-panel,\n .column-selection-panel *,\n .column-selection-panel *::before,\n .column-selection-panel *::after {\n box-sizing: border-box;\n }\n\n .column-selection-panel {\n inset: unset;\n margin: 0;\n box-sizing: border-box;\n width: 280px;\n max-width: min(280px, 90vw);\n max-height: 80dvh;\n overflow-y: auto;\n border: 1px solid var(--neutral-stroke-divider-rest, var(--neutral-stroke-rest));\n border-radius: calc(var(--control-corner-radius, 4) * 1px);\n background: var(--neutral-layer-floating, var(--neutral-layer-2, #fff));\n box-shadow: 0 8px 24px rgb(0 0 0 / 18%);\n padding: 0;\n position-area: block-end span-inline-start;\n position-try-fallbacks: flip-block, flip-inline;\n margin-block-start: calc(var(--design-unit, 4) * 1px);\n min-width: 200px;\n color: var(--ag-foreground-color, var(--neutral-foreground-rest));\n font-family: var(--ag-font-family, var(--body-font));\n font-size: var(--ag-data-font-size, var(--type-ramp-minus-1-font-size));\n }\n\n .column-selection-panel:popover-open {\n display: flex;\n flex-direction: column;\n }\n\n .grid-pro-columns-toolbar {\n display: flex;\n align-items: center;\n gap: calc(var(--design-unit) * 2px);\n flex: none;\n width: 100%;\n height: calc((var(--base-height-multiplier) + var(--density)) * var(--design-unit) * 1px);\n min-height: calc((var(--base-height-multiplier) + var(--density)) * var(--design-unit) * 1px);\n margin: 0;\n padding: 0 calc(var(--design-unit) * 2px);\n border-bottom: var(--ag-borders-secondary, 1px solid)\n var(--ag-secondary-border-color, var(--ag-border-color, var(--neutral-stroke-divider-rest)));\n }\n\n .grid-pro-columns-toolbar .grid-pro-columns-search {\n flex: 1 1 auto;\n min-width: 0;\n width: auto;\n display: block;\n\n --design-unit: 3;\n }\n\n .grid-pro-columns-toolbar > .grid-pro-columns-search {\n flex: 1 1 auto !important;\n height: auto !important;\n min-height: 0 !important;\n }\n\n .grid-pro-columns-select-all {\n flex: 0 0 auto;\n margin: 0;\n\n --design-unit: 3;\n }\n\n .grid-pro-columns-select-all.indeterminate::part(control),\n .grid-pro-columns-select-all[aria-checked='mixed']::part(control) {\n background: var(--neutral-fill-strong-rest, var(--neutral-stroke-rest, #9aa0a6));\n border-color: var(--neutral-fill-strong-rest, var(--neutral-stroke-rest, #9aa0a6));\n }\n\n .grid-pro-columns-select-all.indeterminate:not([disabled]):hover::part(control),\n .grid-pro-columns-select-all[aria-checked='mixed']:not([disabled]):hover::part(control) {\n background: var(--neutral-fill-strong-hover, var(--neutral-stroke-hover, #7d848c));\n border-color: var(--neutral-fill-strong-hover, var(--neutral-stroke-hover, #7d848c));\n }\n\n .grid-pro-columns-select-all.indeterminate::part(checked-indicator),\n .grid-pro-columns-select-all[aria-checked='mixed']::part(checked-indicator) {\n opacity: 0%;\n }\n\n .grid-pro-columns-select-all.indeterminate::part(indeterminate-indicator),\n .grid-pro-columns-select-all[aria-checked='mixed']::part(indeterminate-indicator) {\n width: 10px;\n height: 2px;\n border-radius: 1px;\n background: var(--neutral-fill-input-rest, #fff);\n opacity: 100%;\n }\n\n .grid-pro-columns-select-all.indeterminate:not([disabled]):hover::part(indeterminate-indicator),\n .grid-pro-columns-select-all[aria-checked='mixed']:not([disabled]):hover::part(\n indeterminate-indicator\n ) {\n background: var(--neutral-fill-input-rest, #fff);\n }\n\n .grid-pro-columns-list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 1 1 0;\n min-height: 250px;\n max-height: 400px;\n padding: 8px;\n }\n\n .grid-pro-columns-section {\n display: flex;\n flex-direction: column;\n gap: 2px;\n flex: 0 0 auto;\n }\n\n .grid-pro-columns-item {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 2px 0;\n border-radius: 4px;\n cursor: default;\n user-select: none;\n }\n\n .grid-pro-columns-item.dragging {\n opacity: 50%;\n }\n\n .grid-pro-columns-item.drag-over {\n background: var(--ag-row-hover-color, var(--neutral-fill-hover));\n }\n\n .grid-pro-columns-handle {\n flex: 0 0 auto;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n min-height: 24px;\n margin: -4px 0;\n padding: 4px 6px;\n box-sizing: border-box;\n opacity: 45%;\n letter-spacing: -1px;\n font-size: 12px;\n line-height: 1;\n touch-action: none;\n }\n\n .grid-pro-columns-handle[draggable='true'],\n .grid-pro-columns-handle.grid-pro-columns-handle-grid-drag,\n .grid-pro-columns-handle.grid-pro-columns-handle-panel-drag {\n cursor: grab;\n opacity: 65%;\n }\n\n .grid-pro-columns-handle[draggable='true']:active,\n .grid-pro-columns-handle.grid-pro-columns-handle-grid-drag:active,\n .grid-pro-columns-handle.grid-pro-columns-handle-panel-drag:active {\n cursor: grabbing;\n }\n\n .grid-pro-columns-checkbox {\n flex: 0 0 auto;\n margin: 0;\n\n --design-unit: 3;\n }\n\n .grid-pro-columns-checkbox[aria-checked='true']:not([disabled]):hover::part(checked-indicator) {\n fill: var(--foreground-on-accent-hover);\n }\n\n .grid-pro-columns-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n`;\n/**\n * Host layout when the Grid Pro column-selection toolbar is shown.\n * @public\n */\nexport const gridProColumnSelectionHostStyles = css `\n :host(.has-column-selection) {\n display: flex;\n flex-direction: column;\n min-height: 0;\n }\n\n :host(.has-column-selection) [part='grid'] {\n flex: 1 1 auto;\n min-height: 0;\n }\n\n .grid-pro-column-selection-toolbar {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: calc(var(--design-unit, 4) * 2px);\n width: 100%;\n box-sizing: border-box;\n flex-shrink: 0;\n padding: calc(var(--design-unit, 4) * 2px);\n border-bottom: 1px solid var(--neutral-stroke-divider-rest, var(--neutral-stroke-rest));\n background: var(--neutral-layer-1, transparent);\n }\n`;\n","import { html, ref, repeat } from '@microsoft/fast-element';\n/**\n * Column Selection button + popover with embedded picker UI.\n * @param prefix - Design-system prefix for button/icon/checkbox/text-field.\n * @public\n */\nexport const getColumnSelectionTemplate = (prefix = 'foundation') => {\n const textField = `${prefix}-text-field`;\n const checkbox = `${prefix}-checkbox`;\n const columnRow = html `\n <div\n class=\"${(x) => `grid-pro-columns-item${x.visible ? '' : ' grid-pro-columns-item--unselected'}`}\"\n data-col-id=\"${(x) => x.colId}\"\n data-test-id=\"${(x) => `grid-pro-columns-item-${x.colId}`}\"\n >\n <${checkbox}\n class=\"grid-pro-columns-checkbox\"\n data-test-id=\"${(x) => `grid-pro-columns-check-${x.colId}`}\"\n :checked=\"${(x) => x.visible}\"\n ?disabled=\"${(x) => x.lockVisible}\"\n @click=\"${(x, c) => c.parent.onCheckboxClick(x, c.event)}\"\n ></${checkbox}>\n <span\n class=\"grid-pro-columns-handle\"\n data-test-id=\"${(x) => `grid-pro-columns-handle-${x.colId}`}\"\n aria-hidden=\"${(x, c) => {\n const panel = c.parent;\n return String(!(panel.canDragToGrid(x) || (panel.canReorderInPanel && x.visible)));\n }}\"\n >\n ⋮⋮\n </span>\n <span class=\"grid-pro-columns-label\">${(x) => x.headerName}</span>\n </div>\n `;\n return html `\n <div\n class=\"column-selection\"\n part=\"column-selection\"\n data-test-id=\"column-selection\"\n ${ref('root')}\n >\n <${prefix}-button\n ${ref('buttonEl')}\n part=\"column-selection-button\"\n exportparts=\"control: column-selection-button-control, content: column-selection-button-content\"\n class=\"column-selection-button\"\n appearance=\"neutral\"\n data-state=\"${(x) => (x.open ? 'hover' : undefined)}\"\n aria-pressed=\"${(x) => (x.open ? 'true' : 'false')}\"\n @click=${(x) => x.toggle()}\n >\n <${prefix}-icon size=\"lg\" name=\"columns\" slot=\"start\"></${prefix}-icon>\n ${(x) => x.label}\n </${prefix}-button>\n <div\n ${ref('panelEl')}\n class=\"column-selection-panel\"\n part=\"column-selection-panel\"\n data-test-id=\"column-selection-panel\"\n popover=\"manual\"\n >\n <div class=\"grid-pro-columns-toolbar\" data-test-id=\"grid-pro-columns-toolbar\">\n <${checkbox}\n class=\"grid-pro-columns-select-all\"\n data-test-id=\"grid-pro-columns-select-all\"\n :checked=\"${(x) => x.selectAllChecked}\"\n :indeterminate=\"${(x) => x.selectAllIndeterminate}\"\n aria-checked=\"${(x) => x.selectAllIndeterminate ? 'mixed' : x.selectAllChecked ? 'true' : 'false'}\"\n @click=\"${(x, c) => x.onSelectAllClick(c.event)}\"\n ></${checkbox}>\n <${textField}\n class=\"grid-pro-columns-search\"\n placeholder=\"Search\"\n data-test-id=\"grid-pro-columns-search\"\n :value=\"${(x) => x.search}\"\n @input=\"${(x, c) => x.onSearchInput(c.event.target.value)}\"\n ></${textField}>\n </div>\n <div class=\"grid-pro-columns-list\" data-test-id=\"grid-pro-columns-list\">\n <div class=\"grid-pro-columns-section\" data-test-id=\"grid-pro-columns-selected\">\n ${repeat((x) => x.selectedItems, columnRow, { recycle: false })}\n </div>\n <div class=\"grid-pro-columns-section\" data-test-id=\"grid-pro-columns-unselected\">\n ${repeat((x) => x.unselectedItems, columnRow, { recycle: false })}\n </div>\n </div>\n </div>\n </div>\n `;\n};\n/**\n * Default column selection template (`foundation-*` components).\n * @public\n */\nexport const columnSelectionTemplate = getColumnSelectionTemplate();\n","import { _ColumnMoveModule as ColumnMoveModule, } from 'ag-grid-community';\n/** Context key on `gridOptions.context` for AG column drag integration.\n * @public\n */\nexport const GRID_PRO_COLUMN_DRAG_BRIDGE_CONTEXT_KEY = 'gridProColumnDragBridge';\n/** @internal Writes DnD beans onto the shared bridge object in grid context. */\nexport function syncColumnDragBridge(beans) {\n var _a, _b;\n if (!(beans === null || beans === void 0 ? void 0 : beans.dragAndDrop) || !beans.gos) {\n return false;\n }\n const context = (_a = beans.gos.get('context')) !== null && _a !== void 0 ? _a : (_b = beans.gridOptions) === null || _b === void 0 ? void 0 : _b.context;\n const bridge = context === null || context === void 0 ? void 0 : context[GRID_PRO_COLUMN_DRAG_BRIDGE_CONTEXT_KEY];\n if (!bridge) {\n return false;\n }\n bridge.dragAndDrop = beans.dragAndDrop;\n bridge.gos = beans.gos;\n return true;\n}\n/** @internal Populates {@link GridProColumnDragBridge} once core DnD beans exist. */\nclass GridProColumnDragBridgeInit {\n constructor() {\n this.beanName = 'gridProColumnDragBridgeInit';\n this.beans = null;\n }\n wireBeans(beans) {\n this.beans = beans;\n }\n postConstruct() {\n syncColumnDragBridge(this.beans);\n queueMicrotask(() => syncColumnDragBridge(this.beans));\n }\n}\n/**\n * Registers drag-and-drop beans on `gridOptions.context` so custom tool panels\n * can call `dragAndDrop.addDragSource` (same contract as Enterprise Columns panel).\n * @internal\n */\nexport const gridProColumnDragBridgeModule = {\n moduleName: 'GridProColumnDragBridge',\n version: ColumnMoveModule.version,\n beans: [GridProColumnDragBridgeInit],\n dependsOn: [ColumnMoveModule],\n};\n/** @public */\nexport function resolveColumnDragBridge(context) {\n const bridge = context === null || context === void 0 ? void 0 : context[GRID_PRO_COLUMN_DRAG_BRIDGE_CONTEXT_KEY];\n return resolveColumnDragBridgeDirect(bridge);\n}\n/** @public */\nexport function resolveColumnDragBridgeDirect(bridge) {\n if (!(bridge === null || bridge === void 0 ? void 0 : bridge.dragAndDrop) || !(bridge === null || bridge === void 0 ? void 0 : bridge.gos)) {\n return null;\n }\n return bridge;\n}\n/** @public */\nexport function resolveColumnDragBridgeFromApi(api) {\n var _a;\n return resolveColumnDragBridge((_a = api === null || api === void 0 ? void 0 : api.getGridOption) === null || _a === void 0 ? void 0 : _a.call(api, 'context'));\n}\n","/**\n * Resolves an AG `gridApi` suitable for {@link ColumnSelection}.\n * Classic Grid Pro (v29) exposes column helpers on `columnApi` — bridge when needed.\n * @public\n */\nexport function resolveColumnsPickerApi(gridHost, gridApi) {\n const resolvedApi = (gridApi !== null && gridApi !== void 0 ? gridApi : gridHost === null || gridHost === void 0 ? void 0 : gridHost.gridApi);\n if (!resolvedApi) {\n return null;\n }\n if (typeof resolvedApi.setColumnsVisible === 'function' &&\n typeof resolvedApi.getColumns === 'function') {\n return resolvedApi;\n }\n const columnApi = gridHost === null || gridHost === void 0 ? void 0 : gridHost.columnApi;\n if (!columnApi) {\n return null;\n }\n return new Proxy(resolvedApi, {\n get(target, prop, receiver) {\n switch (prop) {\n case 'getColumns':\n return () => { var _a, _b; return (_b = (_a = columnApi.getAllGridColumns) === null || _a === void 0 ? void 0 : _a.call(columnApi)) !== null && _b !== void 0 ? _b : []; };\n case 'getAllDisplayedColumns':\n return () => { var _a, _b; return (_b = (_a = columnApi.getAllDisplayedColumns) === null || _a === void 0 ? void 0 : _a.call(columnApi)) !== null && _b !== void 0 ? _b : []; };\n case 'getColumnState':\n return () => { var _a, _b; return (_b = (_a = columnApi.getColumnState) === null || _a === void 0 ? void 0 : _a.call(columnApi)) !== null && _b !== void 0 ? _b : []; };\n case 'setColumnsVisible':\n return (ids, visible) => {\n var _a;\n for (const id of ids) {\n (_a = columnApi.setColumnVisible) === null || _a === void 0 ? void 0 : _a.call(columnApi, id, visible);\n }\n };\n case 'applyColumnState':\n return (opts) => { var _a; return (_a = columnApi.applyColumnState) === null || _a === void 0 ? void 0 : _a.call(columnApi, opts); };\n default:\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n}\n","import { __decorate } from \"tslib\";\nimport { LifecycleMixin } from '@genesislcap/foundation-utils';\nimport { customElement, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { ColumnTemplate as template } from './column.template';\n/**\n * The Grid Pro Column element.\n * @remarks Used insde the Grid Pro element, to specify the column definitions (ColDef) for a given column.\n * @public\n */\nlet GridProColumn = class GridProColumn extends LifecycleMixin(FoundationElement) {\n constructor() {\n super(...arguments);\n this.definition = {};\n }\n slottedAgCellChanged() { }\n deepClone() {\n const copy = super.deepClone();\n copy.definition = {};\n if (this.definition) {\n Object.keys(this.definition).forEach((key) => {\n if (typeof this.definition[key] === 'function') {\n copy.definition[key] = this.definition[key].bind(copy);\n }\n else {\n copy.definition[key] = structuredClone(this.definition[key]);\n }\n });\n }\n return copy;\n }\n};\n__decorate([\n observable\n], GridProColumn.prototype, \"slottedAgCell\", void 0);\n__decorate([\n observable\n], GridProColumn.prototype, \"definition\", void 0);\nGridProColumn = __decorate([\n customElement({\n name: 'grid-pro-column',\n template,\n })\n], GridProColumn);\nexport { GridProColumn };\n","import { html, slotted } from '@microsoft/fast-element';\n/**\n * The Grid Pro Column Template.\n * @public\n */\nexport const ColumnTemplate = html `\n <template>\n <slot ${slotted('slottedAgCell')} @slotchange=\"${(x) => x.slottedAgCellChanged()}\"></slot>\n </template>\n`;\n","import { html, repeat, when } from '@microsoft/fast-element';\n/** Narrows a column def (or group def) to a visible, field-bearing leaf column. */\nfunction isVisibleColumnDef(colDef) {\n return (typeof colDef === 'object' &&\n colDef !== null &&\n typeof colDef.field === 'string' &&\n !colDef.hide);\n}\n/**\n * Resolves the field names of the currently visible columns.\n * @remarks Prefers the grid's displayed columns (`getAllDisplayedColumns()` — already excludes\n * hidden columns and children of collapsed groups, so no extra visibility check is needed); falls\n * back to the current column defs (available earlier in the lifecycle than the columns), treating\n * `hide` as not visible. Shared by the host grids to report the visible set to the datasource.\n * Typed structurally so it works across the differing AG Grid type packages the grids depend on.\n * @param displayedColumns - The grid's currently displayed columns, when available.\n * @param colDefs - The current column defs, used as a fallback before the columns are populated.\n * @public\n */\nexport function resolveVisibleColumnFields(displayedColumns, colDefs) {\n if (displayedColumns === null || displayedColumns === void 0 ? void 0 : displayedColumns.length) {\n return displayedColumns\n .map((column) => column.getColDef().field)\n .filter((field) => !!field);\n }\n return (colDefs !== null && colDefs !== void 0 ? colDefs : []).filter(isVisibleColumnDef).map((colDef) => colDef.field);\n}\n/**\n * A directive that renders a set of grid-pro-column elements from a given input binding\n *\n * @param itemsBinding - The array to render\n * @param includeRenderers - Optionally tells whether to include cell renderers, if available\n * @public\n */\nexport function gridProColumns(itemsBinding, includeRenderers = true) {\n return html `\n ${repeat(typeof itemsBinding === 'function' ? itemsBinding : () => itemsBinding, html `\n <grid-pro-column :definition=${(x) => x}>\n ${when((x) => includeRenderers && x.cellRenderer, html `\n <grid-pro-cell\n :renderer=\"${(x) => x.cellRenderer}\"\n :rendererParams=\"${(x) => x.cellRendererParams}\"\n ></grid-pro-cell>\n `)}\n </grid-pro-column>\n `)}\n `;\n}\n","import { __awaiter, __decorate } from \"tslib\";\nimport { Connect, Datasource, DatasourceDefaults, DatasourceEventHandler, FieldTypeEnum, logger, normaliseCriteria, ResourceType, } from '@genesislcap/foundation-comms';\nimport { JSONSerializer } from '@genesislcap/foundation-utils';\nimport { attr, nullableNumberConverter, observable, volatile } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { BehaviorSubject } from 'rxjs';\nimport { datasourceEventNames, } from '../grid-pro-genesis-datasource/datasource-events.types';\nimport { dateTimeValueFormatter, dateValueFormatter, getColumnType } from '../grid-pro.definitions';\nimport { GridProRendererTypes, GridProStatusBarTypes } from '../grid-pro.types';\nimport { baseDatasourceEventNames } from './base.types';\n/**\n * The delimiter for the criteria string.\n * @public\n */\nexport const criteriaDelimiter = ';';\n/**\n * The join for the criteria string.\n * @public\n */\nexport const criteriaJoin = ' && ';\n/**\n * The base datasource element for the grid-pro element.\n * @public\n *\n * @fires base-datasource-error - Fired when a datasource error is reported. detail: `BaseDatasourceErrorEventDetail`\n * @fires datasource-error - Fired when a datasource error occurs (for grid integration). detail: `DatasourceErrorEventDetail`\n * @fires base-datasource-connected - Fired when error state is cleared after connection succeeds\n * @fires datasource-loading-finished - Fired when pending stream transactions are flushed with no row changes\n * @fires datasource-no-data-available - Fired when loading finishes with an empty row set\n * @fires datasource-data-changed - Fired when row data changes from applied stream transactions. detail: `DataChangedEventDetail`\n */\nexport class GenesisGridDatasourceElement extends DatasourceEventHandler(FoundationElement) {\n constructor() {\n super(...arguments);\n /**\n * Request a snapshot from the server.\n * @remarks Defaults to false.\n */\n this.isSnapshot = false;\n /**\n * Maximum number of rows to be returned as part of the initial message, and as part of any additional MORE_ROWS messages.\n * @remarks This will not affect the number of rows displayed. Defaults to 250.\n */\n this.maxRows = DatasourceDefaults.MAX_ROWS_250;\n /**\n * Maximum number of rows to track as part of a client \"view\".\n * @remarks DATASERVER only. Defaults to 1000.\n */\n this.maxView = DatasourceDefaults.MAX_VIEW_1000;\n /**\n * If true, when the maximum number of rows defined in max-view is reached, the Data Server will start discarding the oldest rows (in terms of timestamp) and sending newer rows.\n * @remarks DATASERVER only. If false, the updates in the server will be sent to the front end regardless of order. Note that this will only update the UI; no changes will be performed in the database. Defaults to false.\n */\n this.movingView = false;\n /**\n * Option that changes the Data Server index iteration.\n * @remarks DATASERVER only. For example, if you are using the default index, the query will return rows in order from the newest database records to the oldest. Defaults to false.\n */\n this.reverse = false;\n // REQUEST_SERVER only\n /**\n * Disables polling if set to true (data updates for the grid will not be fetched automatically).\n * @remarks REQUEST_SERVER only. Defaults to false.\n */\n this.disablePolling = false;\n /**\n * The offset for pagination in REQUEST_SERVER scenarios.\n * @remarks REQUEST_SERVER only.\n */\n this.offset = DatasourceDefaults.DEFAULT_REQ_REP_OFFSET;\n /**\n * Custom polling frequency (in milliseconds) for a Request Server resource.\n * @remarks REQUEST_SERVER only. Note that this option only works with Request Server resources; if your resource is a Data Server query, your grid is updated in real time. Defaults to 5000ms.\n */\n this.pollingInterval = DatasourceDefaults.REQ_REP_POLLING_INTERVAL_MS;\n /**\n * Array of event names that will trigger a poll when received as commit responses.\n * @remarks REQUEST_SERVER only.\n */\n this.pollTriggerEvents = [];\n /**\n * Attribute to set whether the REQUEST object should be automatically set up.\n * @remarks Defaults to `true`. Only applies to REQUEST_SERVER (REQ-REP) resources.\n * @privateRemarks To avoid breaking changes for now, once V15 is out this will be removed and the default behavior will be the same as `false` here.\n */\n this.requestAutoSetup = true;\n /**\n * Attribute to set whether the datasource should restart when it reconnects.\n * @remarks Defaults to `true`.\n * @privateRemarks This attribute is shared across all datasources to ensure consistent behavior.\n */\n this.restartOnReconnection = true;\n this.criteriaFromFilters = new Map();\n this.update = new BehaviorSubject(new Map());\n }\n /**\n * Returns the `row-id` attribute, depending on the resource type.\n * @remarks Will favour the `row-id` attribute if set.\n * @internal\n */\n get rowId() {\n if (this.rowIdAttr)\n return this.rowIdAttr;\n if (this.isRequestServer)\n return DatasourceDefaults.REQUEST_SERVER_ROW_ID;\n return DatasourceDefaults.DATASERVER_ROW_ID;\n }\n /**\n * Returns whether the `row-id` attribute is the default one, depending on the resource type.\n * @internal\n */\n get hasDefaultRowId() {\n return (!this.rowIdAttr ||\n this.rowIdAttr === DatasourceDefaults.REQUEST_SERVER_ROW_ID ||\n this.rowIdAttr === DatasourceDefaults.DATASERVER_ROW_ID);\n }\n get defaultRowIdByResourceType() {\n return this.isRequestServer\n ? DatasourceDefaults.REQUEST_SERVER_ROW_ID\n : DatasourceDefaults.DATASERVER_ROW_ID;\n }\n datasourceOptions() {\n return {\n // Common between DATASERVER and REQUEST_SERVER (REQ-REP)\n criteria: this.buildCriteria(),\n isSnapshot: this.isSnapshot,\n maxRows: +this.maxRows,\n orderBy: this.orderBy,\n resourceName: this.resourceName,\n viewNumber: +this.viewNumber,\n // DATASERVER only\n fields: this.fields,\n maxView: +this.maxView,\n movingView: this.movingView,\n reverse: this.reverse,\n // REQUEST_SERVER only\n disablePolling: this.disablePolling,\n offset: this.offset,\n pollingInterval: this.pollingInterval,\n pollTriggerEvents: this.pollTriggerEvents,\n request: this.request,\n requestAutoSetup: this.requestAutoSetup,\n };\n }\n /**\n * The criteria the resource should be read with: the `criteria` attribute plus anything added\n * through `setFilter()`.\n * @internal\n */\n buildCriteria() {\n var _a, _b;\n // Blank fragments are dropped before joining. `criteria` is often bound to an empty string\n // rather than left unset, and ''.split(';') is [''], so without this a single setFilter()\n // produced \" && FIELD == 'x'\" - a leading operator the server rejects as invalid Groovy.\n const parts = [\n ...((_b = (_a = this.criteria) === null || _a === void 0 ? void 0 : _a.split(criteriaDelimiter)) !== null && _b !== void 0 ? _b : []),\n ...this.criteriaFromFilters.values(),\n ]\n .map((part) => part === null || part === void 0 ? void 0 : part.trim())\n .filter(Boolean);\n const normalisedCriteria = normaliseCriteria(parts.join(criteriaJoin), criteriaDelimiter);\n return normalisedCriteria ? normalisedCriteria : undefined;\n }\n setFilter(fieldName, newFilter) {\n this.criteriaFromFilters.set(fieldName, newFilter);\n this.update.next(this.criteriaFromFilters);\n }\n removeFilter(fieldName) {\n this.criteriaFromFilters.delete(fieldName);\n this.update.next(this.criteriaFromFilters);\n }\n get isRequestServer() {\n var _a;\n return ((_a = this.datasource.status) === null || _a === void 0 ? void 0 : _a.type) === ResourceType.REQUEST_SERVER;\n }\n // protected isRequestServer = false;\n datasourceStatusChanged(prev, next) {\n // this.isRequestServer = next.type === ResourceType.REQUEST_SERVER;\n // TODO: this is not triggered after first init :(\n }\n /**\n * Handles errors and emits appropriate error events.\n * @param errors - The error message or array of error messages\n * @param type - The type of error that occurred\n * @public\n */\n handleErrors(errors, type = 'unknown') {\n let message;\n if (Array.isArray(errors)) {\n const stringArray = errors.map((item) => {\n if (typeof item === 'string') {\n return item;\n }\n else if (typeof item === 'object' && item !== null && 'TEXT' in item) {\n return item.TEXT;\n }\n else {\n return String(item);\n }\n });\n message = stringArray.join(', ');\n }\n else if (typeof errors === 'string') {\n message = errors;\n }\n else {\n message = String(errors);\n }\n if (message) {\n logger.error(`${type}: ${message}`);\n // Emit both the old event for backward compatibility and the new event for grid handling\n this.$emit(baseDatasourceEventNames.error, {\n message,\n type,\n });\n this.$emit(datasourceEventNames.error, { message, type });\n }\n }\n /**\n * Clears error state and emits connected event.\n * @public\n */\n clearErrors() {\n this.$emit(baseDatasourceEventNames.connected);\n }\n /**\n * Override datasource initialization to handle errors properly.\n * @internal\n */\n initializeDatasource(options_1) {\n return __awaiter(this, arguments, void 0, function* (options, fetchMeta = true, startStream = true) {\n try {\n const success = yield this.datasource.init(options, fetchMeta, startStream);\n if (success) {\n this.clearErrors();\n return true;\n }\n else {\n // Determine error type based on the initialization failure\n const resourceName = options.resourceName;\n if (!resourceName) {\n this.handleErrors('Resource name is required', 'resource-validation');\n }\n else if (!this.connect.isConnected) {\n this.handleErrors(`Unable to connect to ${this.connect.host}`, 'connection');\n }\n else {\n // Check if it's a resource validation issue\n const isValidResource = yield this.connect.getMetadata(resourceName).catch(() => null);\n if (!isValidResource) {\n this.handleErrors(`Resource '${resourceName}' does not exist on ${this.connect.host}`, 'resource-validation');\n }\n else {\n this.handleErrors(`Failed to initialize datasource for ${resourceName}`, 'unknown');\n }\n }\n return false;\n }\n }\n catch (error) {\n let errorMessage = 'Unknown initialization error';\n let errorType = 'unknown';\n if (error instanceof Error) {\n errorMessage = error.message;\n // Categorize error types based on message content\n if (errorMessage.includes('connect') || errorMessage.includes('connection')) {\n errorType = 'connection';\n }\n else if (errorMessage.includes('resource') || errorMessage.includes('does not exist')) {\n errorType = 'resource-validation';\n }\n else if (errorMessage.includes('metadata')) {\n errorType = 'metadata';\n }\n else if (errorMessage.includes('stream')) {\n errorType = 'stream';\n }\n else if (errorMessage.includes('criteria')) {\n errorType = 'criteria';\n }\n }\n this.handleErrors(errorMessage, errorType);\n return false;\n }\n });\n }\n}\n__decorate([\n Connect\n], GenesisGridDatasourceElement.prototype, \"connect\", void 0);\n__decorate([\n Datasource\n], GenesisGridDatasourceElement.prototype, \"datasource\", void 0);\n__decorate([\n observable\n], GenesisGridDatasourceElement.prototype, \"deferredGridOptions\", void 0);\n__decorate([\n observable\n], GenesisGridDatasourceElement.prototype, \"deferredColumnStates\", void 0);\n__decorate([\n observable\n], GenesisGridDatasourceElement.prototype, \"rowDataMapper\", void 0);\n__decorate([\n attr\n], GenesisGridDatasourceElement.prototype, \"criteria\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'is-snapshot' })\n], GenesisGridDatasourceElement.prototype, \"isSnapshot\", void 0);\n__decorate([\n attr({ attribute: 'max-rows', converter: nullableNumberConverter })\n], GenesisGridDatasourceElement.prototype, \"maxRows\", void 0);\n__decorate([\n attr({ attribute: 'order-by' })\n], GenesisGridDatasourceElement.prototype, \"orderBy\", void 0);\n__decorate([\n attr({ attribute: 'resource-name' })\n], GenesisGridDatasourceElement.prototype, \"resourceName\", void 0);\n__decorate([\n attr({ attribute: 'view-number', converter: nullableNumberConverter })\n], GenesisGridDatasourceElement.prototype, \"viewNumber\", void 0);\n__decorate([\n attr\n], GenesisGridDatasourceElement.prototype, \"fields\", void 0);\n__decorate([\n attr({ attribute: 'max-view', converter: nullableNumberConverter })\n], GenesisGridDatasourceElement.prototype, \"maxView\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'moving-view' })\n], GenesisGridDatasourceElement.prototype, \"movingView\", void 0);\n__decorate([\n attr({ mode: 'boolean' })\n], GenesisGridDatasourceElement.prototype, \"reverse\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'disable-polling' })\n], GenesisGridDatasourceElement.prototype, \"disablePolling\", void 0);\n__decorate([\n attr({ converter: nullableNumberConverter })\n], GenesisGridDatasourceElement.prototype, \"offset\", void 0);\n__decorate([\n attr({ attribute: 'polling-interval' })\n], GenesisGridDatasourceElement.prototype, \"pollingInterval\", void 0);\n__decorate([\n observable\n], GenesisGridDatasourceElement.prototype, \"pollTriggerEvents\", void 0);\n__decorate([\n observable\n], GenesisGridDatasourceElement.prototype, \"request\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'request-auto-setup' })\n], GenesisGridDatasourceElement.prototype, \"requestAutoSetup\", void 0);\n__decorate([\n attr({ attribute: 'row-id' })\n], GenesisGridDatasourceElement.prototype, \"rowIdAttr\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'restart-on-reconnection' })\n], GenesisGridDatasourceElement.prototype, \"restartOnReconnection\", void 0);\n__decorate([\n volatile\n], GenesisGridDatasourceElement.prototype, \"isRequestServer\", null);\n/**\n * The operation type for the {@link GridProBaseDatasource.mapTransaction} method.\n * @internal\n */\nexport var OperationType;\n(function (OperationType) {\n OperationType[\"Add\"] = \"add\";\n OperationType[\"Update\"] = \"update\";\n OperationType[\"Remove\"] = \"remove\";\n})(OperationType || (OperationType = {}));\nexport class GridProBaseDatasource extends GenesisGridDatasourceElement {\n constructor() {\n super(...arguments);\n this.dataSubWasLoggedOff = false;\n this.keepColDefsOnClearRowData = false;\n this.rowData = new Map();\n this.transactionData = { add: [], remove: [], update: [] };\n /** So rows without a row id are warned about once per element, not once per block. @internal */\n this.missingRowIdWarned = false;\n this._isDisconnected = false;\n }\n subscribeToConnection() {\n var _a;\n if (this.connect && this.connect.isConnected$) {\n (_a = this.connectionSub) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.connectionSub = this.connect.isConnected$.subscribe((isConnected) => {\n if (isConnected && this.isDisconnected()) {\n this.setDisconnected(false);\n if (this.restartOnReconnection) {\n this.reloadResourceData();\n }\n }\n else if (!isConnected) {\n this.setDisconnected(true);\n }\n });\n }\n }\n unsubscribeFromConnection() {\n var _a;\n (_a = this.connectionSub) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.connectionSub = undefined;\n }\n generateColumnDefsFromMetadata(fieldsMetadata, getFilterParamsByFieldType, getFilterByFieldType) {\n return fieldsMetadata === null || fieldsMetadata === void 0 ? void 0 : fieldsMetadata.flatMap((field) => {\n const colDefBase = {};\n colDefBase.filterParams = getFilterParamsByFieldType(field);\n switch (field.type) {\n case FieldTypeEnum.STRING:\n colDefBase.cellEditor = GridProRendererTypes.stringEditor;\n break;\n case FieldTypeEnum.NUMBER:\n colDefBase.cellEditor = GridProRendererTypes.numberEditor;\n break;\n case FieldTypeEnum.BOOLEAN:\n colDefBase.cellRenderer = GridProRendererTypes.boolean;\n colDefBase.cellEditor = GridProRendererTypes.boolean;\n break;\n case FieldTypeEnum.DATE:\n colDefBase.valueFormatter = dateValueFormatter;\n colDefBase.cellEditor = GridProRendererTypes.dateEditor;\n break;\n case FieldTypeEnum.DATETIME:\n colDefBase.valueFormatter = dateTimeValueFormatter;\n colDefBase.cellEditor = GridProRendererTypes.dateEditor;\n colDefBase.cellEditorParams = {\n withTime: true,\n };\n break;\n case FieldTypeEnum.ENUM:\n if (field.enumOptions) {\n colDefBase.cellEditor = GridProRendererTypes.selectEditor;\n colDefBase.cellEditorParams = {\n values: field.enumOptions.map((option) => ({ value: option, label: option })),\n valueField: 'value',\n labelField: 'label',\n };\n }\n else {\n logger.warn(`No enumOptions found for field ${field.name}. Default cell editor applied.`);\n }\n break;\n default:\n break;\n }\n if (this.fields && !this.fields.includes(field.name)) {\n return [];\n }\n return Object.assign({ field: field.name, type: getColumnType(field.type), filter: getFilterByFieldType(field.type) }, colDefBase);\n });\n }\n handleStreamInserts(insertedRows, addIndex = 0) {\n // Create a local counter for the insertion index when we need to do sequential inserts\n let currentAddIndex = addIndex;\n insertedRows === null || insertedRows === void 0 ? void 0 : insertedRows.forEach((insertData) => {\n const rowId = insertData[this.rowId];\n if (!rowId) {\n logger.warn('Attempted to insert row without valid rowId', insertData);\n return;\n }\n const existsInInternalState = this.rowData.has(rowId);\n if (existsInInternalState || this.dataSubWasLoggedOff) {\n const existingData = this.rowData.get(rowId);\n const updatedRow = Object.assign(Object.assign({}, existingData), insertData);\n this.transactionData.update.push(updatedRow);\n this.rowData.set(rowId, updatedRow);\n }\n else {\n this.transactionData.add.push(insertData);\n // Use the current add index for this insertion\n this.transactionData.addIndex = currentAddIndex;\n this.rowData.set(rowId, insertData);\n // Only increment the index if we're not inserting at the beginning (addIndex > 0)\n // This ensures rows are inserted in sequence when appending to the end of the grid\n if (addIndex > 0) {\n // Increment for the next insertion\n currentAddIndex += 1;\n }\n }\n });\n }\n /**\n * Resolves the id of the held row a stream row refers to.\n * @remarks Under a custom `row-id` a DATASERVER push may carry only the default id\n * (`ROW_REF`), so the held row with that default id supplies the custom one. Returns\n * `undefined` when neither id is present - callers skip the row rather than matching\n * `undefined === undefined` against the first held row.\n * @internal\n */\n resolveRowId(row) {\n const rowId = row === null || row === void 0 ? void 0 : row[this.rowId];\n if (rowId !== undefined && rowId !== null) {\n return rowId;\n }\n if (this.hasDefaultRowId || this.isRequestServer) {\n return undefined;\n }\n const defaultRowId = this.defaultRowIdByResourceType;\n const defaultKey = row === null || row === void 0 ? void 0 : row[defaultRowId];\n if (defaultKey === undefined || defaultKey === null) {\n return undefined;\n }\n for (const held of this.rowData.values()) {\n if ((held === null || held === void 0 ? void 0 : held[defaultRowId]) === defaultKey) {\n return held[this.rowId];\n }\n }\n return undefined;\n }\n handleStreamDeletes(deletedRows) {\n deletedRows === null || deletedRows === void 0 ? void 0 : deletedRows.forEach((deleteData) => {\n const rowId = this.resolveRowId(deleteData);\n if (rowId === undefined) {\n logger.warn('Attempted to delete row without a resolvable rowId', deleteData);\n return;\n }\n this.transactionData.remove.push({ [this.rowId]: rowId });\n this.rowData.delete(rowId);\n });\n }\n handleStreamUpdates(updatedRows) {\n updatedRows === null || updatedRows === void 0 ? void 0 : updatedRows.forEach((updateData) => {\n const rowId = this.resolveRowId(updateData);\n const rowToBeUpdated = rowId === undefined ? undefined : this.rowData.get(rowId);\n if (!rowToBeUpdated) {\n // Neither the grid nor consumers hold the row, so there is nothing to update; the row is\n // reported as `add` if and when a block delivers it.\n logger.debug('Ignoring update for a row that is not held', updateData);\n return;\n }\n // A partial MODIFY resolved through the default id carries the custom id as undefined;\n // keep the resolved one.\n const updatedRow = Object.assign(Object.assign(Object.assign({}, rowToBeUpdated), updateData), { [this.rowId]: rowId });\n this.transactionData.update.push(updatedRow);\n this.rowData.set(rowId, updatedRow);\n });\n }\n applyAllTransactions() {\n var _a, _b, _c, _d, _e, _f;\n if (!((_a = this.transactionData.add) === null || _a === void 0 ? void 0 : _a.length) &&\n !((_b = this.transactionData.update) === null || _b === void 0 ? void 0 : _b.length) &&\n !((_c = this.transactionData.remove) === null || _c === void 0 ? void 0 : _c.length)) {\n this.$emit(datasourceEventNames.loadingFinished);\n if (this.rowData.size === 0) {\n this.$emit(datasourceEventNames.noDataAvailable);\n }\n return;\n }\n if (((_d = this.transactionData.add) === null || _d === void 0 ? void 0 : _d.length) > 0) {\n this.applyMappedTransaction({\n add: this.transactionData.add,\n addIndex: this.transactionData.addIndex,\n }, OperationType.Add);\n }\n if (((_e = this.transactionData.remove) === null || _e === void 0 ? void 0 : _e.length) > 0) {\n this.applyMappedTransaction({ remove: this.transactionData.remove }, OperationType.Remove);\n }\n if (((_f = this.transactionData.update) === null || _f === void 0 ? void 0 : _f.length) > 0) {\n this.applyMappedTransaction({ update: this.transactionData.update }, OperationType.Update);\n }\n }\n applyMappedTransaction(transaction, operation) {\n const mappedTransaction = this.mapTransaction(transaction, [operation]);\n this.$emit(datasourceEventNames.dataChanged, {\n changes: mappedTransaction,\n });\n }\n /**\n * Reports rows a block-based row model (server-side, infinite) has just handed to the grid.\n * Rows not held before are reported as `add`; rows already held (a block re-read after a\n * refresh, or a req/rep re-read after a commit or poll) are reported as `update` only when\n * their content changed, so a plain re-read is silent.\n * @remarks `rowData` holds the rows delivered since the last cache reset: the resource reports\n * rows a re-read no longer returned (`reportWithdrawnRows`), and `clearRowData` empties it when\n * the grid drops its cache. Block eviction is not mirrored - see `DeliveredBlockLedger` - so\n * this is a superset of what the grid holds.\n * @internal\n */\n reportDeliveredRows(rows) {\n const transaction = this.resetTransaction();\n rows.forEach((row) => {\n const rowId = row === null || row === void 0 ? void 0 : row[this.rowId];\n if (rowId === undefined || rowId === null) {\n this.warnMissingRowIdOnce(row);\n return;\n }\n const known = this.rowData.get(rowId);\n if (!known) {\n transaction.add.push(row);\n }\n else if (this.hasRowContentChanged(known, row)) {\n transaction.update.push(row);\n }\n this.rowData.set(rowId, row);\n });\n this.emitTransaction(transaction);\n }\n /**\n * Reports rows a block re-read no longer returned: they left the grid (deleted on the server,\n * or moved into a block that reports them again). Rows already reported removed - a DATASERVER\n * push, say - are skipped.\n * @internal\n */\n reportWithdrawnRows(rowIds) {\n const transaction = this.resetTransaction();\n rowIds.forEach((rowId) => {\n if (!this.rowData.has(rowId)) {\n return;\n }\n this.rowData.delete(rowId);\n transaction.remove.push({ [this.rowId]: rowId });\n });\n this.emitTransaction(transaction);\n }\n /**\n * Starts a fresh transaction and returns it, so a caller can keep working on the object it\n * built even if a consumer's `datasource-data-changed` handler resets the element meanwhile.\n * @internal\n */\n resetTransaction() {\n const transaction = { add: [], remove: [], update: [] };\n this.transactionData = transaction;\n return transaction;\n }\n /**\n * Whether two versions of a row differ in content. Identity and a key-order-insensitive\n * field comparison come first, so a re-read of unchanged rows costs no serialization; nested\n * values fall back to the serializer.\n * @internal\n */\n hasRowContentChanged(known, row) {\n if (known === row) {\n return false;\n }\n if (!known || !row || typeof known !== 'object' || typeof row !== 'object') {\n return true;\n }\n const knownKeys = Object.keys(known);\n const rowKeys = Object.keys(row);\n if (knownKeys.length !== rowKeys.length) {\n return true;\n }\n for (const key of rowKeys) {\n const before = known[key];\n const after = row[key];\n if (before === after) {\n continue;\n }\n if (before !== null &&\n after !== null &&\n typeof before === 'object' &&\n typeof after === 'object' &&\n this.serializer.serialize(before) === this.serializer.serialize(after)) {\n continue;\n }\n return true;\n }\n return false;\n }\n /** Emits `datasource-data-changed` for `transaction` when it is non-empty. @internal */\n emitTransaction(transaction) {\n if (!transaction) {\n return;\n }\n const { add, update, remove } = transaction;\n if (!(add === null || add === void 0 ? void 0 : add.length) && !(update === null || update === void 0 ? void 0 : update.length) && !(remove === null || remove === void 0 ? void 0 : remove.length)) {\n return;\n }\n this.$emit(datasourceEventNames.dataChanged, {\n changes: transaction,\n });\n }\n /** @internal */\n warnMissingRowIdOnce(row) {\n if (this.missingRowIdWarned) {\n return;\n }\n this.missingRowIdWarned = true;\n logger.warn(`Rows delivered by ${this.resourceName} carry no '${this.rowId}' value and are not reported in datasource-data-changed; set row-id to the field that identifies them.`, row);\n }\n /**\n * Builds the index map used for server-side sorting from the resource's metadata.\n * @remarks Real DATASERVER indexes keep their names; when the resource also (or only) reports\n * SORTABLE_FIELDS - the synthetic bucket a req/rep resource uses for its sortable columns -\n * those fields are merged in under the synthetic `SORTABLE_FIELDS` key. Note an index with no\n * NAME lands under `undefined`: its fields count as indexed, but it cannot be named in an\n * ORDER_BY, so sorting-related consumers must consider named entries only.\n * @internal\n */\n getResourceIndexes(availableIndexes, availableSortableFields) {\n const resourceIndexesMap = new Map();\n const allSortableFields = new Set();\n // Add indexes from INDEXES metadata\n availableIndexes === null || availableIndexes === void 0 ? void 0 : availableIndexes.forEach((index) => {\n const fields = index.FIELDS.split(' ');\n resourceIndexesMap.set(index.NAME, fields);\n fields.forEach((field) => allSortableFields.add(field));\n });\n // Add fields from SORTABLE_FIELDS metadata if available\n if (availableSortableFields && availableSortableFields.length > 0) {\n availableSortableFields.forEach((field) => allSortableFields.add(field));\n }\n // If we have SORTABLE_FIELDS but no indexes, create a synthetic index entry\n if (resourceIndexesMap.size === 0 && allSortableFields.size > 0) {\n resourceIndexesMap.set('SORTABLE_FIELDS', Array.from(allSortableFields));\n }\n else if (availableSortableFields &&\n availableSortableFields.length > 0 &&\n resourceIndexesMap.size > 0) {\n const fieldsFromIndexes = new Set();\n resourceIndexesMap.forEach((fields) => {\n fields.forEach((field) => fieldsFromIndexes.add(field));\n });\n const additionalFields = availableSortableFields.filter((field) => !fieldsFromIndexes.has(field));\n if (additionalFields.length > 0) {\n resourceIndexesMap.set('SORTABLE_FIELDS', additionalFields);\n }\n }\n return resourceIndexesMap;\n }\n /**\n * Maps the transaction data to the row data mapper function, if it exists.\n * @param transaction - The transaction data to be mapped.\n * @param operations - The operations to be mapped. Can be 'add', 'update' or 'remove'.\n * @returns The mapped transaction (if the row data mapper function exists), or the original transaction.\n */\n mapTransaction(transaction, operations = Object.values(OperationType)) {\n if (!this.rowDataMapper) {\n return transaction;\n }\n const mappedTransaction = {};\n if (operations.includes(OperationType.Add)) {\n mappedTransaction.add = this.rowDataMapper(transaction.add, this.rowData);\n }\n if (operations.includes(OperationType.Remove)) {\n mappedTransaction.remove = this.rowDataMapper(transaction.remove, this.rowData);\n }\n if (operations.includes(OperationType.Update)) {\n mappedTransaction.update = this.rowDataMapper(transaction.update, this.rowData);\n }\n if (transaction.addIndex !== undefined) {\n mappedTransaction.addIndex = transaction.addIndex;\n }\n return mappedTransaction;\n }\n loadMore() {\n throw new Error('loadMore() method must be implemented by subclass');\n }\n /**\n * Notifies the datasource of the field names of the currently visible columns.\n * @remarks No-op by default. Datasources that support column-scoped requests override this to\n * narrow the server query and reload data when the visible column set changes.\n * @param visibleFields - Field names of the currently visible columns.\n * @public\n */\n setVisibleColumns(visibleFields) { }\n restart() {\n throw new Error('restart() method must be implemented by subclass');\n }\n reloadResourceData() {\n throw new Error('reloadResourceData() method must be implemented by subclass');\n }\n destroy() {\n throw new Error('destroy() method must be implemented by subclass');\n }\n /**\n * Sets the disconnected state and emits appropriate events.\n * @param disconnected - true to set, false to remove\n */\n setDisconnected(disconnected) {\n this._isDisconnected = disconnected;\n if (disconnected) {\n this.$emit(datasourceEventNames.error, {\n message: 'Datasource disconnected',\n type: 'connection',\n });\n }\n else {\n this.clearErrors();\n }\n }\n /**\n * Returns true if the datasource is disconnected.\n */\n isDisconnected() {\n return this._isDisconnected;\n }\n /**\n * Helper function to extract configuration for status bar actions\n * @internal\n */\n getStatusBarActionConfig(configValue) {\n if (typeof configValue === 'boolean') {\n return { enabled: configValue };\n }\n if (typeof configValue === 'object' && configValue !== null) {\n return {\n enabled: true,\n config: configValue,\n };\n }\n return { enabled: false };\n }\n /**\n * Gets datasource-specific status bar component configurations.\n * This method should be called by the grid to get status bar panels specific to this datasource.\n * @public\n */\n getDatasourceStatusBarPanels(isServerSide, statusBarConfig) {\n var _a, _b, _c, _d, _e, _f;\n const additionalPanels = [];\n // Extract loadMore configuration\n const loadMoreConfig = this.getStatusBarActionConfig(statusBarConfig === null || statusBarConfig === void 0 ? void 0 : statusBarConfig.loadMore);\n // Add load more button if enabled and not server-side\n if (loadMoreConfig.enabled && !isServerSide) {\n const loadMoreParams = {};\n // Use custom callback if provided, otherwise leave undefined for default behavior\n if ((_a = loadMoreConfig.config) === null || _a === void 0 ? void 0 : _a.onLoadMore) {\n loadMoreParams.onLoadMore = loadMoreConfig.config.onLoadMore;\n }\n else {\n loadMoreParams.onLoadMore = this.loadMore.bind(this);\n }\n // Add custom styling parameters\n if ((_b = loadMoreConfig.config) === null || _b === void 0 ? void 0 : _b.appearance) {\n loadMoreParams.appearance = loadMoreConfig.config.appearance;\n }\n // Add tooltip - use custom tooltip if provided, otherwise use default\n loadMoreParams.tooltip = ((_c = loadMoreConfig.config) === null || _c === void 0 ? void 0 : _c.tooltip) || 'Load More';\n additionalPanels.push({\n statusPanel: GridProStatusBarTypes.loadMore,\n statusPanelParams: loadMoreParams,\n align: 'right',\n });\n }\n // Extract reload configuration\n const reloadConfig = this.getStatusBarActionConfig(statusBarConfig === null || statusBarConfig === void 0 ? void 0 : statusBarConfig.reload);\n // Add reload button if enabled\n if (reloadConfig.enabled) {\n const reloadParams = {};\n // Use custom callback if provided, otherwise use default datasource reload\n if ((_d = reloadConfig.config) === null || _d === void 0 ? void 0 : _d.onReload) {\n reloadParams.onReload = reloadConfig.config.onReload;\n }\n else {\n reloadParams.onReload = this.reloadResourceData.bind(this);\n }\n // Add custom styling parameters\n if ((_e = reloadConfig.config) === null || _e === void 0 ? void 0 : _e.icon) {\n reloadParams.icon = reloadConfig.config.icon;\n }\n // Add tooltip - use custom tooltip if provided, otherwise use default\n reloadParams.tooltip = ((_f = reloadConfig.config) === null || _f === void 0 ? void 0 : _f.tooltip) || 'Reload';\n additionalPanels.push({\n statusPanel: GridProStatusBarTypes.reload,\n statusPanelParams: reloadParams,\n align: 'right',\n });\n }\n return additionalPanels;\n }\n}\n__decorate([\n JSONSerializer\n], GridProBaseDatasource.prototype, \"serializer\", void 0);\n","/**\n * Base datasource error event names.\n * @public\n */\nexport const baseDatasourceEventNames = {\n error: 'base-datasource-error',\n connected: 'base-datasource-connected',\n};\n","import { __decorate } from \"tslib\";\nimport { customElement } from '@microsoft/fast-element';\nimport { GridProGenesisDatasource } from '../grid-pro-genesis-datasource';\n/**\n * The Genesis Datasource element, for client-side | CSRM-compatible data fetching and used exclusively by the GridPro element.\n * @remarks Only supports Client-Side Row Model.\n * @public\n *\n * @fires base-datasource-error - Fired when a datasource error is reported. detail: `BaseDatasourceErrorEventDetail`\n * @fires datasource-error - Fired when a datasource error occurs (for grid integration). detail: `DatasourceErrorEventDetail`\n * @fires base-datasource-connected - Fired when error state is cleared after connection succeeds\n * @fires datasource-loading-finished - Fired when loading completes with no pending row changes\n * @fires datasource-no-data-available - Fired when the grid has no rows after load\n * @fires datasource-data-changed - Fired when row data changes from stream updates. detail: `DataChangedEventDetail`\n * @fires datasource-initialize - Fired to hand off grid options and initialization flags. detail: `InitializeEventDetail`\n * @fires datasource-destroy - Fired when the datasource is torn down\n * @fires datasource-data-cleared - Fired when row data is cleared. detail: `DataClearedEventDetail`\n * @fires datasource-schema-updated - Fired when column metadata or defs are updated. detail: `SchemaUpdatedEventDetail`\n * @fires datasource-filters-restored - Fired when persisted filters are reapplied\n * @fires datasource-data-loaded - Fired when a data payload is loaded for the grid. detail: `DataLoadedEventDetail`\n * @fires datasource-loading-started - Fired when a load or refresh starts\n * @fires datasource-more-data-available - Fired when more server rows can be requested. detail: `MoreDataAvailableEventDetail`\n * @fires datasource-ready - Fired when the host grid is ready to start loading data\n * @fires datasource-init - Fired when initial grid data is ready for the client-side model\n * @fires more-rows-changed - Fired when MORE_ROWS availability changes. detail: `MoreRowsDetail`\n * @fires datasource-size-changed - Fired when layout or viewport sizing affects the datasource. detail: `GrigProGenesisDatasourceSizeChangedEventDetail`\n */\nlet GridProClientSideDatasource = class GridProClientSideDatasource extends GridProGenesisDatasource {\n};\nGridProClientSideDatasource = __decorate([\n customElement({\n name: 'grid-pro-client-side-datasource',\n })\n], GridProClientSideDatasource);\nexport { GridProClientSideDatasource };\n","import { DatasourceDefaults, dataServerResultFilter, } from '@genesislcap/foundation-comms';\n/**\n * Filters a DATASERVER batch into inserts/updates/deletes, keeping the default row id\n * (`ROW_REF`) on every row alongside the configured one.\n * @remarks `dataServerResultFilter` resolves the configured `rowId` out of `DETAILS` and then\n * drops `DETAILS` entirely. Under a custom `row-id` that loses the only id a pushed MODIFY or\n * DELETE carries: Genesis sends those as `DETAILS: { OPERATION, ROW_REF }` plus the changed\n * fields, so the custom id is absent and the row arrives with no resolvable identity at all.\n * Hoisting `ROW_REF` before the filter runs keeps it on both the rows a block delivers and the\n * rows a push carries, which is what lets `resolveRowId` match one to the other.\n *\n * Columns come from the resource's field metadata, not from row keys, so the extra field does\n * not add a column.\n * @internal\n */\nexport function filterDataserverResult(result, rowId) {\n var _a;\n const defaultRowId = DatasourceDefaults.DATASERVER_ROW_ID;\n if (rowId === defaultRowId) {\n return dataServerResultFilter(result, rowId);\n }\n const withRowRef = Object.assign(Object.assign({}, result), { ROW: (_a = result.ROW) === null || _a === void 0 ? void 0 : _a.map((row) => {\n var _a, _b;\n const rowRef = (_b = (_a = row === null || row === void 0 ? void 0 : row.DETAILS) === null || _a === void 0 ? void 0 : _a[defaultRowId]) !== null && _b !== void 0 ? _b : row === null || row === void 0 ? void 0 : row[defaultRowId];\n return rowRef === undefined || rowRef === null ? row : Object.assign(Object.assign({}, row), { [defaultRowId]: rowRef });\n }) });\n return dataServerResultFilter(withRowRef, rowId);\n}\n","/**\n * Tracks which row ids each block has handed to AG Grid, so the host can learn when a re-read of\n * a block no longer returns a row (it left the grid).\n * @remarks Plain class shared by the infinite and SSRM resources - AG Grid does not report that\n * event.\n *\n * Block eviction is deliberately **not** mirrored here. AG Grid evicts by last access\n * (`InfiniteCache.purgeBlocksIfNeeded` sorts on `lastAccessed` and never evicts a displayed or\n * focused block; the SSRM `LazyCache` purges by distance from the viewport), and a datasource is\n * told about neither the accesses nor the evictions. Any eviction model built from delivery order\n * alone diverges from the grid's as soon as the user scrolls back, which would drop a visible\n * row from the held set and silence the pushes that follow. So the held set means \"rows delivered\n * since the last cache reset\": a superset of what the grid holds, which keeps every push for a\n * possibly-visible row flowing and costs only a re-delivered row being reported as unchanged\n * rather than as an `add`.\n * @internal\n */\nexport class DeliveredBlockLedger {\n constructor(rowId) {\n this.rowId = rowId;\n /** Row ids per block start row. */\n this.blocks = new Map();\n }\n /** Records the rows handed to the grid for the block at `startRow`. */\n record(startRow, rows) {\n const ids = new Set();\n rows.forEach((row) => {\n const id = row === null || row === void 0 ? void 0 : row[this.rowId];\n if (id !== undefined && id !== null) {\n ids.add(id);\n }\n });\n const previous = this.blocks.get(startRow);\n this.blocks.set(startRow, ids);\n const withdrawnRowIds = previous\n ? [...previous].filter((id) => !ids.has(id) && !this.isHeld(id))\n : [];\n return { withdrawnRowIds };\n }\n /** Forgets every block, for when the grid drops its whole cache (filter/sort change, destroy). */\n clear() {\n this.blocks.clear();\n }\n isHeld(id) {\n for (const ids of this.blocks.values()) {\n if (ids.has(id)) {\n return true;\n }\n }\n return false;\n }\n}\n","import { css, html, when, repeat } from '@microsoft/fast-element';\nimport { extractErrorMessage } from '../utils';\nexport const errorHandlerDialogStyles = css `\n .overlay {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n background-color: var(--datasource-error-background-color, var(--neutral-layer-4));\n opacity: var(--datasource-error-background-opacity, 0.5);\n z-index: 1000;\n pointer-events: auto;\n border-radius: 2px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n .dialog-container {\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n z-index: 1001;\n max-width: 90vw;\n max-height: 90vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n opacity: 1 !important;\n filter: none !important;\n box-sizing: border-box;\n }\n .grid-datasource-error-dialog {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n margin: 0 auto;\n max-width: 600px;\n width: 100%;\n box-sizing: border-box;\n background: var(--dialog-background, #2d2533);\n box-shadow: 0 4px 32px 0 rgba(0, 0, 0, 0.45);\n overflow: visible;\n min-height: 120px;\n }\n\n .grid-datasource-error-dialog div {\n width: 600px;\n }\n\n .grid-datasource-error-dialog [slot='top'] {\n margin-bottom: 0;\n }\n\n .grid-datasource-error-dialog [slot='bottom'] {\n display: flex;\n justify-content: flex-end;\n width: 100%;\n }\n\n .error-details {\n max-height: 120px;\n overflow: auto;\n width: 100%;\n margin-top: 8px;\n }\n`;\nexport function getErrorHandlerDialogTemplate(prefix, gridErrorItems) {\n const dialogTag = `${prefix}-dialog`;\n const buttonTag = `${prefix}-button`;\n return html `\n ${when(() => gridErrorItems && gridErrorItems.length > 0, html `\n <div class=\"overlay\"></div>\n <div class=\"dialog-container\">\n <${dialogTag}\n class=\"grid-datasource-error-dialog\"\n type=\"error\"\n show-close-icon=\"false\"\n open\n >\n <h2 slot=\"top\" class=\"title\">Grid unavailable</h2>\n <div>\n <p>\n This may be due to a network, server, or configuration issue.\n </p>\n <details class=\"error-details\">\n <summary>Show details</summary>\n <ul>\n ${repeat(() => gridErrorItems, html `\n <li>\n ${(x) => extractErrorMessage(x.detail) || 'Unknown error occurred'}\n </li>\n `)}\n </ul>\n </details>\n </div>\n <div slot=\"bottom\">\n <${buttonTag} appearance=\"lightweight\" @click=${(x) => {\n var _a;\n x.hideDatasourceError();\n (_a = x.gridProDatasource) === null || _a === void 0 ? void 0 : _a.restart();\n }}>\n Reload\n </${buttonTag}>\n </div>\n </${dialogTag}>\n </div>\n `)}\n `;\n}\n","/**\n * Shared filter utilities for converting AG Grid filter models to Genesis criteria strings.\n * The single implementation of the filter-model grammar: the Infinite Row Model converts whole\n * models through {@link convertFilterModelToCriteria}, and the Server-Side Row Model's\n * `BaseServerSideDatasource.criteriaFor*Model` methods delegate to the per-type converters, so\n * both row models send identical CRITERIA_MATCH for the same gesture.\n * @beta\n */\n/**\n * Escapes a value for interpolation into a criteria string literal.\n * @remarks Backslashes first, then quotes: an unescaped quote would end the literal early, and\n * an unescaped trailing backslash (or a literal `\\'` in the value) would escape the closing\n * quote - either way the server rejects the whole expression.\n */\nfunction escapeCriteriaValue(value) {\n return String(value).replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n}\n/**\n * Converts text filters to Genesis criteria strings.\n * @param filterModel - The AG Grid filter model\n * @param fieldName - The field name being filtered\n * @returns Genesis criteria string or null\n */\nexport function convertTextFilterToCriteria(filterModel, fieldName) {\n if (!filterModel.filter && (filterModel.type === 'false' || filterModel.type === 'true')) {\n return `${fieldName} == ${filterModel.type}`;\n }\n const safeVal = filterModel.filter != null ? escapeCriteriaValue(filterModel.filter) : '';\n switch (filterModel.type) {\n case 'blank':\n // Parenthesised: fragments are joined with ' && ', and && binds tighter than ||, so a\n // bare `a == '' || a == null && b == 'x'` would let empty-a rows bypass b's filter.\n return `(${fieldName} == '' || ${fieldName} == null)`;\n case 'contains':\n return `Expr.containsIgnoreCase(${fieldName}, '${safeVal}')`;\n case 'equals':\n return `${fieldName} == '${safeVal}'`;\n case 'notBlank':\n return `(${fieldName} != '' && ${fieldName} != null)`;\n case 'notEqual':\n return `${fieldName} != '${safeVal}'`;\n case 'wordStartsWith':\n return `Expr.containsWordsStartingWithIgnoreCase(${fieldName}, '${safeVal}')`;\n default:\n return null;\n }\n}\n/**\n * Converts set filters (for enum fields) to Genesis criteria strings.\n * @param filterModel - The AG Grid filter model\n * @param fieldName - The field name being filtered\n * @param colMeta - Column metadata for detecting all values\n * @returns Genesis criteria string or null\n */\nexport function convertSetFilterToCriteria(filterModel, fieldName, colMeta) {\n // A model with no values array at all (hand-written, or persisted by an older version) is an\n // inactive filter — EnumColumnFilter.setModel treats it the same way — so it must translate to\n // \"no criteria\", not to the match-nothing expression below.\n if ((filterModel === null || filterModel === void 0 ? void 0 : filterModel.values) == null) {\n return null;\n }\n const selectedValues = filterModel.values;\n if (selectedValues.length === 0) {\n // An explicitly empty selection means \"match nothing\" (that is how set filters treat it\n // client-side). Returning no criteria would make the server send every row instead, so emit\n // an expression that is false for every value — built only from comparisons the criteria\n // language accepts. This does cost a server round trip that is guaranteed to return zero\n // rows; the state is transient (the user is mid-selection), so that is accepted over\n // teaching the datasource a short-circuit sentinel.\n return `(${fieldName} == '' && ${fieldName} != '')`;\n }\n // Try to detect \"all values selected\" using VALID_VALUES from metadata.\n // In that case we don't want to send any criteria, as it would be equivalent\n // to no filter at all.\n let allValues;\n if (colMeta === null || colMeta === void 0 ? void 0 : colMeta.VALID_VALUES) {\n try {\n allValues = Array.isArray(colMeta.VALID_VALUES)\n ? colMeta.VALID_VALUES\n : colMeta.VALID_VALUES.split('|');\n }\n catch (_a) {\n allValues = undefined;\n }\n }\n if (allValues &&\n allValues.length === selectedValues.length &&\n allValues.every((v) => selectedValues.includes(v))) {\n // Every enum option is selected, so the only thing this active model can still be excluding\n // is blanks: interactive set filters (agSetColumnFilter and the grid-pro enum filter alike)\n // report an all-inclusive selection as a null model, never as an explicit full list.\n // Returning no criteria here would let blank rows through while the column shows as\n // filtered — exclude blanks instead. Behaviour note: a model listing every VALID_VALUE set\n // programmatically via setFilterModel (or persisted by an older version) previously produced\n // no criteria and now excludes blanks — the faithful set-model reading, since blanks are not\n // in the list.\n return `(${fieldName} != '' && ${fieldName} != null)`;\n }\n const orConditions = selectedValues.map((val) => {\n // A null entry is the set-filter convention for blanks; both agSetColumnFilter and the\n // grid-pro enum filter emit it.\n if (val === null) {\n return `(${fieldName} == '' || ${fieldName} == null)`;\n }\n return `${fieldName} == '${escapeCriteriaValue(val)}'`;\n });\n if (orConditions.length > 0) {\n return `(${orConditions.join(' || ')})`;\n }\n return null;\n}\n/**\n * Converts number filters to Genesis criteria strings.\n * @param filterModel - The AG Grid filter model\n * @param fieldName - The field name being filtered\n * @returns Genesis criteria string or null\n */\nexport function convertNumberFilterToCriteria(filterModel, fieldName) {\n const value = filterModel.filter;\n const valueTwo = filterModel.filterTo;\n // Not bare isNaN: isNaN(null) and isNaN('') are both false, so an absent value would be\n // interpolated as-is and produce criteria the server rejects.\n const isNum = (v) => v !== null && v !== '' && !isNaN(Number(v));\n switch (filterModel.type) {\n case 'equals':\n return isNum(value) ? `${fieldName} == ${value}` : null;\n case 'notEqual':\n return isNum(value) ? `${fieldName} != ${value}` : null;\n case 'greaterThan':\n return isNum(value) ? `${fieldName} > ${value}` : null;\n case 'greaterThanOrEqual':\n return isNum(value) ? `${fieldName} >= ${value}` : null;\n case 'lessThan':\n return isNum(value) ? `${fieldName} < ${value}` : null;\n case 'lessThanOrEqual':\n return isNum(value) ? `${fieldName} <= ${value}` : null;\n case 'inRange':\n return isNum(value) && isNum(valueTwo)\n ? `${fieldName} >= ${value} && ${fieldName} <= ${valueTwo}`\n : null;\n case 'blank':\n // Blank means absent, not zero: a legitimate 0 must not report as blank, and a null\n // value must. Matches the text and date converters.\n return `${fieldName} == null`;\n case 'notBlank':\n return `${fieldName} != null`;\n default:\n return null;\n }\n}\n/**\n * Converts date filters to Genesis criteria strings.\n * @param filterModel - The AG Grid filter model\n * @param fieldName - The field name being filtered\n * @returns Genesis criteria string or null\n */\nexport function convertDateFilterToCriteria(filterModel, fieldName) {\n // AG Grid supplies bounds as '2026-09-02 00:00:00'; normalise to the 'yyyyMMdd' form the\n // Expr.dateIs* helpers take. An absent bound yields no criteria rather than interpolating\n // the string 'undefined' - reachable through setFilterModel, e.g. a restored filter config.\n const normalise = (bound) => bound ? String(bound).replace(/-/g, '').replace('T', '-').split(' ')[0] : null;\n const dateFrom = normalise(filterModel.dateFrom);\n const dateTo = normalise(filterModel.dateTo);\n switch (filterModel.type) {\n case 'equals':\n return dateFrom ? `Expr.dateIsEqual(${fieldName}, '${dateFrom}')` : null;\n case 'lessThan':\n return dateFrom ? `Expr.dateIsBefore(${fieldName}, '${dateFrom}')` : null;\n case 'greaterThan':\n return dateFrom ? `Expr.dateIsAfter(${fieldName}, '${dateFrom}')` : null;\n case 'inRange':\n return dateFrom && dateTo\n ? `Expr.dateIsAfter(${fieldName}, '${dateFrom}') && Expr.dateIsBefore(${fieldName}, '${dateTo}')`\n : null;\n case 'isToday': {\n // Same 'yyyyMMdd' shape as the normalised bounds above: 'equals' on today's date and\n // 'isToday' must send identical criteria.\n const now = new Date();\n const month = (now.getMonth() + 1).toString().padStart(2, '0');\n const day = now.getDate().toString().padStart(2, '0');\n return `Expr.dateIsEqual(${fieldName}, '${now.getFullYear()}${month}${day}')`;\n }\n case 'blank':\n return `${fieldName} == null`;\n case 'notBlank':\n return `${fieldName} != null`;\n default:\n return null;\n }\n}\n/**\n * Converts one flat filter model (or one multi-filter sub-model) to a criteria fragment.\n * @param filter - The filter model\n * @param fieldName - The field name being filtered\n * @param colDefs - Column definitions for metadata (set filters)\n * @returns Genesis criteria string or null\n */\nfunction convertSingleFilterToCriteria(filter, fieldName, colDefs) {\n switch (filter === null || filter === void 0 ? void 0 : filter.filterType) {\n case 'text':\n return convertTextFilterToCriteria(filter, fieldName);\n case 'set': {\n const colMeta = colDefs === null || colDefs === void 0 ? void 0 : colDefs.find((o) => o.NAME === fieldName);\n return convertSetFilterToCriteria(filter, fieldName, colMeta);\n }\n case 'number':\n return convertNumberFilterToCriteria(filter, fieldName);\n case 'date':\n return convertDateFilterToCriteria(filter, fieldName);\n default:\n return null;\n }\n}\n/**\n * Processes a single field's filter and returns its criteria fragment.\n * @remarks Multi-filters ({ filterType: 'multi', filterModels: [...] }) are unwrapped honouring\n * their `operator`: an OR multi-filter joins its sub-fragments with `||` and is parenthesised,\n * so the outer ` && ` join between fields cannot rebind it.\n * @param filterEntry - The filter entry for the field\n * @param fieldName - The field name\n * @param colDefs - Column definitions\n * @returns The criteria fragment for the field, or null\n */\nfunction processFieldFilter(filterEntry, fieldName, colDefs) {\n if (!filterEntry)\n return null;\n if (filterEntry.filterType === 'multi' && Array.isArray(filterEntry.filterModels)) {\n const operator = (filterEntry.operator || 'AND').toUpperCase();\n const joiner = operator === 'OR' ? ' || ' : ' && ';\n const fragments = filterEntry.filterModels\n .map((subModel) => convertSingleFilterToCriteria(subModel, fieldName, colDefs))\n .filter((fragment) => Boolean(fragment));\n if (fragments.length === 0)\n return null;\n return fragments.length === 1 ? fragments[0] : `(${fragments.join(joiner)})`;\n }\n return convertSingleFilterToCriteria(filterEntry, fieldName, colDefs);\n}\n/**\n * Converts AG Grid filter model to Genesis criteria string.\n * This is the main entry point for converting filters.\n * Handles both simple filters and multi-filters (filterType: \"multi\" with filterModels array).\n * @param filterModel - The AG Grid filter model\n * @param colDefs - Column definitions for metadata (optional but recommended)\n * @returns Genesis criteria string\n */\nexport function convertFilterModelToCriteria(filterModel, colDefs) {\n if (!filterModel || Object.keys(filterModel).length === 0) {\n return '';\n }\n const filters = [];\n // Process each field in the filter model\n for (const fieldName of Object.keys(filterModel)) {\n // Skip if column not in colDefs (when colDefs provided)\n if (colDefs && colDefs.findIndex((o) => o.NAME === fieldName) === -1) {\n continue;\n }\n const fieldCriteria = processFieldFilter(filterModel[fieldName], fieldName, colDefs);\n if (fieldCriteria) {\n filters.push(fieldCriteria);\n }\n }\n return filters.join(' && ');\n}\n","import { installAlertFlashClock } from '@genesislcap/foundation-ui';\nimport { matchesRowCriteria } from './row-match.types';\n/**\n * Class the grid puts on rows satisfying the criteria. The grid's own styles flash it in step\n * with any alerting tab, so a tab that draws you to a grid also shows you which rows caused it.\n *\n * @public\n */\nexport const ROW_MATCH_ALERT_CLASS = 'grid-pro-row-alert';\n/**\n * Class the grid puts on just the `flashField` cell of a matching row, for grids that flash a\n * single column rather than the whole row.\n *\n * @public\n */\nexport const ROW_MATCH_ALERT_CELL_CLASS = 'grid-pro-row-alert-cell';\n/**\n * Row class rules that flag rows meeting {@link RowMatchCriteria}, for spreading into\n * `gridOptions.rowClassRules`.\n *\n * Pairs with {@link DatasourceRowMatchTracker}: the tracker decides whether a tab should flash,\n * these decide which rows made it flash. Both take the same criteria, so the two cannot disagree.\n *\n * ```ts\n * gridOptions = { rowClassRules: createRowMatchClassRules(criteria) };\n * ```\n *\n * @public\n */\nexport function createRowMatchClassRules(criteria) {\n installAlertFlashClock();\n return {\n [ROW_MATCH_ALERT_CLASS]: (params) => matchesRowCriteria(criteria, params.data),\n };\n}\n/**\n * Cell class rules that flag only the `flashField` cell of a matching row, for spreading into\n * `gridOptions.defaultColDef.cellClassRules`.\n *\n * They belong on `defaultColDef` rather than a single column because AG Grid has no grid-level\n * `cellClassRules`, and the rule itself checks which column it is running against.\n *\n * @public\n */\nexport function createRowMatchCellClassRules(criteria) {\n installAlertFlashClock();\n const { flashField } = criteria;\n return {\n [ROW_MATCH_ALERT_CELL_CLASS]: (params) => !!flashField &&\n params.colDef.field === flashField &&\n matchesRowCriteria(criteria, params.data),\n };\n}\n","function isEmpty(value) {\n return value == null || value === '';\n}\nfunction asFiniteNumber(value) {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value === 'string' && value.trim() !== '') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n return undefined;\n}\n/**\n * Equality that tolerates a string criterion against a number or boolean in the row (or the\n * other way around), so a criteria authored as `'100'` still matches a numeric `100`.\n */\nfunction valuesEqual(value, expected) {\n if (value === expected) {\n return true;\n }\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value) === String(expected);\n }\n if (typeof expected === 'number' || typeof expected === 'boolean') {\n return String(value) === String(expected);\n }\n return false;\n}\nfunction fieldMatches(value, expected, op = '==') {\n if (expected === null) {\n if (op === '==') {\n return isEmpty(value);\n }\n if (op === '!=') {\n return !isEmpty(value);\n }\n // Relational ops have no meaning against \"empty\".\n return false;\n }\n if (op === '==') {\n return valuesEqual(value, expected);\n }\n if (op === '!=') {\n return !valuesEqual(value, expected);\n }\n const left = asFiniteNumber(value);\n const right = asFiniteNumber(expected);\n if (left === undefined || right === undefined) {\n return false;\n }\n switch (op) {\n case '>':\n return left > right;\n case '>=':\n return left >= right;\n case '<':\n return left < right;\n case '<=':\n return left <= right;\n default:\n return false;\n }\n}\n/** Resolves either criteria form into a single OR-of-AND-groups representation. */\nfunction resolveRowMatchGroups(criteria) {\n var _a, _b;\n if (criteria.anyOf !== undefined) {\n return criteria.anyOf;\n }\n if (criteria.stateField === undefined) {\n return [];\n }\n return [\n [\n {\n field: criteria.stateField,\n value: (_a = criteria.stateValue) !== null && _a !== void 0 ? _a : null,\n op: criteria.stateOp,\n },\n ...((_b = criteria.and) !== null && _b !== void 0 ? _b : []),\n ],\n ];\n}\n/**\n * True when the row satisfies any resolved AND-group.\n *\n * @public\n */\nexport function matchesRowCriteria(criteria, row) {\n if (!row) {\n return false;\n }\n return resolveRowMatchGroups(criteria).some((group) => group.every((condition) => fieldMatches(row[condition.field], condition.value, condition.op)));\n}\n","import { __awaiter, __decorate } from \"tslib\";\nimport { Auth, Connect } from '@genesislcap/foundation-comms';\nimport { UUID } from '@genesislcap/foundation-utils';\nimport { DeliveredBlockLedger } from './delivered-block.ledger';\nimport { convertDateFilterToCriteria, convertNumberFilterToCriteria, convertSetFilterToCriteria, convertTextFilterToCriteria, } from './filter.utils';\n/**\n * Base class for server-side resource datasources used in Grid Pro SSRM implementations.\n * Provides common logic for filtering, sorting, and infinite-scroll row counting.\n *\n * @beta\n */\nexport class BaseServerSideDatasource {\n constructor(options) {\n this.rowData = new Map();\n /**\n * Bumped whenever the rows the grid holds are dropped (destroy, refresh, reload). A req/rep\n * reply that resolves for an earlier generation belongs to a cache the grid no longer has.\n * @internal\n */\n this.loadGeneration = 0;\n /**\n * The number of rows in the grid. THIS DO NOT CONSIDER CRITERIA_MATCH scenarios.\n * @internal\n */\n this.serverRowsCount = 0;\n /**\n * The number of rows in the grid. THIS IS A LOCAL COUNT CONSIDERING CONSIDER CRITERIA_MATCH scenarios.\n * @internal\n */\n this.clientRowsCount = 0;\n this.moreRows = false;\n this.calculatedRowsCount = 0;\n this.currentSequenceId = null;\n this.reloadResourceDataFunc = options.reloadResourceDataFunc;\n this.errorHandlerFunc = options.errorHandlerFunc;\n this.onNoDataAvailableFunc = options.onNoDataAvailableFunc;\n this.onDataAvailableFunc = options.onDataAvailableFunc;\n this.onRowsDeliveredFunc = options.onRowsDeliveredFunc;\n this.onRowsWithdrawnFunc = options.onRowsWithdrawnFunc;\n this.resourceName = options.resourceName;\n this.resourceParams = options.resourceParams;\n this.originalCriteriaMatch = this.getResourceParam('CRITERIA_MATCH');\n this.resourceIndexes = options.resourceIndexes;\n this.resourceColDefs = options.resourceColDefs;\n this.maxRows = options.maxRows;\n this.maxView = options.maxView;\n this.rowId = options.rowId;\n this.ledger = new DeliveredBlockLedger(options.rowId);\n }\n /**\n * Gets a resource parameter, handling both REQUEST_SERVER (DETAILS structure) and DATASERVER (flat structure)\n * @param key - The parameter key to retrieve\n * @returns The parameter value, or undefined if not found\n * @internal\n */\n getResourceParam(key) {\n var _a, _b;\n // Check if this is a REQUEST_SERVER structure with DETAILS\n if (((_a = this.resourceParams) === null || _a === void 0 ? void 0 : _a.DETAILS) && typeof this.resourceParams.DETAILS === 'object') {\n return this.resourceParams.DETAILS[key];\n }\n // Otherwise, it's a DATASERVER flat structure\n return (_b = this.resourceParams) === null || _b === void 0 ? void 0 : _b[key];\n }\n /**\n * Sets a resource parameter, handling both REQUEST_SERVER (DETAILS structure) and DATASERVER (flat structure)\n * @param key - The parameter key to set\n * @param value - The value to set\n * @internal\n */\n setResourceParam(key, value) {\n var _a;\n // Check if this is a REQUEST_SERVER structure with DETAILS\n if (((_a = this.resourceParams) === null || _a === void 0 ? void 0 : _a.DETAILS) && typeof this.resourceParams.DETAILS === 'object') {\n this.resourceParams.DETAILS[key] = value;\n }\n else {\n // Otherwise, it's a DATASERVER flat structure\n this.resourceParams[key] = value;\n }\n }\n getRows(params) {\n throw new Error('Method not implemented.');\n }\n /**\n * Handles filtering setup for server-side datasources.\n * Common logic used by both dataserver and req-rep implementations.\n *\n * @returns `true` when a filter change triggered {@link refreshDatasource} - the current\n * getRows() request is then superseded and the caller must stop processing it.\n */\n setupFiltering(params) {\n return __awaiter(this, void 0, void 0, function* () {\n const filterModelBeingApplied = params.request.filterModel;\n const filtersAreBeingApplied = Object.keys(filterModelBeingApplied).length > 0;\n const filtersAreGettingCleaned = Object.keys(filterModelBeingApplied).length === 0;\n const filterModelBeingAppliedDiffersFromCurrent = JSON.stringify(filterModelBeingApplied) !== JSON.stringify(this.currentFilterModel);\n if (filterModelBeingAppliedDiffersFromCurrent || filtersAreBeingApplied) {\n if (filtersAreGettingCleaned && this.currentFilterModel) {\n this.currentFilterModel = null;\n this.setResourceParam('CRITERIA_MATCH', this.originalCriteriaMatch);\n yield this.refreshDatasource(params);\n // The refresh re-initialized the datasource and purged AG Grid's SSRM cache, so\n // getRows() is re-invoked with fresh params - this invocation is superseded.\n return true;\n }\n else if (filterModelBeingAppliedDiffersFromCurrent && filtersAreBeingApplied) {\n this.currentFilterModel = filterModelBeingApplied;\n this.setResourceParam('CRITERIA_MATCH', this.buildCriteriaMatchFromFilters());\n yield this.refreshDatasource(params);\n return true;\n }\n }\n return false;\n });\n }\n /**\n * Legacy method that combines filtering and sorting.\n * Kept for backward compatibility. New implementations should use setupFiltering and setupSorting directly.\n * @deprecated Use setupFiltering() and setupSorting() separately instead\n */\n setupFilteringAndSorting(params) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.setupFiltering(params);\n yield this.setupSorting(params);\n });\n }\n destroy() {\n this.invalidatePendingLoads();\n this.rowData = new Map();\n this.clientRowsCount = 0;\n this.calculatedRowsCount = 0;\n this.serverRowsCount = 0;\n this.currentSequenceId = 0;\n this.moreRows = false;\n this.sourceRef = undefined;\n this.lastSuccessRowData = undefined;\n }\n /**\n * Marks every block request still in flight as stale: the grid is dropping the cache they were\n * read for, so their replies must not be handed to the host as held rows.\n * @internal\n */\n invalidatePendingLoads() {\n this.loadGeneration += 1;\n this.ledger.clear();\n }\n refreshDatasource(params) {\n return __awaiter(this, void 0, void 0, function* () {\n this.destroy();\n this.updateResourceParams(params);\n yield this.reloadResourceDataFunc({\n criteria: this.getResourceParam('CRITERIA_MATCH'),\n orderBy: this.getResourceParam('ORDER_BY'),\n reverse: this.getResourceParam('REVERSE'),\n });\n });\n }\n updateResourceParams(params) {\n if (params.criteria !== undefined) {\n this.originalCriteriaMatch = params.criteria;\n this.setResourceParam('CRITERIA_MATCH', this.buildCriteriaMatchFromFilters());\n }\n if (params.orderBy !== undefined) {\n this.setResourceParam('ORDER_BY', params.orderBy);\n }\n if (params.reverse !== undefined) {\n this.setResourceParam('REVERSE', params.reverse);\n }\n }\n getOrderByAndToBeSortedColIds(map, searchValue) {\n for (const [key, value] of map.entries()) {\n const searchIndex = value.findIndex((x) => x === searchValue);\n if (searchIndex !== -1) {\n const copy = [...value];\n const toBeSorted = copy.splice(searchIndex, 1);\n return { orderBy: key, toBeSorted };\n }\n }\n }\n buildCriteriaMatchFromFilters() {\n this.setResourceParam('CRITERIA_MATCH', this.originalCriteriaMatch);\n let criteriaMatch = this.getResourceParam('CRITERIA_MATCH');\n if (criteriaMatch && typeof criteriaMatch === 'string') {\n criteriaMatch = criteriaMatch.split(';');\n this.setResourceParam('CRITERIA_MATCH', criteriaMatch);\n }\n if (!criteriaMatch) {\n criteriaMatch = [];\n this.setResourceParam('CRITERIA_MATCH', criteriaMatch);\n }\n const criteria = criteriaMatch.concat(this.criteriaFromFilters());\n return criteria.join(' && ');\n }\n criteriaFromFilters() {\n const filters = [];\n this.getFiltersByType('text').forEach((k) => {\n const fragment = this.criteriaForSingleModel(k, this.currentFilterModel[k]);\n if (fragment) {\n filters.push(fragment);\n }\n });\n // Handle set filters (typically used for enum fields with ag-set-column-filter)\n this.getFiltersByType('set').forEach((k) => {\n const fragment = this.criteriaForSingleModel(k, this.currentFilterModel[k]);\n if (fragment) {\n filters.push(fragment);\n }\n });\n this.getFiltersByType('number').forEach((k) => {\n const fragment = this.criteriaForSingleModel(k, this.currentFilterModel[k]);\n if (fragment) {\n filters.push(fragment);\n }\n });\n this.getFiltersByType('date').forEach((k) => {\n const fragment = this.criteriaForSingleModel(k, this.currentFilterModel[k]);\n if (fragment) {\n filters.push(fragment);\n }\n });\n // Multi filters (ag-multi-column-filter) wrap sub-filters as { filterType: 'multi',\n // filterModels: [...] } - unwrap them so they contribute to CRITERIA_MATCH instead of\n // being silently dropped.\n this.getFiltersByType('multi').forEach((k) => {\n var _a;\n const subModels = (_a = this.currentFilterModel[k].filterModels) !== null && _a !== void 0 ? _a : [];\n const operator = (this.currentFilterModel[k].operator || 'AND').toUpperCase();\n const joiner = operator === 'OR' ? ' || ' : ' && ';\n const fragments = subModels\n .map((subModel) => this.criteriaForSingleModel(k, subModel))\n .filter((f) => !!f);\n if (fragments.length === 1) {\n filters.push(fragments[0]);\n }\n else if (fragments.length > 1) {\n filters.push(`(${fragments.join(joiner)})`);\n }\n });\n return filters;\n }\n /**\n * Builds a single criteria fragment for one filter model (flat per-column model or a\n * multi-filter sub-model).\n * @internal\n */\n criteriaForSingleModel(k, model) {\n if (!model)\n return null;\n switch (model.filterType) {\n case 'text':\n return this.criteriaForTextModel(k, model);\n case 'set':\n return this.criteriaForSetModel(k, model);\n case 'number':\n return this.criteriaForNumberModel(k, model);\n case 'date':\n return this.criteriaForDateModel(k, model);\n default:\n return null;\n }\n }\n criteriaForTextModel(k, model) {\n return convertTextFilterToCriteria(model, k);\n }\n criteriaForSetModel(k, model) {\n var _a;\n const colMeta = (_a = this.resourceColDefs) === null || _a === void 0 ? void 0 : _a.find((o) => o.NAME === k);\n return convertSetFilterToCriteria(model, k, colMeta);\n }\n criteriaForNumberModel(k, model) {\n return convertNumberFilterToCriteria(model, k);\n }\n criteriaForDateModel(k, model) {\n return convertDateFilterToCriteria(model, k);\n }\n getFiltersByType(filterType) {\n var _a;\n return Object.keys((_a = this.currentFilterModel) !== null && _a !== void 0 ? _a : {})\n .filter((k) => this.resourceColDefs.findIndex((o) => o.NAME === k) !== -1)\n .filter((k) => this.currentFilterModel[k].filterType === filterType);\n }\n getCorrectRowCount(params) {\n const currentLastRowNumber = params.request.endRow;\n this.calculatedRowsCount = this.clientRowsCount || currentLastRowNumber;\n let rowCount;\n // Infinite scroll: getRows() only resolves a block once the cumulative row cache covers\n // its full extent or the stream reported no more data, so blocks are either full or final.\n if (!this.moreRows) {\n // Dataset ends here: rowData.size is the deduplicated loaded count. Deliberately not\n // serverRowsCount (GSF's ROWS_COUNT ignores CRITERIA_MATCH) nor clientRowsCount\n // (non-deduplicated running sum, overcounts on live streams).\n rowCount = Math.min(this.rowData.size, this.maxView);\n }\n else if (this.rowData.size >= this.maxView) {\n // Hard cap - the view can't grow past maxView.\n rowCount = this.maxView;\n }\n else {\n // Full block, more may follow: leave undefined so AG Grid keeps requesting blocks\n // and shows an open-ended \"100+\"-style count.\n rowCount = undefined;\n }\n return rowCount;\n }\n /** Completes an SSRM request with zero rows and invokes `onNoDataAvailableFunc` on the first block only. @internal */\n completeEmptyResult(params) {\n var _a, _b;\n if ((_b = (_a = this.lastSuccessRowData) === null || _a === void 0 ? void 0 : _a.rowData) === null || _b === void 0 ? void 0 : _b.length) {\n // Re-serving the previous block's snapshot keeps the SSRM request from hanging; it is not a\n // delivery of new rows, so it is not reported - the snapshot may predate a poll that has\n // since reported those rows changed or removed.\n params.success(this.lastSuccessRowData);\n return;\n }\n this.rowData = new Map();\n const successRowData = { rowData: [], rowCount: 0 };\n params.success(successRowData);\n this.notifyNoDataAvailableIfEmpty(params, successRowData);\n }\n /**\n * Reports rows handed to the grid for the block at `startRow`, then the rows a re-read of that\n * block no longer carries and the rows whose block the grid evicted.\n * @internal\n */\n deliverRows(startRow, rows) {\n var _a, _b;\n const delivered = rows !== null && rows !== void 0 ? rows : [];\n const { withdrawnRowIds } = this.ledger.record(startRow, delivered);\n if (delivered.length > 0) {\n (_a = this.onRowsDeliveredFunc) === null || _a === void 0 ? void 0 : _a.call(this, delivered);\n }\n if (withdrawnRowIds.length > 0) {\n (_b = this.onRowsWithdrawnFunc) === null || _b === void 0 ? void 0 : _b.call(this, withdrawnRowIds);\n }\n }\n /** Invokes `onNoDataAvailableFunc` when the first SSRM block has no rows. @internal */\n notifyNoDataAvailableIfEmpty(params, successRowData) {\n var _a;\n const rowDataEmpty = !((_a = successRowData.rowData) === null || _a === void 0 ? void 0 : _a.length);\n const atStart = params.request.startRow === 0;\n if (atStart && rowDataEmpty) {\n this.notifyNoDataAvailable();\n }\n else if (atStart && !rowDataEmpty) {\n this.notifyDataAvailable();\n }\n }\n notifyNoDataAvailable() {\n var _a;\n (_a = this.onNoDataAvailableFunc) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n notifyDataAvailable() {\n var _a;\n (_a = this.onDataAvailableFunc) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n}\n__decorate([\n Auth\n], BaseServerSideDatasource.prototype, \"auth\", void 0);\n__decorate([\n Connect\n], BaseServerSideDatasource.prototype, \"connect\", void 0);\n__decorate([\n UUID\n], BaseServerSideDatasource.prototype, \"uuid\", void 0);\n","import { __awaiter } from \"tslib\";\nimport { MessageType, logger, } from '@genesislcap/foundation-comms';\nimport { DOM } from '@microsoft/fast-element';\nimport { getAvailableIndexes, getAvailableIndexFields } from '../utils';\nimport { filterDataserverResult } from './dataserver-result.filter';\nimport { BaseServerSideDatasource } from './server-side.resource-base';\n/**\n * The DATASERVER IServerSideDatasource implementation, used for SSRM (Server-Side Row Model) in the grid.\n * @beta\n */\nexport class DataserverServerSideDatasource extends BaseServerSideDatasource {\n /**\n * Whether the cache holds a change the grid's rows do not reflect (a tombstoned DELETE), in\n * which case a block must not be served from it: the slice would hand back a deleted row.\n * @remarks Derived rather than a flag of its own, so an INSERT that brings a tombstoned id\n * back clears it along with the tombstone instead of leaving the cache marked stale forever.\n * @internal\n */\n get cacheOutOfStep() {\n return this.retainedDeletedRowIds.size > 0 || this.structuralPushPending;\n }\n constructor(options) {\n super(options);\n /**\n * Blocks awaiting stream messages. Settled blocks remove themselves; destroy() cancels\n * (fails) the rest so AG Grid's concurrent-request slots are always released.\n * @internal\n */\n this.pendingBlocks = new Set();\n /**\n * Highest absolute row index already handed to AG Grid this session.\n * Live DELETEs below this watermark must not remove cache entries - see\n * handleCurrentStreamLoad.\n * @internal\n */\n this.deliveredRowCount = 0;\n /**\n * Ids of rows the server deleted that stay in the cache because the grid was not told\n * (`live-updates` off) and they sit below the delivered watermark - see\n * handleCurrentStreamLoad. They are not reported to the host as rows the grid holds, and\n * their presence marks the cache out of step, so a re-read purges rather than serves them.\n * @internal\n */\n this.retainedDeletedRowIds = new Set();\n /**\n * Set when a pushed INSERT landed after rows were handed to the grid, so the cache's insertion\n * order no longer matches the grid's row indices. Cleared when the cache is rebuilt.\n * @internal\n */\n this.structuralPushPending = false;\n /** Whether the first batch of the current subscription has arrived. @internal */\n this.streamStarted = false;\n /** Whether a MORE_ROWS request is awaiting its batch. @internal */\n this.moreRowsInFlight = false;\n this.createDataserverStreamFunc = options.createDataserverStreamFunc;\n }\n refreshDatasource(params) {\n const _super = Object.create(null, {\n refreshDatasource: { get: () => super.refreshDatasource }\n });\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n this.cancelAllPendingBlocks();\n (_a = this.dataserverStreamSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.dataserverStreamSubscription = undefined;\n this.dataserverStream = undefined;\n this.deliveredRowCount = 0;\n this.retainedDeletedRowIds.clear();\n this.structuralPushPending = false;\n this.streamStarted = false;\n this.moreRowsInFlight = false;\n yield _super.refreshDatasource.call(this, params);\n });\n }\n getRows(params) {\n return __awaiter(this, void 0, void 0, function* () {\n // setupFiltering()/setupSorting() return true when they triggered a refresh: the\n // datasource was re-initialized and AG Grid's SSRM cache purged, so getRows() is\n // re-invoked with fresh params and this invocation is superseded. It must still resolve\n // via params.fail() - AG Grid caps concurrent requests and only frees a slot on\n // success()/fail(); a silent return leaks the slot until the grid stops issuing\n // getRows() entirely. fail() is safe here: the purge already destroyed the cache this\n // request belonged to.\n if (yield this.setupFiltering(params)) {\n params.fail();\n return;\n }\n if (yield this.setupSorting(params)) {\n params.fail();\n return;\n }\n if (!this.dataserverStream) {\n this.dataserverStream = yield this.createDataserverStreamFunc(this.resourceParams);\n }\n const blockStartRow = Number.isFinite(Number(params.request.startRow))\n ? Number(params.request.startRow)\n : 0;\n const blockEndRow = Number.isFinite(Number(params.request.endRow))\n ? Number(params.request.endRow)\n : blockStartRow + Number(this.maxRows);\n // Infinite scroll keeps a session-cumulative row cache (see handleCurrentStreamLoad);\n // when it already covers this block, or the stream ended, no further stream messages\n // will arrive for this request - resolve it synchronously from the cache.\n const blockAlreadyCovered = this.currentSequenceId >= 1 && (this.rowData.size >= blockEndRow || !this.moreRows);\n // A re-read is the moment the grid asks for current rows. When the cache holds a change the\n // grid never saw (a DELETE it was not told about), serving the slice would hand back the\n // deleted row, so refresh instead: the grid drops every block and re-reads from the server.\n // fail() releases the request slot, as for a superseded filter or sort change above.\n if (blockAlreadyCovered && this.cacheOutOfStep) {\n logger.debug(`SSRM block ${blockStartRow}-${blockEndRow} for ${this.resourceName} re-read while the cache is out of step with the grid; refreshing`);\n yield this.refreshDatasource(params);\n params.fail();\n return;\n }\n if (this.currentSequenceId >= 1 &&\n !blockAlreadyCovered &&\n (this.moreRows || params.request.startRow >= Number(this.maxRows))) {\n const viewNumber = Number.isFinite(Number(this.resourceParams.VIEW_NUMBER))\n ? Number(this.resourceParams.VIEW_NUMBER)\n : 0;\n if (Number.isFinite(viewNumber)) {\n this.moreRowsInFlight = true;\n this.connect.getMoreRows(this.sourceRef, viewNumber);\n }\n }\n // One shared stream subscription for the session; each getRows() registers a pending\n // block instead of subscribing again (.unsubscribe() would send DATA_LOGOFF and kill\n // the whole server-side session).\n let applyResult = true;\n const clearSafetyTimer = (timer) => {\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n };\n const pendingBlock = { handle: () => { }, cancel: () => { } };\n const settleBlock = () => {\n this.pendingBlocks.delete(pendingBlock);\n };\n const resolveBlock = (timer) => {\n if (!applyResult) {\n return;\n }\n applyResult = false;\n clearSafetyTimer(timer);\n settleBlock();\n this.deliveredRowCount = Math.max(this.deliveredRowCount, blockEndRow);\n const allRows = Array.from(this.rowData.values());\n const successRowData = {\n // Deliver only this block's slice of the cache - AG Grid SSRM expects exactly the\n // rows for its startRow..endRow range.\n rowData: allRows.slice(blockStartRow, blockEndRow),\n };\n successRowData.rowCount = this.getCorrectRowCount(params);\n this.lastSuccessRowData = successRowData;\n params.success(successRowData);\n this.deliverRows(blockStartRow, successRowData.rowData.filter((row) => !this.retainedDeletedRowIds.has(row === null || row === void 0 ? void 0 : row[this.rowId])));\n this.notifyNoDataAvailableIfEmpty(params, successRowData);\n };\n const failBlock = (timer) => {\n if (!applyResult) {\n return;\n }\n applyResult = false;\n clearSafetyTimer(timer);\n settleBlock();\n params.fail();\n };\n if (blockAlreadyCovered) {\n resolveBlock();\n return;\n }\n // Safety valve: never leave a block pending forever if the stream goes quiet - resolve\n // short with the accumulated rows so AG Grid ends the dataset there.\n const safetyTimer = setTimeout(() => {\n if (applyResult) {\n logger.warn(`SSRM block ${blockStartRow}-${blockEndRow} for ${this.resourceName} timed out waiting for a full batch; resolving with ${this.rowData.size} accumulated row(s).`);\n resolveBlock(safetyTimer);\n }\n }, DataserverServerSideDatasource.BLOCK_RESOLVE_TIMEOUT_MS);\n pendingBlock.cancel = () => failBlock(safetyTimer);\n pendingBlock.handle = (dataserverResult) => {\n const messageType = dataserverResult === null || dataserverResult === void 0 ? void 0 : dataserverResult.MESSAGE_TYPE;\n if (messageType &&\n (messageType === MessageType.LOGOFF_ACK || messageType === MessageType.MSG_NACK)) {\n if (this.errorHandlerFunc) {\n const errorMessage = messageType === MessageType.LOGOFF_ACK\n ? `Connection lost to ${this.resourceName}`\n : `Authentication failed for ${this.resourceName}`;\n this.errorHandlerFunc(errorMessage, 'connection');\n }\n failBlock(safetyTimer);\n return;\n }\n if (!applyResult) {\n return;\n }\n // Infinite scroll accumulation runs once in dispatchStreamMessage(); here we only\n // decide whether this block is ready to resolve.\n if (this.currentSequenceId === 0 && !(dataserverResult === null || dataserverResult === void 0 ? void 0 : dataserverResult.ROW) && !this.moreRows) {\n // First response carries no rows - the criteria matches nothing; resolve as\n // empty instead of waiting for the timeout.\n applyResult = false;\n clearSafetyTimer(safetyTimer);\n settleBlock();\n this.completeEmptyResult(params);\n return;\n }\n if (this.rowData.size >= blockEndRow || !this.moreRows) {\n DOM.queueUpdate(() => resolveBlock(safetyTimer));\n }\n };\n this.pendingBlocks.add(pendingBlock);\n this.ensureStreamSubscription();\n });\n }\n /** @internal */\n cancelAllPendingBlocks() {\n const blocks = Array.from(this.pendingBlocks);\n this.pendingBlocks.clear();\n for (const block of blocks) {\n block.cancel();\n }\n }\n /**\n * Lazily attaches the single stream subscription for this datasource session.\n * @internal\n */\n ensureStreamSubscription() {\n if (this.dataserverStreamSubscription) {\n return;\n }\n this.dataserverStreamSubscription = this.dataserverStream.subscribe((dataserverResult) => this.dispatchStreamMessage(dataserverResult));\n }\n /**\n * Fan-out: accumulate shared infinite-scroll state once, then notify each pending block.\n * @internal\n */\n dispatchStreamMessage(dataserverResult) {\n var _a, _b, _c, _d, _e;\n const messageType = dataserverResult === null || dataserverResult === void 0 ? void 0 : dataserverResult.MESSAGE_TYPE;\n if (messageType &&\n (messageType === MessageType.LOGOFF_ACK || messageType === MessageType.MSG_NACK)) {\n for (const block of this.pendingBlocks) {\n block.handle(dataserverResult);\n }\n return;\n }\n if ((dataserverResult === null || dataserverResult === void 0 ? void 0 : dataserverResult.MORE_ROWS) !== undefined) {\n this.moreRows = dataserverResult.MORE_ROWS;\n }\n if (dataserverResult === null || dataserverResult === void 0 ? void 0 : dataserverResult.ROW) {\n const nextMessage = filterDataserverResult(dataserverResult, this.rowId);\n // A DATASERVER subscription is live by definition, so every batch is either the page a\n // block asked for or a change the server pushed. Replies only ever carry view rows\n // (INSERTs), so a batch holding a MODIFY or a DELETE is a push whenever it arrives.\n // Otherwise the batch is the reply we are waiting on: a request is outstanding\n // (`moreRowsInFlight`), a block is pending, or this is the logon batch.\n //\n // `pendingBlocks.size === 0` alone is not enough: the 10s safety valve settles a block\n // short while its MORE_ROWS is still outstanding, and GSF splits one reply across\n // messages, so the real page can arrive with no block waiting. Treating that as a push\n // prepended it to the cache and shifted every later block's slice against the grid.\n const carriesPushedChanges = ((_b = (_a = nextMessage.updates) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0 || ((_d = (_c = nextMessage.deletes) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0;\n const solicited = !carriesPushedChanges &&\n (this.moreRowsInFlight || this.pendingBlocks.size > 0 || !this.streamStarted);\n this.moreRowsInFlight = false;\n this.streamStarted = true;\n this.handleCurrentStreamLoad(nextMessage, solicited);\n this.currentSequenceId = dataserverResult.SEQUENCE_ID;\n if (this.currentSequenceId === 1) {\n this.sourceRef = dataserverResult.SOURCE_REF;\n if (this.serverRowsCount === 0) {\n this.serverRowsCount = (_e = dataserverResult.ROWS_COUNT) !== null && _e !== void 0 ? _e : this.rowData.size;\n }\n }\n }\n for (const block of this.pendingBlocks) {\n block.handle(dataserverResult);\n }\n }\n /**\n * Dataserver-specific sorting setup that validates columns are part of an index.\n * This is required because dataserver needs indexed columns for efficient sorting.\n */\n setupSorting(params) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n const toBeAppliedSortModel = params.request.sortModel;\n if (((_a = this.currentSortModel) === null || _a === void 0 ? void 0 : _a.length) !== toBeAppliedSortModel.length ||\n toBeAppliedSortModel.length > 0) {\n if (toBeAppliedSortModel.length === 0 && this.currentSortModel) {\n this.calculatedRowsCount = 0;\n this.currentSortModel = null;\n this.resourceParams.ORDER_BY = null;\n this.resourceParams.REVERSE = null;\n yield this.refreshDatasource(params);\n return true;\n }\n else if (toBeAppliedSortModel.length > 0) {\n const coldIdBeingSorted = toBeAppliedSortModel[0].colId; // Not allowing multiple sorts by user\n const sortTypeBeingApplied = toBeAppliedSortModel[0].sort;\n const orderByAndToBeSortedColIds = this.getOrderByAndToBeSortedColIds(this.resourceIndexes, coldIdBeingSorted);\n if (!orderByAndToBeSortedColIds) {\n const availableIndexes = getAvailableIndexes(this.resourceIndexes);\n const availableIndexFields = getAvailableIndexFields(this.resourceIndexes);\n logger.warn(`The FIELD/column (${coldIdBeingSorted}) being sorted is not part of an INDEX, required for the [orderBy] operation - ignoring this sort and loading unsorted data. See https://learn.genesis.global/docs/database/data-types/index-entities/`);\n logger.debug('Available indexes:', availableIndexes);\n logger.debug('Columns that can be sorted with the available indexes:', availableIndexFields);\n // Ignore the un-sortable sort instead of failing - failing killed the entire\n // first load when a restored workspace carried a sort on a non-indexed column.\n const sortModelChanged = JSON.stringify(toBeAppliedSortModel) !== JSON.stringify(this.currentSortModel);\n const hadPreviousSort = ((_c = (_b = this.currentSortModel) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0;\n const hasActiveOrderBy = this.resourceParams.ORDER_BY != null || this.resourceParams.REVERSE != null;\n // Remember the model so identical requests don't re-warn, and carry on unsorted.\n this.currentSortModel = toBeAppliedSortModel;\n // A previously applied (indexed) sort left ORDER_BY/REVERSE pointing at the old\n // column; clear them and reload once so the grid shows genuinely unsorted data\n // instead of the old column's order under the ignored new sort's header. Gated by\n // hadPreviousSort so a first-load restored sort still just carries on (no extra\n // reload), and by sortModelChanged so the post-refresh getRows() (same model) does\n // not loop.\n if (hadPreviousSort && sortModelChanged && hasActiveOrderBy) {\n this.resourceParams.ORDER_BY = null;\n this.resourceParams.REVERSE = null;\n yield this.refreshDatasource(params);\n return true;\n }\n return false;\n }\n else if (JSON.stringify(toBeAppliedSortModel) !== JSON.stringify(this.currentSortModel)) {\n this.currentSortModel = toBeAppliedSortModel;\n this.resourceParams.ORDER_BY = orderByAndToBeSortedColIds.orderBy;\n this.resourceParams.REVERSE = sortTypeBeingApplied === 'desc' ? true : false;\n yield this.refreshDatasource(params);\n return true;\n }\n }\n }\n return false;\n });\n }\n destroy() {\n const _super = Object.create(null, {\n destroy: { get: () => super.destroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n this.cancelAllPendingBlocks();\n this.dataserverStream = undefined;\n (_a = this.dataserverStreamSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.dataserverStreamSubscription = undefined;\n this.deliveredRowCount = 0;\n this.retainedDeletedRowIds.clear();\n this.structuralPushPending = false;\n this.streamStarted = false;\n this.moreRowsInFlight = false;\n yield _super.destroy.call(this);\n });\n }\n handleCurrentStreamLoad(result, solicited) {\n var _a, _b, _c, _d, _e;\n if (!result)\n return;\n // Infinite scroll accumulates a session-cumulative cache, as GSF splits batches across\n // messages and later batches append. Map preserves insertion order, so the cache can be\n // sliced by block range - which only works while the cache and the grid agree on where\n // every delivered row sits, so a pushed change below the delivered watermark is kept out of\n // the delivered region and deferred to a refresh.\n const rows = new Map(this.rowData);\n (_a = result.inserts) === null || _a === void 0 ? void 0 : _a.forEach((insertData) => {\n const key = insertData[this.rowId];\n this.retainedDeletedRowIds.delete(key);\n // A key the cache already holds keeps its slot, so nothing shifts - that is how a DELETE\n // that was tombstoned and then re-inserted puts the cache back in step with the grid.\n const isNewToCache = !rows.has(key);\n rows.set(key, insertData);\n if (!solicited && isNewToCache && this.deliveredRowCount > 0) {\n // A page appends in view order, so it keeps the cache and the grid aligned. A push does\n // not: nothing in the batch says where the server sorts the new row, and the host puts\n // it at the top of a live grid, so from here on the cache cannot be sliced against the\n // grid's indices. Mark it, and let the next read of a covered block refresh instead.\n this.structuralPushPending = true;\n }\n });\n // Live QUERY_UPDATE messages can arrive while a block is pending: MODIFY rows may be\n // partial, so merge into the cached row instead of clobbering it.\n (_b = result.updates) === null || _b === void 0 ? void 0 : _b.forEach((updateData) => {\n const key = updateData === null || updateData === void 0 ? void 0 : updateData[this.rowId];\n if (key === undefined) {\n return;\n }\n const existing = rows.get(key);\n rows.set(key, existing ? Object.assign(Object.assign({}, existing), updateData) : updateData);\n });\n (_c = result.deletes) === null || _c === void 0 ? void 0 : _c.forEach((deleteData) => {\n const key = deleteData === null || deleteData === void 0 ? void 0 : deleteData[this.rowId];\n if (key === undefined || !rows.has(key)) {\n return;\n }\n const index = this.cacheIndexOf(rows, key);\n if (index < this.deliveredRowCount) {\n // The grid still shows the row at this index. Dropping it would shift every later\n // block's slice against the grid, so keep its slot and let the next re-read refresh.\n //\n // Whether the host also removed it from the grid is not knowable here: the host applies\n // live updates from a second, independent DATA_LOGON whose view is not paged with this\n // one, so a delete this stream sees need not have reached the grid at all. Keeping the\n // slot is correct either way - the refresh reconciles both.\n this.retainedDeletedRowIds.add(key);\n return;\n }\n rows.delete(key);\n });\n this.clientRowsCount += (_e = (_d = result.inserts) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0;\n this.rowData = rows;\n }\n /** Position of a key in the cache's insertion order. @internal */\n cacheIndexOf(rows, key) {\n let index = 0;\n for (const mapKey of rows.keys()) {\n if (mapKey === key) {\n return index;\n }\n index += 1;\n }\n return -1;\n }\n}\n/**\n * Max time a non-paginated SSRM block may stay pending before the safety valve in\n * getRows() resolves it with the rows accumulated so far.\n * @internal\n */\nDataserverServerSideDatasource.BLOCK_RESOLVE_TIMEOUT_MS = 10000;\n","import { __awaiter } from \"tslib\";\nimport { MessageType, } from '@genesislcap/foundation-comms';\nimport debounce from 'lodash.debounce';\nimport { logger } from '../utils';\nimport { BaseServerSideDatasource } from './server-side.resource-base';\n/**\n * Debounce time for stream creation after user stops scrolling (in ms)\n */\nconst POLLING_STREAM_DEBOUNCE_MS = 300;\n/**\n * The REQUEST_SERVER IServerSideDatasource implementation, used for SSRM (Server-Side Row Model) in the grid.\n * @remarks\n * Only request replies supporting criteria-only requests (`criteriaOnlyRequest`) can be served this\n * way: every SSRM concern is expressed through `DETAILS` (`CRITERIA_MATCH` for the filter model,\n * `ORDER_BY` for the sort model, `OFFSET` for paging) with an empty `REQUEST` payload.\n * {@link @genesislcap/grid-pro#GridProServerSideDatasource} enforces this before constructing the\n * datasource.\n *\n * Paging is therefore always offset-based - `criteriaOnlyRequest` guarantees `OFFSET` support, so\n * there is no `VIEW_NUMBER` fallback to choose between.\n * @beta\n */\nexport class ReqRepServerSideDatasource extends BaseServerSideDatasource {\n constructor(options) {\n var _a, _b, _c;\n super(options);\n // Track the total discovered row count when we reach the last page\n this.discoveredTotalRowCount = null;\n this.createReqRepRequestFunc = options.createReqRepRequestFunc;\n this.createReqRepStreamFunc = options.createReqRepStreamFunc;\n this.onPollingUpdate = options.onPollingUpdateFunc;\n this.resetPreviousPollResult = options.resetPreviousPollResultFunc;\n this.usePolling = (_a = options.usePolling) !== null && _a !== void 0 ? _a : false;\n // Initialize debounced stream creation function\n this.debouncedCreateStream = debounce((params) => this.createPollingStream(params), POLLING_STREAM_DEBOUNCE_MS);\n if (!((_c = (_b = options.resourceParams) === null || _b === void 0 ? void 0 : _b.DETAILS) === null || _c === void 0 ? void 0 : _c.OFFSET)) {\n this.resourceParams.DETAILS.OFFSET = 0;\n }\n }\n getRows(params) {\n return __awaiter(this, void 0, void 0, function* () {\n // Taken before the first await: a reload that lands anywhere between here and the reply\n // means the block cache this request was read for is gone.\n const generation = this.loadGeneration;\n if (yield this.setupFiltering(params)) {\n params.fail();\n return;\n }\n if (yield this.setupSorting(params)) {\n params.fail();\n return;\n }\n // Use startRow as the OFFSET to ensure correct block-to-offset mapping, even when blocks are\n // re-requested out of order (e.g. polling refresh of block 0)\n this.resourceParams.DETAILS.OFFSET = params.request.startRow;\n const requestParams = {\n DETAILS: this.buildRequestDetails(),\n };\n const requestResult = yield this.createReqRepRequestFunc(requestParams);\n // The cache this block was read for was dropped while the request was in flight (a filter,\n // sort or criteria change): the reply must not be handed to the host as rows the grid holds.\n // fail() still frees AG Grid's concurrent-request slot; the purge already dropped the block.\n if (generation !== this.loadGeneration) {\n logger.debug('SSRM req/rep reply discarded: the block cache was reset while it was in flight');\n params.fail();\n return;\n }\n // Apply the result to the grid\n this.applyServerSideData(params, requestResult);\n // If polling enabled, schedule stream creation after user stops scrolling\n this.schedulePollingStream(requestParams);\n });\n }\n /**\n * Schedules polling stream creation if enabled.\n * @remarks\n * Destroys any existing stream and schedules a new one after the user stops scrolling (debounced).\n * This prevents excessive stream recreation during rapid scrolling.\n */\n schedulePollingStream(requestParams) {\n if (this.usePolling && this.createReqRepStreamFunc) {\n this.destroyPollingStream();\n this.debouncedCreateStream(requestParams);\n }\n }\n applyServerSideData(params, result) {\n var _a, _b;\n const messageType = result.MESSAGE_TYPE;\n if (messageType &&\n (messageType === MessageType.LOGOFF_ACK || messageType === MessageType.MSG_NACK)) {\n // Trigger error dialog for connection/authentication errors\n if (this.errorHandlerFunc) {\n const errorMessage = messageType === MessageType.LOGOFF_ACK\n ? `Connection lost to ${this.resourceName}`\n : `Authentication failed for ${this.resourceName}`;\n this.errorHandlerFunc(errorMessage, 'connection');\n }\n params.fail();\n return;\n }\n // TODO: the code below will be tweaked/removed when gsf <8.14 is no longer supported\n if ('MORE_ROWS' in result) {\n this.moreRows = result.MORE_ROWS;\n }\n else {\n // Fall back to NEXT_OFFSET for backwards compatibility\n this.moreRows =\n result.NEXT_OFFSET !== -1 && result.NEXT_OFFSET > this.resourceParams.DETAILS.OFFSET;\n }\n if ((_a = result.REPLY) === null || _a === void 0 ? void 0 : _a.length) {\n this.handleCurrentStreamLoad(result.REPLY);\n }\n else {\n this.completeEmptyResult(params);\n return;\n }\n this.currentSequenceId = Math.floor(this.resourceParams.DETAILS.OFFSET / this.maxRows);\n this.sourceRef = result.SOURCE_REF;\n // For req-rep, store the total row count when we reach the last page\n if (!this.moreRows) {\n const currentBatchSize = this.rowData.size;\n this.discoveredTotalRowCount = params.request.startRow + currentBatchSize;\n }\n this.serverRowsCount += (_b = result.ROWS_COUNT) !== null && _b !== void 0 ? _b : this.rowData.size;\n const successRowData = {\n rowData: Array.from(this.rowData.values()),\n };\n successRowData.rowCount = this.getCorrectRowCount(params);\n this.lastSuccessRowData = successRowData;\n params.success(successRowData);\n this.deliverRows(params.request.startRow, successRowData.rowData);\n this.notifyNoDataAvailableIfEmpty(params, successRowData);\n }\n getCorrectRowCount(params) {\n let rowCount;\n if (this.moreRows) {\n // More data may follow, so the total is not known yet. It has to be left undefined:\n // `rowCount` is a row count, not the infinite row model's `lastRow`, so -1 is taken\n // literally. A store told it holds -1 rows never reaches the block it just received,\n // so AG Grid asks for the same blocks again as fast as it can - a request loop that\n // pins the main thread and floods the server with REQUEST_SERVER snapshots.\n rowCount = undefined;\n }\n else {\n // Use discovered total if available, otherwise calculate from current position\n rowCount = this.discoveredTotalRowCount || params.request.startRow + this.rowData.size;\n }\n return rowCount;\n }\n handleCurrentStreamLoad(reply) {\n if (!reply || reply.length == 0)\n return;\n const rows = new Map();\n reply.forEach((insertData) => {\n const insertDataRowId = insertData[this.rowId];\n if (insertDataRowId) {\n rows.set(insertDataRowId, insertData);\n return;\n }\n const noRowIdMessage = `The specified rowId (${this.rowId}) is not present in the data. Since this is a snapshot (isSnapshot=true), an auto-generated UUID will be used. For custom identifiers, use the 'row-id' attribute.`;\n logger.error(noRowIdMessage);\n const tempId = this.uuid.createId();\n insertData[this.rowId] = tempId;\n rows.set(tempId, insertData);\n });\n this.rowData = rows;\n }\n /**\n * Req-rep specific sorting setup that allows any column to be sorted\n * (unlike dataserver which requires indexed columns only)\n */\n setupSorting(params) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const toBeAppliedSortModel = params.request.sortModel;\n if (((_a = this.currentSortModel) === null || _a === void 0 ? void 0 : _a.length) !== toBeAppliedSortModel.length ||\n toBeAppliedSortModel.length > 0) {\n if (toBeAppliedSortModel.length === 0 && this.currentSortModel) {\n this.calculatedRowsCount = 0;\n this.currentSortModel = null;\n this.resourceParams.DETAILS.ORDER_BY = undefined;\n yield this.refreshDatasource(params);\n return true;\n }\n else if (toBeAppliedSortModel.length > 0) {\n const coldIdBeingSorted = toBeAppliedSortModel[0].colId; // Not allowing multiple sorts by user\n const sortTypeBeingApplied = toBeAppliedSortModel[0].sort;\n // For req-rep, we can sort by any column without requiring it to be part of an index\n if (JSON.stringify(toBeAppliedSortModel) !== JSON.stringify(this.currentSortModel)) {\n this.currentSortModel = toBeAppliedSortModel;\n this.resourceParams.DETAILS.ORDER_BY =\n coldIdBeingSorted + (sortTypeBeingApplied === 'desc' ? ' DESC' : ' ASC'); // Use the column directly\n yield this.refreshDatasource(params);\n return true;\n }\n }\n }\n return false;\n });\n }\n refreshDatasource(params) {\n const _super = Object.create(null, {\n refreshDatasource: { get: () => super.refreshDatasource }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.destroyPollingStream();\n if (this.debouncedCreateStream) {\n this.debouncedCreateStream.cancel();\n }\n this.discoveredTotalRowCount = null;\n this.resourceParams.DETAILS.OFFSET = 0;\n yield _super.refreshDatasource.call(this, params);\n });\n }\n destroy() {\n const _super = Object.create(null, {\n destroy: { get: () => super.destroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this.destroyPollingStream();\n if (this.debouncedCreateStream) {\n this.debouncedCreateStream.cancel();\n }\n yield _super.destroy.call(this);\n });\n }\n /**\n * Creates a polling stream for the currently loaded data.\n * @remarks\n * This method creates a separate datasource instance that polls all currently loaded rows\n * (from offset 0 to current offset + maxRows). The polling results are sent to the parent\n * datasource via the `onPollingUpdate` callback for change detection and grid updates.\n *\n * The stream will only apply updates if the request params haven't changed (user hasn't\n * scrolled away or changed filters/sorting).\n * @param requestParams - The request parameters for the current view\n */\n createPollingStream(requestParams) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this.destroyPollingStream();\n this.currentStreamParams = requestParams;\n const { stream, datasource } = yield this.createReqRepStreamFunc(requestParams);\n this.reqRepPollingStream = stream;\n this.reqRepPollingDatasource = datasource;\n this.reqRepPollingSubscription = this.reqRepPollingStream.subscribe({\n next: (result) => {\n if (this.currentStreamParams &&\n JSON.stringify(this.currentStreamParams) === JSON.stringify(requestParams)) {\n if (this.onPollingUpdate) {\n this.onPollingUpdate(result);\n }\n }\n },\n error: (error) => {\n var _a;\n logger.error('Polling stream error:', error);\n if (this.errorHandlerFunc) {\n this.errorHandlerFunc(((_a = error === null || error === void 0 ? void 0 : error.receivedMessage) === null || _a === void 0 ? void 0 : _a.ERROR) || (error === null || error === void 0 ? void 0 : error.message), 'stream');\n }\n },\n });\n logger.debug('Polling stream created for params:', requestParams);\n }\n catch (error) {\n logger.error('Failed to create polling stream:', error);\n }\n });\n }\n /**\n * Destroys the current polling stream and associated datasource.\n * @remarks\n * Cleans up the polling subscription, destroys the separate polling datasource instance,\n * and resets the previous poll comparison state. Called when:\n * - User scrolls to a new page\n * - Filters or sorting changes\n * - The datasource is being destroyed\n */\n destroyPollingStream() {\n if (this.reqRepPollingSubscription) {\n this.reqRepPollingSubscription.unsubscribe();\n this.reqRepPollingSubscription = undefined;\n logger.debug('Polling subscription destroyed');\n }\n if (this.reqRepPollingDatasource) {\n this.reqRepPollingDatasource.destroy();\n this.reqRepPollingDatasource = undefined;\n logger.debug('Polling datasource destroyed');\n }\n this.reqRepPollingStream = undefined;\n this.currentStreamParams = undefined;\n if (this.resetPreviousPollResult) {\n this.resetPreviousPollResult();\n }\n }\n buildRequestDetails() {\n return {\n CRITERIA_MATCH: this.resourceParams.DETAILS.CRITERIA_MATCH,\n MAX_ROWS: this.resourceParams.DETAILS.MAX_ROWS,\n // Fall back to the row id when the user has not sorted, as the infinite datasource does.\n // OFFSET paging is only correct over a stable order: an unsorted req/rep returns rows in\n // an unspecified order that differs between requests, so consecutive pages overlap and\n // skip. AG Grid then receives the same row id in two blocks, refuses the store it just\n // built, and re-requests both blocks - a loop that runs as fast as the server can answer.\n // The row id is unique and always sortable, giving every page a deterministic window.\n ORDER_BY: this.resourceParams.DETAILS.ORDER_BY || `${this.rowId} ASC`,\n OFFSET: this.resourceParams.DETAILS.OFFSET,\n };\n }\n}\n","import { __awaiter, __decorate } from \"tslib\";\nimport { Datasource, MessageType, normaliseCriteria, toFieldMetadata, } from '@genesislcap/foundation-comms';\nimport { LifecycleMixin } from '@genesislcap/foundation-utils';\nimport { attr, customElement, DOM, observable } from '@microsoft/fast-element';\nimport { gridProGenesisDatasourceEventNames } from '../grid-pro-genesis-datasource';\nimport { datasourceEventNames, } from '../grid-pro-genesis-datasource/datasource-events.types';\nimport { logger } from '../utils';\nimport { GridProBaseDatasource } from './base.datasource';\nimport { filterDataserverResult } from './dataserver-result.filter';\nimport { getFilterByFieldType, getServerSideFilterParamsByFieldType, } from './server-side.grid-definitions';\nimport { DataserverServerSideDatasource } from './server-side.resource-dataserver';\nimport { ReqRepServerSideDatasource } from './server-side.resource-reqrep';\nconst criteriaDelimiter = ';';\nconst withoutColumnDefs = null;\n/**\n * A Genesis Datasource element, for server-side | SSRM-compatible data fetching and used exclusively by the GridPro element.\n * @remarks Only supports Server-Side Row Model. Requires `@ag-grid-enterprise/server-side-row-model` setup and valid AG Grid Enterprise license.\n *\n * **Supported resources**: DATASERVER resources, and REQUEST_SERVER (req/rep) resources that declare\n * `criteriaOnlyRequest`. A req/rep resource without it reports a `resource-type` error and no\n * datasource is attached to the grid.\n *\n * **Custom Sort Indicators**: This datasource automatically applies custom sort indicators that are always visible (instead of only on hover).\n * Sortable columns will show a subtle sort icon even when not sorted, and active sort indicators will be more prominent.\n * The custom styling uses AG Grid's native icon font for consistency with the grid theme.\n *\n * @beta\n *\n * @fires base-datasource-error - Fired when a datasource error is reported. detail: `BaseDatasourceErrorEventDetail`\n * @fires datasource-error - Fired when a datasource error occurs (for grid integration). detail: `DatasourceErrorEventDetail`\n * @fires base-datasource-connected - Fired when error state is cleared after connection succeeds\n * @fires datasource-loading-finished - Fired when pending stream transactions are flushed with no row changes\n * @fires datasource-no-data-available - Fired when loading finishes with an empty row set\n * @fires datasource-data-changed - Fired when rows are delivered to the grid, a live stream pushes a change, a poll detects one, or a re-read no longer returns a row; `add` are rows the grid did not hold before, `update` are held rows whose content changed, `remove` carries the row id. detail: `DataChangedEventDetail`\n * @fires cache-filter-config - Fired to persist filter configuration for the grid\n * @fires refresh-server-side - Fired to request a server-side refresh. detail: `RefreshServerSideEventDetail`\n * @fires set-server-side-datasource - Fired to attach or clear the server-side row model datasource\n * @fires datasource-loading-started - Fired when a server-side load cycle starts\n * @fires add-grid-css-class - Fired to add a CSS class on the grid host (e.g. server-side styling). detail: `GridCssClassEventDetail`\n * @fires remove-grid-css-class - Fired to remove a CSS class from the grid host. detail: `GridCssClassEventDetail`\n * @fires datasource-initialize - Fired to hand off server-side grid options. detail: `InitializeEventDetail`\n * @fires datasource-init - Fired when the server-side grid model should initialize data\n * @fires datasource-schema-updated - Fired when column metadata or defs are updated. detail: `SchemaUpdatedEventDetail`\n * @fires datasource-filters-restored - Fired when persisted filters are reapplied\n * @fires datasource-data-cleared - Fired when the grid drops every row it held (reload, filter or sort change, destroy); `includeSchema` says whether the columns went too. detail: `DataClearedEventDetail`\n * @fires apply-server-side-transaction - Fired to apply a server-side row transaction\n * @fires datasource-ready - Fired when the host grid is ready to start loading data\n */\nlet GridProServerSideDatasource = class GridProServerSideDatasource extends LifecycleMixin(GridProBaseDatasource) {\n constructor() {\n super(...arguments);\n /**\n * Enable live updates for the grid.\n * @remarks Only works with DATASERVER resources (StreamDatasource) right now.\n */\n this.liveUpdates = false;\n this.request = {};\n this.onDatasourceReady = (_event) => __awaiter(this, void 0, void 0, function* () {\n const initOK = yield this.initializeDatasource(this.datasourceOptions(), true, false);\n if (!initOK) {\n logger.debug(`Genesis Datasource init failed for ${this.resourceName}`);\n this.clearRowData();\n this.setDisconnected(true);\n return;\n }\n if (!this.isSsrmSupportedForResource()) {\n this.refuseServerSideDatasource();\n return;\n }\n this.$emit(gridProGenesisDatasourceEventNames.dataInit);\n this.setDisconnected(false);\n this.indexes = this.getResourceIndexes(this.datasource.availableIndexes, this.datasource.availableSortableFields);\n const fieldMetadata = toFieldMetadata(this.datasource.originalFieldDef);\n const agColumnDefs = yield this.getAgColumnDefs(fieldMetadata);\n // Emit event to set column definitions\n this.$emit(datasourceEventNames.schemaUpdated, {\n schema: agColumnDefs,\n metadata: fieldMetadata,\n });\n if (this.isRequestServer) {\n // Enable polling if not in snapshot mode and polling is not disabled\n const usePolling = !this.isSnapshot && !this.disablePolling;\n this.ssrmDatasource = new ReqRepServerSideDatasource({\n createReqRepRequestFunc: this.createReqRepRequest.bind(this),\n createReqRepStreamFunc: usePolling ? this.createReqRepStream.bind(this) : undefined,\n onPollingUpdateFunc: usePolling ? this.applyReqRepPollingUpdate.bind(this) : undefined,\n resetPreviousPollResultFunc: usePolling\n ? this.resetPreviousPollResult.bind(this)\n : undefined,\n usePolling: usePolling,\n reloadResourceDataFunc: this.reloadResourceData.bind(this),\n errorHandlerFunc: this.handleErrors.bind(this),\n onNoDataAvailableFunc: () => this.$emit(datasourceEventNames.noDataAvailable),\n onDataAvailableFunc: () => this.$emit(datasourceEventNames.loadingFinished),\n onRowsDeliveredFunc: this.reportDeliveredRows.bind(this),\n onRowsWithdrawnFunc: this.reportWithdrawnRows.bind(this),\n resourceName: this.resourceName,\n resourceParams: this.datasource.requestOnlyParams,\n resourceIndexes: this.indexes,\n resourceColDefs: this.datasource.originalFieldDef,\n maxRows: +this.maxRows,\n maxView: +this.maxView,\n rowId: this.rowId,\n });\n }\n else {\n this.ssrmDatasource = new DataserverServerSideDatasource({\n createDataserverStreamFunc: this.createDataserverStream.bind(this),\n reloadResourceDataFunc: this.reloadResourceData.bind(this),\n errorHandlerFunc: this.handleErrors.bind(this),\n onNoDataAvailableFunc: () => this.$emit(datasourceEventNames.noDataAvailable),\n onDataAvailableFunc: () => this.$emit(datasourceEventNames.loadingFinished),\n onRowsDeliveredFunc: this.reportDeliveredRows.bind(this),\n onRowsWithdrawnFunc: this.reportWithdrawnRows.bind(this),\n resourceName: this.resourceName,\n resourceParams: this.datasource.dataserverOnlyParams,\n resourceIndexes: this.indexes,\n resourceColDefs: this.datasource.originalFieldDef,\n maxRows: +this.maxRows,\n maxView: +this.maxView,\n rowId: this.rowId,\n });\n }\n // Emit event to set server side datasource\n this.$emit(datasourceEventNames.setServerSideDatasource, {\n datasource: this.ssrmDatasource,\n });\n // Emit event to restore cached filter config\n this.$emit(datasourceEventNames.filtersRestored);\n // Apply custom sort indicator styling for server-side datasource\n this.applyServerSideSortIndicatorStyling();\n });\n /**\n * Stores the previous poll result for comparison (poll N vs poll N-1).\n * @remarks\n * This enables efficient change detection by comparing consecutive polls instead of\n * maintaining the entire dataset in memory. Only stores the last poll result.\n * @internal\n */\n this.previousPollResult = new Map();\n /**\n * Tracks whether the baseline poll has been captured for the current polling stream.\n * @remarks\n * Used to distinguish \"no baseline yet\" from \"baseline is empty\". Without this flag,\n * an empty initial poll (e.g. resource starts with zero rows) leaves\n * `previousPollResult.size === 0`, so the next poll — which contains newly-inserted\n * rows — is treated as another \"first poll\" and stored as baseline instead of being\n * applied. The first inserted row would then never appear in the grid.\n * @internal\n */\n this.hasCapturedFirstPollResult = false;\n }\n resourceNameChanged(oldValue, newValue) {\n if (!oldValue || oldValue === newValue)\n return;\n DOM.queueUpdate(() => __awaiter(this, void 0, void 0, function* () {\n yield this.restart();\n }));\n }\n criteriaChanged(oldCriteria, newCriteria) {\n const criteriaIsNotDuplicate = oldCriteria !== normaliseCriteria(newCriteria, criteriaDelimiter);\n if (this.ssrmDatasource && criteriaIsNotDuplicate) {\n DOM.queueUpdate(() => __awaiter(this, void 0, void 0, function* () {\n yield this.ssrmDatasource.refreshDatasource({\n criteria: newCriteria,\n });\n }));\n }\n }\n connectedCallback() {\n super.connectedCallback();\n const shouldRunConnect = this.shouldRunConnect;\n DOM.queueUpdate(() => {\n if (!shouldRunConnect)\n return;\n this.init();\n this.subscribeToConnection();\n });\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n const shouldRunDisconnect = this.shouldRunDisconnect;\n DOM.queueUpdate(() => __awaiter(this, void 0, void 0, function* () {\n if (!shouldRunDisconnect)\n return;\n yield this.destroy();\n this.unsubscribeFromConnection();\n }));\n }\n deepClone() {\n const copy = super.deepClone();\n copy.deferredGridOptions = structuredClone(this.deferredGridOptions);\n copy.deferredColumnStates = structuredClone(this.deferredColumnStates);\n return copy;\n }\n /**\n * Resets the grid data while keeping columnDefs and reloads data.\n * @remarks This is used when the grid is already initialized and we want to reload the data due to a criteria/filter change.\n * @beta\n */\n reloadResourceData(params) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n this.datasource.destroy();\n // A block request still in flight was read for the cache being dropped here; its reply must\n // not be reported as rows the grid holds.\n (_b = (_a = this.ssrmDatasource) === null || _a === void 0 ? void 0 : _a.invalidatePendingLoads) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_c = this.liveUpdatesStream) === null || _c === void 0 ? void 0 : _c.unsubscribe();\n this.liveUpdatesStream = undefined;\n // Emit event to cache current filter model before clearing data\n this.$emit(datasourceEventNames.cacheFilterConfig);\n this.clearRowData(withoutColumnDefs);\n this.setDisconnected(false);\n if (params) {\n const options = Object.assign(Object.assign({}, this.datasourceOptions()), params);\n const initOK = yield this.initializeDatasource(options, true, false);\n if (!initOK) {\n // Emit event to set server side datasource to null\n this.$emit(datasourceEventNames.setServerSideDatasource, { datasource: null });\n // Purge AG Grid's SSRM cache even on failure, otherwise the pre-filter rows linger\n // on screen (clearRowData emits an empty remove transaction, which clears nothing).\n // The datasource is now null, so the purge clears the display without re-invoking\n // getRows() against a dead datasource.\n this.$emit(datasourceEventNames.refreshServerSide, {\n purge: true,\n });\n logger.error('Genesis Datasource re-init failed on filtering/sorting.');\n return;\n }\n // Purge AG Grid's SSRM cache only AFTER the re-init completed: the purge makes AG Grid\n // re-invoke getRows() immediately, and purging before initializeDatasource let that\n // call race the destroyed/half-initialized datasource (stale rows, broken first loads).\n this.$emit(datasourceEventNames.refreshServerSide, {\n purge: true,\n });\n }\n else {\n // Full re-init path: init() re-creates the whole ssrmDatasource, so no race here -\n // purge up-front as before.\n this.$emit(datasourceEventNames.refreshServerSide, {\n purge: true,\n });\n if (this.ssrmDatasource) {\n yield this.ssrmDatasource.destroy();\n this.ssrmDatasource = undefined;\n }\n // Emit events instead of direct grid access\n this.$emit(datasourceEventNames.setServerSideDatasource, { datasource: null });\n this.$emit(datasourceEventNames.loadingStarted);\n yield this.init();\n }\n });\n }\n /**\n * Applies custom sort indicator styling for server-side datasource\n * @internal\n */\n applyServerSideSortIndicatorStyling() {\n // Mark the grid host so its stylesheet can hover-gate the sort indicators for this row model\n // (the `.grid-pro-server-side` rules in the grid-pro styles). The styling must live in the\n // grid's shadow root, where the AG header cells render - a document stylesheet cannot reach\n // them.\n this.$emit(datasourceEventNames.addGridCssClass, {\n className: 'grid-pro-server-side',\n });\n }\n /**\n * Removes custom sort indicator styling\n * @internal\n */\n removeServerSideSortIndicatorStyling() {\n this.$emit(datasourceEventNames.removeGridCssClass, {\n className: 'grid-pro-server-side',\n });\n }\n init() {\n return __awaiter(this, void 0, void 0, function* () {\n // Emit event to initialize grid with server-side options\n const gridOptions = Object.assign({ getRowId: (params) => {\n if (!params.data) {\n return null;\n }\n return String(params.data[this.rowId]);\n }, getRowStyle(params) {\n var _a, _b;\n if ((_b = (_a = params.data) === null || _a === void 0 ? void 0 : _a.ROW_REF) === null || _b === void 0 ? void 0 : _b.includes('_deleted')) {\n return { color: 'grey' };\n }\n }, cacheBlockSize: this.maxRows, defaultColDef: {\n filter: true,\n resizable: true,\n sortable: false,\n unSortIcon: true,\n }, rowBuffer: 0, rowModelType: 'serverSide', suppressServerSideInfiniteScroll: false, suppressMultiSort: true, onFilterChanged: (params) => { }, onSortChanged: (params) => { } }, this.deferredGridOptions);\n this.$emit(datasourceEventNames.initialize, {\n options: gridOptions,\n keepColDefsOnClearRowData: this.keepColDefsOnClearRowData,\n });\n // TODO: refactor this to prevent rendering datasource component until grid is ready\n this.clearReadyListener();\n this.addEventListener(datasourceEventNames.ready, this.onDatasourceReady, {\n once: true,\n });\n if (!this.resourceName) {\n this.handleErrors('Application not connected or invalid resource name, datasource will not work.', 'unknown');\n }\n });\n }\n clearReadyListener() {\n this.removeEventListener(datasourceEventNames.ready, this.onDatasourceReady);\n }\n destroy() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n this.clearReadyListener();\n this.datasource.destroy();\n (_a = this.liveUpdatesStream) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.liveUpdatesStream = undefined;\n this.clearRowData();\n if (this.ssrmDatasource) {\n yield this.ssrmDatasource.destroy();\n (_b = this.pollingDatasource) === null || _b === void 0 ? void 0 : _b.destroy();\n this.ssrmDatasource = undefined;\n }\n // Remove custom sort indicator styling\n this.removeServerSideSortIndicatorStyling();\n // Emit events instead of direct grid access\n this.$emit(datasourceEventNames.setServerSideDatasource, { datasource: null });\n this.$emit(datasourceEventNames.refreshServerSide, {\n purge: true,\n });\n });\n }\n restart() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.destroy();\n yield this.init();\n });\n }\n /**\n * Forgets every held row and tells consumers, as the client-side datasource does: the grid is\n * dropping its rows (a reload, a filter or sort change, or teardown). `withColumnDefs` also\n * clears the column definitions.\n * @internal\n */\n clearRowData(withColumnDefs = true) {\n this.rowData = new Map();\n this.resetTransaction();\n this.$emit(datasourceEventNames.dataCleared, {\n includeSchema: Boolean(withColumnDefs),\n });\n // Emit event to apply server side transaction for removing all data\n this.$emit(datasourceEventNames.applyServerSideTransaction, {\n transaction: { remove: [] },\n });\n }\n /**\n * Checks whether the resolved resource can be served through the Server-Side Row Model.\n * @remarks\n * REQUEST_SERVER (req/rep) resources are only supported when the request reply declares\n * `criteriaOnlyRequest` (`CRITERIA_ONLY_REQUEST` in its metadata). SSRM drives a req/rep\n * resource purely through `DETAILS` - `CRITERIA_MATCH` for the grid filter model, `ORDER_BY`\n * for the sort model and `OFFSET` for paging - and sends an empty `REQUEST`\n * payload. A request reply without `criteriaOnlyRequest` expects its inputs in `REQUEST`\n * instead, so filtering, sorting and paging would silently do nothing.\n *\n * DATASERVER resources are always supported.\n * @returns `true` when SSRM can be used, `false` after reporting a `resource-type` error.\n * @internal\n */\n isSsrmSupportedForResource() {\n if (!this.isRequestServer || this.datasource.criteriaOnlyRequest) {\n return true;\n }\n this.handleErrors(`Server-side row model is not supported for the REQUEST_SERVER resource '${this.resourceName}' because it does not support criteria-only requests. Set 'criteriaOnlyRequest = true' on the request reply definition, or use a client-side datasource for this resource.`, 'resource-type');\n return false;\n }\n /**\n * Leaves the grid with no server-side datasource, for a resource SSRM cannot serve.\n * @remarks\n * Clears any rows and hands the grid a `null` datasource, so AG Grid never calls `getRows()` for\n * this resource.\n * @internal\n */\n refuseServerSideDatasource() {\n this.clearRowData();\n this.$emit(datasourceEventNames.setServerSideDatasource, { datasource: null });\n }\n createReqRepRequest() {\n return __awaiter(this, arguments, void 0, function* (existingParams = null) {\n const reqRep = yield this.datasource.snapshot(existingParams);\n return reqRep;\n });\n }\n /**\n * Creates a polling stream for REQUEST_SERVER resources.\n * @remarks\n * Creates a separate `Datasource` instance configured to poll all currently loaded rows\n * (from offset 0 to current offset + maxRows). This enables change detection across all\n * loaded data, not just the current page.\n *\n * The separate datasource instance has built-in polling logic (pollingInterval, pollTriggerEvents)\n * and manages its own lifecycle independently of the snapshot datasource.\n * @param existingParams - The current request parameters (includes OFFSET, MAX_ROWS, etc.)\n * @returns Object containing the polling stream and the datasource instance\n * @internal\n */\n createReqRepStream() {\n return __awaiter(this, arguments, void 0, function* (existingParams = null) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const currentOffset = (_b = (_a = existingParams === null || existingParams === void 0 ? void 0 : existingParams.DETAILS) === null || _a === void 0 ? void 0 : _a.OFFSET) !== null && _b !== void 0 ? _b : 0;\n const baseMaxRows = (_d = (_c = existingParams === null || existingParams === void 0 ? void 0 : existingParams.DETAILS) === null || _c === void 0 ? void 0 : _c.MAX_ROWS) !== null && _d !== void 0 ? _d : this.maxRows;\n const totalRowsToFetch = baseMaxRows + currentOffset;\n const datasourceOptions = Object.assign(Object.assign({}, this.datasourceOptions()), { criteria: (_f = (_e = existingParams === null || existingParams === void 0 ? void 0 : existingParams.DETAILS) === null || _e === void 0 ? void 0 : _e.CRITERIA_MATCH) !== null && _f !== void 0 ? _f : this.criteria, maxRows: totalRowsToFetch, orderBy: (_h = (_g = existingParams === null || existingParams === void 0 ? void 0 : existingParams.DETAILS) === null || _g === void 0 ? void 0 : _g.ORDER_BY) !== null && _h !== void 0 ? _h : this.orderBy });\n logger.debug('Creating polling datasource for all loaded rows:', {\n currentOffset,\n baseMaxRows,\n totalRowsToFetch,\n });\n // Initialize the polling datasource\n const initOK = yield this.pollingDatasource.init(datasourceOptions, true, true);\n if (!initOK) {\n logger.error('Polling datasource init failed');\n return;\n }\n return { stream: this.pollingDatasource.stream, datasource: this.pollingDatasource };\n });\n }\n /**\n * Resets the previous poll result comparison state.\n * @remarks\n * Called when the polling stream is destroyed or recreated with new parameters\n * (e.g., user scrolls to a different page, or filters/sorting changes).\n * @internal\n */\n resetPreviousPollResult() {\n this.previousPollResult.clear();\n this.hasCapturedFirstPollResult = false;\n logger.debug('Previous poll result cleared');\n }\n /**\n * Applies polling updates for REQUEST_SERVER resources in SSRM.\n * @remarks\n * Compares the current poll result (poll N) with the previous poll result (poll N-1)\n * to detect inserts, updates, and deletes. Changes are applied to the grid using\n * `applyServerSideTransaction` to avoid interfering with SSRM's cache management.\n *\n * The first poll is stored without applying changes (nothing to compare yet).\n * Subsequent polls are compared to detect changes efficiently.\n * @param result - The polling result from the REQUEST_SERVER resource\n * @internal\n */\n applyReqRepPollingUpdate(result) {\n var _a;\n if (!this.ssrmDatasource || !result.REPLY) {\n return;\n }\n const polledData = result.REPLY;\n if (!Array.isArray(polledData) || !((_a = result.MESSAGE_TYPE) === null || _a === void 0 ? void 0 : _a.startsWith('REP_'))) {\n logger.error('received invalid RequestServerResult for polling update', result);\n return;\n }\n if (!this.hasCapturedFirstPollResult) {\n polledData.forEach((row) => {\n this.previousPollResult.set(row[this.rowId], row);\n });\n this.hasCapturedFirstPollResult = true;\n logger.debug('First poll result stored for future comparison', {\n rowCount: this.previousPollResult.size,\n });\n return;\n }\n const currentPollMap = new Map();\n polledData.forEach((row) => {\n currentPollMap.set(row[this.rowId], row);\n });\n const rowsToUpdate = [];\n const rowsToInsert = [];\n const rowsToDelete = [];\n polledData.forEach((row) => {\n const rowId = row[this.rowId];\n if (this.previousPollResult.has(rowId)) {\n const previousRow = this.previousPollResult.get(rowId);\n if (this.hasRowContentChanged(previousRow, row)) {\n rowsToUpdate.push(row);\n }\n }\n else {\n rowsToInsert.push(row);\n }\n });\n this.previousPollResult.forEach((previousRow, rowId) => {\n if (!currentPollMap.has(rowId)) {\n rowsToDelete.push(previousRow);\n }\n });\n if (rowsToUpdate.length > 0 || rowsToDelete.length > 0 || rowsToInsert.length > 0) {\n this.previousPollResult = currentPollMap;\n logger.debug('Applying reqRep polling update via applyServerSideTransaction:', {\n added: rowsToInsert.length,\n updated: rowsToUpdate.length,\n removed: rowsToDelete.length,\n totalInPoll: currentPollMap.size,\n });\n // The poll has already classified the rows against the previous poll, so re-classify the\n // inserts against the rows actually held: a row shifted into the polled page from a block\n // above is new to the poll but not to the grid, and reporting it as `add` would duplicate\n // it for consumers.\n const transaction = this.resetTransaction();\n rowsToInsert.forEach((row) => {\n const rowId = row[this.rowId];\n const known = this.rowData.get(rowId);\n if (!known) {\n transaction.add.push(row);\n }\n else if (this.hasRowContentChanged(known, row)) {\n transaction.update.push(row);\n }\n });\n transaction.update.push(...rowsToUpdate);\n transaction.remove.push(...rowsToDelete.map((row) => ({ [this.rowId]: row[this.rowId] })));\n [...rowsToInsert, ...rowsToUpdate].forEach((row) => this.rowData.set(row[this.rowId], row));\n rowsToDelete.forEach((row) => this.rowData.delete(row[this.rowId]));\n this.emitTransaction(transaction);\n // A consumer's handler may have reloaded or destroyed this datasource synchronously; the\n // grid is then being purged and the transaction belongs to rows it no longer holds.\n if (this.transactionData !== transaction) {\n return;\n }\n this.$emit(datasourceEventNames.applyServerSideTransaction, {\n transaction: {\n add: rowsToInsert,\n update: rowsToUpdate,\n remove: rowsToDelete,\n },\n });\n }\n }\n applyLiveServerSideUpdate(nextMessage) {\n var _a, _b, _c;\n const inserts = (_a = nextMessage.inserts) !== null && _a !== void 0 ? _a : [];\n const updates = (_b = nextMessage.updates) !== null && _b !== void 0 ? _b : [];\n const deletes = (_c = nextMessage.deletes) !== null && _c !== void 0 ? _c : [];\n if (!inserts.length && !updates.length && !deletes.length) {\n return;\n }\n const netRowChange = inserts.length - deletes.length;\n if (this.ssrmDatasource) {\n this.ssrmDatasource.serverRowsCount += netRowChange;\n this.ssrmDatasource.clientRowsCount += netRowChange;\n }\n const transaction = this.resetTransaction();\n this.handleStreamInserts(inserts);\n this.handleStreamUpdates(updates);\n this.handleStreamDeletes(deletes);\n // A MODIFY for a row this element has not seen delivered is not reported to consumers (they\n // do not hold it), but it still goes to the grid, which ignores rows outside its store: the\n // stream pre-merge above made it a full row, and the grid may hold it from a block loaded\n // before this element started mirroring deliveries.\n const gridOnlyUpdates = updates.filter((row) => {\n const rowId = row === null || row === void 0 ? void 0 : row[this.rowId];\n return rowId !== undefined && rowId !== null && !this.rowData.has(rowId);\n });\n // Consumers hear the change first; the grid transactions below then catch the grid up.\n this.emitTransaction(transaction);\n // A consumer's handler may have reloaded or destroyed this datasource synchronously; the\n // grid is then being purged and the transaction belongs to rows it no longer holds.\n if (this.transactionData !== transaction) {\n return;\n }\n if (transaction.add.length > 0) {\n this.$emit(datasourceEventNames.applyServerSideTransaction, {\n transaction: {\n route: [],\n add: transaction.add,\n addIndex: this.reverse ? 0 : transaction.addIndex,\n },\n });\n }\n const gridUpdates = [...transaction.update, ...gridOnlyUpdates];\n if (gridUpdates.length > 0 || transaction.remove.length > 0) {\n this.$emit(datasourceEventNames.applyServerSideTransaction, {\n transaction: {\n route: [],\n update: gridUpdates,\n remove: transaction.remove,\n },\n });\n }\n }\n createDataserverStream() {\n return __awaiter(this, arguments, void 0, function* (_existingParams = null) {\n if (this.liveUpdates) {\n const streamOnMessage = (message) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n const messageType = message.MESSAGE_TYPE;\n if (messageType !== MessageType.QUERY_UPDATE || !message.ROW) {\n return;\n }\n if (!((_a = this.ssrmDatasource) === null || _a === void 0 ? void 0 : _a.sourceRef)) {\n return;\n }\n if (message.SEQUENCE_ID !== undefined && message.SEQUENCE_ID <= 1) {\n return;\n }\n const rawMessage = message;\n const normalizedRows = Array.isArray(rawMessage.ROW)\n ? rawMessage.ROW\n : rawMessage.ROW\n ? [rawMessage.ROW]\n : [];\n // Genesis sends only changed fields in MODIFY messages. Merge each partial row\n // with the full cached row from ssrmDatasource.rowData so AG Grid always receives\n // a complete row — without this, unchanged columns are cleared on every update.\n const rowData = this.ssrmDatasource.rowData;\n const mergedRows = normalizedRows.map((row) => {\n var _a, _b;\n const details = (_a = row.DETAILS) !== null && _a !== void 0 ? _a : {};\n // Genesis keys pushes by the default id. Under a custom `row-id` DETAILS carries no\n // custom id at all, so fall back to the held row that carries this ROW_REF.\n const defaultRowId = this.defaultRowIdByResourceType;\n const rowRef = ((_b = details[this.rowId]) !== null && _b !== void 0 ? _b : this.resolveRowId(Object.assign(Object.assign({}, row), { [defaultRowId]: details[defaultRowId] })));\n const existingRow = rowRef != null ? rowData === null || rowData === void 0 ? void 0 : rowData.get(rowRef) : undefined;\n if (!existingRow)\n return row;\n const merged = Object.assign({}, existingRow);\n for (const [key, value] of Object.entries(row)) {\n if (key !== 'DETAILS' && value != null)\n merged[key] = value;\n }\n return Object.assign(Object.assign({}, merged), { DETAILS: details });\n });\n const normalizedMessage = Object.assign(Object.assign({}, rawMessage), { ROW: mergedRows });\n const nextMessage = filterDataserverResult(normalizedMessage, this.rowId);\n this.applyLiveServerSideUpdate(nextMessage);\n });\n const onError = (error) => {\n var _a;\n logger.error(error);\n this.handleErrors(((_a = error.receivedMessage) === null || _a === void 0 ? void 0 : _a.ERROR) || error.message, 'stream');\n };\n this.liveUpdatesStream = this.connect\n .stream(this.resourceName, () => { }, onError, this.datasource.dataserverOnlyParams)\n .subscribe((message) => streamOnMessage(message));\n }\n yield this.datasource.startStream();\n return this.datasource.stream;\n });\n }\n getAgColumnDefs(fieldsMetadata) {\n return __awaiter(this, void 0, void 0, function* () {\n const colDefsFromGenesisData = this.generateColumnDefsFromMetadata(fieldsMetadata, getServerSideFilterParamsByFieldType, getFilterByFieldType);\n colDefsFromGenesisData.forEach((colDef) => {\n colDef.sortable = [].concat(...this.indexes.values()).includes(colDef.field);\n if (this.datasource.criteriaOnlyRequest) {\n colDef.filter = this.datasource.availableCriteriaFields.includes(colDef.field)\n ? colDef.filter\n : null;\n }\n });\n return colDefsFromGenesisData;\n });\n }\n loadMore() {\n throw new Error('loadMore() method is not supported for server-side datasource');\n }\n};\n__decorate([\n Datasource\n], GridProServerSideDatasource.prototype, \"pollingDatasource\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'live-updates' })\n], GridProServerSideDatasource.prototype, \"liveUpdates\", void 0);\n__decorate([\n observable\n], GridProServerSideDatasource.prototype, \"request\", void 0);\nGridProServerSideDatasource = __decorate([\n customElement({\n name: 'grid-pro-server-side-datasource',\n })\n], GridProServerSideDatasource);\nexport { GridProServerSideDatasource };\n","import { FieldTypeEnum } from '@genesislcap/foundation-comms';\nimport { getEnumFilterParams } from '../grid-pro.definitions';\n/**\n * Returns a filter type based on the Grid Pro field/column type.\n * @param type - The type of the field/column\n * @returns The ag-grid filter type\n */\nexport function getFilterByFieldType(type) {\n switch (type === null || type === void 0 ? void 0 : type.toLowerCase()) {\n case 'int':\n case 'long':\n case 'double':\n case 'bigdecimal':\n case 'number':\n return 'agNumberColumnFilter';\n case 'date':\n case 'datetime':\n return 'agDateColumnFilter';\n case 'enum':\n return 'agSetColumnFilter';\n default:\n return 'agTextColumnFilter';\n }\n}\n/**\n * Returns the filter params based on the Grid Pro field/column type.\n * @param field - The field metadata\n * @returns the filter params for the specified field type\n * @remarks Currently only returns a default filter params object, for all field types\n * @beta\n */\nexport function getServerSideFilterParamsByFieldType(field) {\n switch (field.type) {\n case FieldTypeEnum.BOOLEAN: {\n return {\n buttons: ['reset', 'apply'],\n closeOnApply: true,\n closeOnClear: true,\n maxNumConditions: 1,\n defaultOption: 'true',\n filterOptions: [\n {\n displayKey: 'true',\n displayName: 'True',\n predicate: (_, cellValue) => cellValue === 'true' || cellValue === true,\n numberOfInputs: 0,\n },\n {\n displayKey: 'false',\n displayName: 'False',\n predicate: (_, cellValue) => cellValue === 'false' || cellValue === false,\n numberOfInputs: 0,\n },\n {\n displayKey: 'true-false',\n displayName: 'True/False',\n predicate: (_, cellValue) => cellValue === 'true' ||\n cellValue === true ||\n cellValue === 'false' ||\n cellValue === false,\n numberOfInputs: 0,\n },\n ],\n };\n }\n case FieldTypeEnum.ENUM: {\n return getEnumFilterParams(field, getFilterByFieldType(field.type));\n }\n case FieldTypeEnum.DATE:\n case FieldTypeEnum.DATETIME: {\n return {\n comparator: (filterLocalDateAtMidnight, cellValue) => {\n if (!cellValue)\n return -1;\n const cellValueTime = new Date(cellValue).setHours(0, 0, 0, 0);\n const filterValueTime = filterLocalDateAtMidnight.getTime();\n if (cellValueTime === filterValueTime) {\n return 0;\n }\n if (cellValueTime < filterValueTime) {\n return -1;\n }\n if (cellValueTime > filterValueTime) {\n return 1;\n }\n },\n buttons: ['reset', 'apply'],\n closeOnApply: true,\n closeOnClear: true,\n maxNumConditions: 1,\n browserDatePicker: true,\n filterOptions: [\n 'equals',\n 'lessThan',\n 'greaterThan',\n 'inRange',\n {\n displayKey: 'isToday',\n displayName: 'Is today',\n numberOfInputs: 0,\n predicate: () => true,\n },\n 'blank',\n 'notBlank',\n ],\n };\n }\n case FieldTypeEnum.NUMBER: {\n return {\n buttons: ['reset', 'apply'],\n closeOnApply: true,\n closeOnClear: true,\n maxNumConditions: 1,\n filterOptions: [\n 'equals',\n 'notEqual',\n 'greaterThan',\n 'greaterThanOrEqual',\n 'lessThan',\n 'lessThanOrEqual',\n 'inRange',\n 'blank',\n 'notBlank',\n ],\n };\n }\n default: {\n return {\n buttons: ['reset', 'apply'],\n closeOnApply: true,\n closeOnClear: true,\n maxNumConditions: 1,\n filterOptions: [\n 'contains',\n 'equals',\n 'notEqual',\n {\n displayKey: 'wordStartsWith',\n displayName: 'Word starts with',\n numberOfInputs: 1,\n predicate: () => true,\n },\n 'blank',\n 'notBlank',\n ],\n };\n }\n }\n}\n","import { css } from '@microsoft/fast-element';\n/**\n * Custom Drag n Drop CSS for Grid Pro.\n * @remarks helps with color and background issues when dragging a column.\n * @public\n */\nexport const agHeadCSS = css `\n .ag-dnd-ghost {\n background: var(--ag-header-background-color, var(--ag-background-color, #1f2126));\n border: solid 1px;\n border-color: var(--ag-header-foreground-color, var(--ag-foreground-color, #879ba6));\n border-radius: calc(var(--control-corner-radius) * 1px);\n color: var(--ag-header-foreground-color, var(--ag-foreground-color, #879ba6));\n font-family: var(--ag-font-family, var(--body-font));\n font-size: 12px;\n height: 32px;\n line-height: 28px;\n margin: 0;\n padding: 0 12px;\n position: absolute;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n`;\n","import { AgGridTheme } from '../grid-pro.types';\n/**\n * The AG Alpine font face used on ag-theme-alpine/ag-theme-alpine-dark Grid Pro themes.\n * @public\n */\nexport const agGridAlpineFontFace = `\n @font-face {\n font-family: \"agGridAlpine\";\n src: url(data:font/woff2;charset=utf-8;base64,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);\n font-weight: normal;\n font-style: normal;\n }\n`;\n/**\n * The AG Balham font face used on ag-theme-balham/ag-theme-balham-dark Grid Pro themes.\n * @public\n */\nexport const agGridBalhamFontFace = `\n @font-face {\n font-family: \"agGridBalham\";\n src: url(data:font/woff2;charset=utf-8;base64,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);\n font-weight: normal;\n font-style: normal;\n }\n`;\n/**\n * The AG Material font face used on ag-theme-material Grid Pro theme.\n * @public\n */\nexport const agGridMaterialFontFace = `\n @font-face {\n font-family: \"agGridMaterial\";\n src: url(data:font/woff2;charset=utf-8;base64,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);\n font-weight: normal;\n font-style: normal;\n }\n`;\n/**\n * Font Face map with all the font faces for each theme.\n * @public\n */\nexport const agThemeFontFaceMap = {\n [AgGridTheme.alpine]: agGridAlpineFontFace,\n [AgGridTheme.alpineDark]: agGridAlpineFontFace,\n [AgGridTheme.balham]: agGridBalhamFontFace,\n [AgGridTheme.balhamDark]: agGridBalhamFontFace,\n [AgGridTheme.material]: agGridMaterialFontFace,\n};\n/**\n * The default font face for Grid Pro (agGridAlpine).\n * @remarks this will change to Roboto.\n * @public\n */\nexport const defaultAgGridFontFace = agGridAlpineFontFace;\n","import { css } from '@microsoft/fast-element';\n/**\n * AG Grid core CSS.\n * @remarks without this grid will not show up.\n * @public\n */\nexport const agGridCSS = css `\n .ag-icon {\n font-family: var(--ag-icon-font-family);\n font-size: var(--ag-icon-size);\n line-height: var(--ag-icon-size);\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n .ag-icon-aggregation::before {\n content: var(--ag-icon-font-code-aggregation, '\\\\f101');\n }\n\n .ag-icon-arrows::before {\n content: var(--ag-icon-font-code-arrows, '\\\\f102');\n }\n\n .ag-icon-asc::before {\n content: var(--ag-icon-font-code-asc, '\\\\f103');\n }\n\n .ag-icon-cancel::before {\n content: var(--ag-icon-font-code-cancel, '\\\\f104');\n }\n\n .ag-icon-chart::before {\n content: var(--ag-icon-font-code-chart, '\\\\f105');\n }\n\n .ag-icon-checkbox-checked::before {\n content: var(--ag-icon-font-code-checkbox-checked, '\\\\f106');\n }\n\n .ag-icon-checkbox-indeterminate::before {\n content: var(--ag-icon-font-code-checkbox-indeterminate, '\\\\f107');\n }\n\n .ag-icon-checkbox-unchecked::before {\n content: var(--ag-icon-font-code-checkbox-unchecked, '\\\\f108');\n }\n\n .ag-icon-color-picker::before {\n content: var(--ag-icon-font-code-color-picker, '\\\\f109');\n }\n\n .ag-icon-columns::before {\n content: var(--ag-icon-font-code-columns, '\\\\f10a');\n }\n\n .ag-icon-contracted::before {\n content: var(--ag-icon-font-code-contracted, '\\\\f10b');\n }\n\n .ag-icon-copy::before {\n content: var(--ag-icon-font-code-copy, '\\\\f10c');\n }\n\n .ag-icon-cross::before {\n content: var(--ag-icon-font-code-cross, '\\\\f10d');\n }\n\n .ag-icon-csv::before {\n content: var(--ag-icon-font-code-csv, '\\\\f10e');\n }\n\n .ag-icon-desc::before {\n content: var(--ag-icon-font-code-desc, '\\\\f10f');\n }\n\n .ag-icon-excel::before {\n content: var(--ag-icon-font-code-excel, '\\\\f110');\n }\n\n .ag-icon-expanded::before {\n content: var(--ag-icon-font-code-expanded, '\\\\f111');\n }\n\n .ag-icon-eye-slash::before {\n content: var(--ag-icon-font-code-eye-slash, '\\\\f112');\n }\n\n .ag-icon-eye::before {\n content: var(--ag-icon-font-code-eye, '\\\\f113');\n }\n\n .ag-icon-filter::before {\n content: var(--ag-icon-font-code-filter, '\\\\f114');\n }\n\n .ag-icon-first::before {\n content: var(--ag-icon-font-code-first, '\\\\f115');\n }\n\n .ag-icon-grip::before {\n content: var(--ag-icon-font-code-grip, '\\\\f116');\n }\n\n .ag-icon-group::before {\n content: var(--ag-icon-font-code-group, '\\\\f117');\n }\n\n .ag-icon-last::before {\n content: var(--ag-icon-font-code-last, '\\\\f118');\n }\n\n .ag-icon-left::before {\n content: var(--ag-icon-font-code-left, '\\\\f119');\n }\n\n .ag-icon-linked::before {\n content: var(--ag-icon-font-code-linked, '\\\\f11a');\n }\n\n .ag-icon-loading::before {\n content: var(--ag-icon-font-code-loading, '\\\\f11b');\n }\n\n .ag-icon-maximize::before {\n content: var(--ag-icon-font-code-maximize, '\\\\f11c');\n }\n\n .ag-icon-menu::before {\n content: var(--ag-icon-font-code-menu, '\\\\f11d');\n }\n\n .ag-icon-minimize::before {\n content: var(--ag-icon-font-code-minimize, '\\\\f11e');\n }\n\n .ag-icon-next::before {\n content: var(--ag-icon-font-code-next, '\\\\f11f');\n }\n\n .ag-icon-none::before {\n content: var(--ag-icon-font-code-none, '\\\\f120');\n }\n\n .ag-icon-not-allowed::before {\n content: var(--ag-icon-font-code-not-allowed, '\\\\f121');\n }\n\n .ag-icon-paste::before {\n content: var(--ag-icon-font-code-paste, '\\\\f122');\n }\n\n .ag-icon-pin::before {\n content: var(--ag-icon-font-code-pin, '\\\\f123');\n }\n\n .ag-icon-pivot::before {\n content: var(--ag-icon-font-code-pivot, '\\\\f124');\n }\n\n .ag-icon-previous::before {\n content: var(--ag-icon-font-code-previous, '\\\\f125');\n }\n\n .ag-icon-radio-button-off::before {\n content: var(--ag-icon-font-code-radio-button-off, '\\\\f126');\n }\n\n .ag-icon-radio-button-on::before {\n content: var(--ag-icon-font-code-radio-button-on, '\\\\f127');\n }\n\n .ag-icon-right::before {\n content: var(--ag-icon-font-code-right, '\\\\f128');\n }\n\n .ag-icon-save::before {\n content: var(--ag-icon-font-code-save, '\\\\f129');\n }\n\n .ag-icon-small-down::before {\n content: var(--ag-icon-font-code-small-down, '\\\\f12a');\n }\n\n .ag-icon-small-left::before {\n content: var(--ag-icon-font-code-small-left, '\\\\f12b');\n }\n\n .ag-icon-small-right::before {\n content: var(--ag-icon-font-code-small-right, '\\\\f12c');\n }\n\n .ag-icon-small-up::before {\n content: var(--ag-icon-font-code-small-up, '\\\\f12d');\n }\n\n .ag-icon-tick::before {\n content: var(--ag-icon-font-code-tick, '\\\\f12e');\n }\n\n .ag-icon-tree-closed::before {\n content: var(--ag-icon-font-code-tree-closed, '\\\\f12f');\n }\n\n .ag-icon-tree-indeterminate::before {\n content: var(--ag-icon-font-code-tree-indeterminate, '\\\\f130');\n }\n\n .ag-icon-tree-open::before {\n content: var(--ag-icon-font-code-tree-open, '\\\\f131');\n }\n\n .ag-icon-unlinked::before {\n content: var(--ag-icon-font-code-unlinked, '\\\\f132');\n }\n\n .ag-icon-row-drag::before {\n content: var(--ag-icon-font-code-grip);\n }\n\n .ag-left-arrow::before {\n content: var(--ag-icon-font-code-left);\n }\n\n .ag-right-arrow::before {\n content: var(--ag-icon-font-code-right);\n }\n\n [class*='ag-theme-'] {\n --ag-foreground-color: #000;\n --ag-data-color: var(--ag-foreground-color);\n --ag-secondary-foreground-color: var(--ag-foreground-color);\n --ag-header-foreground-color: var(--ag-secondary-foreground-color);\n --ag-disabled-foreground-color: rgba(0, 0, 0, 0.5);\n --ag-background-color: #fff;\n --ag-header-background-color: transparent;\n --ag-tooltip-background-color: transparent;\n --ag-subheader-background-color: transparent;\n --ag-subheader-toolbar-background-color: transparent;\n --ag-control-panel-background-color: transparent;\n --ag-side-button-selected-background-color: var(--ag-control-panel-background-color);\n --ag-selected-row-background-color: #bbb;\n --ag-odd-row-background-color: var(--ag-background-color);\n --ag-modal-overlay-background-color: rgba(255, 255, 255, 0.66);\n --ag-row-hover-color: transparent;\n --ag-column-hover-color: transparent;\n --ag-range-selection-border-color: var(--ag-foreground-color);\n --ag-range-selection-border-style: solid;\n --ag-range-selection-background-color: rgba(0, 0, 0, 0.2);\n --ag-range-selection-background-color-2: var(--ag-range-selection-background-color);\n --ag-range-selection-background-color-3: var(--ag-range-selection-background-color);\n --ag-range-selection-background-color-4: var(--ag-range-selection-background-color);\n --ag-range-selection-highlight-color: var(--ag-range-selection-border-color);\n --ag-selected-tab-underline-color: var(--ag-range-selection-border-color);\n --ag-selected-tab-underline-width: 0;\n --ag-selected-tab-underline-transition-speed: 0s;\n --ag-range-selection-chart-category-background-color: rgba(0, 255, 132, 0.1);\n --ag-range-selection-chart-background-color: rgba(0, 88, 255, 0.1);\n --ag-header-cell-hover-background-color: transparent;\n --ag-header-cell-moving-background-color: var(--ag-background-color);\n --ag-value-change-value-highlight-background-color: rgba(22, 160, 133, 0.5);\n --ag-value-change-delta-up-color: #43a047;\n --ag-value-change-delta-down-color: #e53935;\n --ag-chip-background-color: transparent;\n --ag-borders: solid 1px;\n --ag-border-color: rgba(0, 0, 0, 0.25);\n --ag-borders-critical: var(--ag-borders);\n --ag-borders-secondary: var(--ag-borders);\n --ag-secondary-border-color: var(--ag-border-color);\n --ag-row-border-style: solid;\n --ag-row-border-color: var(--ag-secondary-border-color);\n --ag-row-border-width: 1px;\n --ag-cell-horizontal-border: solid transparent;\n --ag-borders-input: var(--ag-borders-secondary);\n --ag-input-border-color: var(--ag-secondary-border-color);\n --ag-borders-input-invalid: solid 2px;\n --ag-input-border-color-invalid: var(--ag-invalid-color);\n --ag-borders-side-button: var(--ag-borders);\n --ag-border-radius: 0px;\n --ag-row-border-color: var(--ag-secondary-border-color);\n --ag-header-column-separator-display: none;\n --ag-header-column-separator-height: 100%;\n --ag-header-column-separator-width: 1px;\n --ag-header-column-separator-color: var(--ag-secondary-border-color);\n --ag-header-column-resize-handle-display: none;\n --ag-header-column-resize-handle-height: 50%;\n --ag-header-column-resize-handle-width: 1px;\n --ag-header-column-resize-handle-color: var(--ag-secondary-border-color);\n --ag-invalid-color: red;\n --ag-input-disabled-border-color: var(--ag-input-border-color);\n --ag-input-disabled-background-color: transparent;\n --ag-checkbox-background-color: transparent;\n --ag-checkbox-border-radius: var(--ag-border-radius);\n --ag-checkbox-checked-color: var(--ag-foreground-color);\n --ag-checkbox-unchecked-color: var(--ag-foreground-color);\n --ag-checkbox-indeterminate-color: var(--ag-checkbox-unchecked-color);\n --ag-toggle-button-off-border-color: var(--ag-checkbox-unchecked-color);\n --ag-toggle-button-off-background-color: var(--ag-checkbox-unchecked-color);\n --ag-toggle-button-on-border-color: var(--ag-checkbox-checked-color);\n --ag-toggle-button-on-background-color: var(--ag-checkbox-checked-color);\n --ag-toggle-button-switch-background-color: var(--ag-background-color);\n --ag-toggle-button-switch-border-color: var(--ag-toggle-button-off-border-color);\n --ag-toggle-button-border-width: 1px;\n --ag-toggle-button-height: var(--ag-icon-size);\n --ag-toggle-button-width: calc(var(--ag-toggle-button-height) * 2);\n --ag-input-focus-box-shadow: none;\n --ag-input-focus-border-color: none;\n --ag-minichart-selected-chart-color: var(--ag-checkbox-checked-color);\n --ag-minichart-selected-page-color: var(--ag-checkbox-checked-color);\n --ag-grid-size: 4px;\n --ag-icon-size: 12px;\n --ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 1.5);\n --ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 1.5);\n --ag-widget-horizontal-spacing: calc(var(--ag-grid-size) * 2);\n --ag-widget-vertical-spacing: var(--ag-grid-size);\n --ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);\n --ag-cell-widget-spacing: var(--ag-cell-horizontal-padding);\n --ag-row-height: calc(var(--ag-grid-size) * 6 + 1px);\n --ag-header-height: var(--ag-row-height);\n --ag-list-item-height: calc(var(--ag-grid-size) * 5);\n --ag-column-select-indent-size: calc(var(--ag-grid-size) + var(--ag-icon-size));\n --ag-set-filter-indent-size: calc(var(--ag-grid-size) + var(--ag-icon-size));\n --ag-row-group-indent-size: calc(var(--ag-cell-widget-spacing) + var(--ag-icon-size));\n --ag-filter-tool-panel-group-indent: 16px;\n --ag-tab-min-width: 220px;\n --ag-menu-min-width: 181px;\n --ag-side-bar-panel-width: 200px;\n --ag-font-family: 'Helvetica Neue', sans-serif;\n --ag-font-size: 14px;\n --ag-card-radius: var(--ag-border-radius);\n --ag-card-shadow: none;\n --ag-popup-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n }\n\n .ag-root-wrapper,\n .ag-sticky-top,\n .ag-dnd-ghost {\n background-color: var(--ag-background-color);\n }\n\n [class*='ag-theme-'] {\n -webkit-font-smoothing: antialiased;\n font-family: var(--ag-font-family);\n font-size: var(--ag-font-size);\n line-height: normal;\n color: var(--ag-foreground-color);\n }\n\n ag-grid,\n ag-grid-angular,\n ag-grid-ng2,\n ag-grid-polymer,\n 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-no-transition {\n transition: none !important;\n }\n\n .ag-drag-handle {\n cursor: grab;\n }\n\n .ag-column-drop-wrapper {\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 -ms-user-select: none;\n user-select: none;\n }\n\n .ag-selectable {\n -moz-user-select: text;\n -webkit-user-select: text;\n -ms-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,\n .ag-picker-field-wrapper {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n line-height: normal;\n position: relative;\n }\n\n .ag-shake-left-to-right {\n animation-direction: alternate;\n animation-duration: 0.2s;\n animation-iteration-count: infinite;\n animation-name: ag-shake-left-to-right;\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: flex;\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 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: flex;\n flex-direction: row;\n }\n .ag-root-wrapper-body.ag-layout-normal {\n flex: 1 1 auto;\n height: 0;\n min-height: 0;\n }\n\n .ag-root {\n position: relative;\n display: flex;\n flex-direction: column;\n }\n .ag-root.ag-layout-normal,\n .ag-root.ag-layout-auto-height {\n overflow: hidden;\n flex: 1 1 auto;\n width: 0;\n }\n .ag-root.ag-layout-normal {\n height: 100%;\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-body-vertical-scroll-viewport,\n .ag-virtual-list-viewport,\n .ag-sticky-top-viewport {\n position: relative;\n height: 100%;\n min-width: 0px;\n overflow: hidden;\n flex: 1 1 auto;\n }\n\n .ag-body-viewport {\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-body-vertical-scroll-viewport {\n overflow-y: scroll;\n }\n\n .ag-virtual-list-viewport {\n overflow: auto;\n width: 100%;\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-body-vertical-scroll-container,\n .ag-full-width-container,\n .ag-floating-bottom-full-width-container,\n .ag-virtual-list-container,\n .ag-sticky-top-container {\n position: relative;\n }\n\n .ag-header-container,\n .ag-floating-top-container,\n .ag-floating-bottom-container,\n .ag-sticky-top-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-body-vertical-scroll-container {\n width: 100%;\n }\n\n .ag-full-width-container,\n .ag-floating-top-full-width-container,\n .ag-floating-bottom-full-width-container,\n .ag-sticky-top-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,\n .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 .ag-center-cols-clipper {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n min-height: 100%;\n transform: translate3d(0, 0, 0);\n }\n\n .ag-body {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n flex-direction: row !important;\n min-height: 0;\n }\n\n .ag-body-clipper {\n overflow: hidden;\n min-width: 0px;\n flex: 1 1 auto;\n height: 100%;\n transform: translate3d(0, 0, 0);\n }\n\n .ag-body-horizontal-scroll,\n .ag-body-vertical-scroll {\n min-height: 0;\n min-width: 0;\n display: flex;\n position: relative;\n }\n .ag-body-horizontal-scroll.ag-scrollbar-invisible,\n .ag-body-vertical-scroll.ag-scrollbar-invisible {\n position: absolute;\n bottom: 0;\n }\n .ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar,\n .ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar {\n opacity: 0;\n transition: opacity 400ms;\n visibility: hidden;\n }\n .ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-scrolling,\n .ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-active,\n .ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-scrolling,\n .ag-body-vertical-scroll.ag-scrollbar-invisible.ag-apple-scrollbar.ag-scrollbar-active {\n visibility: visible;\n opacity: 1;\n }\n\n .ag-body-horizontal-scroll {\n width: 100%;\n }\n .ag-body-horizontal-scroll.ag-scrollbar-invisible {\n left: 0;\n right: 0;\n }\n\n .ag-body-vertical-scroll {\n height: 100%;\n }\n .ag-body-vertical-scroll.ag-scrollbar-invisible {\n top: 0;\n z-index: 10;\n }\n .ag-ltr .ag-body-vertical-scroll.ag-scrollbar-invisible {\n right: 0;\n }\n .ag-rtl .ag-body-vertical-scroll.ag-scrollbar-invisible {\n left: 0;\n }\n\n .ag-force-vertical-scroll {\n overflow-y: scroll !important;\n }\n\n .ag-horizontal-left-spacer,\n .ag-horizontal-right-spacer {\n height: 100%;\n min-width: 0;\n overflow-x: scroll;\n }\n .ag-horizontal-left-spacer.ag-scroller-corner,\n .ag-horizontal-right-spacer.ag-scroller-corner {\n overflow-x: hidden;\n }\n\n .ag-header,\n .ag-pinned-left-header,\n .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: 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: inline-flex;\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 transition: opacity 0.2s;\n opacity: 0;\n }\n\n .ag-header-group-cell-label,\n .ag-header-cell-label {\n display: flex;\n flex: 1 1 auto;\n overflow: hidden;\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 }\n\n .ag-header-cell:not(.ag-header-cell-auto-height) .ag-header-cell-comp-wrapper {\n height: 100%;\n display: flex;\n align-items: center;\n }\n\n .ag-header-cell-comp-wrapper {\n width: 100%;\n overflow: hidden;\n }\n\n .ag-header-cell-wrap-text .ag-header-cell-comp-wrapper {\n white-space: normal;\n }\n\n .ag-right-aligned-header .ag-header-cell-label {\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: flex;\n }\n\n .ag-column-moving .ag-cell {\n transition: left 0.2s;\n }\n .ag-column-moving .ag-header-cell {\n transition: left 0.2s;\n }\n .ag-column-moving .ag-header-group-cell {\n transition:\n left 0.2s,\n width 0.2s;\n }\n\n .ag-column-panel {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n flex: 1 1 auto;\n }\n\n .ag-column-select {\n position: relative;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n flex: 3 1 0px;\n }\n\n .ag-column-select-header {\n position: relative;\n display: flex;\n flex: none;\n }\n\n .ag-column-select-header-icon {\n position: relative;\n }\n\n .ag-column-select-header-filter-wrapper {\n flex: 1 1 auto;\n }\n\n .ag-column-select-header-filter {\n width: 100%;\n }\n\n .ag-column-select-list {\n flex: 1 1 0px;\n overflow: hidden;\n }\n\n .ag-column-drop {\n position: relative;\n display: inline-flex;\n align-items: center;\n overflow: auto;\n width: 100%;\n }\n\n .ag-column-drop-list {\n display: flex;\n align-items: center;\n }\n\n .ag-column-drop-cell {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .ag-column-drop-cell-text {\n overflow: hidden;\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .ag-column-drop-vertical {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n align-items: stretch;\n flex: 1 1 0px;\n }\n\n .ag-column-drop-vertical-title-bar {\n display: flex;\n align-items: center;\n flex: none;\n }\n\n .ag-column-drop-vertical-list {\n position: relative;\n align-items: stretch;\n flex-grow: 1;\n flex-direction: column;\n overflow-x: auto;\n }\n .ag-column-drop-vertical-list > * {\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 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,\n .ag-filter-toolpanel-search {\n display: flex;\n align-items: center;\n }\n .ag-filter-toolpanel-header > *,\n .ag-filter-toolpanel-search > * {\n display: flex;\n align-items: center;\n }\n\n .ag-filter-apply-panel {\n display: flex;\n justify-content: flex-end;\n overflow: hidden;\n }\n\n .ag-row-animation .ag-row {\n transition:\n transform 0.4s,\n top 0.4s,\n background-color 0.1s,\n opacity 0.2s;\n }\n\n .ag-row-animation .ag-row.ag-after-created {\n transition:\n transform 0.4s,\n top 0.4s,\n height 0.4s,\n background-color 0.1s,\n opacity 0.2s;\n }\n\n .ag-row-no-animation .ag-row {\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: flex;\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: flex;\n align-items: center;\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 flex: 1 1 auto;\n }\n\n .ag-cell-value,\n .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: flex;\n align-items: center;\n }\n .ag-cell-wrapper.ag-row-group {\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 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 .ag-set-filter-item {\n display: flex;\n align-items: center;\n height: 100%;\n }\n\n .ag-set-filter-item-checkbox {\n display: flex;\n overflow: hidden;\n }\n\n .ag-set-filter-group-icons {\n display: block;\n }\n .ag-set-filter-group-icons > * {\n cursor: pointer;\n }\n\n .ag-filter-body-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n .ag-filter-filter {\n flex: 1 1 0px;\n }\n\n .ag-filter-condition {\n display: flex;\n justify-content: center;\n }\n\n .ag-floating-filter-body {\n position: relative;\n display: flex;\n flex: 1 1 auto;\n height: 100%;\n }\n\n .ag-floating-filter-full-body {\n display: flex;\n flex: 1 1 auto;\n height: 100%;\n width: 100%;\n align-items: center;\n overflow: hidden;\n }\n\n .ag-floating-filter-full-body > div {\n flex: 1 1 auto;\n }\n\n .ag-floating-filter-input {\n align-items: center;\n display: flex;\n width: 100%;\n }\n .ag-floating-filter-input > * {\n flex: 1 1 auto;\n }\n\n .ag-floating-filter-button {\n display: flex;\n flex: none;\n }\n\n .ag-dnd-ghost {\n position: absolute;\n display: inline-flex;\n align-items: center;\n cursor: move;\n white-space: nowrap;\n z-index: 9999;\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: flex;\n height: 100%;\n width: 100%;\n }\n\n .ag-overlay-wrapper {\n display: flex;\n flex: none;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n text-align: center;\n }\n\n .ag-overlay-loading-wrapper {\n pointer-events: all;\n }\n\n .ag-popup-child {\n z-index: 5;\n top: 0;\n }\n\n .ag-popup-editor {\n position: absolute;\n user-select: none;\n z-index: 1;\n }\n\n .ag-large-text-input {\n display: block;\n }\n\n .ag-virtual-list-item {\n position: absolute;\n width: 100%;\n }\n\n .ag-floating-top {\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n position: relative;\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: 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 .ag-sticky-top {\n position: absolute;\n display: flex;\n width: 100%;\n }\n\n .ag-pinned-left-sticky-top,\n .ag-pinned-right-sticky-top {\n position: relative;\n height: 100%;\n overflow: hidden;\n }\n\n .ag-sticky-top-full-width-container {\n overflow: hidden;\n width: 100%;\n height: 100%;\n }\n\n .ag-dialog,\n .ag-panel {\n display: flex;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n }\n\n .ag-panel-title-bar {\n display: flex;\n flex: none;\n align-items: center;\n cursor: default;\n }\n\n .ag-panel-title-bar-title {\n flex: 1 1 auto;\n }\n\n .ag-panel-title-bar-buttons {\n display: flex;\n }\n\n .ag-panel-title-bar-button {\n cursor: pointer;\n }\n\n .ag-panel-content-wrapper {\n display: flex;\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 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 .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 .ag-value-slide-out {\n margin-right: 5px;\n opacity: 1;\n transition:\n opacity 3s,\n margin-right 3s;\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 .ag-menu {\n max-height: 100%;\n overflow-y: auto;\n position: absolute;\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,\n .ag-menu-separator {\n display: table-row;\n }\n\n .ag-menu-option-part,\n .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: flex;\n flex-wrap: nowrap;\n }\n\n .ag-compact-menu-option-text {\n white-space: nowrap;\n flex: 1 1 auto;\n }\n\n .ag-rich-select {\n cursor: default;\n outline: none;\n }\n\n .ag-rich-select-value {\n display: flex;\n align-items: center;\n }\n\n .ag-rich-select-value-icon {\n flex: 1 1 auto;\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: flex;\n }\n\n .ag-rich-select-row {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n white-space: nowrap;\n }\n\n .ag-paging-panel {\n align-items: center;\n display: flex;\n justify-content: flex-end;\n }\n\n .ag-paging-page-summary-panel {\n display: flex;\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 .ag-tool-panel-wrapper {\n display: flex;\n overflow-y: auto;\n overflow-x: hidden;\n cursor: default;\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 align-items: center;\n display: flex;\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 flex: none;\n }\n\n .ag-column-select-checkbox {\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: flex;\n align-items: center;\n height: 100%;\n position: absolute;\n }\n\n .ag-cell-label-container {\n display: flex;\n justify-content: space-between;\n flex-direction: row-reverse;\n align-items: center;\n height: 100%;\n width: 100%;\n overflow: hidden;\n padding: 5px 0px;\n }\n\n .ag-right-aligned-header .ag-cell-label-container {\n flex-direction: row;\n }\n\n .ag-side-bar {\n display: flex;\n flex-direction: row-reverse;\n }\n\n .ag-side-bar-left {\n order: -1;\n flex-direction: row;\n }\n\n .ag-side-button-button {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: 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 writing-mode: vertical-lr;\n }\n\n .ag-status-bar {\n display: flex;\n justify-content: space-between;\n overflow: hidden;\n }\n\n .ag-status-panel {\n display: inline-flex;\n }\n\n .ag-status-name-value {\n white-space: nowrap;\n }\n\n .ag-status-bar-left {\n display: inline-flex;\n }\n\n .ag-status-bar-center {\n display: inline-flex;\n }\n\n .ag-status-bar-right {\n display: inline-flex;\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: flex;\n align-items: center;\n }\n\n .ag-group-title {\n display: block;\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: flex;\n align-items: center;\n }\n\n .ag-group-container {\n display: flex;\n }\n\n .ag-disabled .ag-group-container {\n pointer-events: none;\n }\n\n .ag-group-container-horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n }\n\n .ag-group-container-vertical {\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 align-items: stretch;\n }\n\n .ag-group-item-alignment-start .ag-group-item {\n align-items: flex-start;\n }\n\n .ag-group-item-alignment-end .ag-group-item {\n align-items: flex-end;\n }\n\n .ag-toggle-button-icon {\n transition: right 0.3s;\n position: absolute;\n top: -1px;\n }\n\n .ag-input-field,\n .ag-select {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n\n .ag-input-field-input {\n flex: 1 1 auto;\n }\n\n .ag-floating-filter-input .ag-input-field-input[type='date'] {\n width: 1px;\n }\n\n .ag-range-field {\n display: flex;\n align-items: center;\n }\n\n .ag-angle-select {\n display: flex;\n align-items: center;\n }\n\n .ag-angle-select-wrapper {\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: flex;\n }\n .ag-slider-wrapper .ag-input-field {\n flex: 1 1 auto;\n }\n\n .ag-picker-field-display {\n flex: 1 1 auto;\n }\n\n .ag-picker-field {\n display: flex;\n align-items: center;\n }\n\n .ag-picker-field-icon {\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 order: 1;\n }\n .ag-label-align-right > * {\n flex: none;\n }\n\n .ag-label-align-top {\n flex-direction: column;\n align-items: flex-start;\n }\n .ag-label-align-top > * {\n align-self: stretch;\n }\n\n .ag-label-ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n }\n\n .ag-color-panel {\n width: 100%;\n display: flex;\n flex-direction: column;\n text-align: center;\n }\n\n .ag-spectrum-color {\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: linear-gradient(\n to left,\n #ff0000 3%,\n #ffff00 17%,\n #00ff00 33%,\n #00ffff 50%,\n #0000ff 67%,\n #ff00ff 83%,\n #ff0000 100%\n );\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: 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: 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-set-filter-indent-1 {\n padding-left: 20px;\n }\n .ag-rtl .ag-set-filter-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-set-filter-indent-2 {\n padding-left: 40px;\n }\n .ag-rtl .ag-set-filter-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-set-filter-indent-3 {\n padding-left: 60px;\n }\n .ag-rtl .ag-set-filter-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-set-filter-indent-4 {\n padding-left: 80px;\n }\n .ag-rtl .ag-set-filter-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-set-filter-indent-5 {\n padding-left: 100px;\n }\n .ag-rtl .ag-set-filter-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-set-filter-indent-6 {\n padding-left: 120px;\n }\n .ag-rtl .ag-set-filter-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-set-filter-indent-7 {\n padding-left: 140px;\n }\n .ag-rtl .ag-set-filter-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-set-filter-indent-8 {\n padding-left: 160px;\n }\n .ag-rtl .ag-set-filter-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-set-filter-indent-9 {\n padding-left: 180px;\n }\n .ag-rtl .ag-set-filter-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 {\n direction: ltr;\n }\n .ag-ltr .ag-body,\n .ag-ltr .ag-floating-top,\n .ag-ltr .ag-floating-bottom,\n .ag-ltr .ag-header,\n .ag-ltr .ag-body-viewport,\n .ag-ltr .ag-body-horizontal-scroll {\n flex-direction: row;\n }\n\n .ag-rtl {\n direction: rtl;\n }\n .ag-rtl .ag-body,\n .ag-rtl .ag-floating-top,\n .ag-rtl .ag-floating-bottom,\n .ag-rtl .ag-header,\n .ag-rtl .ag-body-viewport,\n .ag-rtl .ag-body-horizontal-scroll {\n flex-direction: row-reverse;\n }\n .ag-rtl .ag-icon-contracted,\n .ag-rtl .ag-icon-expanded,\n .ag-rtl .ag-icon-tree-closed {\n display: block;\n transform: rotate(180deg);\n }\n\n .ag-body .ag-body-viewport {\n -webkit-overflow-scrolling: touch;\n }\n\n .ag-layout-print.ag-body {\n display: block;\n height: unset;\n }\n .ag-layout-print.ag-body-clipper {\n height: unset;\n }\n .ag-layout-print.ag-root-wrapper {\n display: inline-flex;\n }\n .ag-layout-print .ag-center-cols-clipper {\n min-width: 100%;\n }\n .ag-layout-print .ag-body-vertical-scroll {\n display: none;\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 display: table;\n }\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 .ag-root-wrapper.ag-layout-print .ag-cell {\n break-inside: avoid;\n }\n }\n [class^='ag-'],\n [class^='ag-']:focus,\n [class^='ag-']:after,\n [class^='ag-']:before {\n box-sizing: border-box;\n outline: none;\n }\n\n [class^='ag-']::-ms-clear {\n display: none;\n }\n\n .ag-checkbox .ag-input-wrapper,\n .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n }\n\n .ag-range-field .ag-input-wrapper {\n height: 100%;\n }\n\n .ag-toggle-button {\n flex: none;\n width: unset;\n min-width: unset;\n }\n\n .ag-ltr .ag-label-align-right .ag-label {\n margin-left: var(--ag-grid-size);\n }\n .ag-rtl .ag-label-align-right .ag-label {\n margin-right: var(--ag-grid-size);\n }\n\n input[class^='ag-'] {\n margin: 0;\n background-color: var(--ag-background-color);\n }\n\n textarea[class^='ag-'],\n select[class^='ag-'] {\n background-color: var(--ag-background-color);\n }\n\n input[class^='ag-']:not([type]),\n input[class^='ag-'][type='text'],\n input[class^='ag-'][type='number'],\n input[class^='ag-'][type='tel'],\n input[class^='ag-'][type='date'],\n input[class^='ag-'][type='datetime-local'],\n textarea[class^='ag-'] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border: var(--ag-borders-input) var(--ag-input-border-color);\n }\n input[class^='ag-']:not([type]):disabled,\n input[class^='ag-'][type='text']:disabled,\n input[class^='ag-'][type='number']:disabled,\n input[class^='ag-'][type='tel']:disabled,\n input[class^='ag-'][type='date']:disabled,\n input[class^='ag-'][type='datetime-local']:disabled,\n textarea[class^='ag-']:disabled {\n color: var(--ag-disabled-foreground-color);\n background-color: var(--ag-input-disabled-background-color);\n border-color: var(--ag-input-disabled-border-color);\n }\n input[class^='ag-']:not([type]):focus,\n input[class^='ag-'][type='text']:focus,\n input[class^='ag-'][type='number']:focus,\n input[class^='ag-'][type='tel']:focus,\n input[class^='ag-'][type='date']:focus,\n input[class^='ag-'][type='datetime-local']:focus,\n textarea[class^='ag-']:focus {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-input-focus-border-color);\n }\n input[class^='ag-']:not([type]):invalid,\n input[class^='ag-'][type='text']:invalid,\n input[class^='ag-'][type='number']:invalid,\n input[class^='ag-'][type='tel']:invalid,\n input[class^='ag-'][type='date']:invalid,\n input[class^='ag-'][type='datetime-local']:invalid,\n textarea[class^='ag-']:invalid {\n border: var(--ag-borders-input-invalid) var(--ag-input-border-color-invalid);\n }\n\n input[class^='ag-'][type='number'] {\n -moz-appearance: textfield;\n }\n input[class^='ag-'][type='number']::-webkit-outer-spin-button,\n input[class^='ag-'][type='number']::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n input[class^='ag-'][type='range'] {\n padding: 0;\n }\n\n input[class^='ag-'][type='button']:focus,\n button[class^='ag-']:focus {\n box-shadow: var(--ag-input-focus-box-shadow);\n }\n\n .ag-drag-handle {\n color: var(--ag-secondary-foreground-color);\n }\n\n .ag-list-item,\n .ag-virtual-list-item {\n height: var(--ag-list-item-height);\n }\n\n .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n }\n .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\n .ag-select-list {\n background-color: var(--ag-background-color);\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .ag-list-item {\n display: flex;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .ag-list-item.ag-active-item {\n background-color: var(--ag-row-hover-color);\n }\n\n .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 -ms-user-select: none;\n user-select: none;\n }\n .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .ag-select .ag-picker-field-wrapper {\n background-color: var(--ag-background-color);\n min-height: var(--ag-list-item-height);\n cursor: default;\n }\n .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n box-shadow: none;\n }\n .ag-select:not(.ag-cell-editor) {\n height: var(--ag-list-item-height);\n }\n .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .ag-select .ag-picker-field-icon {\n display: flex;\n align-items: center;\n }\n .ag-select.ag-disabled {\n opacity: 0.5;\n }\n\n .ag-rich-select {\n background-color: var(--ag-control-panel-background-color);\n }\n\n .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: calc(var(--ag-row-height) * 6.5);\n }\n\n .ag-rich-select-value {\n height: var(--ag-row-height);\n border-bottom: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n padding-top: 0;\n padding-bottom: 0;\n }\n .ag-ltr .ag-rich-select-value {\n padding-left: var(--ag-cell-horizontal-padding);\n }\n .ag-rtl .ag-rich-select-value {\n padding-right: var(--ag-cell-horizontal-padding);\n }\n .ag-ltr .ag-rich-select-value {\n padding-right: var(--ag-grid-size);\n }\n .ag-rtl .ag-rich-select-value {\n padding-left: var(--ag-grid-size);\n }\n\n .ag-rich-select-virtual-list-item {\n cursor: default;\n height: var(--ag-list-item-height);\n }\n .ag-keyboard-focus .ag-rich-select-virtual-list-item:focus::after {\n content: none;\n }\n .ag-rich-select-virtual-list-item:hover {\n background-color: var(--ag-row-hover-color);\n }\n\n .ag-ltr .ag-rich-select-row {\n padding-left: var(--ag-cell-horizontal-padding);\n }\n .ag-rtl .ag-rich-select-row {\n padding-right: var(--ag-cell-horizontal-padding);\n }\n\n .ag-rich-select-row-selected {\n background-color: var(--ag-selected-row-background-color);\n }\n\n .ag-row-drag,\n .ag-selection-checkbox,\n .ag-group-expanded,\n .ag-group-contracted {\n color: var(--ag-secondary-foreground-color);\n }\n .ag-ltr .ag-row-drag,\n .ag-ltr .ag-selection-checkbox,\n .ag-ltr .ag-group-expanded,\n .ag-ltr .ag-group-contracted {\n margin-right: var(--ag-cell-widget-spacing);\n }\n .ag-rtl .ag-row-drag,\n .ag-rtl .ag-selection-checkbox,\n .ag-rtl .ag-group-expanded,\n .ag-rtl .ag-group-contracted {\n margin-left: var(--ag-cell-widget-spacing);\n }\n\n .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n --ag-internal-calculated-line-height: var(\n --ag-line-height,\n calc(var(--ag-row-height) - var(--ag-row-border-width))\n );\n --ag-internal-padded-row-height: calc(var(--ag-row-height) - var(--ag-row-border-width));\n height: min(var(--ag-internal-calculated-line-height), var(--ag-internal-padded-row-height));\n display: flex;\n align-items: center;\n flex: none;\n }\n\n .ag-group-expanded,\n .ag-group-contracted {\n cursor: pointer;\n }\n\n .ag-group-title-bar-icon {\n cursor: pointer;\n flex: none;\n color: var(--ag-secondary-foreground-color);\n }\n\n .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n }\n .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n }\n\n .ag-group-title-bar {\n background-color: var(--ag-subheader-background-color);\n padding: var(--ag-grid-size);\n }\n\n .ag-group-toolbar {\n padding: var(--ag-grid-size);\n background-color: var(--ag-subheader-toolbar-background-color);\n }\n\n .ag-disabled-group-title-bar,\n .ag-disabled-group-container {\n opacity: 0.5;\n }\n\n .group-item {\n margin: calc(var(--ag-grid-size) * 0.5) 0;\n }\n\n .ag-label {\n white-space: nowrap;\n }\n .ag-ltr .ag-label {\n margin-right: var(--ag-grid-size);\n }\n .ag-rtl .ag-label {\n margin-left: var(--ag-grid-size);\n }\n\n .ag-label-align-top .ag-label {\n margin-bottom: calc(var(--ag-grid-size) * 0.5);\n }\n\n .ag-angle-select[disabled] {\n color: var(--ag-disabled-foreground-color);\n pointer-events: none;\n }\n .ag-angle-select[disabled] .ag-angle-select-field {\n opacity: 0.4;\n }\n\n .ag-ltr .ag-slider-field,\n .ag-ltr .ag-angle-select-field {\n margin-right: calc(var(--ag-grid-size) * 2);\n }\n .ag-rtl .ag-slider-field,\n .ag-rtl .ag-angle-select-field {\n margin-left: calc(var(--ag-grid-size) * 2);\n }\n\n .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: var(--ag-border-color);\n background-color: var(--ag-background-color);\n }\n\n .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: var(--ag-secondary-foreground-color);\n }\n\n .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: var(--ag-border-color);\n border-radius: 5px;\n }\n .ag-picker-field-wrapper:focus {\n box-shadow: var(--ag-input-focus-box-shadow);\n }\n\n .ag-picker-field-button {\n background-color: var(--ag-background-color);\n color: var(--ag-secondary-foreground-color);\n }\n\n .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n }\n\n .ag-color-picker .ag-picker-field-display {\n height: var(--ag-icon-size);\n }\n\n .ag-color-panel {\n padding: var(--ag-grid-size);\n }\n\n .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n }\n\n .ag-spectrum-tools {\n padding: 10px;\n }\n\n .ag-spectrum-sat {\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n }\n\n .ag-spectrum-val {\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n }\n\n .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n }\n\n .ag-spectrum-hue-background {\n border-radius: 2px;\n }\n\n .ag-spectrum-alpha-background {\n border-radius: 2px;\n }\n\n .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n }\n\n .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 box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n }\n\n .ag-recent-color {\n margin: 0 3px;\n }\n .ag-recent-color:first-child {\n margin-left: 0;\n }\n .ag-recent-color:last-child {\n margin-right: 0;\n }\n\n .ag-dnd-ghost {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n overflow: hidden;\n text-overflow: ellipsis;\n border: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n color: var(--ag-secondary-foreground-color);\n height: var(--ag-header-height) !important;\n line-height: var(--ag-header-height);\n margin: 0;\n padding: 0 calc(var(--ag-grid-size) * 2);\n transform: translateY(calc(var(--ag-grid-size) * 2));\n }\n\n .ag-dnd-ghost-icon {\n margin-right: var(--ag-grid-size);\n color: var(--ag-foreground-color);\n }\n\n .ag-popup-child:not(.ag-tooltip-custom) {\n box-shadow: var(--ag-popup-shadow);\n }\n\n .ag-dragging-range-handle .ag-dialog,\n .ag-dragging-fill-handle .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n }\n\n .ag-dialog {\n border-radius: var(--ag-border-radius);\n border: var(--ag-borders) var(--ag-border-color);\n }\n\n .ag-panel {\n background-color: var(--ag-background-color);\n }\n\n .ag-panel-title-bar {\n background-color: var(--ag-header-background-color);\n color: var(--ag-header-foreground-color);\n height: var(--ag-header-height);\n padding: var(--ag-grid-size) var(--ag-cell-horizontal-padding);\n border-bottom: var(--ag-borders) var(--ag-border-color);\n }\n\n .ag-ltr .ag-panel-title-bar-button {\n margin-left: var(--ag-grid-size);\n }\n .ag-rtl .ag-panel-title-bar-button {\n margin-right: var(--ag-grid-size);\n }\n\n .ag-tooltip {\n background-color: var(--ag-tooltip-background-color);\n color: var(--ag-foreground-color);\n padding: var(--ag-grid-size);\n border: var(--ag-borders) var(--ag-border-color);\n border-radius: var(--ag-card-radius);\n transition: opacity 1s;\n white-space: normal;\n }\n .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n }\n\n .ag-tooltip-custom {\n transition: opacity 1s;\n }\n .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n }\n\n .ag-ltr .ag-column-select-indent-1 {\n padding-left: calc(1 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-1 {\n padding-right: calc(1 * var(--ag-column-select-indent-size));\n }\n\n .ag-ltr .ag-column-select-indent-2 {\n padding-left: calc(2 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-2 {\n padding-right: calc(2 * var(--ag-column-select-indent-size));\n }\n\n .ag-ltr .ag-column-select-indent-3 {\n padding-left: calc(3 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-3 {\n padding-right: calc(3 * var(--ag-column-select-indent-size));\n }\n\n .ag-ltr .ag-column-select-indent-4 {\n padding-left: calc(4 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-4 {\n padding-right: calc(4 * var(--ag-column-select-indent-size));\n }\n\n .ag-ltr .ag-column-select-indent-5 {\n padding-left: calc(5 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-5 {\n padding-right: calc(5 * var(--ag-column-select-indent-size));\n }\n\n .ag-ltr .ag-column-select-indent-6 {\n padding-left: calc(6 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-6 {\n padding-right: calc(6 * var(--ag-column-select-indent-size));\n }\n\n .ag-ltr .ag-column-select-indent-7 {\n padding-left: calc(7 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-7 {\n padding-right: calc(7 * var(--ag-column-select-indent-size));\n }\n\n .ag-ltr .ag-column-select-indent-8 {\n padding-left: calc(8 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-8 {\n padding-right: calc(8 * var(--ag-column-select-indent-size));\n }\n\n .ag-ltr .ag-column-select-indent-9 {\n padding-left: calc(9 * var(--ag-column-select-indent-size));\n }\n .ag-rtl .ag-column-select-indent-9 {\n padding-right: calc(9 * var(--ag-column-select-indent-size));\n }\n\n .ag-column-select-header-icon {\n cursor: pointer;\n }\n\n .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n }\n .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\n .ag-ltr .ag-column-group-icons:not(:last-child),\n .ag-ltr .ag-column-select-header-icon:not(:last-child),\n .ag-ltr .ag-column-select-header-checkbox:not(:last-child),\n .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child),\n .ag-ltr .ag-column-select-checkbox:not(:last-child),\n .ag-ltr .ag-column-select-column-drag-handle:not(:last-child),\n .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child),\n .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: var(--ag-widget-horizontal-spacing);\n }\n .ag-rtl .ag-column-group-icons:not(:last-child),\n .ag-rtl .ag-column-select-header-icon:not(:last-child),\n .ag-rtl .ag-column-select-header-checkbox:not(:last-child),\n .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child),\n .ag-rtl .ag-column-select-checkbox:not(:last-child),\n .ag-rtl .ag-column-select-column-drag-handle:not(:last-child),\n .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child),\n .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: var(--ag-widget-horizontal-spacing);\n }\n\n .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n }\n .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\n .ag-column-select-column-group:not(:last-child),\n .ag-column-select-column:not(:last-child) {\n margin-bottom: var(--ag-widget-vertical-spacing);\n }\n\n .ag-column-select-column-readonly,\n .ag-column-select-column-group-readonly {\n color: var(--ag-disabled-foreground-color);\n pointer-events: none;\n }\n\n .ag-ltr .ag-column-select-add-group-indent {\n margin-left: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n }\n .ag-rtl .ag-column-select-add-group-indent {\n margin-right: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n }\n\n .ag-column-select-virtual-list-viewport {\n padding: calc(var(--ag-widget-container-vertical-padding) * 0.5) 0px;\n }\n\n .ag-column-select-virtual-list-item {\n padding: 0 var(--ag-widget-container-horizontal-padding);\n }\n\n .ag-rtl {\n text-align: right;\n }\n\n .ag-root-wrapper {\n border: var(--ag-borders) var(--ag-border-color);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 1);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 1);\n }\n\n .ag-ltr .ag-row-group-indent-1 {\n padding-left: calc(1 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-1 {\n padding-right: calc(1 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 2);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 2);\n }\n\n .ag-ltr .ag-row-group-indent-2 {\n padding-left: calc(2 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-2 {\n padding-right: calc(2 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 3);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 3);\n }\n\n .ag-ltr .ag-row-group-indent-3 {\n padding-left: calc(3 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-3 {\n padding-right: calc(3 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 4);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 4);\n }\n\n .ag-ltr .ag-row-group-indent-4 {\n padding-left: calc(4 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-4 {\n padding-right: calc(4 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 5);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 5);\n }\n\n .ag-ltr .ag-row-group-indent-5 {\n padding-left: calc(5 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-5 {\n padding-right: calc(5 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 6);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 6);\n }\n\n .ag-ltr .ag-row-group-indent-6 {\n padding-left: calc(6 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-6 {\n padding-right: calc(6 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 7);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 7);\n }\n\n .ag-ltr .ag-row-group-indent-7 {\n padding-left: calc(7 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-7 {\n padding-right: calc(7 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 8);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 8);\n }\n\n .ag-ltr .ag-row-group-indent-8 {\n padding-left: calc(8 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-8 {\n padding-right: calc(8 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 9);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 9);\n }\n\n .ag-ltr .ag-row-group-indent-9 {\n padding-left: calc(9 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-9 {\n padding-right: calc(9 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 10);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 10);\n }\n\n .ag-ltr .ag-row-group-indent-10 {\n padding-left: calc(10 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-10 {\n padding-right: calc(10 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 11);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 11);\n }\n\n .ag-ltr .ag-row-group-indent-11 {\n padding-left: calc(11 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-11 {\n padding-right: calc(11 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 12);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 12);\n }\n\n .ag-ltr .ag-row-group-indent-12 {\n padding-left: calc(12 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-12 {\n padding-right: calc(12 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 13);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 13);\n }\n\n .ag-ltr .ag-row-group-indent-13 {\n padding-left: calc(13 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-13 {\n padding-right: calc(13 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 14);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 14);\n }\n\n .ag-ltr .ag-row-group-indent-14 {\n padding-left: calc(14 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-14 {\n padding-right: calc(14 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 15);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 15);\n }\n\n .ag-ltr .ag-row-group-indent-15 {\n padding-left: calc(15 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-15 {\n padding-right: calc(15 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 16);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 16);\n }\n\n .ag-ltr .ag-row-group-indent-16 {\n padding-left: calc(16 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-16 {\n padding-right: calc(16 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 17);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 17);\n }\n\n .ag-ltr .ag-row-group-indent-17 {\n padding-left: calc(17 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-17 {\n padding-right: calc(17 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 18);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 18);\n }\n\n .ag-ltr .ag-row-group-indent-18 {\n padding-left: calc(18 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-18 {\n padding-right: calc(18 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 19);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 19);\n }\n\n .ag-ltr .ag-row-group-indent-19 {\n padding-left: calc(19 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-19 {\n padding-right: calc(19 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 20);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 20);\n }\n\n .ag-ltr .ag-row-group-indent-20 {\n padding-left: calc(20 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-20 {\n padding-right: calc(20 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 21);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 21);\n }\n\n .ag-ltr .ag-row-group-indent-21 {\n padding-left: calc(21 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-21 {\n padding-right: calc(21 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 22);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 22);\n }\n\n .ag-ltr .ag-row-group-indent-22 {\n padding-left: calc(22 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-22 {\n padding-right: calc(22 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 23);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 23);\n }\n\n .ag-ltr .ag-row-group-indent-23 {\n padding-left: calc(23 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-23 {\n padding-right: calc(23 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 24);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 24);\n }\n\n .ag-ltr .ag-row-group-indent-24 {\n padding-left: calc(24 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-24 {\n padding-right: calc(24 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 25);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 25);\n }\n\n .ag-ltr .ag-row-group-indent-25 {\n padding-left: calc(25 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-25 {\n padding-right: calc(25 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 26);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 26);\n }\n\n .ag-ltr .ag-row-group-indent-26 {\n padding-left: calc(26 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-26 {\n padding-right: calc(26 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 27);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 27);\n }\n\n .ag-ltr .ag-row-group-indent-27 {\n padding-left: calc(27 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-27 {\n padding-right: calc(27 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 28);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 28);\n }\n\n .ag-ltr .ag-row-group-indent-28 {\n padding-left: calc(28 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-28 {\n padding-right: calc(28 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 29);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 29);\n }\n\n .ag-ltr .ag-row-group-indent-29 {\n padding-left: calc(29 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-29 {\n padding-right: calc(29 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 30);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 30);\n }\n\n .ag-ltr .ag-row-group-indent-30 {\n padding-left: calc(30 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-30 {\n padding-right: calc(30 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 31);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 31);\n }\n\n .ag-ltr .ag-row-group-indent-31 {\n padding-left: calc(31 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-31 {\n padding-right: calc(31 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 32);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 32);\n }\n\n .ag-ltr .ag-row-group-indent-32 {\n padding-left: calc(32 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-32 {\n padding-right: calc(32 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 33);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 33);\n }\n\n .ag-ltr .ag-row-group-indent-33 {\n padding-left: calc(33 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-33 {\n padding-right: calc(33 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 34);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 34);\n }\n\n .ag-ltr .ag-row-group-indent-34 {\n padding-left: calc(34 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-34 {\n padding-right: calc(34 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 35);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 35);\n }\n\n .ag-ltr .ag-row-group-indent-35 {\n padding-left: calc(35 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-35 {\n padding-right: calc(35 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 36);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 36);\n }\n\n .ag-ltr .ag-row-group-indent-36 {\n padding-left: calc(36 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-36 {\n padding-right: calc(36 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 37);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 37);\n }\n\n .ag-ltr .ag-row-group-indent-37 {\n padding-left: calc(37 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-37 {\n padding-right: calc(37 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 38);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 38);\n }\n\n .ag-ltr .ag-row-group-indent-38 {\n padding-left: calc(38 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-38 {\n padding-right: calc(38 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 39);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 39);\n }\n\n .ag-ltr .ag-row-group-indent-39 {\n padding-left: calc(39 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-39 {\n padding-right: calc(39 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 40);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 40);\n }\n\n .ag-ltr .ag-row-group-indent-40 {\n padding-left: calc(40 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-40 {\n padding-right: calc(40 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 41);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 41);\n }\n\n .ag-ltr .ag-row-group-indent-41 {\n padding-left: calc(41 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-41 {\n padding-right: calc(41 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 42);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 42);\n }\n\n .ag-ltr .ag-row-group-indent-42 {\n padding-left: calc(42 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-42 {\n padding-right: calc(42 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 43);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 43);\n }\n\n .ag-ltr .ag-row-group-indent-43 {\n padding-left: calc(43 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-43 {\n padding-right: calc(43 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 44);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 44);\n }\n\n .ag-ltr .ag-row-group-indent-44 {\n padding-left: calc(44 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-44 {\n padding-right: calc(44 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 45);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 45);\n }\n\n .ag-ltr .ag-row-group-indent-45 {\n padding-left: calc(45 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-45 {\n padding-right: calc(45 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 46);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 46);\n }\n\n .ag-ltr .ag-row-group-indent-46 {\n padding-left: calc(46 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-46 {\n padding-right: calc(46 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 47);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 47);\n }\n\n .ag-ltr .ag-row-group-indent-47 {\n padding-left: calc(47 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-47 {\n padding-right: calc(47 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 48);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 48);\n }\n\n .ag-ltr .ag-row-group-indent-48 {\n padding-left: calc(48 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-48 {\n padding-right: calc(48 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 49);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 49);\n }\n\n .ag-ltr .ag-row-group-indent-49 {\n padding-left: calc(49 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-49 {\n padding-right: calc(49 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 50);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 50);\n }\n\n .ag-ltr .ag-row-group-indent-50 {\n padding-left: calc(50 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-50 {\n padding-right: calc(50 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 51);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 51);\n }\n\n .ag-ltr .ag-row-group-indent-51 {\n padding-left: calc(51 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-51 {\n padding-right: calc(51 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 52);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 52);\n }\n\n .ag-ltr .ag-row-group-indent-52 {\n padding-left: calc(52 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-52 {\n padding-right: calc(52 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 53);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 53);\n }\n\n .ag-ltr .ag-row-group-indent-53 {\n padding-left: calc(53 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-53 {\n padding-right: calc(53 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 54);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 54);\n }\n\n .ag-ltr .ag-row-group-indent-54 {\n padding-left: calc(54 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-54 {\n padding-right: calc(54 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 55);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 55);\n }\n\n .ag-ltr .ag-row-group-indent-55 {\n padding-left: calc(55 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-55 {\n padding-right: calc(55 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 56);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 56);\n }\n\n .ag-ltr .ag-row-group-indent-56 {\n padding-left: calc(56 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-56 {\n padding-right: calc(56 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 57);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 57);\n }\n\n .ag-ltr .ag-row-group-indent-57 {\n padding-left: calc(57 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-57 {\n padding-right: calc(57 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 58);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 58);\n }\n\n .ag-ltr .ag-row-group-indent-58 {\n padding-left: calc(58 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-58 {\n padding-right: calc(58 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 59);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 59);\n }\n\n .ag-ltr .ag-row-group-indent-59 {\n padding-left: calc(59 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-59 {\n padding-right: calc(59 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 60);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 60);\n }\n\n .ag-ltr .ag-row-group-indent-60 {\n padding-left: calc(60 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-60 {\n padding-right: calc(60 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 61);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 61);\n }\n\n .ag-ltr .ag-row-group-indent-61 {\n padding-left: calc(61 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-61 {\n padding-right: calc(61 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 62);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 62);\n }\n\n .ag-ltr .ag-row-group-indent-62 {\n padding-left: calc(62 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-62 {\n padding-right: calc(62 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 63);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 63);\n }\n\n .ag-ltr .ag-row-group-indent-63 {\n padding-left: calc(63 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-63 {\n padding-right: calc(63 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 64);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 64);\n }\n\n .ag-ltr .ag-row-group-indent-64 {\n padding-left: calc(64 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-64 {\n padding-right: calc(64 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 65);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 65);\n }\n\n .ag-ltr .ag-row-group-indent-65 {\n padding-left: calc(65 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-65 {\n padding-right: calc(65 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 66);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 66);\n }\n\n .ag-ltr .ag-row-group-indent-66 {\n padding-left: calc(66 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-66 {\n padding-right: calc(66 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 67);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 67);\n }\n\n .ag-ltr .ag-row-group-indent-67 {\n padding-left: calc(67 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-67 {\n padding-right: calc(67 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 68);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 68);\n }\n\n .ag-ltr .ag-row-group-indent-68 {\n padding-left: calc(68 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-68 {\n padding-right: calc(68 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 69);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 69);\n }\n\n .ag-ltr .ag-row-group-indent-69 {\n padding-left: calc(69 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-69 {\n padding-right: calc(69 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 70);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 70);\n }\n\n .ag-ltr .ag-row-group-indent-70 {\n padding-left: calc(70 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-70 {\n padding-right: calc(70 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 71);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 71);\n }\n\n .ag-ltr .ag-row-group-indent-71 {\n padding-left: calc(71 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-71 {\n padding-right: calc(71 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 72);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 72);\n }\n\n .ag-ltr .ag-row-group-indent-72 {\n padding-left: calc(72 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-72 {\n padding-right: calc(72 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 73);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 73);\n }\n\n .ag-ltr .ag-row-group-indent-73 {\n padding-left: calc(73 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-73 {\n padding-right: calc(73 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 74);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 74);\n }\n\n .ag-ltr .ag-row-group-indent-74 {\n padding-left: calc(74 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-74 {\n padding-right: calc(74 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 75);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 75);\n }\n\n .ag-ltr .ag-row-group-indent-75 {\n padding-left: calc(75 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-75 {\n padding-right: calc(75 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 76);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 76);\n }\n\n .ag-ltr .ag-row-group-indent-76 {\n padding-left: calc(76 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-76 {\n padding-right: calc(76 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 77);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 77);\n }\n\n .ag-ltr .ag-row-group-indent-77 {\n padding-left: calc(77 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-77 {\n padding-right: calc(77 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 78);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 78);\n }\n\n .ag-ltr .ag-row-group-indent-78 {\n padding-left: calc(78 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-78 {\n padding-right: calc(78 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 79);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 79);\n }\n\n .ag-ltr .ag-row-group-indent-79 {\n padding-left: calc(79 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-79 {\n padding-right: calc(79 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 80);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 80);\n }\n\n .ag-ltr .ag-row-group-indent-80 {\n padding-left: calc(80 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-80 {\n padding-right: calc(80 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 81);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 81);\n }\n\n .ag-ltr .ag-row-group-indent-81 {\n padding-left: calc(81 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-81 {\n padding-right: calc(81 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 82);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 82);\n }\n\n .ag-ltr .ag-row-group-indent-82 {\n padding-left: calc(82 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-82 {\n padding-right: calc(82 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 83);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 83);\n }\n\n .ag-ltr .ag-row-group-indent-83 {\n padding-left: calc(83 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-83 {\n padding-right: calc(83 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 84);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 84);\n }\n\n .ag-ltr .ag-row-group-indent-84 {\n padding-left: calc(84 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-84 {\n padding-right: calc(84 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 85);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 85);\n }\n\n .ag-ltr .ag-row-group-indent-85 {\n padding-left: calc(85 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-85 {\n padding-right: calc(85 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 86);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 86);\n }\n\n .ag-ltr .ag-row-group-indent-86 {\n padding-left: calc(86 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-86 {\n padding-right: calc(86 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 87);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 87);\n }\n\n .ag-ltr .ag-row-group-indent-87 {\n padding-left: calc(87 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-87 {\n padding-right: calc(87 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 88);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 88);\n }\n\n .ag-ltr .ag-row-group-indent-88 {\n padding-left: calc(88 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-88 {\n padding-right: calc(88 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 89);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 89);\n }\n\n .ag-ltr .ag-row-group-indent-89 {\n padding-left: calc(89 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-89 {\n padding-right: calc(89 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 90);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 90);\n }\n\n .ag-ltr .ag-row-group-indent-90 {\n padding-left: calc(90 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-90 {\n padding-right: calc(90 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 91);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 91);\n }\n\n .ag-ltr .ag-row-group-indent-91 {\n padding-left: calc(91 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-91 {\n padding-right: calc(91 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 92);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 92);\n }\n\n .ag-ltr .ag-row-group-indent-92 {\n padding-left: calc(92 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-92 {\n padding-right: calc(92 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 93);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 93);\n }\n\n .ag-ltr .ag-row-group-indent-93 {\n padding-left: calc(93 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-93 {\n padding-right: calc(93 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 94);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 94);\n }\n\n .ag-ltr .ag-row-group-indent-94 {\n padding-left: calc(94 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-94 {\n padding-right: calc(94 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 95);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 95);\n }\n\n .ag-ltr .ag-row-group-indent-95 {\n padding-left: calc(95 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-95 {\n padding-right: calc(95 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 96);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 96);\n }\n\n .ag-ltr .ag-row-group-indent-96 {\n padding-left: calc(96 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-96 {\n padding-right: calc(96 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 97);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 97);\n }\n\n .ag-ltr .ag-row-group-indent-97 {\n padding-left: calc(97 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-97 {\n padding-right: calc(97 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 98);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 98);\n }\n\n .ag-ltr .ag-row-group-indent-98 {\n padding-left: calc(98 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-98 {\n padding-right: calc(98 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 99);\n }\n .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size) * 99);\n }\n\n .ag-ltr .ag-row-group-indent-99 {\n padding-left: calc(99 * var(--ag-row-group-indent-size));\n }\n .ag-rtl .ag-row-group-indent-99 {\n padding-right: calc(99 * var(--ag-row-group-indent-size));\n }\n\n .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-ltr .ag-row-group-leaf-indent {\n margin-left: var(--ag-row-group-indent-size);\n }\n .ag-rtl .ag-row-group-leaf-indent {\n margin-right: var(--ag-row-group-indent-size);\n }\n\n .ag-value-change-delta {\n padding-right: 2px;\n }\n\n .ag-value-change-delta-up {\n color: var(--ag-value-change-delta-up-color);\n }\n\n .ag-value-change-delta-down {\n color: var(--ag-value-change-delta-down-color);\n }\n\n .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n transition: background-color 1s;\n }\n\n .ag-value-change-value-highlight {\n background-color: var(--ag-value-change-value-highlight-background-color);\n transition: background-color 0.1s;\n }\n\n .ag-cell-data-changed {\n background-color: var(--ag-value-change-value-highlight-background-color) !important;\n }\n\n .ag-cell-data-changed-animation {\n background-color: transparent;\n }\n\n .ag-cell-highlight {\n background-color: var(--ag-range-selection-highlight-color) !important;\n }\n\n .ag-row {\n height: var(--ag-row-height);\n background-color: var(--ag-background-color);\n color: var(--ag-data-color);\n border-bottom: var(--ag-row-border-style) var(--ag-row-border-color) var(--ag-row-border-width);\n }\n\n .ag-row-highlight-above::after,\n .ag-row-highlight-below::after {\n content: '';\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: var(--ag-range-selection-border-color);\n left: 1px;\n }\n\n .ag-row-highlight-above::after {\n top: -1px;\n }\n\n .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n }\n\n .ag-row-highlight-below::after {\n bottom: 0px;\n }\n\n .ag-row-odd {\n background-color: var(--ag-odd-row-background-color);\n }\n\n .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible)\n .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: var(--ag-borders-critical) var(--ag-border-color);\n }\n .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible)\n .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-row-selected::before {\n content: '';\n background-color: var(--ag-selected-row-background-color);\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n\n .ag-row-hover:not(.ag-full-width-row)::before,\n .ag-row-hover.ag-full-width-row.ag-row-group::before {\n content: '';\n background-color: var(--ag-row-hover-color);\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n .ag-row-hover.ag-full-width-row.ag-row-group > * {\n position: relative;\n }\n\n .ag-row-hover.ag-row-selected::before {\n background-color: var(--ag-row-hover-color);\n background-image: linear-gradient(\n var(--ag-selected-row-background-color),\n var(--ag-selected-row-background-color)\n );\n }\n\n .ag-column-hover {\n background-color: var(--ag-column-hover-color);\n }\n\n .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n }\n .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n }\n\n .ag-ltr .ag-right-aligned-cell .ag-cell-value,\n .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n }\n .ag-rtl .ag-right-aligned-cell .ag-cell-value,\n .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n }\n\n .ag-cell,\n .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n --ag-internal-calculated-line-height: var(\n --ag-line-height,\n calc(var(--ag-row-height) - var(--ag-row-border-width))\n );\n --ag-internal-padded-row-height: calc(var(--ag-row-height) - var(--ag-row-border-width));\n border: 1px solid transparent;\n line-height: min(\n var(--ag-internal-calculated-line-height),\n var(--ag-internal-padded-row-height)\n );\n padding-left: calc(var(--ag-cell-horizontal-padding) - 1px);\n padding-right: calc(var(--ag-cell-horizontal-padding) - 1px);\n -webkit-font-smoothing: subpixel-antialiased;\n }\n\n .ag-row > .ag-cell-wrapper {\n padding-left: calc(var(--ag-cell-horizontal-padding) - 1px);\n padding-right: calc(var(--ag-cell-horizontal-padding) - 1px);\n }\n\n .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n }\n\n .ag-cell-inline-editing {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n padding: 0;\n height: var(--ag-row-height);\n background-color: var(--ag-control-panel-background-color);\n }\n\n .ag-popup-editor {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n background-color: var(--ag-control-panel-background-color);\n padding: 0;\n }\n\n .ag-large-text-input {\n height: auto;\n padding: var(--ag-cell-horizontal-padding);\n }\n\n .ag-rtl .ag-large-text-input textarea {\n resize: none;\n }\n\n .ag-details-row {\n padding: calc(var(--ag-grid-size) * 5);\n background-color: var(--ag-background-color);\n }\n\n .ag-layout-auto-height .ag-center-cols-clipper,\n .ag-layout-auto-height .ag-center-cols-container,\n .ag-layout-print .ag-center-cols-clipper,\n .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n }\n\n .ag-overlay-loading-wrapper {\n background-color: var(--ag-modal-overlay-background-color);\n }\n\n .ag-overlay-loading-center {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n }\n\n .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n }\n\n .ag-loading {\n display: flex;\n height: 100%;\n align-items: center;\n }\n .ag-ltr .ag-loading {\n padding-left: var(--ag-cell-horizontal-padding);\n }\n .ag-rtl .ag-loading {\n padding-right: var(--ag-cell-horizontal-padding);\n }\n\n .ag-ltr .ag-loading-icon {\n padding-right: var(--ag-cell-widget-spacing);\n }\n .ag-rtl .ag-loading-icon {\n padding-left: var(--ag-cell-widget-spacing);\n }\n\n .ag-icon-loading {\n animation-name: spin;\n animation-duration: 1000ms;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n }\n\n @keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n }\n .ag-floating-top {\n border-bottom: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-floating-bottom {\n border-top: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-ltr .ag-cell {\n border-right: var(--ag-cell-horizontal-border);\n }\n .ag-rtl .ag-cell {\n border-left: var(--ag-cell-horizontal-border);\n }\n .ag-ltr .ag-cell {\n border-right-width: 1px;\n }\n .ag-rtl .ag-cell {\n border-left-width: 1px;\n }\n\n .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-cell-range-selected:not(.ag-cell-focus),\n .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: var(--ag-range-selection-background-color);\n }\n .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n .ag-body-viewport:not(.ag-has-focus)\n .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: var(--ag-range-selection-chart-background-color) !important;\n }\n .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n .ag-body-viewport:not(.ag-has-focus)\n .ag-cell-range-single-cell:not(\n .ag-cell-inline-editing\n ).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: var(--ag-range-selection-chart-category-background-color) !important;\n }\n\n .ag-cell-range-selected-1:not(.ag-cell-focus),\n .ag-root:not(.ag-context-menu-open)\n .ag-body-viewport:not(.ag-has-focus)\n .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: var(--ag-range-selection-background-color);\n }\n\n .ag-cell-range-selected-2:not(.ag-cell-focus),\n .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: var(--ag-range-selection-background-color-2);\n }\n\n .ag-cell-range-selected-3:not(.ag-cell-focus),\n .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: var(--ag-range-selection-background-color-3);\n }\n\n .ag-cell-range-selected-4:not(.ag-cell-focus),\n .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: var(--ag-range-selection-background-color-4);\n }\n\n .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: var(--ag-range-selection-border-color);\n border-top-style: var(--ag-range-selection-border-style);\n }\n .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: var(--ag-range-selection-border-color);\n border-right-style: var(--ag-range-selection-border-style);\n }\n .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: var(--ag-range-selection-border-color);\n border-bottom-style: var(--ag-range-selection-border-style);\n }\n .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: var(--ag-range-selection-border-color);\n border-left-style: var(--ag-range-selection-border-style);\n }\n\n .ag-ltr .ag-cell-focus:not(.ag-cell-range-selected):focus-within,\n .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n .ag-ltr .ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group,\n .ag-ltr .ag-cell-range-single-cell,\n .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle,\n .ag-rtl .ag-cell-focus:not(.ag-cell-range-selected):focus-within,\n .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n .ag-rtl .ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group,\n .ag-rtl .ag-cell-range-single-cell,\n .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: var(--ag-range-selection-border-color);\n border-style: var(--ag-range-selection-border-style);\n outline: initial;\n }\n\n .ag-cell.ag-selection-fill-top,\n .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: var(--ag-range-selection-border-color);\n }\n\n .ag-ltr .ag-cell.ag-selection-fill-right,\n .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed var(--ag-range-selection-border-color) !important;\n }\n .ag-rtl .ag-cell.ag-selection-fill-right,\n .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed var(--ag-range-selection-border-color) !important;\n }\n\n .ag-cell.ag-selection-fill-bottom,\n .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: var(--ag-range-selection-border-color);\n }\n\n .ag-ltr .ag-cell.ag-selection-fill-left,\n .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed var(--ag-range-selection-border-color) !important;\n }\n .ag-rtl .ag-cell.ag-selection-fill-left,\n .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed var(--ag-range-selection-border-color) !important;\n }\n\n .ag-fill-handle,\n .ag-range-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: var(--ag-range-selection-border-color);\n }\n .ag-ltr .ag-fill-handle,\n .ag-ltr .ag-range-handle {\n right: -1px;\n }\n .ag-rtl .ag-fill-handle,\n .ag-rtl .ag-range-handle {\n left: -1px;\n }\n\n .ag-fill-handle {\n cursor: cell;\n }\n\n .ag-range-handle {\n cursor: nwse-resize;\n }\n\n .ag-cell-inline-editing {\n border-color: var(--ag-input-focus-border-color) !important;\n }\n\n .ag-menu {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n padding: 0;\n }\n\n .ag-menu-list {\n cursor: default;\n padding: var(--ag-grid-size) 0;\n }\n\n .ag-menu-separator {\n height: calc(var(--ag-grid-size) * 2 + 1px);\n }\n\n .ag-menu-separator-part::after {\n content: '';\n display: block;\n border-top: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-menu-option-active,\n .ag-compact-menu-option-active {\n background-color: var(--ag-row-hover-color);\n }\n\n .ag-menu-option-part,\n .ag-compact-menu-option-part {\n line-height: var(--ag-icon-size);\n padding: calc(var(--ag-grid-size) + 2px) 0;\n }\n\n .ag-menu-option-disabled,\n .ag-compact-menu-option-disabled {\n opacity: 0.5;\n }\n\n .ag-menu-option-icon,\n .ag-compact-menu-option-icon {\n width: var(--ag-icon-size);\n }\n .ag-ltr .ag-menu-option-icon,\n .ag-ltr .ag-compact-menu-option-icon {\n padding-left: calc(var(--ag-grid-size) * 2);\n }\n .ag-rtl .ag-menu-option-icon,\n .ag-rtl .ag-compact-menu-option-icon {\n padding-right: calc(var(--ag-grid-size) * 2);\n }\n\n .ag-menu-option-text,\n .ag-compact-menu-option-text {\n padding-left: calc(var(--ag-grid-size) * 2);\n padding-right: calc(var(--ag-grid-size) * 2);\n }\n\n .ag-ltr .ag-menu-option-shortcut,\n .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: var(--ag-grid-size);\n }\n .ag-rtl .ag-menu-option-shortcut,\n .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: var(--ag-grid-size);\n }\n\n .ag-menu-option-popup-pointer,\n .ag-compact-menu-option-popup-pointer {\n padding-right: var(--ag-grid-size);\n }\n\n .ag-tabs {\n min-width: var(--ag-tab-min-width);\n }\n\n .ag-tabs-header {\n width: 100%;\n display: flex;\n }\n\n .ag-tab {\n border-bottom: var(--ag-selected-tab-underline-width) solid transparent;\n transition: border-bottom var(--ag-selected-tab-underline-transition-speed);\n display: flex;\n flex: none;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n\n .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n }\n .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\n .ag-tab-selected {\n border-bottom-color: var(--ag-selected-tab-underline-color);\n }\n\n .ag-menu-header {\n color: var(--ag-secondary-foreground-color);\n }\n\n .ag-filter-separator {\n border-top: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: calc(\n var(--ag-menu-min-width) - 2 * var(--ag-widget-container-horizontal-padding) - 2px\n );\n }\n\n .ag-tabs .ag-filter-select {\n min-width: calc(\n var(--ag-tab-min-width) - 2 * var(--ag-widget-container-horizontal-padding) - 2px\n );\n }\n\n .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n }\n\n .ag-filter-condition-operator {\n height: 17px;\n }\n\n .ag-ltr .ag-filter-condition-operator-or {\n margin-left: calc(var(--ag-grid-size) * 2);\n }\n .ag-rtl .ag-filter-condition-operator-or {\n margin-right: calc(var(--ag-grid-size) * 2);\n }\n\n .ag-set-filter-select-all {\n padding-top: var(--ag-widget-container-vertical-padding);\n }\n\n .ag-set-filter-list,\n .ag-filter-no-matches {\n height: calc(var(--ag-list-item-height) * 6);\n }\n\n .ag-set-filter-tree-list {\n height: calc(var(--ag-list-item-height) * 10);\n }\n\n .ag-set-filter-filter {\n margin-top: var(--ag-widget-container-vertical-padding);\n margin-left: var(--ag-widget-container-horizontal-padding);\n margin-right: var(--ag-widget-container-horizontal-padding);\n }\n\n .ag-filter-to {\n margin-top: var(--ag-widget-vertical-spacing);\n }\n\n .ag-mini-filter {\n margin: var(--ag-widget-container-vertical-padding)\n var(--ag-widget-container-horizontal-padding);\n }\n\n .ag-set-filter-item {\n margin: 0px var(--ag-widget-container-horizontal-padding);\n }\n\n .ag-ltr .ag-set-filter-add-group-indent {\n margin-left: calc(\n var(--ag-widget-container-horizontal-padding) + var(--ag-icon-size) + var(--ag-grid-size) * 2\n );\n }\n .ag-rtl .ag-set-filter-add-group-indent {\n margin-right: calc(\n var(--ag-widget-container-horizontal-padding) + var(--ag-icon-size) + var(--ag-grid-size) * 2\n );\n }\n\n .ag-ltr .ag-set-filter-indent-1 {\n padding-left: calc(1 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-1 {\n padding-right: calc(1 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-indent-2 {\n padding-left: calc(2 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-2 {\n padding-right: calc(2 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-indent-3 {\n padding-left: calc(3 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-3 {\n padding-right: calc(3 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-indent-4 {\n padding-left: calc(4 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-4 {\n padding-right: calc(4 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-indent-5 {\n padding-left: calc(5 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-5 {\n padding-right: calc(5 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-indent-6 {\n padding-left: calc(6 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-6 {\n padding-right: calc(6 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-indent-7 {\n padding-left: calc(7 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-7 {\n padding-right: calc(7 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-indent-8 {\n padding-left: calc(8 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-8 {\n padding-right: calc(8 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-indent-9 {\n padding-left: calc(9 * var(--ag-set-filter-indent-size));\n }\n .ag-rtl .ag-set-filter-indent-9 {\n padding-right: calc(9 * var(--ag-set-filter-indent-size));\n }\n\n .ag-ltr .ag-set-filter-group-icons {\n margin-right: var(--ag-widget-container-horizontal-padding);\n }\n .ag-rtl .ag-set-filter-group-icons {\n margin-left: var(--ag-widget-container-horizontal-padding);\n }\n\n .ag-filter-apply-panel {\n padding: var(--ag-widget-container-vertical-padding)\n var(--ag-widget-container-horizontal-padding);\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n }\n\n .ag-filter-apply-panel-button {\n line-height: 1.5;\n }\n .ag-ltr .ag-filter-apply-panel-button {\n margin-left: calc(var(--ag-grid-size) * 2);\n }\n .ag-rtl .ag-filter-apply-panel-button {\n margin-right: calc(var(--ag-grid-size) * 2);\n }\n\n .ag-simple-filter-body-wrapper {\n padding: var(--ag-widget-container-vertical-padding)\n var(--ag-widget-container-horizontal-padding);\n padding-bottom: calc(\n var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing)\n );\n }\n .ag-simple-filter-body-wrapper > * {\n margin-bottom: var(--ag-widget-vertical-spacing);\n }\n\n .ag-filter-no-matches {\n padding: var(--ag-widget-container-vertical-padding)\n var(--ag-widget-container-horizontal-padding);\n }\n\n .ag-multi-filter-menu-item {\n margin: var(--ag-grid-size) 0;\n }\n\n .ag-multi-filter-group-title-bar {\n padding: calc(var(--ag-grid-size) * 2) var(--ag-grid-size);\n background-color: transparent;\n }\n\n .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n }\n .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\n .ag-side-bar {\n position: relative;\n }\n\n .ag-tool-panel-wrapper {\n width: var(--ag-side-bar-panel-width);\n background-color: var(--ag-control-panel-background-color);\n }\n\n .ag-side-buttons {\n padding-top: calc(var(--ag-grid-size) * 4);\n width: calc(var(--ag-icon-size) + 4px);\n position: relative;\n color: var(--ag-foreground-color);\n overflow: hidden;\n }\n\n 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: calc(var(--ag-grid-size) * 2) 0 calc(var(--ag-grid-size) * 2) 0;\n width: 100%;\n margin: 0;\n min-height: calc(var(--ag-grid-size) * 18);\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n border-top: var(--ag-borders-side-button) var(--ag-border-color);\n border-bottom: var(--ag-borders-side-button) var(--ag-border-color);\n }\n button.ag-side-button-button:focus {\n box-shadow: none;\n }\n\n .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n }\n .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\n .ag-selected button.ag-side-button-button {\n background-color: var(--ag-side-button-selected-background-color);\n }\n\n .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n }\n\n .ag-ltr .ag-side-bar-left,\n .ag-rtl .ag-side-bar-right {\n border-right: var(--ag-borders) var(--ag-border-color);\n }\n .ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n .ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: var(--ag-borders) var(--ag-border-color);\n }\n .ag-ltr .ag-side-bar-left .ag-side-button-button,\n .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: var(--ag-selected-tab-underline-width) solid transparent;\n transition: border-right var(--ag-selected-tab-underline-transition-speed);\n }\n .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: var(--ag-selected-tab-underline-color);\n }\n\n .ag-rtl .ag-side-bar-left,\n .ag-ltr .ag-side-bar-right {\n border-left: var(--ag-borders) var(--ag-border-color);\n }\n .ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n .ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: var(--ag-borders) var(--ag-border-color);\n }\n .ag-rtl .ag-side-bar-left .ag-side-button-button,\n .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: var(--ag-selected-tab-underline-width) solid transparent;\n transition: border-left var(--ag-selected-tab-underline-transition-speed);\n }\n .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: var(--ag-selected-tab-underline-color);\n }\n\n .ag-filter-toolpanel-header {\n height: calc(var(--ag-grid-size) * 6);\n }\n\n .ag-ltr .ag-filter-toolpanel-header,\n .ag-ltr .ag-filter-toolpanel-search {\n padding-left: var(--ag-grid-size);\n }\n .ag-rtl .ag-filter-toolpanel-header,\n .ag-rtl .ag-filter-toolpanel-search {\n padding-right: var(--ag-grid-size);\n }\n\n .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n }\n .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\n .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: var(--ag-icon-font-family);\n font-size: var(--ag-icon-size);\n line-height: var(--ag-icon-size);\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: var(--ag-icon-font-code-filter, '\\\\f114');\n position: absolute;\n }\n .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: var(--ag-grid-size);\n }\n .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: var(--ag-grid-size);\n }\n\n .ag-filter-toolpanel-group-level-0-header {\n height: calc(var(--ag-grid-size) * 8);\n }\n\n .ag-filter-toolpanel-group-item {\n margin-top: calc(var(--ag-grid-size) * 0.5);\n margin-bottom: calc(var(--ag-grid-size) * 0.5);\n }\n\n .ag-filter-toolpanel-search {\n height: var(--ag-header-height);\n }\n\n .ag-filter-toolpanel-search-input {\n flex-grow: 1;\n height: calc(var(--ag-grid-size) * 4);\n }\n .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: var(--ag-grid-size);\n }\n .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: var(--ag-grid-size);\n }\n\n .ag-filter-toolpanel-group-level-0 {\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n }\n\n .ag-ltr .ag-filter-toolpanel-expand,\n .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: var(--ag-grid-size);\n }\n .ag-rtl .ag-filter-toolpanel-expand,\n .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: var(--ag-grid-size);\n }\n\n .ag-filter-toolpanel-group-level-1\n .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 1 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 1 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-2\n .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 2 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 2 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-3\n .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 3 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 3 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-4\n .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 4 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 4 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-5\n .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 5 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 5 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-6\n .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 6 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 6 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-7\n .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 7 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 7 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-8\n .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 8 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 8 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-9\n .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 9 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 9 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-group-level-10\n .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n }\n .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: calc(var(--ag-filter-tool-panel-group-indent) * 10 + var(--ag-grid-size));\n }\n .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: calc(var(--ag-filter-tool-panel-group-indent) * 10 + var(--ag-grid-size));\n }\n\n .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: var(--ag-grid-size);\n }\n\n .ag-filter-toolpanel-instance-filter {\n border-bottom: var(--ag-borders) var(--ag-border-color);\n border-top: var(--ag-borders) var(--ag-border-color);\n margin-top: var(--ag-grid-size);\n }\n\n .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: var(--ag-grid-size);\n }\n .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: var(--ag-grid-size);\n }\n\n .ag-set-filter-group-icons {\n color: var(--ag-secondary-foreground-color);\n }\n\n .ag-pivot-mode-panel {\n min-height: var(--ag-header-height);\n height: var(--ag-header-height);\n display: flex;\n }\n\n .ag-pivot-mode-select {\n display: flex;\n align-items: center;\n }\n .ag-ltr .ag-pivot-mode-select {\n margin-left: var(--ag-widget-container-horizontal-padding);\n }\n .ag-rtl .ag-pivot-mode-select {\n margin-right: var(--ag-widget-container-horizontal-padding);\n }\n\n .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n }\n .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\n .ag-column-select-header {\n height: var(--ag-header-height);\n align-items: center;\n padding: 0 var(--ag-widget-container-horizontal-padding);\n border-bottom: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n }\n\n .ag-column-panel-column-select {\n border-bottom: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n }\n\n .ag-column-group-icons,\n .ag-column-select-header-icon {\n color: var(--ag-secondary-foreground-color);\n }\n\n .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: var(--ag-range-selection-border-color);\n }\n .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n }\n .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n }\n\n .ag-header {\n background-color: var(--ag-header-background-color);\n border-bottom: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-header-row {\n color: var(--ag-header-foreground-color);\n height: var(--ag-header-height);\n }\n\n .ag-pinned-right-header {\n border-left: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-pinned-left-header {\n border-right: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: var(--ag-grid-size);\n }\n .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: var(--ag-grid-size);\n }\n\n .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: var(--ag-grid-size);\n }\n .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: var(--ag-grid-size);\n }\n\n .ag-header-cell,\n .ag-header-group-cell {\n padding-left: var(--ag-cell-horizontal-padding);\n padding-right: var(--ag-cell-horizontal-padding);\n }\n .ag-header-cell.ag-header-cell-moving,\n .ag-header-group-cell.ag-header-cell-moving {\n background-color: var(--ag-header-cell-moving-background-color);\n }\n\n .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n }\n .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-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n }\n .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\n .ag-header-icon {\n color: var(--ag-secondary-foreground-color);\n }\n\n .ag-header-expand-icon {\n cursor: pointer;\n }\n .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n }\n .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n }\n\n .ag-header-row:not(:first-child) .ag-header-cell,\n .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: var(--ag-borders-critical) var(--ag-border-color);\n }\n\n .ag-header-group-cell:not(.ag-column-resizing)\n + .ag-header-group-cell:not(.ag-column-hover):not(.ag-header-cell-moving):hover,\n .ag-header-group-cell:not(.ag-column-resizing)\n + .ag-header-group-cell:not(.ag-column-hover).ag-column-resizing,\n .ag-header-cell:not(.ag-column-resizing)\n + .ag-header-cell:not(.ag-column-hover):not(.ag-header-cell-moving):hover,\n .ag-header-cell:not(.ag-column-resizing)\n + .ag-header-cell:not(.ag-column-hover).ag-column-resizing,\n .ag-header-group-cell:first-of-type:not(.ag-header-cell-moving):hover,\n .ag-header-group-cell:first-of-type.ag-column-resizing,\n .ag-header-cell:not(.ag-column-hover):first-of-type:not(.ag-header-cell-moving):hover,\n .ag-header-cell:not(.ag-column-hover):first-of-type.ag-column-resizing {\n background-color: var(--ag-header-cell-hover-background-color);\n }\n\n .ag-header-cell::after,\n .ag-header-group-cell::after {\n content: '';\n position: absolute;\n z-index: 1;\n display: var(--ag-header-column-separator-display);\n width: var(--ag-header-column-separator-width);\n height: var(--ag-header-column-separator-height);\n top: calc(50% - var(--ag-header-column-separator-height) * 0.5);\n background-color: var(--ag-header-column-separator-color);\n }\n .ag-ltr .ag-header-cell::after,\n .ag-ltr .ag-header-group-cell::after {\n right: 0;\n }\n .ag-rtl .ag-header-cell::after,\n .ag-rtl .ag-header-group-cell::after {\n left: 0;\n }\n\n .ag-header-cell-resize {\n display: flex;\n align-items: center;\n }\n\n .ag-header-cell-resize::after {\n content: '';\n position: absolute;\n z-index: 1;\n display: var(--ag-header-column-resize-handle-display);\n width: var(--ag-header-column-resize-handle-width);\n height: var(--ag-header-column-resize-handle-height);\n top: calc(50% - var(--ag-header-column-resize-handle-height) * 0.5);\n background-color: var(--ag-header-column-resize-handle-color);\n }\n\n .ag-ltr .ag-header-viewport .ag-header-cell-resize::after {\n left: calc(50% - var(--ag-header-column-resize-handle-width));\n }\n .ag-rtl .ag-header-viewport .ag-header-cell-resize::after {\n right: calc(50% - var(--ag-header-column-resize-handle-width));\n }\n\n .ag-pinned-left-header .ag-header-cell-resize::after {\n left: calc(50% - var(--ag-header-column-resize-handle-width));\n }\n\n .ag-pinned-right-header .ag-header-cell-resize::after {\n left: 50%;\n }\n\n .ag-ltr .ag-header-select-all {\n margin-right: var(--ag-cell-horizontal-padding);\n }\n .ag-rtl .ag-header-select-all {\n margin-left: var(--ag-cell-horizontal-padding);\n }\n\n .ag-ltr .ag-floating-filter-button {\n margin-left: calc(var(--ag-grid-size) * 3);\n }\n .ag-rtl .ag-floating-filter-button {\n margin-right: calc(var(--ag-grid-size) * 3);\n }\n\n .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 appearance: none;\n background: transparent;\n border: none;\n height: var(--ag-icon-size);\n padding: 0;\n width: var(--ag-icon-size);\n }\n\n .ag-filter-loading {\n background-color: var(--ag-control-panel-background-color);\n height: 100%;\n padding: var(--ag-widget-container-vertical-padding)\n var(--ag-widget-container-horizontal-padding);\n position: absolute;\n width: 100%;\n z-index: 1;\n }\n\n .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: var(--ag-border-color);\n color: var(--ag-secondary-foreground-color);\n height: var(--ag-header-height);\n }\n .ag-paging-panel > * {\n margin: 0 var(--ag-cell-horizontal-padding);\n }\n\n .ag-paging-button {\n cursor: pointer;\n }\n\n .ag-paging-button.ag-disabled {\n cursor: default;\n color: var(--ag-disabled-foreground-color);\n }\n\n .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n }\n .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\n .ag-paging-button,\n .ag-paging-description {\n margin: 0 var(--ag-grid-size);\n }\n\n .ag-status-bar {\n border-top: var(--ag-borders) var(--ag-border-color);\n color: var(--ag-disabled-foreground-color);\n padding-right: calc(var(--ag-grid-size) * 4);\n padding-left: calc(var(--ag-grid-size) * 4);\n line-height: 1.5;\n }\n\n .ag-status-name-value-value {\n color: var(--ag-foreground-color);\n }\n\n .ag-status-bar-center {\n text-align: center;\n }\n\n .ag-status-name-value {\n margin-left: var(--ag-grid-size);\n margin-right: var(--ag-grid-size);\n padding-top: calc(var(--ag-grid-size) * 2);\n padding-bottom: calc(var(--ag-grid-size) * 2);\n }\n\n .ag-column-drop-cell {\n background: var(--ag-chip-background-color);\n border-radius: calc(var(--ag-grid-size) * 4);\n height: calc(var(--ag-grid-size) * 4);\n padding: 0 calc(var(--ag-grid-size) * 0.5);\n border: 1px solid transparent;\n }\n\n .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n }\n .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\n .ag-column-drop-cell-text {\n margin: 0 var(--ag-grid-size);\n }\n\n .ag-column-drop-cell-button {\n min-width: calc(var(--ag-grid-size) * 4);\n margin: 0 calc(var(--ag-grid-size) * 0.5);\n color: var(--ag-secondary-foreground-color);\n }\n\n .ag-column-drop-cell-drag-handle {\n margin-left: calc(var(--ag-grid-size) * 2);\n }\n\n .ag-column-drop-cell-ghost {\n opacity: 0.5;\n }\n\n .ag-column-drop-horizontal {\n background-color: var(--ag-control-panel-background-color);\n color: var(--ag-secondary-foreground-color);\n height: var(--ag-row-height);\n border-bottom: var(--ag-borders) var(--ag-border-color);\n }\n .ag-ltr .ag-column-drop-horizontal {\n padding-left: var(--ag-cell-horizontal-padding);\n }\n .ag-rtl .ag-column-drop-horizontal {\n padding-right: var(--ag-cell-horizontal-padding);\n }\n\n .ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: var(--ag-borders) var(--ag-border-color);\n }\n .ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: var(--ag-borders) var(--ag-border-color);\n }\n\n .ag-column-drop-horizontal-cell-separator {\n margin: 0 var(--ag-grid-size);\n color: var(--ag-secondary-foreground-color);\n }\n\n .ag-column-drop-horizontal-empty-message {\n color: var(--ag-disabled-foreground-color);\n }\n\n .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: var(--ag-cell-horizontal-padding);\n }\n .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: var(--ag-cell-horizontal-padding);\n }\n\n .ag-column-drop-vertical-list {\n padding-bottom: var(--ag-grid-size);\n padding-right: var(--ag-grid-size);\n padding-left: var(--ag-grid-size);\n }\n\n .ag-column-drop-vertical-cell {\n margin-top: var(--ag-grid-size);\n }\n\n .ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n }\n .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n }\n\n .ag-column-drop-vertical-icon {\n margin-left: var(--ag-grid-size);\n margin-right: var(--ag-grid-size);\n }\n\n .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: var(--ag-disabled-foreground-color);\n margin-top: var(--ag-grid-size);\n }\n\n .ag-select-agg-func-popup {\n border: var(--ag-borders) var(--ag-border-color);\n background: var(--ag-background-color);\n border-radius: var(--ag-card-radius);\n box-shadow: var(--ag-card-shadow);\n padding: var(--ag-grid-size);\n background: var(--ag-background-color);\n height: calc(var(--ag-grid-size) * 5 * 3.5);\n padding: 0;\n }\n\n .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: calc(var(--ag-grid-size) * 2);\n }\n .ag-select-agg-func-virtual-list-item:hover {\n background-color: var(--ag-selected-row-background-color);\n }\n\n .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n }\n .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\n .ag-sort-indicator-container {\n display: flex;\n }\n\n .ag-ltr .ag-sort-indicator-icon {\n padding-left: var(--ag-grid-size);\n }\n .ag-rtl .ag-sort-indicator-icon {\n padding-right: var(--ag-grid-size);\n }\n\n .ag-chart {\n position: relative;\n display: flex;\n overflow: hidden;\n width: 100%;\n height: 100%;\n }\n\n .ag-chart-components-wrapper {\n position: relative;\n display: flex;\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 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: flex;\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 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: flex;\n flex-direction: column;\n overflow: hidden;\n }\n\n .ag-chart-tabbed-menu-header {\n flex: none;\n user-select: none;\n cursor: default;\n }\n\n .ag-chart-tabbed-menu-body {\n display: flex;\n flex: 1 1 auto;\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 flex-direction: column;\n width: 100%;\n height: 100%;\n display: flex;\n overflow: hidden;\n }\n\n .ag-chart-settings-nav-bar {\n display: flex;\n align-items: center;\n width: 100%;\n height: 30px;\n padding: 0 10px;\n user-select: none;\n }\n\n .ag-chart-settings-card-selector {\n display: flex;\n align-items: center;\n justify-content: space-around;\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 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 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: flex;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n overflow: hidden;\n }\n .ag-chart-settings-mini-wrapper.ag-animating {\n transition: left 0.3s;\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: flex;\n flex-direction: column;\n position: relative;\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: flex;\n margin: 0;\n }\n\n .ag-chart-empty-text {\n display: flex;\n top: 0;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n }\n\n .ag-chart .ag-chart-menu {\n display: none;\n }\n\n .ag-chart-menu-hidden:hover .ag-chart-menu {\n display: block;\n }\n\n .ag-chart .ag-chart-tool-panel-button-enable .ag-chart-menu {\n display: flex;\n flex-direction: row;\n overflow: auto;\n top: 5px;\n gap: calc(var(--ag-grid-size) * 3 - 8px);\n width: auto;\n }\n .ag-ltr .ag-chart .ag-chart-tool-panel-button-enable .ag-chart-menu {\n right: calc(var(--ag-cell-horizontal-padding) + var(--ag-grid-size) - 4px);\n justify-content: right;\n }\n .ag-rtl .ag-chart .ag-chart-tool-panel-button-enable .ag-chart-menu {\n left: calc(var(--ag-cell-horizontal-padding) + var(--ag-grid-size) - 4px);\n justify-content: left;\n }\n\n .ag-chart-menu-close {\n display: none;\n }\n\n .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n position: absolute;\n top: 50%;\n transition: transform 0.33s ease-in-out;\n padding: 0;\n display: block;\n cursor: pointer;\n border: none;\n }\n .ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n right: 0px;\n }\n .ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n left: 0px;\n }\n .ag-chart-tool-panel-button-enable .ag-chart-menu-close .ag-icon {\n padding: 14px 5px 14px 2px;\n }\n .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n content: '';\n position: absolute;\n top: -40px;\n bottom: -40px;\n }\n .ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n right: 0px;\n }\n .ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n left: 0px;\n }\n .ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n left: -10px;\n }\n .ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close:before {\n right: -10px;\n }\n .ag-chart-tool-panel-button-enable .ag-icon-menu {\n display: none;\n }\n\n .ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n transform: translate(3px, -50%);\n }\n .ag-ltr .ag-chart-tool-panel-button-enable .ag-chart-menu-close:hover {\n transform: translate(0, -50%);\n }\n .ag-ltr .ag-chart-menu-visible .ag-chart-tool-panel-button-enable .ag-chart-menu-close:hover {\n transform: translate(5px, -50%);\n }\n\n .ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close {\n transform: translate(-3px, -50%);\n }\n .ag-rtl .ag-chart-tool-panel-button-enable .ag-chart-menu-close:hover {\n transform: translate(0, -50%);\n }\n .ag-rtl .ag-chart-menu-visible .ag-chart-tool-panel-button-enable .ag-chart-menu-close:hover {\n transform: translate(-5px, -50%);\n }\n\n .ag-charts-font-size-color {\n display: flex;\n align-self: stretch;\n justify-content: space-between;\n }\n\n .ag-charts-data-group-item {\n position: relative;\n }\n\n .ag-chart-menu {\n border-radius: var(--ag-card-radius);\n background: var(--ag-background-color);\n }\n\n .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: var(--ag-card-radius);\n color: var(--ag-secondary-foreground-color);\n }\n .ag-chart-menu-icon:hover {\n opacity: 1;\n }\n\n .ag-chart-mini-thumbnail {\n border: 1px solid var(--ag-secondary-border-color);\n border-radius: 5px;\n margin: 5px;\n }\n .ag-chart-mini-thumbnail:nth-last-child(3),\n .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n }\n .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n }\n .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n }\n .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n }\n .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n }\n .ag-chart-mini-thumbnail.ag-selected {\n border-color: var(--ag-minichart-selected-chart-color);\n }\n\n .ag-chart-settings-card-item {\n background: var(--ag-foreground-color);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n }\n .ag-chart-settings-card-item.ag-selected {\n background-color: var(--ag-minichart-selected-page-color);\n }\n\n .ag-chart-data-column-drag-handle {\n margin-left: var(--ag-grid-size);\n }\n\n .ag-charts-settings-group-title-bar,\n .ag-charts-data-group-title-bar,\n .ag-charts-format-top-level-group-title-bar {\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n }\n\n .ag-charts-settings-group-container {\n padding: var(--ag-grid-size);\n }\n\n .ag-charts-data-group-container {\n padding: calc(var(--ag-widget-container-vertical-padding) * 0.5)\n var(--ag-widget-container-horizontal-padding);\n }\n .ag-charts-data-group-container\n .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: var(--ag-list-item-height);\n }\n .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: var(--ag-range-selection-border-color);\n }\n .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n }\n .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n }\n\n .ag-charts-format-top-level-group-container {\n margin-left: calc(var(--ag-grid-size) * 2);\n padding: var(--ag-grid-size);\n }\n\n .ag-charts-format-top-level-group-item {\n margin: var(--ag-grid-size) 0;\n }\n\n .ag-charts-format-sub-level-group-container {\n padding: var(--ag-widget-container-vertical-padding)\n var(--ag-widget-container-horizontal-padding);\n padding-bottom: calc(\n var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing)\n );\n }\n .ag-charts-format-sub-level-group-container > * {\n margin-bottom: var(--ag-widget-vertical-spacing);\n }\n\n .ag-charts-group-container.ag-group-container-horizontal {\n padding: var(--ag-grid-size);\n }\n\n .ag-chart-data-section,\n .ag-chart-format-section {\n display: flex;\n margin: 0;\n }\n\n .ag-chart-menu-panel {\n background-color: var(--ag-control-panel-background-color);\n }\n .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px var(--ag-border-color);\n }\n .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px var(--ag-border-color);\n }\n\n .ag-date-time-list-page-title-bar {\n display: flex;\n }\n\n .ag-date-time-list-page-title {\n flex-grow: 1;\n text-align: center;\n }\n\n .ag-date-time-list-page-column-labels-row,\n .ag-date-time-list-page-entries-row {\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 flex-grow: 1;\n }\n\n .ag-date-time-list-page-entry {\n cursor: pointer;\n text-align: center;\n }\n\n .ag-date-time-list-page-column-label {\n text-align: center;\n }\n\n .ag-input-field-input {\n width: 100%;\n min-width: 0;\n }\n\n .ag-checkbox-input-wrapper {\n font-family: var(--ag-icon-font-family);\n font-size: var(--ag-icon-size);\n line-height: var(--ag-icon-size);\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-checkbox-background-color);\n border-radius: var(--ag-checkbox-border-radius);\n display: inline-block;\n vertical-align: middle;\n flex: none;\n }\n .ag-checkbox-input-wrapper input,\n .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n }\n .ag-checkbox-input-wrapper:focus-within,\n .ag-checkbox-input-wrapper:active {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n }\n .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n }\n .ag-checkbox-input-wrapper::after {\n content: var(--ag-icon-font-code-checkbox-unchecked, '\\\\f108');\n color: var(--ag-checkbox-unchecked-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n }\n .ag-checkbox-input-wrapper.ag-checked::after {\n content: var(--ag-icon-font-code-checkbox-checked, '\\\\f106');\n color: var(--ag-checkbox-checked-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n }\n .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: var(--ag-icon-font-code-checkbox-indeterminate, '\\\\f107');\n color: var(--ag-checkbox-indeterminate-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n }\n\n .ag-toggle-button-input-wrapper {\n box-sizing: border-box;\n width: var(--ag-toggle-button-width);\n height: var(--ag-toggle-button-height);\n background-color: var(--ag-toggle-button-off-background-color);\n border-radius: calc(var(--ag-toggle-button-height) * 0.5);\n position: relative;\n flex: none;\n border: var(--ag-toggle-button-border-width) solid;\n border-color: var(--ag-toggle-button-off-border-color);\n }\n .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n }\n .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n }\n .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n }\n .ag-toggle-button-input-wrapper.ag-checked {\n background-color: var(--ag-toggle-button-on-background-color);\n border-color: var(--ag-toggle-button-on-border-color);\n }\n .ag-toggle-button-input-wrapper::before {\n content: ' ';\n position: absolute;\n top: calc(0px - var(--ag-toggle-button-border-width));\n left: calc(0px - var(--ag-toggle-button-border-width));\n display: block;\n box-sizing: border-box;\n height: var(--ag-toggle-button-height);\n width: var(--ag-toggle-button-height);\n background-color: var(--ag-toggle-button-switch-background-color);\n border-radius: 100%;\n transition: left 100ms;\n border: var(--ag-toggle-button-border-width) solid;\n border-color: var(--ag-toggle-button-switch-border-color);\n }\n .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - var(--ag-toggle-button-height));\n border-color: var(--ag-toggle-button-on-border-color);\n }\n\n .ag-radio-button-input-wrapper {\n font-family: var(--ag-icon-font-family);\n font-size: var(--ag-icon-size);\n line-height: var(--ag-icon-size);\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-checkbox-background-color);\n border-radius: var(--ag-checkbox-border-radius);\n display: inline-block;\n vertical-align: middle;\n flex: none;\n border-radius: var(--ag-icon-size);\n }\n .ag-radio-button-input-wrapper input,\n .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n }\n .ag-radio-button-input-wrapper:focus-within,\n .ag-radio-button-input-wrapper:active {\n outline: none;\n box-shadow: var(--ag-input-focus-box-shadow);\n }\n .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n }\n .ag-radio-button-input-wrapper::after {\n content: var(--ag-icon-font-code-radio-button-off, '\\\\f126');\n color: var(--ag-checkbox-unchecked-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n }\n .ag-radio-button-input-wrapper.ag-checked::after {\n content: var(--ag-icon-font-code-radio-button-on, '\\\\f127');\n color: var(--ag-checkbox-checked-color);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n }\n\n input[class^='ag-'][type='range'] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n }\n input[class^='ag-'][type='range']::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: var(--ag-border-color);\n border-radius: var(--ag-border-radius);\n border-radius: var(--ag-checkbox-border-radius);\n }\n input[class^='ag-'][type='range']::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: var(--ag-border-color);\n border-radius: var(--ag-border-radius);\n border-radius: var(--ag-checkbox-border-radius);\n }\n input[class^='ag-'][type='range']::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: var(--ag-border-color);\n border-radius: var(--ag-border-radius);\n border-radius: var(--ag-checkbox-border-radius);\n color: transparent;\n width: calc(100% - 2px);\n }\n input[class^='ag-'][type='range']::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-background-color);\n border: 1px solid;\n border-color: var(--ag-checkbox-unchecked-color);\n border-radius: var(--ag-icon-size);\n transform: translateY(calc(var(--ag-icon-size) * -0.5 + 1.5px));\n }\n input[class^='ag-'][type='range']::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-background-color);\n border: 1px solid;\n border-color: var(--ag-checkbox-unchecked-color);\n border-radius: var(--ag-icon-size);\n }\n input[class^='ag-'][type='range']::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: var(--ag-icon-size);\n height: var(--ag-icon-size);\n background-color: var(--ag-background-color);\n border: 1px solid;\n border-color: var(--ag-checkbox-unchecked-color);\n border-radius: var(--ag-icon-size);\n }\n input[class^='ag-'][type='range']:focus {\n outline: none;\n }\n input[class^='ag-'][type='range']:focus::-webkit-slider-thumb {\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-checkbox-checked-color);\n }\n input[class^='ag-'][type='range']:focus::-ms-thumb {\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-checkbox-checked-color);\n }\n input[class^='ag-'][type='range']:focus::-moz-ag-range-thumb {\n box-shadow: var(--ag-input-focus-box-shadow);\n border-color: var(--ag-checkbox-checked-color);\n }\n input[class^='ag-'][type='range']:active::-webkit-slider-runnable-track {\n background-color: var(--ag-input-focus-border-color);\n }\n input[class^='ag-'][type='range']:active::-moz-ag-range-track {\n background-color: var(--ag-input-focus-border-color);\n }\n input[class^='ag-'][type='range']:active::-ms-track {\n background-color: var(--ag-input-focus-border-color);\n }\n input[class^='ag-'][type='range']:disabled {\n opacity: 0.5;\n }\n`;\n","import { css } from '@microsoft/fast-element';\n/**\n * AG Alpine Theme (no fonts) CSS.\n * @public\n */\nexport const agThemeAlpineNofontsCSS = css `\n .ag-theme-alpine,\n .ag-theme-alpine-dark {\n --ag-alpine-active-color: #2196f3;\n --ag-selected-row-background-color: rgba(33, 150, 243, 0.3);\n --ag-row-hover-color: rgba(33, 150, 243, 0.1);\n --ag-column-hover-color: rgba(33, 150, 243, 0.1);\n --ag-input-focus-border-color: rgba(33, 150, 243, 0.4);\n --ag-range-selection-background-color: rgba(33, 150, 243, 0.2);\n --ag-range-selection-background-color-2: rgba(33, 150, 243, 0.36);\n --ag-range-selection-background-color-3: rgba(33, 150, 243, 0.49);\n --ag-range-selection-background-color-4: rgba(33, 150, 243, 0.59);\n --ag-background-color: #fff;\n --ag-foreground-color: #181d1f;\n --ag-border-color: #babfc7;\n --ag-secondary-border-color: #dde2eb;\n --ag-header-background-color: #f8f8f8;\n --ag-tooltip-background-color: #f8f8f8;\n --ag-odd-row-background-color: #fcfcfc;\n --ag-control-panel-background-color: #f8f8f8;\n --ag-subheader-background-color: #fff;\n --ag-invalid-color: #e02525;\n --ag-checkbox-unchecked-color: #999;\n --ag-checkbox-background-color: var(--ag-background-color);\n --ag-checkbox-checked-color: var(--ag-alpine-active-color);\n --ag-range-selection-border-color: var(--ag-alpine-active-color);\n --ag-secondary-foreground-color: var(--ag-foreground-color);\n --ag-input-border-color: var(--ag-border-color);\n --ag-input-border-color-invalid: var(--ag-invalid-color);\n --ag-input-focus-box-shadow: 0 0 2px 0.1rem var(--ag-input-focus-border-color);\n --ag-disabled-foreground-color: rgba(24, 29, 31, 0.5);\n --ag-chip-background-color: rgba(24, 29, 31, 0.07);\n --ag-input-disabled-border-color: rgba(186, 191, 199, 0.3);\n --ag-input-disabled-background-color: rgba(186, 191, 199, 0.15);\n --ag-borders: solid 1px;\n --ag-border-radius: 3px;\n --ag-borders-side-button: none;\n --ag-side-button-selected-background-color: transparent;\n --ag-header-column-resize-handle-display: block;\n --ag-header-column-resize-handle-width: 2px;\n --ag-header-column-resize-handle-height: 30%;\n --ag-grid-size: 6px;\n --ag-icon-size: 16px;\n --ag-row-height: calc(var(--ag-grid-size) * 7);\n --ag-header-height: calc(var(--ag-grid-size) * 8);\n --ag-list-item-height: calc(var(--ag-grid-size) * 4);\n --ag-column-select-indent-size: var(--ag-icon-size);\n --ag-set-filter-indent-size: var(--ag-icon-size);\n --ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);\n --ag-cell-widget-spacing: calc(var(--ag-grid-size) * 2);\n --ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 2);\n --ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 2);\n --ag-widget-vertical-spacing: calc(var(--ag-grid-size) * 1.5);\n --ag-toggle-button-height: 18px;\n --ag-toggle-button-width: 28px;\n --ag-font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell,\n 'Helvetica Neue', sans-serif;\n --ag-font-size: 13px;\n --ag-icon-font-family: agGridAlpine;\n --ag-selected-tab-underline-color: var(--ag-alpine-active-color);\n --ag-selected-tab-underline-width: 2px;\n --ag-selected-tab-underline-transition-speed: 0.3s;\n --ag-tab-min-width: 240px;\n --ag-card-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n --ag-popup-shadow: var(--ag-card-shadow);\n --ag-side-bar-panel-width: 250px;\n }\n\n .ag-theme-alpine-dark {\n --ag-background-color: #181d1f;\n --ag-foreground-color: #fff;\n --ag-border-color: #68686e;\n --ag-secondary-border-color: rgba(88, 86, 82, 0.5);\n --ag-modal-overlay-background-color: rgba(24, 29, 31, 0.66);\n --ag-header-background-color: #222628;\n --ag-tooltip-background-color: #222628;\n --ag-odd-row-background-color: #222628;\n --ag-control-panel-background-color: #222628;\n --ag-subheader-background-color: #000;\n --ag-input-disabled-background-color: #282c2f;\n --ag-input-focus-box-shadow:\n 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px var(--ag-input-focus-border-color);\n --ag-card-shadow: 0 1px 20px 1px black;\n --ag-disabled-foreground-color: rgba(255, 255, 255, 0.5);\n --ag-chip-background-color: rgba(255, 255, 255, 0.07);\n --ag-input-disabled-border-color: rgba(104, 104, 110, 0.3);\n --ag-input-disabled-background-color: rgba(104, 104, 110, 0.07);\n }\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 .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: var(--ag-header-foreground-color);\n }\n .ag-theme-alpine .ag-row,\n .ag-theme-alpine-dark .ag-row {\n font-size: calc(var(--ag-font-size) + 1px);\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 .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: calc(var(--ag-grid-size) * 4);\n border-radius: var(--ag-border-radius);\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 .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: var(--ag-grid-size);\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 .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: var(--ag-grid-size);\n }\n\n .ag-theme-alpine .ag-tab,\n .ag-theme-alpine-dark .ag-tab {\n padding: calc(var(--ag-grid-size) * 1.5);\n transition: color 0.4s;\n flex: 1 1 auto;\n }\n .ag-theme-alpine .ag-tab-selected,\n .ag-theme-alpine-dark .ag-tab-selected {\n color: var(--ag-alpine-active-color);\n }\n .ag-theme-alpine .ag-menu,\n .ag-theme-alpine-dark .ag-menu {\n background-color: var(--ag-control-panel-background-color);\n }\n .ag-theme-alpine .ag-menu-header,\n .ag-theme-alpine-dark .ag-menu-header {\n background-color: var(--ag-control-panel-background-color);\n padding-top: 1px;\n }\n .ag-theme-alpine .ag-tabs-header,\n .ag-theme-alpine-dark .ag-tabs-header {\n border-bottom: var(--ag-borders) var(--ag-border-color);\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 .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: var(--ag-grid-size) calc(var(--ag-grid-size) * 2);\n line-height: calc(var(--ag-icon-size) + var(--ag-grid-size) - 2px);\n }\n .ag-theme-alpine .ag-chart-mini-thumbnail,\n .ag-theme-alpine-dark .ag-chart-mini-thumbnail {\n background-color: var(--ag-background-color);\n }\n .ag-theme-alpine .ag-chart-settings-nav-bar,\n .ag-theme-alpine-dark .ag-chart-settings-nav-bar {\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n }\n .ag-theme-alpine .ag-ltr .ag-group-title-bar-icon,\n .ag-theme-alpine-dark .ag-ltr .ag-group-title-bar-icon {\n margin-right: var(--ag-grid-size);\n }\n\n .ag-theme-alpine .ag-rtl .ag-group-title-bar-icon,\n .ag-theme-alpine-dark .ag-rtl .ag-group-title-bar-icon {\n margin-left: var(--ag-grid-size);\n }\n\n .ag-theme-alpine .ag-charts-format-top-level-group-toolbar,\n .ag-theme-alpine-dark .ag-charts-format-top-level-group-toolbar {\n margin-top: var(--ag-grid-size);\n }\n .ag-theme-alpine .ag-ltr .ag-charts-format-top-level-group-toolbar,\n .ag-theme-alpine-dark .ag-ltr .ag-charts-format-top-level-group-toolbar {\n padding-left: calc(var(--ag-icon-size) * 0.5 + var(--ag-grid-size) * 2);\n }\n\n .ag-theme-alpine .ag-rtl .ag-charts-format-top-level-group-toolbar,\n .ag-theme-alpine-dark .ag-rtl .ag-charts-format-top-level-group-toolbar {\n padding-right: calc(var(--ag-icon-size) * 0.5 + var(--ag-grid-size) * 2);\n }\n\n .ag-theme-alpine .ag-charts-format-sub-level-group,\n .ag-theme-alpine-dark .ag-charts-format-sub-level-group {\n border-left: dashed 1px;\n border-left-color: var(--ag-border-color);\n padding-left: var(--ag-grid-size);\n margin-bottom: calc(var(--ag-grid-size) * 2);\n }\n .ag-theme-alpine .ag-charts-format-sub-level-group-title-bar,\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 .ag-charts-format-sub-level-group-container,\n .ag-theme-alpine-dark .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 .ag-theme-alpine-dark .ag-charts-format-sub-level-group-item:last-child {\n margin-bottom: 0;\n }\n .ag-theme-alpine.ag-dnd-ghost,\n .ag-theme-alpine-dark.ag-dnd-ghost {\n font-size: calc(var(--ag-font-size) - 1px);\n font-weight: 700;\n }\n .ag-theme-alpine .ag-side-buttons,\n .ag-theme-alpine-dark .ag-side-buttons {\n width: calc(var(--ag-grid-size) * 5);\n }\n .ag-theme-alpine .ag-standard-button,\n .ag-theme-alpine-dark .ag-standard-button {\n appearance: none;\n -webkit-appearance: none;\n border-radius: var(--ag-border-radius);\n border: 1px solid;\n border-color: var(--ag-alpine-active-color);\n color: var(--ag-alpine-active-color);\n background-color: var(--ag-background-color);\n font-weight: 600;\n padding: var(--ag-grid-size) calc(var(--ag-grid-size) * 2);\n }\n .ag-theme-alpine .ag-standard-button:hover,\n .ag-theme-alpine-dark .ag-standard-button:hover {\n border-color: var(--ag-alpine-active-color);\n background-color: var(--ag-row-hover-color);\n }\n .ag-theme-alpine .ag-standard-button:active,\n .ag-theme-alpine-dark .ag-standard-button:active {\n border-color: var(--ag-alpine-active-color);\n background-color: var(--ag-alpine-active-color);\n color: var(--ag-background-color);\n }\n .ag-theme-alpine .ag-standard-button:disabled,\n .ag-theme-alpine-dark .ag-standard-button:disabled {\n color: var(--ag-disabled-foreground-color);\n background-color: var(--ag-input-disabled-background-color);\n border-color: var(--ag-input-disabled-border-color);\n }\n .ag-theme-alpine .ag-column-drop-vertical,\n .ag-theme-alpine-dark .ag-column-drop-vertical {\n min-height: 75px;\n }\n .ag-theme-alpine .ag-column-drop-vertical-title-bar,\n .ag-theme-alpine-dark .ag-column-drop-vertical-title-bar {\n padding: calc(var(--ag-grid-size) * 2);\n padding-bottom: 0px;\n }\n .ag-theme-alpine .ag-column-drop-vertical-empty-message,\n .ag-theme-alpine-dark .ag-column-drop-vertical-empty-message {\n display: flex;\n align-items: center;\n border: dashed 1px;\n border-color: var(--ag-border-color);\n margin: calc(var(--ag-grid-size) * 2);\n padding: calc(var(--ag-grid-size) * 2);\n }\n .ag-theme-alpine .ag-column-drop-empty-message,\n .ag-theme-alpine-dark .ag-column-drop-empty-message {\n color: var(--ag-foreground-color);\n opacity: 0.75;\n }\n .ag-theme-alpine .ag-status-bar,\n .ag-theme-alpine-dark .ag-status-bar {\n font-weight: normal;\n }\n .ag-theme-alpine .ag-status-name-value-value,\n .ag-theme-alpine-dark .ag-status-name-value-value {\n font-weight: 700;\n }\n .ag-theme-alpine .ag-paging-number,\n .ag-theme-alpine .ag-paging-row-summary-panel-number,\n .ag-theme-alpine-dark .ag-paging-number,\n .ag-theme-alpine-dark .ag-paging-row-summary-panel-number {\n font-weight: 700;\n }\n .ag-theme-alpine .ag-column-drop-cell-button,\n .ag-theme-alpine-dark .ag-column-drop-cell-button {\n opacity: 0.5;\n }\n .ag-theme-alpine .ag-column-drop-cell-button:hover,\n .ag-theme-alpine-dark .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-set-filter-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 .ag-theme-alpine .ag-chart-menu-close:hover,\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-set-filter-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 .ag-theme-alpine-dark .ag-chart-menu-close:hover {\n color: var(--ag-alpine-active-color);\n }\n .ag-theme-alpine .ag-chart-menu-close,\n .ag-theme-alpine-dark .ag-chart-menu-close {\n background: var(--ag-background-color);\n }\n .ag-theme-alpine .ag-chart-menu-close:hover .ag-icon,\n .ag-theme-alpine-dark .ag-chart-menu-close:hover .ag-icon {\n border-color: var(--ag-alpine-active-color);\n }\n .ag-theme-alpine .ag-chart-menu-close .ag-icon,\n .ag-theme-alpine-dark .ag-chart-menu-close .ag-icon {\n background: var(--ag-header-background-color);\n border: 1px solid var(--ag-border-color);\n border-right: none;\n }\n .ag-theme-alpine .ag-chart-settings-card-item.ag-not-selected:hover,\n .ag-theme-alpine-dark .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 .ag-theme-alpine-dark .ag-ltr .ag-panel-title-bar-button {\n margin-left: calc(var(--ag-grid-size) * 2);\n margin-right: var(--ag-grid-size);\n }\n\n .ag-theme-alpine .ag-rtl .ag-panel-title-bar-button,\n .ag-theme-alpine-dark .ag-rtl .ag-panel-title-bar-button {\n margin-right: calc(var(--ag-grid-size) * 2);\n margin-left: var(--ag-grid-size);\n }\n\n .ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-container,\n .ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-container {\n padding-left: var(--ag-grid-size);\n }\n\n .ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-container,\n .ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-container {\n padding-right: var(--ag-grid-size);\n }\n\n .ag-theme-alpine .ag-filter-toolpanel-instance-filter,\n .ag-theme-alpine-dark .ag-filter-toolpanel-instance-filter {\n border: none;\n background-color: var(--ag-control-panel-background-color);\n }\n .ag-theme-alpine .ag-ltr .ag-filter-toolpanel-instance-filter,\n .ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-instance-filter {\n border-left: dashed 1px;\n border-left-color: var(--ag-border-color);\n margin-left: calc(var(--ag-icon-size) * 0.5);\n }\n\n .ag-theme-alpine .ag-rtl .ag-filter-toolpanel-instance-filter,\n .ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-instance-filter {\n border-right: dashed 1px;\n border-right-color: var(--ag-border-color);\n margin-right: calc(var(--ag-icon-size) * 0.5);\n }\n\n .ag-theme-alpine .ag-set-filter-list,\n .ag-theme-alpine-dark .ag-set-filter-list {\n padding-top: calc(var(--ag-grid-size) * 0.5);\n padding-bottom: calc(var(--ag-grid-size) * 0.5);\n }\n .ag-theme-alpine .ag-layout-auto-height .ag-center-cols-clipper,\n .ag-theme-alpine .ag-layout-auto-height .ag-center-cols-container,\n .ag-theme-alpine .ag-layout-print .ag-center-cols-clipper,\n .ag-theme-alpine .ag-layout-print .ag-center-cols-container,\n .ag-theme-alpine-dark .ag-layout-auto-height .ag-center-cols-clipper,\n .ag-theme-alpine-dark .ag-layout-auto-height .ag-center-cols-container,\n .ag-theme-alpine-dark .ag-layout-print .ag-center-cols-clipper,\n .ag-theme-alpine-dark .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 .ag-theme-alpine-dark .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 .ag-theme-alpine-dark .ag-date-time-list-page-entry-is-current {\n background-color: var(--ag-alpine-active-color);\n }\n\n .ag-theme-alpine-dark {\n color-scheme: dark;\n }\n`;\n","import { css } from '@microsoft/fast-element';\n/**\n * AG Balham Theme (no fonts) CSS.\n * @public\n */\nexport const agThemeBalhamNofontsCSS = css `\n .ag-theme-balham,\n .ag-theme-balham-dark {\n --ag-balham-active-color: #0091ea;\n --ag-foreground-color: #000;\n --ag-background-color: #fff;\n --ag-header-background-color: #f5f7f7;\n --ag-tooltip-background-color: #cbd0d3;\n --ag-subheader-background-color: #e2e9eb;\n --ag-control-panel-background-color: #f5f7f7;\n --ag-border-color: #bdc3c7;\n --ag-odd-row-background-color: #fcfdfe;\n --ag-row-hover-color: #ecf0f1;\n --ag-column-hover-color: #ecf0f1;\n --ag-input-border-color: #95a5a6;\n --ag-invalid-color: #e02525;\n --ag-input-disabled-background-color: #ebebeb;\n --ag-checkbox-unchecked-color: #7f8c8d;\n --ag-input-focus-border-color: #719ece;\n --ag-input-focus-box-shadow: 0 0 2px 1px var(--ag-input-focus-border-color);\n --ag-range-selection-border-color: var(--ag-balham-active-color);\n --ag-checkbox-checked-color: var(--ag-balham-active-color);\n --ag-checkbox-background-color: var(--ag-background-color);\n --ag-secondary-foreground-color: rgba(0, 0, 0, 0.54);\n --ag-disabled-foreground-color: rgba(0, 0, 0, 0.38);\n --ag-subheader-toolbar-background-color: rgba(226, 233, 235, 0.5);\n --ag-row-border-color: rgba(189, 195, 199, 0.58);\n --ag-chip-background-color: rgba(0, 0, 0, 0.1);\n --ag-range-selection-background-color: rgba(0, 145, 234, 0.2);\n --ag-range-selection-background-color-2: rgba(0, 145, 234, 0.36);\n --ag-range-selection-background-color-3: rgba(0, 145, 234, 0.49);\n --ag-range-selection-background-color-4: rgba(0, 145, 234, 0.59);\n --ag-selected-row-background-color: rgba(0, 145, 234, 0.28);\n --ag-header-column-separator-color: rgba(189, 195, 199, 0.5);\n --ag-input-disabled-border-color: rgba(149, 165, 166, 0.3);\n --ag-header-column-separator-display: block;\n --ag-header-column-separator-height: 50%;\n --ag-grid-size: 4px;\n --ag-icon-size: 16px;\n --ag-row-height: calc(var(--ag-grid-size) * 7);\n --ag-header-height: calc(var(--ag-grid-size) * 8);\n --ag-list-item-height: calc(var(--ag-grid-size) * 6);\n --ag-row-group-indent-size: calc(var(--ag-grid-size) * 3 + var(--ag-icon-size));\n --ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);\n --ag-input-height: calc(var(--ag-grid-size) * 4);\n --ag-font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell,\n 'Helvetica Neue', sans-serif;\n --ag-font-size: 12px;\n --ag-icon-font-family: agGridBalham;\n --ag-border-radius: 2px;\n --ag-checkbox-border-radius: 3px;\n --ag-card-shadow: none;\n }\n\n .ag-theme-balham-dark {\n --ag-balham-active-color: #00b0ff;\n --ag-foreground-color: #f5f5f5;\n --ag-background-color: #2d3436;\n --ag-header-background-color: #1c1c1c;\n --ag-tooltip-background-color: #1c1f20;\n --ag-subheader-background-color: #111;\n --ag-control-panel-background-color: #202020;\n --ag-border-color: #424242;\n --ag-odd-row-background-color: #262c2e;\n --ag-row-hover-color: #3d4749;\n --ag-column-hover-color: #3d4749;\n --ag-input-border-color: #f0f0f0;\n --ag-input-disabled-background-color: rgba(48, 46, 46, 0.3);\n --ag-modal-overlay-background-color: rgba(45, 52, 54, 0.66);\n --ag-checkbox-unchecked-color: #ecf0f1;\n --ag-secondary-foreground-color: var(--ag-foreground-color);\n --ag-disabled-foreground-color: rgba(245, 245, 245, 0.38);\n --ag-subheader-toolbar-background-color: rgba(17, 17, 17, 0.5);\n --ag-row-border-color: #5c5c5c;\n --ag-chip-background-color: rgba(245, 245, 245, 0.08);\n --ag-range-selection-background-color: rgba(0, 176, 255, 0.2);\n --ag-range-selection-background-color-2: rgba(0, 176, 255, 0.36);\n --ag-range-selection-background-color-3: rgba(0, 176, 255, 0.49);\n --ag-range-selection-background-color-4: rgba(0, 176, 255, 0.59);\n --ag-selected-row-background-color: rgba(0, 176, 255, 0.28);\n --ag-header-column-separator-color: rgba(66, 66, 66, 0.5);\n --ag-input-disabled-border-color: rgba(240, 240, 240, 0.3);\n --ag-header-foreground-color: rgba(245, 245, 245, 0.64);\n --ag-toggle-button-off-background-color: transparent;\n --ag-toggle-button-off-border-color: var(--ag-foreground-color);\n --ag-range-selection-chart-category-background-color: rgba(26, 177, 74, 0.5);\n --ag-range-selection-chart-background-color: rgba(45, 166, 255, 0.5);\n --ag-input-focus-box-shadow: 0 0 4px 1.5px var(--ag-input-focus-border-color);\n }\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 .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: var(--ag-header-foreground-color);\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 .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: var(--ag-grid-size);\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 .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: var(--ag-grid-size);\n }\n\n .ag-theme-balham .ag-column-drop-vertical-empty-message,\n .ag-theme-balham .ag-status-bar,\n .ag-theme-balham-dark .ag-column-drop-vertical-empty-message,\n .ag-theme-balham-dark .ag-status-bar {\n font-weight: 600;\n color: var(--ag-disabled-foreground-color);\n }\n .ag-theme-balham.ag-dnd-ghost,\n .ag-theme-balham-dark.ag-dnd-ghost {\n font-size: var(--ag-font-size);\n font-weight: 600;\n }\n .ag-theme-balham .ag-tab,\n .ag-theme-balham-dark .ag-tab {\n border: 1px solid transparent;\n padding: var(--ag-grid-size) calc(var(--ag-grid-size) * 2);\n margin: var(--ag-grid-size);\n margin-bottom: -1px;\n }\n .ag-theme-balham .ag-tab-selected,\n .ag-theme-balham-dark .ag-tab-selected {\n background-color: var(--ag-background-color);\n border-color: var(--ag-border-color);\n border-bottom-color: transparent;\n }\n .ag-theme-balham .ag-tabs-header,\n .ag-theme-balham-dark .ag-tabs-header {\n border-bottom: 1px solid var(--ag-border-color);\n }\n .ag-theme-balham .ag-column-drop-cell,\n .ag-theme-balham-dark .ag-column-drop-cell {\n height: calc(var(--ag-grid-size) * 6);\n }\n .ag-theme-balham .ag-column-drop-vertical-title,\n .ag-theme-balham-dark .ag-column-drop-vertical-title {\n color: var(--ag-foreground-color);\n }\n .ag-theme-balham .ag-column-drop-vertical-cell,\n .ag-theme-balham-dark .ag-column-drop-vertical-cell {\n margin-left: calc(var(--ag-grid-size) * 2);\n margin-right: calc(var(--ag-grid-size) * 2);\n }\n .ag-theme-balham .ag-column-drop-vertical-cell-text,\n .ag-theme-balham-dark .ag-column-drop-vertical-cell-text {\n margin-left: calc(var(--ag-grid-size) * 2);\n }\n .ag-theme-balham .ag-column-drop-vertical-icon,\n .ag-theme-balham-dark .ag-column-drop-vertical-icon {\n color: var(--ag-secondary-foreground-color);\n }\n .ag-theme-balham .ag-ltr .ag-column-drop-vertical-empty-message,\n .ag-theme-balham-dark .ag-ltr .ag-column-drop-vertical-empty-message {\n padding-left: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n padding-right: var(--ag-grid-size);\n }\n\n .ag-theme-balham .ag-rtl .ag-column-drop-vertical-empty-message,\n .ag-theme-balham-dark .ag-rtl .ag-column-drop-vertical-empty-message {\n padding-right: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n padding-left: var(--ag-grid-size);\n }\n\n .ag-theme-balham .ag-column-drop-horizontal,\n .ag-theme-balham-dark .ag-column-drop-horizontal {\n height: var(--ag-header-height);\n }\n .ag-theme-balham .ag-column-drop-empty,\n .ag-theme-balham-dark .ag-column-drop-empty {\n color: var(--ag-disabled-foreground-color);\n }\n .ag-theme-balham .ag-column-drop-horizontal-cell-text,\n .ag-theme-balham-dark .ag-column-drop-horizontal-cell-text {\n margin-left: calc(var(--ag-grid-size) * 2);\n }\n .ag-theme-balham .ag-column-drop-vertical,\n .ag-theme-balham-dark .ag-column-drop-vertical {\n padding-top: calc(var(--ag-grid-size) * 2);\n }\n .ag-theme-balham .ag-menu-header,\n .ag-theme-balham-dark .ag-menu-header {\n background-color: var(--ag-header-background-color);\n }\n .ag-theme-balham .ag-overlay-loading-center,\n .ag-theme-balham-dark .ag-overlay-loading-center {\n background-color: var(--ag-background-color);\n border: 1px solid var(--ag-border-color);\n color: var(--ag-foreground-color);\n padding: calc(var(--ag-grid-size) * 4);\n }\n .ag-theme-balham .ag-tooltip,\n .ag-theme-balham-dark .ag-tooltip {\n border: none;\n }\n .ag-theme-balham .ag-panel-title-bar-button-icon,\n .ag-theme-balham-dark .ag-panel-title-bar-button-icon {\n font-size: calc(var(--ag-icon-size) + var(--ag-grid-size));\n }\n .ag-theme-balham .ag-chart-data-section,\n .ag-theme-balham .ag-chart-format-section,\n .ag-theme-balham-dark .ag-chart-data-section,\n .ag-theme-balham-dark .ag-chart-format-section {\n padding-bottom: calc(var(--ag-grid-size) * 0.5);\n }\n .ag-theme-balham .ag-group-toolbar,\n .ag-theme-balham-dark .ag-group-toolbar {\n background-color: var(--ag-subheader-toolbar-background-color);\n }\n .ag-theme-balham .ag-chart-tab,\n .ag-theme-balham-dark .ag-chart-tab {\n padding-top: calc(var(--ag-grid-size) * 0.5);\n }\n .ag-theme-balham .ag-charts-format-sub-level-group-item,\n .ag-theme-balham-dark .ag-charts-format-sub-level-group-item {\n margin-bottom: calc(var(--ag-grid-size) * 1.5);\n }\n .ag-theme-balham .ag-chart-menu-close,\n .ag-theme-balham-dark .ag-chart-menu-close {\n background: var(--ag-background-color);\n }\n .ag-theme-balham .ag-chart-menu-close:hover .ag-icon,\n .ag-theme-balham-dark .ag-chart-menu-close:hover .ag-icon {\n border-color: var(--ag-border-color);\n }\n .ag-theme-balham .ag-chart-menu-close .ag-icon,\n .ag-theme-balham-dark .ag-chart-menu-close .ag-icon {\n background: var(--ag-header-background-color);\n border: 1px solid var(--ag-secondary-border-color);\n border-right: none;\n }\n\n .ag-theme-balham-dark {\n color-scheme: dark;\n }\n`;\n","import { css } from '@microsoft/fast-element';\n/**\n * AG Material Theme (no fonts) CSS.\n * @public\n */\nexport const agThemeMaterialNofontsCSS = css `\n .ag-theme-material {\n --ag-material-primary-color: #3f51b5;\n --ag-material-accent-color: #ff4081;\n --ag-foreground-color: rgba(0, 0, 0, 0.87);\n --ag-secondary-foreground-color: rgba(0, 0, 0, 0.54);\n --ag-disabled-foreground-color: rgba(0, 0, 0, 0.38);\n --ag-background-color: #fff;\n --ag-header-background-color: #fff;\n --ag-tooltip-background-color: #fff;\n --ag-subheader-background-color: #eee;\n --ag-subheader-toolbar-background-color: rgba(238, 238, 238, 0.5);\n --ag-header-cell-hover-background-color: #f2f2f2;\n --ag-chip-background-color: #e2e2e2;\n --ag-range-selection-background-color: rgba(122, 134, 203, 0.1);\n --ag-range-selection-background-color-2: rgba(122, 134, 203, 0.19);\n --ag-range-selection-background-color-3: rgba(122, 134, 203, 0.27);\n --ag-range-selection-background-color-4: rgba(122, 134, 203, 0.34);\n --ag-range-selection-highlight-color: #fce4ec;\n --ag-row-hover-color: #fafafa;\n --ag-column-hover-color: #fafafa;\n --ag-control-panel-background-color: #fafafa;\n --ag-selected-row-background-color: #eee;\n --ag-checkbox-unchecked-color: #333;\n --ag-value-change-value-highlight-background-color: #00acc1;\n --ag-side-button-selected-background-color: transparent;\n --ag-range-selection-border-color: var(--ag-material-primary-color);\n --ag-checkbox-checked-color: var(--ag-material-accent-color);\n --ag-borders: none;\n --ag-borders-critical: solid 1px;\n --ag-border-color: #e2e2e2;\n --ag-grid-size: 8px;\n --ag-icon-size: 18px;\n --ag-header-height: calc(var(--ag-grid-size) * 7);\n --ag-row-height: calc(var(--ag-grid-size) * 6);\n --ag-cell-horizontal-padding: calc(var(--ag-grid-size) * 3);\n --ag-list-item-height: calc(var(--ag-grid-size) * 4);\n --ag-row-group-indent-size: calc(var(--ag-grid-size) * 3 + var(--ag-icon-size));\n --ag-filter-tool-panel-sub-level-row-height: calc(var(--ag-grid-size) * 4);\n --ag-checkbox-border-radius: 2px;\n --ag-toggle-button-switch-border-width: 2px;\n --ag-toggle-button-height: var(--ag-icon-size);\n --ag-widget-container-horizontal-padding: calc(var(--ag-grid-size) * 1.5);\n --ag-widget-container-vertical-padding: calc(var(--ag-grid-size) * 2);\n --ag-widget-vertical-spacing: calc(var(--ag-grid-size) * 1.75);\n --ag-font-family: 'Roboto', sans-serif;\n --ag-font-size: 13px;\n --ag-icon-font-family: agGridMaterial;\n --ag-selected-tab-underline-color: var(--ag-material-primary-color);\n --ag-selected-tab-underline-width: 2px;\n --ag-input-focus-border-color: var(--ag-material-primary-color);\n --ag-input-focus-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n --ag-card-shadow:\n 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14),\n 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n --ag-card-radius: 2px;\n --ag-invalid-color: #e02525;\n }\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-multi-filter-group-title-bar {\n font-size: calc(var(--ag-font-size) - 1px);\n font-weight: 600;\n color: var(--ag-header-foreground-color);\n }\n .ag-theme-material .ag-tab {\n height: calc(var(--ag-grid-size) * 4.5);\n flex: 1 1 auto;\n }\n .ag-theme-material .ag-tabs-header,\n .ag-theme-material .ag-column-drop-horizontal {\n background-color: var(--ag-subheader-background-color);\n }\n .ag-theme-material .ag-tabs-body {\n padding: calc(var(--ag-grid-size) * 0.5) 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,\n .ag-theme-material .ag-header-group-cell {\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: var(--ag-grid-size);\n height: calc(var(--ag-row-height) + var(--ag-grid-size) * 3);\n border-color: var(--ag-border-color) !important;\n }\n .ag-theme-material .ag-has-focus .ag-cell-inline-editing {\n border-color: var(--ag-input-focus-border-color) !important;\n }\n .ag-theme-material .ag-side-button-button {\n color: var(--ag-foreground-color);\n }\n .ag-theme-material .ag-column-drop-vertical {\n border-bottom: solid 1px;\n border-bottom-color: var(--ag-border-color);\n padding-top: var(--ag-grid-size);\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: calc(var(--ag-font-size) - 1px);\n font-weight: 600;\n color: var(--ag-disabled-foreground-color);\n }\n .ag-theme-material .ag-ltr .ag-column-drop-vertical-empty-message {\n padding-left: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n padding-right: var(--ag-grid-size);\n }\n\n .ag-theme-material .ag-rtl .ag-column-drop-vertical-empty-message {\n padding-right: calc(var(--ag-icon-size) + var(--ag-grid-size) * 2);\n padding-left: var(--ag-grid-size);\n }\n\n .ag-theme-material .ag-status-bar {\n border: solid 1px;\n border-color: var(--ag-border-color);\n }\n .ag-theme-material .ag-column-panel-column-select {\n border-top: solid 1px;\n border-top-color: var(--ag-border-color);\n }\n .ag-theme-material .ag-column-select,\n .ag-theme-material .ag-column-select-header {\n border-bottom: solid 1px;\n border-bottom-color: var(--ag-border-color);\n }\n .ag-theme-material .ag-column-select-header {\n height: var(--ag-header-height);\n }\n .ag-theme-material .ag-group-title-bar {\n padding: calc(var(--ag-grid-size) * 0.75) var(--ag-grid-size);\n }\n .ag-theme-material .ag-charts-format-sub-level-group-title-bar {\n padding: calc(var(--ag-grid-size) * 0.5) var(--ag-grid-size);\n }\n .ag-theme-material .ag-chart-data-section,\n .ag-theme-material .ag-chart-format-section {\n padding-bottom: calc(var(--ag-grid-size) * 0.5);\n }\n .ag-theme-material .ag-chart-menu-close {\n background: var(--ag-background-color);\n }\n .ag-theme-material .ag-chart-menu-close .ag-icon {\n background: var(--ag-subheader-background-color);\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: var(--ag-foreground-color);\n font-family: inherit;\n font-size: inherit;\n height: calc(var(--ag-grid-size) * 5);\n padding-bottom: var(--ag-grid-size);\n border-width: 0;\n border-bottom: 2px solid;\n border-bottom-color: var(--ag-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 border-bottom: 2px solid;\n border-bottom-color: var(--ag-material-primary-color);\n outline: none;\n box-shadow: none;\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: var(--ag-disabled-foreground-color);\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 border-bottom: 1px solid;\n border-bottom-color: var(--ag-border-color);\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: 0;\n border-bottom: 1px solid;\n border-bottom-color: var(--ag-invalid-color);\n color: var(--ag-invalid-color);\n }\n .ag-theme-material .ag-standard-button {\n appearance: none;\n background-color: transparent;\n border: 0;\n color: var(--ag-material-primary-color);\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: var(--ag-disabled-foreground-color);\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: calc(var(--ag-font-size) - 1px);\n font-weight: 600;\n }\n .ag-theme-material .ag-filter-toolpanel-header {\n height: calc(var(--ag-grid-size) * 4);\n }\n .ag-theme-material .ag-filter-toolpanel-group-level-0-header {\n height: calc(var(--ag-grid-size) * 7);\n }\n .ag-theme-material .ag-ltr .ag-filter-apply-panel-button {\n margin-left: var(--ag-grid-size);\n }\n\n .ag-theme-material .ag-rtl .ag-filter-apply-panel-button {\n margin-right: var(--ag-grid-size);\n }\n\n .ag-theme-material .ag-layout-auto-height .ag-center-cols-clipper,\n .ag-theme-material .ag-layout-auto-height .ag-center-cols-container,\n .ag-theme-material .ag-layout-print .ag-center-cols-clipper,\n .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 box-shadow: 0 0 0 1px var(--ag-material-primary-color);\n }\n`;\n","import { css } from '@microsoft/fast-element';\nimport { agGridCSS } from './ag-grid-css';\nimport { agHeadCSS } from './ag-head-css';\nimport { agThemeAlpineNofontsCSS } from './ag-theme-alpine-no-font-css';\nimport { agThemeBalhamNofontsCSS } from './ag-theme-balham-no-font-css';\nimport { agThemeMaterialNofontsCSS } from './ag-theme-material-no-font-css';\nexport * from './fonts';\n/**\n * All External AG Grid Stock in one CSS.\n * @remarks This is a collection of multiple AG themes, only needed if the target element needs more than one stock theme.\n * @public\n */\nexport const agExternalStockStyles = css `\n ${agGridCSS}\n ${agHeadCSS}\n ${agThemeAlpineNofontsCSS}\n ${agThemeBalhamNofontsCSS}\n ${agThemeMaterialNofontsCSS}\n`;\n/**\n * All available External AG Grid Stock CSS.\n * @public\n */\nexport { agGridCSS, agHeadCSS, agThemeAlpineNofontsCSS, agThemeBalhamNofontsCSS, agThemeMaterialNofontsCSS, };\n","/**\n * Event names for datasource-grid communication\n * These represent datasource operations, not grid-specific actions\n */\nexport const datasourceEventNames = {\n // Initialization events\n initialize: 'datasource-initialize',\n ready: 'datasource-ready',\n // Data events\n dataLoaded: 'datasource-data-loaded',\n dataChanged: 'datasource-data-changed',\n dataCleared: 'datasource-data-cleared',\n // Schema events\n schemaUpdated: 'datasource-schema-updated',\n // Status events\n loadingStarted: 'datasource-loading-started',\n loadingFinished: 'datasource-loading-finished',\n noDataAvailable: 'datasource-no-data-available',\n moreDataAvailable: 'datasource-more-data-available',\n // Filter events\n filtersRestored: 'datasource-filters-restored',\n // Error events\n error: 'datasource-error',\n // Destroy datasource events\n destroy: 'datasource-destroy',\n // Size events\n sizeChanged: 'datasource-size-changed',\n // Server-side specific events\n cacheFilterConfig: 'cache-filter-config',\n refreshServerSide: 'refresh-server-side',\n setServerSideDatasource: 'set-server-side-datasource',\n addGridCssClass: 'add-grid-css-class',\n removeGridCssClass: 'remove-grid-css-class',\n applyServerSideTransaction: 'apply-server-side-transaction',\n // Infinite Row Model specific events\n setInfiniteDatasource: 'set-infinite-datasource',\n refreshInfiniteCache: 'refresh-infinite-cache',\n};\n","/**\n * The Genesis Datasource events names.\n * @public\n */\nexport const gridProGenesisDatasourceEventNames = {\n error: 'datasource-error',\n dataInit: 'datasource-init',\n sizeChanged: 'datasource-size-changed',\n moreRowsChanged: 'more-rows-changed',\n};\n","import { FieldTypeEnum } from '@genesislcap/foundation-comms';\nimport { getEnumFilterParams } from '../grid-pro.definitions';\n/**\n * Returns a filter type based on the Grid Pro field/column type.\n * @param type - The type of the field/column\n * @returns The ag-grid filter type\n */\nexport function getFilterByFieldType(type) {\n switch (type === null || type === void 0 ? void 0 : type.toLowerCase()) {\n case 'int':\n case 'long':\n case 'double':\n case 'bigdecimal':\n case 'number':\n return 'agNumberColumnFilter';\n case 'date':\n case 'datetime':\n return 'agDateColumnFilter';\n case 'string':\n case 'enum':\n return 'agMultiColumnFilter';\n default:\n return 'agTextColumnFilter';\n }\n}\n/**\n * Returns the filter params based on the Grid Pro field/column type.\n * @param field - The field metadata\n * @returns the filter params for the specified field type\n * @remarks Currently only returns a default filter params object, for all field types\n * @alpha\n */\nexport function getClientSideFilterParamsByFieldType(field) {\n switch (field.type) {\n case FieldTypeEnum.DATE:\n case FieldTypeEnum.DATETIME: {\n return {\n comparator: function (filterLocalDateAtMidnight, cellValue) {\n if (!cellValue)\n return -1;\n const cellValueTime = new Date(cellValue).setHours(0, 0, 0, 0);\n const filterValueTime = filterLocalDateAtMidnight.getTime();\n if (cellValueTime === filterValueTime) {\n return 0;\n }\n if (cellValueTime < filterValueTime) {\n return -1;\n }\n if (cellValueTime > filterValueTime) {\n return 1;\n }\n },\n buttons: ['reset', 'apply'],\n closeOnApply: true,\n closeOnClear: true,\n maxNumConditions: 1,\n browserDatePicker: true,\n };\n }\n case FieldTypeEnum.ENUM: {\n return getEnumFilterParams(field, getFilterByFieldType(field.type));\n }\n }\n}\n","import { __awaiter, __decorate } from \"tslib\";\nimport { MessageType, ResourceType, dataServerResultFilter, normaliseCriteria, } from '@genesislcap/foundation-comms';\nimport { LifecycleMixin } from '@genesislcap/foundation-utils';\nimport { DOM, attr, customElement } from '@microsoft/fast-element';\nimport { BehaviorSubject, EMPTY } from 'rxjs';\nimport { catchError, debounceTime, skip, tap } from 'rxjs/operators';\nimport { GridProBaseDatasource, criteriaDelimiter } from '../datasource/base.datasource';\nimport { getClientSideFilterParamsByFieldType, getFilterByFieldType, } from '../datasource/client-side.grid-definitions';\nimport { logger } from '../utils/logger';\nimport { datasourceEventNames, } from './datasource-events.types';\nimport { gridProGenesisDatasourceEventNames, } from './grid-pro-genesis-datasource.config';\nconst withoutFullInit = null;\nconst withoutColumnDefs = null;\n/**\n * The Genesis Datasource element, for CSRM-compatible data fetching and used exclusively by the GridPro element.\n * @remarks Only supports Client-Side Row Model.\n * @public\n *\n * @fires base-datasource-error - Fired when a datasource error is reported. detail: `BaseDatasourceErrorEventDetail`\n * @fires datasource-error - Fired when a datasource error occurs (for grid integration). detail: `DatasourceErrorEventDetail`\n * @fires base-datasource-connected - Fired when error state is cleared after connection succeeds\n * @fires datasource-loading-finished - Fired when loading completes with no pending row changes\n * @fires datasource-no-data-available - Fired when the grid has no rows after load\n * @fires datasource-data-changed - Fired when row data changes from stream updates. detail: `DataChangedEventDetail`\n * @fires datasource-initialize - Fired to hand off grid options and initialization flags. detail: `InitializeEventDetail`\n * @fires datasource-destroy - Fired when the datasource is torn down\n * @fires datasource-data-cleared - Fired when row data is cleared. detail: `DataClearedEventDetail`\n * @fires datasource-schema-updated - Fired when column metadata or defs are updated. detail: `SchemaUpdatedEventDetail`\n * @fires datasource-filters-restored - Fired when persisted filters are reapplied\n * @fires datasource-data-loaded - Fired when a data payload is loaded for the grid. detail: `DataLoadedEventDetail`\n * @fires datasource-loading-started - Fired when a load or refresh starts\n * @fires datasource-more-data-available - Fired when more server rows can be requested. detail: `MoreDataAvailableEventDetail`\n * @fires datasource-ready - Fired when the host grid is ready to start loading data\n * @fires datasource-init - Fired when initial grid data is ready for the client-side model\n * @fires more-rows-changed - Fired when MORE_ROWS availability changes. detail: `MoreRowsDetail`\n * @fires datasource-size-changed - Fired when layout or viewport sizing affects the datasource. detail: `GrigProGenesisDatasourceSizeChangedEventDetail`\n */\nlet GridProGenesisDatasource = class GridProGenesisDatasource extends LifecycleMixin(GridProBaseDatasource) {\n constructor() {\n super(...arguments);\n // Cache for rowData array to avoid repeated Array.from() calls\n this.cachedRowArray = [];\n // Transaction data for grid operations\n this.transactionData = {\n add: [],\n remove: [],\n update: [],\n addIndex: 0,\n };\n this.keepColDefsOnClearRowData = false;\n /**\n * When enabled and column definitions are provided, the datasource requests data only for the\n * columns that are currently visible. The visible set is seeded from the column config (columns\n * not flagged with `hide`) and updated by the host grid via `setVisibleColumns`; the data\n * is reloaded whenever that set changes.\n * @remarks DATASERVER only.\n * @default false\n */\n this.requestVisibleColumnsOnly = false;\n this.requiresFullRowDataAndColDefs = true;\n this._lastMoreRows = false;\n this._isMoreRowsResult = false;\n this._nextOffset = 0;\n this._loadMoreCount = 0;\n this.onDatasourceReady = () => {\n void this.loadResourceData();\n };\n }\n // DatasourceOptions\n criteriaChanged(oldCriteria, newCriteria) {\n return __awaiter(this, void 0, void 0, function* () {\n const criteriaIsNotDuplicate = oldCriteria !== normaliseCriteria(newCriteria, criteriaDelimiter);\n if (this.datasource.initialized && criteriaIsNotDuplicate) {\n yield this.reloadResourceData();\n }\n });\n }\n requestChanged(oldRequest, newRequest) {\n const requestIsNotDuplicate = oldRequest !== newRequest;\n if (this.datasource.initialized && requestIsNotDuplicate) {\n this.reloadResourceData();\n }\n }\n resourceNameChanged(oldValue, newValue) {\n if (!oldValue || oldValue === newValue)\n return;\n this.restart();\n }\n connectedCallback() {\n super.connectedCallback();\n const shouldRunConnect = this.shouldRunConnect;\n DOM.queueUpdate(() => {\n if (!shouldRunConnect)\n return;\n this.init();\n this.subscribeToConnection();\n });\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n const shouldRunDisconnect = this.shouldRunDisconnect;\n DOM.queueUpdate(() => {\n if (!shouldRunDisconnect)\n return;\n this.destroy();\n this.unsubscribeFromConnection();\n });\n }\n deepClone() {\n const copy = super.deepClone();\n copy.deferredGridOptions = {};\n if (this.deferredGridOptions) {\n Object.keys(this.deferredGridOptions).forEach((key) => {\n if (typeof this.deferredGridOptions[key] === 'function') {\n copy.deferredGridOptions[key] = this.deferredGridOptions[key].bind(copy);\n }\n else if (key === 'columnDefs' && this.deferredGridOptions[key].length) {\n copy.deferredGridOptions[key] = this.colDefsDeepClone(key, copy);\n }\n else {\n copy.deferredGridOptions[key] = structuredClone(this.deferredGridOptions[key]);\n }\n });\n }\n copy.deferredColumnStates = structuredClone(this.deferredColumnStates);\n copy.request = structuredClone(this.request);\n return copy;\n }\n colDefsDeepClone(key, copy) {\n return this.deferredGridOptions[key].map((columnDefinition) => {\n const definitionCopy = {};\n Object.keys(columnDefinition).forEach((fieldKey) => {\n if (typeof columnDefinition[fieldKey] === 'function') {\n definitionCopy[fieldKey] = columnDefinition[fieldKey].bind(copy);\n }\n else {\n definitionCopy[fieldKey] = structuredClone(columnDefinition[fieldKey]);\n }\n });\n return definitionCopy;\n });\n }\n // Genesis Specific\n /**\n * Initializes the datasource.\n * @public\n * @param columnDefinitions - Optionally set the `gridOptions` up with column definitions\n * @param columnStates - Optionally set the grid up with column state\n * @remarks This method is called automatically when the element is connected to the DOM.\n */\n init(keepColDefsOnClearRowData) {\n return __awaiter(this, void 0, void 0, function* () {\n this.$emit(datasourceEventNames.initialize, {\n keepColDefsOnClearRowData,\n options: Object.assign({ getRowId: (params) => params.data[this.rowId] }, this.deferredGridOptions),\n });\n // TODO: instead of listening to ready event, we should only render the datasource slot when the grid is ready\n this.clearReadyListener();\n this.addEventListener(datasourceEventNames.ready, this.onDatasourceReady, {\n once: true,\n });\n const filterDebounceTime = 600;\n this.updateSub = this.update\n .pipe(skip(1), debounceTime(filterDebounceTime), tap((f) => logger.debug('filters (debounced): ', f)))\n .subscribe((_) => {\n this.reloadResourceData();\n });\n });\n }\n clearReadyListener() {\n this.removeEventListener(datasourceEventNames.ready, this.onDatasourceReady);\n }\n /**\n * Destroys the datasource, resetting it to its initial state.\n * @public\n */\n destroy() {\n var _a;\n logger.debug('GridProGenesisDatasource.destroy()', this.resourceName);\n this.clearReadyListener();\n if (this.dataSub) {\n this.dataSub.unsubscribe();\n this.dataSub = undefined;\n }\n if (this.updateSub) {\n this.updateSub.unsubscribe();\n this.updateSub = undefined;\n }\n if (this.connectionSub) {\n this.connectionSub.unsubscribe();\n this.connectionSub = undefined;\n }\n this._sourceRef = undefined;\n this._visibleColumns = undefined;\n this.clearRowData();\n this._lastMoreRows = false;\n this._isMoreRowsResult = false;\n this._nextOffset = 0;\n this._loadMoreCount = 0;\n this.$emit(datasourceEventNames.destroy);\n this.requiresFullRowDataAndColDefs = true;\n this.dataSubWasLoggedOff = false;\n this.criteriaFromFilters = new Map();\n (_a = this.update) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.update = new BehaviorSubject(new Map());\n this.setDisconnected(false);\n // TODO: There may need to be a full destroy path. Datasources need some love!\n this.datasource.destroy();\n }\n /**\n * Deinitialises the datasource, resetting it to its initial state.\n * @deprecated Use `destroy` instead\n * @public\n */\n deinit() {\n logger.debug('GridProGenesisDatasource.deinit()', this.resourceName);\n this.destroy();\n }\n /**\n * Resets the datasource to its initial state.\n * @public\n * @deprecated Use `destroy` instead\n */\n reset() {\n logger.debug('GridProGenesisDatasource.reset()', this.resourceName);\n this.destroy();\n }\n /**\n * Restarts the datasource, uses `destroy` and `init` in sequence.\n * @public\n */\n restart() {\n return __awaiter(this, void 0, void 0, function* () {\n this.destroy();\n yield this.init(this.keepColDefsOnClearRowData);\n });\n }\n /**\n * Force the grid to redispatch the current rows\n */\n refreshRows() {\n this.updateCachedRowArray(); // Ensure the cache is up-to-date\n this.emitDataLoaded(this.cachedRowArray);\n }\n /**\n * Clears the rowData and columnDefs for the grid.\n * @remarks This is called when `reloadResourceData` happens, on criteria and filters change or full `reset`.\n * @param withColumnDefs - Whether to clear the columnDefs as well. Defaults to true.\n * @internal\n */\n clearRowData(withColumnDefs = true) {\n this.rowData = new Map();\n this.cachedRowArray = []; // Clear the cached array\n this.transactionData = { add: [], remove: [], update: [], addIndex: 0 };\n // Emit event to clear data\n this.$emit(datasourceEventNames.dataCleared, {\n includeSchema: withColumnDefs && !this.keepColDefsOnClearRowData,\n });\n }\n /**\n * Sets the columnDefs and rowData for the grid.\n * @remarks This should only happen once, when the grid is first initialized. Follow up updates will use transactions.\n * @internal\n */\n setRowData(rowData) {\n return __awaiter(this, void 0, void 0, function* () {\n const agColumnDefs = yield this.getAgColumnDefs(this.datasource.fieldMetadata);\n if (agColumnDefs) {\n this.$emit(datasourceEventNames.schemaUpdated, {\n schema: agColumnDefs,\n metadata: this.datasource.fieldMetadata,\n });\n }\n const data = this.rowDataMapper ? this.rowDataMapper(rowData) : rowData;\n this.$emit(datasourceEventNames.filtersRestored);\n // Use transactions for adding data\n this.transactionData = { add: data ? [...data] : [], remove: [], update: [], addIndex: 0 };\n this.emitDataChanged(this.transactionData);\n // Update the cached row array\n this.updateCachedRowArray();\n this.requiresFullRowDataAndColDefs = false;\n });\n }\n /**\n * Updates the cached row array from the rowData Map\n * @internal\n */\n updateCachedRowArray() {\n this.cachedRowArray = Array.from(this.rowData.values());\n }\n /**\n * Emits event to notify data has been loaded\n * @internal\n */\n emitDataLoaded(data, isInitialLoad = false) {\n this.$emit(datasourceEventNames.dataLoaded, {\n data,\n isInitialLoad,\n });\n }\n /**\n * Emits event to notify data has changed\n * @internal\n */\n emitDataChanged(transaction) {\n this.$emit(datasourceEventNames.dataChanged, {\n changes: transaction,\n });\n if (this.rowData.size === 0 &&\n !transaction.add.length &&\n !transaction.update.length &&\n !transaction.remove.length) {\n this.$emit(datasourceEventNames.noDataAvailable);\n }\n else {\n this.$emit(datasourceEventNames.loadingFinished);\n }\n }\n /**\n * Resets the grid data while keeping columnDefs and sends a DATA_LOGOFF message if it's a stream.\n * Loads resource data without full initialization (no metadata fetch).\n * @remarks This is used when the grid is already initialized and we want to reload the data due to a criteria/filter change.\n * @see loadResourceData\n * @public\n */\n reloadResourceData() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug('GridProGenesisDatasource.reloadResourceData()', this.resourceName);\n if (this.dataSub) {\n this.dataSub.unsubscribe();\n this.dataSub = undefined;\n }\n // Reset load more tracking on reload\n this._nextOffset = 0;\n this._loadMoreCount = 0;\n this.datasource.updateLoadMoreCount(0);\n this.datasource.stream = undefined;\n this.clearRowData(withoutColumnDefs);\n // Force the next data batch through setRowData() so filtersRestored is emitted and filters are reapplied.\n this.requiresFullRowDataAndColDefs = true;\n this.$emit(datasourceEventNames.loadingStarted);\n this.setDisconnected(false);\n yield this.loadResourceData(withoutFullInit);\n });\n }\n /**\n * Initializes the datasource and loads the data for the grid.\n * Handles both snapshot and stream data (for both REQUEST_SERVER and DATASERVER resource types).\n *\n * @param withFullInit - if true, will call datasource.init() with requiresMetadataFetch = true, fetching fresh metadata\n * @see reloadResourceData\n * @internal\n */\n loadResourceData() {\n return __awaiter(this, arguments, void 0, function* (withFullInit = true) {\n const requiresMetadataFetch = withFullInit || !this.datasource.initialized;\n try {\n // Use the base datasource error handling\n const initOK = yield this.initializeDatasource(this.datasourceOptions(), requiresMetadataFetch, false);\n if (!initOK) {\n logger.debug(`Genesis Datasource init failed for ${this.resourceName}`);\n this.clearRowData();\n return;\n }\n this.$emit(gridProGenesisDatasourceEventNames.dataInit);\n if (this.isSnapshot) {\n const result = yield this.datasource.snapshot();\n if (result) {\n const rowData = this.handleSnapshot(result);\n this.setRowData(rowData);\n }\n return;\n }\n logger.debug(`starting stream for ${this.resourceName}`);\n yield this.datasource.startStream();\n this.dataSub = this.datasource.stream\n .pipe(catchError((err) => {\n var _a;\n // Use base error handling for stream errors\n this.handleErrors(((_a = err === null || err === void 0 ? void 0 : err.receivedMessage) === null || _a === void 0 ? void 0 : _a.ERROR) || (err === null || err === void 0 ? void 0 : err.message) || err, 'stream');\n return EMPTY;\n }))\n .subscribe((result) => {\n this._sourceRef = result.SOURCE_REF;\n const hasMoreRowsInResult = 'MORE_ROWS' in result;\n const hasRowsCountInResult = 'ROWS_COUNT' in result;\n const hasNextOffsetInResult = this.datasource.resourceType === ResourceType.REQUEST_SERVER && 'NEXT_OFFSET' in result;\n this._isMoreRowsResult = hasMoreRowsInResult && !hasRowsCountInResult;\n // Store NEXT_OFFSET for RequestServer load more functionality\n if (hasNextOffsetInResult) {\n this._nextOffset = result.NEXT_OFFSET;\n }\n if (result === null || result === void 0 ? void 0 : result.ERROR) {\n this.handleErrors(result.ERROR, 'criteria');\n }\n const messageType = result.MESSAGE_TYPE;\n if (messageType && messageType === MessageType.LOGOFF_ACK) {\n this.handleErrors(`Genesis datasource for ${this.resourceName} disconnected.`, 'connection');\n this.dataSubWasLoggedOff = true;\n return;\n }\n this.dataSubWasLoggedOff = false;\n if (hasMoreRowsInResult) {\n this.updateLoadMoreStatus(result.MORE_ROWS, result.SOURCE_REF);\n }\n if (result.ROW) {\n const nextMessage = dataServerResultFilter(result);\n this.handleStreamResult(nextMessage);\n if (hasMoreRowsInResult && result.MORE_ROWS !== this._lastMoreRows) {\n const moreRowsDetail = {\n moreRows: result.MORE_ROWS,\n sourceRef: result.SOURCE_REF,\n };\n this.$emit(gridProGenesisDatasourceEventNames.moreRowsChanged, moreRowsDetail);\n this._lastMoreRows = result.MORE_ROWS;\n }\n }\n else {\n this.handleStreamResult(result);\n }\n });\n }\n catch (error) {\n let { message } = error;\n if (error.receivedMessage) {\n message = error.receivedMessage.ERROR;\n }\n logger.error(message);\n // Use base error handling for general errors\n this.handleErrors(message, 'unknown');\n }\n });\n }\n handleSnapshot(result) {\n if (Array.isArray(result))\n return result;\n if (result.REPLY) {\n return result.REPLY;\n }\n if (result.ROW) {\n return dataServerResultFilter(result).inserts;\n }\n return result.inserts;\n }\n handleStreamResult(result) {\n if (!result)\n return;\n if (this.isRequestServer) {\n this.applyRequestServerData(result);\n }\n else {\n this.applyDataserverData(result);\n }\n }\n /**\n * Updates the status bar based on more rows status\n * @param moreRows - Whether more rows are available\n * @param sourceRef - The source reference\n * @param rowsCount - The total number of rows\n * @remarks\n * This method emits an event for the grid to handle status bar updates.\n */\n updateLoadMoreStatus(moreRows, sourceRef) {\n this.$emit(datasourceEventNames.moreDataAvailable, {\n hasMoreData: moreRows,\n sourceRef,\n });\n }\n applyRequestServerData(requestServerResult) {\n var _a;\n const previousSize = this.rowData.size;\n const requestServerData = requestServerResult.REPLY;\n if (!Array.isArray(requestServerData) ||\n !((_a = requestServerResult.MESSAGE_TYPE) === null || _a === void 0 ? void 0 : _a.startsWith('REP_'))) {\n logger.error('received invalid RequestServerResult', requestServerResult);\n return;\n }\n if (this.requiresFullRowDataAndColDefs) {\n let noRowIdError = false;\n for (const insertData of requestServerData || []) {\n const insertDataRowId = insertData[this.rowId];\n if (!insertDataRowId) {\n if (!noRowIdError) {\n const noRowIdMessage = `The specified rowId (${this.rowId}) is not present in the data. Since this is not a snapshot (isSnapshot=false), the data will not be loaded. Please provide a valid 'row-id' attribute.`;\n logger.error(noRowIdMessage);\n noRowIdError = true;\n }\n break;\n }\n this.rowData.set(insertDataRowId, insertData);\n }\n if (noRowIdError) {\n this.destroy();\n return;\n }\n // Update cache and use it if available\n this.updateCachedRowArray();\n const rowData = this.rowData.size > 0 ? this.cachedRowArray : requestServerData;\n this.handleSizeChanged(previousSize, this.rowData.size);\n this.setRowData(rowData);\n return;\n }\n const rowsToUpdate = [];\n // Update cache before using it\n this.updateCachedRowArray();\n const rowsToDelete = this.cachedRowArray.filter((row) => {\n const match = requestServerData.find((data) => data[this.rowId] === row[this.rowId]);\n if (match) {\n rowsToUpdate.push(match);\n return false; // don't delete rows that need to be updated\n }\n return true; // delete rows that don't exist in requestServerData\n });\n const rowsToInsert = requestServerData.filter((data) => !this.rowData.has(data[this.rowId]));\n this.transactionData = { add: [], remove: [], update: [] };\n this.handleStreamInserts(rowsToInsert);\n this.handleStreamDeletes(rowsToDelete);\n this.handleStreamUpdates(rowsToUpdate);\n this.emitDataChanged(this.transactionData);\n this.handleSizeChanged(previousSize, this.rowData.size);\n }\n applyDataserverData(dataServerResult) {\n var _a;\n const previousSize = this.rowData.size;\n if (this.requiresFullRowDataAndColDefs) {\n (_a = dataServerResult.inserts) === null || _a === void 0 ? void 0 : _a.forEach((insertData) => {\n this.rowData.set(insertData[this.rowId], insertData);\n });\n // Update and use the cached array\n this.updateCachedRowArray();\n this.setRowData(this.cachedRowArray);\n this.handleSizeChanged(previousSize, this.rowData.size);\n return;\n }\n this.transactionData = { add: [], remove: [], update: [] };\n this.handleStreamInserts(dataServerResult.inserts);\n this.handleStreamDeletes(dataServerResult.deletes);\n this.handleStreamUpdates(dataServerResult.updates);\n this.emitDataChanged(this.transactionData);\n this.handleSizeChanged(previousSize, this.rowData.size);\n }\n // FUTURE: Work with the field types vs ag grid column def types!\n getAgColumnDefs(fieldsMetadata) {\n return __awaiter(this, void 0, void 0, function* () {\n const columnDefsFromMetadata = this.generateColumnDefsFromMetadata(fieldsMetadata, getClientSideFilterParamsByFieldType, getFilterByFieldType);\n // Return the base column definitions - the grid will handle merging with template definitions\n return columnDefsFromMetadata;\n });\n }\n setFilter(fieldName, newFilter) {\n this.criteriaFromFilters.set(fieldName, newFilter);\n this.update.next(this.criteriaFromFilters);\n }\n removeFilter(fieldName) {\n this.criteriaFromFilters.delete(fieldName);\n this.update.next(this.criteriaFromFilters);\n }\n handleSizeChanged(oldSize, newSize) {\n if (oldSize === newSize)\n return;\n this.$emit(gridProGenesisDatasourceEventNames.sizeChanged, {\n value: newSize,\n oldValue: oldSize,\n });\n }\n handleStreamInserts(inserts = []) {\n super.handleStreamInserts(inserts, this._isMoreRowsResult ? this.cachedRowArray.length : 0);\n this.updateCachedRowArray();\n }\n handleStreamUpdates(updates = []) {\n super.handleStreamUpdates(updates);\n this.updateCachedRowArray();\n }\n /**\n * Handles stream deletes by removing records from the grid.\n * @param deletes - List of records to remove from the grid stream\n */\n handleStreamDeletes(deletes = []) {\n super.handleStreamDeletes(deletes);\n this.updateCachedRowArray();\n }\n /**\n * Extends the base options to constrain the requested fields to the visible columns when\n * `requestVisibleColumnsOnly` is enabled.\n * @remarks DATASERVER only; for other resource types the derived `fields` are ignored.\n * @internal\n */\n datasourceOptions() {\n const options = super.datasourceOptions();\n if (this.requestVisibleColumnsOnly) {\n const fields = this.getRequestedFields();\n if (fields) {\n options.fields = fields;\n }\n }\n return options;\n }\n /**\n * Builds the DATASERVER `FIELDS` string (space-separated) from the visible columns, always\n * including the `rowId` so rows can be tracked.\n * @internal\n */\n getRequestedFields() {\n var _a;\n const visibleColumns = ((_a = this._visibleColumns) === null || _a === void 0 ? void 0 : _a.length)\n ? this._visibleColumns\n : this.getConfiguredVisibleColumns();\n if (!visibleColumns.length)\n return undefined;\n const fields = visibleColumns.includes(this.rowId)\n ? visibleColumns\n : [this.rowId, ...visibleColumns];\n return fields.join(' ');\n }\n /**\n * Returns the field names of the configured columns that are not hidden, used to seed the visible\n * set before the host grid reports runtime visibility.\n * @internal\n */\n getConfiguredVisibleColumns() {\n var _a, _b;\n const columnDefs = (_b = (_a = this.deferredGridOptions) === null || _a === void 0 ? void 0 : _a.columnDefs) !== null && _b !== void 0 ? _b : [];\n return columnDefs\n .filter((colDef) => !!colDef.field && !colDef.hide)\n .map((colDef) => colDef.field);\n }\n /**\n * Updates the set of visible columns and reloads the data when the set changes.\n * @remarks Called by the host grid on column visibility changes; no-ops unless\n * `requestVisibleColumnsOnly` is enabled. DATASERVER only; no-ops for other resource types.\n * @param visibleFields - Field names of the currently visible columns.\n * @public\n */\n setVisibleColumns(visibleFields) {\n var _a;\n if (!this.requestVisibleColumnsOnly)\n return;\n const previous = (_a = this._visibleColumns) !== null && _a !== void 0 ? _a : this.getConfiguredVisibleColumns();\n // Always seed the visible set so the initial request can be narrowed, even before the\n // datasource has initialized and its resource type is known.\n this._visibleColumns = visibleFields;\n // Narrowing applies to DATASERVER only; reload once initialized and the visible set changes.\n if (this.datasource.resourceType !== ResourceType.DATASERVER ||\n !this.datasource.initialized ||\n !this.columnsChanged(previous, visibleFields)) {\n return;\n }\n this.reloadResourceData();\n }\n /**\n * Compares two column field lists irrespective of order.\n * @internal\n */\n columnsChanged(previous, next) {\n if (previous.length !== next.length)\n return true;\n const previousSet = new Set(previous);\n return next.some((field) => !previousSet.has(field));\n }\n loadMore() {\n switch (this.datasource.resourceType) {\n case ResourceType.DATASERVER:\n let viewNumber;\n if (this.viewNumber) {\n this._loadMoreCount = +this.viewNumber + 1;\n viewNumber = this._loadMoreCount;\n }\n else {\n this._loadMoreCount += 1;\n }\n this.connect.getMoreRows(this._sourceRef, viewNumber);\n break;\n case ResourceType.REQUEST_SERVER:\n this._loadMoreCount += 1;\n // TODO: Will get back to this soon, want to improve loadMore for isSnapshot + extras\n // const requestParams = this.datasource.requestOnlyParams;\n // // Set OFFSET for the next request\n // if (requestParams.DETAILS) {\n // requestParams.DETAILS.OFFSET = this._nextOffset;\n // }\n // this.datasource.snapshot(requestParams).then((result) => {\n // this.applyRequestServerData(result as RequestServerResult);\n // });\n break;\n }\n this.datasource.updateLoadMoreCount(this._loadMoreCount);\n }\n};\n__decorate([\n attr({ mode: 'boolean', attribute: 'keep-col-defs-on-clear-row-data' })\n], GridProGenesisDatasource.prototype, \"keepColDefsOnClearRowData\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'request-visible-columns-only' })\n], GridProGenesisDatasource.prototype, \"requestVisibleColumnsOnly\", void 0);\nGridProGenesisDatasource = __decorate([\n customElement({\n name: 'grid-pro-genesis-datasource',\n })\n], GridProGenesisDatasource);\nexport { GridProGenesisDatasource };\n","import { formatDateTimestamp, formatDateTimeTimestamp } from '@genesislcap/foundation-utils';\n/**\n * Returns the filter params for enum fields based on the detected filter type.\n * @param field - The field metadata\n * @returns the filter params for enum fields, or undefined if not applicable\n */\nexport function getEnumFilterParams(field, filterType) {\n if (filterType === 'agMultiColumnFilter') {\n return {\n filters: [\n {\n filter: 'agTextColumnFilter',\n },\n {\n filter: 'agSetColumnFilter',\n filterParams: {\n values: field.enumOptions,\n },\n },\n ],\n };\n }\n if (filterType === 'agSetColumnFilter') {\n return {\n values: field.enumOptions,\n };\n }\n return undefined;\n}\n/**\n * Return a column type base on each field's metadata from the selected resource.\n * @param metadataType - The type of the field/column\n * @returns the column type\n * @remarks Currently only handles numeric columns\n * @alpha\n */\nexport function getColumnType(metadataType) {\n switch (metadataType === null || metadataType === void 0 ? void 0 : metadataType.toLowerCase()) {\n case 'int':\n case 'long':\n case 'double':\n case 'bigdecimal':\n case 'number':\n return 'numericColumn';\n }\n}\n/**\n * Returns a formatted date value from the Grid Pro cell value.\n * @param param - A ValueFormatterParams object.\n * @returns A formatted date value.\n * @public\n */\nexport function dateValueFormatter({ value }) {\n return formatDateTimestamp(value);\n}\n/**\n * Returns a formatted date time value from the Grid Pro cell value.\n * @param param - A ValueFormatterParams object.\n * @returns A formatted date time value.\n * @public\n */\nexport function dateTimeValueFormatter({ value }) {\n return formatDateTimeTimestamp(value);\n}\n// TODO: possible duplicate - need to evaluate the differences\nconst isoDateTimeSliceEnd = 19;\n/**\n * Returns a formatted date value from an epoch number.\n * @param epoch - A number representing the number of milliseconds since the Unix epoch (1 January 1970 00:00:00 UTC).\n * @returns A formatted date value.\n * @alpha\n * @deprecated No longer used in the Grid Pro package.\n */\nexport function formatDateExtra(epoch) {\n return new Date(epoch)\n .toISOString()\n .slice(0, isoDateTimeSliceEnd)\n .replace(/-/g, '')\n .replace('T', '-');\n}\n/**\n * The time between allowing the grids to automatically resize.\n * @internal\n */\nexport const DEBOUNCED_RESIZE_TIME = 5;\n/**\n * The event names for the Grid Pro component.\n * @public\n */\nexport const gridProEventNames = {\n datasourceErrorClose: 'datasource-error-close',\n};\n/**\n * The error names for the Grid Pro component.\n * @public\n */\nexport const gridProErrorNames = {\n datasource: 'datasource',\n unknown: 'unknown',\n};\n/**\n * @remarks List of AG properties without rowData\n * @privateRemarks This is was removed from ag-grid v35 but we need to support it for backwards compatibility.\n * @internal\n */\nexport const AG_PROPERTIES = [\n 'rowSelection',\n 'overlayLoadingTemplate',\n 'overlayNoRowsTemplate',\n 'quickFilterText',\n 'rowModelType',\n 'editType',\n 'domLayout',\n 'clipboardDelimiter',\n 'rowGroupPanelShow',\n 'multiSortKey',\n 'pivotColumnGroupTotals',\n 'pivotRowTotals',\n 'pivotPanelShow',\n 'fillHandleDirection',\n 'serverSideStoreType',\n 'groupDisplayType',\n 'treeDataDisplayType',\n 'colResizeDefault',\n 'components',\n 'frameworkComponents',\n 'rowStyle',\n 'context',\n 'autoGroupColumnDef',\n 'localeText',\n 'icons',\n 'datasource',\n 'serverSideDatasource',\n 'viewportDatasource',\n 'groupRowRendererParams',\n 'aggFuncs',\n 'fullWidthCellRendererParams',\n 'defaultColGroupDef',\n 'defaultColDef',\n 'defaultCsvExportParams',\n 'defaultExcelExportParams',\n 'columnTypes',\n 'rowClassRules',\n 'detailCellRendererParams',\n 'loadingCellRendererParams',\n 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams',\n 'popupParent',\n 'statusBar',\n 'sideBar',\n 'chartThemeOverrides',\n 'customChartThemes',\n 'chartToolPanelsDef',\n 'sortingOrder',\n 'alignedGrids',\n 'columnDefs',\n 'excelStyles',\n 'pinnedTopRowData',\n 'pinnedBottomRowData',\n 'chartThemes',\n 'rowClass',\n 'rowHeight',\n 'detailRowHeight',\n 'rowBuffer',\n 'headerHeight',\n 'groupHeaderHeight',\n 'floatingFiltersHeight',\n 'pivotHeaderHeight',\n 'pivotGroupHeaderHeight',\n 'groupDefaultExpanded',\n 'viewportRowModelPageSize',\n 'viewportRowModelBufferSize',\n 'autoSizePadding',\n 'maxBlocksInCache',\n 'maxConcurrentDatasourceRequests',\n 'tooltipShowDelay',\n 'tooltipHideDelay',\n 'cacheOverflowSize',\n 'paginationPageSize',\n 'cacheBlockSize',\n 'infiniteInitialRowCount',\n 'serverSideInitialRowCount',\n 'scrollbarWidth',\n 'asyncTransactionWaitMillis',\n 'blockLoadDebounceMillis',\n 'keepDetailRowsCount',\n 'undoRedoCellEditingLimit',\n 'cellFlashDelay',\n 'cellFadeDelay',\n 'tabIndex',\n 'suppressMakeColumnVisibleAfterUnGroup',\n 'suppressRowClickSelection',\n 'suppressCellSelection',\n 'suppressCellFocus',\n 'suppressHorizontalScroll',\n 'alwaysShowHorizontalScroll',\n 'alwaysShowVerticalScroll',\n 'debug',\n 'enableBrowserTooltips',\n 'enableCellExpressions',\n 'groupSelectsChildren',\n 'groupIncludeFooter',\n 'groupIncludeTotalFooter',\n 'groupSuppressBlankHeader',\n 'suppressMenuHide',\n 'suppressRowDeselection',\n 'unSortIcon',\n 'suppressMultiSort',\n 'alwaysMultiSort',\n 'singleClickEdit',\n 'suppressLoadingOverlay',\n 'suppressNoRowsOverlay',\n 'suppressAutoSize',\n 'skipHeaderOnAutoSize',\n 'suppressParentsInRowNodes',\n 'suppressColumnMoveAnimation',\n 'suppressMovableColumns',\n 'suppressFieldDotNotation',\n 'enableRangeSelection',\n 'enableRangeHandle',\n 'enableFillHandle',\n 'suppressClearOnFillReduction',\n 'deltaSort',\n 'suppressTouch',\n 'suppressAsyncEvents',\n 'allowContextMenuWithControlKey',\n 'suppressContextMenu',\n 'rememberGroupStateWhenNewData',\n 'enableCellChangeFlash',\n 'suppressDragLeaveHidesColumns',\n 'suppressRowGroupHidesColumns',\n 'suppressMiddleClickScrolls',\n 'suppressPreventDefaultOnMouseWheel',\n 'suppressCopyRowsToClipboard',\n 'copyHeadersToClipboard',\n 'copyGroupHeadersToClipboard',\n 'pivotMode',\n 'suppressAggFuncInHeader',\n 'suppressColumnVirtualisation',\n 'suppressAggAtRootLevel',\n 'suppressFocusAfterRefresh',\n 'functionsPassive',\n 'functionsReadOnly',\n 'animateRows',\n 'groupSelectsFiltered',\n 'groupRemoveSingleChildren',\n 'groupRemoveLowestSingleChildren',\n 'enableRtl',\n 'suppressClickEdit',\n 'rowDragEntireRow',\n 'rowDragManaged',\n 'suppressRowDrag',\n 'suppressMoveWhenRowDragging',\n 'rowDragMultiRow',\n 'enableGroupEdit',\n 'embedFullWidthRows',\n 'suppressPaginationPanel',\n 'groupHideOpenParents',\n 'groupAllowUnbalanced',\n 'pagination',\n 'paginationAutoPageSize',\n 'suppressScrollOnNewData',\n 'suppressScrollWhenPopupsAreOpen',\n 'purgeClosedRowNodes',\n 'cacheQuickFilter',\n 'excludeHiddenColumnsFromQuickFilter',\n 'ensureDomOrder',\n 'accentedSort',\n 'suppressChangeDetection',\n 'valueCache',\n 'valueCacheNeverExpires',\n 'aggregateOnlyChangedColumns',\n 'suppressAnimationFrame',\n 'suppressExcelExport',\n 'suppressCsvExport',\n 'treeData',\n 'masterDetail',\n 'suppressMultiRangeSelection',\n 'enterMovesDownAfterEdit',\n 'enterMovesDown',\n 'suppressPropertyNamesCheck',\n 'rowMultiSelectWithClick',\n 'suppressRowHoverHighlight',\n 'suppressRowTransform',\n 'suppressClipboardPaste',\n 'suppressLastEmptyLineOnPaste',\n 'enableCharts',\n 'enableChartToolPanelsButton',\n 'suppressChartToolPanelsButton',\n 'suppressMaintainUnsortedOrder',\n 'enableCellTextSelection',\n 'suppressBrowserResizeObserver',\n 'suppressMaxRenderedRowRestriction',\n 'excludeChildrenWhenTreeDataFiltering',\n 'tooltipMouseTrack',\n 'keepDetailRows',\n 'paginateChildRows',\n 'preventDefaultOnContextMenu',\n 'undoRedoCellEditing',\n 'allowDragFromColumnsToolPanel',\n 'immutableData',\n 'pivotSuppressAutoColumn',\n 'suppressExpandablePivotGroups',\n 'debounceVerticalScrollbar',\n 'detailRowAutoHeight',\n 'serverSideFilteringAlwaysResets',\n 'serverSideSortingAlwaysResets',\n 'serverSideSortAllLevels',\n 'serverSideFilterAllLevels',\n 'serverSideSortOnServer',\n 'serverSideFilterOnServer',\n 'suppressAggFilteredOnly',\n 'showOpenedGroup',\n 'suppressClipboardApi',\n 'suppressModelUpdateAfterUpdateTransaction',\n 'stopEditingWhenCellsLoseFocus',\n 'maintainColumnOrder',\n 'groupMaintainOrder',\n 'columnHoverHighlight',\n 'reactUi',\n 'suppressReactUi',\n 'readOnlyEdit',\n 'suppressRowVirtualisation',\n 'enableCellEditingOnBackspace',\n 'resetRowDataOnUpdate',\n 'removePivotHeaderRowWhenSingleValueColumn',\n 'suppressCopySingleCellRanges',\n 'groupRowsSticky',\n 'suppressServerSideInfiniteScroll',\n 'rowGroupPanelSuppressSort',\n 'allowShowChangeAfterFilter',\n 'suppressCutToClipboard',\n 'localeTextFunc',\n 'doesExternalFilterPass',\n 'groupRowAggNodes',\n 'isFullWidthCell',\n 'processSecondaryColDef',\n 'processSecondaryColGroupDef',\n 'processPivotResultColDef',\n 'processPivotResultColGroupDef',\n 'getBusinessKeyForNode',\n 'isRowSelectable',\n 'postSort',\n 'defaultGroupOrderComparator',\n 'rowDragText',\n 'groupRowRenderer',\n 'groupRowRendererFramework',\n 'fullWidthCellRenderer',\n 'fullWidthCellRendererFramework',\n 'loadingCellRenderer',\n 'loadingCellRendererFramework',\n 'loadingOverlayComponent',\n 'loadingOverlayComponentFramework',\n 'noRowsOverlayComponent',\n 'noRowsOverlayComponentFramework',\n 'detailCellRenderer',\n 'detailCellRendererFramework',\n 'getLocaleText',\n 'isExternalFilterPresent',\n 'getRowHeight',\n 'getRowClass',\n 'getRowStyle',\n 'getContextMenuItems',\n 'getMainMenuItems',\n 'processRowPostCreate',\n 'processCellForClipboard',\n 'getGroupRowAgg',\n 'getRowNodeId',\n 'isFullWidthRow',\n 'sendToClipboard',\n 'navigateToNextHeader',\n 'tabToNextHeader',\n 'navigateToNextCell',\n 'tabToNextCell',\n 'processCellFromClipboard',\n 'getDocument',\n 'postProcessPopup',\n 'getChildCount',\n 'getDataPath',\n 'isRowMaster',\n 'postSortRows',\n 'processHeaderForClipboard',\n 'processGroupHeaderForClipboard',\n 'paginationNumberFormatter',\n 'processDataFromClipboard',\n 'getServerSideGroupKey',\n 'isServerSideGroup',\n 'createChartContainer',\n 'getChartToolbarItems',\n 'fillOperation',\n 'isApplyServerSideTransaction',\n 'getServerSideStoreParams',\n 'getServerSideGroupLevelParams',\n 'isServerSideGroupOpenByDefault',\n 'isGroupOpenByDefault',\n 'initialGroupOrderComparator',\n 'loadingCellRendererSelector',\n 'getRowId',\n 'groupAggFiltering',\n];\n/**\n * @remarks Copied from AG Grid `PropertyKeys.NUMBER_PROPERTIES` (v29.2.0) to support\n * attribute-to-gridOptions coercion without relying on `ComponentUtil.copyAttributesToGridOptions`.\n * @internal\n */\nexport const AG_NUMBER_PROPERTIES = [\n 'rowHeight',\n 'detailRowHeight',\n 'rowBuffer',\n 'headerHeight',\n 'groupHeaderHeight',\n 'floatingFiltersHeight',\n 'pivotHeaderHeight',\n 'pivotGroupHeaderHeight',\n 'groupDefaultExpanded',\n 'viewportRowModelPageSize',\n 'viewportRowModelBufferSize',\n 'autoSizePadding',\n 'maxBlocksInCache',\n 'maxConcurrentDatasourceRequests',\n 'tooltipShowDelay',\n 'tooltipHideDelay',\n 'cacheOverflowSize',\n 'paginationPageSize',\n 'cacheBlockSize',\n 'infiniteInitialRowCount',\n 'serverSideInitialRowCount',\n 'scrollbarWidth',\n 'asyncTransactionWaitMillis',\n 'blockLoadDebounceMillis',\n 'keepDetailRowsCount',\n 'undoRedoCellEditingLimit',\n 'cellFlashDelay',\n 'cellFadeDelay',\n 'tabIndex',\n];\n/**\n * @remarks Copied from AG Grid `PropertyKeys.BOOLEAN_PROPERTIES` (v29.2.0) to support\n * attribute-to-gridOptions coercion without relying on `ComponentUtil.copyAttributesToGridOptions`.\n * @internal\n */\nexport const AG_BOOLEAN_PROPERTIES = [\n 'suppressMakeColumnVisibleAfterUnGroup',\n 'suppressRowClickSelection',\n 'suppressCellSelection',\n 'suppressCellFocus',\n 'suppressHorizontalScroll',\n 'alwaysShowHorizontalScroll',\n 'alwaysShowVerticalScroll',\n 'debug',\n 'enableBrowserTooltips',\n 'enableCellExpressions',\n 'groupSelectsChildren',\n 'groupIncludeFooter',\n 'groupIncludeTotalFooter',\n 'groupSuppressBlankHeader',\n 'suppressMenuHide',\n 'suppressRowDeselection',\n 'unSortIcon',\n 'suppressMultiSort',\n 'alwaysMultiSort',\n 'singleClickEdit',\n 'suppressLoadingOverlay',\n 'suppressNoRowsOverlay',\n 'suppressAutoSize',\n 'skipHeaderOnAutoSize',\n 'suppressParentsInRowNodes',\n 'suppressColumnMoveAnimation',\n 'suppressMovableColumns',\n 'suppressFieldDotNotation',\n 'enableRangeSelection',\n 'enableRangeHandle',\n 'enableFillHandle',\n 'suppressClearOnFillReduction',\n 'deltaSort',\n 'suppressTouch',\n 'suppressAsyncEvents',\n 'allowContextMenuWithControlKey',\n 'suppressContextMenu',\n 'rememberGroupStateWhenNewData',\n 'enableCellChangeFlash',\n 'suppressDragLeaveHidesColumns',\n 'suppressRowGroupHidesColumns',\n 'suppressMiddleClickScrolls',\n 'suppressPreventDefaultOnMouseWheel',\n 'suppressCopyRowsToClipboard',\n 'copyHeadersToClipboard',\n 'copyGroupHeadersToClipboard',\n 'pivotMode',\n 'suppressAggFuncInHeader',\n 'suppressColumnVirtualisation',\n 'suppressAggAtRootLevel',\n 'suppressFocusAfterRefresh',\n 'functionsPassive',\n 'functionsReadOnly',\n 'animateRows',\n 'groupSelectsFiltered',\n 'groupRemoveSingleChildren',\n 'groupRemoveLowestSingleChildren',\n 'enableRtl',\n 'suppressClickEdit',\n 'rowDragEntireRow',\n 'rowDragManaged',\n 'suppressRowDrag',\n 'suppressMoveWhenRowDragging',\n 'rowDragMultiRow',\n 'enableGroupEdit',\n 'embedFullWidthRows',\n 'suppressPaginationPanel',\n 'groupHideOpenParents',\n 'groupAllowUnbalanced',\n 'pagination',\n 'paginationAutoPageSize',\n 'suppressScrollOnNewData',\n 'suppressScrollWhenPopupsAreOpen',\n 'purgeClosedRowNodes',\n 'cacheQuickFilter',\n 'excludeHiddenColumnsFromQuickFilter',\n 'ensureDomOrder',\n 'accentedSort',\n 'suppressChangeDetection',\n 'valueCache',\n 'valueCacheNeverExpires',\n 'aggregateOnlyChangedColumns',\n 'suppressAnimationFrame',\n 'suppressExcelExport',\n 'suppressCsvExport',\n 'treeData',\n 'masterDetail',\n 'suppressMultiRangeSelection',\n 'enterMovesDownAfterEdit',\n 'enterMovesDown',\n 'suppressPropertyNamesCheck',\n 'rowMultiSelectWithClick',\n 'suppressRowHoverHighlight',\n 'suppressRowTransform',\n 'suppressClipboardPaste',\n 'suppressLastEmptyLineOnPaste',\n 'enableCharts',\n 'enableChartToolPanelsButton',\n 'suppressChartToolPanelsButton',\n 'suppressMaintainUnsortedOrder',\n 'enableCellTextSelection',\n 'suppressBrowserResizeObserver',\n 'suppressMaxRenderedRowRestriction',\n 'excludeChildrenWhenTreeDataFiltering',\n 'tooltipMouseTrack',\n 'keepDetailRows',\n 'paginateChildRows',\n 'preventDefaultOnContextMenu',\n 'undoRedoCellEditing',\n 'allowDragFromColumnsToolPanel',\n 'immutableData',\n 'pivotSuppressAutoColumn',\n 'suppressExpandablePivotGroups',\n 'debounceVerticalScrollbar',\n 'detailRowAutoHeight',\n 'serverSideFilteringAlwaysResets',\n 'serverSideSortingAlwaysResets',\n 'serverSideSortAllLevels',\n 'serverSideFilterAllLevels',\n 'serverSideSortOnServer',\n 'serverSideFilterOnServer',\n 'suppressAggFilteredOnly',\n 'showOpenedGroup',\n 'suppressClipboardApi',\n 'suppressModelUpdateAfterUpdateTransaction',\n 'stopEditingWhenCellsLoseFocus',\n 'maintainColumnOrder',\n 'groupMaintainOrder',\n 'columnHoverHighlight',\n 'reactUi',\n 'suppressReactUi',\n 'readOnlyEdit',\n 'suppressRowVirtualisation',\n 'enableCellEditingOnBackspace',\n 'resetRowDataOnUpdate',\n 'removePivotHeaderRowWhenSingleValueColumn',\n 'suppressCopySingleCellRanges',\n 'groupRowsSticky',\n 'suppressServerSideInfiniteScroll',\n 'rowGroupPanelSuppressSort',\n 'allowShowChangeAfterFilter',\n 'suppressCutToClipboard',\n];\nconst AG_NUMBER_PROPERTIES_SET = new Set(AG_NUMBER_PROPERTIES);\nconst AG_BOOLEAN_PROPERTIES_SET = new Set(AG_BOOLEAN_PROPERTIES);\nconst AG_PROPERTIES_SET = new Set(AG_PROPERTIES);\nfunction toBoolean(value) {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n // for boolean, compare to empty String to allow attributes appearing with\n // no value to be treated as 'true'\n return value.toUpperCase() === 'TRUE' || value === '';\n }\n return false;\n}\nfunction toNumber(value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n return Number(value);\n }\n}\n/**\n * @remarks Copied from AG Grid `ComponentUtil.copyAttributesToGridOptions` (v29.2.0).\n * This is used to coerce string/attribute values into the correct types for gridOptions.\n * @internal\n */\nexport function copyAttributesToGridOptions(gridOptions, component) {\n // create empty grid options if none were passed\n if (typeof gridOptions !== 'object') {\n gridOptions = {};\n }\n // to allow array style lookup in TypeScript, take type away from 'gridOptions'\n const pGridOptions = gridOptions;\n const keys = Object.keys(component);\n // Loop through component props, if they are not undefined and a valid gridOption copy to gridOptions\n keys.forEach((key) => {\n if (!AG_PROPERTIES_SET.has(key)) {\n return;\n }\n const value = component[key];\n if (typeof value === 'undefined') {\n return;\n }\n // Match ComponentUtil.getValue behaviour (limited to our local boolean/number sets + special-case)\n let coercedValue = value;\n if (AG_NUMBER_PROPERTIES_SET.has(key)) {\n coercedValue = toNumber(value);\n }\n else if (AG_BOOLEAN_PROPERTIES_SET.has(key)) {\n coercedValue = toBoolean(value);\n }\n else if (key === 'groupAggFiltering' && typeof value !== 'function') {\n coercedValue = toBoolean(value);\n }\n if (coercedValue !== undefined) {\n pGridOptions[key] = coercedValue;\n }\n });\n return gridOptions;\n}\n","import { __awaiter, __decorate, __rest } from \"tslib\";\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ComponentUtil, Events, Grid, ModuleRegistry } from '@ag-grid-community/core';\nimport { CsvExportModule } from '@ag-grid-community/csv-export';\nimport { DatasourceDefaults } from '@genesislcap/foundation-comms';\nimport { avoidTreeShaking, insertDocumentCSSRule, LifecycleMixin, respondToVisibility, } from '@genesislcap/foundation-utils';\nimport { attr, DOM, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { classNames } from '@microsoft/fast-web-utilities';\nimport * as changeCase from 'change-case';\nimport debounce from 'lodash.debounce';\nimport { GridProCell } from './cell';\nimport { DateEditor, MultiselectEditor, NumberEditor, SelectEditor, StringEditor, } from './cell-editors';\nimport { ActionRenderer, ActionsMenuRenderer, BooleanRenderer, EditableRenderer, IconRenderer, SelectRenderer, StatusPillRenderer, } from './cell-renderers';\nimport { GridProColumn, resolveVisibleColumnFields } from './column';\nimport { GridProClientSideDatasource, GridProServerSideDatasource } from './datasource';\nimport { baseDatasourceEventNames } from './datasource/base.types';\nimport { agThemeFontFaceMap, defaultAgGridFontFace } from './external';\nimport { GridProGenesisDatasource, gridProGenesisDatasourceEventNames, } from './grid-pro-genesis-datasource';\nimport { datasourceEventNames, } from './grid-pro-genesis-datasource/datasource-events.types';\nimport { AG_PROPERTIES, copyAttributesToGridOptions, DEBOUNCED_RESIZE_TIME, gridProErrorNames, gridProEventNames, } from './grid-pro.definitions';\nimport { foundationGridProStyles as styles } from './grid-pro.styles';\nimport { gridProTemplate as template } from './grid-pro.template';\nimport { AgGridTheme, agThemeFontsId, agThemeTokenMapClassname, DEFAULT_STATUS_BAR_CONFIG, EDITED_COLUMN_FIELD, ERROR_COLUMN_FIELD, GRID_READY_EVENT, GridOptionsConfig, GridProRendererTypes, GridProStatusBarTypes, } from './grid-pro.types';\nimport { StatePersistence } from './state-persistence';\nimport { LabelValueStatusBarComponent, LoadMoreStatusBarComponent, ReloadStatusBarComponent, RowCountStatusBarComponent, } from './status-bar-components';\nimport { ErrorTooltip } from './tooltips';\nimport { convertColDefsToColumnStates, convertToKebabCase, logger, mergeAndDedupColDefWithColumnState, sanitizeColumnState, } from './utils';\navoidTreeShaking(GridProGenesisDatasource, GridProClientSideDatasource, GridProServerSideDatasource, GridProCell, GridProColumn);\nModuleRegistry.registerModules([CsvExportModule, ClientSideRowModelModule]);\nconst DEBOUNCE_TIME = 400;\n// Re-export AG_PROPERTIES from definitions for backwards compatibility\nexport { AG_PROPERTIES };\n/**\n * The Grid Pro element.\n * @remarks Grid Pro is a Web Component wrapper around the AG Grid Community library.\n * @public\n * @tagname %%prefix%%-grid-pro\n *\n * @fires gridReady - Fired when AG Grid is ready (detail includes the grid-ready event and grid id)\n * @fires onGridReady - Deprecated alias for the grid-ready signal; prefer `gridReady`\n * @fires gridready - Native `Event` from `globalEventListener` when AG Grid fires `gridReady` (`agGridDetails` holds the AG Grid event)\n * @remarks Re-emits AG Grid public API events when listeners are registered via `addEventListener` (event names match `ComponentUtil.PUBLIC_EVENTS` from `@ag-grid-community/core`). The same AG Grid events are also dispatched as native `Event`s with lowercased `type` and payload on `agGridDetails` (for example `addEventListener('columnresized', ...)`).\n */\nexport class GridPro extends LifecycleMixin(FoundationElement) {\n rowDataChanged(_, rowData) {\n // `initialised` flips true before `gridApi` is assigned (mid-reinit), so relying on it\n // alone here can crash setRowData with an undefined api.\n if (this.initialised && this.gridApi) {\n this.gridApi.setRowData(rowData);\n }\n }\n themeChanged(oldValue, newValue) {\n if (!newValue) {\n this.classNames = '';\n this.destroyFontFace();\n return;\n }\n this.classNames = classNames(agThemeTokenMapClassname(newValue), newValue);\n this.insertFontFace(newValue);\n }\n /**\n * The slot ref binds asynchronously, and the queued `initGrid` skips any run that beats it. FAST\n * calls this the moment the ref lands, so a grid whose options were set BEFORE the view bound\n * still initialises rather than staying blank — closing the one gap that skip would leave.\n *\n * Guarded on `agGridOptions` as well: without options there is nothing to build, and AG Grid\n * would only log \"no gridOptions provided to the grid\". Those arrive via a grid-options change,\n * which re-runs `initGrid` on its own.\n */\n gridSlotChanged() {\n if (this.gridSlot && !this.initialised && this.agGridOptions) {\n this.initGrid();\n }\n }\n getfilterModel() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.persistFilterModelKey) {\n return this._filterConfig;\n }\n const filterModel = yield this.statePersistence.getFilterModel(this.persistFilterModelKey);\n return filterModel;\n });\n }\n setFilterModel(value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.persistFilterModelKey) {\n this._filterConfig = value;\n return;\n }\n yield this.statePersistence.saveFilterModel(this.persistFilterModelKey, value);\n });\n }\n constructor() {\n super();\n // Cache for total column width to avoid repeated calculations\n this.cachedTotalColumnWidth = null;\n this.columnCount = 0;\n this.gridErrorItems = [];\n this.disposed = false;\n this.debouncedSaveColumnState = debounce(this.saveColumnState.bind(this), DEBOUNCE_TIME);\n this.debouncedSaveFilterModel = debounce(this.cacheFilterConfig.bind(this), DEBOUNCE_TIME);\n // Coalesces bursts of column-visibility events (e.g. a \"hide all\" tool-panel toggle fires one\n // per column) into a single datasource notification + reload.\n this.debouncedNotifyDatasourceVisibleColumns = debounce(this.notifyDatasourceVisibleColumns.bind(this), DEBOUNCE_TIME);\n // Genesis-specific attrs\n this.autoCellRendererByType = false;\n this.onlyTemplateColDefs = false;\n // AG-specific attrs\n /**\n * Boolean attribute to control whether the grid autosizes the columns upon interaction.\n * This will disable the column widths from being manually set, and doesn't save the widths\n * in local storage if you are using `persist-column-state-key`.\n */\n this.gridAutosizingEnabled = false;\n /**\n * Boolean attribute to control whether the grid automatically sizes columns to fit their content.\n * This will call AG Grid's autoSizeColumns() method to automatically adjust column widths based on content.\n * @public\n */\n this.sizeColumnsToContent = false;\n /**\n * Boolean attribute to adjust the size of columns to fit the available horizontal space.\n * This will call AG Grid's sizeColumnsToFit() method.\n * @public\n */\n this.sizeColumnsToFit = false;\n /**\n * The index to add new rows to when using `applyTransaction` or `applyTransactionAsync`\n */\n this.addIndex = 0;\n /**\n * Whether to use the `applyTransactionAsync` function for *add* transactions\n * @remarks Defaults to false\n */\n this.asyncAdd = false;\n /**\n * Whether to use the `applyTransactionAsync` function for *remove* transactions\n * @remarks Defaults to false\n */\n this.asyncRemove = false;\n /**\n * Whether to use the `applyTransactionAsync` function for *update* transactions\n * @remarks Defaults to true\n */\n this.asyncUpdate = true;\n /**\n * If false, will disable cell flashing for all cells by default, unless otherwise defined in custom colDef\n * @remarks Defaults to true\n */\n this.enableCellFlashing = false;\n /**\n * @deprecated - use `enableRowFlashing` instead.\n */\n this.enabledRowFlashing = false;\n /**\n * If true, will enable row flashing for all rows for `add` async transactions\n */\n this.enableRowFlashing = false;\n /**\n * The default column config to reset to when deleteColumnState is called.\n */\n this.defaultColumnConfig = [];\n this.gridFontFace = defaultAgGridFontFace;\n this.columnComponentName = 'grid-pro-column';\n this.theme = AgGridTheme.alpine;\n this.themeMode = 'dark';\n /**\n * Configuration for the grid status bar components.\n * @remarks\n * This requires AG Grid Enterprise module to be enabled.\n * The status bar will only be displayed if the Enterprise module is available.\n * @see https://www.ag-grid.com/javascript-data-grid/component-status-bar/\n */\n this.statusBarConfig = DEFAULT_STATUS_BAR_CONFIG;\n /**\n * Enables or disables the grid status bar.\n * @remarks\n * Default is false.\n * When disabled, no status bar will be displayed regardless of statusBarConfig.\n * This requires AG Grid Enterprise module to be available for the status bar to be displayed when enabled.\n */\n this.withStatusBar = false;\n this.applyingDatasourceGridOptions = false;\n this.rehydrationAttempted = false;\n this.eventHandlers = [];\n this.gridEventsQueue = [];\n this.registeredGridEvents = new Set();\n this.gridEventListeners = new Map();\n this.boundGlobalEventListener = this.globalEventListener.bind(this);\n this._filterConfig = undefined;\n this.agAttributes = {};\n this.agPropertiesMap = AG_PROPERTIES.reduce((map, property) => {\n map[property.toLowerCase()] = property;\n map[convertToKebabCase(property)] = property;\n return map;\n }, {});\n const hideDataSourceError = this.hideDatasourceError.bind(this);\n // Bind all event handlers once to ensure proper add/remove of listeners\n this.eventHandlers.push(\n // Root event listeners\n [gridProGenesisDatasourceEventNames.dataInit, hideDataSourceError], [gridProEventNames.datasourceErrorClose, hideDataSourceError], [baseDatasourceEventNames.error, this.handleBaseDatasourceError.bind(this)], [baseDatasourceEventNames.connected, hideDataSourceError], \n // Datasource event listeners\n [datasourceEventNames.initialize, this.handleInitialize.bind(this)], [datasourceEventNames.dataLoaded, this.handleDataLoaded.bind(this)], [datasourceEventNames.dataChanged, this.handleDataChanged.bind(this)], [datasourceEventNames.schemaUpdated, this.handleSchemaUpdated.bind(this)], [datasourceEventNames.dataCleared, this.handleDataCleared.bind(this)], [datasourceEventNames.loadingStarted, this.handleLoadingStarted.bind(this)], [datasourceEventNames.loadingFinished, this.handleLoadingFinished.bind(this)], [datasourceEventNames.noDataAvailable, this.handleNoDataAvailable.bind(this)], [datasourceEventNames.filtersRestored, this.handleFiltersRestored.bind(this)], [datasourceEventNames.moreDataAvailable, this.handleMoreDataAvailable.bind(this)], [datasourceEventNames.error, this.handleDatasourceError.bind(this)], [datasourceEventNames.destroy, this.handleDatasourceDestroy.bind(this)], \n // Server-side specific events\n [datasourceEventNames.cacheFilterConfig, this.cacheFilterConfig.bind(this)], [datasourceEventNames.refreshServerSide, this.handleRefreshServerSide.bind(this)], [datasourceEventNames.setServerSideDatasource, this.handleSetServerSideDatasource.bind(this)], [datasourceEventNames.addGridCssClass, this.handleAddGridCssClass.bind(this)], [datasourceEventNames.removeGridCssClass, this.handleRemoveGridCssClass.bind(this)], [\n datasourceEventNames.applyServerSideTransaction,\n this.handleApplyServerSideTransaction.bind(this),\n ], \n // Infinite Row Model events: not supported by this legacy grid (it registers neither the\n // module nor the handlers). Fail loudly rather than leaving a silently empty grid.\n [datasourceEventNames.setInfiniteDatasource, this.refuseInfiniteDatasource.bind(this)]);\n }\n /**\n * The Infinite Row Model is only wired into the beta grid, so an infinite datasource placed\n * inside this element can never load data. Report it instead of ignoring the event.\n * @internal\n */\n refuseInfiniteDatasource() {\n logger.error('grid-pro does not support the Infinite Row Model; use the beta grid (GridProBeta) with grid-pro-infinite-datasource / datasource-type=\"infinite\".');\n }\n /**\n * Adds an event listener to the grid element.\n * @param eventType - The event type to listen for. Recommened to use the `Events` from AG Grid.\n * @param listener - The event listener to call when the event is fired.\n * @param options - An options object that specifies characteristics about the event listener.\n * @privateRemarks\n * This will change once we do the AG Upgrade and `eventType` will be correctly typed.\n */\n addEventListener(eventType, listener, options) {\n super.addEventListener(eventType, listener, options);\n if (ComponentUtil.PUBLIC_EVENTS.includes(eventType)) {\n if (this.gridApi) {\n this.addGridEventListener(eventType);\n }\n else {\n if (!this.gridEventsQueue.includes(eventType)) {\n this.gridEventsQueue.push(eventType);\n }\n }\n }\n }\n addGridEventListener(eventType) {\n if (this.registeredGridEvents.has(eventType)) {\n return;\n }\n this.registeredGridEvents.add(eventType);\n const listener = (e) => {\n this.$emit(eventType, e);\n };\n this.gridEventListeners.set(eventType, listener);\n this.gridApi.addEventListener(eventType, listener);\n }\n handleError(type, event) {\n this.gridErrorItems = [...this.gridErrorItems, { detail: event.detail, type }];\n }\n handleBaseDatasourceError(event) {\n // Map base datasource errors to grid-pro error format\n const gridProError = {\n detail: { message: event.detail.message },\n type: gridProErrorNames.datasource,\n };\n this.gridErrorItems = [\n ...this.gridErrorItems,\n { detail: gridProError.detail, type: gridProError.type },\n ];\n }\n hideDatasourceError() {\n this.gridErrorItems = this.gridErrorItems.filter((item) => item.type !== gridProErrorNames.datasource);\n this.removeAttribute('ds-disconnected');\n }\n connectedCallback() {\n super.connectedCallback();\n this.disposed = false;\n if (this.gridAutosizingEnabled) {\n this.visibilityObserverCleanup = respondToVisibility(this, (gridVisible) => {\n if (gridVisible) {\n this.debouncedColumnAutosize();\n }\n });\n }\n this.rehydrationAttempted = false;\n this.eventHandlers.forEach(([eventName, handler]) => {\n this.addEventListener(eventName, handler);\n });\n if (!this.shouldRunConnect)\n return;\n AG_PROPERTIES.forEach((key) => {\n Object.defineProperty(this, key, {\n set: (v) => {\n this.agAttributeChangedCallback(convertToKebabCase(key), undefined, v);\n },\n enumerable: true,\n configurable: true,\n });\n });\n }\n disconnectedCallback() {\n this.disposed = true;\n this.debouncedSaveColumnState.cancel();\n this.debouncedSaveFilterModel.cancel();\n if (this.visibilityObserverCleanup) {\n this.visibilityObserverCleanup();\n this.visibilityObserverCleanup = undefined;\n }\n super.disconnectedCallback();\n this.rehydrationAttempted = false;\n const shouldRunDisconnect = this.shouldRunDisconnect;\n this.eventHandlers.forEach(([eventName, handler]) => {\n this.removeEventListener(eventName, handler);\n });\n if (!shouldRunDisconnect) {\n // If lifecycle is temporarily blocked (e.g. layout drag/reconnect path),\n // still tear down once the element remains detached on the next tick.\n queueMicrotask(() => {\n if (!this.isConnected) {\n this.performDisconnectCleanup();\n }\n });\n return;\n }\n this.performDisconnectCleanup();\n }\n performDisconnectCleanup() {\n if (this.debounced) {\n clearTimeout(this.debounced);\n this.debounced = null;\n }\n this.initialised = false;\n this.resetGridOptionsState();\n this.destroyGridInstance();\n // Destroy can synchronously emit final grid events; cancel again to avoid\n // retaining this element through trailing debounce timers.\n this.debouncedSaveColumnState.cancel();\n this.debouncedSaveFilterModel.cancel();\n this.invalidateColumnWidthCache();\n // Clear registered events when grid is destroyed\n this.registeredGridEvents.clear();\n this.gridEventsQueue = [];\n }\n /**\n * Tear down the AG Grid instance. Prefer {@link GridApi#destroy}; if `gridApi` is not set yet\n * (e.g. disconnect before `grid-ready`), fall back to {@link Grid#destroy} on the vanilla wrapper.\n */\n destroyGridInstance() {\n var _a, _b;\n if (this.gridApi) {\n this.gridEventListeners.forEach((listener, eventType) => {\n this.gridApi.removeEventListener(eventType, listener);\n });\n }\n this.gridEventListeners.clear();\n if (this.gridApi) {\n // AG Grid's destroy() leaves the client-side row model populated and leaves\n // scroll/touch listeners on its detached DOM; since the unmounted view is cached\n // by FAST's `when`, the destroyed grid skeleton stays reachable and would retain\n // the entire dataset. Clear rows first so only the small skeleton can be retained.\n if (!this.isServerSide) {\n try {\n (_b = (_a = this.gridApi).flushAsyncTransactions) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.gridApi.setRowData([]);\n }\n catch (e) {\n logger.debug('Grid Pro: failed to clear row data before destroy', e);\n }\n }\n this.gridApi.destroy();\n }\n else if (this.agGrid) {\n this.agGrid.destroy();\n }\n if (this.gridSlot) {\n this.gridSlot.replaceChildren();\n }\n this.gridApi = undefined;\n this.columnApi = undefined;\n this.agGrid = undefined;\n }\n /**\n * Handles datasource initialization\n * @internal\n */\n handleInitialize(event) {\n const { options, keepColDefsOnClearRowData } = event.detail;\n let columnDefinitions;\n if (keepColDefsOnClearRowData) {\n columnDefinitions = this.gridApi.getColumnDefs();\n this.columnState = this.columnApi.getColumnState();\n }\n const gridOptions = Object.assign(Object.assign(Object.assign({}, this.userProvidedGridOptions), (columnDefinitions && { columnDefs: columnDefinitions })), options);\n this.applyingDatasourceGridOptions = true;\n try {\n this.gridOptions = Object.assign({}, gridOptions);\n this.initGrid();\n }\n finally {\n this.applyingDatasourceGridOptions = false;\n }\n }\n /**\n * Handles data loading from datasource\n * @internal\n */\n handleDataLoaded(event) {\n const { data } = event.detail;\n if (this.gridApi) {\n this.gridApi.setRowData(data);\n }\n }\n /**\n * Handles data changes from datasource\n * @internal\n */\n handleDataChanged(event) {\n var _a, _b, _c;\n const { changes } = event.detail;\n // Every datasource emits this for consumers, but row transactions are a client-side row\n // model API: the server-side datasource drives the grid through apply-server-side-transaction,\n // and applyTransaction on that model is a no-op that logs an AG Grid warning per event.\n if (!this.gridApi || this.isServerSide)\n return;\n if (((_a = changes.add) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n if (this.asyncAdd) {\n this.gridApi.applyTransactionAsync({ add: changes.add, addIndex: this.addIndex }, (result) => {\n this.flashAddedCells(result === null || result === void 0 ? void 0 : result.add);\n });\n }\n else {\n const result = this.gridApi.applyTransaction({ add: changes.add, addIndex: this.addIndex });\n this.flashAddedCells(result === null || result === void 0 ? void 0 : result.add);\n }\n }\n if (((_b = changes.update) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n if (this.asyncUpdate) {\n this.gridApi.applyTransactionAsync({ update: changes.update });\n }\n else {\n this.gridApi.applyTransaction({ update: changes.update });\n }\n }\n if (((_c = changes.remove) === null || _c === void 0 ? void 0 : _c.length) > 0) {\n if (this.asyncRemove) {\n this.gridApi.applyTransactionAsync({ remove: changes.remove });\n }\n else {\n this.gridApi.applyTransaction({ remove: changes.remove });\n }\n }\n }\n flashAddedCells(rowNodes) {\n if (this.enableRowFlashing && (rowNodes === null || rowNodes === void 0 ? void 0 : rowNodes.length)) {\n this.gridApi.flashCells({ rowNodes });\n }\n }\n /**\n * Handles schema updates from datasource\n * @internal\n */\n handleSchemaUpdated(event) {\n return __awaiter(this, void 0, void 0, function* () {\n // Can fire before `gridApi` is ready (mid-reinit). Unlike agAttributes/rowData, the schema\n // has no other home on the instance, so stash it and replay it in `onGridReady`.\n if (!this.gridApi) {\n this.pendingSchemaUpdate = event.detail;\n return;\n }\n yield this.processSchemaUpdate(event.detail);\n });\n }\n /**\n * Builds and applies column defs from a schema/metadata payload.\n * @internal\n */\n processSchemaUpdate(_a) {\n return __awaiter(this, arguments, void 0, function* ({ schema, metadata }) {\n const preSetColumnDefs = this.gridApi.getColumnDefs();\n if (!preSetColumnDefs || preSetColumnDefs.length === 0) {\n const colDefs = metadata\n .map((field) => {\n var _a;\n return (Object.assign(Object.assign({}, schema.find((colDef) => colDef.field === field.name)), (_a = this.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name)));\n })\n .map((colDef) => (Object.assign(Object.assign({}, colDef), { cellRenderer: this.autoCellRendererByType ? colDef.cellRenderer : undefined, cellEditor: this.autoCellRendererByType ? colDef.cellEditor : undefined })));\n const colDefsMergedWithTemplateDefs = yield this.mergeAllColumnDefsAndStates(colDefs, true);\n if (colDefsMergedWithTemplateDefs) {\n // AG's internals will check if group/pivot are NOT NULL to trigger module registration warning for `row-grouping`.\n // When using gridApi to get the currentState to save, all boolean will return false when they were not set at all.\n // ColDef type is `boolean` while ColumnState is `boolean | null`.\n // `rowGroup`/`pivot` only exist on leaf `ColDef`s, not on `ColGroupDef`s, so skip groups.\n colDefsMergedWithTemplateDefs.forEach((col) => {\n if ('children' in col) {\n return;\n }\n if (!col.rowGroup) {\n col.rowGroup = null;\n }\n if (!col.pivot) {\n col.pivot = null;\n }\n });\n this.gridApi.setColumnDefs(colDefsMergedWithTemplateDefs);\n // Restore the persisted filter model now that the columns exist. The datasource\n // emits `filtersRestored` synchronously right after `schemaUpdated`, but this handler\n // is async (it awaits column-state hydration before `setColumnDefs`), so the\n // `filtersRestored` restore can run before the columns exist and be silently dropped.\n // Restoring here guarantees the columns are present for `gridApi.setFilterModel`.\n this.restoreCachedFilterConfig();\n }\n }\n });\n }\n /**\n * Handles data clearing from datasource\n * @internal\n */\n handleDataCleared(event) {\n var _a, _b;\n const { includeSchema } = event.detail;\n if (!this.gridApi)\n return;\n // For server-side, these methods are handled via server-side transactions\n // Only flush async transactions for client-side row model\n if (!this.isServerSide) {\n // Flush any pending async transactions\n if (this.asyncAdd || this.asyncUpdate || this.asyncRemove) {\n (_b = (_a = this.gridApi).flushAsyncTransactions) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n }\n if (includeSchema) {\n this.gridApi.setColumnDefs([]);\n }\n // setRowData only works for client-side row model\n // For server-side, data clearing is handled via server-side transactions\n if (!this.isServerSide) {\n this.gridApi.setRowData([]);\n this.gridApi.refreshCells({ force: true });\n }\n }\n /**\n * Handles loading started from datasource\n * @internal\n */\n handleLoadingStarted() {\n if (this.gridApi) {\n this.gridApi.showLoadingOverlay();\n }\n }\n /**\n * Handles loading finished from datasource\n * @internal\n */\n handleLoadingFinished() {\n if (this.gridApi) {\n this.gridApi.hideOverlay();\n }\n }\n /**\n * Handles no data available from datasource\n * @internal\n */\n handleNoDataAvailable() {\n if (this.gridApi) {\n this.gridApi.showNoRowsOverlay();\n }\n }\n /**\n * Handles filter restoration from datasource\n * @internal\n */\n handleFiltersRestored() {\n this.restoreCachedFilterConfig();\n }\n /**\n * Handles more data availability from datasource\n * @internal\n */\n handleMoreDataAvailable(event) {\n var _a, _b, _c, _d;\n const { hasMoreData, sourceRef } = event.detail;\n if (!this.gridApi)\n return;\n const statusBar = (_b = (_a = this.gridApi).getStatusPanel) === null || _b === void 0 ? void 0 : _b.call(_a, GridProStatusBarTypes.loadMore);\n if (statusBar) {\n (_d = (_c = statusBar).updateParams) === null || _d === void 0 ? void 0 : _d.call(_c, {\n moreRows: hasMoreData,\n sourceRef,\n });\n }\n }\n /**\n * Handles datasource errors\n * @internal\n */\n handleDatasourceError(event) {\n // Set visual indicator on grid\n this.setAttribute('ds-disconnected', 'ds-disconnected');\n }\n /**\n * Handles datasource destroy\n * @internal\n */\n handleDatasourceDestroy() {\n this.clearLocalGridOptions();\n }\n /**\n * Handles refreshing server-side data\n * @internal\n */\n handleRefreshServerSide(event) {\n const { purge } = event.detail;\n if (this.gridApi) {\n this.gridApi.refreshServerSide({ purge });\n }\n }\n /**\n * Handles setting server-side datasource\n * @internal\n */\n handleSetServerSideDatasource(event) {\n const { datasource } = event.detail;\n if (this.gridApi) {\n this.gridApi.setServerSideDatasource(datasource);\n }\n }\n /**\n * Handles adding CSS class to grid element\n * @internal\n */\n handleAddGridCssClass(event) {\n var _a;\n const { className } = event.detail;\n // Add CSS class to grid element\n const gridElement = ((_a = this.gridSlot) === null || _a === void 0 ? void 0 : _a.parentElement) || this;\n if (gridElement) {\n gridElement.classList.add(className);\n }\n }\n /**\n * Handles removing CSS class from grid element\n * @internal\n */\n handleRemoveGridCssClass(event) {\n var _a;\n const { className } = event.detail;\n // Remove CSS class from grid element\n const gridElement = ((_a = this.gridSlot) === null || _a === void 0 ? void 0 : _a.parentElement) || this;\n if (gridElement) {\n gridElement.classList.remove(className);\n }\n }\n /**\n * Handles applying server-side transactions\n * @internal\n */\n handleApplyServerSideTransaction(event) {\n var _a, _b;\n const { transaction, async, callback } = event.detail;\n if (!this.gridApi)\n return;\n if (async) {\n this.gridApi.applyServerSideTransactionAsync(transaction, (result) => {\n var _a, _b;\n this.flashAddedCells([...((_a = result === null || result === void 0 ? void 0 : result.add) !== null && _a !== void 0 ? _a : []), ...((_b = result === null || result === void 0 ? void 0 : result.update) !== null && _b !== void 0 ? _b : [])]);\n callback === null || callback === void 0 ? void 0 : callback(result);\n });\n }\n else {\n const result = this.gridApi.applyServerSideTransaction(transaction);\n this.flashAddedCells([...((_a = result === null || result === void 0 ? void 0 : result.add) !== null && _a !== void 0 ? _a : []), ...((_b = result === null || result === void 0 ? void 0 : result.update) !== null && _b !== void 0 ? _b : [])]);\n if (callback) {\n callback(result);\n }\n }\n }\n combineAllGridComponents(gridOptionsComponents) {\n const defaultFoundationAgComponents = {\n [GridProRendererTypes.action]: ActionRenderer,\n [GridProRendererTypes.actionsMenu]: ActionsMenuRenderer,\n [GridProRendererTypes.boolean]: BooleanRenderer,\n [GridProRendererTypes.editable]: EditableRenderer,\n [GridProRendererTypes.icon]: IconRenderer,\n [GridProRendererTypes.statusPill]: StatusPillRenderer,\n [GridProRendererTypes.select]: SelectRenderer,\n [GridProRendererTypes.selectEditor]: SelectEditor,\n [GridProRendererTypes.numberEditor]: NumberEditor,\n [GridProRendererTypes.multiselectEditor]: MultiselectEditor,\n [GridProRendererTypes.dateEditor]: DateEditor,\n [GridProRendererTypes.stringEditor]: StringEditor,\n [GridProStatusBarTypes.labelValue]: LabelValueStatusBarComponent,\n [GridProStatusBarTypes.loadMore]: LoadMoreStatusBarComponent,\n [GridProStatusBarTypes.reload]: ReloadStatusBarComponent,\n [GridProStatusBarTypes.rowCount]: RowCountStatusBarComponent,\n };\n return Object.assign(Object.assign(Object.assign({}, defaultFoundationAgComponents), gridOptionsComponents), this.gridComponents);\n }\n statePersistanceEnabled() {\n if (!this.persistColumnStateKey || this.persistColumnStateKey.length === 0) {\n return false;\n }\n return true;\n }\n /**\n * Gets the currently selected rows from the grid\n * @public\n * @returns Array of selected row data\n */\n getSelectedRows() {\n var _a, _b, _c, _d;\n try {\n if (!this.initialised || !this.gridApi) {\n return [];\n }\n const rowSelectionMode = (_a = this.gridOptions) === null || _a === void 0 ? void 0 : _a.rowSelection;\n // If row selection is enabled (single or multiple), use row selection only\n if (rowSelectionMode === 'single' || rowSelectionMode === 'multiple') {\n if (this.gridApi.getSelectedRows && this.gridApi.getSelectedRows().length > 0) {\n return this.gridApi.getSelectedRows();\n }\n return [];\n }\n // If row selection is disabled (undefined/none), use cell range selection\n if (((_b = this.gridApi) === null || _b === void 0 ? void 0 : _b.getCellRanges) && this.gridApi.getCellRanges().length > 0) {\n return this.getCellRangeRowData();\n }\n // Fallback: if no cell ranges but range selection is disabled,\n // check for focused cell (single cell selection)\n if (!((_c = this.gridOptions) === null || _c === void 0 ? void 0 : _c.enableRangeSelection)) {\n const focusedCell = (_d = this.gridApi) === null || _d === void 0 ? void 0 : _d.getFocusedCell();\n if (focusedCell) {\n const rowNode = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (rowNode === null || rowNode === void 0 ? void 0 : rowNode.data) {\n return [rowNode.data];\n }\n }\n }\n return [];\n }\n catch (error) {\n logger.error('Grid Pro: Error getting selected rows:', error);\n return [];\n }\n }\n /**\n * Gets the row data from selected cell ranges\n * @internal\n * @returns Array containing the row data from selected cell ranges, or empty array if none\n */\n getCellRangeRowData() {\n var _a;\n if (!((_a = this.gridApi) === null || _a === void 0 ? void 0 : _a.getCellRanges)) {\n return [];\n }\n const cellRanges = this.gridApi.getCellRanges();\n if (cellRanges.length === 0) {\n return [];\n }\n const rowData = [];\n // Collect unique row data from all selected cell ranges\n cellRanges.forEach((range) => {\n const startIndex = range.startRow.rowIndex;\n const endIndex = range.endRow.rowIndex;\n // Iterate over indices directly for better performance\n for (let rowIndex = startIndex; rowIndex <= endIndex; rowIndex += 1) {\n const rowNode = this.gridApi.getDisplayedRowAtIndex(rowIndex);\n if ((rowNode === null || rowNode === void 0 ? void 0 : rowNode.data) && !rowData.some((existing) => existing === rowNode.data)) {\n rowData.push(rowNode.data);\n }\n }\n });\n return rowData;\n }\n /**\n * Checks if any rows are currently selected\n * @public\n * @returns True if rows are selected, false otherwise\n */\n hasSelectedRows() {\n const selectedRows = this.getSelectedRows();\n return selectedRows.length > 0;\n }\n /**\n * Updates the label-value status bar component with new label and value\n * @public\n * @param params - Object containing label, value, and optionally hide flag\n * @example\n * ```ts\n * gridPro.updateLabelValueStatusBar({\n * label: 'Total Records',\n * value: '1,234',\n * hide: false\n * });\n * ```\n */\n updateLabelValueStatusBar(params) {\n var _a, _b;\n if (!this.gridApi) {\n logger.warn('Grid Pro: Cannot update label-value status bar - grid API not available');\n return;\n }\n const statusBar = (_b = (_a = this.gridApi).getStatusPanel) === null || _b === void 0 ? void 0 : _b.call(_a, GridProStatusBarTypes.labelValue);\n if (statusBar && typeof statusBar.updateParams === 'function') {\n statusBar.updateParams(params);\n }\n else {\n logger.warn('Grid Pro: Label-value status bar component not found or updateParams method not available');\n }\n }\n /**\n * Because we try and resize the grid to fit using callbacks on events, this will cause\n * a stack overflow of calls to resize, so we need to debounce it.\n * @internal\n */\n debouncedColumnAutosize() {\n if (!this.gridAutosizingEnabled)\n return;\n if (this.debounced) {\n clearTimeout(this.debounced);\n this.debounced = null;\n }\n this.debounced = setTimeout(() => {\n var _a;\n (_a = this.gridApi) === null || _a === void 0 ? void 0 : _a.sizeColumnsToFit();\n }, DEBOUNCED_RESIZE_TIME);\n }\n /**\n * If {@link @genesislcap/grid-pro#GridPro.gridAutosizingEnabled} is true, will remove the widths from the column states.\n * @internal\n */\n removeConfigWidthsToAutosize(colState) {\n return colState.map((col) => (Object.assign(Object.assign({}, col), { width: null })));\n }\n saveColumnState() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.rehydrationAttempted && this.statePersistanceEnabled()) {\n let colState = this.columnApi.getColumnState();\n colState = sanitizeColumnState(colState);\n colState = this.gridAutosizingEnabled\n ? this.removeConfigWidthsToAutosize(colState)\n : colState;\n const allHeadersHidden = colState.filter((c) => {\n if (c.hide)\n return false;\n const col = this.columnApi.getColumn(c.colId);\n return Boolean(col.getColDef().headerName);\n }).length === 0;\n if (colState.length === 0 ||\n JSON.stringify(colState) === JSON.stringify(this.columnState) ||\n allHeadersHidden)\n return;\n yield this.statePersistence.saveColumnState(this.persistColumnStateKey, colState);\n this.columnState = colState;\n }\n });\n }\n /**\n * Gets the saved grid ColumnState[] from storage\n * @remarks This is used to restore the grid state when the grid is rehydrated\n * @privateRemarks Not using `columnApi.get|setColumnState()` for these flows as it doesn't work setting new columnDefs vs different ordering.\n * @public\n */\n getSavedColumnState() {\n return __awaiter(this, void 0, void 0, function* () {\n this.columnState = [];\n if (this.statePersistanceEnabled()) {\n this.columnState = yield this.statePersistence.getColumnState(this.persistColumnStateKey);\n }\n return this.columnState;\n });\n }\n /**\n * Deletes the saved column state for the current grid\n * @param resetToDefault - Whether to reset columns to their default configuration. Defaults to true.\n * @remarks This removes the persisted column state from storage, allowing the grid to use default column configuration\n * @public\n */\n deleteColumnState() {\n return __awaiter(this, arguments, void 0, function* (resetToDefault = true) {\n var _a;\n if (this.statePersistanceEnabled()) {\n yield this.statePersistence.deleteColumnState(this.persistColumnStateKey);\n this.columnState = [];\n }\n if (resetToDefault && this.columnApi) {\n if (((_a = this.defaultColumnConfig) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n // Convert ColDef[] to ColumnState[] using utility function\n const columnState = convertColDefsToColumnStates(this.defaultColumnConfig);\n this.columnApi.applyColumnState({\n state: columnState,\n applyOrder: true,\n });\n }\n else {\n this.columnApi.resetColumnState();\n }\n this.handleColumnSizing();\n }\n });\n }\n restoreColumnState() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n this.rehydrationAttempted = true;\n const colState = yield this.getSavedColumnState();\n const sanitizedColState = sanitizeColumnState(colState);\n if (sanitizedColState && sanitizedColState.length > 0) {\n (_a = this.columnApi) === null || _a === void 0 ? void 0 : _a.applyColumnState({\n state: sanitizedColState,\n applyOrder: true,\n });\n }\n });\n }\n cacheFilterConfig() {\n var _a;\n this.setFilterModel(((_a = this.gridApi) === null || _a === void 0 ? void 0 : _a.getFilterModel()) || undefined);\n }\n restoreCachedFilterConfig() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n const filterModel = yield this.getfilterModel();\n if (typeof filterModel !== 'undefined') {\n (_a = this.gridApi) === null || _a === void 0 ? void 0 : _a.setFilterModel(filterModel);\n (_b = this.gridApi) === null || _b === void 0 ? void 0 : _b.onFilterChanged();\n }\n });\n }\n /**\n * @public\n */\n get gridOptions() {\n return this.agGridOptions;\n }\n /**\n * @public\n */\n get isServerSide() {\n return this.gridProDatasource instanceof GridProServerSideDatasource;\n }\n /**\n * @public\n */\n get gridParams() {\n return {\n globalEventListener: this.boundGlobalEventListener,\n };\n }\n /**\n * Get the datasource element.\n * @remarks This will return the first datasource element found in the light DOM, wrapping all concrete datasource implementations.\n * @public\n */\n get gridProDatasource() {\n return (this.querySelector('grid-pro-genesis-datasource') ||\n this.querySelector('grid-pro-client-side-datasource') ||\n this.querySelector('grid-pro-server-side-datasource'));\n }\n /**\n * Reports the currently visible columns to the datasource. The datasource decides what to do with\n * them (e.g. narrowing the server request); the grid stays agnostic of that behaviour.\n * @internal\n */\n notifyDatasourceVisibleColumns() {\n var _a, _b, _c, _d;\n const datasource = this.gridProDatasource;\n if (!datasource)\n return;\n const visibleFields = resolveVisibleColumnFields((_b = (_a = this.columnApi) === null || _a === void 0 ? void 0 : _a.getAllDisplayedColumns) === null || _b === void 0 ? void 0 : _b.call(_a), (_d = (_c = this.gridApi) === null || _c === void 0 ? void 0 : _c.getColumnDefs) === null || _d === void 0 ? void 0 : _d.call(_c));\n // Skip empty results so we never overwrite a known visible set with nothing (e.g. when the\n // column API/defs aren't populated yet during early lifecycle).\n if (!visibleFields.length)\n return;\n datasource.setVisibleColumns(visibleFields);\n }\n set gridOptions(options) {\n if (!this.applyingDatasourceGridOptions && options) {\n this.userProvidedGridOptions = Object.assign({}, options);\n }\n // Column move/resize/pin/sort don't change which fields are visible, so they only need the\n // column-state/autosize bookkeeping below; visibility notification is wired separately (via\n // onColumnVisible/onDisplayedColumnsChanged) so it isn't tied to unrelated grid interactions.\n const gridOnChangeCallback = () => {\n if (this.disposed || !this.isConnected)\n return;\n this.debouncedSaveColumnState();\n this.debouncedColumnAutosize();\n this.invalidateColumnWidthCache();\n };\n const notifyVisibilityChanged = () => {\n if (this.disposed || !this.isConnected)\n return;\n this.debouncedNotifyDatasourceVisibleColumns();\n };\n Array.from(this.attributes).forEach((attribute) => {\n const attrName = this.agPropertiesMap[attribute.name];\n if (!attrName)\n return;\n this.agAttributes[attrName] = attribute.value;\n });\n const _a = options, { columnDefs, components, defaultColDef, getRowId, onGridReady, onFilterChanged, onFirstDataRendered } = _a, rest = __rest(_a, [\"columnDefs\", \"components\", \"defaultColDef\", \"getRowId\", \"onGridReady\", \"onFilterChanged\", \"onFirstDataRendered\"]);\n const gridOptionsConfig = this.gridOptionsConfig;\n const derivedOptions = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, gridOptionsConfig), { defaultColDef: Object.assign({ enableCellChangeFlash: this.enableCellFlashing, filter: true, resizable: true, sortable: true }, defaultColDef), components: this.combineAllGridComponents(components), suppressDragLeaveHidesColumns: true }), this.eventsAndCallbacks), { onGridReady: (event) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n this.gridApi = event.api;\n this.columnApi = event.columnApi;\n if (this.gridEventsQueue.length) {\n this.gridEventsQueue.forEach((type) => {\n this.addGridEventListener(type);\n });\n }\n // Await so columns land before rowData/columnState/ready below - otherwise they'd\n // race against an empty column model.\n if (this.pendingSchemaUpdate) {\n const pendingSchemaUpdate = this.pendingSchemaUpdate;\n this.pendingSchemaUpdate = undefined;\n yield this.processSchemaUpdate(pendingSchemaUpdate);\n }\n if (this.rowData) {\n this.gridApi.setRowData(this.rowData);\n }\n if (onGridReady) {\n onGridReady(event);\n }\n if (this.columnState && ((_a = this.columnState) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n this.columnApi.applyColumnState({\n state: this.columnState,\n applyOrder: true,\n });\n }\n this.$emit(Events.EVENT_GRID_READY, {\n event,\n gridId: this.id,\n });\n // TODO: Remove this event when we do the AG Upgrade\n this.$emit(GRID_READY_EVENT, {\n event,\n gridId: this.id,\n });\n // Seed the datasource with the initially visible columns before the load is kicked off, so\n // a datasource that scopes its request to visible columns can narrow the first request.\n this.notifyDatasourceVisibleColumns();\n // Emit datasource ready event, signals that the datasource is ready to be used\n // TODO: prevent rendering datasource slot until grid is ready\n // so there is no need for this even and handling it in datasources\n (_b = this.gridProDatasource) === null || _b === void 0 ? void 0 : _b.$emit(datasourceEventNames.ready);\n this.restoreColumnState();\n this.restoreCachedFilterConfig();\n this.debouncedColumnAutosize();\n }), onFirstDataRendered: (event) => {\n // Handle column sizing\n this.handleColumnSizing();\n // Safety net: by now the column API is populated, so (re)seed the datasource's visible\n // columns in case the initial grid-ready seed ran before columns were available.\n this.notifyDatasourceVisibleColumns();\n // Call the original onFirstDataRendered if provided\n if (onFirstDataRendered) {\n onFirstDataRendered(event);\n }\n }, onColumnPinned: gridOnChangeCallback, onColumnResized: gridOnChangeCallback, onColumnMoved: gridOnChangeCallback, \n // Primary visibility trigger: fires per-column on show/hide, from the tool panel, header\n // menu, or API calls alike.\n onColumnVisible: () => {\n gridOnChangeCallback();\n notifyVisibilityChanged();\n }, \n // Fallback for bulk tool-panel operations (e.g. \"select all\") that may not cleanly emit one\n // onColumnVisible per column across entry points; debounced alongside it so a burst still\n // collapses into a single datasource reload.\n onDisplayedColumnsChanged: () => {\n gridOnChangeCallback();\n notifyVisibilityChanged();\n }, onFilterChanged: (filterChangedEvent) => {\n if (this.disposed || !this.isConnected)\n return;\n this.debouncedSaveFilterModel();\n if (onFilterChanged) {\n onFilterChanged(filterChangedEvent);\n }\n }, onGridSizeChanged: gridOnChangeCallback, onSortChanged: gridOnChangeCallback }), rest);\n const hasGetRowId = 'getRowId' in (options !== null && options !== void 0 ? options : {});\n if (this.gridProDatasource) {\n derivedOptions.columnDefs = columnDefs;\n if (hasGetRowId) {\n derivedOptions.getRowId = getRowId;\n }\n this.setupStatusBar(derivedOptions);\n this.setLocalGridOptions(derivedOptions);\n }\n else {\n this.mergeAllColumnDefsAndStates(columnDefs).then((value) => {\n if (this.disposed || !this.isConnected) {\n return;\n }\n derivedOptions.columnDefs = value;\n if (hasGetRowId) {\n derivedOptions.getRowId = getRowId;\n }\n this.setupStatusBar(derivedOptions);\n this.setLocalGridOptions(derivedOptions);\n this.initGrid();\n });\n }\n }\n setLocalGridOptions(derivedOptions) {\n this.agGridOptions = Object.assign(Object.assign({}, this.agGridOptions), copyAttributesToGridOptions(derivedOptions, this.agAttributes));\n }\n /**\n * Clears the local grid options, this is used to clear the grid options when the grid is restarted.\n * @public\n */\n clearLocalGridOptions() {\n this.agGridOptions = undefined;\n }\n /**\n * Clears all grid option state when the grid element is fully torn down.\n * @internal\n */\n resetGridOptionsState() {\n this.userProvidedGridOptions = undefined;\n this.agGridOptions = undefined;\n }\n initGrid() {\n DOM.queueUpdate(() => {\n // `gridSlot` belongs in this readiness check, not just `disposed`/`isConnected`: it is a\n // template ref, so it is undefined until the view binds, and this task runs on the shared\n // update queue — an options change can queue it ahead of the binding that fills the ref.\n // Every other reader in this file already guards it; these two lines did not, so that\n // ordering threw `Cannot read properties of undefined (reading 'firstChild')` from INSIDE a\n // queued task. Such a throw is not attributable to whatever caused it: web-test-runner\n // reports it as an uncaught page exception against whichever test happens to be running,\n // which is how it surfaced — as an unrelated datasource test failing only under CI load.\n // Skipping is safe because both callers re-run on the next grid-options change.\n if (this.disposed || !this.isConnected || !this.gridSlot) {\n return;\n }\n if (this.initialised) {\n this.destroyGridInstance();\n // Needed due gridSlot children cleanup\n if (this.gridSlot.firstChild) {\n // prevent re-instantiating the grid using the same slot content\n this.gridSlot.removeChild(this.gridSlot.firstChild);\n }\n }\n this.agGrid = new Grid(this.gridSlot, this.agGridOptions, this.gridParams);\n this.initialised = true;\n });\n }\n /**\n * Will merge templated column definitions with `columnDefs` plus localStorage's column state or `deferredColumnStates`.\n * @deprecated use `applyTemplateDefinitions` instead.\n * @param columnDefs - The column definitions to apply to the grid.\n * @param deferredColumnDefsOrState - If true, will merge the column definitions with the saved column state or the `deferredColumnStates` property on the `grid-pro-genesis-datasource` element.\n * @returns The merged column definitions.\n */\n applyTemplateDefinitions(columnDefs, deferredColumnDefsOrState = false) {\n logger.deprecated('applyTemplateDefinitions', 'Use `mergeAllColumnDefsAndStates` instead.');\n return this.mergeAllColumnDefsAndStates(columnDefs, deferredColumnDefsOrState);\n }\n /**\n * Will merge templated column definitions with `columnDefs` plus localStorage's column state or `deferredColumnStates`.\n * @public\n * @remarks This will favor the column state from the browser's local storage over the `deferredColumnStates` property on the `grid-pro-genesis-datasource` element.\n * @param columnDefs - The column definitions to apply to the grid.\n * @param deferredColumnDefsOrState - If true, will merge the column definitions with the saved column state or the `deferredColumnStates` property\n * on the `grid-pro-genesis-datasource` element. Defaults to false but `grid-pro-genesis-datasource` will set this to true.\n * @returns The merged column definitions.\n */\n mergeAllColumnDefsAndStates(columnDefs_1) {\n return __awaiter(this, arguments, void 0, function* (columnDefs, deferredColumnDefsOrState = false) {\n var _a;\n const columnDefinitionsFromMetadata = columnDefs || [];\n columnDefinitionsFromMetadata.forEach((colDefFromMetadata) => {\n if (this.headerCaseType && colDefFromMetadata.field && !colDefFromMetadata.headerName) {\n const changeCaseByType = changeCase[this.headerCaseType];\n if (changeCaseByType) {\n colDefFromMetadata.headerName = changeCaseByType(colDefFromMetadata.field);\n }\n else {\n logger.warn(`Invalid header-case-type attribute value: ${this.headerCaseType}. Please use one of the following: camelCase, capitalCase, dotCase, headerCase, noCase, paramCase, pascalCase, pathCase, sentenceCase, snakeCase.`);\n }\n }\n });\n const templateColumnDefs = Array.from(this.querySelectorAll(this.columnComponentName))\n .map((templateColumn) => templateColumn.definition)\n .map((columnDef) => {\n var _a, _b;\n // enable cell flashing for each column if unspecified on column level but enabled on grid level\n if (this.enableCellFlashing && columnDef.enableCellChangeFlash === undefined) {\n columnDef.enableCellChangeFlash = true;\n }\n /**\n * If the column has a set filter, merge filter params with metadata values.\n * If the template column explicitly sets 'values' in filterParams (even to undefined),\n * respect that choice and don't inject metadata values. This allows consumers to\n * opt out of metadata values and let AG Grid extract values from row data instead.\n */\n if (columnDef.filter === 'agSetColumnFilter') {\n const hasExplicitValues = columnDef.filterParams != null && 'values' in columnDef.filterParams;\n if (!hasExplicitValues) {\n const metadataValues = (_b = (_a = columnDefinitionsFromMetadata.find((colDef) => colDef.field === columnDef.field)) === null || _a === void 0 ? void 0 : _a.filterParams) === null || _b === void 0 ? void 0 : _b.values;\n if (metadataValues) {\n columnDef.filterParams = Object.assign(Object.assign({}, columnDef.filterParams), { values: metadataValues });\n }\n }\n }\n if (columnDef.editable) {\n if (!columnDef.cellRenderer && !columnDef.cellRendererSelector) {\n columnDef.cellRendererSelector = (params) => {\n if (!(params === null || params === void 0 ? void 0 : params.data)) {\n return undefined;\n }\n if (params.data[EDITED_COLUMN_FIELD] === columnDef.field) {\n return {\n component: GridProRendererTypes.editable,\n };\n }\n };\n }\n if (!columnDef.tooltipComponent && !columnDef.tooltipValueGetter) {\n columnDef.tooltipComponent = ErrorTooltip;\n columnDef.tooltipValueGetter = (params) => {\n if (!(params === null || params === void 0 ? void 0 : params.data)) {\n return undefined;\n }\n const error = params.data[ERROR_COLUMN_FIELD];\n if (error && error.column === columnDef.field) {\n return error.message;\n }\n };\n }\n if (!columnDef.cellClassRules) {\n columnDef.cellClassRules = {\n error: (params) => {\n var _a;\n if (!(params === null || params === void 0 ? void 0 : params.colDef) || !(params === null || params === void 0 ? void 0 : params.data)) {\n return false;\n }\n return ((_a = params.data[ERROR_COLUMN_FIELD]) === null || _a === void 0 ? void 0 : _a.column) === params.colDef.field;\n },\n };\n }\n }\n const metadataColumnDef = columnDefinitionsFromMetadata.find((colDef) => columnDef.field === colDef.field);\n return Object.assign(Object.assign({}, metadataColumnDef), columnDef);\n });\n const templateColumnKeys = templateColumnDefs.map((x) => x.field);\n const colDefsToReturn = [\n ...templateColumnDefs,\n ...(this.onlyTemplateColDefs\n ? []\n : columnDefinitionsFromMetadata.filter((g) => !templateColumnKeys.includes(g.field))),\n ];\n if (this.gridProDatasource && deferredColumnDefsOrState) {\n const savedColumnState = yield this.getSavedColumnState();\n if ((savedColumnState === null || savedColumnState === void 0 ? void 0 : savedColumnState.length) > 0) {\n return mergeAndDedupColDefWithColumnState(colDefsToReturn, savedColumnState);\n }\n else if (((_a = this.gridProDatasource.deferredColumnStates) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n return mergeAndDedupColDefWithColumnState(colDefsToReturn, this.gridProDatasource.deferredColumnStates);\n }\n }\n return colDefsToReturn;\n });\n }\n panelExists(statusPanelType, panels) {\n return panels.some((panel) => panel.statusPanel === statusPanelType);\n }\n addRowCountPanel(statusPanels, gridOptions) {\n // The custom rowCount panel is used for server-side infinite scroll (load more) scenarios;\n // client-side row models use AG Grid's own row count component instead.\n if (this.statusBarConfig && this.statusBarConfig.rows === true) {\n const isServerSide = this.isServerSide || (gridOptions === null || gridOptions === void 0 ? void 0 : gridOptions.rowModelType) === 'serverSide';\n if (isServerSide) {\n if (!this.panelExists(GridProStatusBarTypes.rowCount, statusPanels)) {\n statusPanels.push({\n statusPanel: GridProStatusBarTypes.rowCount,\n align: 'left',\n });\n }\n }\n else if (!isServerSide) {\n const rowCountStatusPanel = 'agTotalAndFilteredRowCountComponent';\n if (!this.panelExists(rowCountStatusPanel, statusPanels)) {\n statusPanels.push({\n statusPanel: rowCountStatusPanel,\n align: 'left',\n });\n }\n }\n }\n }\n addMaxRowsPanel(statusPanels) {\n if (this.statusBarConfig && this.statusBarConfig.maxRows === true) {\n if (!this.panelExists(GridProStatusBarTypes.labelValue, statusPanels)) {\n statusPanels.push({\n statusPanel: GridProStatusBarTypes.labelValue,\n statusPanelParams: {\n label: 'Max Rows',\n value: this.gridProDatasource.maxRows || DatasourceDefaults.MAX_ROWS_250,\n hide: false,\n },\n align: 'left',\n });\n }\n }\n }\n addAggregationPanel(statusPanels) {\n if (this.statusBarConfig && this.statusBarConfig.aggregation === true) {\n if (!this.panelExists('agAggregationComponent', statusPanels)) {\n statusPanels.push({\n statusPanel: 'agAggregationComponent',\n align: 'right',\n });\n }\n }\n }\n addDatasourcePanels(statusPanels) {\n if (this.gridProDatasource) {\n const datasourceStatusPanels = this.gridProDatasource.getDatasourceStatusBarPanels(this.isServerSide, this.statusBarConfig);\n // Filter out duplicate datasource panels\n const newDatasourcePanels = datasourceStatusPanels.filter((panel) => !this.panelExists(panel.statusPanel, statusPanels));\n statusPanels.push(...newDatasourcePanels);\n }\n }\n setupStatusBar(gridOptions) {\n // Keep the guard for production code, but allow override for testing\n // if (this.initialised && !allowDuplicateCheck) return;\n var _a, _b;\n // Set default status bar with components based on configuration\n if (this.withStatusBar && this.statusBarConfig) {\n // For duplicate checking (testing scenario), clear existing status panels to prevent duplicates\n // unless they are user-defined panels that we want to preserve\n const existingPanels = ((_a = gridOptions.statusBar) === null || _a === void 0 ? void 0 : _a.statusPanels) || [];\n const statusPanels = [...existingPanels];\n this.addRowCountPanel(statusPanels, gridOptions);\n this.addMaxRowsPanel(statusPanels);\n this.addAggregationPanel(statusPanels);\n this.addDatasourcePanels(statusPanels);\n const userDefinedStatusPanels = ((_b = gridOptions.statusBar) === null || _b === void 0 ? void 0 : _b.statusPanels) || [];\n const newUserDefinedPanels = userDefinedStatusPanels.filter((panel) => !this.panelExists(panel.statusPanel, statusPanels));\n statusPanels.push(...newUserDefinedPanels);\n gridOptions.statusBar = {\n statusPanels: statusPanels,\n };\n }\n }\n /**\n * Handles column sizing based on sizeColumnsToContent and sizeColumnsToFit attributes\n * @private\n */\n handleColumnSizing() {\n if (!this.sizeColumnsToContent && !this.sizeColumnsToFit)\n return;\n if (this.sizeColumnsToContent && this.sizeColumnsToFit && this.columnApi && this.gridApi) {\n this.handleBothSizingModes();\n }\n else {\n this.handleIndividualSizingModes();\n }\n }\n /**\n * Handles when both sizeColumnsToContent and sizeColumnsToFit are enabled\n * @private\n */\n handleBothSizingModes() {\n const totalColumnWidth = this.calculateTotalColumnWidth();\n const gridWidth = this.getGridWidth();\n if (totalColumnWidth > gridWidth) {\n if (!this.columnApi)\n return;\n this.columnApi.autoSizeAllColumns();\n }\n else {\n if (!this.gridApi)\n return;\n this.gridApi.sizeColumnsToFit();\n }\n }\n /**\n * Handles individual sizing modes when only one is enabled\n * @private\n */\n handleIndividualSizingModes() {\n if (this.sizeColumnsToContent && this.columnApi) {\n this.columnApi.autoSizeAllColumns();\n }\n if (this.sizeColumnsToFit && this.gridApi) {\n this.gridApi.sizeColumnsToFit();\n }\n }\n /**\n * Calculates the total width of all columns\n * @private\n */\n calculateTotalColumnWidth() {\n if (!this.columnApi) {\n return 0;\n }\n const allColumns = this.columnApi.getAllGridColumns();\n const currentColumnCount = allColumns.length;\n // Check if cache is still valid (same number of columns)\n if (this.cachedTotalColumnWidth !== null && this.columnCount === currentColumnCount) {\n return this.cachedTotalColumnWidth;\n }\n // Calculate and cache the total width\n this.cachedTotalColumnWidth = allColumns.reduce((sum, col) => sum + (col.getActualWidth() || 0), 0);\n this.columnCount = currentColumnCount;\n return this.cachedTotalColumnWidth;\n }\n /**\n * Invalidates the cached column width calculation\n * @private\n * @remarks This method is called automatically when column changes occur (resize, move, pin, etc.)\n * to ensure the cached width calculation remains accurate.\n */\n invalidateColumnWidthCache() {\n this.cachedTotalColumnWidth = null;\n this.columnCount = 0;\n }\n /**\n * Gets the available grid width with fallbacks\n * @private\n */\n getGridWidth() {\n const gridElement = this;\n let gridWidth = (gridElement === null || gridElement === void 0 ? void 0 : gridElement.clientWidth) || 0;\n if (gridWidth === 0 && this.gridSlot) {\n gridWidth = this.gridSlot.clientWidth || 0;\n }\n if (gridWidth === 0) {\n gridWidth = this.clientWidth || 0;\n }\n return gridWidth;\n }\n get observedAttributes() {\n // allow properties to be supplied either lowercased or kebab-cased\n // this allows the user to either supply (for example) enableSorting or enabled-sorting\n // properties lowercased\n const lowerCasedPropertyNames = AG_PROPERTIES.map((property) => property.toLowerCase());\n // properties kebab-cased\n const kebabCasePropertyNames = AG_PROPERTIES.map((property) => convertToKebabCase(property));\n return lowerCasedPropertyNames.concat(kebabCasePropertyNames);\n }\n agAttributeChangedCallback(attName, oldValue, newValue) {\n if (oldValue === newValue) {\n return;\n }\n const gridPropertyName = this.agPropertiesMap[attName];\n if (gridPropertyName) {\n // for properties set before gridOptions is called\n this.agAttributes[gridPropertyName] = newValue;\n // `initialised` flips true before `gridApi` is assigned (mid-reinit), so relying on it\n // alone here can crash processOnChange with an undefined api.\n if (this.initialised && this.gridApi) {\n // for subsequent (post gridOptions) changes\n const changeObject = {};\n changeObject[gridPropertyName] = { currentValue: newValue };\n ComponentUtil.processOnChange(changeObject, this.gridApi);\n }\n }\n }\n globalEventListener(eventType, event) {\n const eventLowerCase = eventType.toLowerCase();\n const browserEvent = new Event(eventLowerCase);\n const browserEventNoType = browserEvent;\n browserEventNoType.agGridDetails = event;\n // for when defining events via myGrid.addEventListener('columnresized', function (event) {...\n this.dispatchEvent(browserEvent);\n // for when defining events via myGrid.oncolumnresized = function (event) {....\n const callbackMethod = 'on' + eventLowerCase;\n if (typeof this[callbackMethod] === 'function') {\n this[callbackMethod](browserEvent);\n }\n }\n insertFontFace(newValue) {\n const fontFaceRule = agThemeFontFaceMap[newValue] || this.gridFontFace;\n this.destroyFontFace();\n const newDestroy = insertDocumentCSSRule(fontFaceRule, agThemeFontsId(newValue));\n if (newDestroy) {\n this.fontFaceDestroy = newDestroy;\n }\n }\n destroyFontFace() {\n if (this.fontFaceDestroy) {\n this.fontFaceDestroy();\n this.fontFaceDestroy = null;\n }\n }\n}\n__decorate([\n observable\n], GridPro.prototype, \"columnApi\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"gridApi\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"gridErrorItems\", void 0);\n__decorate([\n StatePersistence\n], GridPro.prototype, \"statePersistence\", void 0);\n__decorate([\n attr({ attribute: 'auto-cell-renderer-by-type', mode: 'boolean' })\n], GridPro.prototype, \"autoCellRendererByType\", void 0);\n__decorate([\n attr({ attribute: 'only-template-col-defs', mode: 'boolean' })\n], GridPro.prototype, \"onlyTemplateColDefs\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'grid-autosizing' })\n], GridPro.prototype, \"gridAutosizingEnabled\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'size-columns-to-content' })\n], GridPro.prototype, \"sizeColumnsToContent\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'size-columns-to-fit' })\n], GridPro.prototype, \"sizeColumnsToFit\", void 0);\n__decorate([\n attr({ attribute: 'add-index' })\n], GridPro.prototype, \"addIndex\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'async-add' })\n], GridPro.prototype, \"asyncAdd\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'async-remove' })\n], GridPro.prototype, \"asyncRemove\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'async-update' })\n], GridPro.prototype, \"asyncUpdate\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'enable-cell-flashing' })\n], GridPro.prototype, \"enableCellFlashing\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'enabled-row-flashing' })\n], GridPro.prototype, \"enabledRowFlashing\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'enable-row-flashing' })\n], GridPro.prototype, \"enableRowFlashing\", void 0);\n__decorate([\n attr({ attribute: 'persist-column-state-key' })\n], GridPro.prototype, \"persistColumnStateKey\", void 0);\n__decorate([\n attr({ attribute: 'persist-filter-model-key' })\n], GridPro.prototype, \"persistFilterModelKey\", void 0);\n__decorate([\n attr({ attribute: 'default-column-config' })\n], GridPro.prototype, \"defaultColumnConfig\", void 0);\n__decorate([\n attr({ attribute: 'header-case-type' })\n], GridPro.prototype, \"headerCaseType\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"rowData\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"gridFontFace\", void 0);\n__decorate([\n attr\n], GridPro.prototype, \"columnComponentName\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"eventsAndCallbacks\", void 0);\n__decorate([\n attr\n], GridPro.prototype, \"headerHeight\", void 0);\n__decorate([\n attr\n], GridPro.prototype, \"rowHeight\", void 0);\n__decorate([\n attr\n], GridPro.prototype, \"theme\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"classNames\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"agGrid\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"gridSlot\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"themeMode\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"gridComponents\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"statusBarConfig\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'with-status-bar' })\n], GridPro.prototype, \"withStatusBar\", void 0);\n__decorate([\n observable\n], GridPro.prototype, \"customErrorHandlerTemplate\", void 0);\n__decorate([\n GridOptionsConfig\n], GridPro.prototype, \"gridOptionsConfig\", void 0);\n/**\n * GridPro shadow root options.\n * @public\n * @remarks\n * For extensibility, this can be used to set the shadow root mode and delegatesFocus\n */\nexport const foundationGridProShadowOptions = undefined;\n/**\n * Grid Pro default configuration.\n * @public\n */\nexport const defaultGridProConfig = {\n shadowOptions: undefined,\n};\n/**\n * A function that returns a Foundation Grid Pro registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-grid-pro\\>\n */\nexport const foundationGridPro = GridPro.compose(Object.assign({ baseName: 'grid-pro', styles,\n template, shadowOptions: foundationGridProShadowOptions }, defaultGridProConfig));\n","import { alertFlashPhaseProperty } from '@genesislcap/foundation-ui';\nimport { css } from '@microsoft/fast-element';\nimport { gridProColumnSelectionHostStyles } from './column-selection/column-selection.styles';\nimport { errorHandlerDialogStyles } from './datasource/error-handler.dialog';\nimport { ROW_MATCH_ALERT_CELL_CLASS, ROW_MATCH_ALERT_CLASS } from './datasource/row-match.classes';\nimport { agExternalStockStyles } from './external';\n/**\n * Workaround for an AG Grid (v36, still present in v36.1.0) drag-ghost positioning bug in\n * shadow DOM. The row-drag \"N rows\" ghost is appended to the grid's containing shadow root\n * (AG's \\`_getPageBody\\` finds no \\`<body>\\` there) inside \\`.ag-styled-root\\` wrappers that are\n * \\`display: contents\\`, so the ghost's positioning formula\n * (\\`clientY - offsetParentRect.top - height / 2\\`) resolves against whatever ancestor of the\n * shadow host happens to be its containing block. Whenever the element \\`offsetParent\\`\n * reports differs from the real containing block (inline host fragments, scrolled panes,\n * app-level transforms), the ghost renders at a constant offset from the cursor.\n * \\`popupParent\\` does not help — the ghost code path never consults it.\n *\n * Giving the ghost's direct wrapper a real, positioned, zero-size box makes it both the\n * reported \\`offsetParent\\` and the actual containing block, so AG's formula is exact —\n * verified to match AG's healthy document-\\`body\\` code path pixel-for-pixel. Scoped with\n * \\`:has(> .ag-dnd-ghost)\\` so the popup subsystem's \\`.ag-styled-root\\` wrappers keep their\n * stock \\`display: contents\\`.\n *\n * @public\n */\nexport const agDragGhostShadowDomStyles = css `\n .ag-styled-root:has(> .ag-dnd-ghost) {\n display: block;\n position: fixed;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n }\n`;\n/**\n * Flash for rows carrying the classes that `createRowMatchClassRules` and\n * `createRowMatchCellClassRules` apply.\n *\n * These live in the grid's own stylesheet because AG Grid renders inside this shadow root, out of\n * reach of an app's CSS. The phase comes from the document-level clock, which inherits through the\n * shadow boundary, so a flashing row keeps step with the flashing tab that sent you looking for it.\n *\n * Any grid composition that does not include {@link foundationGridProStyles} needs to include this\n * as well, otherwise its rows silently never flash.\n *\n * @public\n */\nexport const rowMatchAlertStyles = css `\n /* The :host prefix is needed to outweigh the AG theme's own .ag-theme-* .ag-row background. */\n :host .ag-row.${ROW_MATCH_ALERT_CLASS} {\n background-color: color-mix(\n in srgb,\n var(--row-alert-color, var(--error-fill-rest, #c62828))\n calc(var(${alertFlashPhaseProperty}, 0) * 100%),\n transparent\n );\n }\n\n /* AG paints cell backgrounds over the row, so they have to stand aside for a row-wide flash. */\n :host .ag-row.${ROW_MATCH_ALERT_CLASS} .ag-cell:not(.${ROW_MATCH_ALERT_CELL_CLASS}) {\n background-color: transparent !important;\n }\n\n :host .ag-cell.${ROW_MATCH_ALERT_CELL_CLASS} {\n background-color: color-mix(\n in srgb,\n var(--row-alert-color, var(--error-fill-rest, #c62828))\n calc(var(${alertFlashPhaseProperty}, 0) * 100%),\n transparent\n );\n }\n\n /* Reduced motion stops the clock, leaving the phase at 0, so paint a steady alert instead. */\n @media (prefers-reduced-motion: reduce) {\n :host .ag-row.${ROW_MATCH_ALERT_CLASS}, :host .ag-cell.${ROW_MATCH_ALERT_CELL_CLASS} {\n background-color: var(--row-alert-color, var(--error-fill-rest, #c62828));\n }\n }\n`;\n/**\n * The Grid Pro styles.\n * @public\n * @remarks this is the default CSS, bundles Alpine/Balham/Material AG themes.\n */\nexport const foundationGridProStyles = css `\n ${agExternalStockStyles}\n ${errorHandlerDialogStyles}\n ${agDragGhostShadowDomStyles}\n ${gridProColumnSelectionHostStyles}\n ${rowMatchAlertStyles}\n :host {\n --datasource-error-background-color: var(--neutral-layer-4);\n --datasource-error-background-opacity: 0.5;\n --datasource-error-dialog-max-width: 50%;\n --datasource-error-dialog-min-width: auto;\n --ag-status-bar-height: 32.5px;\n\n position: relative;\n width: 100%;\n height: 100%;\n }\n\n :host([ds-disconnected]) {\n display: block;\n }\n\n :host([ds-disconnected])::part(grid) {\n cursor: not-allowed;\n opacity: 40%;\n pointer-events: none;\n }\n\n .ag-side-bar,\n .ag-menu {\n --ag-subheader-background-color: var(--ag-background-color);\n --ag-control-panel-background-color: var(--ag-background-color);\n }\n\n .ag-cell-inline-editing {\n height: inherit !important;\n }\n\n .hidden {\n display: none;\n }\n\n .error {\n border-color: var(--error-color) !important;\n }\n\n .ag-status-bar {\n height: var(--ag-status-bar-height);\n }\n\n .ag-status-name-value {\n padding-top: var(--ag-grid-size);\n padding-bottom: var(--ag-grid-size);\n }\n\n /* Custom styling for the unsort icon (sortNone) - only for sortable columns */\n .ag-header-cell.ag-header-cell-sortable .ag-icon-none {\n opacity: 100%;\n color: var(--rapid-ag-header-foreground-color, var(--ag-foreground-color, #fff));\n font-size: calc(var(--ag-icon-size, 12px) * 1.2);\n font-weight: bold;\n }\n\n .ag-header-cell.ag-header-cell-sortable:hover .ag-icon-none {\n opacity: 100%;\n color: var(--rapid-ag-header-foreground-color, var(--ag-foreground-color, #fff));\n transform: scale(1.1);\n transition: transform 0.2s ease;\n }\n`;\n","import { html, ref, when } from '@microsoft/fast-element';\nimport { getErrorHandlerDialogTemplate } from './datasource/error-handler.dialog';\n/**\n * Get a Design System prefixed The Grid Pro template.\n * @param prefix - The design system prefix to use. Defaults to 'foundation'.\n * @returns A grid Pro template prefixed with the correct design system.\n * @public\n */\nexport const getGridProTemplate = (prefix = 'foundation') => html `\n <template>\n ${when((x) => !!x.enableColumnSelection, html `\n <div class=\"grid-pro-column-selection-toolbar\" part=\"actions\">\n <${prefix}-column-selection\n :gridHost=\"${(x) => x}\"\n ></${prefix}-column-selection>\n </div>\n `)}\n <span part=\"grid\" data-ag-theme-mode=${(x) => x.themeMode} class=\"${(x) => x.classNames}\">\n <slot name=\"grid\" ${ref('gridSlot')}></slot>\n <slot></slot>\n </span>\n ${(x) => x.customErrorHandlerTemplate\n ? x.customErrorHandlerTemplate(prefix, x.gridErrorItems.filter(({ type }) => type === 'datasource'))\n : getErrorHandlerDialogTemplate(prefix, x.gridErrorItems.filter(({ type }) => type === 'datasource'))}\n </template>\n`;\n/**\n *\n * @public\n * @remarks\n * HTML Element: <foundation-grid-pro>\n */\nexport const gridProTemplate = getGridProTemplate();\n","import { CSSVarsTokenMapper } from '@genesislcap/foundation-ui';\nimport { css } from '@microsoft/fast-element';\nimport { DI } from '@microsoft/fast-foundation';\n/**\n * All official AG CSS variables\n * @public\n */\nexport var AgGridCSSVars;\n(function (AgGridCSSVars) {\n AgGridCSSVars[\"foregroundColor\"] = \"--ag-foreground-color\";\n AgGridCSSVars[\"dataColor\"] = \"--ag-data-color\";\n AgGridCSSVars[\"secondaryForegroundColor\"] = \"--ag-secondary-foreground-color\";\n AgGridCSSVars[\"headerForegroundColor\"] = \"--ag-header-foreground-color\";\n AgGridCSSVars[\"disabledForegroundColor\"] = \"--ag-disabled-foreground-color\";\n AgGridCSSVars[\"backgroundColor\"] = \"--ag-background-color\";\n AgGridCSSVars[\"headerBackgroundColor\"] = \"--ag-header-background-color\";\n AgGridCSSVars[\"subheaderBackgroundColor\"] = \"--ag-subheader-background-color\";\n AgGridCSSVars[\"subheaderToolbarBackgroundColor\"] = \"--ag-subheader-toolbar-background-color\";\n AgGridCSSVars[\"controlPanelBackgroundColor\"] = \"--ag-control-panel-background-color\";\n AgGridCSSVars[\"selectedRowBackgroundColor\"] = \"--ag-selected-row-background-color\";\n AgGridCSSVars[\"oddRowBackgroundColor\"] = \"--ag-odd-row-background-color\";\n AgGridCSSVars[\"rowHoverColor\"] = \"--ag-row-hover-color\";\n AgGridCSSVars[\"rangeSelectionBorderColor\"] = \"--ag-range-selection-border-color\";\n AgGridCSSVars[\"rangeSelectionBackgroundColor\"] = \"--ag-range-selection-background-color\";\n AgGridCSSVars[\"selectedTabUnderlineColor\"] = \"--ag-selected-tab-underline-color\";\n AgGridCSSVars[\"rangeSelectionChartCategoryBackgroundColor\"] = \"--ag-range-selection-chart-category-background-color\";\n AgGridCSSVars[\"rangeSelectionChartBackgroundColor\"] = \"--ag-range-selection-chart-background-color\";\n AgGridCSSVars[\"headerCellHoverBackgroundColor\"] = \"--ag-header-cell-hover-background-color\";\n AgGridCSSVars[\"headerCellMovingBackgroundColor\"] = \"--ag-header-cell-moving-background-color\";\n AgGridCSSVars[\"chipBackgroundColor\"] = \"--ag-chip-background-color\";\n AgGridCSSVars[\"borderColor\"] = \"--ag-border-color\";\n AgGridCSSVars[\"secondaryBorderColor\"] = \"--ag-secondary-border-color\";\n AgGridCSSVars[\"rowBorderColor\"] = \"--ag-row-border-color\";\n AgGridCSSVars[\"headerColumnSeparatorColor\"] = \"--ag-header-column-separator-color\";\n AgGridCSSVars[\"headerColumnResizeHandleColor\"] = \"--ag-header-column-resize-handle-color\";\n AgGridCSSVars[\"inputBorderColor\"] = \"--ag-input-border-color\";\n AgGridCSSVars[\"inputDisabledBorderColor\"] = \"--ag-input-disabled-border-color\";\n AgGridCSSVars[\"inputDisabledBackgroundColor\"] = \"--ag-input-disabled-background-color\";\n AgGridCSSVars[\"checkboxBackgroundColor\"] = \"--ag-checkbox-background-color\";\n AgGridCSSVars[\"checkboxCheckedColor\"] = \"--ag-checkbox-checked-color\";\n AgGridCSSVars[\"checkboxUncheckedColor\"] = \"--ag-checkbox-unchecked-color\";\n AgGridCSSVars[\"checkboxIndeterminateColor\"] = \"--ag-checkbox-indeterminate-color\";\n AgGridCSSVars[\"toggleButtonOffBorderColor\"] = \"--ag-toggle-button-off-border-color\";\n AgGridCSSVars[\"toggleButtonOffBackgroundColor\"] = \"--ag-toggle-button-off-background-color\";\n AgGridCSSVars[\"toggleButtonOnBorderColor\"] = \"--ag-toggle-button-on-border-color\";\n AgGridCSSVars[\"toggleButtonOnBackgroundColor\"] = \"--ag-toggle-button-on-background-color\";\n AgGridCSSVars[\"toggleButtonSwitchBackgroundColor\"] = \"--ag-toggle-button-switch-background-color\";\n AgGridCSSVars[\"toggleButtonSwitchBorderColor\"] = \"--ag-toggle-button-switch-border-color\";\n AgGridCSSVars[\"minichartSelectedChartColor\"] = \"--ag-minichart-selected-chart-color\";\n AgGridCSSVars[\"minichartSelectedPageColor\"] = \"--ag-minichart-selected-page-color\";\n AgGridCSSVars[\"modalOverlayBackgroundColor\"] = \"--ag-modal-overlay-background-color\";\n AgGridCSSVars[\"inputFocusBoxShadow\"] = \"--ag-input-focus-box-shadow\";\n AgGridCSSVars[\"inputFocusBorderColor\"] = \"--ag-input-focus-border-color\";\n})(AgGridCSSVars || (AgGridCSSVars = {}));\n/**\n * The available Grid Pro themes.\n * @public\n */\nexport var AgGridTheme;\n(function (AgGridTheme) {\n AgGridTheme[\"alpine\"] = \"ag-theme-alpine\";\n AgGridTheme[\"alpineDark\"] = \"ag-theme-alpine-dark\";\n AgGridTheme[\"balham\"] = \"ag-theme-balham\";\n AgGridTheme[\"balhamDark\"] = \"ag-theme-balham-dark\";\n AgGridTheme[\"material\"] = \"ag-theme-material\";\n})(AgGridTheme || (AgGridTheme = {}));\n/**\n * Generates the class name for a given Grid Pro theme name.\n * @param themeName - the Grid Pro theme name\n * @returns the class name for the Grid Pro token map\n * @public\n * @example The result of this will be a class name that is applied to the grid part of GridPro template (actual content of the class comes from agThemeTokenMapCSS):\n * ```html\n * <span part=\"grid\" class=\"ag-theme-genesis-rapid-dark\">\n * ```\n */\nexport const agThemeTokenMapClassname = (themeName) => `${themeName}-token-map`;\n/**\n * Generates the id name for custom Grid Pro fonts.\n * @param themeName - the Grid Pro theme name\n * @returns the id name for the Grid Pro fonts\n * @public\n * @example The result of this is used in the id of style tag:\n * ```html\n * <style id=\"ag-theme-alpine-fonts\"></style>\n * ```\n */\nexport const agThemeFontsId = (themeName) => `${themeName}-fonts`;\n/**\n * Generates the CSS for a given GridPro theme name and token map\n * @param themeName - the GridPro theme name\n * @param tokenMap - a map of CSS variables {@link @genesislcap/grid-pro#AgGridCSSVars} and custom token values\n * @returns the CSS for the Grid Pro token map\n * @public\n * @example\n * ```ts\n * export const agThemeGenesisRapidTokens = {\n * backgroundColor: create<Swatch>('rapid-ag-background-color').withDefault((elem: HTMLElement) =>\n * baseLayerLuminance.getValueFor(elem) === StandardLuminance.LightMode\n * ? lightColors.backgroundSwatch\n * : darkColors.backgroundSwatch\n * ),\n * foregroundColor: create<Swatch>('rapid-ag-foreground-color').withDefault((elem: HTMLElement) =>\n * baseLayerLuminance.getValueFor(elem) === StandardLuminance.LightMode\n * ? lightColors.foregroundSwatch\n * : darkColors.foregroundSwatch\n * ),\n * };\n * export const agThemeGenesisRapidTokenMap: CSSVarTokenMap<AgGridCSSVars | string> = {\n * [AgGridCSSVars.backgroundColor]: agThemeGenesisRapidTokens.backgroundColor,\n * [AgGridCSSVars.foregroundColor]: agThemeGenesisRapidTokens.foregroundColor,\n * };\n * ```\n */\nexport const agThemeTokenMapCSS = (themeName, tokenMap) => css `\n .${agThemeTokenMapClassname(themeName)} {\n ${new CSSVarsTokenMapper(tokenMap)}\n }\n`;\n/**\n * The available Grid Pro Renderer Types\n * @public\n */\nexport var GridProRendererTypes;\n(function (GridProRendererTypes) {\n GridProRendererTypes[\"action\"] = \"action\";\n GridProRendererTypes[\"actionsMenu\"] = \"actionsMenu\";\n GridProRendererTypes[\"boolean\"] = \"boolean\";\n GridProRendererTypes[\"editable\"] = \"editable\";\n GridProRendererTypes[\"icon\"] = \"icon\";\n GridProRendererTypes[\"text\"] = \"text\";\n GridProRendererTypes[\"select\"] = \"select\";\n GridProRendererTypes[\"statusPill\"] = \"statusPill\";\n GridProRendererTypes[\"dateEditor\"] = \"dateEditor\";\n GridProRendererTypes[\"selectEditor\"] = \"selectEditor\";\n GridProRendererTypes[\"numberEditor\"] = \"numberEditor\";\n GridProRendererTypes[\"stringEditor\"] = \"stringEditor\";\n GridProRendererTypes[\"multiselectEditor\"] = \"multiselectEditor\";\n})(GridProRendererTypes || (GridProRendererTypes = {}));\n/**\n * The available Grid Pro Status Bar Types\n * @public\n * @remarks\n * These status bar components require AG Grid Enterprise module to be enabled.\n * Status bar components will only be displayed if the Enterprise module is available.\n * @see https://www.ag-grid.com/javascript-data-grid/component-status-bar/\n */\nexport var GridProStatusBarTypes;\n(function (GridProStatusBarTypes) {\n GridProStatusBarTypes[\"labelValue\"] = \"labelValue\";\n GridProStatusBarTypes[\"loadMore\"] = \"loadMore\";\n GridProStatusBarTypes[\"reload\"] = \"reload\";\n GridProStatusBarTypes[\"rowCount\"] = \"rowCount\";\n})(GridProStatusBarTypes || (GridProStatusBarTypes = {}));\n/**\n * Event fired when grid is ready\n * @public\n * @deprecated - Use `Events.EVENT_GRID_READY` from `@ag-grid-community/core` instead\n * @privateRemarks\n * This will be removed when we do the AG Upgrade.\n */\nexport const GRID_READY_EVENT = 'onGridReady';\n/**\n * Key used to store currently edited column when it being synced with server side data\n * @public\n */\nexport const EDITED_COLUMN_FIELD = '__editedColumn';\n/**\n * Key used to store error details (column, message) when inline edit fails sync with server side data\n * @public\n */\nexport const ERROR_COLUMN_FIELD = '__errorColumn';\n/**\n * Default grid options\n * @public\n */\nexport const defaultGridOptionsConfig = {};\n/**\n * Grid options config used to inject into grids in application\n * @internal\n */\nexport const GridOptionsConfig = DI.createInterface((x) => x.instance(defaultGridOptionsConfig));\n/**\n * The available Grid Pro header case types\n * @public\n */\nexport var GridProCaseType;\n(function (GridProCaseType) {\n GridProCaseType[\"camelCase\"] = \"camelCase\";\n GridProCaseType[\"capitalCase\"] = \"capitalCase\";\n GridProCaseType[\"dotCase\"] = \"dotCase\";\n GridProCaseType[\"headerCase\"] = \"headerCase\";\n GridProCaseType[\"noCase\"] = \"noCase\";\n GridProCaseType[\"paramCase\"] = \"paramCase\";\n GridProCaseType[\"pascalCase\"] = \"pascalCase\";\n GridProCaseType[\"pathCase\"] = \"pathCase\";\n GridProCaseType[\"sentenceCase\"] = \"sentenceCase\";\n GridProCaseType[\"snakeCase\"] = \"snakeCase\";\n})(GridProCaseType || (GridProCaseType = {}));\n/**\n * Default status bar configuration\n * @public\n */\nexport const DEFAULT_STATUS_BAR_CONFIG = {\n rows: true,\n maxRows: false,\n aggregation: true,\n loadMore: {\n tooltip: 'Load more rows from server',\n },\n reload: {\n tooltip: 'Reload the datasource.',\n },\n};\n","import { __awaiter, __decorate } from \"tslib\";\nimport { Session } from '@genesislcap/foundation-comms';\n/**\n * Implementation for the Local Storage State Persistence interface.\n * @public\n */\nexport class LocalStorageStatePersistence {\n getColumnState(persistColumnStateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const localStorageGridOptions = this.session.getLocalStorageItem('gridOptions');\n if (localStorageGridOptions) {\n const allGridOptions = JSON.parse(localStorageGridOptions);\n if (persistColumnStateKey in allGridOptions) {\n return JSON.parse(allGridOptions[persistColumnStateKey]);\n }\n }\n return [];\n });\n }\n saveColumnState(persistColumnStateKey, columnState) {\n return __awaiter(this, void 0, void 0, function* () {\n const existingOptions = JSON.parse(this.session.getLocalStorageItem('gridOptions') || '{}');\n existingOptions[persistColumnStateKey] = JSON.stringify(columnState);\n this.session.setLocalStorageItem('gridOptions', JSON.stringify(existingOptions));\n });\n }\n deleteColumnState(persistColumnStateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const existingOptions = JSON.parse(this.session.getLocalStorageItem('gridOptions') || '{}');\n delete existingOptions[persistColumnStateKey];\n this.session.setLocalStorageItem('gridOptions', JSON.stringify(existingOptions));\n });\n }\n getFilterModel(persistFilterModelKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const localStorageGridOptions = this.session.getLocalStorageItem('gridOptions');\n if (localStorageGridOptions) {\n const allGridOptions = JSON.parse(localStorageGridOptions);\n if (persistFilterModelKey in allGridOptions) {\n return JSON.parse(allGridOptions[persistFilterModelKey]);\n }\n }\n return {};\n });\n }\n saveFilterModel(persistFilterModelKey, filterModel) {\n return __awaiter(this, void 0, void 0, function* () {\n const existingOptions = JSON.parse(this.session.getLocalStorageItem('gridOptions') || '{}');\n existingOptions[persistFilterModelKey] = JSON.stringify(filterModel);\n this.session.setLocalStorageItem('gridOptions', JSON.stringify(existingOptions));\n });\n }\n getRowAlertPreferences(persistRowAlertKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const localStorageGridOptions = this.session.getLocalStorageItem('gridOptions');\n if (localStorageGridOptions) {\n const allGridOptions = JSON.parse(localStorageGridOptions);\n if (persistRowAlertKey in allGridOptions) {\n return JSON.parse(allGridOptions[persistRowAlertKey]);\n }\n }\n return {};\n });\n }\n saveRowAlertPreferences(persistRowAlertKey, preferences) {\n return __awaiter(this, void 0, void 0, function* () {\n const existingOptions = JSON.parse(this.session.getLocalStorageItem('gridOptions') || '{}');\n existingOptions[persistRowAlertKey] = JSON.stringify(preferences);\n this.session.setLocalStorageItem('gridOptions', JSON.stringify(existingOptions));\n });\n }\n}\n__decorate([\n Session\n], LocalStorageStatePersistence.prototype, \"session\", void 0);\n","import { DI } from '@microsoft/fast-foundation';\nimport { LocalStorageStatePersistence } from './local-state';\n/**\n * The DI token for the StatePersistence interface.\n * @internal\n */\nexport const StatePersistence = DI.createInterface((x) => x.singleton(LocalStorageStatePersistence));\n","/**\n * Label Value Status Bar Component\n * @public\n */\nexport class LabelValueStatusBarComponent {\n init(params) {\n this.element = document.createElement('div');\n this.element.classList.add('ag-status-name-value', 'ag-status-panel');\n this.element.setAttribute('data-test-id', 'grid-label-value-panel');\n this.element.setAttribute('role', 'status');\n this.currentParams = params;\n this.updateDisplay();\n }\n updateParams(params) {\n this.currentParams = Object.assign(Object.assign({}, this.currentParams), params);\n this.updateDisplay();\n }\n updateDisplay() {\n if (!this.element)\n return;\n if (this.currentParams.hide) {\n this.element.style.display = 'none';\n return;\n }\n else {\n this.element.style.display = '';\n }\n // Set accessible label for the entire component\n this.element.setAttribute('aria-label', `${this.currentParams.label}: ${this.currentParams.value}`);\n // Create or update label element\n if (!this.labelElement) {\n this.labelElement = document.createElement('span');\n this.labelElement.setAttribute('data-test-id', 'grid-label-value-label');\n this.labelElement.setAttribute('aria-hidden', 'true');\n this.element.appendChild(this.labelElement);\n }\n this.labelElement.innerHTML = `${this.currentParams.label}:&nbsp; `;\n // Create or update value element\n if (!this.valueElement) {\n this.valueElement = document.createElement('span');\n this.valueElement.classList.add('ag-status-name-value-value');\n this.valueElement.setAttribute('data-test-id', 'grid-label-value-value');\n this.valueElement.setAttribute('aria-hidden', 'true');\n this.element.appendChild(this.valueElement);\n }\n this.valueElement.innerHTML = this.currentParams.value;\n }\n getGui() {\n return this.element;\n }\n destroy() { }\n}\n","import { __awaiter } from \"tslib\";\nimport { delay, getCurrentDesignSystemPrefix } from '@genesislcap/foundation-utils';\nconst LOADING_DELAY = 500;\n/**\n * A status bar component that shows a \"Load More\" button when more rows are available\n * @public\n */\nexport class LoadMoreStatusBarComponent {\n constructor() {\n this.buttonLabel = 'Load More';\n this.isLoading = false;\n }\n init(params) {\n this.params = params;\n this.element = document.createElement('div');\n this.element.classList.add('ag-status-panel', 'ag-load-more-panel');\n this.element.setAttribute('data-test-id', 'grid-load-more-panel');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('aria-label', 'Load more data controls');\n this.element.style.display = 'flex';\n this.element.style.alignItems = 'center';\n this.element.style.justifyContent = 'flex-end';\n // Only add padding on the side where the button is\n this.element.style.paddingLeft = 'var(--ag-grid-size)';\n this.element.style.paddingRight = 'var(--ag-grid-size)';\n this.element.style.height = 'var(--ag-status-bar-height)';\n // Detect the current design system prefix (rapid or zero)\n this.designSystemPrefix = getCurrentDesignSystemPrefix(this.element, 'zero');\n this.createProgressRing();\n this.createLoadMoreButton();\n this.updateButtonVisibility();\n // Remove all children first to ensure correct ordering\n while (this.element.firstChild) {\n this.element.removeChild(this.element.firstChild);\n }\n // Right-aligned: progress ring first, then button\n this.element.appendChild(this.progressRing);\n this.element.appendChild(this.loadMoreButton);\n }\n createProgressRing() {\n // Create the progress ring with the appropriate design system prefix\n this.progressRing = document.createElement(`${this.designSystemPrefix}-progress-ring`);\n this.progressRing.setAttribute('data-test-id', 'grid-load-more-progress');\n this.progressRing.setAttribute('aria-label', 'Loading more data');\n // Set styles for the progress ring\n this.progressRing.style.width = '20px';\n this.progressRing.style.height = '20px';\n // Different margin based on alignment - when left-aligned, progress ring goes after button\n this.progressRing.style.margin = '0 8px 0 0';\n this.progressRing.style.display = 'none'; // Hidden by default\n }\n createLoadMoreButton() {\n var _a, _b;\n // Create the button with the appropriate design system prefix\n this.loadMoreButton = document.createElement(`${this.designSystemPrefix}-button`);\n this.loadMoreButton.setAttribute('data-test-id', 'grid-load-more-button');\n // Set button appearance - use custom appearance if provided, otherwise default to 'outline'\n const appearance = ((_a = this.params) === null || _a === void 0 ? void 0 : _a.appearance) || 'outline';\n this.loadMoreButton.setAttribute('appearance', appearance);\n // Set button label - use default\n this.loadMoreButton.textContent = this.buttonLabel;\n // Set button styles - improve sizing to match UI better\n this.loadMoreButton.style.margin = '2px 8px';\n this.loadMoreButton.style.minWidth = '120px';\n this.loadMoreButton.style.textAlign = 'center';\n this.loadMoreButton.style.height = '24px';\n this.loadMoreButton.style.lineHeight = '20px';\n // Add native tooltip if provided\n if ((_b = this.params) === null || _b === void 0 ? void 0 : _b.tooltip) {\n this.loadMoreButton.setAttribute('title', this.params.tooltip);\n this.loadMoreButton.setAttribute('aria-describedby', 'grid-load-more-tooltip');\n }\n // Set initial ARIA attributes - use tooltip as aria-label if available, otherwise use default\n this.updateAriaLabel();\n this.loadMoreButton.setAttribute('role', 'button');\n // Add event listener for the load more action\n this.clickHandler = () => __awaiter(this, void 0, void 0, function* () {\n if (this.isLoading)\n return; // Prevent multiple clicks\n try {\n this.showLoading(true);\n yield delay(LOADING_DELAY);\n // Execute the load more action\n if (this.params.onLoadMore) {\n this.params.onLoadMore();\n }\n // After the action completes, hide the loading state\n // this.showLoading(false);\n }\n catch (error) {\n // In case of error, ensure loading state is hidden\n this.showLoading(false);\n }\n });\n this.loadMoreButton.addEventListener('click', this.clickHandler);\n }\n /**\n * Update the aria-label based on current state and tooltip\n */\n updateAriaLabel() {\n var _a, _b;\n let ariaLabel;\n if ((_a = this.params) === null || _a === void 0 ? void 0 : _a.tooltip) {\n // Use tooltip as primary aria-label\n ariaLabel = this.params.tooltip;\n }\n else {\n // Fall back to descriptive labels based on state\n if (this.isLoading) {\n ariaLabel = 'Loading more data';\n }\n else if ((_b = this.params) === null || _b === void 0 ? void 0 : _b.moreRows) {\n ariaLabel = 'Load more rows from server';\n }\n else {\n ariaLabel = 'No more rows available';\n }\n }\n this.loadMoreButton.setAttribute('aria-label', ariaLabel);\n }\n /**\n * Show or hide the loading state\n */\n showLoading(loading) {\n var _a;\n this.isLoading = loading;\n if (loading) {\n // Show loading state\n this.progressRing.style.display = 'inline-block';\n this.loadMoreButton.setAttribute('disabled', 'true');\n this.loadMoreButton.textContent = 'Loading...';\n }\n else {\n // Hide loading state\n this.progressRing.style.display = 'none';\n // Reset button state based on moreRows parameter\n if ((_a = this.params) === null || _a === void 0 ? void 0 : _a.moreRows) {\n this.loadMoreButton.textContent = 'Load More';\n this.loadMoreButton.removeAttribute('disabled');\n }\n else {\n this.loadMoreButton.textContent = 'No More Rows';\n this.loadMoreButton.setAttribute('disabled', 'true');\n }\n }\n // Update aria-label to reflect current state\n this.updateAriaLabel();\n }\n updateButtonVisibility() {\n // If we don't have params or during loading, don't update\n if (!this.params || this.isLoading) {\n return;\n }\n // Reset loading state (safeguard)\n this.progressRing.style.display = 'none';\n // If we have more rows, enable the button\n if (this.params.moreRows) {\n this.loadMoreButton.style.display = 'inline-flex';\n this.loadMoreButton.textContent = 'Load More';\n this.loadMoreButton.removeAttribute('disabled');\n }\n else {\n // No more rows available\n this.loadMoreButton.style.display = 'inline-flex';\n this.loadMoreButton.textContent = 'No More Rows';\n this.loadMoreButton.setAttribute('disabled', 'true');\n }\n // Update aria-label to reflect current state\n this.updateAriaLabel();\n }\n updateParams(params) {\n var _a, _b;\n const prevParams = this.params;\n this.params = Object.assign(Object.assign({}, this.params), params);\n // If tooltip changed, update the title attribute\n if ((prevParams === null || prevParams === void 0 ? void 0 : prevParams.tooltip) !== ((_a = this.params) === null || _a === void 0 ? void 0 : _a.tooltip) && ((_b = this.params) === null || _b === void 0 ? void 0 : _b.tooltip)) {\n this.loadMoreButton.setAttribute('title', this.params.tooltip);\n }\n // If we were loading, but got an update that says no more rows,\n // we need to stop the loading state immediately\n if (this.isLoading) {\n this.showLoading(false);\n }\n this.updateButtonVisibility();\n }\n getGui() {\n return this.element;\n }\n destroy() {\n // Clean up event listeners\n if (this.loadMoreButton && this.clickHandler) {\n this.loadMoreButton.removeEventListener('click', this.clickHandler);\n }\n }\n}\n","import { __awaiter } from \"tslib\";\nimport { delay, getCurrentDesignSystemPrefix } from '@genesislcap/foundation-utils';\n// Delay in milliseconds to keep the icon in disabled state for visual feedback\nconst RELOAD_DELAY = 500;\n/**\n * A status bar component that shows a refresh icon to reload the grid data\n * @public\n */\nexport class ReloadStatusBarComponent {\n constructor() {\n this.isReloading = false;\n }\n init(params) {\n this.params = params;\n this.element = document.createElement('div');\n this.element.classList.add('ag-status-panel', 'ag-reload-panel');\n this.element.setAttribute('data-test-id', 'grid-reload-panel');\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('aria-label', 'Reload data controls');\n this.element.style.display = 'flex';\n this.element.style.alignItems = 'center';\n this.element.style.justifyContent = 'center';\n this.element.style.paddingLeft = 'var(--ag-grid-size)';\n this.element.style.height = 'var(--ag-status-bar-height)';\n // Detect the current design system prefix (rapid or zero)\n this.designSystemPrefix = getCurrentDesignSystemPrefix(this.element, 'zero');\n this.createRefreshIcon();\n this.createProgressRing();\n // Initially show the icon, hide the progress ring\n this.element.appendChild(this.refreshIcon);\n this.element.appendChild(this.progressRing);\n this.progressRing.style.display = 'none';\n }\n createProgressRing() {\n // Create the progress ring with the appropriate design system prefix\n this.progressRing = document.createElement(`${this.designSystemPrefix}-progress-ring`);\n this.progressRing.setAttribute('data-test-id', 'grid-reload-progress');\n this.progressRing.setAttribute('aria-label', 'Reloading data');\n // Set styles for the progress ring\n this.progressRing.style.width = '20px';\n this.progressRing.style.height = '20px';\n this.progressRing.style.margin = '4px';\n this.progressRing.style.display = 'none'; // Hidden by default\n }\n createRefreshIcon() {\n var _a, _b, _c, _d;\n // For design systems that support icons\n if (this.designSystemPrefix === 'zero' || this.designSystemPrefix === 'rapid') {\n this.refreshIcon = document.createElement(`${this.designSystemPrefix}-icon`);\n // Use custom icon if provided, otherwise default to 'refresh'\n const iconName = ((_a = this.params) === null || _a === void 0 ? void 0 : _a.icon) || 'refresh';\n this.refreshIcon.setAttribute('name', iconName);\n this.refreshIcon.setAttribute('aria-label', ((_b = this.params) === null || _b === void 0 ? void 0 : _b.tooltip) || 'Reload grid data');\n }\n else {\n // Fallback for systems without icon components\n this.refreshIcon = document.createElement('div');\n this.refreshIcon.textContent = '↻'; // Unicode refresh symbol\n this.refreshIcon.setAttribute('aria-label', ((_c = this.params) === null || _c === void 0 ? void 0 : _c.tooltip) || 'Reload grid data');\n }\n // Add accessibility attributes\n this.refreshIcon.setAttribute('data-test-id', 'grid-reload-button');\n this.refreshIcon.setAttribute('role', 'button');\n this.refreshIcon.setAttribute('tabindex', '0');\n // Set common styles for the icon - make it larger\n this.refreshIcon.style.cursor = 'pointer';\n this.refreshIcon.style.width = '28px';\n this.refreshIcon.style.height = '28px';\n this.refreshIcon.style.display = 'flex';\n this.refreshIcon.style.alignItems = 'center';\n this.refreshIcon.style.justifyContent = 'center';\n this.refreshIcon.style.fontSize = '20px'; // Increase text size for fallback icon\n // Add native tooltip if provided\n if ((_d = this.params) === null || _d === void 0 ? void 0 : _d.tooltip) {\n this.refreshIcon.setAttribute('title', this.params.tooltip);\n }\n // Add hover effect\n this.mouseoverHandler = () => {\n if (!this.isReloading) {\n this.refreshIcon.style.opacity = '0.7';\n }\n };\n this.refreshIcon.addEventListener('mouseover', this.mouseoverHandler);\n this.mouseoutHandler = () => {\n if (!this.isReloading) {\n this.refreshIcon.style.opacity = '1';\n }\n };\n this.refreshIcon.addEventListener('mouseout', this.mouseoutHandler);\n // Add click event listener\n this.clickHandler = () => __awaiter(this, void 0, void 0, function* () {\n if (this.isReloading)\n return; // Prevent multiple clicks\n try {\n this.showReloading(true);\n yield delay(RELOAD_DELAY);\n // Execute the reload action if provided\n if (this.params.onReload) {\n this.params.onReload();\n }\n // Reset the icon state\n this.showReloading(false);\n }\n catch (error) {\n // In case of error, ensure icon state is reset\n this.showReloading(false);\n }\n });\n this.refreshIcon.addEventListener('click', this.clickHandler);\n // Add keyboard support for accessibility\n this.refreshIcon.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n // Trigger the same click handler\n this.clickHandler(new MouseEvent('click'));\n }\n });\n }\n /**\n * Show or hide the reloading state\n */\n showReloading(reloading) {\n this.isReloading = reloading;\n if (reloading) {\n // Hide the icon and show the progress ring\n this.refreshIcon.style.display = 'none';\n this.progressRing.style.display = 'inline-block';\n }\n else {\n // Show the icon and hide the progress ring\n this.refreshIcon.style.display = 'inline-flex';\n this.progressRing.style.display = 'none';\n }\n }\n updateParams(params) {\n var _a, _b;\n const prevParams = this.params;\n this.params = Object.assign(Object.assign({}, this.params), params);\n // If tooltip changed, update the title attribute and aria-label\n if ((prevParams === null || prevParams === void 0 ? void 0 : prevParams.tooltip) !== ((_a = this.params) === null || _a === void 0 ? void 0 : _a.tooltip)) {\n if ((_b = this.params) === null || _b === void 0 ? void 0 : _b.tooltip) {\n this.refreshIcon.setAttribute('title', this.params.tooltip);\n this.refreshIcon.setAttribute('aria-label', this.params.tooltip);\n }\n else {\n this.refreshIcon.removeAttribute('title');\n this.refreshIcon.setAttribute('aria-label', 'Reload grid data');\n }\n }\n }\n getGui() {\n return this.element;\n }\n destroy() {\n // Clean up event listeners\n if (this.refreshIcon) {\n this.refreshIcon.removeEventListener('mouseover', this.mouseoverHandler);\n this.refreshIcon.removeEventListener('mouseout', this.mouseoutHandler);\n this.refreshIcon.removeEventListener('click', this.clickHandler);\n }\n }\n}\n","/**\n * Row Count Status Bar Component for Server-Side Infinite Scroll\n * Displays current row count information for server-side grids.\n * @public\n */\nexport class RowCountStatusBarComponent {\n init(params) {\n this.api = params.api;\n this.element = document.createElement('div');\n this.element.classList.add('ag-status-name-value', 'ag-status-panel');\n this.element.setAttribute('data-test-id', 'grid-row-count-panel');\n this.element.setAttribute('role', 'status');\n const labelElement = document.createElement('span');\n labelElement.setAttribute('data-test-id', 'grid-row-count-label');\n labelElement.setAttribute('aria-hidden', 'true');\n labelElement.innerHTML = 'Rows:&nbsp;';\n this.rowCountDisplay = document.createElement('span');\n this.rowCountDisplay.classList.add('ag-status-name-value-value');\n this.rowCountDisplay.setAttribute('data-test-id', 'grid-row-count-value');\n this.rowCountDisplay.setAttribute('aria-hidden', 'true');\n this.element.appendChild(labelElement);\n this.element.appendChild(this.rowCountDisplay);\n this.updateDisplay();\n this.modelUpdatedHandler = () => {\n this.updateDisplay();\n };\n this.api.addEventListener('modelUpdated', this.modelUpdatedHandler);\n this.api.addEventListener('rowDataUpdated', this.modelUpdatedHandler);\n }\n updateDisplay() {\n var _a, _b, _c;\n if (!this.api || !this.rowCountDisplay)\n return;\n const apiAny = this.api;\n const rowCount = (_c = (_b = (_a = this.api).getDisplayedRowCount) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : 0;\n // Check if total count is uncertain (more data available)\n // Only show uncertain total if we have rows and there might be more\n const hasMoreRows = apiAny.paginationIsLastPageFound !== undefined && !apiAny.paginationIsLastPageFound();\n const hasUncertainTotal = hasMoreRows && rowCount > 0;\n const displayText = hasUncertainTotal ? `${rowCount - 1}+` : rowCount.toString();\n this.rowCountDisplay.textContent = displayText;\n const ariaLabel = hasUncertainTotal\n ? `Row count: ${rowCount} or more rows`\n : `Row count: ${rowCount} rows`;\n this.element.setAttribute('aria-label', ariaLabel);\n }\n getGui() {\n return this.element;\n }\n destroy() {\n if (this.api && this.modelUpdatedHandler) {\n this.api.removeEventListener('modelUpdated', this.modelUpdatedHandler);\n this.api.removeEventListener('rowDataUpdated', this.modelUpdatedHandler);\n }\n this.api = null;\n this.modelUpdatedHandler = null;\n }\n}\n","/**\n * Tooltip for errors that happen while syncing data with server after inline editing\n * @internal\n */\nexport class ErrorTooltip {\n init(params) {\n const eGui = (this.eGui = document.createElement('div'));\n const message = params.value;\n eGui.classList.add('custom-tooltip');\n eGui.style['background-color'] = '#f14376';\n eGui.style['border'] = '1px inside';\n eGui.style['border-color'] = '#2e3339';\n eGui.style['border-radius'] = '4px';\n eGui.style['padding'] = '5px';\n eGui.style['box-shadow'] = '0px 4px 10px 0px rgba(0, 0, 0, 0.25);';\n eGui.innerHTML = `<span style='color: #000000; font-size: 10px'>${message}</span>`;\n }\n getGui() {\n return this.eGui;\n }\n}\n","/**\n * Converts a ColDef to a ColumnState\n * @param colDef - The column definition to convert\n * @returns The corresponding ColumnState\n * @public\n */\nexport function convertColDefToColumnState(colDef) {\n return {\n colId: colDef.field || colDef.colId || '',\n hide: colDef.hide || false,\n width: colDef.width || null,\n pinned: colDef.pinned || null,\n sort: colDef.sort || null,\n sortIndex: colDef.sortIndex || null,\n aggFunc: colDef.aggFunc || null,\n rowGroup: colDef.rowGroup || false,\n rowGroupIndex: colDef.rowGroupIndex || null,\n pivot: colDef.pivot || false,\n pivotIndex: colDef.pivotIndex || null,\n flex: colDef.flex || null,\n };\n}\nconst allowedColumnStateKeys = Object.keys(convertColDefToColumnState({}));\n/**\n * Sanitizes persisted column state by removing unsupported keys.\n * @remarks Some AG Grid versions include legacy properties (e.g. `sortType`) that should not\n * be copied onto ColDefs during state merge.\n * @public\n */\nexport function sanitizeColumnState(columnState) {\n if (!Array.isArray(columnState)) {\n return [];\n }\n return columnState.map((state) => {\n const sanitizedState = {};\n const mutableSanitizedState = sanitizedState;\n for (const key of allowedColumnStateKeys) {\n const value = state[key];\n if (value !== undefined) {\n mutableSanitizedState[key] = value;\n }\n }\n return sanitizedState;\n });\n}\n/**\n * Converts an array of ColDef to an array of ColumnState\n * @param colDefs - The column definitions to convert\n * @returns The corresponding ColumnState array\n * @public\n */\nexport function convertColDefsToColumnStates(colDefs) {\n return colDefs.map(convertColDefToColumnState);\n}\n/**\n * Merges two arrays, one of `ColDef` and one of `ColumnState`, and deduplicates them.\n * @remarks ColDef uses `field` and ColumnState uses `colId` to identify columns.\n * @privateRemarks For restoring saved `ColumnState` but also keep custom renderers and other `ColDef` properties.\n * @public\n */\nexport function mergeAndDedupColDefWithColumnState(colDefs, columnStates) {\n const sanitizedColumnStates = sanitizeColumnState(columnStates);\n const merged = {};\n const deduplicated = [];\n const fieldProp = 'field';\n const colIdProp = 'colId';\n // A `ColGroupDef` is identified by its `children` array and has no `field`/`colId` of its own;\n // its persisted state lives on the nested leaf columns. Groups must therefore bypass the flat\n // field-keyed dedup below — otherwise every group collapses onto the same `undefined` key and\n // all but the first group is silently dropped.\n const isColumnGroup = (def) => Array.isArray(def.children);\n const keyOf = (def) => { var _a; return (_a = def[fieldProp]) !== null && _a !== void 0 ? _a : def[colIdProp]; };\n // Lookup of state by colId, used to merge state into leaf columns nested inside groups.\n const stateByColId = new Map();\n sanitizedColumnStates.forEach((state) => {\n if (state[colIdProp] != null) {\n stateByColId.set(state[colIdProp], state);\n }\n });\n // Recursively re-applies saved state to a (possibly nested) group's leaf columns.\n const applyStateDeep = (def) => {\n if (isColumnGroup(def)) {\n return Object.assign(Object.assign({}, def), { children: def.children.map(applyStateDeep) });\n }\n const key = keyOf(def);\n const state = key != null ? stateByColId.get(key) : undefined;\n return state ? Object.assign(Object.assign({}, def), state) : Object.assign({}, def);\n };\n // Phase 1: replay flat (leaf) columns in saved-state order so persisted ordering is restored.\n sanitizedColumnStates.forEach((state) => {\n const colId = state[colIdProp];\n // A state entry with no `colId` cannot identify a column; matching on it would make\n // `item.field === undefined` accidentally hit any field-less ColDef.\n if (colId == null) {\n return;\n }\n const matchingColDef = colDefs.find((item) => !isColumnGroup(item) &&\n (item[fieldProp] === colId || (item[colIdProp] != null && item[colIdProp] === colId)));\n if (matchingColDef) {\n const key = keyOf(matchingColDef);\n const colDefStateMerge = Object.assign(Object.assign({}, matchingColDef), state);\n if (key != null) {\n merged[key] = colDefStateMerge;\n }\n deduplicated.push(colDefStateMerge);\n }\n });\n // Phase 2: append remaining defs in their original order. Column groups are always kept (deduped\n // by identity, never by `field`) and their leaf children are state-merged recursively.\n colDefs.forEach((def) => {\n if (isColumnGroup(def)) {\n deduplicated.push(applyStateDeep(def));\n return;\n }\n const key = keyOf(def);\n if (key == null || !merged.hasOwnProperty(key)) {\n const newObj = Object.assign({}, def);\n if (key != null) {\n merged[key] = newObj;\n }\n deduplicated.push(newObj);\n }\n });\n return deduplicated;\n}\n","/**\n * Extracts a user-friendly error message from a given error detail.\n * @param detail - The error detail, which can be a string, array, or object.\n * @returns A user-friendly error message.\n * @public\n */\nexport const extractErrorMessage = (detail) => {\n if (!detail)\n return '';\n if (typeof detail === 'string')\n return detail;\n if (Array.isArray(detail)) {\n return detail.map(extractErrorMessage).join(', ');\n }\n if (typeof detail === 'object') {\n if ('message' in detail && typeof detail.message === 'string')\n return detail.message;\n if ('TEXT' in detail && typeof detail.TEXT === 'string')\n return detail.TEXT;\n return JSON.stringify(detail);\n }\n return String(detail);\n};\n","import { createLogger } from '@genesislcap/foundation-logger';\n/**\n * Logger for the grid-pro package\n * @public\n */\nexport const logger = createLogger('grid-pro');\n","/**\n * Get the keys of the Metadata indexes map\n * @remarks This function will return a flat string array of all the keys in the \"metadata indexes\" map\n * @param data - the map data to have the keys extracted from\n * @returns the keys of the map\n * @public\n */\nexport function getAvailableIndexes(data) {\n const availabeIndexes = [];\n for (const [key] of data) {\n if (key) {\n availabeIndexes.push(key);\n }\n }\n return availabeIndexes;\n}\n/**\n * Get the values of the Metadata indexes map\n * @remarks This function will return a flat string array of all the values in the \"metadata indexes\" map\n * @param data - the map data to have the values extracted from\n * @returns the values of the map\n * @public\n */\nexport function getAvailableIndexFields(data) {\n const availableIndexFields = [];\n function traverse(items) {\n for (const item of items) {\n if (item !== null) {\n availableIndexFields.push(item);\n }\n }\n }\n for (const [key, value] of data) {\n if (key !== null && value !== null) {\n traverse(value);\n }\n }\n return availableIndexFields;\n}\n","/**\n * Convert string values from 'camelCase' to 'kebab-case'\n * @param value - The value to convert to Kebab case.\n * @returns The Kebab case result.\n * @public\n */\nexport const convertToKebabCase = (value) => value.replace(/([a-z])([A-Z])|\\s+/g, '$1-$2').toLowerCase();\n","import { __classPrivateFieldGet, __classPrivateFieldSet } from \"tslib\";\n/** @internal **/\nconst CLEANUP_TIMEOUT_MS = 10000;\n/**\n * @beta\n * Mixin class to expose `shouldRunConnect` and `shouldRunDisconnect`\n *\n * @remarks These can be used to control what lifecycle functionality is ran when the elements\n * are part of a custom layout. The class itself handles all events\n * @privateRemarks\n * #_ syntax is used for a javascript private method/variable\n * we can't use private/protected from typescript in an anonymous class like this\n */\nexport const LifecycleMixin = (Base) => { var _instances, __container, __latestTokenCode, __hasFirstLoaded, __cleanupTimeout, __shouldForceLifecycle, __blockedDisconnectSurvivedGracePeriod, __blockLifecycleDueToTokenChange, __tryFindContainingLayout, _a; return _a = class extends Base {\n constructor(...args) {\n super(args);\n _instances.add(this);\n /** @internal **/\n __container.set(this, { _key: 'dom' });\n /**\n * If the token changes we suggest blocking the lifecycle methods\n * @internal\n **/\n __latestTokenCode.set(this, '');\n /**\n * Track first loaded to allow us to always run the connect lifecycle on the first load\n * @internal\n **/\n __hasFirstLoaded.set(this, false);\n /**\n * When you request to delete an item from the layout it will be removed from the DOM,\n * but the lifecycle might be blocked due to the same mechanism that we block the other\n * items.\n * This would block cleanup of the item, so we need to force a disconnection after a timeout\n * if this item hasn't reconnected within `CLEANUP_TIMEOUT_MS`.\n * @internal\n **/\n __cleanupTimeout.set(this, void 0);\n /**\n * Used to force lifecycle to run even if the token has changed, such as in instances where\n * we are forcing a disconnection due to this item being remove from the layout.\n * @internal\n **/\n __shouldForceLifecycle.set(this, false);\n /**\n * Set once a short grace period (`setTimeout`) has elapsed since a blocked ('reflow')\n * disconnect. Some consumers run defensive cleanup after the block via schedulers that can\n * outlast a microtask (e.g. FAST's `DOM.queueUpdate`), so a macrotask-scale grace period is\n * needed - once it has passed, the paired reconnect must not stay blocked, or the consumer\n * never re-initializes.\n * @internal\n **/\n __blockedDisconnectSurvivedGracePeriod.set(this, false);\n }\n /**\n * @privateRemarks\n * Rather than using the basic implementation of cloning we run a copy constructor (deepClone)\n * and then manually clone the children too so they can intercept with an overriden cloneNode\n * if they want to\n */\n cloneNode(deep) {\n const thisClone = this.deepClone();\n if (deep) {\n Array.from(this.childNodes).forEach((child) => {\n thisClone.appendChild(child.cloneNode(true));\n });\n }\n return thisClone;\n }\n /**\n * @privateRemarks\n * Basic implementation of a copy constructor which creates a new element of the same class\n * and copies all attributes over.\n * None-trivial elements will likely want to override this function, call it using super.deepClone(),\n * and then perform extra setup such as copying properties, setting up event listeners\n */\n deepClone() {\n const copy = document.createElement(this.tagName.toLowerCase());\n this.getAttributeNames().forEach((at) => copy.setAttribute(at, this.getAttribute(at)));\n return copy;\n }\n /**\n * @beta\n * @returns - boolean controlling whether to run all disconnectedCallback lifecycle functionality\n */\n get shouldRunDisconnect() {\n if (__classPrivateFieldGet(this, __shouldForceLifecycle, \"f\")) {\n return true;\n }\n if (__classPrivateFieldGet(this, __container, \"f\")._key === 'dom') {\n return true;\n }\n if (__classPrivateFieldGet(this, __container, \"f\")._key === 'foundation-layout-cache') {\n return false;\n }\n // _key === 'foundation-layout'\n return !(__classPrivateFieldGet(this, __container, \"f\").dragging ||\n !__classPrivateFieldGet(this, __container, \"f\").hasFirstLoaded ||\n __classPrivateFieldGet(this, _instances, \"m\", __blockLifecycleDueToTokenChange).call(this, 'disconnect'));\n }\n /**\n * @beta\n * @returns - boolean controlling whether to run all connectedCallback lifecycle functionality\n * @privateRemarks\n * For now its just the same logic as shouldRunDisconnect\n */\n get shouldRunConnect() {\n if (__classPrivateFieldGet(this, __shouldForceLifecycle, \"f\")) {\n return true;\n }\n if (__classPrivateFieldGet(this, __container, \"f\")._key === 'dom') {\n return true;\n }\n if (__classPrivateFieldGet(this, __container, \"f\")._key === 'foundation-layout-cache') {\n return false;\n }\n // _key === 'foundation-layout'\n let connectionType = 'reconnect';\n if (__classPrivateFieldGet(this, __hasFirstLoaded, \"f\") === false) {\n __classPrivateFieldSet(this, __hasFirstLoaded, true, \"f\");\n connectionType = 'connect';\n }\n return !(__classPrivateFieldGet(this, __container, \"f\").dragging ||\n !__classPrivateFieldGet(this, __container, \"f\").hasFirstLoaded ||\n __classPrivateFieldGet(this, _instances, \"m\", __blockLifecycleDueToTokenChange).call(this, connectionType));\n }\n connectedCallback() {\n super.connectedCallback();\n if (__classPrivateFieldGet(this, __container, \"f\")._key !== 'foundation-layout') {\n __classPrivateFieldSet(this, __container, __classPrivateFieldGet(this, _instances, \"m\", __tryFindContainingLayout).call(this, this), \"f\");\n }\n }\n },\n __container = new WeakMap(),\n __latestTokenCode = new WeakMap(),\n __hasFirstLoaded = new WeakMap(),\n __cleanupTimeout = new WeakMap(),\n __shouldForceLifecycle = new WeakMap(),\n __blockedDisconnectSurvivedGracePeriod = new WeakMap(),\n _instances = new WeakSet(),\n __blockLifecycleDueToTokenChange = function __blockLifecycleDueToTokenChange(lifecycleType) {\n var _b, _c;\n if (__classPrivateFieldGet(this, __container, \"f\")._key !== 'foundation-layout') {\n throw new Error('LifecycleMixin: should not be checking a token change if container not in the layout');\n }\n const tokensDifferent = __classPrivateFieldGet(this, __latestTokenCode, \"f\") !== __classPrivateFieldGet(this, __container, \"f\").lifecycleUpdateToken;\n let result = false;\n if (lifecycleType === 'connect') {\n // We always want to allow a first connection in the layout\n __classPrivateFieldSet(this, __latestTokenCode, (_b = __classPrivateFieldGet(this, __container, \"f\").lifecycleUpdateToken) !== null && _b !== void 0 ? _b : '', \"f\");\n }\n else if (lifecycleType === 'disconnect') {\n result = tokensDifferent;\n if (!result) {\n // Real disconnect: reset so the next connect is a fresh 'connect', not a token-gated\n // 'reconnect' - otherwise unrelated layout changes while disconnected can block it forever.\n __classPrivateFieldSet(this, __hasFirstLoaded, false, \"f\");\n }\n else {\n // Blocked disconnect: track whether a grace period elapses before the paired reconnect\n // arrives. See `#_blockedDisconnectSurvivedGracePeriod` for why this matters.\n __classPrivateFieldSet(this, __blockedDisconnectSurvivedGracePeriod, false, \"f\");\n setTimeout(() => {\n __classPrivateFieldSet(this, __blockedDisconnectSurvivedGracePeriod, true, \"f\");\n }, 0);\n }\n __classPrivateFieldSet(this, __cleanupTimeout, setTimeout(() => {\n __classPrivateFieldSet(this, __shouldForceLifecycle, result, \"f\");\n if (__classPrivateFieldGet(this, __shouldForceLifecycle, \"f\")) {\n this.disconnectedCallback();\n }\n }, CLEANUP_TIMEOUT_MS), \"f\");\n }\n else if (lifecycleType === 'reconnect') {\n result = tokensDifferent && !__classPrivateFieldGet(this, __blockedDisconnectSurvivedGracePeriod, \"f\");\n __classPrivateFieldSet(this, __latestTokenCode, (_c = __classPrivateFieldGet(this, __container, \"f\").lifecycleUpdateToken) !== null && _c !== void 0 ? _c : '', \"f\");\n clearTimeout(__classPrivateFieldGet(this, __cleanupTimeout, \"f\"));\n }\n return result;\n },\n __tryFindContainingLayout = function __tryFindContainingLayout(e) {\n var _b;\n /**\n * This is a special case where the element is part of the layout cache\n * signified by a symbol put on the document cache root\n */\n if (e.getRootNode()[layoutCacheDocument] === true) {\n return { _key: 'foundation-layout-cache' };\n }\n /**\n * If this happens we have found the root of the document\n * without finding a containing FoundationLayout\n * hence, this item is not in a custom layout\n */\n if (e.getRootNode() instanceof Document || !((_b = e.getRootNode()) === null || _b === void 0 ? void 0 : _b.host)) {\n return { _key: 'dom' };\n }\n const shadowHost = e.getRootNode().host;\n if (shadowHost.class === 'FoundationLayoutMain') {\n const layoutHost = shadowHost;\n layoutHost._key = 'foundation-layout';\n return layoutHost;\n }\n return __classPrivateFieldGet(this, _instances, \"m\", __tryFindContainingLayout).call(this, shadowHost);\n },\n _a; };\n/**\n * Stored on the layout's internal cache to signify that the document is not part of the DOM\n * @public\n */\nexport const layoutCacheDocument = Symbol('layout-cache-document');\n","/**\n * Delay for a given number of milliseconds\n * @param ms - The number of milliseconds to delay\n * @returns A promise that resolves after the given number of milliseconds\n * @public\n * @example\n * ```ts\n * await delay(1000);\n * console.log('1 second later');\n * ```\n */\nexport const delay = (ms) => new Promise((resolve) => {\n setTimeout(resolve, ms);\n});\n","import { logger } from './logger';\n/**\n * Inserts a CSS rule into the document by creating a new style element or using an existing one with the specified ID.\n * Returns a function that can be called to remove the rule from the document.\n * @public\n * @param cssRule - The CSS rule to insert.\n * @param styleElementId - The ID of the style element to use or create.\n * @returns A function that removes the rule from the document.\n */\nexport const insertDocumentCSSRule = (cssRule, styleElementId) => {\n var _a;\n let styleElement = document.getElementById(styleElementId);\n if (styleElement) {\n logger.debug(`\n An element with the id of '${styleElementId}' already exists and likely has the css rules applied.\n `);\n return;\n }\n const headElement = (_a = document.head) !== null && _a !== void 0 ? _a : document.getElementsByTagName('head')[0];\n styleElement = document.createElement('style');\n styleElement.id = styleElementId;\n headElement.appendChild(styleElement);\n // Check if the CSS rule contains multiple rules (contains multiple closing braces)\n const ruleCount = (cssRule.match(/}/g) || []).length;\n if (ruleCount > 1) {\n // Multiple rules: use textContent to avoid insertRule limitations\n styleElement.textContent = cssRule;\n return () => {\n if (!styleElement) {\n return;\n }\n headElement.removeChild(styleElement);\n };\n }\n else {\n // Single rule: use insertRule for consistency with existing behavior\n const styleIndex = styleElement.sheet.insertRule(cssRule);\n return () => {\n if (!styleElement) {\n return;\n }\n styleElement.sheet.deleteRule(styleIndex);\n headElement.removeChild(styleElement);\n };\n }\n};\n/**\n * Inserts a CSS link into the document if it doesn't already exist.\n * @public\n * @param href - The URL of the CSS file to insert.\n */\nexport const insertDocumentLink = (href) => {\n const links = document.head.querySelectorAll('link');\n // Already been injected\n for (const index in links)\n if (links[index].href === href)\n return;\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n document.head.appendChild(link);\n};\n/**\n * Recursively gather all elements including those in shadow DOM\n * @public\n */\nexport function getAllElements(root) {\n const elements = [];\n const processedShadowRoots = new Set();\n function collectElements(node) {\n // Get all elements in the current node\n const nodeElements = Array.from(node.querySelectorAll('*'));\n elements.push(...nodeElements);\n // Process shadow roots\n nodeElements.forEach((el) => {\n if (el.shadowRoot && !processedShadowRoots.has(el.shadowRoot)) {\n processedShadowRoots.add(el.shadowRoot);\n collectElements(el.shadowRoot);\n }\n });\n }\n collectElements(root);\n return elements;\n}\n","import { createLogger } from '@genesislcap/foundation-logger';\n/**\n * Logger for the foundation-utils package\n * @public\n */\nexport const logger = createLogger('foundation-utils');\n"],"names":["dayjs__WEBPACK_IMPORTED_MODULE_3___default","extend","dayjs_plugin_utc__WEBPACK_IMPORTED_MODULE_4___default","DateEditor","_microsoft_fast_foundation__WEBPACK_IMPORTED_MODULE_2__","FoundationElement","init","params","this","setAttribute","value","dateFormat","withTime","inputType","actualWidth","column","getActualWidth","getGui","refresh","getValue","isPopup","changeHandler","event","dateValue","target","control","valueAsNumber","isNaN","undefined","afterGuiAttached","input","focus","isCancelBeforeStart","data","_grid_pro_types__WEBPACK_IMPORTED_MODULE_5__","A7","tslib__WEBPACK_IMPORTED_MODULE_0__","Cg","_microsoft_fast_element__WEBPACK_IMPORTED_MODULE_1__","observable","prototype","agDateEditorStyles","css","getDateEditorTemplate","prefix","html","ref","x","utc","format","c","foundationDateEditor","compose","baseName","styles","template","MultiselectEditor","selectedOptions","selectedOptionsCallback","then","split","destroy","detail","_grid_pro_types__WEBPACK_IMPORTED_MODULE_3__","agMultiselectEditorStyles","getMultiselectEditorTemplate","designSystem","async","allOptionsResourceName","valueField","labelField","datasourceOptions","foundationMultiselectEditor","NumberEditor","parseFloat","onChange","agNumberEditorStyles","getNumberEditorTemplate","withFormatting","formatOptions","String","placeholder","disabled","foundationNumberEditor","SelectEditor","combobox","open","_a","agSelectEditorStyles","getSelectEditorTemplate","position","allowCustomOptions","values","foundationSelectEditor","StringEditor","agStringEditorStyles","getStringEditorTemplate","foundationStringEditor","ActionRenderer","_microsoft_fast_foundation__WEBPACK_IMPORTED_MODULE_3__","eGridCell","addEventListener","key","_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_1__","DDm","ENTER","clickHandler","isDisabled","error","_utils__WEBPACK_IMPORTED_MODULE_4__","v","sH","actionClick","pendingAction","dataTestId","_b","uniqueFieldName","_microsoft_fast_element__WEBPACK_IMPORTED_MODULE_2__","create","DesignToken","actionHeightMultiplier","withDefault","agActionRendererStyles","foundationGridProActionRenderer","actionButtonStyle","appearance","actionName","ActionsMenuRenderer","foundationGridProActionsMenuRenderer","headerName","getActionsMenuDef","actions","overrideDef","customActionsOpenerName","isVertical","buttonAppearance","actionsMenuDef","cellRenderer","IX","actionsMenu","cellRendererParams","buttonText","cellStyle","border","overflow","field","w","width","Object","assign","BooleanRenderer","colDef","editable","selected","userInputHandler","e","MouseEvent","type","button","KeyboardEvent","api","getEditingCells","find","cell","rowIndex","node","getInstanceId","eventStarted","getColDef","rowPinned","dispatchEvent","valueChanged","setDataValue","eventStopped","oldValue","newValue","getDataTestId","agBooleanRendererStyles","getAgBooleanRendererTemplate","checkboxComponent","foundationAgBooleanRenderer","EditableRenderer","valueFormatted","formatValue","agEditableRendererStyles","getAgEditableRendererTemplate","foundationAgEditableRenderer","agIconRendererStyles","hasIconSrc","iconSrc","length","hasIconName","iconName","getIconRendererTemplate","iconComponent","_microsoft_fast_web_utilities__WEBPACK_IMPORTED_MODULE_3__","showHover","_c","when","iconHeight","iconColor","classes","iconSize","variant","secondaryIcon","secondaryIconColor","IconRenderer","foundationIconRenderer","SelectRenderer","constructor","super","arguments","selectionChanged","onSelect","T","accessor","_utils__WEBPACK_IMPORTED_MODULE_3__","agSelectRendererStyles","getSelectRendererTemplate","selectComponent","optionComponent","defaultValue","repeat","options","name","parent","tooltip","displayName","foundationAgSelectRenderer","agStatusPillRendererStyles","getStatusPillRendererTemplate","backgroundColor","iconInitial","iconInitialBackgroundColor","textColor","text","dateCountdownUnit","dateCountdown","dateCountdownCompletedMessage","hideWhenCountdownCompleted","dateCountdownVisibleAfter","StatusPillRenderer","foundationStatusPillRenderer","AgTextFieldRenderer","textValue","textChanged","_utils__WEBPACK_IMPORTED_MODULE_5__","includes","textField","caretPos","selectionStart","stopPropagation","textFieldRendererStyles","getTextFieldRendererTemplate","textComponent","suffix","hideAffixFromScreenReader","maxLength","_genesislcap_foundation_utils__WEBPACK_IMPORTED_MODULE_1__","O","foundationAgTextFieldRenderer","AgTextRenderer","_text_field_renderer__WEBPACK_IMPORTED_MODULE_0__","p8","textRendererStyles","zS","getTextRendererTemplate","tm","foundationAgTextRenderer","setValueWithAccessor","indexOf","accessorPieces","currentObject","fieldPiece","shift","GridProCell","connectedCallback","wrapperGridProColumn","parentElement","renderer","definition","rendererParams","slottedAgRendererChanged","customElement","_cell_template__WEBPACK_IMPORTED_MODULE_3__","CellTemplate","_microsoft_fast_element__WEBPACK_IMPORTED_MODULE_0__","slotted","bindAgColumnPickerDrag","bridge","handle","colId","dragItemName","getColumn","call","hasAttribute","dragAndDrop","gos","get","setGridOption","draggable","hideColumnOnExit","source","ag_grid_community__WEBPACK_IMPORTED_MODULE_0__","qRA","ToolPanel","eElement","getDefaultIconName","getDragItem","columns","visibleState","getColId","isVisible","createToolPanelDragItem","onDragStarted","addDragSource","remove","removeAttribute","classList","removeDragSource","COLUMN_PICKER_SORT_DEFAULT","resolveColumnPickerSort","sort","toPickerItem","col","suppressColumnsToolPanel","isPrimary","visible","lockVisible","Boolean","getPickerItems","map","filter","item","orderColumnsForPicker","displayed","all","columnState","byId","Map","ordered","seen","Set","state","has","push","add","displayedIds","partitionPickerItems","items","search","query","trim","toLowerCase","filtered","unselected","a","b","localeCompare","sensitivity","reorderVisibleIds","allVisibleIds","shownIds","fromId","toId","shown","fromIndex","toIndex","splice","index","id","nextId","applyVisibleOrder","visibleOrder","orderable","hide","pickerApiByElement","WeakMap","ColumnSelection","S","label","_column_picker_utils__WEBPACK_IMPORTED_MODULE_5__","Xf","gridApi","gridHost","selectedItems","unselectedItems","selectAllChecked","selectAllIndeterminate","resolvedSort","dragColId","dragOverElement","dragBindingAbort","agDragBindings","columnDragBridge","dragBridgeRetryId","pendingVisibility","boundRefresh","handleClickOutside","root","isTrusted","composedPath","pickerApi","set","pickerRoot","panelEl","canReorderInPanel","canDragToGrid","toggleableItems","openChanged","$fastController","isConnected","DOM","queueUpdate","subscribePicker","showPanel","requestAnimationFrame","document","removeEventListener","unsubscribePicker","hidePanel","sortChanged","TQ","gridApiChanged","resubscribePicker","gridHostChanged","panelElChanged","connectPicker","toggle","close","_d","_e","_f","_g","_h","_j","activeElement","activeTestId","contains","getAttribute","getAllDisplayedColumns","getColumns","getColumnState","l9","applyPendingVisibility","dd","syncSelectAllState","querySelector","bindRowDrag","disconnectedCallback","panel","showPopover","matches","buttonEl","hidePopover","_resolve_columns_picker_api__WEBPACK_IMPORTED_MODULE_9__","m","getColumnDragBridge","abort","binding","clear","visibleCount","size","pending","delete","resolveDragBridge","_grid_pro_column_drag_bridge__WEBPACK_IMPORTED_MODULE_8__","Rl","Sb","rows","querySelectorAll","AbortController","signal","needsBridgeRetry","boundGridDrag","forEach","row","dataset","i","dragToGrid","reorderInPanel","_column_picker_ag_drag__WEBPACK_IMPORTED_MODULE_4__","W","onDragStart","onDragEnd","onDragOver","onDragLeave","onDrop","scheduleDragBridgeRetry","attempt","retryId","onSearchInput","onSelectAllClick","preventDefault","stopImmediatePropagation","makeVisible","ids","setColumnsVisible","onCheckboxClick","onVisibilityChange","dataTransfer","setData","effectAllowed","currentTarget","clearDragOverHighlight","dropEffect","relatedTarget","getData","reorderSelected","applyColumnState","nextOrder","K","fL","applyOrder","attr","foundationColumnSelection","_column_selection_template__WEBPACK_IMPORTED_MODULE_7__","s","_column_selection_styles__WEBPACK_IMPORTED_MODULE_6__","H","columnSelectionStyles","gridProColumnSelectionHostStyles","getColumnSelectionTemplate","checkbox","columnRow","recycle","columnSelectionTemplate","GRID_PRO_COLUMN_DRAG_BRIDGE_CONTEXT_KEY","syncColumnDragBridge","beans","context","gridOptions","gridProColumnDragBridgeModule","moduleName","version","Vc","beanName","wireBeans","postConstruct","queueMicrotask","dependsOn","resolveColumnDragBridge","resolveColumnDragBridgeDirect","resolveColumnDragBridgeFromApi","getGridOption","resolveColumnsPickerApi","resolvedApi","columnApi","Proxy","prop","receiver","getAllGridColumns","setColumnVisible","opts","Reflect","GridProColumn","slottedAgCellChanged","deepClone","copy","keys","bind","structuredClone","_column_template__WEBPACK_IMPORTED_MODULE_4__","R","ColumnTemplate","isVisibleColumnDef","resolveVisibleColumnFields","displayedColumns","colDefs","gridProColumns","itemsBinding","includeRenderers","criteriaDelimiter","criteriaJoin","GenesisGridDatasourceElement","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_5__","C","_microsoft_fast_foundation__WEBPACK_IMPORTED_MODULE_11__","isSnapshot","maxRows","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_4__","OD","MAX_ROWS_250","maxView","MAX_VIEW_1000","movingView","reverse","disablePolling","offset","DEFAULT_REQ_REP_OFFSET","pollingInterval","REQ_REP_POLLING_INTERVAL_MS","pollTriggerEvents","requestAutoSetup","restartOnReconnection","criteriaFromFilters","update","rxjs__WEBPACK_IMPORTED_MODULE_12__","t","rowId","rowIdAttr","isRequestServer","REQUEST_SERVER_ROW_ID","DATASERVER_ROW_ID","hasDefaultRowId","defaultRowIdByResourceType","criteria","buildCriteria","orderBy","resourceName","viewNumber","fields","request","parts","part","normalisedCriteria","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_8__","Q","join","setFilter","fieldName","newFilter","next","removeFilter","datasource","status","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_7__","REQUEST_SERVER","datasourceStatusChanged","prev","handleErrors","errors","message","Array","isArray","TEXT","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_1__","$emit","_base_types__WEBPACK_IMPORTED_MODULE_16__","L","_grid_pro_genesis_datasource_datasource_events_types__WEBPACK_IMPORTED_MODULE_13__","clearErrors","connected","initializeDatasource","options_1","fetchMeta","startStream","connect","getMetadata","catch","host","errorMessage","errorType","Error","OperationType","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_2__","dm","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_6__","yW","_microsoft_fast_element__WEBPACK_IMPORTED_MODULE_10__","mode","attribute","converter","nullableNumberConverter","volatile","GridProBaseDatasource","dataSubWasLoggedOff","keepColDefsOnClearRowData","rowData","transactionData","missingRowIdWarned","_isDisconnected","subscribeToConnection","isConnected$","connectionSub","unsubscribe","subscribe","isDisconnected","setDisconnected","reloadResourceData","unsubscribeFromConnection","generateColumnDefsFromMetadata","fieldsMetadata","getFilterParamsByFieldType","getFilterByFieldType","flatMap","colDefBase","filterParams","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_3__","STRING","cellEditor","_grid_pro_types__WEBPACK_IMPORTED_MODULE_15__","stringEditor","NUMBER","numberEditor","BOOLEAN","boolean","DATE","valueFormatter","_grid_pro_definitions__WEBPACK_IMPORTED_MODULE_14__","sL","dateEditor","DATETIME","XV","cellEditorParams","ENUM","enumOptions","selectEditor","option","warn","nh","handleStreamInserts","insertedRows","addIndex","currentAddIndex","insertData","existingData","updatedRow","resolveRowId","defaultRowId","defaultKey","held","handleStreamDeletes","deletedRows","deleteData","handleStreamUpdates","updatedRows","updateData","rowToBeUpdated","debug","applyAllTransactions","loadingFinished","noDataAvailable","applyMappedTransaction","Add","Remove","Update","transaction","operation","mappedTransaction","mapTransaction","dataChanged","changes","reportDeliveredRows","resetTransaction","warnMissingRowIdOnce","known","hasRowContentChanged","emitTransaction","reportWithdrawnRows","rowIds","knownKeys","rowKeys","before","after","serializer","serialize","getResourceIndexes","availableIndexes","availableSortableFields","resourceIndexesMap","allSortableFields","FIELDS","NAME","from","fieldsFromIndexes","additionalFields","operations","rowDataMapper","loadMore","setVisibleColumns","visibleFields","restart","disconnected","getStatusBarActionConfig","configValue","enabled","config","getDatasourceStatusBarPanels","isServerSide","statusBarConfig","additionalPanels","loadMoreConfig","loadMoreParams","onLoadMore","statusPanel","k7","statusPanelParams","align","reloadConfig","reload","reloadParams","onReload","icon","_genesislcap_foundation_utils__WEBPACK_IMPORTED_MODULE_9__","b_","baseDatasourceEventNames","GridProClientSideDatasource","_grid_pro_genesis_datasource__WEBPACK_IMPORTED_MODULE_2__","D","filterDataserverResult","result","_genesislcap_foundation_comms__WEBPACK_IMPORTED_MODULE_0__","d","withRowRef","ROW","rowRef","DETAILS","DeliveredBlockLedger","blocks","record","startRow","previous","withdrawnRowIds","isHeld","errorHandlerDialogStyles","getErrorHandlerDialogTemplate","gridErrorItems","dialogTag","buttonTag","_utils__WEBPACK_IMPORTED_MODULE_1__","P","hideDatasourceError","gridProDatasource","escapeCriteriaValue","replace","convertTextFilterToCriteria","filterModel","safeVal","convertSetFilterToCriteria","colMeta","selectedValues","allValues","VALID_VALUES","every","orConditions","val","convertNumberFilterToCriteria","valueTwo","filterTo","isNum","Number","convertDateFilterToCriteria","normalise","bound","dateFrom","dateTo","now","Date","month","getMonth","toString","padStart","day","getDate","getFullYear","convertSingleFilterToCriteria","filterType","o","processFieldFilter","filterEntry","filterModels","joiner","operator","toUpperCase","fragments","subModel","fragment","convertFilterModelToCriteria","filters","findIndex","fieldCriteria","ROW_MATCH_ALERT_CLASS","ROW_MATCH_ALERT_CELL_CLASS","createRowMatchClassRules","_genesislcap_foundation_ui__WEBPACK_IMPORTED_MODULE_0__","installAlertFlashClock","_row_match_types__WEBPACK_IMPORTED_MODULE_1__","createRowMatchCellClassRules","flashField","isEmpty","asFiniteNumber","isFinite","parsed","valuesEqual","expected","matchesRowCriteria","anyOf","stateField","stateValue","op","stateOp","and","resolveRowMatchGroups","some","group","condition","left","right","fieldMatches","BaseServerSideDatasource","loadGeneration","serverRowsCount","clientRowsCount","moreRows","calculatedRowsCount","currentSequenceId","reloadResourceDataFunc","errorHandlerFunc","onNoDataAvailableFunc","onDataAvailableFunc","onRowsDeliveredFunc","onRowsWithdrawnFunc","resourceParams","originalCriteriaMatch","getResourceParam","resourceIndexes","resourceColDefs","ledger","delivered_block_ledger","J","setResourceParam","getRows","setupFiltering","tslib_es6","filterModelBeingApplied","filtersAreBeingApplied","filtersAreGettingCleaned","filterModelBeingAppliedDiffersFromCurrent","JSON","stringify","currentFilterModel","refreshDatasource","buildCriteriaMatchFromFilters","setupFilteringAndSorting","setupSorting","invalidatePendingLoads","sourceRef","lastSuccessRowData","updateResourceParams","getOrderByAndToBeSortedColIds","searchValue","entries","searchIndex","toBeSorted","criteriaMatch","concat","getFiltersByType","k","criteriaForSingleModel","subModels","f","model","criteriaForTextModel","criteriaForSetModel","criteriaForNumberModel","criteriaForDateModel","filter_utils","zP","EC","X_","A0","getCorrectRowCount","currentLastRowNumber","endRow","rowCount","Math","min","completeEmptyResult","success","successRowData","notifyNoDataAvailableIfEmpty","deliverRows","delivered","rowDataEmpty","atStart","notifyNoDataAvailable","notifyDataAvailable","auth","N","uuid","DataserverServerSideDatasource","cacheOutOfStep","retainedDeletedRowIds","structuralPushPending","pendingBlocks","deliveredRowCount","streamStarted","moreRowsInFlight","createDataserverStreamFunc","_super","cancelAllPendingBlocks","dataserverStreamSubscription","dataserverStream","fail","blockStartRow","blockEndRow","blockAlreadyCovered","utils_logger","VIEW_NUMBER","getMoreRows","applyResult","clearSafetyTimer","timer","clearTimeout","pendingBlock","cancel","settleBlock","resolveBlock","max","slice","failBlock","safetyTimer","setTimeout","BLOCK_RESOLVE_TIMEOUT_MS","dataserverResult","messageType","MESSAGE_TYPE","connect_message","Go","LOGOFF_ACK","MSG_NACK","index_js_","ensureStreamSubscription","block","dispatchStreamMessage","MORE_ROWS","nextMessage","dataserver_result_filter","solicited","updates","deletes","handleCurrentStreamLoad","SEQUENCE_ID","SOURCE_REF","ROWS_COUNT","toBeAppliedSortModel","sortModel","currentSortModel","ORDER_BY","REVERSE","coldIdBeingSorted","sortTypeBeingApplied","orderByAndToBeSortedColIds","availableIndexFields","sortModelChanged","hadPreviousSort","hasActiveOrderBy","inserts","isNewToCache","existing","cacheIndexOf","mapKey","ReqRepServerSideDatasource","discoveredTotalRowCount","createReqRepRequestFunc","createReqRepStreamFunc","onPollingUpdate","onPollingUpdateFunc","resetPreviousPollResult","resetPreviousPollResultFunc","usePolling","debouncedCreateStream","lodash_debounce_default","createPollingStream","OFFSET","generation","requestParams","buildRequestDetails","requestResult","logger","applyServerSideData","schedulePollingStream","destroyPollingStream","NEXT_OFFSET","REPLY","floor","currentBatchSize","reply","insertDataRowId","noRowIdMessage","tempId","createId","currentStreamParams","stream","reqRepPollingStream","reqRepPollingDatasource","reqRepPollingSubscription","receivedMessage","ERROR","CRITERIA_MATCH","MAX_ROWS","GridProServerSideDatasource","lifecycle","base_datasource","ML","liveUpdates","onDatasourceReady","_event","clearRowData","isSsrmSupportedForResource","refuseServerSideDatasource","grid_pro_genesis_datasource_config","V","dataInit","indexes","fieldMetadata","metadata_utils","X","originalFieldDef","agColumnDefs","getAgColumnDefs","datasource_events_types","schemaUpdated","schema","metadata","ssrmDatasource","createReqRepRequest","createReqRepStream","applyReqRepPollingUpdate","requestOnlyParams","createDataserverStream","dataserverOnlyParams","setServerSideDatasource","filtersRestored","applyServerSideSortIndicatorStyling","previousPollResult","hasCapturedFirstPollResult","resourceNameChanged","criteriaChanged","oldCriteria","newCriteria","criteriaIsNotDuplicate","normaliseCriteria","shouldRunConnect","shouldRunDisconnect","deferredGridOptions","deferredColumnStates","liveUpdatesStream","cacheFilterConfig","refreshServerSide","purge","loadingStarted","addGridCssClass","className","removeServerSideSortIndicatorStyling","removeGridCssClass","getRowId","getRowStyle","ROW_REF","color","cacheBlockSize","defaultColDef","resizable","sortable","unSortIcon","rowBuffer","rowModelType","suppressServerSideInfiniteScroll","suppressMultiSort","onFilterChanged","onSortChanged","initialize","clearReadyListener","ready","once","pollingDatasource","withColumnDefs","dataCleared","includeSchema","applyServerSideTransaction","criteriaOnlyRequest","existingParams","snapshot","currentOffset","baseMaxRows","totalRowsToFetch","polledData","startsWith","currentPollMap","rowsToUpdate","rowsToInsert","rowsToDelete","previousRow","added","updated","removed","totalInPoll","applyLiveServerSideUpdate","netRowChange","gridOnlyUpdates","route","gridUpdates","_existingParams","streamOnMessage","QUERY_UPDATE","rawMessage","normalizedRows","mergedRows","details","existingRow","merged","normalizedMessage","onError","colDefsFromGenesisData","server_side_grid_definitions","availableCriteriaFields","getServerSideFilterParamsByFieldType","buttons","closeOnApply","closeOnClear","maxNumConditions","defaultOption","filterOptions","displayKey","predicate","_","cellValue","numberOfInputs","_grid_pro_definitions__WEBPACK_IMPORTED_MODULE_1__","O7","comparator","filterLocalDateAtMidnight","cellValueTime","setHours","filterValueTime","getTime","browserDatePicker","agHeadCSS","agGridAlpineFontFace","agGridBalhamFontFace","agGridMaterialFontFace","agThemeFontFaceMap","_grid_pro_types__WEBPACK_IMPORTED_MODULE_0__","mJ","alpine","alpineDark","balham","balhamDark","material","defaultAgGridFontFace","agGridCSS","agThemeAlpineNofontsCSS","agThemeBalhamNofontsCSS","agThemeMaterialNofontsCSS","agExternalStockStyles","ag_head_css","g","datasourceEventNames","dataLoaded","moreDataAvailable","sizeChanged","setInfiniteDatasource","refreshInfiniteCache","gridProGenesisDatasourceEventNames","moreRowsChanged","getClientSideFilterParamsByFieldType","metadata_types","grid_pro_definitions","GridProGenesisDatasource","cachedRowArray","requestVisibleColumnsOnly","requiresFullRowDataAndColDefs","_lastMoreRows","_isMoreRowsResult","_nextOffset","_loadMoreCount","loadResourceData","NC","initialized","requestChanged","oldRequest","newRequest","requestIsNotDuplicate","colDefsDeepClone","columnDefinition","definitionCopy","fieldKey","updateSub","pipe","skip","debounceTime","B","tap","M","dataSub","_sourceRef","_visibleColumns","BehaviorSubject","deinit","reset","refreshRows","updateCachedRowArray","emitDataLoaded","setRowData","emitDataChanged","isInitialLoad","updateLoadMoreCount","withFullInit","requiresMetadataFetch","handleSnapshot","catchError","err","empty","hasMoreRowsInResult","hasRowsCountInResult","hasNextOffsetInResult","resourceType","datasource_types","updateLoadMoreStatus","dataServerResultFilter","handleStreamResult","moreRowsDetail","applyRequestServerData","applyDataserverData","hasMoreData","requestServerResult","previousSize","requestServerData","noRowIdError","handleSizeChanged","match","dataServerResult","oldSize","newSize","getRequestedFields","visibleColumns","getConfiguredVisibleColumns","columnDefs","DATASERVER","columnsChanged","previousSet","getEnumFilterParams","getColumnType","metadataType","dateValueFormatter","_genesislcap_foundation_utils__WEBPACK_IMPORTED_MODULE_0__","CL","dateTimeValueFormatter","zT","formatDateExtra","epoch","toISOString","DEBOUNCED_RESIZE_TIME","gridProEventNames","datasourceErrorClose","gridProErrorNames","unknown","AG_PROPERTIES","AG_NUMBER_PROPERTIES","AG_BOOLEAN_PROPERTIES","AG_NUMBER_PROPERTIES_SET","AG_BOOLEAN_PROPERTIES_SET","AG_PROPERTIES_SET","toBoolean","copyAttributesToGridOptions","component","pGridOptions","coercedValue","toNumber","_genesislcap_foundation_utils__WEBPACK_IMPORTED_MODULE_8__","_grid_pro_genesis_datasource__WEBPACK_IMPORTED_MODULE_33__","_datasource__WEBPACK_IMPORTED_MODULE_29__","_datasource__WEBPACK_IMPORTED_MODULE_30__","_cell__WEBPACK_IMPORTED_MODULE_14__","_column__WEBPACK_IMPORTED_MODULE_28__","G","_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_2__","syG","registerModules","_ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_3__","n7","_ag_grid_community_client_side_row_model__WEBPACK_IMPORTED_MODULE_1__","GridPro","_genesislcap_foundation_utils__WEBPACK_IMPORTED_MODULE_5__","_microsoft_fast_foundation__WEBPACK_IMPORTED_MODULE_10__","rowDataChanged","initialised","themeChanged","classNames","destroyFontFace","_microsoft_fast_web_utilities__WEBPACK_IMPORTED_MODULE_11__","_grid_pro_types__WEBPACK_IMPORTED_MODULE_39__","eL","insertFontFace","gridSlotChanged","gridSlot","agGridOptions","initGrid","getfilterModel","persistFilterModelKey","_filterConfig","statePersistence","getFilterModel","setFilterModel","saveFilterModel","cachedTotalColumnWidth","columnCount","disposed","debouncedSaveColumnState","lodash_debounce__WEBPACK_IMPORTED_MODULE_13___default","saveColumnState","debouncedSaveFilterModel","debouncedNotifyDatasourceVisibleColumns","notifyDatasourceVisibleColumns","autoCellRendererByType","onlyTemplateColDefs","gridAutosizingEnabled","sizeColumnsToContent","sizeColumnsToFit","asyncAdd","asyncRemove","asyncUpdate","enableCellFlashing","enabledRowFlashing","enableRowFlashing","defaultColumnConfig","gridFontFace","_external__WEBPACK_IMPORTED_MODULE_32__","qh","columnComponentName","theme","themeMode","o2","withStatusBar","applyingDatasourceGridOptions","rehydrationAttempted","eventHandlers","gridEventsQueue","registeredGridEvents","gridEventListeners","boundGlobalEventListener","globalEventListener","agAttributes","agPropertiesMap","_grid_pro_definitions__WEBPACK_IMPORTED_MODULE_36__","zI","reduce","property","_utils__WEBPACK_IMPORTED_MODULE_48__","hideDataSourceError","_grid_pro_genesis_datasource__WEBPACK_IMPORTED_MODULE_34__","yY","_datasource_base_types__WEBPACK_IMPORTED_MODULE_31__","handleBaseDatasourceError","_grid_pro_genesis_datasource_datasource_events_types__WEBPACK_IMPORTED_MODULE_35__","handleInitialize","handleDataLoaded","handleDataChanged","handleSchemaUpdated","handleDataCleared","handleLoadingStarted","handleLoadingFinished","handleNoDataAvailable","handleFiltersRestored","handleMoreDataAvailable","handleDatasourceError","handleDatasourceDestroy","handleRefreshServerSide","handleSetServerSideDatasource","handleAddGridCssClass","handleRemoveGridCssClass","handleApplyServerSideTransaction","refuseInfiniteDatasource","_utils__WEBPACK_IMPORTED_MODULE_47__","eventType","listener","kNx","PUBLIC_EVENTS","addGridEventListener","handleError","gridProError","Ie","visibilityObserverCleanup","_genesislcap_foundation_utils__WEBPACK_IMPORTED_MODULE_6__","j","gridVisible","debouncedColumnAutosize","eventName","handler","defineProperty","agAttributeChangedCallback","enumerable","configurable","performDisconnectCleanup","debounced","resetGridOptionsState","destroyGridInstance","invalidateColumnWidthCache","flushAsyncTransactions","agGrid","replaceChildren","columnDefinitions","getColumnDefs","userProvidedGridOptions","applyTransactionAsync","flashAddedCells","applyTransaction","rowNodes","flashCells","processSchemaUpdate","pendingSchemaUpdate","preSetColumnDefs","getColumnDef","colDefsMergedWithTemplateDefs","mergeAllColumnDefsAndStates","rowGroup","pivot","setColumnDefs","restoreCachedFilterConfig","refreshCells","force","showLoadingOverlay","hideOverlay","showNoRowsOverlay","statusBar","getStatusPanel","updateParams","clearLocalGridOptions","gridElement","callback","applyServerSideTransactionAsync","combineAllGridComponents","gridOptionsComponents","defaultFoundationAgComponents","action","_cell_renderers__WEBPACK_IMPORTED_MODULE_20__","eA","_cell_renderers__WEBPACK_IMPORTED_MODULE_21__","cN","_cell_renderers__WEBPACK_IMPORTED_MODULE_22__","_Y","_cell_renderers__WEBPACK_IMPORTED_MODULE_23__","YM","_cell_renderers__WEBPACK_IMPORTED_MODULE_24__","Jt","statusPill","_cell_renderers__WEBPACK_IMPORTED_MODULE_25__","N7","select","_cell_renderers__WEBPACK_IMPORTED_MODULE_26__","gs","_cell_editors__WEBPACK_IMPORTED_MODULE_18__","_Q","_cell_editors__WEBPACK_IMPORTED_MODULE_17__","Z0","multiselectEditor","_cell_editors__WEBPACK_IMPORTED_MODULE_16__","pZ","_cell_editors__WEBPACK_IMPORTED_MODULE_15__","S8","_cell_editors__WEBPACK_IMPORTED_MODULE_19__","XJ","labelValue","_status_bar_components__WEBPACK_IMPORTED_MODULE_42__","_status_bar_components__WEBPACK_IMPORTED_MODULE_41__","_status_bar_components__WEBPACK_IMPORTED_MODULE_43__","_status_bar_components__WEBPACK_IMPORTED_MODULE_44__","gridComponents","statePersistanceEnabled","persistColumnStateKey","getSelectedRows","rowSelectionMode","rowSelection","getCellRanges","getCellRangeRowData","enableRangeSelection","focusedCell","getFocusedCell","rowNode","getDisplayedRowAtIndex","cellRanges","range","startIndex","endIndex","hasSelectedRows","updateLabelValueStatusBar","BW","removeConfigWidthsToAutosize","colState","_utils__WEBPACK_IMPORTED_MODULE_46__","allHeadersHidden","getSavedColumnState","deleteColumnState","resetToDefault","rG","resetColumnState","handleColumnSizing","restoreColumnState","sanitizedColState","gridParams","_column__WEBPACK_IMPORTED_MODULE_27__","gridOnChangeCallback","notifyVisibilityChanged","attributes","attrName","components","onGridReady","onFirstDataRendered","rest","Tt","gridOptionsConfig","derivedOptions","enableCellChangeFlash","suppressDragLeaveHidesColumns","eventsAndCallbacks","sVA","EVENT_GRID_READY","gridId","mr","onColumnPinned","onColumnResized","onColumnMoved","onColumnVisible","onDisplayedColumnsChanged","filterChangedEvent","onGridSizeChanged","hasGetRowId","setupStatusBar","setLocalGridOptions","Qg","_microsoft_fast_element__WEBPACK_IMPORTED_MODULE_9__","firstChild","removeChild","xA9","applyTemplateDefinitions","deferredColumnDefsOrState","deprecated","columnDefs_1","columnDefinitionsFromMetadata","colDefFromMetadata","headerCaseType","changeCaseByType","change_case__WEBPACK_IMPORTED_MODULE_12__","templateColumnDefs","templateColumn","columnDef","metadataValues","cellRendererSelector","tooltipComponent","tooltipValueGetter","_tooltips__WEBPACK_IMPORTED_MODULE_45__","y","h1","cellClassRules","metadataColumnDef","templateColumnKeys","colDefsToReturn","savedColumnState","yS","panelExists","statusPanelType","panels","addRowCountPanel","statusPanels","rowCountStatusPanel","addMaxRowsPanel","addAggregationPanel","aggregation","addDatasourcePanels","newDatasourcePanels","newUserDefinedPanels","handleBothSizingModes","handleIndividualSizingModes","calculateTotalColumnWidth","getGridWidth","autoSizeAllColumns","allColumns","currentColumnCount","sum","gridWidth","clientWidth","observedAttributes","lowerCasedPropertyNames","kebabCasePropertyNames","attName","gridPropertyName","changeObject","currentValue","processOnChange","eventLowerCase","browserEvent","Event","agGridDetails","callbackMethod","fontFaceRule","KE","newDestroy","_genesislcap_foundation_utils__WEBPACK_IMPORTED_MODULE_7__","O5","b7","fontFaceDestroy","_state_persistence__WEBPACK_IMPORTED_MODULE_40__","l","lz","foundationGridProShadowOptions","defaultGridProConfig","shadowOptions","foundationGridPro","_grid_pro_styles__WEBPACK_IMPORTED_MODULE_37__","XF","_grid_pro_template__WEBPACK_IMPORTED_MODULE_38__","agDragGhostShadowDomStyles","rowMatchAlertStyles","_datasource_row_match_classes__WEBPACK_IMPORTED_MODULE_4__","Xm","alertFlashPhaseProperty","foundationGridProStyles","_external__WEBPACK_IMPORTED_MODULE_5__","Kp","_datasource_error_handler_dialog__WEBPACK_IMPORTED_MODULE_3__","_column_selection_column_selection_styles__WEBPACK_IMPORTED_MODULE_2__","getGridProTemplate","enableColumnSelection","customErrorHandlerTemplate","_datasource_error_handler_dialog__WEBPACK_IMPORTED_MODULE_1__","gridProTemplate","AgGridCSSVars","AgGridTheme","agThemeTokenMapClassname","themeName","agThemeFontsId","agThemeTokenMapCSS","tokenMap","CSSVarsTokenMapper","GridProRendererTypes","GridProStatusBarTypes","GRID_READY_EVENT","EDITED_COLUMN_FIELD","ERROR_COLUMN_FIELD","defaultGridOptionsConfig","GridOptionsConfig","DI","createInterface","instance","GridProCaseType","DEFAULT_STATUS_BAR_CONFIG","LocalStorageStatePersistence","localStorageGridOptions","session","getLocalStorageItem","allGridOptions","parse","existingOptions","setLocalStorageItem","getRowAlertPreferences","persistRowAlertKey","saveRowAlertPreferences","preferences","StatePersistence","_microsoft_fast_foundation__WEBPACK_IMPORTED_MODULE_0__","singleton","_local_state__WEBPACK_IMPORTED_MODULE_1__","LabelValueStatusBarComponent","element","createElement","currentParams","updateDisplay","style","display","labelElement","appendChild","innerHTML","valueElement","LoadMoreStatusBarComponent","buttonLabel","isLoading","alignItems","justifyContent","paddingLeft","paddingRight","height","designSystemPrefix","JH","createProgressRing","createLoadMoreButton","updateButtonVisibility","progressRing","loadMoreButton","margin","textContent","minWidth","textAlign","lineHeight","updateAriaLabel","showLoading","_genesislcap_foundation_utils__WEBPACK_IMPORTED_MODULE_2__","ariaLabel","loading","prevParams","ReloadStatusBarComponent","isReloading","createRefreshIcon","refreshIcon","cursor","fontSize","mouseoverHandler","opacity","mouseoutHandler","showReloading","reloading","RowCountStatusBarComponent","rowCountDisplay","modelUpdatedHandler","apiAny","getDisplayedRowCount","hasUncertainTotal","paginationIsLastPageFound","displayText","ErrorTooltip","eGui","convertColDefToColumnState","pinned","sortIndex","aggFunc","rowGroupIndex","pivotIndex","flex","allowedColumnStateKeys","sanitizeColumnState","sanitizedState","mutableSanitizedState","convertColDefsToColumnStates","mergeAndDedupColDefWithColumnState","columnStates","sanitizedColumnStates","deduplicated","fieldProp","colIdProp","isColumnGroup","def","children","keyOf","stateByColId","applyStateDeep","matchingColDef","colDefStateMerge","hasOwnProperty","newObj","extractErrorMessage","createLogger","getAvailableIndexes","availabeIndexes","getAvailableIndexFields","traverse","convertToKebabCase","LifecycleMixin","Base","_instances","__container","__latestTokenCode","__hasFirstLoaded","__cleanupTimeout","__shouldForceLifecycle","__blockedDisconnectSurvivedGracePeriod","__blockLifecycleDueToTokenChange","__tryFindContainingLayout","args","_key","cloneNode","deep","thisClone","childNodes","child","tagName","getAttributeNames","at","gn","dragging","hasFirstLoaded","connectionType","GG","WeakSet","lifecycleType","tokensDifferent","lifecycleUpdateToken","getRootNode","layoutCacheDocument","Document","shadowHost","class","layoutHost","Symbol","delay","ms","Promise","resolve","insertDocumentCSSRule","cssRule","styleElementId","styleElement","getElementById","_logger__WEBPACK_IMPORTED_MODULE_0__","headElement","head","getElementsByTagName","styleIndex","sheet","insertRule","deleteRule","getAllElements","elements","processedShadowRoots","collectElements","nodeElements","el","shadowRoot"],"sourceRoot":""}