@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":"47.47.xxxxxxxxxxxxxxxxxxxx.js","mappings":"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","sources":["webpack://@genesislcap/design-system-configurator/../node_modules/dayjs/plugin/utc.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-editors/select.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-editors/number.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-editors/multiselect.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-editors/date.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-editors/string.editor.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-renderers/action.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-renderers/actions-menu.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-renderers/boolean.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-renderers/editable.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-renderers/icon.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-renderers/select.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-renderers/status-pill.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/themes/genesis-rapid/ag-theme-genesis-rapid-css.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/themes/genesis-rapid/ag-theme-genesis-rapid.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/grid-pro.styles.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/grid-pro.template.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/style/colors.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/style/tokens.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/grid-pro.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-filters/enum-column.filter.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/column-filters/enum-column.floating-filter.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/infinite.resource.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/infinite.datasource.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-pro-beta.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/grid-pro-beta.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/cell-renderers/text.renderer.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/column-selection.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/grid-components.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-utils/dist/esm/converters/string-array-converter.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/multicolumn-dropdown/multicolumn-dropdown.styles.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/multicolumn-dropdown/multicolumn-dropdown.template.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/multicolumn-dropdown/multicolumn-dropdown.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-ds/rapid-grid-pro/dist/esm/multicolumn-dropdown.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/datasource/row-match.tracker.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/grid-components.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/row-alert/row-alert.types.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/row-alert/row-alert.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-utils/dist/esm/encoding/base64/decode.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-utils/dist/esm/encoding/base64/encode.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-comms/dist/esm/storage/kv/kv-config.service.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-comms/dist/esm/storage/kv/kv.types.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-comms/dist/esm/storage/kv/kv.service.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/state-persistence/kv-state.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/style/colors.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/style/tokens.js","webpack://@genesislcap/design-system-configurator/../foundation/foundation-marketplace/grids/grid-pro/dist/esm/utils/sanitasations.js"],"sourcesContent":["!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),r.call(this,t)};var o=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s;if(0===u)return this.utc(f);var r=this.clone();if(f)return r.$offset=u,r.$u=!1,r;var o=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(r=this.local().add(u+o,t)).$offset=u,r.$x.$localOffset=o,r};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","import { getSelectEditorTemplate, SelectEditor, agSelectEditorStyles } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-select-editor\n */\nexport class RapidSelectEditor extends SelectEditor {\n}\n/**\n * The Rapid Select editor\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-select-editor\\>\n */\nexport const rapidAgSelectEditor = RapidSelectEditor.compose({\n baseName: 'select-editor',\n styles: agSelectEditorStyles,\n template: getSelectEditorTemplate('rapid'),\n});\n","import { getNumberEditorTemplate, NumberEditor, agNumberEditorStyles } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-number-editor\n */\nexport class RapidNumberEditor extends NumberEditor {\n}\n/**\n * The Rapid Number editor\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-number-editor\\>\n */\nexport const rapidAgNumberEditor = RapidNumberEditor.compose({\n baseName: 'number-editor',\n styles: agNumberEditorStyles,\n template: getNumberEditorTemplate('rapid'),\n});\n","import { getMultiselectEditorTemplate, MultiselectEditor, agMultiselectEditorStyles, } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-multiselect-editor\n */\nexport class RapidMultiselectEditor extends MultiselectEditor {\n}\n/**\n * The Rapid Multiselect editor\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-multiselect-editor\\>\n */\nexport const rapidAgMultiselectEditor = RapidMultiselectEditor.compose({\n baseName: 'multiselect-editor',\n styles: agMultiselectEditorStyles,\n template: getMultiselectEditorTemplate('rapid'),\n});\n","import { DateEditor, agDateEditorStyles, getDateEditorTemplate } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-date-editor\n */\nexport class RapidDateEditor extends DateEditor {\n}\n/**\n * The Rapid Date editor\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-date-editor\\>\n */\nexport const rapidAgDateEditor = RapidDateEditor.compose({\n baseName: 'date-editor',\n styles: agDateEditorStyles,\n template: getDateEditorTemplate('rapid'),\n});\n","import { getStringEditorTemplate, StringEditor, agStringEditorStyles } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-string-editor\n */\nexport class RapidStringEditor extends StringEditor {\n}\n/**\n * The Rapid String editor\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-string-editor\\>\n */\nexport const rapidAgStringEditor = RapidStringEditor.compose({\n baseName: 'string-editor',\n styles: agStringEditorStyles,\n template: getStringEditorTemplate('rapid'),\n});\n","import { ActionRenderer, agActionRendererStyles } from '@genesislcap/grid-pro';\nimport { css, html } from '@microsoft/fast-element';\n/**\n * @tagname %%prefix%%-grid-pro-action-renderer\n */\nexport class RapidAgActionRenderer extends ActionRenderer {\n paramsChanged(_, params) {\n if (params === null || params === void 0 ? void 0 : params.node.rowHeight)\n this.style.setProperty('--params-row-node-height', `${params.node.rowHeight}px`, '');\n }\n}\n/**\n * The Rapid Action Renderer\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-grid-pro-action-renderer\\>\n */\nexport const rapidAgActionRenderer = RapidAgActionRenderer.compose({\n baseName: 'grid-pro-action-renderer',\n styles: css `\n ${agActionRendererStyles}\n .button-padding {\n justify-content: center;\n margin: calc(var(--design-unit) * 1px);\n }\n rapid-button {\n /* assuming 30 is the fallback, you can change it */\n height: calc(var(--params-row-node-height, 32px) - 6px);\n max-height: 28px;\n &::part(control) {\n height: 100%;\n }\n }\n `,\n template: html `\n <div class=\"action-container\" part=\"action-container\">\n <rapid-button\n class=\"action-renderer button-padding\"\n part=\"action-renderer\"\n style=\" ${(x) => { var _a; return ((_a = x.params) === null || _a === void 0 ? void 0 : _a.actionButtonStyle) || ''; }}\"\n aria-label=${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.actionName; }}\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) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.appearance; }}\"\n @click=${(x) => x.clickHandler()}\n >\n ${(x) => {\n var _a, _b;\n return ((_a = x.params) === null || _a === void 0 ? void 0 : _a.contentTemplate)\n ? html `\n ${x.params.contentTemplate}\n `\n : (_b = x.params) === null || _b === void 0 ? void 0 : _b.actionName;\n }}\n </rapid-button>\n </div>\n `,\n});\n","import { ActionsMenuRenderer } from '@genesislcap/grid-pro';\nimport { css, html } from '@microsoft/fast-element';\n/**\n * @tagname %%prefix%%-grid-pro-actions-menu-renderer\n */\nexport class RapidAgActionsMenuRenderer extends ActionsMenuRenderer {\n paramsChanged(_, params) {\n if (params === null || params === void 0 ? void 0 : params.node.rowHeight)\n this.style.setProperty('--params-row-node-height', `${params.node.rowHeight}px`, '');\n }\n}\n/**\n * The Rapid Ag Actions Menu Renderer\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-grid-pro-actions-menu-renderer\\>\n */\nexport const rapidAgActionsMenuRenderer = RapidAgActionsMenuRenderer.compose({\n baseName: 'grid-pro-actions-menu-renderer',\n styles: css `\n ::part(actions-opener) {\n height: calc(var(--params-row-node-height, 32px) - 6px);\n width: calc(var(--params-row-node-height, 32px) - 6px);\n padding: 0;\n max-height: 28px;\n max-width: 28px;\n }\n ::part(control) {\n height: 100%;\n }\n `,\n template: html `\n <rapid-actions-menu\n name=\"${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.headerName; }}\"\n :definition=${(x) => x.params}\n ></rapid-actions-menu>\n `,\n});\n","import { BooleanRenderer, agBooleanRendererStyles, getAgBooleanRendererTemplate, } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-boolean-renderer\n */\nexport class RapidBooleanRenderer extends BooleanRenderer {\n}\n/**\n * The Rapid Ag Boolean Renderer\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-boolean-renderer\\>\n */\nexport const rapidAgBooleanRenderer = RapidBooleanRenderer.compose({\n baseName: 'boolean-renderer',\n styles: agBooleanRendererStyles,\n template: getAgBooleanRendererTemplate('rapid'),\n});\n","import { agEditableRendererStyles, EditableRenderer, getAgEditableRendererTemplate, } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-editable-renderer\n */\nexport class RapidEditableRenderer extends EditableRenderer {\n}\n/**\n * The Rapid Ag Editable Renderer\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-editable-renderer\\>\n */\nexport const rapidAgEditableRenderer = RapidEditableRenderer.compose({\n baseName: 'editable-renderer',\n styles: agEditableRendererStyles,\n template: getAgEditableRendererTemplate('rapid'),\n});\n","import { agIconRendererStyles, IconRenderer, getIconRendererTemplate } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-icon-renderer\n */\nexport class RapidIconRenderer extends IconRenderer {\n}\n/**\n * The Rapid Ag Icon Renderer Element (FAST custom element)\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-icon-renderer\\>\n */\nexport const rapidIconRenderer = RapidIconRenderer.compose({\n baseName: 'icon-renderer',\n styles: agIconRendererStyles,\n template: getIconRendererTemplate('rapid'),\n});\n","import { agSelectRendererStyles, SelectRenderer as FoundationAgSelectRenderer, getSelectRendererTemplate, } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-select-renderer\n */\nexport class RapidAgSelectRenderer extends FoundationAgSelectRenderer {\n}\n/**\n * The Rapid Select Renderer\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-select-renderer\\>\n */\nexport const rapidAgSelectRenderer = RapidAgSelectRenderer.compose({\n baseName: 'select-renderer',\n styles: agSelectRendererStyles,\n template: getSelectRendererTemplate('rapid'),\n});\n","import { StatusPillRenderer, getStatusPillRendererTemplate, agStatusPillRendererStyles, } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-status-renderer\n */\nexport class RapidStatusPillRenderer extends StatusPillRenderer {\n}\n/**\n * The Rapid Ag Status Pill Renderer\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-status-pill-renderer\\>\n */\nexport const rapidStatusPillRenderer = RapidStatusPillRenderer.compose({\n baseName: 'status-pill-renderer',\n template: getStatusPillRendererTemplate('rapid'),\n styles: agStatusPillRendererStyles,\n});\n","import { css } from '@microsoft/fast-element';\nexport const agThemeGenesisRapidCSS = css `\n .ag-theme-genesis-rapid,\n .ag-theme-genesis-rapid-dark,\n .ag-theme-genesis-rapid-light {\n --ag-alpine-active-color: #2196f3;\n --ag-selected-row-background-color: var(--accent-fill-rest);\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: #68686e;\n --ag-secondary-border-color: #dde2eb;\n --ag-header-background-color: #ff0000;\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: var(\n --body-font,\n -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Oxygen-Sans,\n Ubuntu,\n Cantarell,\n 'Helvetica Neue',\n sans-serif\n );\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-genesis-rapid-dark,\n .ag-theme-genesis-rapid-light {\n --ag-alpine-active-color: var(--accent-fill-color);\n --ag-background-color: var(--neutral-layer-card-container);\n --ag-foreground-color: var(--neutral-foreground-rest);\n --ag-border-color: var(--neutral-stroke-rest);\n --ag-selected-row-background-color: var(--accent-fill-rest);\n --ag-row-hover-color: var(--neutral-layer-4);\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: var(--neutral-layer-3);\n --ag-header-foreground-color: var(--neutral-foreground-rest);\n --ag-tooltip-background-color: #222628;\n --ag-row-border-color: color-mix(in srgb, var(--neutral-stroke-rest), transparent 30%);\n --ag-odd-row-background-color: var(--neutral-layer-1);\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 rgba(0, 0, 0, 0.3);\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 --ag-pinned-shadow-right: -10px 0 15px rgba(0, 0, 0, 0.3);\n --ag-pinned-shadow-left: 10px 0 15px rgba(0, 0, 0, 0.3);\n --rapid-ag-border-color: var(--ag-row-border-color);\n --ag-secondary-foreground-color: var(--accent-foreground-rest);\n --ag-selected-tab-underline-color: var(--accent-fill-rest);\n --ag-checkbox-checked-color: var(--accent-foreground-rest);\n }\n\n .ag-theme-genesis-rapid-light {\n --ag-pinned-shadow-right: -10px 0 15px rgba(0, 0, 0, 0.1);\n --ag-pinned-shadow-left: 10px 0 15px rgba(0, 0, 0, 0.1);\n }\n\n .ag-theme-genesis-rapid .ag-filter-toolpanel-header,\n .ag-theme-genesis-rapid .ag-filter-toolpanel-search,\n .ag-theme-genesis-rapid .ag-status-bar,\n .ag-theme-genesis-rapid .ag-header-row,\n .ag-theme-genesis-rapid .ag-panel-title-bar-title,\n .ag-theme-genesis-rapid .ag-multi-filter-group-title-bar,\n .ag-theme-genesis-rapid-dark .ag-filter-toolpanel-header,\n .ag-theme-genesis-rapid-dark .ag-filter-toolpanel-search,\n .ag-theme-genesis-rapid-dark .ag-status-bar,\n .ag-theme-genesis-rapid-dark .ag-header-row,\n .ag-theme-genesis-rapid-dark .ag-panel-title-bar-title,\n .ag-theme-genesis-rapid-dark .ag-multi-filter-group-title-bar,\n .ag-theme-genesis-rapid-light .ag-filter-toolpanel-header,\n .ag-theme-genesis-rapid-light .ag-filter-toolpanel-search,\n .ag-theme-genesis-rapid-light .ag-status-bar,\n .ag-theme-genesis-rapid-light .ag-header-row,\n .ag-theme-genesis-rapid-light .ag-panel-title-bar-title,\n .ag-theme-genesis-rapid-light .ag-multi-filter-group-title-bar {\n font-weight: 700;\n }\n\n .ag-theme-genesis-rapid .ag-row,\n .ag-theme-genesis-rapid-dark .ag-row,\n .ag-theme-genesis-rapid-light .ag-row {\n font-size: calc(var(--ag-font-size) + 1px);\n }\n\n .ag-theme-genesis-rapid input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid textarea[class^='ag-'],\n .ag-theme-genesis-rapid-dark input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid-dark input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid-dark input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid-dark input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid-dark input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid-dark input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid-dark textarea[class^='ag-'],\n .ag-theme-genesis-rapid-light input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid-light input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid-light input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid-light input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid-light input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid-light input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid-light textarea[class^='ag-'] {\n min-height: calc(var(--ag-grid-size) * 4);\n border-radius: var(--ag-border-radius);\n }\n\n .ag-theme-genesis-rapid .ag-ltr input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid .ag-ltr input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid .ag-ltr input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid .ag-ltr input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid .ag-ltr input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid .ag-ltr input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid .ag-ltr textarea[class^='ag-'],\n .ag-theme-genesis-rapid-dark .ag-ltr input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid-dark .ag-ltr input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid-dark .ag-ltr input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid-dark .ag-ltr input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid-dark .ag-ltr input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid-dark .ag-ltr input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid-dark .ag-ltr textarea[class^='ag-'],\n .ag-theme-genesis-rapid-light .ag-ltr input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid-light .ag-ltr input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid-light .ag-ltr input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid-light .ag-ltr input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid-light .ag-ltr input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid-light .ag-ltr input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid-light .ag-ltr textarea[class^='ag-'] {\n padding-left: var(--ag-grid-size);\n }\n\n .ag-theme-genesis-rapid .ag-rtl input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid .ag-rtl input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid .ag-rtl input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid .ag-rtl input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid .ag-rtl input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid .ag-rtl input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid .ag-rtl textarea[class^='ag-'],\n .ag-theme-genesis-rapid-dark .ag-rtl input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid-dark .ag-rtl input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid-dark .ag-rtl input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid-dark .ag-rtl input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid-dark .ag-rtl input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid-dark .ag-rtl input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid-dark .ag-rtl textarea[class^='ag-'],\n .ag-theme-genesis-rapid-light .ag-rtl input[class^='ag-']:not([type]),\n .ag-theme-genesis-rapid-light .ag-rtl input[class^='ag-'][type='text'],\n .ag-theme-genesis-rapid-light .ag-rtl input[class^='ag-'][type='number'],\n .ag-theme-genesis-rapid-light .ag-rtl input[class^='ag-'][type='tel'],\n .ag-theme-genesis-rapid-light .ag-rtl input[class^='ag-'][type='date'],\n .ag-theme-genesis-rapid-light .ag-rtl input[class^='ag-'][type='datetime-local'],\n .ag-theme-genesis-rapid-light .ag-rtl textarea[class^='ag-'] {\n padding-right: var(--ag-grid-size);\n }\n\n .ag-theme-genesis-rapid .ag-tab,\n .ag-theme-genesis-rapid-dark .ag-tab,\n .ag-theme-genesis-rapid-light .ag-tab {\n padding: calc(var(--ag-grid-size) * 1.5);\n transition: color 0.4s;\n flex: 1 1 auto;\n }\n\n .ag-theme-genesis-rapid .ag-tab-selected,\n .ag-theme-genesis-rapid-dark .ag-tab-selected,\n .ag-theme-genesis-rapid-light .ag-tab-selected {\n color: var(--ag-alpine-active-color);\n }\n\n .ag-theme-genesis-rapid .ag-menu,\n .ag-theme-genesis-rapid-dark .ag-menu,\n .ag-theme-genesis-rapid-light .ag-menu {\n background-color: var(--ag-control-panel-background-color);\n }\n\n .ag-theme-genesis-rapid .ag-menu-header,\n .ag-theme-genesis-rapid-dark .ag-menu-header,\n .ag-theme-genesis-rapid-light .ag-menu-header {\n background-color: var(--ag-control-panel-background-color);\n padding-top: 1px;\n }\n\n .ag-theme-genesis-rapid .ag-tabs-header,\n .ag-theme-genesis-rapid-dark .ag-tabs-header,\n .ag-theme-genesis-rapid-light .ag-tabs-header {\n border-bottom: var(--ag-borders) var(--ag-border-color);\n }\n\n .ag-theme-genesis-rapid .ag-charts-settings-group-title-bar,\n .ag-theme-genesis-rapid .ag-charts-data-group-title-bar,\n .ag-theme-genesis-rapid .ag-charts-format-top-level-group-title-bar,\n .ag-theme-genesis-rapid-dark .ag-charts-settings-group-title-bar,\n .ag-theme-genesis-rapid-dark .ag-charts-data-group-title-bar,\n .ag-theme-genesis-rapid-dark .ag-charts-format-top-level-group-title-bar,\n .ag-theme-genesis-rapid-light .ag-charts-settings-group-title-bar,\n .ag-theme-genesis-rapid-light .ag-charts-data-group-title-bar,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-chart-mini-thumbnail,\n .ag-theme-genesis-rapid-dark .ag-chart-mini-thumbnail,\n .ag-theme-genesis-rapid-light .ag-chart-mini-thumbnail {\n background-color: var(--ag-background-color);\n }\n\n .ag-theme-genesis-rapid .ag-chart-settings-nav-bar,\n .ag-theme-genesis-rapid-dark .ag-chart-settings-nav-bar,\n .ag-theme-genesis-rapid-light .ag-chart-settings-nav-bar {\n border-top: var(--ag-borders-secondary) var(--ag-secondary-border-color);\n }\n\n .ag-theme-genesis-rapid .ag-ltr .ag-group-title-bar-icon,\n .ag-theme-genesis-rapid-dark .ag-ltr .ag-group-title-bar-icon,\n .ag-theme-genesis-rapid-light .ag-ltr .ag-group-title-bar-icon {\n margin-right: var(--ag-grid-size);\n }\n\n .ag-theme-genesis-rapid .ag-rtl .ag-group-title-bar-icon,\n .ag-theme-genesis-rapid-dark .ag-rtl .ag-group-title-bar-icon,\n .ag-theme-genesis-rapid-light .ag-rtl .ag-group-title-bar-icon {\n margin-left: var(--ag-grid-size);\n }\n\n .ag-theme-genesis-rapid .ag-charts-format-top-level-group-toolbar,\n .ag-theme-genesis-rapid-dark .ag-charts-format-top-level-group-toolbar,\n .ag-theme-genesis-rapid-light .ag-charts-format-top-level-group-toolbar {\n margin-top: var(--ag-grid-size);\n }\n\n .ag-theme-genesis-rapid .ag-ltr .ag-charts-format-top-level-group-toolbar,\n .ag-theme-genesis-rapid-dark .ag-ltr .ag-charts-format-top-level-group-toolbar,\n .ag-theme-genesis-rapid-light .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-genesis-rapid .ag-rtl .ag-charts-format-top-level-group-toolbar,\n .ag-theme-genesis-rapid-dark .ag-rtl .ag-charts-format-top-level-group-toolbar,\n .ag-theme-genesis-rapid-light .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-genesis-rapid .ag-charts-format-sub-level-group,\n .ag-theme-genesis-rapid-dark .ag-charts-format-sub-level-group,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-charts-format-sub-level-group-title-bar,\n .ag-theme-genesis-rapid-dark .ag-charts-format-sub-level-group-title-bar,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-charts-format-sub-level-group-container,\n .ag-theme-genesis-rapid-dark .ag-charts-format-sub-level-group-container,\n .ag-theme-genesis-rapid-light .ag-charts-format-sub-level-group-container {\n padding-bottom: 0;\n }\n\n .ag-theme-genesis-rapid .ag-charts-format-sub-level-group-item:last-child,\n .ag-theme-genesis-rapid-dark .ag-charts-format-sub-level-group-item:last-child,\n .ag-theme-genesis-rapid-light .ag-charts-format-sub-level-group-item:last-child {\n margin-bottom: 0;\n }\n\n .ag-theme-genesis-rapid.ag-dnd-ghost,\n .ag-theme-genesis-rapid-dark.ag-dnd-ghost,\n .ag-theme-genesis-rapid-light.ag-dnd-ghost {\n font-size: calc(var(--ag-font-size) - 1px);\n font-weight: 700;\n }\n\n .ag-theme-genesis-rapid .ag-side-buttons,\n .ag-theme-genesis-rapid-dark .ag-side-buttons,\n .ag-theme-genesis-rapid-light .ag-side-buttons {\n width: calc(var(--ag-grid-size) * 5);\n }\n\n .ag-theme-genesis-rapid .ag-standard-button,\n .ag-theme-genesis-rapid-dark .ag-standard-button,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-standard-button:hover,\n .ag-theme-genesis-rapid-dark .ag-standard-button:hover,\n .ag-theme-genesis-rapid-light .ag-standard-button:hover {\n border-color: var(--ag-alpine-active-color);\n background-color: var(--ag-row-hover-color);\n }\n\n .ag-theme-genesis-rapid .ag-standard-button:active,\n .ag-theme-genesis-rapid-dark .ag-standard-button:active,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-standard-button:disabled,\n .ag-theme-genesis-rapid-dark .ag-standard-button:disabled,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-column-drop-vertical,\n .ag-theme-genesis-rapid-dark .ag-column-drop-vertical,\n .ag-theme-genesis-rapid-light .ag-column-drop-vertical {\n min-height: 75px;\n }\n\n .ag-theme-genesis-rapid .ag-column-drop-vertical-title-bar,\n .ag-theme-genesis-rapid-dark .ag-column-drop-vertical-title-bar,\n .ag-theme-genesis-rapid-light .ag-column-drop-vertical-title-bar {\n padding: calc(var(--ag-grid-size) * 2);\n padding-bottom: 0px;\n }\n\n .ag-theme-genesis-rapid .ag-column-drop-vertical-empty-message,\n .ag-theme-genesis-rapid-dark .ag-column-drop-vertical-empty-message,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-column-drop-empty-message,\n .ag-theme-genesis-rapid-dark .ag-column-drop-empty-message,\n .ag-theme-genesis-rapid-light .ag-column-drop-empty-message {\n color: var(--ag-foreground-color);\n opacity: 0.75;\n }\n\n .ag-theme-genesis-rapid .ag-status-bar,\n .ag-theme-genesis-rapid-dark .ag-status-bar,\n .ag-theme-genesis-rapid-light .ag-status-bar {\n font-weight: normal;\n }\n\n .ag-theme-genesis-rapid .ag-status-name-value-value,\n .ag-theme-genesis-rapid-dark .ag-status-name-value-value,\n .ag-theme-genesis-rapid-light .ag-status-name-value-value {\n font-weight: 700;\n }\n\n .ag-theme-genesis-rapid .ag-paging-number,\n .ag-theme-genesis-rapid .ag-paging-row-summary-panel-number,\n .ag-theme-genesis-rapid-dark .ag-paging-number,\n .ag-theme-genesis-rapid-dark .ag-paging-row-summary-panel-number,\n .ag-theme-genesis-rapid-light .ag-paging-number,\n .ag-theme-genesis-rapid-light .ag-paging-row-summary-panel-number {\n font-weight: 700;\n }\n\n .ag-theme-genesis-rapid .ag-column-drop-cell-button,\n .ag-theme-genesis-rapid-dark .ag-column-drop-cell-button,\n .ag-theme-genesis-rapid-light .ag-column-drop-cell-button {\n opacity: 0.5;\n }\n\n .ag-theme-genesis-rapid .ag-column-drop-cell-button:hover,\n .ag-theme-genesis-rapid-dark .ag-column-drop-cell-button:hover,\n .ag-theme-genesis-rapid-light .ag-column-drop-cell-button:hover {\n opacity: 0.75;\n }\n\n .ag-theme-genesis-rapid .ag-header-cell-menu-button:hover,\n .ag-theme-genesis-rapid .ag-side-button-button:hover,\n .ag-theme-genesis-rapid .ag-tab:hover,\n .ag-theme-genesis-rapid .ag-panel-title-bar-button:hover,\n .ag-theme-genesis-rapid .ag-header-expand-icon:hover,\n .ag-theme-genesis-rapid .ag-column-group-icons:hover,\n .ag-theme-genesis-rapid .ag-set-filter-group-icons:hover,\n .ag-theme-genesis-rapid .ag-group-expanded .ag-icon:hover,\n .ag-theme-genesis-rapid .ag-group-contracted .ag-icon:hover,\n .ag-theme-genesis-rapid .ag-chart-settings-prev:hover,\n .ag-theme-genesis-rapid .ag-chart-settings-next:hover,\n .ag-theme-genesis-rapid .ag-group-title-bar-icon:hover,\n .ag-theme-genesis-rapid .ag-column-select-header-icon:hover,\n .ag-theme-genesis-rapid .ag-floating-filter-button-button:hover,\n .ag-theme-genesis-rapid .ag-filter-toolpanel-expand:hover,\n .ag-theme-genesis-rapid .ag-chart-menu-icon:hover,\n .ag-theme-genesis-rapid .ag-chart-menu-close:hover,\n .ag-theme-genesis-rapid-dark .ag-header-cell-menu-button:hover,\n .ag-theme-genesis-rapid-dark .ag-side-button-button:hover,\n .ag-theme-genesis-rapid-dark .ag-tab:hover,\n .ag-theme-genesis-rapid-dark .ag-panel-title-bar-button:hover,\n .ag-theme-genesis-rapid-dark .ag-header-expand-icon:hover,\n .ag-theme-genesis-rapid-dark .ag-column-group-icons:hover,\n .ag-theme-genesis-rapid-dark .ag-set-filter-group-icons:hover,\n .ag-theme-genesis-rapid-dark .ag-group-expanded .ag-icon:hover,\n .ag-theme-genesis-rapid-dark .ag-group-contracted .ag-icon:hover,\n .ag-theme-genesis-rapid-dark .ag-chart-settings-prev:hover,\n .ag-theme-genesis-rapid-dark .ag-chart-settings-next:hover,\n .ag-theme-genesis-rapid-dark .ag-group-title-bar-icon:hover,\n .ag-theme-genesis-rapid-dark .ag-column-select-header-icon:hover,\n .ag-theme-genesis-rapid-dark .ag-floating-filter-button-button:hover,\n .ag-theme-genesis-rapid-dark .ag-filter-toolpanel-expand:hover,\n .ag-theme-genesis-rapid-dark .ag-chart-menu-icon:hover,\n .ag-theme-genesis-rapid-dark .ag-chart-menu-close:hover,\n .ag-theme-genesis-rapid-light .ag-header-cell-menu-button:hover,\n .ag-theme-genesis-rapid-light .ag-side-button-button:hover,\n .ag-theme-genesis-rapid-light .ag-tab:hover,\n .ag-theme-genesis-rapid-light .ag-panel-title-bar-button:hover,\n .ag-theme-genesis-rapid-light .ag-header-expand-icon:hover,\n .ag-theme-genesis-rapid-light .ag-column-group-icons:hover,\n .ag-theme-genesis-rapid-light .ag-set-filter-group-icons:hover,\n .ag-theme-genesis-rapid-light .ag-group-expanded .ag-icon:hover,\n .ag-theme-genesis-rapid-light .ag-group-contracted .ag-icon:hover,\n .ag-theme-genesis-rapid-light .ag-chart-settings-prev:hover,\n .ag-theme-genesis-rapid-light .ag-chart-settings-next:hover,\n .ag-theme-genesis-rapid-light .ag-group-title-bar-icon:hover,\n .ag-theme-genesis-rapid-light .ag-column-select-header-icon:hover,\n .ag-theme-genesis-rapid-light .ag-floating-filter-button-button:hover,\n .ag-theme-genesis-rapid-light .ag-filter-toolpanel-expand:hover,\n .ag-theme-genesis-rapid-light .ag-chart-menu-icon:hover,\n .ag-theme-genesis-rapid-light .ag-chart-menu-close:hover {\n color: var(--ag-alpine-active-color);\n }\n\n .ag-theme-genesis-rapid .ag-chart-menu-close,\n .ag-theme-genesis-rapid-dark .ag-chart-menu-close,\n .ag-theme-genesis-rapid-light .ag-chart-menu-close {\n background: var(--ag-background-color);\n }\n\n .ag-theme-genesis-rapid .ag-chart-menu-close:hover .ag-icon,\n .ag-theme-genesis-rapid-dark .ag-chart-menu-close:hover .ag-icon,\n .ag-theme-genesis-rapid-light .ag-chart-menu-close:hover .ag-icon {\n border-color: var(--ag-alpine-active-color);\n }\n\n .ag-theme-genesis-rapid .ag-chart-menu-close .ag-icon,\n .ag-theme-genesis-rapid-dark .ag-chart-menu-close .ag-icon,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-chart-settings-card-item.ag-not-selected:hover,\n .ag-theme-genesis-rapid-dark .ag-chart-settings-card-item.ag-not-selected:hover,\n .ag-theme-genesis-rapid-light .ag-chart-settings-card-item.ag-not-selected:hover {\n opacity: 0.35;\n }\n\n .ag-theme-genesis-rapid .ag-ltr .ag-panel-title-bar-button,\n .ag-theme-genesis-rapid-dark .ag-ltr .ag-panel-title-bar-button,\n .ag-theme-genesis-rapid-light .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-genesis-rapid .ag-rtl .ag-panel-title-bar-button,\n .ag-theme-genesis-rapid-dark .ag-rtl .ag-panel-title-bar-button,\n .ag-theme-genesis-rapid-light .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-genesis-rapid .ag-ltr .ag-filter-toolpanel-group-container,\n .ag-theme-genesis-rapid-dark .ag-ltr .ag-filter-toolpanel-group-container,\n .ag-theme-genesis-rapid-light .ag-ltr .ag-filter-toolpanel-group-container {\n padding-left: var(--ag-grid-size);\n }\n\n .ag-theme-genesis-rapid .ag-rtl .ag-filter-toolpanel-group-container,\n .ag-theme-genesis-rapid-dark .ag-rtl .ag-filter-toolpanel-group-container,\n .ag-theme-genesis-rapid-light .ag-rtl .ag-filter-toolpanel-group-container {\n padding-right: var(--ag-grid-size);\n }\n\n .ag-theme-genesis-rapid .ag-filter-toolpanel-instance-filter,\n .ag-theme-genesis-rapid-dark .ag-filter-toolpanel-instance-filter,\n .ag-theme-genesis-rapid-light .ag-filter-toolpanel-instance-filter {\n border: none;\n background-color: var(--ag-control-panel-background-color);\n }\n\n .ag-theme-genesis-rapid .ag-ltr .ag-filter-toolpanel-instance-filter,\n .ag-theme-genesis-rapid-dark .ag-ltr .ag-filter-toolpanel-instance-filter,\n .ag-theme-genesis-rapid-light .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-genesis-rapid .ag-rtl .ag-filter-toolpanel-instance-filter,\n .ag-theme-genesis-rapid-dark .ag-rtl .ag-filter-toolpanel-instance-filter,\n .ag-theme-genesis-rapid-light .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-genesis-rapid .ag-set-filter-list,\n .ag-theme-genesis-rapid-dark .ag-set-filter-list,\n .ag-theme-genesis-rapid-light .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\n .ag-theme-genesis-rapid .ag-layout-auto-height .ag-center-cols-clipper,\n .ag-theme-genesis-rapid .ag-layout-auto-height .ag-center-cols-container,\n .ag-theme-genesis-rapid .ag-layout-print .ag-center-cols-clipper,\n .ag-theme-genesis-rapid .ag-layout-print .ag-center-cols-container,\n .ag-theme-genesis-rapid-dark .ag-layout-auto-height .ag-center-cols-clipper,\n .ag-theme-genesis-rapid-dark .ag-layout-auto-height .ag-center-cols-container,\n .ag-theme-genesis-rapid-dark .ag-layout-print .ag-center-cols-clipper,\n .ag-theme-genesis-rapid-dark .ag-layout-print .ag-center-cols-container,\n .ag-theme-genesis-rapid-light .ag-layout-auto-height .ag-center-cols-clipper,\n .ag-theme-genesis-rapid-light .ag-layout-auto-height .ag-center-cols-container,\n .ag-theme-genesis-rapid-light .ag-layout-print .ag-center-cols-clipper,\n .ag-theme-genesis-rapid-light .ag-layout-print .ag-center-cols-container {\n min-height: 150px;\n }\n\n .ag-theme-genesis-rapid .ag-overlay-no-rows-wrapper.ag-layout-auto-height,\n .ag-theme-genesis-rapid-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height,\n .ag-theme-genesis-rapid-light .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 60px;\n }\n\n .ag-theme-genesis-rapid .ag-date-time-list-page-entry-is-current,\n .ag-theme-genesis-rapid-dark .ag-date-time-list-page-entry-is-current,\n .ag-theme-genesis-rapid-light .ag-date-time-list-page-entry-is-current {\n background-color: var(--ag-alpine-active-color);\n }\n\n .ag-theme-genesis-rapid .ag-pinned-right-cols-container,\n .ag-theme-genesis-rapid-dark .ag-pinned-right-cols-container,\n .ag-theme-genesis-rapid-light .ag-pinned-right-cols-container {\n box-shadow: var(--ag-pinned-shadow-right);\n }\n\n .ag-theme-genesis-rapid .ag-pinned-left-cols-container,\n .ag-theme-genesis-rapid-dark .ag-pinned-left-cols-container,\n .ag-theme-genesis-rapid-light .ag-pinned-left-cols-container {\n box-shadow: var(--ag-pinned-shadow-left);\n z-index: 10;\n }\n .ag-theme-genesis-rapid .ag-root-wrapper,\n .ag-theme-genesis-rapid-dark .ag-root-wrapper,\n .ag-theme-genesis-rapid-light .ag-root-wrapper {\n border: 0 !important;\n }\n`;\n","import { mixinRobotoFont } from '@genesislcap/rapid-design-system';\nimport { css } from '@microsoft/fast-element';\nimport { agThemeGenesisRapidCSS } from './ag-theme-genesis-rapid-css';\nexport const themeGenesisRapid = 'ag-theme-genesis-rapid';\nexport const agThemeGenesisRapid = css `\n ${agThemeGenesisRapidCSS}\n\n .${themeGenesisRapid} {\n ${mixinRobotoFont()}\n font-family: var(--body-font);\n }\n\n .${themeGenesisRapid} .ag-header {\n border-bottom-color: var(--neutral-stroke-rest);\n font-weight: bold;\n font-size: var(--type-ramp-base-font-size);\n }\n\n .${themeGenesisRapid} .ag-root-wrapper {\n border-radius: calc(var(--ag-border-radius) * 1px);\n border: 1px solid var(--rapid-ag-border-color);\n }\n\n .${themeGenesisRapid} .ag-cell {\n font-size: var(--type-ramp-minus-1-font-size);\n }\n`;\nexport const themeGenesisRapidDark = 'ag-theme-genesis-rapid-dark';\nexport const agThemeGenesisRapidDark = css `\n ${agThemeGenesisRapidCSS}\n\n .${themeGenesisRapidDark} {\n ${mixinRobotoFont()}\n font-family: var(--body-font);\n }\n\n .${themeGenesisRapidDark} .ag-header {\n border-bottom-color: var(--neutral-stroke-rest);\n font-weight: bold;\n font-size: var(--type-ramp-base-font-size);\n }\n\n .${themeGenesisRapidDark} .ag-cell {\n font-size: var(--type-ramp-minus-1-font-size);\n }\n\n .${themeGenesisRapidDark} .ag-root-wrapper {\n border-radius: calc(var(--ag-border-radius) * 1px);\n border: 1px solid var(--rapid-ag-border-color);\n }\n\n .${themeGenesisRapidDark} {\n color-scheme: dark;\n }\n`;\nexport const themeGenesisRapidLight = 'ag-theme-genesis-rapid-light';\nexport const agThemeGenesisRapidLight = css `\n ${agThemeGenesisRapidCSS}\n\n .${themeGenesisRapidLight} {\n ${mixinRobotoFont()}\n font-family: var(--body-font);\n }\n\n .${themeGenesisRapidLight} .ag-header {\n border-bottom-color: var(--neutral-stroke-rest);\n font-weight: bold;\n font-size: var(--type-ramp-base-font-size);\n }\n\n .${themeGenesisRapidLight} .ag-cell {\n font-size: var(--type-ramp-minus-1-font-size);\n }\n\n .${themeGenesisRapidLight} .ag-root-wrapper {\n border-radius: calc(var(--ag-border-radius) * 1px);\n border: 1px solid var(--rapid-ag-border-color);\n }\n\n .${themeGenesisRapidLight} {\n color-scheme: light;\n }\n`;\n","import { agHeadCSS, foundationGridProStyles } from '@genesislcap/grid-pro';\nimport { css } from '@microsoft/fast-element';\nimport { agThemeGenesisRapid, agThemeGenesisRapidDark, agThemeGenesisRapidLight } from './themes';\nexport const rapidGridProStyles = css `\n /* All the AG themes */\n ${foundationGridProStyles}\n ${agHeadCSS}\n\n /* 100% custom, CSS based, our own name: ag-theme-genesis-rapid */\n ${agThemeGenesisRapid}\n ${agThemeGenesisRapidDark}\n ${agThemeGenesisRapidLight}\n`;\n","import { getGridProTemplate } from '@genesislcap/grid-pro';\nexport const rapidGridProTemplate = getGridProTemplate('rapid');\n","import { parseColorHexRGB } from '@microsoft/fast-colors';\nimport { SwatchRGB } from '@microsoft/fast-components';\n// Dark theme hex values\nexport const DARK_FOREGROUND_HEX = '#cccccc';\nexport const DARK_HEADER_FOREGROUND_HEX = '#879ba6';\nexport const DARK_BACKGROUND_HEX = '#1f2126';\nexport const DARK_BORDER_HEX = '#2e3339';\nexport const DARK_ROW_HOVER_HEX = '#2b2e34';\n// Light theme hex values\nexport const LIGHT_FOREGROUND_HEX = '#000000';\nexport const LIGHT_HEADER_FOREGROUND_HEX = '#181d1f';\nexport const LIGHT_BACKGROUND_HEX = '#FFFFFF';\nexport const LIGHT_BORDER_HEX = '#babfc7';\nexport const LIGHT_ROW_HOVER_HEX = '#2196f3';\nexport const darkColors = {\n foregroundSwatch: SwatchRGB.from(parseColorHexRGB(DARK_FOREGROUND_HEX)),\n headerForegroundSwatch: SwatchRGB.from(parseColorHexRGB(DARK_HEADER_FOREGROUND_HEX)),\n backgroundSwatch: SwatchRGB.from(parseColorHexRGB(DARK_BACKGROUND_HEX)),\n borderSwatch: SwatchRGB.from(parseColorHexRGB(DARK_BORDER_HEX)),\n rowHoverSwatch: SwatchRGB.from(parseColorHexRGB(DARK_ROW_HOVER_HEX)),\n};\nexport const lightColors = {\n foregroundSwatch: SwatchRGB.from(parseColorHexRGB(LIGHT_FOREGROUND_HEX)),\n headerForegroundSwatch: SwatchRGB.from(parseColorHexRGB(LIGHT_HEADER_FOREGROUND_HEX)),\n backgroundSwatch: SwatchRGB.from(parseColorHexRGB(LIGHT_BACKGROUND_HEX)),\n borderSwatch: SwatchRGB.from(parseColorHexRGB(LIGHT_BORDER_HEX)),\n rowHoverSwatch: SwatchRGB.from(parseColorHexRGB(LIGHT_ROW_HOVER_HEX)),\n};\n","import { designTokensMap } from '@genesislcap/foundation-ui';\nimport { baseLayerLuminance, StandardLuminance } from '@microsoft/fast-components';\nimport { DesignToken } from '@microsoft/fast-foundation';\nimport { darkColors, lightColors } from './colors';\nconst { create } = DesignToken;\nexport const agThemeGenesisRapidTokens = {\n backgroundColor: create('rapid-ag-background-color').withDefault((elem) => baseLayerLuminance.getValueFor(elem) === StandardLuminance.LightMode\n ? lightColors.backgroundSwatch\n : darkColors.backgroundSwatch),\n borderColor: create('rapid-ag-border-color').withDefault((elem) => baseLayerLuminance.getValueFor(elem) === StandardLuminance.LightMode\n ? lightColors.borderSwatch\n : darkColors.borderSwatch),\n foregroundColor: create('rapid-ag-foreground-color').withDefault((elem) => baseLayerLuminance.getValueFor(elem) === StandardLuminance.LightMode\n ? lightColors.foregroundSwatch\n : darkColors.foregroundSwatch),\n headerForegroundColor: create('rapid-ag-header-foreground-color').withDefault((elem) => baseLayerLuminance.getValueFor(elem) === StandardLuminance.LightMode\n ? lightColors.headerForegroundSwatch\n : darkColors.headerForegroundSwatch),\n rowHoverColor: create('rapid-ag-row-hover-color').withDefault((elem) => baseLayerLuminance.getValueFor(elem) === StandardLuminance.LightMode\n ? lightColors.rowHoverSwatch\n : darkColors.rowHoverSwatch),\n};\n/** @internal */\nexport const deriveHeightsFromTokens = () => {\n const tokens = designTokensMap();\n if (!tokens.value)\n return null;\n const { style, space } = tokens.value.design_tokens;\n // oxlint-disable-next-line no-magic-numbers -- matches design token calc offset\n return (style.baseHeightMultiplier.$value + style.density.$value) * space.designUnit.$value - 8;\n};\n","import { __decorate } from \"tslib\";\nimport { GridPro, GridProRendererTypes, foundationGridProShadowOptions, defaultGridProConfig as foundationConfig, } from '@genesislcap/grid-pro';\nimport { baseLayerLuminance, StandardLuminance } from '@microsoft/fast-components';\nimport { observable } from '@microsoft/fast-element';\nimport { RapidNumberEditor, RapidSelectEditor, RapidMultiselectEditor, RapidDateEditor, RapidStringEditor, } from './cell-editors';\nimport { RapidEditableRenderer, RapidAgActionRenderer, RapidAgActionsMenuRenderer, RapidBooleanRenderer, RapidStatusPillRenderer, RapidAgSelectRenderer, RapidIconRenderer, } from './cell-renderers';\nimport { rapidGridProStyles as styles } from './grid-pro.styles';\nimport { rapidGridProTemplate as template } from './grid-pro.template';\nimport { deriveHeightsFromTokens } from './style';\nimport { themeGenesisRapid, themeGenesisRapidDark, themeGenesisRapidLight } from './themes';\nconst defaultAgHeight = 32;\nconst rapidThemeDark = 'ag-theme-genesis-rapid-dark';\nconst rapidThemeLight = 'ag-theme-genesis-rapid-light';\n/**\n * @tagname rapid-grid-pro\n */\nexport class RapidGridPro extends GridPro {\n constructor() {\n super(...arguments);\n this.luminanceObserver = {\n handleChange: (record) => this.handleLuminanceChange(record),\n };\n this.handleLuminanceChange = (record) => {\n const luminance = baseLayerLuminance.getValueFor(record.target);\n this.theme = luminance === StandardLuminance.DarkMode ? rapidThemeDark : rapidThemeLight;\n };\n /**\n * Sets default theme to Rapid\n * @override\n */\n this.theme = (() => {\n const luminance = localStorage.getItem('luminance');\n return luminance === 'light' ? rapidThemeLight : rapidThemeDark;\n })();\n }\n connectedCallback() {\n var _a;\n super.connectedCallback();\n const luminanceTarget = (_a = this.provider) !== null && _a !== void 0 ? _a : this;\n this.luminanceSubscription = baseLayerLuminance.subscribe(this.luminanceObserver, luminanceTarget);\n }\n disconnectedCallback() {\n var _a;\n const luminanceTarget = (_a = this.provider) !== null && _a !== void 0 ? _a : this;\n baseLayerLuminance.unsubscribe(this.luminanceObserver, luminanceTarget);\n if (this.luminanceSubscription) {\n this.luminanceSubscription.unsubscribe();\n this.luminanceSubscription = undefined;\n }\n super.disconnectedCallback();\n }\n themeChanged(oldValue, newValue) {\n if (!oldValue && newValue !== rapidThemeDark)\n return;\n super.themeChanged(oldValue, newValue);\n }\n /**\n * Handles extra Rapid configs\n * @override\n */\n set gridOptions(options) {\n var _a, _b, _c, _d;\n const nextOptions = Object.assign({}, options);\n nextOptions.components = Object.assign({ [GridProRendererTypes.action]: RapidAgActionRenderer, [GridProRendererTypes.actionsMenu]: RapidAgActionsMenuRenderer, [GridProRendererTypes.boolean]: RapidBooleanRenderer, [GridProRendererTypes.editable]: RapidEditableRenderer, [GridProRendererTypes.icon]: RapidIconRenderer, [GridProRendererTypes.select]: RapidAgSelectRenderer, [GridProRendererTypes.selectEditor]: RapidSelectEditor, [GridProRendererTypes.numberEditor]: RapidNumberEditor, [GridProRendererTypes.multiselectEditor]: RapidMultiselectEditor, [GridProRendererTypes.dateEditor]: RapidDateEditor, [GridProRendererTypes.stringEditor]: RapidStringEditor, [GridProRendererTypes.statusPill]: RapidStatusPillRenderer }, options.components);\n const isRapidTheme = this.theme === themeGenesisRapid ||\n this.theme === themeGenesisRapidDark ||\n this.theme === themeGenesisRapidLight;\n if (isRapidTheme) {\n this.headerHeight = (_b = (_a = nextOptions.headerHeight) !== null && _a !== void 0 ? _a : deriveHeightsFromTokens()) !== null && _b !== void 0 ? _b : defaultAgHeight;\n this.rowHeight = (_d = (_c = nextOptions.rowHeight) !== null && _c !== void 0 ? _c : deriveHeightsFromTokens()) !== null && _d !== void 0 ? _d : defaultAgHeight;\n }\n super.gridOptions = nextOptions;\n }\n}\n__decorate([\n observable\n], RapidGridPro.prototype, \"provider\", void 0);\n// explicitly declaring for extensibility\nexport const rapidGridProShadowOptions = foundationGridProShadowOptions;\nexport const rapidDefaultGridProConfig = foundationConfig;\nexport const rapidGridPro = RapidGridPro.compose(Object.assign({ baseName: 'grid-pro', template,\n styles, shadowOptions: rapidGridProShadowOptions }, rapidDefaultGridProConfig));\n","import { css } from '@microsoft/fast-element';\nimport { capitalCase } from 'change-case';\nimport { logger } from '../utils';\n/**\n * The available Grid Pro column filter component names.\n * @remarks Register-able via the grid `components` map; `enumFilter` is usable as a\n * `ColDef.filter` value and `enumFloatingFilter` as a `ColDef.floatingFilterComponent`.\n * @public\n */\nexport var GridProFilterTypes;\n(function (GridProFilterTypes) {\n GridProFilterTypes[\"enumFilter\"] = \"enumColumnFilter\";\n GridProFilterTypes[\"enumFloatingFilter\"] = \"enumColumnFloatingFilter\";\n})(GridProFilterTypes || (GridProFilterTypes = {}));\nconst BLANKS_LABEL = '(Blanks)';\n/**\n * Builds the value-to-label formatter for an enum filter, honouring `valueFormatter` from the\n * filter params and labelling `null` (blanks) consistently.\n * @remarks Shared by {@link EnumColumnFilter} and the floating filter so both render the same\n * labels from `ColDef.filterParams` alone.\n * @public\n */\nexport function createEnumValueLabelFormatter(params) {\n const userFormatter = params === null || params === void 0 ? void 0 : params.valueFormatter;\n const format = userFormatter\n ? (value) => String(userFormatter({\n value,\n api: params === null || params === void 0 ? void 0 : params.api,\n colDef: params === null || params === void 0 ? void 0 : params.colDef,\n column: params === null || params === void 0 ? void 0 : params.column,\n context: params === null || params === void 0 ? void 0 : params.context,\n }))\n : (value) => capitalCase(value);\n return (value) => (value === null ? BLANKS_LABEL : format(value));\n}\n/**\n * Renders an enum filter model as a short summary, e.g. `(2) Active, Pending`.\n * @public\n */\nexport function formatEnumFilterModelAsString(model, formatLabel) {\n if (!(model === null || model === void 0 ? void 0 : model.values)) {\n return '';\n }\n if (model.values.length === 0) {\n return '(None)';\n }\n return `(${model.values.length}) ${model.values.map(formatLabel).join(', ')}`;\n}\nconst CSS_PREFIX = 'gp-enum-filter';\n/**\n * Applied to each instance's shadow root; FAST shares one constructable stylesheet between them.\n */\nconst filterStyles = css `\n :host {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 6px;\n min-width: 180px;\n color: var(--ag-foreground-color, inherit);\n background: var(--ag-control-panel-background-color, transparent);\n font: inherit;\n }\n .${CSS_PREFIX}__search {\n box-sizing: border-box;\n width: 100%;\n padding: 4px 6px;\n font: inherit;\n color: inherit;\n background: var(--ag-background-color, transparent);\n border: 1px solid var(--ag-input-border-color, var(--ag-border-color, #babfc7));\n border-radius: 3px;\n outline: none;\n }\n .${CSS_PREFIX}__search:focus {\n border-color: var(\n --ag-input-focus-border-color,\n var(--ag-range-selection-border-color, #2196f3)\n );\n }\n .${CSS_PREFIX}__select-all {\n border-bottom: 1px solid var(--ag-border-color, #babfc7);\n padding-bottom: 4px;\n }\n .${CSS_PREFIX}__list {\n max-height: 210px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n }\n .${CSS_PREFIX}__item {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 3px 4px;\n cursor: pointer;\n border-radius: 3px;\n user-select: none;\n }\n .${CSS_PREFIX}__item:hover, .${CSS_PREFIX}__item:focus-within {\n background: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n }\n .${CSS_PREFIX}__item input {\n margin: 0;\n accent-color: var(--ag-checkbox-checked-color, var(--ag-range-selection-border-color, #2196f3));\n }\n .${CSS_PREFIX}__item-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .${CSS_PREFIX}__no-matches {\n padding: 4px;\n opacity: 0.7;\n }\n`;\n/**\n * An Excel AutoFilter-inspired set filter for enum columns, built on AG Grid Community only.\n * @remarks\n * Renders a searchable checkbox list of the column's enum options (from `filterParams.values`,\n * fed by the resource field metadata or a values getter — the option list is defined by the enum,\n * never scanned from row data) with a tri-state \"(Select All)\" toggle scoped to the search\n * results, a `(Blanks)` entry shown by default, human-readable labels, and arrow-key navigation —\n * applying on every change. Emits the same `{ filterType: 'set', values }` model as the\n * enterprise `agSetColumnFilter`, so it is a drop-in replacement for filter-model persistence and\n * the Genesis server-side criteria building — without requiring the enterprise `SetFilterModule`.\n * @public\n */\nexport class EnumColumnFilter {\n constructor() {\n /** Rendered value checkboxes keyed by value; `null` keys the blanks entry. */\n this.itemInputs = new Map();\n /** All selectable values, in the order the metadata/getter provided them. */\n this.allValues = [];\n /** Whether the `(Blanks)` entry is offered — on unless `filterParams.blanks` is `false`. */\n this.includeBlanks = true;\n /** Guards async values resolution against out-of-date responses and use after destroy. */\n this.valuesRequestId = 0;\n this.loading = false;\n /** Whether this instance installed the header tooltip getter (so destroy removes only its own). */\n this.ownsHeaderTooltip = false;\n /**\n * `null` while inactive (everything passes); otherwise the selected values, with `null`\n * standing for blanks. May contain values absent from `allValues` (e.g. a restored model\n * referencing rows not loaded yet) — those are preserved and rendered as extra list entries\n * so restoring a persisted model never silently narrows it, while still letting the user\n * deselect them.\n */\n this.model = null;\n this.searchTerm = '';\n }\n init(params) {\n this.params = params;\n this.formatLabel = createEnumValueLabelFormatter(params);\n this.installHeaderTooltip();\n this.createGui();\n this.resolveState();\n }\n getGui() {\n return this.eGui;\n }\n isFilterActive() {\n return this.model !== null;\n }\n doesFilterPass(params) {\n if (this.model === null) {\n return true;\n }\n const value = this.getCellValue(params.node);\n if (value === null || value === undefined || value === '') {\n return this.model.includes(null);\n }\n return this.model.includes(String(value));\n }\n getModel() {\n if (this.model === null) {\n return null;\n }\n return { filterType: 'set', values: [...this.model] };\n }\n setModel(model) {\n this.model = (model === null || model === void 0 ? void 0 : model.values) ? [...model.values] : null;\n this.syncCheckedStates();\n }\n getModelAsString(model) {\n return formatEnumFilterModelAsString(model !== null && model !== void 0 ? model : this.getModel(), this.formatLabel);\n }\n /** Clears the filter back to inactive and notifies the grid; used by the floating filter. */\n clear() {\n if (this.model === null) {\n return;\n }\n this.model = null;\n this.syncCheckedStates();\n this.params.filterChangedCallback();\n }\n /**\n * Surfaces the active selection in the column's header tooltip (alongside AG's native header\n * filter icon), so the filter state is inspectable from the header without the layout-changing\n * floating filter row. Installed as a `headerTooltipValueGetter`, which AG evaluates lazily on\n * hover — no header refresh needed when the model changes. While inactive it returns\n * `undefined`, which falls back to the consumer's own `headerTooltip`; when active, that\n * tooltip is kept as the prefix. A consumer-provided getter is left untouched.\n */\n installHeaderTooltip() {\n const colDef = this.params.colDef;\n if (!colDef || colDef.headerTooltipValueGetter) {\n return;\n }\n this.ownsHeaderTooltip = true;\n colDef.headerTooltipValueGetter = () => {\n const summary = formatEnumFilterModelAsString(this.getModel(), this.formatLabel);\n if (!summary) {\n return undefined;\n }\n return colDef.headerTooltip\n ? `${colDef.headerTooltip} — Filtered: ${summary}`\n : `Filtered: ${summary}`;\n };\n }\n afterGuiAttached(params) {\n this.searchTerm = '';\n this.eSearch.value = '';\n this.renderList();\n if (!(params === null || params === void 0 ? void 0 : params.suppressFocus)) {\n this.eSearch.focus();\n }\n }\n refresh(params) {\n this.params = params;\n this.formatLabel = createEnumValueLabelFormatter(params);\n // A refresh can carry a brand-new colDef object without the tooltip getter.\n this.installHeaderTooltip();\n this.resolveState();\n return true;\n }\n destroy() {\n var _a;\n this.valuesRequestId += 1;\n // Remove the tooltip getter this instance installed (never a consumer's): its closure holds\n // the instance, and a successor filter created for the same colDef object would otherwise\n // early-return in installHeaderTooltip and leave the header reporting the dead instance's\n // frozen model.\n if (this.ownsHeaderTooltip) {\n delete this.params.colDef\n .headerTooltipValueGetter;\n this.ownsHeaderTooltip = false;\n }\n (_a = this.eGui) === null || _a === void 0 ? void 0 : _a.remove();\n }\n /** Resolves the option list (values array or getter) and re-renders. */\n resolveState() {\n var _a;\n // Bound the loading flag's lifetime to this resolution attempt: a refresh() can supersede a\n // pending async getter with synchronous values, and the superseded apply() never runs.\n this.loading = false;\n this.includeBlanks = this.params.blanks !== false;\n const provided = this.params.values;\n if (typeof provided === 'function') {\n this.loadAsyncValues(provided);\n return;\n }\n if (Array.isArray(provided)) {\n this.allValues = [...new Set(provided.map(String))];\n }\n else {\n // An enum's option list is defined by its metadata, never derived from row data — a filter\n // without values can only offer the blanks entry.\n logger.warn(`EnumColumnFilter on column '${(_a = this.params.colDef) === null || _a === void 0 ? void 0 : _a.field}' has no ` +\n 'filterParams.values; provide the enum options (metadata enumOptions, an array, or a getter).');\n this.allValues = [];\n }\n this.renderList();\n }\n loadAsyncValues(getValues) {\n this.valuesRequestId += 1;\n const requestId = this.valuesRequestId;\n let applied = false;\n const apply = (values) => {\n if (applied || requestId !== this.valuesRequestId) {\n return;\n }\n applied = true;\n this.loading = false;\n this.allValues = [...new Set((values !== null && values !== void 0 ? values : []).map(String))];\n this.renderList();\n };\n let result;\n try {\n result = getValues({ colDef: this.params.colDef, api: this.params.api, success: apply });\n }\n catch (_a) {\n apply([]);\n return;\n }\n if (applied) {\n // The getter resolved synchronously through `success`.\n return;\n }\n if (Array.isArray(result)) {\n apply(result);\n return;\n }\n if (result !== undefined) {\n const thenable = result;\n // A getter typed away from the contract can return neither an array, a thenable, nor\n // undefined at runtime — treat that as no values rather than crashing on `.then`.\n if (typeof thenable.then !== 'function') {\n apply([]);\n return;\n }\n this.loading = true;\n this.renderList();\n thenable.then(apply, () => apply([]));\n return;\n }\n // No return value: AG set-filter style — wait for the `success` callback.\n this.loading = true;\n this.renderList();\n }\n /** The raw field read covers params without `getValue` (e.g. stripped-down test params). */\n getCellValue(node) {\n var _a, _b;\n const params = this.params;\n if (typeof params.getValue === 'function') {\n return params.getValue(node);\n }\n const field = (_a = params.colDef) === null || _a === void 0 ? void 0 : _a.field;\n return field ? (_b = node === null || node === void 0 ? void 0 : node.data) === null || _b === void 0 ? void 0 : _b[field] : undefined;\n }\n /** Model values that are not in the option list, e.g. from a restored persisted model. */\n extraModelValues() {\n var _a;\n return ((_a = this.model) !== null && _a !== void 0 ? _a : []).filter((value) => value !== null && !this.allValues.includes(value));\n }\n /**\n * All offered entry keys: the option list, then any off-list model values (rendered so they can\n * be deselected rather than being stuck in the model forever), then `null` (blanks) last like\n * Excel. The blanks entry is also offered whenever the model references it, so a restored\n * blanks selection stays visible and removable even before blank rows are detected.\n */\n allKeys() {\n var _a;\n const keys = [...this.allValues, ...this.extraModelValues()];\n if (this.includeBlanks || ((_a = this.model) === null || _a === void 0 ? void 0 : _a.includes(null))) {\n keys.push(null);\n }\n return keys;\n }\n isSelected(key) {\n return this.model === null || this.model.includes(key);\n }\n visibleKeys() {\n const keys = this.allKeys();\n if (!this.searchTerm) {\n return keys;\n }\n const term = this.searchTerm.toLowerCase();\n return keys.filter((key) => this.formatLabel(key).toLowerCase().includes(term) ||\n (key !== null && key.toLowerCase().includes(term)));\n }\n /**\n * Applies a new selection. Collapses back to the inactive (`null`) model when every offered\n * entry is selected, so a fully re-selected filter reports inactive exactly like the\n * enterprise set filter. Selected values beyond the offered keys don't restrict anything an\n * inactive filter would pass, so a superset selection collapses too.\n */\n updateSelection(selected) {\n const isAll = this.allKeys().every((key) => selected.has(key));\n this.model = isAll ? null : [...selected];\n this.syncCheckedStates();\n this.params.filterChangedCallback();\n }\n currentSelection() {\n return new Set(this.allKeys().filter((key) => this.isSelected(key)));\n }\n toggleValue(key, checked) {\n const selected = this.currentSelection();\n if (checked) {\n selected.add(key);\n }\n else {\n selected.delete(key);\n }\n this.updateSelection(selected);\n }\n /** Select-all acts on the searched subset only, mirroring Excel's AutoFilter. */\n toggleAllVisible(checked) {\n const visible = this.visibleKeys();\n const selected = this.currentSelection();\n visible.forEach((key) => (checked ? selected.add(key) : selected.delete(key)));\n this.updateSelection(selected);\n }\n createGui() {\n this.eGui = document.createElement('div');\n this.eGui.className = CSS_PREFIX;\n // Content lives in a shadow root so the FAST stylesheet travels with the element wherever\n // AG attaches it — one adopted stylesheet shared across instances, nothing injected into\n // foreign roots. Keydown is listened to inside the root, where targets are not retargeted.\n this.eRoot = this.eGui.attachShadow({ mode: 'open' });\n filterStyles.addStylesTo(this.eRoot);\n this.eRoot.addEventListener('keydown', (event) => this.handleKeyDown(event));\n this.eSearch = document.createElement('input');\n this.eSearch.type = 'text';\n this.eSearch.className = `${CSS_PREFIX}__search`;\n this.eSearch.placeholder = 'Search';\n this.eSearch.setAttribute('aria-label', 'Search filter values');\n this.eSearch.addEventListener('input', () => {\n this.searchTerm = this.eSearch.value.trim();\n this.renderList();\n });\n this.eRoot.appendChild(this.eSearch);\n const selectAllItem = this.createItem('(Select All)');\n selectAllItem.label.classList.add(`${CSS_PREFIX}__select-all`);\n this.eSelectAll = selectAllItem.input;\n this.eSelectAll.addEventListener('change', () => {\n this.toggleAllVisible(this.eSelectAll.checked);\n });\n this.eRoot.appendChild(selectAllItem.label);\n this.eList = document.createElement('div');\n this.eList.className = `${CSS_PREFIX}__list`;\n this.eRoot.appendChild(this.eList);\n }\n createItem(text) {\n const label = document.createElement('label');\n label.className = `${CSS_PREFIX}__item`;\n const input = document.createElement('input');\n input.type = 'checkbox';\n label.appendChild(input);\n const span = document.createElement('span');\n span.className = `${CSS_PREFIX}__item-label`;\n span.textContent = text;\n span.title = text;\n label.appendChild(span);\n return { label, input };\n }\n /** Rebuilds the value list; used when the values or the search term change. */\n renderList() {\n if (!this.eList) {\n return;\n }\n this.eList.replaceChildren();\n this.itemInputs.clear();\n const visible = this.visibleKeys();\n if (this.loading || visible.length === 0) {\n const empty = document.createElement('div');\n empty.className = `${CSS_PREFIX}__no-matches`;\n empty.textContent = this.loading ? 'Loading…' : 'No matches';\n this.eList.appendChild(empty);\n }\n if (!this.loading) {\n visible.forEach((key) => {\n const { label, input } = this.createItem(this.formatLabel(key));\n label.dataset.value = key === null ? '' : key;\n input.addEventListener('change', () => this.toggleValue(key, input.checked));\n this.itemInputs.set(key, input);\n this.eList.appendChild(label);\n });\n }\n this.syncCheckedStates();\n }\n /** Refreshes checkbox states in place, preserving DOM (and keyboard focus) on toggles. */\n syncCheckedStates() {\n if (!this.eList) {\n return;\n }\n let selectedCount = 0;\n this.itemInputs.forEach((input, key) => {\n input.checked = this.isSelected(key);\n if (input.checked) {\n selectedCount += 1;\n }\n });\n const visibleCount = this.itemInputs.size;\n this.eSelectAll.checked = visibleCount > 0 && selectedCount === visibleCount;\n this.eSelectAll.indeterminate = selectedCount > 0 && selectedCount < visibleCount;\n this.eSelectAll.disabled = visibleCount === 0;\n }\n focusables() {\n return [this.eSearch, this.eSelectAll, ...this.itemInputs.values()];\n }\n /**\n * Arrow keys walk search box, \"(Select All)\" and the visible entries; Enter toggles the\n * focused entry (Space is the checkbox's native toggle). Tab wraps within the popup: AG's own\n * popup focus trap collects focusable elements with `querySelectorAll`, which does not pierce\n * the shadow root, so the trap must live here.\n */\n handleKeyDown(event) {\n const target = event.target;\n if (event.key === 'Enter' && target instanceof HTMLInputElement && target.type === 'checkbox') {\n event.preventDefault();\n target.checked = !target.checked;\n target.dispatchEvent(new Event('change'));\n return;\n }\n if (event.key === 'Tab') {\n const focusables = this.focusables();\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n if (event.shiftKey && target === first) {\n event.preventDefault();\n last.focus();\n }\n else if (!event.shiftKey && target === last) {\n event.preventDefault();\n first.focus();\n }\n return;\n }\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') {\n return;\n }\n const focusables = this.focusables();\n const currentIndex = focusables.indexOf(target);\n if (currentIndex === -1) {\n return;\n }\n const nextIndex = event.key === 'ArrowDown' ? currentIndex + 1 : currentIndex - 1;\n if (nextIndex < 0 || nextIndex >= focusables.length) {\n return;\n }\n event.preventDefault();\n focusables[nextIndex].focus();\n }\n}\n","import { css } from '@microsoft/fast-element';\nimport { createEnumValueLabelFormatter, formatEnumFilterModelAsString, } from './enum-column.filter';\nconst INACTIVE_SUMMARY = 'All';\nconst CSS_PREFIX = 'gp-enum-floating-filter';\n/**\n * Applied to each instance's shadow root; FAST shares one constructable stylesheet between them.\n */\nconst floatingFilterStyles = css `\n :host {\n display: flex;\n align-items: center;\n gap: 4px;\n width: 100%;\n min-width: 0;\n color: var(--ag-foreground-color, inherit);\n font: inherit;\n }\n .${CSS_PREFIX}__summary {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n opacity: 0.85;\n }\n .${CSS_PREFIX}__summary--inactive {\n opacity: 0.5;\n }\n .${CSS_PREFIX}__clear {\n flex: none;\n border: none;\n background: none;\n color: inherit;\n font: inherit;\n line-height: 1;\n padding: 2px 4px;\n cursor: pointer;\n border-radius: 3px;\n opacity: 0.7;\n }\n .${CSS_PREFIX}__clear:hover {\n opacity: 1;\n background: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n }\n`;\n/**\n * Floating filter companion for {@link EnumColumnFilter}: shows the current selection as a\n * compact summary (e.g. `(2) Active, Pending`), opens the parent filter on click, and offers a\n * one-click clear. Set via `ColDef.floatingFilterComponent` (see\n * {@link GridProFilterTypes.enumFloatingFilter}); shown when the column enables `floatingFilter`.\n * @public\n */\nexport class EnumColumnFloatingFilter {\n init(params) {\n var _a, _b;\n this.params = params;\n this.formatLabel = createEnumValueLabelFormatter(params.filterParams);\n this.eGui = document.createElement('div');\n this.eGui.className = CSS_PREFIX;\n // Content lives in a shadow root so the FAST stylesheet travels with the element wherever AG\n // attaches it — floating filters get no attach hook, so styles cannot be injected on attach.\n this.eRoot = this.eGui.attachShadow({ mode: 'open' });\n floatingFilterStyles.addStylesTo(this.eRoot);\n this.eSummary = document.createElement('span');\n this.eSummary.className = `${CSS_PREFIX}__summary`;\n this.eSummary.setAttribute('role', 'button');\n this.eSummary.tabIndex = 0;\n this.eSummary.addEventListener('click', () => this.params.showParentFilter());\n this.eSummary.addEventListener('keydown', (event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.params.showParentFilter();\n }\n });\n this.eRoot.appendChild(this.eSummary);\n this.eClear = document.createElement('button');\n this.eClear.type = 'button';\n this.eClear.className = `${CSS_PREFIX}__clear`;\n this.eClear.textContent = '✕';\n this.eClear.setAttribute('aria-label', 'Clear filter');\n this.eClear.title = 'Clear filter';\n this.eClear.hidden = true;\n this.eClear.addEventListener('click', () => {\n this.params.parentFilterInstance((instance) => {\n var _a, _b;\n (_b = (_a = instance).clear) === null || _b === void 0 ? void 0 : _b.call(_a);\n });\n });\n this.eRoot.appendChild(this.eClear);\n this.onParentModelChanged(((_b = (_a = params.currentParentModel) === null || _a === void 0 ? void 0 : _a.call(params)) !== null && _b !== void 0 ? _b : null));\n }\n getGui() {\n return this.eGui;\n }\n onParentModelChanged(model) {\n // Real text rather than CSS-generated content, so the inactive state is not silent for\n // screen readers.\n const summary = formatEnumFilterModelAsString(model, this.formatLabel) || INACTIVE_SUMMARY;\n this.eSummary.textContent = summary;\n this.eSummary.title = summary;\n this.eSummary.classList.toggle(`${CSS_PREFIX}__summary--inactive`, !model);\n this.eClear.hidden = !model;\n }\n destroy() {\n var _a;\n (_a = this.eGui) === null || _a === void 0 ? void 0 : _a.remove();\n }\n}\n","import { __awaiter } from \"tslib\";\nimport { MessageType, } from '@genesislcap/foundation-comms';\nimport { logger } from '../utils';\nimport { filterDataserverResult } from './dataserver-result.filter';\nimport { DeliveredBlockLedger } from './delivered-block.ledger';\nimport { convertFilterModelToCriteria } from './filter.utils';\n/**\n * Converts an AG Grid sort model to the Genesis ORDER_BY form the resource expects.\n * @remarks The two transports order rows differently, matching what the SSRM datasources send:\n * - REQUEST_SERVER takes the column directly with the direction inline (`NAME DESC`) and no\n * REVERSE flag; the column does not have to belong to an index.\n * - DATASERVER takes the name of an INDEX containing the column, plus REVERSE. A column outside\n * every index cannot be ordered server-side, and neither can an unnamed index.\n * @param sortModel - The AG Grid sort model\n * @param resourceIndexes - Available indexes for sorting (DATASERVER)\n * @param isRequestServer - Whether the resource is a REQUEST_SERVER\n * @returns Object with orderBy and reverse properties\n */\nexport function convertSortModelToOrderBy(sortModel, resourceIndexes, isRequestServer = false) {\n if (!sortModel || sortModel.length === 0) {\n return { orderBy: null, reverse: false };\n }\n const sortColumn = sortModel[0]; // Only support single column sort for infinite model\n const colId = sortColumn.colId;\n const descending = sortColumn.sort === 'desc';\n if (isRequestServer) {\n return { orderBy: `${colId} ${descending ? 'DESC' : 'ASC'}`, reverse: false };\n }\n // Find the index that contains this column. An index with no NAME cannot be named in\n // ORDER_BY, so it is no use for sorting even when it covers the column.\n for (const [indexName, fields] of resourceIndexes.entries()) {\n if (indexName && fields.includes(colId)) {\n return {\n orderBy: indexName,\n reverse: descending,\n };\n }\n }\n // Column not in any usable index - carry on unsorted rather than sending an ORDER_BY the\n // server will reject, which would empty the grid.\n logger.warn(`Column '${colId}' is not part of any named INDEX. Server-side sorting is not available for this column.`);\n return { orderBy: null, reverse: false };\n}\n/**\n * Turns whatever a rejected resource read produced into a message worth showing.\n * @remarks Genesis rejects with a message object (`{ ERROR: [{ TEXT }], MESSAGE_TYPE }`), not an\n * `Error`, so stringifying it naively yields \"[object Object]\" in the grid's error dialog.\n * @internal\n */\nexport function describeResourceError(error) {\n var _a, _b, _c;\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n const details = error;\n for (const candidate of [details, details === null || details === void 0 ? void 0 : details.receivedMessage]) {\n const texts = (_a = candidate === null || candidate === void 0 ? void 0 : candidate.ERROR) === null || _a === void 0 ? void 0 : _a.map((entry) => entry === null || entry === void 0 ? void 0 : entry.TEXT).filter(Boolean);\n if (texts === null || texts === void 0 ? void 0 : texts.length) {\n return texts.join('; ');\n }\n }\n if (typeof (details === null || details === void 0 ? void 0 : details.message) === 'string' && details.message) {\n return details.message;\n }\n const messageType = (_b = details === null || details === void 0 ? void 0 : details.MESSAGE_TYPE) !== null && _b !== void 0 ? _b : (_c = details === null || details === void 0 ? void 0 : details.receivedMessage) === null || _c === void 0 ? void 0 : _c.MESSAGE_TYPE;\n if (messageType) {\n return messageType;\n }\n try {\n return JSON.stringify(error);\n }\n catch (_d) {\n return String(error);\n }\n}\n/**\n * AG Grid Infinite Row Model datasource implementation.\n * This class implements the IDatasource interface required by AG Grid's Infinite Row Model.\n */\nexport class GenesisInfiniteDatasource {\n constructor(options) {\n var _a;\n /** The `reverse` attribute, applied alongside `defaultOrderBy` on DATASERVER. @internal */\n this.defaultReverse = false;\n /**\n * Bumped whenever the rows this datasource was reading for are dropped (a teardown, or a\n * filter/sort change). A REQUEST_SERVER reply that resolves for an earlier generation was read\n * for a cache the grid no longer has.\n * @remarks Deliberately a generation rather than a \"destroyed\" flag: AG Grid calls `destroy()`\n * on the datasource bean it then keeps using (`InfiniteRowModel.start()` re-applies the\n * `datasource` grid option, and `setDatasource` destroys the previous one first), so a sticky\n * flag would disable the instance the grid is still driving.\n * @internal\n */\n this.loadGeneration = 0;\n /**\n * Set once the host has dropped this instance for a replacement (a criteria change, a resource\n * change, teardown). AG Grid keeps calling the bean it was given until the new one is attached,\n * and its purge re-requests blocks immediately, so without this the replaced instance keeps\n * reading with its captured criteria and reporting those rows to the host as delivered.\n * @remarks Distinct from `destroy()`, which AG Grid itself calls on a bean it then keeps using;\n * only the host calls `detach()`, and only when it will never use this instance again.\n * @internal\n */\n this.detached = false;\n /**\n * Session-cumulative row cache, keyed by row id. A Map preserves insertion order, so the\n * cache can be sliced by block range; Genesis splits batches across messages and later\n * batches append.\n * @internal\n */\n this.rowData = new Map();\n /** Blocks waiting for the cache to reach their range. @internal */\n this.pendingBlocks = new Set();\n /** Highest absolute row index already handed to AG Grid. @internal */\n this.deliveredRowCount = 0;\n /** False until the first message arrives on the subscription. @internal */\n this.streamStarted = false;\n /** Whether a MORE_ROWS request is awaiting its batch. @internal */\n this.moreRowsInFlight = false;\n /** Whether the current subscription was opened with a CRITERIA_MATCH. @internal */\n this.hasCriteria = false;\n /** So the MAX_VIEW truncation warning is logged once per subscription. @internal */\n this.viewTruncationWarned = false;\n this.createSnapshotFunc = options.createSnapshotFunc;\n this.createDataserverStreamFunc = options.createDataserverStreamFunc;\n this.getMoreRowsFunc = options.getMoreRowsFunc;\n this.onRowsInvalidatedFunc = options.onRowsInvalidatedFunc;\n this.onRowsUpdatedFunc = options.onRowsUpdatedFunc;\n this.onRowsDeliveredFunc = options.onRowsDeliveredFunc;\n this.onRowsWithdrawnFunc = options.onRowsWithdrawnFunc;\n this.onRowCacheResetFunc = options.onRowCacheResetFunc;\n this.errorHandlerFunc = options.errorHandlerFunc;\n this.ledger = new DeliveredBlockLedger(options.rowId);\n this.resourceName = options.resourceName;\n this.resourceParams = Object.assign({}, options.resourceParams);\n this.resourceIndexes = options.resourceIndexes;\n this.resourceColDefs = options.resourceColDefs;\n this.maxRows = options.maxRows;\n this.rowId = options.rowId;\n this.baseCriteria = options.baseCriteria || '';\n this.isRequestServer = options.isRequestServer;\n this.defaultOrderBy = options.defaultOrderBy || undefined;\n this.defaultReverse = (_a = options.defaultReverse) !== null && _a !== void 0 ? _a : false;\n this.onNoDataAvailableFunc = options.onNoDataAvailableFunc;\n this.onDataAvailableFunc = options.onDataAvailableFunc;\n }\n /**\n * Builds request parameters for REQUEST_SERVER resources.\n * Uses OFFSET-based pagination.\n */\n buildRequestServerParams(startRow, criteria, sortConfig) {\n const requestParams = Object.assign({}, this.resourceParams);\n // The captured resourceParams object is reused across getRows calls, so its nested DETAILS\n // must not be mutated: a CRITERIA_MATCH/ORDER_BY written into it would keep being sent after\n // the user clears the filter or sort. Copy it, and remove stale keys rather than leaving them.\n requestParams.DETAILS = Object.assign({}, requestParams.DETAILS);\n requestParams.DETAILS.MAX_ROWS = this.maxRows;\n requestParams.DETAILS.OFFSET = startRow;\n if (criteria) {\n requestParams.DETAILS.CRITERIA_MATCH = criteria;\n }\n else {\n delete requestParams.DETAILS.CRITERIA_MATCH;\n }\n // ORDER_BY already carries the direction for REQUEST_SERVER, so no REVERSE is sent.\n // Fall back to the row id when the user has not sorted: OFFSET paging is only correct over a\n // stable order, and an unsorted req/rep returns rows in an unspecified order that can differ\n // between requests, so consecutive blocks overlap or skip rows. The row id (RECORD_ID by\n // default) is unique and always sortable, giving every page a deterministic window.\n requestParams.DETAILS.ORDER_BY = sortConfig.orderBy || `${this.rowId} ASC`;\n return requestParams;\n }\n /**\n * Builds the DATA_LOGON parameters for the DATASERVER subscription.\n * @remarks No VIEW_NUMBER is sent: any non-zero value switches the server into pagination\n * mode, which is not safe to combine with CRITERIA_MATCH (see dataserverStream). MAX_VIEW is\n * passed through from the resource params and still caps how many rows one view will hold.\n */\n buildDataserverLogonParams(criteria, sortConfig) {\n const params = Object.assign({}, this.resourceParams);\n params.MAX_ROWS = this.maxRows;\n delete params.VIEW_NUMBER;\n if (criteria) {\n params.CRITERIA_MATCH = criteria;\n }\n else {\n delete params.CRITERIA_MATCH;\n }\n if (sortConfig.orderBy) {\n params.ORDER_BY = sortConfig.orderBy;\n params.REVERSE = sortConfig.reverse;\n }\n else {\n delete params.ORDER_BY;\n delete params.REVERSE;\n }\n return params;\n }\n /**\n * Determines the last row index from the server response.\n * @remarks ROWS_COUNT is only trusted when no criteria is in effect - the same rule the\n * DATASERVER path applies to serverRowsCount - because a server-reported total may ignore\n * CRITERIA_MATCH, which would give a filtered grid a scrollbar over rows that never arrive.\n * Under a filter the count stays open-ended until MORE_ROWS reports the end.\n */\n getLastRow(result, startRow, rowDataLength, hasCriteria) {\n if ('MORE_ROWS' in result && result.MORE_ROWS === false) {\n return startRow + rowDataLength;\n }\n if (!hasCriteria && 'ROWS_COUNT' in result && typeof result.ROWS_COUNT === 'number') {\n return result.ROWS_COUNT;\n }\n return -1;\n }\n /**\n * Called by AG Grid when more rows are needed.\n * Implements the IDatasource.getRows method.\n */\n getRows(params) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n // The host has replaced this instance; the grid is only still asking because the replacement\n // has not been attached yet. Reading would use this instance's captured criteria and report\n // rows the grid will drop. fail() releases AG Grid's request slot for the new datasource.\n if (this.detached) {\n logger.debug('Infinite getRows ignored: the datasource was detached by its host');\n params.failCallback();\n return;\n }\n logger.debug('Infinite getRows called', {\n startRow: params.startRow,\n endRow: params.endRow,\n isRequestServer: this.isRequestServer,\n });\n try {\n // Build filter criteria\n const filterCriteria = convertFilterModelToCriteria(params.filterModel, this.resourceColDefs);\n const combinedCriteria = [this.baseCriteria, filterCriteria].filter(Boolean).join(' && ');\n // Build sort config\n const sortConfig = this.resolveSortConfig(params.sortModel);\n this.noteRequestKey(combinedCriteria, sortConfig);\n // DATASERVER pages through a persistent subscription; REQUEST_SERVER is stateless and\n // pages by OFFSET on a fresh request each time.\n if (!this.isRequestServer) {\n this.getDataserverRows(params, combinedCriteria, sortConfig);\n return;\n }\n const requestParams = this.buildRequestServerParams(params.startRow, combinedCriteria, sortConfig);\n logger.debug('Infinite datasource request params', requestParams);\n // Taken after noteRequestKey, so this is the generation the request belongs to: only a\n // reset that lands while it is in flight invalidates the reply.\n const generation = this.loadGeneration;\n const result = yield this.createSnapshotFunc(requestParams);\n // The rows this block was read for have since been dropped (a filter or sort change): AG\n // Grid has purged the block, and the host must not learn of rows the grid will never hold.\n // The block is still failed rather than left hanging - AG Grid caps concurrent requests\n // and frees a slot only on success or fail, so a silent return stops it ever asking again.\n if (generation !== this.loadGeneration) {\n logger.debug('Infinite REQUEST_SERVER reply discarded: the block cache was reset');\n params.failCallback();\n return;\n }\n if (!result) {\n params.failCallback();\n return;\n }\n // A rejected request answers with a message, not a REPLY. Settling it as an empty block\n // would tell the grid the dataset simply ends here, so the user sees a short grid with no\n // indication that anything failed.\n const messageType = result.MESSAGE_TYPE;\n if (messageType === MessageType.LOGOFF_ACK || messageType === MessageType.MSG_NACK) {\n const message = messageType === MessageType.LOGOFF_ACK\n ? `Connection lost to ${this.resourceName}`\n : `Request rejected by ${this.resourceName}`;\n logger.error(`Infinite REQUEST_SERVER block failed: ${message}`, result);\n (_a = this.errorHandlerFunc) === null || _a === void 0 ? void 0 : _a.call(this, message, 'connection');\n params.failCallback();\n return;\n }\n if ('REPLY' in result && Array.isArray(result.REPLY)) {\n const rowData = result.REPLY;\n const lastRow = this.getLastRow(result, params.startRow, rowData.length, Boolean(combinedCriteria));\n params.successCallback(rowData, lastRow);\n this.deliverRows(params.startRow, rowData);\n this.notifyDataAvailability(params.startRow, rowData.length);\n return;\n }\n // Fallback - empty result\n params.successCallback([], params.startRow);\n this.notifyDataAvailability(params.startRow, 0);\n }\n catch (error) {\n logger.error('Error in infinite getRows:', error);\n (_b = this.errorHandlerFunc) === null || _b === void 0 ? void 0 : _b.call(this, describeResourceError(error), 'unknown');\n params.failCallback();\n }\n });\n }\n /**\n * Loads one AG Grid block from a DATASERVER resource.\n * @remarks Blocks are served out of the session-cumulative cache. When the cache does not yet\n * reach the block, MORE_ROWS pulls the next batch and the block waits; several blocks can be\n * outstanding at once, and each settles as soon as the cache covers its range.\n * @internal\n */\n /**\n * Notes the CRITERIA_MATCH/ORDER_BY a block is being read with. A change means AG Grid has\n * purged its cache and restarted from block 0: on DATASERVER the subscription is re-opened\n * (those are DATA_LOGON parameters), and on both transports the host is told the rows it held\n * are gone, so the rows read under the new filter or sort are reported as new.\n * @internal\n */\n /**\n * The sort a block is read with: the grid's own sort model when the user has sorted, and the\n * `order-by` / `reverse` attributes otherwise.\n * @remarks Without the fallback those attributes reached the comms datasource but were then\n * dropped, because the logon builder removes ORDER_BY and REVERSE whenever the grid is\n * unsorted. Sorting from the grid still wins, as it is the more specific instruction.\n * @internal\n */\n resolveSortConfig(sortModel) {\n const fromGrid = convertSortModelToOrderBy(sortModel, this.resourceIndexes, this.isRequestServer);\n if (fromGrid.orderBy || !this.defaultOrderBy) {\n return fromGrid;\n }\n return { orderBy: this.defaultOrderBy, reverse: this.defaultReverse };\n }\n noteRequestKey(criteria, sortConfig) {\n var _a;\n const key = JSON.stringify(Object.assign({ criteria }, sortConfig));\n // Tracked separately from `subscriptionKey`, which a teardown clears: `reset()` tears the\n // subscription down on every structural push, and a filter change landing between that and\n // the next block read would otherwise look like the very first request - leaving the host\n // holding every row read under the old filter.\n if (this.rowCacheKey !== undefined && this.rowCacheKey !== key) {\n // Whatever is in flight was read for the old filter or sort.\n this.loadGeneration += 1;\n this.ledger.clear();\n (_a = this.onRowCacheResetFunc) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n this.rowCacheKey = key;\n // CRITERIA_MATCH and ORDER_BY are DATA_LOGON parameters, so a change needs a fresh\n // subscription. A teardown has already left `subscriptionKey` undefined.\n if (!this.isRequestServer &&\n this.subscriptionKey !== undefined &&\n this.subscriptionKey !== key) {\n this.teardownDataserverSubscription();\n }\n this.subscriptionKey = key;\n }\n getDataserverRows(params, criteria, sortConfig) {\n if (!this.createDataserverStreamFunc || !this.getMoreRowsFunc) {\n logger.error('Infinite DATASERVER paging requires a stream and a getMoreRows function');\n params.failCallback();\n return;\n }\n const startRow = Number.isFinite(Number(params.startRow)) ? Number(params.startRow) : 0;\n const endRow = Number.isFinite(Number(params.endRow))\n ? Number(params.endRow)\n : startRow + this.maxRows;\n const block = {\n startRow,\n endRow,\n settled: false,\n success: params.successCallback,\n fail: params.failCallback,\n };\n // The cache may already cover this block - one batch can span several blocks, and blocks are\n // re-requested after a purge - and once the stream has ended nothing more will arrive.\n if (this.streamStarted && (this.rowData.size >= endRow || this.moreRows === false)) {\n this.settleBlock(block, true);\n return;\n }\n // Safety valve: never leave a block pending forever if the stream goes quiet.\n block.timer = this.createBlockTimer(block);\n this.pendingBlocks.add(block);\n if (!this.dataserverStream) {\n const logonParams = this.buildDataserverLogonParams(criteria, sortConfig);\n this.hasCriteria = Boolean(logonParams.CRITERIA_MATCH);\n this.dataserverStream = this.createDataserverStreamFunc(logonParams);\n this.dataserverStreamSubscription = this.dataserverStream.subscribe((message) => this.handleDataserverMessage(message));\n return;\n }\n this.pumpMoreRows();\n }\n /**\n * Keeps pulling batches while blocks are still waiting.\n * @remarks Sequential paging cannot seek, so reaching a block the cache does not cover means\n * walking to it one batch at a time. One request is kept in flight; each arriving batch drives\n * the next, until the blocks are covered or the stream ends.\n * @internal\n */\n pumpMoreRows() {\n if (this.moreRowsInFlight || this.moreRows === false || this.pendingBlocks.size === 0) {\n return;\n }\n // No subscription, or none that has identified itself yet: a MORE_ROWS against a stale\n // SOURCE_REF is answered with MSG_NACK 404 \"Dataserver subscription does not exist\", which\n // then fails every waiting block.\n if (!this.dataserverStream || !this.dataserverStreamSubscription || !this.sourceRef) {\n return;\n }\n this.moreRowsInFlight = true;\n void this.requestMoreRows();\n }\n /**\n * Asks the server for the next batch of rows on the current subscription.\n * @internal\n */\n requestMoreRows() {\n return __awaiter(this, void 0, void 0, function* () {\n // The subscription can be torn down between scheduling and running this.\n if (!this.dataserverStreamSubscription || !this.sourceRef) {\n this.moreRowsInFlight = false;\n return;\n }\n try {\n yield this.getMoreRowsFunc(this.sourceRef);\n }\n catch (error) {\n this.moreRowsInFlight = false;\n // MORE_ROWS only exists as an interaction on a live socket subscription; over HTTP\n // (feature.forceHttp) the router has no such endpoint and answers 404. Treat the rows\n // already delivered as the whole view - waiting blocks settle with what arrived and the\n // grid stops asking - rather than failing every block and erroring again on each scroll.\n if ((error === null || error === void 0 ? void 0 : error.status) === GenesisInfiniteDatasource.HTTP_NOT_FOUND) {\n logger.warn(`Infinite DATASERVER paging is not available on this connection (MORE_ROWS answered 404, expected over HTTP/feature.forceHttp). ${this.resourceName} is truncated to the ${this.rowData.size} row(s) already delivered; use a websocket connection, or a REQUEST_SERVER resource, to page further.`);\n this.moreRows = false;\n // The MAX_VIEW warning would misdiagnose this truncation as a view cap.\n this.viewTruncationWarned = true;\n this.settleCoveredBlocks();\n return;\n }\n logger.error('Infinite DATASERVER MORE_ROWS failed:', error);\n this.failAllPendingBlocks();\n }\n });\n }\n /**\n * Accumulates a stream batch into the cumulative cache and settles whatever it covers.\n * @internal\n */\n handleDataserverMessage(message) {\n var _a, _b, _c, _d, _e, _f;\n const messageType = message === null || message === void 0 ? void 0 : message.MESSAGE_TYPE;\n if (messageType === MessageType.LOGOFF_ACK || messageType === MessageType.MSG_NACK) {\n // Report it (same messages as the SSRM dataserver resource) - without this a logged-off\n // session just shows an empty grid with no banner.\n (_a = this.errorHandlerFunc) === null || _a === void 0 ? void 0 : _a.call(this, messageType === MessageType.LOGOFF_ACK\n ? `Connection lost to ${this.resourceName}`\n : `Authentication failed for ${this.resourceName}`, 'connection');\n // The subscription is dead on the server, so drop it - keeping it would make every later\n // scroll send MORE_ROWS against the stale SOURCE_REF, NACK again and fail its blocks\n // silently. The teardown fails the waiting blocks and lets the next block re-log on.\n this.teardownDataserverSubscription();\n return;\n }\n this.sourceRef = (_b = message === null || message === void 0 ? void 0 : message.SOURCE_REF) !== null && _b !== void 0 ? _b : this.sourceRef;\n const filtered = (message === null || message === void 0 ? void 0 : message.ROW) ? filterDataserverResult(message, this.rowId) : undefined;\n // A DATASERVER subscription is live by definition: batches answering the logon or a\n // MORE_ROWS carry the rows we asked for, and anything else is a change pushed by the server.\n // Replies only ever deliver view rows (INSERT operations), so a batch carrying a MODIFY or\n // DELETE is a push no matter when it arrives - even while a request is in flight. Treating\n // one as the reply would merge it into the cache at the wrong position and clear\n // moreRowsInFlight while the real reply is still outstanding, letting a second MORE_ROWS\n // race the first. (A pushed batch of only new INSERTs arriving while rows are due is\n // indistinguishable from the reply; the reset issued for the next structural push\n // reconciles that residual case.)\n const containsPushedChanges = ((_d = (_c = filtered === null || filtered === void 0 ? void 0 : filtered.updates) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0 || ((_f = (_e = filtered === null || filtered === void 0 ? void 0 : filtered.deletes) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0) > 0;\n if (containsPushedChanges) {\n // What happens to the pending blocks depends on the push:\n // - MODIFY-only: the cache is patched in place and the awaited reply is still due, so\n // moreRowsInFlight stays up and the blocks are left to it.\n // - structural (any DELETE): notifyLiveChange resets the subscription, which fails the\n // pending blocks and clears moreRowsInFlight; the purge that follows re-requests them\n // on a fresh logon, and the in-flight reply lands on the unsubscribed stream.\n this.streamStarted = true;\n this.notifyLiveChange(filtered);\n return;\n }\n const solicited = this.moreRowsInFlight || this.pendingBlocks.size > 0 || !this.streamStarted;\n this.moreRowsInFlight = false;\n if ((message === null || message === void 0 ? void 0 : message.MORE_ROWS) !== undefined) {\n this.moreRows = message.MORE_ROWS;\n }\n if (filtered) {\n if (message.ROWS_COUNT !== undefined && this.serverRowsCount === undefined) {\n this.serverRowsCount = message.ROWS_COUNT;\n }\n if (solicited) {\n this.accumulate(filtered);\n // Rows arriving is progress: give the blocks still waiting a fresh deadline so a long\n // walk to a distant block is not cut short by the safety valve.\n this.refreshPendingDeadlines();\n }\n else {\n this.streamStarted = true;\n this.notifyLiveChange(filtered);\n return;\n }\n }\n this.streamStarted = true;\n this.settleCoveredBlocks();\n this.pumpMoreRows();\n }\n /**\n * Reports a server-pushed change to the host so the grid can catch up.\n * @internal\n */\n notifyLiveChange(result) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n const structural = ((_b = (_a = result.inserts) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0 || ((_d = (_c = result.deletes) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0;\n const modified = ((_f = (_e = result.updates) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0) > 0;\n if (structural) {\n // No point patching the cache first: it is about to be dropped and re-read.\n logger.debug('Infinite DATASERVER live change invalidates the cache', {\n inserts: (_h = (_g = result.inserts) === null || _g === void 0 ? void 0 : _g.length) !== null && _h !== void 0 ? _h : 0,\n deletes: (_k = (_j = result.deletes) === null || _j === void 0 ? void 0 : _j.length) !== null && _k !== void 0 ? _k : 0,\n });\n this.reset();\n (_l = this.onRowsInvalidatedFunc) === null || _l === void 0 ? void 0 : _l.call(this, result);\n return;\n }\n if (modified) {\n this.accumulate(result);\n logger.debug('Infinite DATASERVER live update patched into the cache', {\n updates: (_o = (_m = result.updates) === null || _m === void 0 ? void 0 : _m.length) !== null && _o !== void 0 ? _o : 0,\n });\n (_p = this.onRowsUpdatedFunc) === null || _p === void 0 ? void 0 : _p.call(this, result);\n }\n }\n /**\n * Restarts the safety valve for every block still waiting.\n * @internal\n */\n refreshPendingDeadlines() {\n for (const block of this.pendingBlocks) {\n clearTimeout(block.timer);\n block.timer = this.createBlockTimer(block);\n }\n }\n /** @internal */\n createBlockTimer(block) {\n return setTimeout(() => {\n logger.warn(`Infinite DATASERVER block ${block.startRow}-${block.endRow} for ${this.resourceName} timed out waiting for rows; resolving with ${this.rowData.size} accumulated row(s).`);\n this.settleBlock(block, true);\n }, GenesisInfiniteDatasource.BLOCK_RESOLVE_TIMEOUT_MS);\n }\n /**\n * Merges a batch into the cumulative cache.\n * @internal\n */\n accumulate(result) {\n var _a, _b, _c;\n const rows = new Map(this.rowData);\n (_a = result.inserts) === null || _a === void 0 ? void 0 : _a.forEach((row) => {\n const key = row === null || row === void 0 ? void 0 : row[this.rowId];\n if (key === undefined) {\n // Without the guard a misconfigured rowId collapses every insert onto one undefined\n // key, and blocks only ever resolve through the safety valve.\n return;\n }\n rows.set(key, row);\n });\n // Live MODIFY rows may be partial, so merge into the cached row instead of clobbering it.\n (_b = result.updates) === null || _b === void 0 ? void 0 : _b.forEach((row) => {\n const key = row === null || row === void 0 ? void 0 : row[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), row) : row);\n });\n (_c = result.deletes) === null || _c === void 0 ? void 0 : _c.forEach((row) => {\n const key = row === null || row === void 0 ? void 0 : row[this.rowId];\n if (key === undefined) {\n return;\n }\n // Rows already handed to AG Grid sit at fixed absolute indices; removing one from the\n // cache would shift the slice offsets of every later block.\n const index = this.cacheIndexOf(rows, key);\n if (index === -1 || (this.deliveredRowCount > 0 && index < this.deliveredRowCount)) {\n return;\n }\n rows.delete(key);\n });\n this.rowData = rows;\n }\n /** Position of a key in the cache, or -1. @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 * Settles every pending block the cache now covers.\n * @internal\n */\n settleCoveredBlocks() {\n // Iterate a copy: settling a block removes it from the set.\n for (const block of [...this.pendingBlocks]) {\n if (this.rowData.size >= block.endRow || this.moreRows === false) {\n this.settleBlock(block, true);\n }\n }\n }\n /**\n * Hands a block its slice of the cache, or fails it.\n * @internal\n */\n settleBlock(block, success) {\n var _a;\n if (block.settled) {\n return;\n }\n block.settled = true;\n this.pendingBlocks.delete(block);\n clearTimeout(block.timer);\n if (!success) {\n block.fail();\n return;\n }\n const rows = [...this.rowData.values()].slice(block.startRow, block.endRow);\n this.deliveredRowCount = Math.max(this.deliveredRowCount, block.startRow + rows.length);\n // Once the stream reports no more rows the cache is the whole dataset, filter included.\n // Before that, an unfiltered total gives the grid an accurate scrollbar, while a filtered\n // view has to stay open-ended - see serverRowsCount.\n const lastRow = this.moreRows === false\n ? this.rowData.size\n : this.hasCriteria\n ? -1\n : ((_a = this.serverRowsCount) !== null && _a !== void 0 ? _a : -1);\n this.warnIfViewTruncated();\n logger.debug('Infinite DATASERVER block settled', {\n startRow: block.startRow,\n endRow: block.endRow,\n rows: rows.length,\n cached: this.rowData.size,\n lastRow,\n });\n block.success(rows, lastRow);\n this.deliverRows(block.startRow, rows);\n this.notifyDataAvailability(block.startRow, rows.length);\n }\n /**\n * Raises the no-data / data-available hooks for the first block, as the server-side resource\n * does. Later blocks say nothing: the question is whether the resource has any rows at all,\n * and the answer cannot change once the first block has been served.\n * @internal\n */\n notifyDataAvailability(startRow, rowCount) {\n var _a, _b;\n if (startRow !== 0 || this.detached) {\n return;\n }\n if (rowCount === 0) {\n (_a = this.onNoDataAvailableFunc) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n else {\n (_b = this.onDataAvailableFunc) === null || _b === void 0 ? void 0 : _b.call(this);\n }\n }\n /**\n * Reports rows handed to the grid for a block, then the rows a re-read of that block no longer\n * carries and the rows whose block the grid evicted.\n * @internal\n */\n deliverRows(startRow, rows) {\n var _a, _b;\n // A reply that resolves after the host dropped this instance belongs to a cache the grid no\n // longer has; reporting it would tell consumers about rows the grid will never show.\n if (this.detached) {\n return;\n }\n const { withdrawnRowIds } = this.ledger.record(startRow, rows);\n if (rows.length > 0) {\n (_a = this.onRowsDeliveredFunc) === null || _a === void 0 ? void 0 : _a.call(this, rows);\n }\n if (withdrawnRowIds.length > 0) {\n (_b = this.onRowsWithdrawnFunc) === null || _b === void 0 ? void 0 : _b.call(this, withdrawnRowIds);\n }\n }\n /**\n * Warns when the view filled up before the data ran out.\n * @remarks The server stops sending at MAX_VIEW rows and reports MORE_ROWS false, which is\n * indistinguishable from the end of the data - the grid would silently show a truncated view\n * and a row count smaller than the resource's. Raising `max-view` past the row count is the\n * fix, so say so rather than leaving it to be discovered.\n * @internal\n */\n warnIfViewTruncated() {\n var _a, _b;\n if (this.viewTruncationWarned ||\n this.moreRows !== false ||\n this.hasCriteria ||\n this.serverRowsCount === undefined ||\n this.rowData.size >= this.serverRowsCount) {\n return;\n }\n this.viewTruncationWarned = true;\n logger.warn(`${this.resourceName} stopped at ${this.rowData.size} of ${this.serverRowsCount} rows: the DATASERVER view is capped by MAX_VIEW (${(_b = (_a = this.resourceParams) === null || _a === void 0 ? void 0 : _a.MAX_VIEW) !== null && _b !== void 0 ? _b : 'server default'}). Raise max-view past the row count to reach the rest.`);\n }\n /** @internal */\n failAllPendingBlocks() {\n // Iterate a copy: settling a block removes it from the set.\n for (const block of [...this.pendingBlocks]) {\n this.settleBlock(block, false);\n }\n }\n /**\n * Drops the accumulated rows and the subscription, so the next block re-reads from the server.\n * @remarks Needed after a write: the cumulative cache is what blocks are served from, so a\n * created row would otherwise appear only at the end of the cache (the server pushes it as an\n * INSERT, not in sort position) and a deleted row that has already been displayed would never\n * disappear, because dropping it from the cache would shift later blocks' slice offsets.\n * @public\n */\n reset() {\n this.teardownDataserverSubscription();\n }\n /**\n * Drops the subscription and its cache so the next block re-logs on with fresh parameters.\n * @internal\n */\n teardownDataserverSubscription() {\n var _a;\n this.failAllPendingBlocks();\n (_a = this.dataserverStreamSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.dataserverStreamSubscription = undefined;\n this.dataserverStream = undefined;\n this.subscriptionKey = undefined;\n this.sourceRef = undefined;\n this.rowData = new Map();\n this.deliveredRowCount = 0;\n this.streamStarted = false;\n this.serverRowsCount = undefined;\n this.hasCriteria = false;\n this.viewTruncationWarned = false;\n this.moreRows = undefined;\n this.moreRowsInFlight = false;\n }\n /**\n * Drops the subscription and the cached rows.\n * @remarks AG Grid calls this on the bean it then keeps using (`InfiniteRowModel.start()`\n * re-applies the `datasource` grid option, and `setDatasource` destroys the previous one\n * first), and it can land while a block request is in flight. So it must leave the datasource\n * able to serve that reply and the next `getRows`: it drops the subscription, not the instance.\n */\n destroy() {\n this.teardownDataserverSubscription();\n this.ledger.clear();\n logger.debug('GenesisInfiniteDatasource destroyed');\n }\n /**\n * Drops this instance for good: the host is replacing it, so it must stop serving the grid and\n * stop reporting rows, even though AG Grid still holds it as its `datasource` until the\n * replacement is attached.\n * @remarks Deliberately separate from `destroy()`, which AG Grid calls on a bean it then keeps\n * using (`InfiniteRowModel.start()` re-applies the `datasource` grid option, and `setDatasource`\n * destroys the previous one first).\n */\n detach() {\n this.detached = true;\n this.loadGeneration += 1;\n this.rowCacheKey = undefined;\n this.destroy();\n logger.debug('GenesisInfiniteDatasource detached by its host');\n }\n}\n/**\n * Max time a DATASERVER block may stay pending before the safety valve resolves it with the\n * rows accumulated so far.\n * @internal\n */\nGenesisInfiniteDatasource.BLOCK_RESOLVE_TIMEOUT_MS = 10000;\n/** MORE_ROWS answered 404: the connection has no such endpoint (HTTP mode). @internal */\nGenesisInfiniteDatasource.HTTP_NOT_FOUND = 404;\n","import { __awaiter, __decorate } from \"tslib\";\nimport { Connect, ConnectEvents, Datasource, normaliseCriteria, toFieldMetadata, } from '@genesislcap/foundation-comms';\nimport { LifecycleMixin } from '@genesislcap/foundation-utils';\nimport { customElement, DOM, observable } from '@microsoft/fast-element';\nimport { debounceTime, skip } from 'rxjs/operators';\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 { GenesisInfiniteDatasource } from './infinite.resource';\nimport { getFilterByFieldType, getServerSideFilterParamsByFieldType, } from './server-side.grid-definitions';\nconst criteriaDelimiter = ';';\n/** How long a burst of `setFilter()` calls is collapsed for, matching the client-side model. */\nconst FILTER_DEBOUNCE_MS = 600;\n/**\n * A Genesis Datasource element for AG Grid's Infinite Row Model.\n * @remarks\n * The Infinite Row Model is part of AG Grid Community (free) and provides:\n * - Lazy loading of data as user scrolls\n * - Server-side sorting and filtering\n * - Simple infinite scroll without grouping/aggregation\n * - Live updates for DATASERVER resources: the DATA_LOGON stream the grid pages over pushes\n * every change, so no flag or second subscription is needed\n *\n * REQUEST_SERVER resources are read on demand only - a change on the server shows up when the\n * grid re-reads (scroll, filter/sort change, or an explicit refresh), not live. The exception\n * is a write made through this session: a commit ACK for an event listed in `pollTriggerEvents`\n * re-reads the loaded blocks, so entity-management CRUD is reflected immediately.\n *\n * Like the other datasources, consumer options passed as `deferredGridOptions` (including via\n * entity-management's `gridOptions` with `datasource-type=\"infinite\"`) are merged over this\n * element's defaults in `init()`.\n *\n * Use this instead of Server-Side Row Model when you don't need Enterprise features\n * like row grouping, aggregation, or pivoting.\n *\n * @see https://www.ag-grid.com/javascript-data-grid/infinite-scrolling/\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-initialize - Fired to hand off infinite row model grid options. detail: `InitializeEventDetail`\n * @fires datasource-init - Fired when the infinite grid model should initialize data\n * @fires datasource-schema-updated - Fired when column metadata or defs are updated. detail: `SchemaUpdatedEventDetail`\n * @fires datasource-data-changed - Fired when rows are delivered to the grid, a DATASERVER push changes them, or a re-read no longer returns them; `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 set-infinite-datasource - Fired to attach or clear the infinite row model datasource. detail: `SetInfiniteDatasourceEventDetail`\n * @fires refresh-infinite-cache - Fired to request an infinite row model refresh; `purge` drops the block cache and re-reads. detail: `RefreshInfiniteCacheEventDetail`\n * @fires add-grid-css-class - Fired to add a CSS class on the grid host (hover sort indicators). detail: `GridCssClassEventDetail`\n * @fires remove-grid-css-class - Fired to remove that CSS class from the grid host. detail: `GridCssClassEventDetail`\n * @fires cache-filter-config - Fired to persist filter configuration for the grid\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 datasource-loading-finished - Fired when the first block comes back with rows\n * @fires datasource-no-data-available - Fired when the first block comes back empty\n * @fires datasource-filters-restored - Fired when persisted filters are reapplied\n */\nlet GridProInfiniteDatasource = class GridProInfiniteDatasource extends LifecycleMixin(GridProBaseDatasource) {\n constructor() {\n super(...arguments);\n this.request = {};\n /** @internal */\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.isInfiniteSupportedForResource()) {\n this.clearRowData();\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 // Create the infinite datasource\n this.infiniteDatasource = new GenesisInfiniteDatasource({\n createSnapshotFunc: this.createSnapshot.bind(this),\n createDataserverStreamFunc: this.createDataserverStream.bind(this),\n // VIEW_NUMBER 0 means \"pagination disabled\": the server continues from the cursor it\n // holds on the last row it delivered, rather than re-seeking by offset.\n getMoreRowsFunc: (sourceRef) => this.connect.getMoreRows(sourceRef, 0),\n onRowsDeliveredFunc: this.reportDeliveredRows.bind(this),\n onRowsWithdrawnFunc: this.reportWithdrawnRows.bind(this),\n // A filter or sort change drops every block: forget the rows and tell consumers.\n onRowCacheResetFunc: () => this.clearRowData(false),\n onRowsInvalidatedFunc: this.handleLiveRowsInvalidated.bind(this),\n onRowsUpdatedFunc: this.handleLiveRowsUpdated.bind(this),\n onNoDataAvailableFunc: () => this.$emit(datasourceEventNames.noDataAvailable),\n onDataAvailableFunc: () => this.$emit(datasourceEventNames.loadingFinished),\n errorHandlerFunc: this.handleErrors.bind(this),\n resourceName: this.resourceName,\n resourceParams: this.isRequestServer\n ? this.datasource.requestOnlyParams\n : this.datasource.dataserverOnlyParams,\n resourceIndexes: this.indexes,\n resourceColDefs: this.datasource.originalFieldDef,\n maxRows: +this.maxRows,\n rowId: this.rowId,\n // The merged criteria, so a criteria added through setFilter() is read with the rows\n // rather than dropped: the logon builder replaces CRITERIA_MATCH with what it is given.\n baseCriteria: this.buildCriteria(),\n isRequestServer: this.isRequestServer,\n defaultOrderBy: this.orderBy,\n defaultReverse: this.reverse,\n });\n // Emit event to set infinite datasource\n this.$emit(datasourceEventNames.setInfiniteDatasource, {\n datasource: this.infiniteDatasource,\n });\n // DATASERVER needs no live-update setup: it is live through the paging DATA_LOGON stream\n // itself (GenesisInfiniteDatasource reports pushes via onRowsInvalidated/onRowsUpdated).\n // REQUEST_SERVER is read on demand, but a write committed through this session should not\n // wait for the user to scroll or reload:\n this.setupCommitTriggeredRefresh();\n // Mark the grid host so its stylesheet can hover-gate the sort indicators for this row\n // model (the `.grid-pro-infinite` rules in the grid-pro styles).\n this.$emit(datasourceEventNames.addGridCssClass, {\n className: 'grid-pro-infinite',\n });\n // Emit event to restore cached filter config\n this.$emit(datasourceEventNames.filtersRestored);\n });\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.infiniteDatasource && criteriaIsNotDuplicate) {\n DOM.queueUpdate(() => __awaiter(this, void 0, void 0, function* () {\n yield this.reloadResourceData();\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 this.subscribeToFilterChanges();\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 this.unsubscribeFromFilterChanges();\n }));\n }\n /**\n * Reloads when `setFilter()` or `removeFilter()` changes the criteria.\n * @remarks The criteria a block is read with is captured when the resource is built, so a\n * filter added later reaches nothing until the rows are re-read. The `criteria` attribute\n * already reloads through `criteriaChanged`; this gives the programmatic API the same\n * behaviour instead of silently doing nothing.\n * @internal\n */\n subscribeToFilterChanges() {\n this.unsubscribeFromFilterChanges();\n // Same shape as the client-side datasource: `update` is a BehaviorSubject, so skip(1) drops\n // the value it replays on subscribe (the state init() is already reading), and the debounce\n // collapses a burst of setFilter calls into one reload.\n this.filterSub = this.update.pipe(skip(1), debounceTime(FILTER_DEBOUNCE_MS)).subscribe(() => {\n if (!this.infiniteDatasource)\n return;\n this.reloadResourceData();\n });\n }\n /** @internal */\n unsubscribeFromFilterChanges() {\n var _a;\n (_a = this.filterSub) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.filterSub = undefined;\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() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n // The paging DATA_LOGON is opened through connect.stream, not this.datasource, so destroying\n // the comms datasource below does not close it. Dispose the IDatasource explicitly or every\n // criteria change (e.g. a bound search box) leaks a live subscription and its block timers.\n // detach(), not destroy(): AG Grid keeps calling this bean until the replacement is attached\n // a round trip later, and the purge below re-requests blocks immediately. destroy() alone\n // would leave it reading with the old criteria and reporting those rows as delivered.\n (_b = (_a = this.infiniteDatasource) === null || _a === void 0 ? void 0 : _a.detach) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.infiniteDatasource = undefined;\n this.datasource.destroy();\n // Emit event to cache current filter model before clearing data\n this.$emit(datasourceEventNames.cacheFilterConfig);\n this.clearRowData(false);\n this.setDisconnected(false);\n // Purge the infinite cache (clears all data and refetches)\n this.$emit(datasourceEventNames.refreshInfiniteCache, {\n purge: true,\n });\n yield this.init();\n });\n }\n init() {\n return __awaiter(this, void 0, void 0, function* () {\n // Emit event to initialize grid with infinite row model options\n const gridOptions = Object.assign({ getRowId: (params) => {\n if (!params.data) {\n return null;\n }\n return String(params.data[this.rowId]);\n }, cacheBlockSize: this.maxRows, defaultColDef: {\n filter: true,\n resizable: true,\n // sortable per column via getAgColumnDefs. unSortIcon renders the inactive sort icon on\n // sortable columns; the .grid-pro-infinite stylesheet keeps it hidden until hover so it\n // is a discoverable affordance rather than permanent noise (see infiniteSortIndicatorCSS).\n sortable: false,\n unSortIcon: true,\n }, rowBuffer: 0, rowModelType: 'infinite', \n // convertSortModelToOrderBy reads only sortModel[0], so a multi-sort's extra columns\n // would paint indicators whose direction is silently discarded.\n suppressMultiSort: true, \n // Infinite Row Model specific options\n cacheOverflowSize: 2, maxConcurrentDatasourceRequests: 1, infiniteInitialRowCount: 1, maxBlocksInCache: 10 }, this.deferredGridOptions);\n this.$emit(datasourceEventNames.initialize, {\n options: gridOptions,\n keepColDefsOnClearRowData: this.keepColDefsOnClearRowData,\n });\n // Listen for grid ready event. Clear any listener a previous init() left pending first:\n // two quick criteria changes would otherwise stack two once-listeners, and the single\n // ready event would then run the whole initialization twice.\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 /** @internal */\n clearReadyListener() {\n this.removeEventListener(datasourceEventNames.ready, this.onDatasourceReady);\n }\n /**\n * Whether the infinite row model can drive this resource.\n * @remarks It pages a req/rep by sending CRITERIA_MATCH, ORDER_BY and OFFSET in DETAILS, which\n * a request reply only accepts when it is declared `criteriaOnlyRequest`\n * (`CRITERIA_ONLY_REQUEST` in its metadata). Without it the server expects its inputs in\n * `REQUEST` instead and rejects every block, which on this row model surfaces as a grid that\n * simply never fills. Report it once, up front, as the server-side model does.\n * @returns `true` when the infinite model can be used, `false` after reporting a\n * `resource-type` error.\n * @internal\n */\n isInfiniteSupportedForResource() {\n if (!this.isRequestServer || this.datasource.criteriaOnlyRequest) {\n return true;\n }\n this.handleErrors(`Infinite 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 * A pushed INSERT/DELETE changes which rows exist or their order, so the change is reported\n * and then the rows are re-read (purge).\n * @internal\n */\n handleLiveRowsInvalidated(change) {\n this.reportLiveChange(change);\n this.$emit(datasourceEventNames.refreshInfiniteCache, {\n purge: true,\n });\n }\n /**\n * A pushed MODIFY is already patched into the paging cache, so the change is reported and the\n * grid only needs to re-render its blocks.\n * @internal\n */\n handleLiveRowsUpdated(change) {\n this.reportLiveChange(change);\n this.$emit(datasourceEventNames.refreshInfiniteCache, {\n purge: false,\n });\n }\n /**\n * Turns a DATASERVER push into the same transaction the client-side datasource reports:\n * partial MODIFY rows are merged into the held row, and a remove carries just the row id.\n * @remarks Unlike the client-side model, a pushed row need not be held here - it may sit\n * beyond the loaded blocks, in which case the grid will never show it.\n *\n * So a pushed INSERT is deliberately not reported: nothing here says where the new row sorts,\n * and reporting an `add` for a row that lands at position 40,000 of an unscrolled grid would\n * contradict the event's contract and leave the row held forever, since no block re-read ever\n * delivers (or withdraws) it. Every INSERT is followed by a purge and re-read, which reports\n * the row as `add` if and when it actually reaches the grid.\n *\n * A MODIFY for a row that is not held is skipped for the same reason; a DELETE is reported by\n * the id it carries, and one that cannot be resolved to an id is skipped with a warning rather\n * than matched against the wrong row.\n * @internal\n */\n reportLiveChange(change) {\n const transaction = this.resetTransaction();\n this.handleStreamUpdates(change.updates);\n this.handleStreamDeletes(change.deletes);\n this.emitTransaction(transaction);\n }\n destroy() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n // A ready event arriving after teardown must not re-run the initialization.\n this.clearReadyListener();\n this.teardownCommitTriggeredRefresh();\n this.$emit(datasourceEventNames.removeGridCssClass, {\n className: 'grid-pro-infinite',\n });\n this.datasource.destroy();\n this.clearRowData();\n if (this.infiniteDatasource) {\n // The host is done with this bean for good, so detach rather than destroy - see\n // reloadResourceData.\n (_b = (_a = this.infiniteDatasource).detach) === null || _b === void 0 ? void 0 : _b.call(_a);\n this.infiniteDatasource = undefined;\n }\n // Emit events instead of direct grid access\n this.$emit(datasourceEventNames.setInfiniteDatasource, {\n datasource: null,\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: withColumnDefs,\n });\n }\n /**\n * Honours `pollTriggerEvents` without polling: a commit ACK for one of the listed events\n * means a write went through this session, so the loaded blocks are re-read in place - the\n * same action as `applyTransaction`, which keeps the grid's row count and scroll position.\n * @remarks REQUEST_SERVER only. DATASERVER already receives every change on the paging\n * subscription, so a commit-triggered re-read there would just duplicate the live push.\n * @internal\n */\n setupCommitTriggeredRefresh() {\n var _a;\n this.teardownCommitTriggeredRefresh();\n if (this.isSnapshot || !this.isRequestServer || !((_a = this.pollTriggerEvents) === null || _a === void 0 ? void 0 : _a.length)) {\n return;\n }\n this.commitResponseUnsubscribe = this.connectEvents.addCommitResponseListener((event) => {\n var _a;\n const { eventName, response } = event.detail;\n if (this.pollTriggerEvents.includes(eventName) && ((_a = response.MESSAGE_TYPE) === null || _a === void 0 ? void 0 : _a.endsWith('_ACK'))) {\n logger.debug(`Commit ACK for ${eventName}, re-reading the loaded blocks.`);\n this.$emit(datasourceEventNames.refreshInfiniteCache, {\n purge: false,\n });\n }\n });\n }\n /** Safe to call when the listener was never registered. @internal */\n teardownCommitTriggeredRefresh() {\n var _a;\n (_a = this.commitResponseUnsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);\n this.commitResponseUnsubscribe = undefined;\n }\n /**\n * Creates a snapshot request to the server.\n * @param existingParams - Optional existing parameters to include\n * @returns The server response\n */\n createSnapshot() {\n return __awaiter(this, arguments, void 0, function* (existingParams = null) {\n const result = yield this.datasource.snapshot(existingParams);\n return result;\n });\n }\n /**\n * Opens the paged DATASERVER subscription used to serve grid blocks.\n * @remarks Deliberately a stream and not a snapshot: paging is a MORE_ROWS request against a\n * live subscription, and a fresh DATA_LOGON would always come back with page 1.\n * @internal\n */\n createDataserverStream(params = null) {\n const onError = (error) => {\n var _a;\n logger.error('Infinite DATASERVER paged stream error:', error);\n this.handleErrors(((_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 return this.connect.stream(this.resourceName, () => { }, onError, params);\n }\n getAgColumnDefs(fieldsMetadata) {\n return __awaiter(this, void 0, void 0, function* () {\n // The same filter mapping as the server-side row model, enums included: enum columns ask\n // for agSetColumnFilter, and the grid swaps in the community text filter when the app has\n // not registered the Enterprise SetFilterModule (see processSchemaUpdate in grid-pro-beta).\n const colDefsFromGenesisData = this.generateColumnDefsFromMetadata(fieldsMetadata, getServerSideFilterParamsByFieldType, getFilterByFieldType);\n // Sortability differs by transport, matching convertSortModelToOrderBy:\n // - REQUEST_SERVER orders any column (direction inline), so every column is sortable.\n // - DATASERVER can only ORDER_BY a NAMED index, so a column is sortable only when it belongs\n // to one. An unnamed index (stored under an undefined key) cannot be named, so its columns\n // would render a sort control convertSortModelToOrderBy then drops - excluded here.\n const namedIndexFields = new Set();\n this.indexes.forEach((fields, indexName) => {\n if (indexName) {\n fields.forEach((field) => namedIndexFields.add(field));\n }\n });\n colDefsFromGenesisData.forEach((colDef) => {\n colDef.sortable = this.isRequestServer || namedIndexFields.has(colDef.field);\n // A criteria-only req/rep accepts CRITERIA_MATCH on its declared criteria fields only;\n // filtering any other column would send criteria the server rejects, which on this row\n // model fails the block rather than surfacing a filter error.\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 // Infinite row model handles this automatically via scrolling\n logger.warn('loadMore() is not needed for Infinite Row Model - scrolling triggers data loading automatically');\n }\n};\n__decorate([\n Connect\n], GridProInfiniteDatasource.prototype, \"connect\", void 0);\n__decorate([\n ConnectEvents\n], GridProInfiniteDatasource.prototype, \"connectEvents\", void 0);\n__decorate([\n Datasource\n], GridProInfiniteDatasource.prototype, \"datasource\", void 0);\n__decorate([\n observable\n], GridProInfiniteDatasource.prototype, \"request\", void 0);\nGridProInfiniteDatasource = __decorate([\n customElement({\n name: 'grid-pro-infinite-datasource',\n })\n], GridProInfiniteDatasource);\nexport { GridProInfiniteDatasource };\n","import { __awaiter, __decorate, __rest } from \"tslib\";\nimport { DatasourceDefaults } from '@genesislcap/foundation-comms';\nimport { avoidTreeShaking, LifecycleMixin, respondToVisibility, } from '@genesislcap/foundation-utils';\nimport { baseLayerLuminance, StandardLuminance } from '@microsoft/fast-components';\nimport { attr, DOM, observable } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport { CellStyleModule, CheckboxEditorModule, ClientSideRowModelApiModule, ClientSideRowModelModule, ColumnApiModule, ColumnAutoSizeModule, createGrid, CsvExportModule, CustomEditorModule, CustomFilterModule, DateEditorModule, DateFilterModule, DragAndDropModule, EventApiModule, HighlightChangesModule, InfiniteRowModelModule, ModuleRegistry, NumberEditorModule, NumberFilterModule, PaginationModule, RenderApiModule, RowApiModule, RowDragModule, RowSelectionModule, RowStyleModule, SelectEditorModule, TextEditorModule, TextFilterModule, TooltipModule, _ColumnMoveModule as ColumnMoveModule, } from 'ag-grid-community';\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 { EnumColumnFilter, EnumColumnFloatingFilter, GridProFilterTypes } from './column-filters';\nimport { ColumnSelection } from './column-selection';\nimport { GRID_PRO_COLUMN_DRAG_BRIDGE_CONTEXT_KEY, gridProColumnDragBridgeModule, } from './column-selection/grid-pro-column-drag-bridge';\nimport { GridProClientSideDatasource, GridProInfiniteDatasource, GridProServerSideDatasource, } from './datasource';\nimport { baseDatasourceEventNames } from './datasource/base.types';\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 { 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 { convertToKebabCase, logger, mergeAndDedupColDefWithColumnState, sanitizeColumnState, } from './utils';\navoidTreeShaking(GridProGenesisDatasource, GridProClientSideDatasource, GridProServerSideDatasource, GridProInfiniteDatasource, GridProCell, GridProColumn, ColumnSelection);\nModuleRegistry.registerModules([\n CsvExportModule,\n ClientSideRowModelModule,\n PaginationModule,\n RowStyleModule,\n ClientSideRowModelApiModule,\n EventApiModule,\n TextFilterModule,\n HighlightChangesModule,\n ColumnApiModule,\n NumberFilterModule,\n CellStyleModule,\n DateFilterModule,\n RowApiModule,\n TooltipModule,\n ColumnAutoSizeModule,\n RenderApiModule,\n RowDragModule,\n RowSelectionModule,\n CustomEditorModule,\n TextEditorModule,\n NumberEditorModule,\n DateEditorModule,\n SelectEditorModule,\n CheckboxEditorModule,\n CustomFilterModule,\n InfiniteRowModelModule,\n DragAndDropModule,\n ColumnMoveModule,\n gridProColumnDragBridgeModule,\n // ValidationModule,\n]);\nconst DEBOUNCE_TIME = 400;\nconst Events = {\n EVENT_GRID_READY: 'gridReady',\n};\n/**\n * Finds `key`'s accessor among the component's own prototypes.\n * @remarks Own properties are skipped because the caller installs one: `connectedCallback` can run\n * more than once, and starting from the instance would wrap the accessor it defined last time. The\n * walk stops at `HTMLElement` so that a property merely sharing a name with a native one (such as\n * `tabIndex`) is left alone instead of picking up DOM semantics through the caller.\n * @internal\n */\nfunction findDeclaredAccessor(target, key) {\n let proto = Object.getPrototypeOf(target);\n while (proto && proto !== HTMLElement.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (descriptor)\n return descriptor;\n proto = Object.getPrototypeOf(proto);\n }\n return undefined;\n}\n/**\n * The Grid Pro element (AG Grid v35 compatible).\n * @remarks Grid Pro is a Web Component wrapper around the AG Grid Community library.\n * @beta\n * @tagname %%prefix%%-grid-pro\n *\n * @fires gridReady - Fired when AG Grid is ready (detail includes the grid-ready event and grid id). detail: `GridReadyEventDetail`\n * @fires onGridReady - Deprecated alias for the grid-ready signal; prefer `gridReady`. detail: `GridReadyEventDetail`\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 AG Grid public event strings). 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 GridProBeta extends LifecycleMixin(FoundationElement) {\n /** @internal Shared AG column-drag bridge for custom tool panels. */\n getColumnDragBridge() {\n return this.columnDragBridge;\n }\n rowDataChanged(_, rowData) {\n // `initialised` flips true right after createGrid(), but `gridApi` is only assigned in the\n // async onGridReady callback — so a binding push in that window would crash on an undefined\n // api. Skipping is lossless: onGridReady applies `this.rowData` itself once the api exists,\n // and FAST has already stored the new value on the instance before calling this handler.\n if (this.initialised && this.gridApi) {\n this.gridApi.setGridOption('rowData', rowData);\n }\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 enableColumnSelectionChanged() {\n this.syncColumnSelectionHostLayout();\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 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 /**\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 * 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 * If true, will enable row flashing for all rows for `add` async transactions\n */\n this.enableRowFlashing = false;\n /** Wired to `gridOptions.context` for columns picker → grid drag (see bridge module). */\n this.columnDragBridge = {};\n this.columnComponentName = 'grid-pro-column';\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 /**\n * Shows a Column Selection button above the grid.\n * @public\n */\n this.enableColumnSelection = false;\n this.applyingDatasourceGridOptions = false;\n this.rehydrationAttempted = false;\n this.rootEventsListeners = [];\n this.datasourceEventHandlers = [];\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.handleLuminanceChange = (record) => {\n const luminance = baseLayerLuminance.getValueFor(record.target);\n this.themeMode = luminance === StandardLuminance.DarkMode ? 'dark' : 'light';\n };\n this.luminanceObserver = {\n handleChange: (record) => this.handleLuminanceChange(record),\n };\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 this.rootEventsListeners.push([gridProGenesisDatasourceEventNames.dataInit, hideDataSourceError], [gridProEventNames.datasourceErrorClose, hideDataSourceError], \n // Base datasource error handling for resource validation and initialization errors\n [baseDatasourceEventNames.error, this.handleBaseDatasourceError.bind(this)], [baseDatasourceEventNames.connected, hideDataSourceError]);\n this.datasourceEventHandlers = [\n [datasourceEventNames.initialize, this.handleInitialize.bind(this)],\n [datasourceEventNames.dataLoaded, this.handleDataLoaded.bind(this)],\n [datasourceEventNames.dataChanged, this.handleDataChanged.bind(this)],\n [datasourceEventNames.schemaUpdated, this.handleSchemaUpdated.bind(this)],\n [datasourceEventNames.dataCleared, this.handleDataCleared.bind(this)],\n [datasourceEventNames.loadingStarted, this.handleLoadingStarted.bind(this)],\n [\n datasourceEventNames.loadingFinished,\n this.handleLoadingFinished.bind(this),\n ],\n [\n datasourceEventNames.noDataAvailable,\n this.handleNoDataAvailable.bind(this),\n ],\n [\n datasourceEventNames.filtersRestored,\n this.handleFiltersRestored.bind(this),\n ],\n [\n datasourceEventNames.moreDataAvailable,\n this.handleMoreDataAvailable.bind(this),\n ],\n [datasourceEventNames.error, this.handleDatasourceError.bind(this)],\n [datasourceEventNames.destroy, this.handleDatasourceDestroy.bind(this)],\n [datasourceEventNames.cacheFilterConfig, this.cacheFilterConfig.bind(this)],\n [\n datasourceEventNames.refreshServerSide,\n this.handleRefreshServerSide.bind(this),\n ],\n [\n datasourceEventNames.setServerSideDatasource,\n this.handleSetServerSideDatasource.bind(this),\n ],\n [\n datasourceEventNames.addGridCssClass,\n this.handleAddGridCssClass.bind(this),\n ],\n [\n datasourceEventNames.removeGridCssClass,\n this.handleRemoveGridCssClass.bind(this),\n ],\n [\n datasourceEventNames.applyServerSideTransaction,\n this.handleApplyServerSideTransaction.bind(this),\n ],\n // Infinite Row Model specific events\n [\n datasourceEventNames.setInfiniteDatasource,\n this.handleSetInfiniteDatasource.bind(this),\n ],\n [\n datasourceEventNames.refreshInfiniteCache,\n this.handleRefreshInfiniteCache.bind(this),\n ],\n ];\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 (this.gridApi) {\n this.addGridEventListener(eventType);\n }\n else {\n if (!this.gridEventsQueue.includes(eventType)) {\n this.gridEventsQueue.push(eventType);\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 var _a;\n super.connectedCallback();\n this.syncColumnSelectionHostLayout();\n this.disposed = false;\n const luminanceTarget = (_a = this.provider) !== null && _a !== void 0 ? _a : this;\n this.luminanceSubscription = baseLayerLuminance.subscribe(this.luminanceObserver, luminanceTarget);\n if (this.gridAutosizingEnabled) {\n this.visibilityObserverCleanup = respondToVisibility(this, (gridVisible) => {\n if (gridVisible) {\n this.debouncedColumnAutosize();\n }\n });\n }\n this.rehydrationAttempted = false;\n if (!this.shouldRunConnect)\n return;\n this.rootEventsListeners.forEach(([eventName, handler]) => {\n this.addEventListener(eventName, handler);\n });\n // Property reflection for AG Grid properties, so `grid.rowHeight = 40` reaches AG.\n // A few of these keys are also declared on the component as `@attr` (`headerHeight`,\n // `rowHeight`), and FAST installs their accessors on the prototype. This shadows those, so\n // delegate reads and writes to the accessor being covered up — a getter-less own property here\n // would leave the declared attribute unreadable.\n AG_PROPERTIES.forEach((key) => {\n const declared = findDeclaredAccessor(this, key);\n Object.defineProperty(this, key, {\n get: declared === null || declared === void 0 ? void 0 : declared.get,\n set: (v) => {\n var _a, _b;\n const previous = (_a = declared === null || declared === void 0 ? void 0 : declared.get) === null || _a === void 0 ? void 0 : _a.call(this);\n (_b = declared === null || declared === void 0 ? void 0 : declared.set) === null || _b === void 0 ? void 0 : _b.call(this, v);\n this.agAttributeChangedCallback(convertToKebabCase(key), previous, v);\n },\n enumerable: true,\n configurable: true,\n });\n });\n // Add datasource event listeners\n this.toggleDatasourceEventListeners(true);\n }\n disconnectedCallback() {\n var _a;\n this.disposed = true;\n this.debouncedSaveColumnState.cancel();\n this.debouncedSaveFilterModel.cancel();\n const luminanceTarget = (_a = this.provider) !== null && _a !== void 0 ? _a : this;\n baseLayerLuminance.unsubscribe(this.luminanceObserver, luminanceTarget);\n if (this.luminanceSubscription) {\n this.luminanceSubscription.unsubscribe();\n this.luminanceSubscription = undefined;\n }\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.rootEventsListeners.forEach(([eventName, handler]) => {\n this.removeEventListener(eventName, handler);\n });\n if (!shouldRunDisconnect) {\n queueMicrotask(() => {\n if (!this.isConnected) {\n this.performDisconnectCleanup();\n }\n });\n return;\n }\n this.performDisconnectCleanup();\n }\n syncColumnSelectionHostLayout() {\n this.classList.toggle('has-column-selection', this.enableColumnSelection);\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 // Only remove datasource listeners on a real teardown. A blocked (reflow) disconnect must\n // leave them in place, or a grid that survives the reflow stops reacting to datasource\n // events (loading/no-rows overlays never update).\n this.toggleDatasourceEventListeners(false);\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 // Clear registered events when grid is destroyed\n this.registeredGridEvents.clear();\n this.gridEventsQueue = [];\n }\n destroyGridInstance() {\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 this.gridApi.destroy();\n }\n else if (this.agGrid) {\n this.agGrid.destroy();\n }\n if (this.gridSlot) {\n // Ensure AG Grid internal measurement/theme nodes are removed immediately.\n this.gridSlot.replaceChildren();\n }\n this.gridApi = undefined;\n this.agGrid = undefined;\n }\n /**\n * Helper method to add or remove datasource event listeners\n * @internal\n */\n toggleDatasourceEventListeners(add) {\n const method = add ? 'addEventListener' : 'removeEventListener';\n this.datasourceEventHandlers.forEach(([eventName, handler]) => {\n // Bypass GridProBeta.addEventListener override: datasource events should not be\n // mirrored/queued as AG Grid API events.\n super[method](eventName, handler);\n });\n }\n /**\n * Handles datasource initialization\n * @internal\n */\n handleInitialize(event) {\n const { options, keepColDefsOnClearRowData } = event.detail;\n if (keepColDefsOnClearRowData) {\n this.columnState = this.gridApi.getColumnState();\n }\n this.applyingDatasourceGridOptions = true;\n try {\n this.gridOptions = Object.assign(Object.assign(Object.assign({}, this.userProvidedGridOptions), options), (keepColDefsOnClearRowData ? { columnDefs: this.gridApi.getColumnDefs() } : {}));\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.setGridOption('rowData', data);\n }\n }\n /**\n * Handles data changes from datasource\n * @internal\n */\n handleDataChanged(event) {\n const { changes } = event.detail;\n // Every datasource emits this for consumers, but only the client-side row model takes row\n // transactions: the infinite and server-side datasources drive the grid through\n // refresh-infinite-cache / apply-server-side-transaction, and applyTransaction on those\n // models is a no-op that logs an AG Grid warning per event.\n if (!this.gridApi || !this.isClientSideRowModel)\n return;\n const result = this.gridApi.applyTransaction(changes);\n this.flashAddedCells(result === null || result === void 0 ? void 0 : result.add);\n }\n /**\n * Whether the live grid runs AG Grid's client-side row model (the default when the datasource\n * set no `rowModelType`).\n * @internal\n */\n get isClientSideRowModel() {\n var _a, _b, _c;\n const rowModelType = (_c = (_b = (_a = this.gridApi) === null || _a === void 0 ? void 0 : _a.getGridOption) === null || _b === void 0 ? void 0 : _b.call(_a, 'rowModelType')) !== null && _c !== void 0 ? _c : 'clientSide';\n return rowModelType === 'clientSide';\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 rowData — which onGridReady\n // re-applies from `this.rowData` — the schema has no other home on the instance, so\n // returning here used to drop it silently and leave the grid with no columns. Stash it\n // and replay 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 payload.\n * @internal\n */\n processSchemaUpdate(_a) {\n return __awaiter(this, arguments, void 0, function* ({ schema }) {\n // Only auto-generate columns from the datasource schema when the consumer has NOT already\n // supplied their own column defs (e.g. via `gridOptions`/`deferredGridOptions.columnDefs` or\n // `grid-pro-column` templates). Overwriting here would discard user-provided definitions —\n // including `ColGroupDef` group structure and custom header names — and replace them with flat\n // metadata columns. This mirrors the stable `GridPro` behaviour.\n const preSetColumnDefs = this.gridApi.getColumnDefs();\n if (preSetColumnDefs && preSetColumnDefs.length > 0) {\n return;\n }\n this.applyCommunityFilterFallbacks(schema);\n // Merge with template definitions\n const mergedColumnDefs = yield this.mergeAllColumnDefsAndStates(schema, true);\n this.gridApi.setGridOption('columnDefs', mergedColumnDefs);\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 applying columnDefs), 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 * Downgrades enterprise filters in metadata-generated colDefs when their modules are not\n * registered — from v35 AG Grid throws on unregistered filters instead of falling back.\n * Enum columns (recognised by their metadata-sourced set-filter values) keep those values by\n * falling back to the community `EnumColumnFilter` instead of a plain text filter.\n *\n * The enum floating filter is only wired as the column's component, not enabled: AG's floating\n * filter is a full-width header row, so enabling it for one column changes the layout of every\n * column. Active-filter state is surfaced instead by AG's native header filter icon plus the\n * header tooltip the enum filter maintains; consumers wanting the floating row opt in with\n * `floatingFilter: true`.\n * @internal\n */\n applyCommunityFilterFallbacks(schema) {\n const hasSetFilter = this.gridApi.isModuleRegistered('SetFilterModule');\n const hasMultiFilter = this.gridApi.isModuleRegistered('MultiFilterModule');\n schema.forEach((colDef) => {\n var _a, _b, _c, _d, _e;\n if (colDef.filter === 'agSetColumnFilter' && !hasSetFilter) {\n logger.debug(`SetFilterModule is not registered; column '${colDef.field}' falls back to the enum filter`);\n colDef.filter = GridProFilterTypes.enumFilter;\n (_a = colDef.floatingFilterComponent) !== null && _a !== void 0 ? _a : (colDef.floatingFilterComponent = GridProFilterTypes.enumFloatingFilter);\n return;\n }\n if (colDef.filter !== 'agMultiColumnFilter') {\n return;\n }\n const setSubFilter = (_c = (_b = colDef.filterParams) === null || _b === void 0 ? void 0 : _b.filters) === null || _c === void 0 ? void 0 : _c.find((subFilter) => subFilter.filter === 'agSetColumnFilter');\n if (!hasMultiFilter) {\n if ((_d = setSubFilter === null || setSubFilter === void 0 ? void 0 : setSubFilter.filterParams) === null || _d === void 0 ? void 0 : _d.values) {\n logger.debug(`MultiFilterModule is not registered; enum column '${colDef.field}' falls back to the enum filter`);\n colDef.filter = GridProFilterTypes.enumFilter;\n // Carry the whole sub-filter config over, not just `values` — a consumer-authored\n // multi filter may also set valueFormatter, blanks, etc.\n colDef.filterParams = Object.assign({}, setSubFilter.filterParams);\n (_e = colDef.floatingFilterComponent) !== null && _e !== void 0 ? _e : (colDef.floatingFilterComponent = GridProFilterTypes.enumFloatingFilter);\n }\n else {\n logger.warn('MultiFilterModule is not registered, falling back to text filter');\n colDef.filter = 'agTextColumnFilter';\n }\n return;\n }\n // The multi filter itself is available but its set sub-filter's module is not — opening\n // the filter would throw AG error #256. The multi filter hosts custom child filters, so\n // only the nested set filter is swapped for the enum filter (same params, same model).\n if (!hasSetFilter && setSubFilter) {\n logger.debug(`SetFilterModule is not registered; the set sub-filter of column '${colDef.field}' falls back to the enum filter`);\n setSubFilter.filter = GridProFilterTypes.enumFilter;\n }\n });\n }\n /**\n * Handles data clearing from datasource\n * @internal\n */\n handleDataCleared(event) {\n const { includeSchema } = event.detail;\n if (!this.gridApi)\n return;\n if (includeSchema) {\n this.gridApi.setGridOption('columnDefs', []);\n }\n // rowData belongs to the client-side row model; the infinite and server-side caches are\n // cleared by their own refresh / transaction events.\n if (this.isClientSideRowModel) {\n this.gridApi.setGridOption('rowData', []);\n }\n this.gridApi.refreshCells({ force: true });\n }\n /**\n * Handles loading started from datasource\n * @internal\n */\n handleLoadingStarted() {\n if (this.gridApi) {\n this.gridApi.setGridOption('loading', true);\n }\n }\n /**\n * Handles loading finished from datasource\n * @internal\n */\n handleLoadingFinished() {\n if (this.gridApi) {\n this.gridApi.setGridOption('loading', false);\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.setGridOption('loading', false);\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() {\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.setGridOption('serverSideDatasource', 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 /**\n * Handles setting infinite datasource\n * @internal\n */\n handleSetInfiniteDatasource(event) {\n const { datasource } = event.detail;\n if (this.gridApi) {\n this.gridApi.setGridOption('datasource', datasource);\n }\n }\n /**\n * Handles refreshing the infinite cache.\n * @remarks Mirrors {@link GridProBeta.handleRefreshServerSide}: `purge` drops the block cache\n * and re-reads, otherwise the loaded blocks are re-read in place.\n * @internal\n */\n handleRefreshInfiniteCache(event) {\n var _a;\n if (!this.gridApi)\n return;\n if ((_a = event.detail) === null || _a === void 0 ? void 0 : _a.purge) {\n this.gridApi.purgeInfiniteCache();\n }\n else {\n this.gridApi.refreshInfiniteCache();\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 [GridProFilterTypes.enumFilter]: EnumColumnFilter,\n [GridProFilterTypes.enumFloatingFilter]: EnumColumnFloatingFilter,\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.gridApi.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.gridApi.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 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.gridApi) === 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 globalListener: this.boundGlobalEventListener,\n modules: [gridProColumnDragBridgeModule, ColumnMoveModule, DragAndDropModule],\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 this.querySelector('grid-pro-infinite-datasource'));\n }\n /**\n * @public\n */\n get isInfiniteRowModel() {\n return this.gridProDatasource instanceof GridProInfiniteDatasource;\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.gridApi) === 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 // grid 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 };\n const notifyVisibilityChanged = () => {\n if (this.disposed || !this.isConnected)\n return;\n this.debouncedNotifyDatasourceVisibleColumns();\n };\n // Collect attributes and map them to AG Grid properties\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 { columnDefs, components, defaultColDef, getRowId, onGridReady, onFilterChanged, onFirstDataRendered } = options, rest = __rest(options, [\"columnDefs\", \"components\", \"defaultColDef\", \"getRowId\", \"onGridReady\", \"onFilterChanged\", \"onFirstDataRendered\"]);\n const derivedOptions = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, this.gridOptionsConfig), { defaultColDef: Object.assign({ enableCellChangeFlash: this.enableCellFlashing, filter: true, resizable: true, sortable: true }, defaultColDef), components: this.combineAllGridComponents(components), headerHeight: this.headerHeight, rowHeight: this.rowHeight, animateRows: false, suppressDragLeaveHidesColumns: true }), this.eventsAndCallbacks), { onGridReady: (event) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n this.gridApi = event.api;\n if (this.gridEventsQueue.length) {\n this.gridEventsQueue.forEach((type) => {\n this.addGridEventListener(type);\n });\n }\n // Awaited so the columns land before rowData/columnState below — otherwise they\n // would race against an empty column model. Caught because ag-grid neither awaits\n // nor handles this callback's promise: a rejection (mergeAllColumnDefsAndStates\n // hydrates column state) would surface as an unhandled rejection AND skip the rest\n // of init — rowData, the consumer's onGridReady, the grid-ready emit. A grid with\n // no columns beats one that never finishes starting.\n if (this.pendingSchemaUpdate) {\n const pendingSchemaUpdate = this.pendingSchemaUpdate;\n this.pendingSchemaUpdate = undefined;\n try {\n yield this.processSchemaUpdate(pendingSchemaUpdate);\n }\n catch (error) {\n logger.error('Grid Pro: failed to apply the pending schema update on grid ready:', error);\n }\n }\n if (this.rowData) {\n this.gridApi.setGridOption('rowData', this.rowData);\n }\n if (onGridReady) {\n onGridReady(event);\n }\n if (((_a = this.gridProDatasource) === null || _a === void 0 ? void 0 : _a.keepColDefsOnClearRowData) && ((_b = this.columnState) === null || _b === void 0 ? void 0 : _b.length) > 0) {\n this.gridApi.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 // TODO: prevent rendering datasource slot until grid is ready\n // so there is no need for this even and handling it in datasources\n (_c = this.gridProDatasource) === null || _c === void 0 ? void 0 : _c.$emit(datasourceEventNames.ready);\n this.restoreColumnState();\n this.restoreCachedFilterConfig();\n this.debouncedColumnAutosize();\n }), onFirstDataRendered: (event) => {\n // Safety net: by now the grid columns are 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 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 if (this.gridProDatasource) {\n derivedOptions.columnDefs = columnDefs;\n derivedOptions.getRowId = getRowId;\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 derivedOptions.getRowId = getRowId;\n this.setupStatusBar(derivedOptions);\n this.setLocalGridOptions(derivedOptions);\n this.initGrid();\n });\n }\n }\n setLocalGridOptions(derivedOptions) {\n // Merge options with reflected AG properties from attributes\n this.agGridOptions = Object.assign(Object.assign({}, this.agGridOptions), copyAttributesToGridOptions(derivedOptions, this.agAttributes));\n this.agGridOptions.context = Object.assign(Object.assign({}, this.agGridOptions.context), { [GRID_PRO_COLUMN_DRAG_BRIDGE_CONTEXT_KEY]: this.columnDragBridge });\n if (this.agGridOptions.allowDragFromColumnsToolPanel == null) {\n this.agGridOptions.allowDragFromColumnsToolPanel = true;\n }\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 resetGridOptionsState() {\n this.userProvidedGridOptions = undefined;\n this.agGridOptions = undefined;\n }\n initGrid() {\n DOM.queueUpdate(() => {\n // `gridSlot` is a template ref, so it is undefined until the view binds, and this task runs\n // on the shared update queue — an options change can queue it ahead of that binding. Reading\n // `.firstChild` off it unguarded then throws from INSIDE a queued task, which the runner can\n // only report against whichever test is running. Same guard as `grid-pro.ts`; both callers\n // re-run on the next grid-options change, so skipping strands nothing.\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 = createGrid(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 * @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, _c, _d, _e, _f;\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 columnDef.filter === GridProFilterTypes.enumFilter) {\n const hasExplicitValues = columnDef.filterParams != null && 'values' in columnDef.filterParams;\n if (!hasExplicitValues) {\n const metadataFilterParams = (_a = columnDefinitionsFromMetadata.find((colDef) => colDef.field === columnDef.field)) === null || _a === void 0 ? void 0 : _a.filterParams;\n // Metadata enum values are flat ({ values }) on the server-side datasource path, but\n // nested inside a multi-filter's set sub-filter on the client-side datasource path.\n const metadataValues = (_b = metadataFilterParams === null || metadataFilterParams === void 0 ? void 0 : metadataFilterParams.values) !== null && _b !== void 0 ? _b : (_e = (_d = (_c = metadataFilterParams === null || metadataFilterParams === void 0 ? void 0 : metadataFilterParams.filters) === null || _c === void 0 ? void 0 : _c.find((subFilter) => subFilter.filter === 'agSetColumnFilter')) === null || _d === void 0 ? void 0 : _d.filterParams) === null || _e === void 0 ? void 0 : _e.values;\n if (metadataValues) {\n columnDef.filterParams = Object.assign(Object.assign({}, columnDef.filterParams), { values: metadataValues });\n }\n }\n if (columnDef.filter === GridProFilterTypes.enumFilter) {\n (_f = columnDef.floatingFilterComponent) !== null && _f !== void 0 ? _f : (columnDef.floatingFilterComponent = GridProFilterTypes.enumFloatingFilter);\n }\n }\n if (columnDef.editable) {\n if (!columnDef.cellRenderer && !columnDef.cellRendererSelector) {\n columnDef.cellRendererSelector = (params) => {\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 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) => { var _a; return ((_a = params.data[ERROR_COLUMN_FIELD]) === null || _a === void 0 ? void 0 : _a.column) === params.colDef.field; },\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 // Check the derived gridOptions parameter, not this.gridOptions: setupStatusBar runs\n // before setLocalGridOptions populates the field, so on first init the field is still\n // undefined and a standalone grid's rowModelType would be missed.\n const isServerSide = this.isServerSide ||\n this.isInfiniteRowModel ||\n (gridOptions === null || gridOptions === void 0 ? void 0 : gridOptions.rowModelType) === 'infinite' ||\n (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 // The infinite row model loads on scroll, so its loadMore() is a no-op: suppress the\n // Load More panel for it the same way it is suppressed for the server-side row model.\n const datasourceStatusPanels = this.gridProDatasource.getDatasourceStatusBarPanels(this.isServerSide || this.isInfiniteRowModel, 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 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 var _a;\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 if (this.initialised) {\n // for subsequent (post gridOptions) changes - use setGridOption API for v35\n (_a = this.gridApi) === null || _a === void 0 ? void 0 : _a.setGridOption(gridPropertyName, newValue);\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}\n__decorate([\n observable\n], GridProBeta.prototype, \"gridApi\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"gridErrorItems\", void 0);\n__decorate([\n StatePersistence\n], GridProBeta.prototype, \"statePersistence\", void 0);\n__decorate([\n attr({ attribute: 'auto-cell-renderer-by-type', mode: 'boolean' })\n], GridProBeta.prototype, \"autoCellRendererByType\", void 0);\n__decorate([\n attr({ attribute: 'only-template-col-defs', mode: 'boolean' })\n], GridProBeta.prototype, \"onlyTemplateColDefs\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'grid-autosizing' })\n], GridProBeta.prototype, \"gridAutosizingEnabled\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'enable-cell-flashing' })\n], GridProBeta.prototype, \"enableCellFlashing\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'enable-row-flashing' })\n], GridProBeta.prototype, \"enableRowFlashing\", void 0);\n__decorate([\n attr({ attribute: 'persist-column-state-key' })\n], GridProBeta.prototype, \"persistColumnStateKey\", void 0);\n__decorate([\n attr({ attribute: 'persist-filter-model-key' })\n], GridProBeta.prototype, \"persistFilterModelKey\", void 0);\n__decorate([\n attr({ attribute: 'header-case-type' })\n], GridProBeta.prototype, \"headerCaseType\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"rowData\", void 0);\n__decorate([\n attr\n], GridProBeta.prototype, \"columnComponentName\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"eventsAndCallbacks\", void 0);\n__decorate([\n attr\n], GridProBeta.prototype, \"headerHeight\", void 0);\n__decorate([\n attr\n], GridProBeta.prototype, \"rowHeight\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"classNames\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"agGrid\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"gridSlot\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"themeMode\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"gridComponents\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"statusBarConfig\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'with-status-bar' })\n], GridProBeta.prototype, \"withStatusBar\", void 0);\n__decorate([\n attr({ mode: 'boolean', attribute: 'enable-column-selection' })\n], GridProBeta.prototype, \"enableColumnSelection\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"customErrorHandlerTemplate\", void 0);\n__decorate([\n GridOptionsConfig\n], GridProBeta.prototype, \"gridOptionsConfig\", void 0);\n__decorate([\n observable\n], GridProBeta.prototype, \"provider\", void 0);\n","import { __decorate } from \"tslib\";\nimport { agDragGhostShadowDomStyles, gridProColumnSelectionHostStyles, GridProBeta, GridProRendererTypes, rowMatchAlertStyles, } from '@genesislcap/grid-pro';\nimport { css, observable } from '@microsoft/fast-element';\nimport { themeBalham } from 'ag-grid-community';\nimport { RapidNumberEditor, RapidSelectEditor, RapidMultiselectEditor, RapidDateEditor, RapidStringEditor, } from './cell-editors';\nimport { RapidEditableRenderer, RapidAgActionRenderer, RapidAgActionsMenuRenderer, RapidBooleanRenderer, RapidStatusPillRenderer, RapidIconRenderer, RapidAgSelectRenderer, } from './cell-renderers';\nimport { rapidDefaultGridProConfig, rapidGridProShadowOptions } from './grid-pro';\nimport { rapidGridProTemplate as template } from './grid-pro.template';\n/**\n * Every param here is a CSS custom-property reference, so they resolve per instance and per mode\n * from one built theme. Row height is the one exception — see {@link RapidGridProBeta.cachedThemes}.\n */\nconst rapidGridThemeParams = {\n backgroundColor: 'var(--neutral-layer-card-container)',\n cellHorizontalPadding: 'calc(var(--design-unit) * 2px)',\n foregroundColor: 'var(--neutral-foreground-rest)',\n headerTextColor: 'var(--neutral-foreground-hint)',\n headerBackgroundColor: 'var(--neutral-layer-3)',\n headerColumnBorder: '1px solid var(--neutral-stroke-rest)',\n oddRowBackgroundColor: 'var(--neutral-layer-1)',\n rowBorder: '1px solid var(--neutral-stroke-divider-rest)',\n borderColor: 'var(--neutral-stroke-rest)',\n wrapperBorder: '0',\n accentColor: 'var(--accent-foreground-rest)',\n fontFamily: 'var(--body-font)',\n sideBarBackgroundColor: 'var(--neutral-layer-2)',\n dataFontSize: 'var(--type-ramp-minus-2-font-size)',\n iconButtonColor: 'var(--accent-foreground-rest)',\n iconButtonHoverColor: 'color-mix(in srgb, var(--accent-foreground-rest), var(--ag-foreground-color) 30%)',\n};\n/**\n * The attribute spellings `GridProBeta` maps onto `GridOptions.rowHeight`, highest precedence\n * first, mirroring its own `agPropertiesMap`.\n */\nconst rowHeightAttributes = ['rowheight', 'row-height'];\n/**\n * A row height arrives either as a `GridOptions.rowHeight` number or as an attribute string, so\n * normalise before using it as a theme param and cache key.\n */\nfunction toThemeRowHeight(value) {\n const rowHeight = Number(value);\n return Number.isFinite(rowHeight) && rowHeight > 0 ? rowHeight : undefined;\n}\n/**\n * @tagname rapid-grid-pro\n */\nexport class RapidGridProBeta extends GridProBeta {\n getCachedTheme(rowHeight) {\n const key = rowHeight !== null && rowHeight !== void 0 ? rowHeight : 'default';\n let theme = RapidGridProBeta.cachedThemes.get(key);\n if (!theme) {\n theme = themeBalham.withParams(key === 'default'\n ? rapidGridThemeParams\n : Object.assign(Object.assign({}, rapidGridThemeParams), { rowHeight: `${key}px` }));\n RapidGridProBeta.cachedThemes.set(key, theme);\n }\n return theme;\n }\n /**\n * The height AG will end up using, resolved the same way `GridProBeta` resolves it: attributes are\n * copied over the derived options last, so they win over anything on the options object.\n */\n resolveRowHeight(options) {\n for (const attribute of rowHeightAttributes) {\n const fromAttribute = toThemeRowHeight(this.getAttribute(attribute));\n if (fromAttribute)\n return fromAttribute;\n }\n return toThemeRowHeight(options.rowHeight);\n }\n /**\n * Keeps the theme's row height in step with a row height changed after the grid was built.\n * @remarks AG resizes the rows and refreshes `--ag-line-height` on its own, but `--ag-row-height`\n * belongs to the theme, so without swapping the theme too a grid grown past its original height\n * clamps back to the old line-height and tops out its cell content again.\n * @override\n */\n agAttributeChangedCallback(attName, oldValue, newValue) {\n var _a;\n super.agAttributeChangedCallback(attName, oldValue, newValue);\n if (this.agPropertiesMap[attName] !== 'rowHeight' || oldValue === newValue)\n return;\n // Before the grid exists there is nothing to update — `gridOptions` picks the theme instead.\n (_a = this.gridApi) === null || _a === void 0 ? void 0 : _a.setGridOption('theme', this.getCachedTheme(toThemeRowHeight(newValue)));\n }\n /**\n * Handles extra Rapid configs\n * @override\n */\n set gridOptions(options) {\n const nextOptions = Object.assign({}, options);\n nextOptions.components = Object.assign({ [GridProRendererTypes.action]: RapidAgActionRenderer, [GridProRendererTypes.actionsMenu]: RapidAgActionsMenuRenderer, [GridProRendererTypes.boolean]: RapidBooleanRenderer, [GridProRendererTypes.editable]: RapidEditableRenderer, [GridProRendererTypes.select]: RapidAgSelectRenderer, [GridProRendererTypes.selectEditor]: RapidSelectEditor, [GridProRendererTypes.numberEditor]: RapidNumberEditor, [GridProRendererTypes.multiselectEditor]: RapidMultiselectEditor, [GridProRendererTypes.dateEditor]: RapidDateEditor, [GridProRendererTypes.stringEditor]: RapidStringEditor, [GridProRendererTypes.statusPill]: RapidStatusPillRenderer, [GridProRendererTypes.icon]: RapidIconRenderer }, nextOptions.components);\n nextOptions.theme = this.getCachedTheme(this.resolveRowHeight(nextOptions));\n super.gridOptions = nextOptions;\n }\n}\n/**\n * AG derives a cell's line-height from `min(--ag-row-height, --ag-line-height)`, and only\n * `--ag-line-height` tracks the configured `rowHeight` — `--ag-row-height` comes from the theme's\n * own default (~29px). So a grid with a taller `rowHeight` keeps the ~29px line-height and, since\n * `.ag-cell` is a block box rather than a flex one, renders its content pinned to the top of the\n * row instead of vertically centred. Feeding the configured height back in as the theme's\n * `rowHeight` param keeps both variables in agreement.\n *\n * That makes row height the one param that can't be shared, so themes are keyed by distinct\n * height, with `'default'` covering grids that don't configure one.\n */\nRapidGridProBeta.cachedThemes = new Map();\n__decorate([\n observable\n], RapidGridProBeta.prototype, \"provider\", void 0);\nexport const rapidGridProBeta = RapidGridProBeta.compose(Object.assign({ baseName: 'grid-pro', template, styles: css `\n ${agDragGhostShadowDomStyles}\n ${gridProColumnSelectionHostStyles}\n ${rowMatchAlertStyles}\n\n :host {\n width: 100%;\n height: 100%;\n }\n .ag-body-vertical-scroll-viewport,\n .ag-body-horizontal-scroll-viewport,\n .ag-horizontal-right-spacer:not(.ag-scroller-corner),\n .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n scrollbar-color: var(--ag-scrollbar-handle, var(--neutral-layer-1))\n var(--ag-scrollbar-background, var(--neutral-layer-4));\n &:hover {\n scrollbar-color: var(--neutral-fill-rest) var(--neutral-layer-4);\n }\n }\n .ag-body-horizontal-scroll-end-spacer {\n overflow: unset;\n background: var(--ag-scrollbar-background, var(--neutral-layer-4));\n }\n\n /*\n * Server-side and infinite row models: reveal the inactive (unsorted) sort icon on header\n * hover rather than always. The datasource adds .grid-pro-server-side / .grid-pro-infinite to\n * the grid host while attached; unSortIcon renders the .ag-sort-none-icon on sortable columns,\n * and these rules keep just that icon hidden until the header is hovered. Only the none icon\n * is targeted - AG shows the ascending/descending icon (and hides the none icon) once a column\n * is sorted, so a sorted column's arrow stays fully visible at rest. Matches the client-side\n * model's quiet header while keeping sortability discoverable.\n */\n .grid-pro-server-side .ag-header-cell-sortable .ag-sort-none-icon,\n .grid-pro-infinite .ag-header-cell-sortable .ag-sort-none-icon {\n opacity: 0;\n transition: opacity 0.15s ease-in-out;\n }\n .grid-pro-server-side .ag-header-cell-sortable:hover .ag-sort-none-icon,\n .grid-pro-infinite .ag-header-cell-sortable:hover .ag-sort-none-icon {\n opacity: 1;\n }\n `, shadowOptions: rapidGridProShadowOptions }, rapidDefaultGridProConfig));\n","import { textRendererStyles, AgTextRenderer as FoundationAgTextRenderer, getTextRendererTemplate, } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-grid-text-renderer\n */\nexport class RapidAgTextRenderer extends FoundationAgTextRenderer {\n}\n/**\n * The Rapid Ag Text Renderer\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-grid-text-renderer\\>\n */\nexport const rapidAgTextRenderer = RapidAgTextRenderer.compose({\n baseName: 'grid-text-renderer',\n styles: textRendererStyles,\n template: getTextRendererTemplate('rapid'),\n});\n","import { ColumnSelection, columnSelectionStyles, getColumnSelectionTemplate, } from '@genesislcap/grid-pro';\n/**\n * @tagname %%prefix%%-column-selection\n */\nexport class RapidColumnSelection extends ColumnSelection {\n}\n/**\n * Rapid Column Selection registration.\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-column-selection\\>\n */\nexport const rapidColumnSelection = RapidColumnSelection.compose({\n baseName: 'column-selection',\n template: getColumnSelectionTemplate('rapid'),\n styles: columnSelectionStyles,\n});\n","import { rapidAgNumberEditor, rapidAgSelectEditor, rapidAgStringEditor, rapidAgMultiselectEditor, rapidAgDateEditor, } from './cell-editors';\nimport { rapidAgEditableRenderer, rapidAgActionRenderer, rapidAgActionsMenuRenderer, rapidAgBooleanRenderer, rapidAgSelectRenderer, rapidAgTextRenderer, rapidStatusPillRenderer, rapidIconRenderer, } from './cell-renderers';\nimport { rapidColumnSelection } from './column-selection';\nimport { rapidGridPro } from './grid-pro';\nexport const rapidGridComponents = {\n rapidIconRenderer,\n rapidAgEditableRenderer,\n rapidAgActionRenderer,\n rapidAgActionsMenuRenderer,\n rapidAgBooleanRenderer,\n rapidAgTextRenderer,\n rapidAgSelectRenderer,\n rapidAgDateEditor,\n rapidAgMultiselectEditor,\n rapidAgSelectEditor,\n rapidAgNumberEditor,\n rapidAgStringEditor,\n rapidStatusPillRenderer,\n rapidGridPro,\n rapidColumnSelection,\n register(container, ...rest) {\n if (!container) {\n // preserve backward compatibility with code that loops through\n // the values of this object and calls them as funcs with no args\n return;\n }\n for (const key in this) {\n if (key === 'register') {\n continue;\n }\n this[key]().register(container, ...rest);\n }\n },\n};\n","/**\n * A {@link @microsoft/fast-element#ValueConverter} that converts between comma-separated string attributes\n * and `string | string[]` properties.\n *\n * @remarks\n * - fromView: \"A,B,C\" → [\"A\",\"B\",\"C\"], \"A\" → \"A\", \"\" → undefined\n * - toView: [\"A\",\"B\",\"C\"] → \"A,B,C\", \"A\" → \"A\", undefined → \"\"\n *\n * @public\n */\nexport const stringArrayConverter = {\n fromView(v) {\n if (!(v === null || v === void 0 ? void 0 : v.trim()))\n return undefined;\n return v.includes(',') ? v.split(',').map((s) => s.trim()) : v.trim();\n },\n toView(v) {\n if (typeof v === 'string')\n return v;\n if (Array.isArray(v))\n return v.join(',');\n return '';\n },\n};\n","import { css } from '@microsoft/fast-element';\n/** The CSS variable to use for specifying the dropdown's width */\nexport const dropdownWidthVar = '--dropdown-width';\n/** The CSS class to use for the options element's class in the dropdown */\nexport const optionsClass = 'options';\n/** Class name used to hide elements with display:none */\nexport const DISPLAY_NONE_CLASS = 'dnone';\n/**\n * Multicolumn Dropdown styles.\n * @public\n */\nexport const multicolumnDropdownStyles = css `\n label {\n color: var(--neutral-foreground-hint, rgb(135 155 166));\n font-style: normal;\n margin: calc(var(--design-unit) * 2px) 0;\n display: block;\n cursor: pointer;\n font-size: var(--type-ramp-base-font-size);\n line-height: var(--type-ramp-base-line-height);\n }\n\n .${DISPLAY_NONE_CLASS} {\n display: none !important;\n }\n\n .root {\n position: relative;\n width: inherit;\n min-width: 250px;\n ${dropdownWidthVar}: 350px;\n }\n\n .control {\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n border-radius: calc(var(--control-corner-radius) * 1px);\n }\n\n #display-field {\n width: 100%;\n cursor: pointer;\n color: inherit;\n min-height: 40px;\n padding-left: calc(var(--design-unit) * 2.25px);\n padding-right: 52px;\n border-width: 0;\n background: var(--neutral-fill-input-rest);\n border-radius: calc(var(--control-corner-radius) * 1px);\n text-overflow: ellipsis;\n font-size: var(--type-ramp-base-font-size);\n font-family: var(--body-font);\n }\n\n #display-field[disabled] {\n cursor: not-allowed;\n opacity: var(--disabled-opacity);\n }\n\n #display-field:focus {\n outline: 1px solid var(--accent-fill-rest);\n background: var(--neutral-fill-input-rest);\n border-style: none;\n box-shadow: none;\n }\n\n #display-field:hover:not(:focus):not([disabled]) {\n outline: 1px solid var(--neutral-stroke-hover, rgb(231 232 232));\n }\n\n button {\n pointer-events: none;\n }\n\n #arrow-icon {\n display: inline-block;\n width: 16px;\n color: currentColor;\n position: absolute;\n left: calc(100% - 26px);\n padding: 0;\n cursor: pointer;\n transform: rotate(0deg);\n transition: transform 0.2s linear 0s;\n }\n\n #arrow-icon.flipped {\n transform: rotate(180deg);\n }\n\n .cross-icon {\n display: inline-block;\n width: 12px;\n color: currentColor;\n position: absolute;\n left: calc(100% - 46px);\n padding: 0;\n cursor: pointer;\n visibility: hidden;\n }\n\n .cross-icon:hover {\n color: var(--error-color);\n }\n\n .disabled-icon {\n pointer-events: none;\n opacity: var(--disabled-opacity);\n }\n\n .${optionsClass} {\n min-width: 100%;\n width: var(${dropdownWidthVar});\n display: flex;\n flex-direction: column;\n position: absolute;\n height: max-content;\n overflow-y: hidden;\n margin: 5px 0;\n background: var(--neutral-fill-input-rest);\n visibility: hidden;\n z-index: 999;\n }\n\n .dropdown-above {\n bottom: 100%;\n }\n\n .dropdown-left {\n right: 0;\n }\n\n .grid-container {\n height: 300px;\n width: 100%;\n }\n\n #filter-search {\n padding: 5px;\n }\n\n .visible {\n visibility: visible;\n }\n`;\n","import { sync } from '@genesislcap/foundation-utils';\nimport { html, ref, slotted } from '@microsoft/fast-element';\nimport { classNames } from '@microsoft/fast-web-utilities';\nimport { gridProColumns } from '../column';\nimport { DISPLAY_NONE_CLASS, optionsClass } from './multicolumn-dropdown.styles';\n/**\n * Get a Design System prefixed Multicolumn Dropdown template.\n * @param designSystem - The design system prefix to use. Defaults to 'foundation'.\n * @returns A Multicolumn Dropdown component template prefixed with the correct design system.\n * @public\n */\nexport const getMulticolumnDropdownTemplate = (designSystem = 'foundation') => html `\n <label\n part=\"label\"\n for=\"control\"\n class=\"label ${(x) => { var _a, _b; return (_b = classNames([DISPLAY_NONE_CLASS, !((_a = x.hasSlottedContent) !== null && _a !== void 0 ? _a : false)])) !== null && _b !== void 0 ? _b : ''; }}\"\n >\n <slot\n ${slotted({\n property: 'defaultSlottedNodes',\n})}\n ></slot>\n </label>\n <div class=\"root\" part=\"root\">\n <div class=\"control\" part=\"control\">\n <${designSystem}-icon\n id=\"arrow-icon\"\n name=\"chevron-down\"\n class=\"${(x) => classNames(['flipped', x.open], ['disabled-icon', x.disabled])}\"\n @click=${(x) => !x.disabled && x.toggle()}\n ></${designSystem}-icon>\n <${designSystem}-icon\n name=\"xmark\"\n class=\"cross-icon ${(x) => classNames(['visible', !!x.value], ['disabled-icon', x.disabled])}\"\n @click=${(x) => !x.disabled && (x.value = undefined)}\n ></${designSystem}-icon>\n <input\n readonly\n type=\"text\"\n id=\"display-field\"\n part=\"display-field\"\n ?disabled=${(x) => x.disabled}\n :value=\"${(x) => x.displayValue}\"\n @click=${(x) => x.toggle()}\n />\n </div>\n <div\n ${ref('optionsElement')}\n class=\"${(x) => {\n var _a, _b, _c, _d;\n return classNames(optionsClass, ['visible', x.open], ['dropdown-above', (_b = (_a = x.dropdownPlacement) === null || _a === void 0 ? void 0 : _a.startsWith('top')) !== null && _b !== void 0 ? _b : false], ['dropdown-left', (_d = (_c = x.dropdownPlacement) === null || _c === void 0 ? void 0 : _c.endsWith('left')) !== null && _d !== void 0 ? _d : false]);\n}}\"\n >\n <${designSystem}-text-field\n id=\"filter-search\"\n part=\"filter-search\"\n placeholder=\"Search...\"\n :value=${sync((x) => x.filterSearch, 'string', 'input')}\n ?hidden=${(x) => !x.hasSearchKey}\n @change=${(x, c) => x.changeHandler(c.event)}\n ></${designSystem}-text-field>\n <div class=\"grid-container\" part=\"grid\">\n <${designSystem}-grid-pro\n ${ref('grid')}\n only-template-col-defs\n >${gridProColumns((x) => x.columnDefinitions)}</${designSystem}-grid-pro>\n </div>\n </div>\n </div>\n `;\n/**\n * The default Multicolumn Dropdown template using the 'foundation' design system prefix.\n * @public\n */\nexport const multicolumnDropdownTemplate = getMulticolumnDropdownTemplate();\n","import { __awaiter, __decorate } from \"tslib\";\nimport { Connect } from '@genesislcap/foundation-comms';\nimport { CriteriaBuilder, ExpressionBuilder, Join, Serialisers, } from '@genesislcap/foundation-criteria';\nimport { LifecycleMixin, stringArrayConverter } from '@genesislcap/foundation-utils';\nimport { attr, DOM, Observable, observable, volatile } from '@microsoft/fast-element';\nimport { FoundationElement } from '@microsoft/fast-foundation';\nimport debounce from 'lodash.debounce';\nimport { dropdownWidthVar, multicolumnDropdownStyles } from './multicolumn-dropdown.styles';\nimport { multicolumnDropdownTemplate } from './multicolumn-dropdown.template';\nconst DEBOUNCE_WAIT_MS = 300;\nconst DEFAULT_COL_DEF = {\n menuTabs: ['filterMenuTab', 'generalMenuTab', 'columnsMenuTab'],\n};\n/**\n * Checks if the given mouse event occurred outside the target element.\n * @public\n */\nexport const wasClickOutsideElement = (event, target) => !event.composedPath().includes(target);\n/**\n * Builds an equality criteria string for value lookup using foundation-criteria.\n * Properly escapes values for Groovy expressions.\n */\nfunction buildEqualityCriteria(field, value) {\n const expr = new ExpressionBuilder()\n .withField(field)\n .withValue(value !== null && value !== void 0 ? value : '')\n .withSerialiser(Serialisers.EQ)\n .withGroup('default')\n .build();\n return expr.serialiser(expr);\n}\n/**\n * Fetches a single object from a resource by matching a value key.\n * @internal\n */\nfunction getObjectFromResource(connect, resourceName, valueKey, value) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n try {\n const criteriaMatch = buildEqualityCriteria(valueKey, value);\n const message = yield connect.request(resourceName, {\n DETAILS: { CRITERIA_MATCH: criteriaMatch },\n });\n if (((_a = message.REPLY) === null || _a === void 0 ? void 0 : _a.length) === 1) {\n return message.REPLY[0];\n }\n return undefined;\n }\n catch (error) {\n console.error(`Failed to retrieve object from the ${resourceName} resource: ${error instanceof Error ? error.message : String(error)}`);\n return undefined;\n }\n });\n}\n/**\n * @beta\n * A dropdown component that displays its options in a multi-column AG Grid.\n * Search triggers a reqrep and displays the results in the grid dropdown.\n *\n * @public\n * @tagname %%prefix%%-multicolumn-dropdown\n *\n * @fires change - Fired when the selected value changes. detail: `string`\n * @fires input - Fired when the value is updated (including programmatic changes). detail: `string`\n */\nexport class MulticolumnDropdown extends LifecycleMixin(FoundationElement) {\n constructor() {\n super(...arguments);\n /**\n * Tells whether a given request supports lookup by Groovy Expressions.\n *\n * @remarks Only set this to TRUE for GPAL ReqReps when you want to search on multiple fields.\n * Custom ReqReps don't support groovy expressions for criteria match.\n */\n this.requestSupportsAdvancedSearch = false;\n this.defaultSlottedNodes = [];\n this.getAndSetRowsDebounce = debounce(() => this.getAndSetRows(), DEBOUNCE_WAIT_MS);\n this.handleClickOutside = (event) => {\n if (wasClickOutsideElement(event, this)) {\n this.open = false;\n }\n };\n }\n /** The connect service - uses DI by default, but can be manually set for dynamic element creation */\n get connect() {\n var _a;\n return (_a = this.connectOverride) !== null && _a !== void 0 ? _a : this._connectDI;\n }\n set connect(value) {\n this.connectOverride = value;\n }\n get value() {\n Observable.track(this, 'value');\n return this._value;\n }\n set value(value) {\n if (value === this._value)\n return;\n if (!value) {\n this.selectedRow = undefined;\n }\n else {\n getObjectFromResource(this.connect, this.resourceName, this.valueKey, value).then((object) => {\n if (this.value === value) {\n this.selectedRow = object;\n }\n });\n }\n this.emitValue(value);\n }\n /** Value to display in the form field */\n get displayValue() {\n return ((this.selectedRow && this.labelKey && this.selectedRow[this.labelKey]) || this.value || '');\n }\n get hasSearchKey() {\n return !!this.searchKey && this.searchKey.length > 0;\n }\n get hasSlottedContent() {\n if (!this.defaultSlottedNodes || this.defaultSlottedNodes.length === 0) {\n return false;\n }\n return this.defaultSlottedNodes.some((node) => {\n var _a;\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n if (node.nodeType === Node.TEXT_NODE) {\n return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) > 0;\n }\n return false;\n });\n }\n connectedCallback() {\n var _a;\n super.connectedCallback();\n if ((_a = this.optionsElement) === null || _a === void 0 ? void 0 : _a.style) {\n this.dropdownWidthChanged();\n }\n this.open = false;\n this.filterSearch = '';\n if (this.grid) {\n this.grid.gridOptions = {\n defaultColDef: DEFAULT_COL_DEF,\n onRowClicked: (event) => {\n this.selectedRow = event.data;\n this.emitValue(event.data[this.valueKey]);\n this.toggle();\n },\n };\n }\n }\n /**\n * Sets row data on the grid in a version-safe way.\n * AG Grid v32+ removed `setRowData` in favour of `updateGridOptions`.\n */\n setGridRowData(rows) {\n var _a;\n const api = (_a = this.grid) === null || _a === void 0 ? void 0 : _a.gridApi;\n if (!api)\n return;\n if (typeof api.updateGridOptions === 'function') {\n api.updateGridOptions({ rowData: rows });\n }\n else {\n api.setRowData(rows);\n }\n }\n /**\n * Sets column defs on the grid in a version-safe way.\n * AG Grid v32+ removed `setColumnDefs` in favour of `updateGridOptions`.\n */\n setGridColumnDefs(colDefs) {\n var _a;\n const api = (_a = this.grid) === null || _a === void 0 ? void 0 : _a.gridApi;\n if (!api)\n return;\n if (typeof api.updateGridOptions === 'function') {\n api.updateGridOptions({ columnDefs: colDefs });\n }\n else {\n api.setColumnDefs(colDefs);\n }\n }\n /**\n * Emits 'change' and 'input' events so that the `sync` directive and forms work correctly.\n */\n emitValue(value) {\n this._value = value;\n this.$emit('change', value);\n this.$emit('input', value);\n Observable.notify(this, 'value');\n }\n toggle() {\n this.open = !this.open;\n }\n getAndSetRows() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n if (!((_a = this.grid) === null || _a === void 0 ? void 0 : _a.gridApi))\n return;\n const request = (this.lastRequest = {});\n const requestParams = this.request ? { REQUEST: Object.assign({}, this.request) } : {};\n const searchKey = Array.isArray(this.searchKey) && this.searchKey.length === 1\n ? this.searchKey[0]\n : this.searchKey;\n let criteriaMatch;\n if (searchKey && this.filterSearch) {\n if (!this.requestSupportsAdvancedSearch) {\n if (Array.isArray(searchKey))\n throw Error('MulticolumnDropdown: Unable to search multiple keys via request; if the request is a GPAL ReqRep, set requestSupportsAdvancedSearch to true');\n requestParams.REQUEST = Object.assign(Object.assign({}, requestParams.REQUEST), { [searchKey]: `*${this.filterSearch}*` });\n }\n else {\n const searchKeys = Array.isArray(searchKey) ? searchKey : [searchKey];\n const searchExpressions = searchKeys.map((sk) => {\n var _a;\n return new ExpressionBuilder()\n .withField(sk)\n .withValue((_a = this.filterSearch) !== null && _a !== void 0 ? _a : '')\n .withSerialiser(Serialisers.containsIgnoreCase)\n .withGroup('default')\n .build();\n });\n const searchBuilder = new CriteriaBuilder();\n searchBuilder.Or(searchExpressions, { join: Join.Or() });\n criteriaMatch = searchBuilder.build();\n }\n }\n const trimmedBaseCriteria = (_b = this.baseCriteria) === null || _b === void 0 ? void 0 : _b.trim();\n if (trimmedBaseCriteria && criteriaMatch) {\n criteriaMatch = `(${criteriaMatch}) && (${trimmedBaseCriteria})`;\n }\n else if (trimmedBaseCriteria) {\n criteriaMatch = trimmedBaseCriteria;\n }\n if (criteriaMatch) {\n requestParams.DETAILS = { CRITERIA_MATCH: criteriaMatch };\n }\n try {\n const message = yield this.connect.request(this.resourceName, requestParams);\n if (request !== this.lastRequest)\n return;\n const rows = (message === null || message === void 0 ? void 0 : message.REPLY) || [];\n this.setGridRowData(rows);\n if (rows.length > 0) {\n this.grid.gridApi.hideOverlay();\n }\n else {\n this.grid.gridApi.showNoRowsOverlay();\n }\n }\n catch (error) {\n console.error(`Failed to retrieve rows from the ${this.resourceName} resource: ${error instanceof Error ? error.message : String(error)}`);\n }\n });\n }\n filterSearchChanged() {\n var _a, _b;\n if (!this.open)\n return;\n (_b = (_a = this.grid) === null || _a === void 0 ? void 0 : _a.gridApi) === null || _b === void 0 ? void 0 : _b.showLoadingOverlay();\n this.getAndSetRowsDebounce();\n }\n requestChanged() {\n var _a, _b;\n if (!this.open)\n return;\n (_b = (_a = this.grid) === null || _a === void 0 ? void 0 : _a.gridApi) === null || _b === void 0 ? void 0 : _b.showLoadingOverlay();\n this.getAndSetRows();\n }\n columnDefinitionsChanged() {\n this.setGridColumnDefs(this.columnDefinitions);\n }\n openChanged() {\n var _a, _b;\n if (this.open) {\n document.addEventListener('mousedown', this.handleClickOutside);\n if ((_a = this.grid) === null || _a === void 0 ? void 0 : _a.gridApi) {\n this.grid.gridApi.showLoadingOverlay();\n this.getAndSetRows();\n }\n }\n else {\n document.removeEventListener('mousedown', this.handleClickOutside);\n this.filterSearch = '';\n if ((_b = this.grid) === null || _b === void 0 ? void 0 : _b.gridApi) {\n this.setGridRowData([]);\n }\n }\n }\n dropdownWidthChanged() {\n var _a, _b;\n (_b = (_a = this.optionsElement) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.setProperty(dropdownWidthVar, this.dropdownWidth > 0 ? `${this.dropdownWidth}px` : 'inherit');\n }\n disconnectedCallback() {\n document.removeEventListener('mousedown', this.handleClickOutside);\n super.disconnectedCallback();\n const shouldRunDisconnect = this.shouldRunDisconnect;\n DOM.queueUpdate(() => {\n var _a;\n if (!shouldRunDisconnect)\n return;\n if ((_a = this.grid) === null || _a === void 0 ? void 0 : _a.gridApi) {\n this.setGridRowData([]);\n }\n this.selectedRow = undefined;\n this._value = undefined;\n });\n }\n changeHandler(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n}\n__decorate([\n Connect\n], MulticolumnDropdown.prototype, \"_connectDI\", void 0);\n__decorate([\n attr({ mode: 'boolean' })\n], MulticolumnDropdown.prototype, \"disabled\", void 0);\n__decorate([\n attr({ attribute: 'resource-name' })\n], MulticolumnDropdown.prototype, \"resourceName\", void 0);\n__decorate([\n attr({ attribute: 'search-key', converter: stringArrayConverter })\n], MulticolumnDropdown.prototype, \"searchKey\", void 0);\n__decorate([\n attr({ attribute: 'advanced-search-req', mode: 'boolean' })\n], MulticolumnDropdown.prototype, \"requestSupportsAdvancedSearch\", void 0);\n__decorate([\n attr({ attribute: 'value-key' })\n], MulticolumnDropdown.prototype, \"valueKey\", void 0);\n__decorate([\n attr({ attribute: 'label-key' })\n], MulticolumnDropdown.prototype, \"labelKey\", void 0);\n__decorate([\n attr({ attribute: 'dropdown-placement' })\n], MulticolumnDropdown.prototype, \"dropdownPlacement\", void 0);\n__decorate([\n attr\n], MulticolumnDropdown.prototype, \"dropdownWidth\", void 0);\n__decorate([\n observable\n], MulticolumnDropdown.prototype, \"request\", void 0);\n__decorate([\n observable\n], MulticolumnDropdown.prototype, \"columnDefinitions\", void 0);\n__decorate([\n observable\n], MulticolumnDropdown.prototype, \"baseCriteria\", void 0);\n__decorate([\n observable\n], MulticolumnDropdown.prototype, \"defaultSlottedNodes\", void 0);\n__decorate([\n observable\n], MulticolumnDropdown.prototype, \"filterSearch\", void 0);\n__decorate([\n observable\n], MulticolumnDropdown.prototype, \"open\", void 0);\n__decorate([\n observable\n], MulticolumnDropdown.prototype, \"selectedRow\", void 0);\n__decorate([\n volatile\n], MulticolumnDropdown.prototype, \"displayValue\", null);\n__decorate([\n volatile\n], MulticolumnDropdown.prototype, \"hasSearchKey\", null);\n__decorate([\n volatile\n], MulticolumnDropdown.prototype, \"hasSlottedContent\", null);\n/**\n * A function that returns a Multicolumn Dropdown registration for configuring the component with a DesignSystem.\n *\n * @public\n * @remarks\n * HTML Element: \\<foundation-multicolumn-dropdown\\>\n */\nexport const foundationMulticolumnDropdown = MulticolumnDropdown.compose({\n baseName: 'multicolumn-dropdown',\n template: multicolumnDropdownTemplate,\n styles: multicolumnDropdownStyles,\n});\n","import { MulticolumnDropdown, getMulticolumnDropdownTemplate, multicolumnDropdownStyles, } from '@genesislcap/grid-pro';\n/**\n * A function that returns a Rapid Multicolumn Dropdown registration for configuring the component\n * with the Rapid Design System.\n *\n * @public\n * @remarks\n * HTML Element: \\<rapid-multicolumn-dropdown\\>\n */\nexport const rapidMulticolumnDropdown = MulticolumnDropdown.compose({\n baseName: 'multicolumn-dropdown',\n template: getMulticolumnDropdownTemplate('rapid'),\n styles: multicolumnDropdownStyles,\n});\n","import { datasourceEventNames, } from '../grid-pro-genesis-datasource/datasource-events.types';\nimport { matchesRowCriteria } from './row-match.types';\n/**\n * Tracks which datasource rows satisfy {@link RowMatchCriteria} as stream updates arrive,\n * and reports whether any currently do.\n *\n * Rows are tracked incrementally from `add` / `update` / `remove` deltas rather than by\n * rescanning the grid, so cost is proportional to the update rather than to the row count.\n *\n * The typical consumer flags a tab while a background grid still holds rows needing\n * attention:\n *\n * ```ts\n * const tracker = new DatasourceRowMatchTracker(\n * { rowIdField: 'ORDER_ID', stateField: 'ORDER_STATE', stateValue: 'PENDING' },\n * (active) => { tab.alert = active; },\n * );\n * const stop = tracker.observe(datasourceElement);\n * ```\n *\n * Frameworks that surface the datasource events as props can feed the tracker directly with\n * {@link DatasourceRowMatchTracker.handleDataChanged} and\n * {@link DatasourceRowMatchTracker.handleDataCleared} instead of calling `observe`.\n *\n * Passing the same criteria to `createRowMatchClassRules` flashes the matching rows themselves, so\n * a tab that says there is work to do leads to a grid that shows which rows it meant.\n *\n * Criteria are fixed for the tracker's life. To watch for something else, build a new tracker and\n * reload the datasource, so rows already delivered are replayed against the new rules.\n *\n * @public\n */\nexport class DatasourceRowMatchTracker {\n constructor(criteria, onActiveChanged) {\n this.criteria = criteria;\n this.onActiveChanged = onActiveChanged;\n this.matchedRowIds = new Set();\n this.lastReportedActive = false;\n }\n /** True while at least one tracked row matches. */\n get active() {\n return this.matchedRowIds.size > 0;\n }\n /** How many tracked rows currently match. */\n get matchCount() {\n return this.matchedRowIds.size;\n }\n /**\n * Forgets every tracked row. Call when the grid's filter or search criteria change, so a\n * stale alert does not survive into a result set that no longer contains those rows.\n */\n reset() {\n this.matchedRowIds.clear();\n this.report();\n }\n /** Applies a `datasource-data-changed` detail. */\n handleDataChanged(detail) {\n var _a;\n const { add = [], update = [], remove = [] } = (_a = detail === null || detail === void 0 ? void 0 : detail.changes) !== null && _a !== void 0 ? _a : {};\n for (const row of remove) {\n this.syncRow(row, true);\n }\n for (const row of add) {\n this.syncRow(row, false);\n }\n for (const row of update) {\n this.syncRow(row, false);\n }\n this.report();\n }\n /** Applies a `datasource-data-cleared` event. */\n handleDataCleared() {\n this.reset();\n }\n /**\n * Subscribes to the datasource events on `target`.\n *\n * @returns a function that removes the listeners.\n */\n observe(target) {\n const onChanged = (event) => {\n this.handleDataChanged(event.detail);\n };\n const onCleared = () => {\n this.handleDataCleared();\n };\n target.addEventListener(datasourceEventNames.dataChanged, onChanged);\n target.addEventListener(datasourceEventNames.dataCleared, onCleared);\n return () => {\n target.removeEventListener(datasourceEventNames.dataChanged, onChanged);\n target.removeEventListener(datasourceEventNames.dataCleared, onCleared);\n };\n }\n syncRow(row, removed) {\n var _a;\n if (!row) {\n return;\n }\n const id = String((_a = row[this.criteria.rowIdField]) !== null && _a !== void 0 ? _a : '');\n if (!id) {\n return;\n }\n if (removed || !matchesRowCriteria(this.criteria, row)) {\n this.matchedRowIds.delete(id);\n return;\n }\n this.matchedRowIds.add(id);\n }\n report() {\n const active = this.active;\n if (active === this.lastReportedActive) {\n return;\n }\n this.lastReportedActive = active;\n this.onActiveChanged(active);\n }\n}\n","import { foundationSelectEditor, foundationNumberEditor, foundationMultiselectEditor, foundationDateEditor, foundationStringEditor, } from './cell-editors';\nimport { foundationGridProActionRenderer, foundationGridProActionsMenuRenderer, foundationAgBooleanRenderer, foundationAgEditableRenderer, foundationAgSelectRenderer, foundationAgTextRenderer, foundationAgTextFieldRenderer, foundationStatusPillRenderer, StatusPillRenderer, foundationIconRenderer, } from './cell-renderers';\nimport { foundationGridPro } from './grid-pro';\nimport { foundationMulticolumnDropdown } from './multicolumn-dropdown';\n/**\n * The Grid Pro Components.\n * @remarks Contains all available components, from Grid Pro itself to the cell renderers.\n * @public\n */\nexport const foundationGridComponents = {\n foundationIconRenderer,\n foundationGridProActionRenderer,\n foundationGridProActionsMenuRenderer,\n foundationAgBooleanRenderer,\n foundationAgTextRenderer,\n foundationAgTextFieldRenderer,\n foundationAgEditableRenderer,\n foundationAgSelectRenderer,\n foundationSelectEditor,\n foundationNumberEditor,\n foundationDateEditor,\n foundationMultiselectEditor,\n foundationStringEditor,\n foundationMulticolumnDropdown,\n foundationStatusPillRenderer,\n StatusPillRenderer,\n foundationGridPro,\n register(container, ...rest) {\n if (!container) {\n // preserve backward compatibility with code that loops through\n // the values of this object and calls them as funcs with no args\n return;\n }\n for (const key in this) {\n if (key === 'register') {\n continue;\n }\n this[key]().register(container, ...rest);\n }\n },\n};\n","/**\n * Colors offered by default. Each resolves a design token so the menu follows the host\n * application's theme, falling back to a fixed color for design systems that lack the token.\n *\n * @public\n */\nexport const defaultRowAlertColorPresets = [\n { id: 'error', label: 'Error', value: 'var(--error-fill-rest, #c62828)' },\n { id: 'warning', label: 'Warning', value: 'var(--warning-fill-rest, #ef6c00)' },\n { id: 'success', label: 'Success', value: 'var(--success-fill-rest, #2e7d32)' },\n { id: 'accent', label: 'Accent', value: 'var(--accent-fill-rest, #1565c0)' },\n { id: 'neutral', label: 'Neutral', value: 'var(--neutral-fill-rest, #546e7a)' },\n];\n/**\n * Flash rates offered by default.\n *\n * @public\n */\nexport const defaultRowAlertRatePresets = [\n { id: 'slow', label: 'Slow', value: 1400 },\n { id: 'normal', label: 'Normal', value: 1000 },\n { id: 'fast', label: 'Fast', value: 500 },\n];\n/**\n * Flash targets offered by default. Cell scope only has an effect when the criteria name a\n * `flashField`.\n *\n * @public\n */\nexport const defaultRowAlertScopePresets = [\n { id: 'row', label: 'Whole row', value: 'row' },\n { id: 'cell', label: 'Alert field cell', value: 'cell' },\n];\n/**\n * Where preferences start before a user changes anything.\n *\n * @public\n */\nexport const defaultRowAlertPreferences = {\n color: defaultRowAlertColorPresets[0].value,\n durationMs: defaultRowAlertRatePresets[1].value,\n scope: 'row',\n};\n/**\n * Discards anything unusable from stored preferences, so a hand-edited or outdated entry falls\n * back to the default rather than leaving alerts invisible.\n *\n * @internal\n */\nexport function normalizeRowAlertPreferences(value) {\n const color = typeof (value === null || value === void 0 ? void 0 : value.color) === 'string' && value.color.trim().length > 0\n ? value.color\n : defaultRowAlertPreferences.color;\n const durationMs = typeof (value === null || value === void 0 ? void 0 : value.durationMs) === 'number' &&\n Number.isFinite(value.durationMs) &&\n value.durationMs > 0\n ? value.durationMs\n : defaultRowAlertPreferences.durationMs;\n const scope = (value === null || value === void 0 ? void 0 : value.scope) === 'row' || (value === null || value === void 0 ? void 0 : value.scope) === 'cell'\n ? value.scope\n : defaultRowAlertPreferences.scope;\n return { color, durationMs, scope };\n}\n","import { DI } from '@microsoft/fast-foundation';\nimport { createRowMatchCellClassRules, createRowMatchClassRules, ROW_MATCH_ALERT_CELL_CLASS, ROW_MATCH_ALERT_CLASS, } from '../datasource/row-match.classes';\nimport { StatePersistence } from '../state-persistence/state-persistence';\nimport { logger } from '../utils';\nimport { defaultRowAlertColorPresets, defaultRowAlertPreferences, defaultRowAlertRatePresets, defaultRowAlertScopePresets, normalizeRowAlertPreferences, } from './row-alert.types';\n/** CSS variable read by the row flash styles. */\nconst ROW_ALERT_COLOR_PROPERTY = '--row-alert-color';\n/** CSS variable read by the shared flash clock, and so by every alerting surface on the page. */\nconst ALERT_FLASH_DURATION_PROPERTY = '--alert-flash-duration';\nfunction resolveStatePersistence(options) {\n if (options.statePersistence) {\n return options.statePersistence;\n }\n try {\n return DI.getOrCreateDOMContainer().get(StatePersistence);\n }\n catch (error) {\n logger.debug('Row alert preferences will not persist; no StatePersistence available', error);\n return undefined;\n }\n}\n/**\n * One store per persistence key, so a page whose grids each build their own alert still presents\n * a single preference: recolouring from one grid's menu is reflected in every other's.\n */\nconst storesByKey = new Map();\nfunction createPreferenceStore(options) {\n const { persistPreferencesKey, target, mirrorColorTo = [] } = options;\n const statePersistence = persistPreferencesKey ? resolveStatePersistence(options) : undefined;\n const subscribers = new Set();\n let preferences = normalizeRowAlertPreferences(Object.assign(Object.assign({}, defaultRowAlertPreferences), options.preferences));\n function applyStyles() {\n const element = target !== null && target !== void 0 ? target : (typeof document === 'undefined' ? undefined : document.documentElement);\n if (!element) {\n return;\n }\n element.style.setProperty(ROW_ALERT_COLOR_PROPERTY, preferences.color);\n element.style.setProperty(ALERT_FLASH_DURATION_PROPERTY, `${preferences.durationMs}ms`);\n for (const property of mirrorColorTo) {\n element.style.setProperty(property, preferences.color);\n }\n }\n function apply(next, persist) {\n preferences = next;\n applyStyles();\n for (const subscriber of subscribers) {\n subscriber(preferences);\n }\n if (persist && persistPreferencesKey && (statePersistence === null || statePersistence === void 0 ? void 0 : statePersistence.saveRowAlertPreferences)) {\n statePersistence\n .saveRowAlertPreferences(persistPreferencesKey, preferences)\n .catch((error) => {\n logger.warn('Could not save row alert preferences', error);\n });\n }\n }\n applyStyles();\n if (persistPreferencesKey && (statePersistence === null || statePersistence === void 0 ? void 0 : statePersistence.getRowAlertPreferences)) {\n statePersistence\n .getRowAlertPreferences(persistPreferencesKey)\n .then((stored) => {\n // Only adopt what was actually stored, so a partial entry keeps the caller's starting\n // preferences for the rest rather than snapping them back to the library defaults.\n apply(normalizeRowAlertPreferences(Object.assign(Object.assign({}, preferences), stored)), false);\n })\n .catch((error) => {\n logger.warn('Could not load row alert preferences', error);\n });\n }\n return {\n get preferences() {\n return preferences;\n },\n change(patch) {\n apply(normalizeRowAlertPreferences(Object.assign(Object.assign({}, preferences), patch)), true);\n },\n subscribe(listener) {\n subscribers.add(listener);\n return () => {\n subscribers.delete(listener);\n };\n },\n };\n}\nfunction resolvePreferenceStore(options) {\n const { persistPreferencesKey } = options;\n if (!persistPreferencesKey) {\n return createPreferenceStore(options);\n }\n let store = storesByKey.get(persistPreferencesKey);\n if (!store) {\n store = createPreferenceStore(options);\n storesByKey.set(persistPreferencesKey, store);\n }\n return store;\n}\n/**\n * Builds the class rules that flash rows matching `criteria`, together with the context menu\n * that lets a user recolor, retime, or narrow that flash to a single cell.\n *\n * The rules are created once and never replaced, because a grid backed by a Genesis datasource\n * keeps the options it was created with — handing it new rules later would change nothing. Each\n * rule instead asks, as it runs, whether its scope is the one currently selected, so switching\n * target only needs the rows redrawn.\n *\n * ```ts\n * const alert = createRowAlert(criteria, { persistPreferencesKey: 'orders.row-alert' });\n * gridOptions = {\n * rowClassRules: alert.rowClassRules,\n * defaultColDef: alert.defaultColDef,\n * getContextMenuItems: alert.getContextMenuItems,\n * };\n * ```\n *\n * Alerts sharing a `persistPreferencesKey` share their preferences, so a page of grids that each\n * watch for something different still answers to one setting.\n *\n * Pairs with {@link DatasourceRowMatchTracker}: give both the same criteria and a tab can say\n * there is work to do while the grid shows which rows it meant.\n *\n * @public\n */\nexport function createRowAlert(criteria, options = {}) {\n var _a, _b, _c, _d, _e;\n const { colorPresets = defaultRowAlertColorPresets, ratePresets = defaultRowAlertRatePresets, menuLabel = 'Alert flash', } = options;\n const store = resolvePreferenceStore(options);\n const rowMatches = createRowMatchClassRules(criteria)[ROW_MATCH_ALERT_CLASS];\n // Criteria that name no explicit flashField still need one for cell scope to mean anything, and\n // the field the state is read from is the one that made the row interesting.\n const cellMatches = createRowMatchCellClassRules(Object.assign(Object.assign({}, criteria), { flashField: (_b = (_a = criteria.flashField) !== null && _a !== void 0 ? _a : criteria.stateField) !== null && _b !== void 0 ? _b : (_e = (_d = (_c = criteria.anyOf) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.field }))[ROW_MATCH_ALERT_CELL_CLASS];\n function presetItems(presets, selected, change, onChosen) {\n return presets.map((preset) => ({\n name: preset.label,\n checked: preset.value === selected,\n action: () => {\n store.change(change(preset.value));\n onChosen();\n },\n }));\n }\n const rowAlert = {\n rowClassRules: {\n [ROW_MATCH_ALERT_CLASS]: (params) => store.preferences.scope === 'row' && rowMatches(params),\n },\n defaultColDef: {\n cellClassRules: {\n [ROW_MATCH_ALERT_CELL_CLASS]: (params) => store.preferences.scope === 'cell' && cellMatches(params),\n },\n },\n get preferences() {\n return store.preferences;\n },\n createMenuItem(api) {\n // Color and rate reach the rows through CSS variables, but scope decides which rule\n // applies, and rules are only consulted as a row renders.\n const redrawRows = () => { var _a; return (_a = api === null || api === void 0 ? void 0 : api.redrawRows) === null || _a === void 0 ? void 0 : _a.call(api); };\n return {\n name: menuLabel,\n subMenu: [\n {\n name: 'Flash target',\n subMenu: presetItems(defaultRowAlertScopePresets, store.preferences.scope, (scope) => ({ scope }), redrawRows),\n },\n {\n name: 'Color',\n subMenu: presetItems(colorPresets, store.preferences.color, (color) => ({ color }), () => undefined),\n },\n {\n name: 'Flash rate',\n subMenu: presetItems(ratePresets, store.preferences.durationMs, (durationMs) => ({ durationMs }), () => undefined),\n },\n {\n name: 'Reset to defaults',\n action: () => {\n rowAlert.reset();\n redrawRows();\n },\n },\n ],\n };\n },\n getContextMenuItems(params) {\n var _a;\n return [...((_a = params.defaultItems) !== null && _a !== void 0 ? _a : []), 'separator', rowAlert.createMenuItem(params.api)];\n },\n setPreferences(patch) {\n store.change(patch);\n },\n reset() {\n store.change(defaultRowAlertPreferences);\n },\n subscribe(listener) {\n return store.subscribe(listener);\n },\n };\n return rowAlert;\n}\n","const base64Pattern = /^(?:[A-Za-z0-9+/]{4})*?(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n/**\n * Decodes a value from base64.\n * @public\n * @param value - The value to decode from base64.\n * @returns The decoded value.\n */\nexport const decodeFromBase64 = (base64Value) => {\n if (base64Pattern.test(base64Value)) {\n const decodedString = atob(base64Value);\n const buffer = new Uint8Array(decodedString.length);\n [...decodedString].forEach((_, i) => {\n buffer[i] = decodedString.charCodeAt(i);\n });\n return buffer.buffer;\n }\n return base64Value;\n};\n/**\n * Decodes a value from base64 with a prefix.\n * @remarks Prefixes are: 'str:' for string and 'bin:' for ArrayBuffer.\n * @public\n * @param value - The value to decode from base64.\n * @returns The decoded value.\n */\nexport const decodeFromBase64WithPrefix = (value) => {\n const parts = value.split(':');\n let prefix;\n let base64Value;\n if (parts.length === 2) {\n [prefix, base64Value] = parts;\n }\n else {\n base64Value = value;\n }\n const decodedValue = decodeFromBase64(base64Value);\n if (prefix === 'str') {\n const textDecoder = new TextDecoder('utf-8');\n return textDecoder.decode(decodedValue);\n }\n else if (prefix === 'bin') {\n return decodedValue;\n }\n return decodedValue;\n};\n","/**\n * Encodes the given value to base64.\n * @public\n * @param value - The value to encode to base64.\n * @returns The base64 encoded value.\n */\nexport const encodeToBase64 = (value) => {\n if (typeof value === 'string') {\n return btoa(value);\n }\n else if (value instanceof ArrayBuffer) {\n const buffer = new Uint8Array(value);\n const binaryString = buffer.reduce((data, byte) => data + String.fromCharCode(byte), '');\n return btoa(binaryString);\n }\n return '';\n};\n/**\n * Encodes the given value with a prefix to base64.\n * @remarks Prefixes are: 'str:' for string and 'bin:' for ArrayBuffer.\n * @public\n * @param value - The value to encode to base64.\n * @returns The base64 encoded value with a prefix.\n */\nexport const encodeToBase64WithPrefix = (value) => {\n const base64Value = encodeToBase64(value);\n if (typeof value === 'string') {\n return `str:${base64Value}`;\n }\n else if (value instanceof ArrayBuffer) {\n return `bin:${base64Value}`;\n }\n return '';\n};\n","import { DI } from '@microsoft/fast-foundation';\n/**\n * The default configuration for the KVStorage service.\n * @alpha\n */\nexport const defaultKVStorageConfig = {\n account: 'genesis',\n namespace: 'default',\n authKey: 'kv-default',\n authEmail: undefined,\n};\n/**\n * KVStorageConfig DI key.\n *\n * @internal\n */\nexport const KVStorageConfig = DI.createInterface();\n","/**\n * KV Message types\n * @alpha\n */\nexport var KVMessageType;\n(function (KVMessageType) {\n KVMessageType[\"REQ_KEY_VALUE_LIST\"] = \"REQ_KEY_VALUE_LIST\";\n KVMessageType[\"REQ_KEY_VALUE_READ\"] = \"REQ_KEY_VALUE_READ\";\n})(KVMessageType || (KVMessageType = {}));\n/**\n * KV Event Message types\n * @alpha\n */\nexport var KVEventMessageType;\n(function (KVEventMessageType) {\n KVEventMessageType[\"EVENT_KEY_VALUE_PUT\"] = \"EVENT_KEY_VALUE_PUT\";\n KVEventMessageType[\"EVENT_KEY_VALUE_DELETE\"] = \"EVENT_KEY_VALUE_DELETE\";\n})(KVEventMessageType || (KVEventMessageType = {}));\n","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { User } from '@genesislcap/foundation-user';\nimport { decodeFromBase64WithPrefix, encodeToBase64WithPrefix, } from '@genesislcap/foundation-utils';\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport { Connect } from '../../connect';\nimport { defaultKVStorageConfig, KVStorageConfig } from './kv-config.service';\nimport { KVEventMessageType, KVMessageType, } from './kv.types';\n/**\n * The default implementation for the KVStorage interface.\n * @alpha\n */\nlet DefaultKVStorage = class DefaultKVStorage {\n constructor(connect, user, kvStorageConfig = defaultKVStorageConfig) {\n this.connect = connect;\n this.user = user;\n this.kvStorageConfig = kvStorageConfig;\n }\n /**\n * Deletes the specified key-value pairs from the KV storage.\n * @alpha\n * @param kvs - The key names to delete.\n * @returns A promise that resolves to true if the operation was successful, or an object containing error and warning information if the operation failed.\n * @example\n * ```ts\n * ...\n * const result = await this.kvStorage.delete(['myKey']);\n * logger.debug(result); // true or { ERROR: ..., WARNING: ... }\n * ...\n * ```\n */\n delete(keys) {\n return __awaiter(this, void 0, void 0, function* () {\n const params = {\n DETAILS: {\n KEYS: keys,\n },\n };\n const result = yield this.connect.commitEvent(KVEventMessageType.EVENT_KEY_VALUE_DELETE, params);\n if (result && result.MESSAGE_TYPE === 'EVENT_ACK') {\n return true;\n }\n else {\n return { ERROR: result.ERROR, WARNING: result.WARNING };\n }\n });\n }\n get(key) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const params = {\n REQUEST: {\n USER_NAME: (_a = this.kvStorageConfig.authEmail) !== null && _a !== void 0 ? _a : this.user.userName,\n KEY: key,\n },\n };\n const result = yield this.connect.request(KVMessageType.REQ_KEY_VALUE_READ, params);\n if (result && result.REPLY && result.REPLY.length > 0) {\n const kvs = result.REPLY.map((kv) => {\n const decodedValue = this.getDecodedValue(kv.VALUE);\n return {\n kv: { key: kv.KEY, value: decodedValue },\n };\n });\n return key ? kvs[0] : kvs;\n }\n else {\n return key ? undefined : [];\n }\n });\n }\n getDecodedValue(value) {\n // For backwards compatibility, we need a prefix\n if (!value.startsWith('str:') && !value.startsWith('bin:')) {\n value = `str:${value}`;\n }\n let decodedValue = decodeFromBase64WithPrefix(value);\n // These checks below only apply if `put` was called with `base64: true`\n if (typeof decodedValue === 'string' && decodedValue.startsWith('str:')) {\n decodedValue = decodeFromBase64WithPrefix(decodedValue);\n }\n if (typeof decodedValue === 'string' && decodedValue.startsWith('bin:')) {\n decodedValue = decodeFromBase64WithPrefix(decodedValue);\n }\n return decodedValue;\n }\n /**\n * Lists all keys for the user.\n * @alpha\n * @returns A promise that resolves to all keys for the user.\n * @example\n * ```ts\n * ...\n * const result = await this.kvStorage.list();\n * logger.debug(result); // ['myKey', 'myOtherKey']\n * ...\n * ```\n */\n list() {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const params = {\n REQUEST: {\n USER_NAME: (_a = this.kvStorageConfig.authEmail) !== null && _a !== void 0 ? _a : this.user.userName,\n },\n };\n const result = yield this.connect.request(KVMessageType.REQ_KEY_VALUE_LIST, params);\n if (result && result.REPLY && result.REPLY.length > 0) {\n const keys = result.REPLY.map((kv) => kv.KEY);\n return keys;\n }\n else {\n return [];\n }\n });\n }\n /**\n * Inserts or updates the specified key-value pairs in the KV storage.\n * @alpha\n * @param kvs - The key-value pairs to insert or update.\n * @returns A promise that resolves to true if the operation was successful, or an object containing error and warning information if the operation failed.\n * @example\n * ```ts\n * ...\n * const result = await this.kvStorage.put([{ key: 'myKey', value: 'myValue' }]);\n * logger.debug(result); // true or { ERROR: ..., WARNING: ... }\n * ...\n * ```\n */\n put(kvs) {\n return __awaiter(this, void 0, void 0, function* () {\n const params = {\n DETAILS: {\n RECORDS: kvs.map((kv) => {\n return {\n KEY: kv.key,\n VALUE: kv.base64 ? encodeToBase64WithPrefix(kv.value) : kv.value,\n };\n }),\n },\n };\n const result = yield this.connect.commitEvent(KVEventMessageType.EVENT_KEY_VALUE_PUT, params);\n if (result && result.MESSAGE_TYPE === 'EVENT_ACK') {\n return true;\n }\n else {\n return { ERROR: result.ERROR, WARNING: result.WARNING };\n }\n });\n }\n};\nDefaultKVStorage = __decorate([\n __param(0, Connect),\n __param(1, User),\n __param(2, optional(KVStorageConfig))\n], DefaultKVStorage);\nexport { DefaultKVStorage };\n/**\n * The DI token for the KVStorage interface.\n * @internal\n */\nexport const KVStorage = DI.createInterface((x) => x.singleton(DefaultKVStorage));\n/**\n * Gets KVStorage from the DI container.\n *\n * @remarks\n * A utility method for host applications that are not using decorators or the DI container.\n *\n * @example\n * ```ts\n * import { getKVStorage } from '@genesislcap/foundation-comms';\n * ...\n * private kvStorage = getKVStorage();\n * ```\n *\n * @public\n */\nexport function getKVStorage() {\n return DI.getOrCreateDOMContainer().get(KVStorage);\n}\n","import { __awaiter, __decorate } from \"tslib\";\nimport { KVStorage, Session } from '@genesislcap/foundation-comms';\nimport { logger } from '../utils';\n/**\n * Implementation for the KV Storage State Persistence interface.\n * @public\n */\nexport class KVStorageStatePersistence {\n getColumnState(persistColumnStateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n yield this.migrateLocalStorageToKVStorage(persistColumnStateKey);\n const kvColumnState = yield this.kvStorage.get(persistColumnStateKey);\n const storageColumnState = kvColumnState ? (_a = kvColumnState.kv) === null || _a === void 0 ? void 0 : _a.value : undefined;\n if (storageColumnState) {\n return JSON.parse(storageColumnState);\n }\n return [];\n });\n }\n saveColumnState(persistColumnStateKey, columnState) {\n return __awaiter(this, void 0, void 0, function* () {\n this.kvStorage.put([\n {\n key: persistColumnStateKey,\n value: JSON.stringify(columnState),\n },\n ]);\n });\n }\n deleteColumnState(persistColumnStateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n this.kvStorage.delete([persistColumnStateKey]);\n });\n }\n migrateLocalStorageToKVStorage(persistColumnStateKey) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const kv = yield this.kvStorage.get(persistColumnStateKey);\n if (kv && ((_a = kv.kv) === null || _a === void 0 ? void 0 : _a.value))\n return;\n const localGridOptions = this.session.getLocalStorageItem('gridOptions');\n const localState = localGridOptions\n ? JSON.parse(localGridOptions)[persistColumnStateKey]\n : undefined;\n if (localState) {\n logger.debug(`Columns state migration for key: ${persistColumnStateKey} from LocalStorage to KV Storage`);\n this.kvStorage.put([\n {\n key: persistColumnStateKey,\n value: localState,\n },\n ]);\n }\n });\n }\n getFilterModel(persistFilterModelKey) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const kvFilterModel = yield this.kvStorage.get(persistFilterModelKey);\n const storageFilterModel = kvFilterModel ? (_a = kvFilterModel.kv) === null || _a === void 0 ? void 0 : _a.value : undefined;\n if (storageFilterModel) {\n return JSON.parse(storageFilterModel);\n }\n return {};\n });\n }\n saveFilterModel(persistFilterModelKey, filterModel) {\n return __awaiter(this, void 0, void 0, function* () {\n this.kvStorage.put([\n {\n key: persistFilterModelKey,\n value: JSON.stringify(filterModel),\n },\n ]);\n });\n }\n getRowAlertPreferences(persistRowAlertKey) {\n return __awaiter(this, void 0, void 0, function* () {\n var _a;\n const kvPreferences = yield this.kvStorage.get(persistRowAlertKey);\n const storedPreferences = kvPreferences ? (_a = kvPreferences.kv) === null || _a === void 0 ? void 0 : _a.value : undefined;\n if (storedPreferences) {\n return JSON.parse(storedPreferences);\n }\n return {};\n });\n }\n saveRowAlertPreferences(persistRowAlertKey, preferences) {\n return __awaiter(this, void 0, void 0, function* () {\n this.kvStorage.put([\n {\n key: persistRowAlertKey,\n value: JSON.stringify(preferences),\n },\n ]);\n });\n }\n}\n__decorate([\n KVStorage\n], KVStorageStatePersistence.prototype, \"kvStorage\", void 0);\n__decorate([\n Session\n], KVStorageStatePersistence.prototype, \"session\", void 0);\n","import { parseColorHexRGB } from '@microsoft/fast-colors';\nimport { SwatchRGB } from '@microsoft/fast-components';\n/**\n * The background color swatch.\n * @internal\n * @deprecated - only used in the deprecated ag-theme-material theme\n */\nexport const backgroundSwatch = SwatchRGB.from(parseColorHexRGB('#4c4c4c'));\n/**\n * The foreground color swatch.\n * @internal\n * @deprecated - only used in the deprecated ag-theme-material theme\n */\nexport const foregroundSwatch = SwatchRGB.from(parseColorHexRGB('#c01754'));\n","import { DesignToken } from '@microsoft/fast-foundation';\nimport { backgroundSwatch, foregroundSwatch } from './colors';\nconst { create } = DesignToken;\n/**\n * The design tokens for the ag-theme-material theme.\n * @deprecated - use no usage in the codebase\n * @internal\n */\nexport const agThemeMaterialCustomTokens = {\n foregroundColor: create('fui-ag-foreground-color').withDefault(foregroundSwatch),\n backgroundColor: create('fui-ag-background-color').withDefault(backgroundSwatch),\n};\n","/**\n * Allows secure export of CSV https://owasp.org/www-community/attacks/CSV_Injection\n * @public\n */\nexport const csvExportParams = {\n processCellCallback: (params) => {\n if (['+', '=', '-', '@', '\\t', '\\n'].some((character) => String(params.value).startsWith(character))) {\n return `'${params.value}`;\n }\n return params.value;\n },\n};\n"],"names":["module","exports","t","i","e","s","f","n","u","prototype","utc","date","args","arguments","this","toDate","locale","$L","add","utcOffset","local","r","parse","$u","$utils","$offset","call","o","init","$d","$y","getUTCFullYear","$M","getUTCMonth","$D","getUTCDate","$W","getUTCDay","$H","getUTCHours","$m","getUTCMinutes","$s","getUTCSeconds","$ms","getUTCMilliseconds","a","match","Math","abs","clone","getTimezoneOffset","$x","$localOffset","h","format","valueOf","isUTC","toISOString","toString","toUTCString","l","c","diff","RapidSelectEditor","select_editor","_Q","rapidAgSelectEditor","compose","baseName","styles","Uo","template","iY","RapidNumberEditor","number_editor","Z0","rapidAgNumberEditor","Fv","r1","RapidMultiselectEditor","multiselect_editor","pZ","rapidAgMultiselectEditor","$b","tB","RapidDateEditor","date_editor","S8","rapidAgDateEditor","kI","m6","RapidStringEditor","string_editor","XJ","rapidAgStringEditor","P_","bZ","RapidAgActionRenderer","action_renderer","eA","paramsChanged","_","params","node","rowHeight","style","setProperty","rapidAgActionRenderer","esm_index_js_","css","AC","html","x","_a","actionButtonStyle","actionName","dataTestId","pendingAction","isDisabled","data","appearance","clickHandler","_b","contentTemplate","RapidAgActionsMenuRenderer","actions_menu_renderer","cN","rapidAgActionsMenuRenderer","headerName","RapidBooleanRenderer","boolean_renderer","_Y","rapidAgBooleanRenderer","CL","A9","RapidEditableRenderer","editable_renderer","YM","rapidAgEditableRenderer","Mx","iP","RapidIconRenderer","icon_renderer","Jt","rapidIconRenderer","X5","V$","RapidAgSelectRenderer","select_renderer","gs","rapidAgSelectRenderer","Ad","qj","RapidStatusPillRenderer","status_pill_renderer","N7","rapidStatusPillRenderer","T2","x2","agThemeGenesisRapidCSS","themeGenesisRapid","agThemeGenesisRapid","dist_esm_index_js_","mixinRobotoFont","themeGenesisRapidDark","agThemeGenesisRapidDark","themeGenesisRapidLight","agThemeGenesisRapidLight","rapidGridProStyles","grid_pro_styles","XF","ag_head_css","g","rapidGridProTemplate","grid_pro_template","U","DARK_FOREGROUND_HEX","DARK_HEADER_FOREGROUND_HEX","DARK_BACKGROUND_HEX","DARK_BORDER_HEX","DARK_ROW_HOVER_HEX","LIGHT_FOREGROUND_HEX","LIGHT_HEADER_FOREGROUND_HEX","LIGHT_BACKGROUND_HEX","LIGHT_BORDER_HEX","LIGHT_ROW_HOVER_HEX","darkColors","foregroundSwatch","index_js_","SwatchRGB","from","dist_index_js_","parseColorHexRGB","headerForegroundSwatch","backgroundSwatch","borderSwatch","rowHoverSwatch","lightColors","create","fast_foundation_dist_esm_index_js_","DesignToken","agThemeGenesisRapidTokens","backgroundColor","withDefault","elem","baseLayerLuminance","getValueFor","StandardLuminance","LightMode","borderColor","foregroundColor","headerForegroundColor","rowHoverColor","deriveHeightsFromTokens","tokens","foundation_ui_dist_esm_index_js_","designTokensMap","value","space","design_tokens","baseHeightMultiplier","$value","density","designUnit","rapidThemeDark","rapidThemeLight","RapidGridPro","grid_pro","cF","constructor","super","luminanceObserver","handleChange","record","handleLuminanceChange","luminance","target","theme","DarkMode","localStorage","getItem","connectedCallback","luminanceTarget","provider","luminanceSubscription","subscribe","disconnectedCallback","unsubscribe","undefined","themeChanged","oldValue","newValue","gridOptions","options","_c","_d","nextOptions","Object","assign","components","grid_pro_types","IX","action","actionsMenu","boolean","editable","icon","select","selectEditor","numberEditor","multiselectEditor","dateEditor","stringEditor","statusPill","headerHeight","tslib_es6","Cg","observable","rapidGridProShadowOptions","LU","rapidDefaultGridProConfig","Z$","rapidGridPro","shadowOptions","GridProFilterTypes","createEnumValueLabelFormatter","userFormatter","valueFormatter","String","api","colDef","column","context","dist_es2015_index_js_","capitalCase","formatEnumFilterModelAsString","model","formatLabel","values","length","map","join","CSS_PREFIX","filterStyles","EnumColumnFilter","itemInputs","Map","allValues","includeBlanks","valuesRequestId","loading","ownsHeaderTooltip","searchTerm","installHeaderTooltip","createGui","resolveState","getGui","eGui","isFilterActive","doesFilterPass","getCellValue","includes","getModel","filterType","setModel","syncCheckedStates","getModelAsString","clear","filterChangedCallback","headerTooltipValueGetter","summary","headerTooltip","afterGuiAttached","eSearch","renderList","suppressFocus","focus","refresh","destroy","remove","blanks","provided","Array","isArray","Set","logger","v","warn","field","loadAsyncValues","getValues","requestId","applied","apply","result","success","thenable","then","getValue","extraModelValues","filter","allKeys","keys","push","isSelected","key","visibleKeys","term","toLowerCase","updateSelection","selected","isAll","every","has","currentSelection","toggleValue","checked","delete","toggleAllVisible","visible","forEach","document","createElement","className","eRoot","attachShadow","mode","addStylesTo","addEventListener","event","handleKeyDown","type","placeholder","setAttribute","trim","appendChild","selectAllItem","createItem","label","classList","eSelectAll","input","eList","text","span","textContent","title","replaceChildren","empty","dataset","set","selectedCount","visibleCount","size","indeterminate","disabled","focusables","HTMLInputElement","preventDefault","dispatchEvent","Event","first","last","shiftKey","currentIndex","indexOf","nextIndex","enum_column_floating_filter_CSS_PREFIX","floatingFilterStyles","EnumColumnFloatingFilter","filterParams","eSummary","tabIndex","showParentFilter","eClear","hidden","parentFilterInstance","instance","onParentModelChanged","currentParentModel","toggle","GenesisInfiniteDatasource","defaultReverse","loadGeneration","detached","rowData","pendingBlocks","deliveredRowCount","streamStarted","moreRowsInFlight","hasCriteria","viewTruncationWarned","createSnapshotFunc","createDataserverStreamFunc","getMoreRowsFunc","onRowsInvalidatedFunc","onRowsUpdatedFunc","onRowsDeliveredFunc","onRowsWithdrawnFunc","onRowCacheResetFunc","errorHandlerFunc","ledger","delivered_block_ledger","J","rowId","resourceName","resourceParams","resourceIndexes","resourceColDefs","maxRows","baseCriteria","isRequestServer","defaultOrderBy","onNoDataAvailableFunc","onDataAvailableFunc","buildRequestServerParams","startRow","criteria","sortConfig","requestParams","DETAILS","MAX_ROWS","OFFSET","CRITERIA_MATCH","ORDER_BY","orderBy","buildDataserverLogonParams","VIEW_NUMBER","REVERSE","reverse","getLastRow","rowDataLength","MORE_ROWS","ROWS_COUNT","getRows","sH","debug","failCallback","endRow","filterCriteria","filter_utils","P4","filterModel","combinedCriteria","Boolean","resolveSortConfig","sortModel","noteRequestKey","getDataserverRows","generation","messageType","MESSAGE_TYPE","connect_message","Go","LOGOFF_ACK","MSG_NACK","message","error","REPLY","lastRow","successCallback","deliverRows","notifyDataAvailability","Error","details","candidate","receivedMessage","texts","ERROR","entry","TEXT","JSON","stringify","describeResourceError","fromGrid","sortColumn","colId","descending","sort","indexName","fields","entries","convertSortModelToOrderBy","rowCacheKey","subscriptionKey","teardownDataserverSubscription","Number","isFinite","block","settled","fail","moreRows","settleBlock","timer","createBlockTimer","dataserverStream","logonParams","dataserverStreamSubscription","handleDataserverMessage","pumpMoreRows","sourceRef","requestMoreRows","status","HTTP_NOT_FOUND","settleCoveredBlocks","failAllPendingBlocks","_e","_f","SOURCE_REF","filtered","ROW","dataserver_result_filter","R","updates","deletes","notifyLiveChange","solicited","serverRowsCount","accumulate","refreshPendingDeadlines","_g","_h","_j","_k","_l","_m","_o","_p","structural","inserts","modified","reset","clearTimeout","setTimeout","BLOCK_RESOLVE_TIMEOUT_MS","rows","row","existing","get","index","cacheIndexOf","mapKey","slice","max","warnIfViewTruncated","cached","rowCount","withdrawnRowIds","MAX_VIEW","detach","GridProInfiniteDatasource","lifecycle","S","base_datasource","ML","request","onDatasourceReady","_event","initializeDatasource","datasourceOptions","clearRowData","setDisconnected","isInfiniteSupportedForResource","$emit","grid_pro_genesis_datasource_config","V","dataInit","indexes","getResourceIndexes","datasource","availableIndexes","availableSortableFields","fieldMetadata","metadata_utils","X","originalFieldDef","agColumnDefs","getAgColumnDefs","datasource_events_types","schemaUpdated","schema","metadata","infiniteDatasource","createSnapshot","bind","createDataserverStream","connect","getMoreRows","reportDeliveredRows","reportWithdrawnRows","handleLiveRowsInvalidated","handleLiveRowsUpdated","noDataAvailable","loadingFinished","handleErrors","requestOnlyParams","dataserverOnlyParams","buildCriteria","setInfiniteDatasource","setupCommitTriggeredRefresh","addGridCssClass","filtersRestored","resourceNameChanged","DOM","queueUpdate","restart","criteriaChanged","oldCriteria","newCriteria","criteriaIsNotDuplicate","normaliseCriteria","Q","reloadResourceData","shouldRunConnect","subscribeToConnection","subscribeToFilterChanges","shouldRunDisconnect","unsubscribeFromConnection","unsubscribeFromFilterChanges","filterSub","update","pipe","skip","debounceTime","B","deepClone","copy","deferredGridOptions","structuredClone","deferredColumnStates","cacheFilterConfig","refreshInfiniteCache","purge","getRowId","cacheBlockSize","defaultColDef","resizable","sortable","unSortIcon","rowBuffer","rowModelType","suppressMultiSort","cacheOverflowSize","maxConcurrentDatasourceRequests","infiniteInitialRowCount","maxBlocksInCache","initialize","keepColDefsOnClearRowData","clearReadyListener","ready","once","removeEventListener","criteriaOnlyRequest","change","reportLiveChange","transaction","resetTransaction","handleStreamUpdates","handleStreamDeletes","emitTransaction","teardownCommitTriggeredRefresh","removeGridCssClass","withColumnDefs","dataCleared","includeSchema","isSnapshot","pollTriggerEvents","commitResponseUnsubscribe","connectEvents","addCommitResponseListener","eventName","response","detail","endsWith","existingParams","snapshot","stream","fieldsMetadata","colDefsFromGenesisData","generateColumnDefsFromMetadata","server_side_grid_definitions","O","namedIndexFields","availableCriteriaFields","loadMore","dm","connect_events","a4","yW","customElement","name","noop","N","grid_pro_genesis_datasource","D","client_side_datasource","L","server_side_datasource","cell","G","column_selection","main_esm","syG","registerModules","n76","Q90","x6L","YN8","YzW","Lt","I95","O4V","H18","mfG","Iws","nSw","FUS","Ss0","tkg","ZDV","ZyC","XG7","VZy","$I9","dGu","AJG","c5B","BG","KIB","Sko","ZuP","Vc","grid_pro_column_drag_bridge","JE","Events","GridProBeta","FoundationElement","getColumnDragBridge","columnDragBridge","rowDataChanged","initialised","gridApi","setGridOption","gridSlotChanged","gridSlot","agGridOptions","initGrid","enableColumnSelectionChanged","syncColumnSelectionHostLayout","getfilterModel","persistFilterModelKey","_filterConfig","statePersistence","getFilterModel","setFilterModel","saveFilterModel","gridErrorItems","disposed","debouncedSaveColumnState","lodash_debounce_default","saveColumnState","debouncedSaveFilterModel","debouncedNotifyDatasourceVisibleColumns","notifyDatasourceVisibleColumns","autoCellRendererByType","onlyTemplateColDefs","gridAutosizingEnabled","enableCellFlashing","enableRowFlashing","columnComponentName","themeMode","statusBarConfig","o2","withStatusBar","enableColumnSelection","applyingDatasourceGridOptions","rehydrationAttempted","rootEventsListeners","datasourceEventHandlers","gridEventsQueue","registeredGridEvents","gridEventListeners","boundGlobalEventListener","globalEventListener","agAttributes","agPropertiesMap","grid_pro_definitions","zI","reduce","property","string","w","hideDataSourceError","hideDatasourceError","yY","datasourceErrorClose","base_types","handleBaseDatasourceError","connected","handleInitialize","dataLoaded","handleDataLoaded","dataChanged","handleDataChanged","handleSchemaUpdated","handleDataCleared","loadingStarted","handleLoadingStarted","handleLoadingFinished","handleNoDataAvailable","handleFiltersRestored","moreDataAvailable","handleMoreDataAvailable","handleDatasourceError","handleDatasourceDestroy","refreshServerSide","handleRefreshServerSide","setServerSideDatasource","handleSetServerSideDatasource","handleAddGridCssClass","handleRemoveGridCssClass","applyServerSideTransaction","handleApplyServerSideTransaction","handleSetInfiniteDatasource","handleRefreshInfiniteCache","eventType","listener","addGridEventListener","handleError","gridProError","Ie","item","removeAttribute","visibilityObserverCleanup","observer","j","gridVisible","debouncedColumnAutosize","handler","declared","proto","getPrototypeOf","HTMLElement","descriptor","getOwnPropertyDescriptor","findDeclaredAccessor","defineProperty","previous","agAttributeChangedCallback","enumerable","configurable","toggleDatasourceEventListeners","cancel","performDisconnectCleanup","queueMicrotask","isConnected","debounced","resetGridOptionsState","destroyGridInstance","agGrid","method","columnState","getColumnState","userProvidedGridOptions","columnDefs","getColumnDefs","changes","isClientSideRowModel","applyTransaction","flashAddedCells","getGridOption","rowNodes","flashCells","processSchemaUpdate","pendingSchemaUpdate","preSetColumnDefs","applyCommunityFilterFallbacks","mergedColumnDefs","mergeAllColumnDefsAndStates","restoreCachedFilterConfig","hasSetFilter","isModuleRegistered","hasMultiFilter","enumFilter","floatingFilterComponent","enumFloatingFilter","setSubFilter","filters","find","subFilter","refreshCells","force","hideOverlay","showNoRowsOverlay","hasMoreData","statusBar","getStatusPanel","k7","updateParams","clearLocalGridOptions","gridElement","parentElement","async","callback","applyServerSideTransactionAsync","purgeInfiniteCache","combineAllGridComponents","gridOptionsComponents","defaultFoundationAgComponents","labelValue","label_value_status_bar","k","load_more_status_bar","reload","reload_status_bar","W","row_count_status_bar","gridComponents","statePersistanceEnabled","persistColumnStateKey","getSelectedRows","rowSelectionMode","rowSelection","getCellRanges","getCellRangeRowData","enableRangeSelection","focusedCell","getFocusedCell","rowNode","getDisplayedRowAtIndex","rowIndex","cellRanges","range","startIndex","endIndex","some","hasSelectedRows","updateLabelValueStatusBar","sizeColumnsToFit","BW","removeConfigWidthsToAutosize","colState","col","width","array","n7","allHeadersHidden","hide","getColumn","getColDef","getSavedColumnState","restoreColumnState","sanitizedColState","applyColumnState","state","applyOrder","onFilterChanged","isServerSide","gridProDatasource","gridParams","globalListener","modules","querySelector","isInfiniteRowModel","visibleFields","grid_pro_columns","C","getAllDisplayedColumns","setVisibleColumns","gridOnChangeCallback","notifyVisibilityChanged","attributes","attribute","attrName","onGridReady","onFirstDataRendered","rest","Tt","derivedOptions","gridOptionsConfig","enableCellChangeFlash","animateRows","suppressDragLeaveHidesColumns","eventsAndCallbacks","gridId","id","mr","onColumnPinned","onColumnResized","onColumnMoved","onColumnVisible","onDisplayedColumnsChanged","filterChangedEvent","onGridSizeChanged","onSortChanged","setupStatusBar","setLocalGridOptions","Qg","nJ","allowDragFromColumnsToolPanel","firstChild","removeChild","Dvw","columnDefs_1","deferredColumnDefsOrState","columnDefinitionsFromMetadata","colDefFromMetadata","headerCaseType","changeCaseByType","templateColumnDefs","querySelectorAll","templateColumn","definition","columnDef","metadataFilterParams","metadataValues","cellRenderer","cellRendererSelector","A7","component","tooltipComponent","tooltipValueGetter","error_tooltip","y","h1","cellClassRules","metadataColumnDef","templateColumnKeys","colDefsToReturn","savedColumnState","yS","panelExists","statusPanelType","panels","panel","statusPanel","addRowCountPanel","statusPanels","align","rowCountStatusPanel","addMaxRowsPanel","statusPanelParams","datasource_config","OD","MAX_ROWS_250","addAggregationPanel","aggregation","addDatasourcePanels","newDatasourcePanels","getDatasourceStatusBarPanels","newUserDefinedPanels","observedAttributes","lowerCasedPropertyNames","kebabCasePropertyNames","concat","attName","gridPropertyName","eventLowerCase","browserEvent","agGridDetails","callbackMethod","state_persistence","attr","lz","rapidGridThemeParams","cellHorizontalPadding","headerTextColor","headerBackgroundColor","headerColumnBorder","oddRowBackgroundColor","rowBorder","wrapperBorder","accentColor","fontFamily","sideBarBackgroundColor","dataFontSize","iconButtonColor","iconButtonHoverColor","rowHeightAttributes","toThemeRowHeight","RapidGridProBeta","getCachedTheme","cachedThemes","N8R","withParams","resolveRowHeight","fromAttribute","getAttribute","rapidGridProBeta","yK","column_selection_styles","M","em","RapidAgTextRenderer","text_renderer","rapidAgTextRenderer","JN","d6","RapidColumnSelection","rapidColumnSelection","column_selection_template","H","rapidGridComponents","register","container","stringArrayConverter","fromView","split","toView","dropdownWidthVar","optionsClass","DISPLAY_NONE_CLASS","multicolumnDropdownStyles","getMulticolumnDropdownTemplate","designSystem","class_names","hasSlottedContent","slotted","open","displayValue","ref","dropdownPlacement","startsWith","sync","filterSearch","hasSearchKey","changeHandler","T","columnDefinitions","multicolumnDropdownTemplate","DEFAULT_COL_DEF","menuTabs","wasClickOutsideElement","composedPath","getObjectFromResource","valueKey","criteriaMatch","expr","expression_builder","K","withField","withValue","withSerialiser","serialisers","EQ","withGroup","build","serialiser","buildEqualityCriteria","console","MulticolumnDropdown","requestSupportsAdvancedSearch","defaultSlottedNodes","getAndSetRowsDebounce","getAndSetRows","handleClickOutside","connectOverride","_connectDI","Observable","track","_value","object","selectedRow","emitValue","labelKey","searchKey","nodeType","Node","ELEMENT_NODE","TEXT_NODE","optionsElement","dropdownWidthChanged","grid","onRowClicked","setGridRowData","updateGridOptions","setRowData","setGridColumnDefs","colDefs","setColumnDefs","notify","lastRequest","REQUEST","searchExpressions","sk","containsIgnoreCase","searchBuilder","criteria_builder","b","Or","types","trimmedBaseCriteria","filterSearchChanged","showLoadingOverlay","requestChanged","columnDefinitionsChanged","openChanged","dropdownWidth","stopImmediatePropagation","converter","volatile","foundationMulticolumnDropdown","rapidMulticolumnDropdown","DatasourceRowMatchTracker","onActiveChanged","matchedRowIds","lastReportedActive","active","matchCount","report","syncRow","observe","onChanged","onCleared","removed","rowIdField","row_match_types","foundationGridComponents","foundationIconRenderer","qN","foundationGridProActionRenderer","_X","foundationGridProActionsMenuRenderer","su","foundationAgBooleanRenderer","fg","foundationAgTextRenderer","G4","foundationAgTextFieldRenderer","text_field_renderer","wG","foundationAgEditableRenderer","r8","foundationAgSelectRenderer","bE","foundationSelectEditor","RU","foundationNumberEditor","CY","foundationDateEditor","vr","foundationMultiselectEditor","UH","foundationStringEditor","cb","foundationStatusPillRenderer","a1","StatusPillRenderer","foundationGridPro","RB","defaultRowAlertColorPresets","defaultRowAlertRatePresets","defaultRowAlertScopePresets","defaultRowAlertPreferences","color","durationMs","scope","normalizeRowAlertPreferences","storesByKey","createPreferenceStore","persistPreferencesKey","mirrorColorTo","DI","getOrCreateDOMContainer","resolveStatePersistence","subscribers","preferences","applyStyles","element","documentElement","next","persist","subscriber","saveRowAlertPreferences","catch","getRowAlertPreferences","stored","patch","createRowAlert","colorPresets","ratePresets","menuLabel","store","resolvePreferenceStore","rowMatches","row_match_classes","PO","Xm","cellMatches","Li","flashField","stateField","anyOf","mJ","presetItems","presets","onChosen","preset","rowAlert","rowClassRules","createMenuItem","redrawRows","subMenu","getContextMenuItems","defaultItems","setPreferences","base64Pattern","decodeFromBase64WithPrefix","parts","prefix","base64Value","decodedValue","test","decodedString","atob","buffer","Uint8Array","charCodeAt","decodeFromBase64","TextDecoder","decode","encodeToBase64WithPrefix","btoa","ArrayBuffer","binaryString","byte","fromCharCode","encodeToBase64","defaultKVStorageConfig","account","namespace","authKey","authEmail","KVStorageConfig","createInterface","KVMessageType","KVEventMessageType","DefaultKVStorage","user","kvStorageConfig","KEYS","commitEvent","EVENT_KEY_VALUE_DELETE","WARNING","USER_NAME","userName","KEY","REQ_KEY_VALUE_READ","kvs","kv","getDecodedValue","VALUE","list","REQ_KEY_VALUE_LIST","put","RECORDS","base64","EVENT_KEY_VALUE_PUT","Qj","KJ","optional","KVStorage","singleton","KVStorageStatePersistence","migrateLocalStorageToKVStorage","kvColumnState","kvStorage","storageColumnState","deleteColumnState","localGridOptions","session","getLocalStorageItem","localState","kvFilterModel","storageFilterModel","persistRowAlertKey","kvPreferences","storedPreferences","tokens_create","agThemeMaterialCustomTokens","csvExportParams","processCellCallback","character"],"sourceRoot":""}