{"version":3,"file":"js/415-fc43468402229e69cd84.chunk.js","mappings":"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AAiB9O,EAASga,EAAMhb,EAAUrK,EAAS,CACjD,IAAI27E,EAAuB,CAAC,EAM5B,GALI,OAAO37E,GAAY,SACrB27E,EAAuB37E,EACd,OAAOA,GAAY,YAC5B27E,EAAuB,CAAE,QAAS37E,CAAQ,GAExC27E,EAAqB,SAAW,KAAM,CACxC,MAAM71D,EAAUC,GAAwBV,CAAI,EACxCS,GAAW,OACb61D,EAAqB,QAAU71D,EAEnC,CACAza,EAAQ,iBAAiBga,EAAMhb,EAAUsxE,CAAoB,CAC/D,CACA,mBAAmBh5C,EAAG,CACpB,OAAO,IACT,CACA,qBAAqBA,EAAG,CACtB,MAAO,EACT,CACA,WAAWi5C,EAAM,CACf,MAAO,GAAG,KAAK,WAAW,GAAGA,EAAO,IAAIA,CAAI,GAAK,EAAE,EACrD,CACF,EAGA,SAASC,GAAczhE,EAAS,CAC9B,MAAO,CACL,SAAU,UACV,KAAMA,EAAQ,QAAQ,gBAAgB,EAAE,GAC1C,CACF,CAGA,IAAI0hE,GAAmB,CAErB,iBAEA,cACA,WACA,MACA,4BACA,iBACA,UACA,WACA,cACA,kBACA,qBACA,sBACA,YACA,iBACA,UACA,cACA,cACA,WACA,eACA,YACA,cACA,gBACA,WACA,mBACA,aACA,aACA,qBACA,aACA,eACA,cACA,gBACA,kBACA,aACA,aACA,WACA,gBACA,oBACA,cACA,WACA,iBACA,aACA,mBACA,UACA,WACA,eACA,aACA,kBACA,qBACA,oBACA,WACA,gBACA,cACA,qBACA,gBACA,WACA,aACA,cACA,UACA,WACA,WACA,eACA,cACA,eACA,UACA,WACA,cACA,UACA,YACA,eACA,eACA,kBACA,cACA,WACA,cACA,kBACA,mBACA,YAEF,EACIC,GAAmB,OAAO,YAC5BD,GAAiB,IAAI,CAAChyC,EAAUhe,IAAU,CAACge,EAAUhe,CAAK,CAAC,CAC7D,EACA,SAASkwD,GAAuBC,EAAOC,EAAO,C,QAC5C,MAAMC,GAAU,EAAAF,EAAM,SAAWF,GAAiBE,EAAM,QAAQ,EAAI,SAApD,OAA+D,OAAO,iBAChFG,GAAU,EAAAF,EAAM,SAAWH,GAAiB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CA,cACA,oBACA,gBACA,kBACA,mBACA,kBACA,kBACA,gBACA,cACA,cACA,mBACA,cACA,cACA,cACA,gBACA,eACA,gBACA,iBACA,eACA,sCACA,cACA,oBACA,aACA,mBACA,YACA,mBACA,kBACA,kBACA,oBACA,cACA,cACA,gBACA,oBACA,oBACA,qBACA,qBACA,aACA,gBACA,oBACA,wBACA,iBACA,eACA,2BACA,4BACA,eACA,cACA,eACA,aACA,gBACA,aACF,EACIC,GAAmB,CACrB,wBACA,8BACA,4BACA,sBACA,mBACA,sBACA,kBACA,qBACA,yBACA,mBACA,2BACA,2BACA,yBACA,oBACA,8BACA,+BACA,0BACA,mBACA,qBACA,aACA,+BACA,uBACA,yBACA,0BACA,4BACA,sBACA,iCACA,4BACA,oBACA,eACA,kBACA,uBACA,gBACA,+BACA,oBACA,oBACA,2BACA,4BACA,iBACA,oBACA,oBACA,qBACA,iBACA,uBACA,yBACA,0BACA,qBACA,oBACF,EACIC,GAAc,CAAC,GAAGF,GAAgB,GAAGC,EAAgB,EAGrDE,GAAgB,cAAc3yG,CAAS,CACzC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,SAAW,WAClB,CACA,mBAAoB,CAClB,MAAM/M,EAAM,KAAK,IACX2/G,EAAgB3/G,EAAI,YAAY,eAAe,EACrD,GAAI2/G,EACF,MAAO,CAAC16H,EAAK6M,EAAc8tH,IAMlBD,EALQ,CACb,IAAA16H,EACA,aAAA6M,EACA,eAAA8tH,CACF,CAC2B,EAG/B,MAAMC,EAAa7/G,EAAI,IAAI,YAAY,EACvC,MAAO,CAAC/a,EAAK6M,EAAc8tH,IAAmB,CAC5C,IAAIE,EAAgBD,GAAcA,EAAW56H,CAAG,EAChD,GAAI66H,GAAiBF,GAAkBA,EAAe,OAAQ,CAC5D,IAAIG,EAAQ,EACZ,KACM,EAAAA,GAASH,EAAe,QAGhBE,EAAc,QAAQ,aAAa,IACnC,KAGZA,EAAgBA,EAAc,QAAQ,cAAeF,EAAeG,GAAO,CAAC,CAEhF,CACA,OAAOD,GAAA,KAAAA,EAAiBhuH,CAC1B,CACF,CACF,EAGIkuH,GAAsB,CACxB,yBACA,wBACA,SACA,kBACA,eACA,WACA,YACA,qBACA,oBACA,eACA,yBACA,iBACA,iBACA,sBACA,mBACA,sBACA,wBACA,wBACA,mBACA,iBACA,sCACA,aACA,kBACA,gBACA,gBACA,kBACA,YACF,EACIC,GAAsB,CACxB,aACA,WACA,UACA,qBACA,aACA,QACA,aACA,kCACA,uBACA,qBACA,yBACA,WACA,8BACA,qBACA,gBACA,yBACA,2BACA,cACA,gBACA,2BACA,4BACA,gCACA,+BACA,cACA,sBACA,YACA,sBACA,oBACA,qBACA,sBACA,uBACA,8BACA,eACA,mBACA,qBACA,aACF,EACIC,GAAqB,CACvB,eACA,eACA,UACA,aACA,cACA,mBACA,sBACA,cACA,WACA,4BACF,EACIC,GAAuB,CACzB,YACA,kBACA,YACA,eACA,oBACA,wBACA,wBACA,oBACA,yBACA,uBACA,uBACA,2BACA,6BACA,kBACA,mBACA,kCACA,mBACA,mBACA,oBACA,qBACA,iBACA,0BACA,4BACA,iBACA,6BACA,0BACA,sBACA,2BACA,oBACA,mBACA,WACA,0BACF,EACIC,GAAqB,CAAC,QAAS,cAAc,EAC7CC,GAA8B,CAChC,gBACA,UACA,aACA,uCACA,oBACA,yBACA,8BACF,EACIC,GAAwB,CAC1B,uBACA,wCACA,4BACA,oBACA,sBACA,2BACA,uBACA,6BACA,2BACA,QACA,wBACA,wBACA,2BACA,mBACA,yBACA,aACA,oBACA,kBACA,kBACA,yBACA,wBACA,mBACA,uBACA,8BACA,iCACA,yBACA,2BACA,uBACA,oBACA,mBACA,+BACA,YACA,gBACA,iCACA,sBACA,gCACA,+BACA,6BACA,qCACA,8BACA,yBACA,8BACA,YACA,0BACA,+BACA,6BACA,4BACA,oBACA,cACA,uBACA,4BACA,kCACA,YACA,iBACA,oBACA,mBACA,iBACA,kBACA,8BACA,kBACA,kBACA,qBACA,0BACA,uBACA,uBACA,aACA,yBACA,0BACA,kCACA,sBACA,mBACA,oCACA,iBACA,eACA,0BACA,aACA,yBACA,8BACA,yBACA,sBACA,oBACA,uCACA,8BACA,oCACA,2BACA,6BACA,0BACA,4BACA,uBACA,yBACA,+BACA,eACA,gCACA,0BACA,gCACA,oCACA,uCACA,oBACA,qBACA,iBACA,oBACA,8BACA,sBACA,gCACA,0BACA,gCACA,4BACA,sBACA,0BACA,iCACA,sCACA,0BACA,kBACA,uBACA,4CACA,gCACA,qBACA,uBACA,eACA,4BACA,+BACA,uBACA,4CACA,+BACA,0BACA,yBACA,4BACA,6BACA,uBACA,eACA,WACA,2BACA,mCACA,wCACA,6BACA,UACA,sBACA,+BACA,4BACF,EACIC,GAAyB,CAC3B,yBACA,2BACA,gCACA,wBACA,kBACA,cACA,mBACA,4BACA,wBACA,sBACA,0BACA,yBACA,qBACA,oBACA,qBACA,gBACA,0BACA,eACA,cACA,cACA,sBACA,mBACA,uBACA,0BACA,iBACA,iBACA,kBACA,wBACA,uBACA,kBACA,qBACA,gBACA,2BACA,cACA,mBACA,gBACA,cACA,cACA,eACA,4BACA,yBACA,iCACA,4BACA,2BACA,wBACA,oBACA,uBACA,uBACA,gBACA,+BACA,gCACA,iCACA,uBACA,8BACA,8BACA,WACA,iBACA,gBACA,kBACF,EACIC,GAAoB,CACtB,GAAGN,GACH,GAAGD,GACH,GAAGD,GACH,GAAGG,GACH,GAAGI,GACH,GAAGD,GACH,GAAGD,GACH,GAAGD,EACL,EAGIK,GAAuB,KAAM,CAC/B,KAAKC,EAAqBC,EAAkBC,EAAiBC,EAAe,CAC1E,MAAMC,EAAU,KAAK,cAAcJ,EAAqBG,CAAa,EACrE,OAAAF,GAAA,MAAAA,EAAkB,QAASI,GAAe,CACxC,KAAK,aAAaD,EAASC,EAAY,EAAI,CAC7C,GACAH,GAAA,MAAAA,EAAiB,QAASG,GAAe,CACvC,KAAK,aAAaD,EAASC,EAAY,EAAK,CAC9C,GACOD,CACT,CACA,aAAaA,EAASC,EAAYr2F,EAAW,CAC3Co2F,EAAQ,UAAUC,EAAY,KAAK,kBAAkBD,EAASC,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","sources":["webpack://dot-com/./node_modules/@fullstory/snippet/dist/index.esm.js","webpack://dot-com/./node_modules/@fullstory/browser/dist/index.esm.js","webpack://dot-com/./node_modules/card-validator/dist/card-number.js","webpack://dot-com/./node_modules/card-validator/dist/cvv.js","webpack://dot-com/./node_modules/card-validator/dist/expiration-date.js","webpack://dot-com/./node_modules/card-validator/dist/expiration-month.js","webpack://dot-com/./node_modules/card-validator/dist/expiration-year.js","webpack://dot-com/./node_modules/card-validator/dist/index.js","webpack://dot-com/./node_modules/card-validator/dist/lib/is-array.js","webpack://dot-com/./node_modules/card-validator/dist/lib/parse-date.js","webpack://dot-com/./node_modules/card-validator/dist/luhn-10.js","webpack://dot-com/./node_modules/card-validator/dist/postal-code.js","webpack://dot-com/./node_modules/credit-card-type/dist/index.js","webpack://dot-com/./node_modules/credit-card-type/dist/lib/add-matching-cards-to-results.js","webpack://dot-com/./node_modules/credit-card-type/dist/lib/card-types.js","webpack://dot-com/./node_modules/credit-card-type/dist/lib/clone.js","webpack://dot-com/./node_modules/credit-card-type/dist/lib/find-best-match.js","webpack://dot-com/./node_modules/credit-card-type/dist/lib/is-valid-input-type.js","webpack://dot-com/./node_modules/credit-card-type/dist/lib/matches.js","webpack://dot-com/./node_modules/timeago.js/esm/lang/en_US.js","webpack://dot-com/./node_modules/timeago.js/esm/lang/zh_CN.js","webpack://dot-com/./node_modules/timeago.js/esm/register.js","webpack://dot-com/./node_modules/timeago.js/esm/utils/date.js","webpack://dot-com/./node_modules/timeago.js/esm/format.js","webpack://dot-com/./node_modules/timeago.js/esm/realtime.js","webpack://dot-com/./node_modules/timeago.js/esm/index.js","webpack://dot-com/./node_modules/@lit-labs/motion/animate-controller.js","webpack://dot-com/./node_modules/@lit-labs/motion/animate.js","webpack://dot-com/./node_modules/@lit-labs/motion/position.js","webpack://dot-com/./node_modules/ag-grid-community/dist/package/main.esm.mjs","webpack://dot-com/./node_modules/lit-html/async-directive.js","webpack://dot-com/./node_modules/lit-html/directive-helpers.js","webpack://dot-com/./node_modules/lit-html/directives/private-async-helpers.js","webpack://dot-com/./node_modules/lit-html/directives/until.js","webpack://dot-com/./node_modules/lit-html/directives/repeat.js"],"sourcesContent":["// @ts-nocheck\nvar executeSnippetV1 = function executeSnippetV1() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$wnd = _ref.wnd,\n wnd = _ref$wnd === void 0 ? window : _ref$wnd;\n (function (m, n, e, t, l, o, g, y) {\n if (e in m) {\n if (m.console && m.console.log) {\n m.console.log('FullStory namespace conflict. Please set window[\"_fs_namespace\"].');\n }\n return;\n }\n g = m[e] = function (a, b, s) {\n g.q ? g.q.push([a, b, s]) : g._api(a, b, s);\n };\n g.q = [];\n o = n.createElement(t);\n o.async = 1;\n o.crossOrigin = 'anonymous';\n o.src = 'https://' + _fs_script;\n y = n.getElementsByTagName(t)[0];\n y.parentNode.insertBefore(o, y);\n g.identify = function (i, v, s) {\n g(l, {\n uid: i\n }, s);\n if (v) g(l, v, s);\n };\n g.setUserVars = function (v, s) {\n g(l, v, s);\n };\n g.event = function (i, v, s) {\n g('event', {\n n: i,\n p: v\n }, s);\n };\n g.anonymize = function () {\n g.identify(!!0);\n };\n g.shutdown = function () {\n g(\"rec\", !1);\n };\n g.restart = function () {\n g(\"rec\", !0);\n };\n g.log = function (a, b) {\n g(\"log\", [a, b]);\n };\n g.consent = function (a) {\n g(\"consent\", !arguments.length || a);\n };\n g.identifyAccount = function (i, v) {\n o = 'account';\n v = v || {};\n v.acctId = i;\n g(o, v);\n };\n g.clearUserCookie = function () {};\n g.setVars = function (n, p) {\n g('setVars', [n, p]);\n };\n g._w = {};\n y = 'XMLHttpRequest';\n g._w[y] = m[y];\n y = 'fetch';\n g._w[y] = m[y];\n if (m[y]) m[y] = function () {\n return g._w[y].apply(this, arguments);\n };\n g._v = \"1.3.0\";\n })(wnd, wnd.document, wnd['_fs_namespace'], 'script', 'user');\n};\nvar getDocumentVar = function getDocumentVar(globalVar) {\n return globalVar === 'window' ? 'document' : \"\".concat(globalVar, \".document\");\n};\nvar toV1String = function toV1String() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$shouldInsertScr = _ref2.shouldInsertScript,\n shouldInsertScript = _ref2$shouldInsertScr === void 0 ? true : _ref2$shouldInsertScr,\n _ref2$globalVar = _ref2.globalVar,\n globalVar = _ref2$globalVar === void 0 ? 'window' : _ref2$globalVar,\n _ref2$apiVersion = _ref2.apiVersion,\n apiVersion = _ref2$apiVersion === void 0 ? '1.3.0' : _ref2$apiVersion;\n return \"(function(m,n,e,t,l,o,g,y){\\n if (e in m) {if(m.console && m.console.log) { m.console.log('FullStory namespace conflict. Please set window[\\\"_fs_namespace\\\"].');} return;}\\n g=m[e]=function(a,b,s){g.q?g.q.push([a,b,s]):g._api(a,b,s);};g.q=[];\".concat(shouldInsertScript ? \"\\n o=n.createElement(t);o.async=1;o.crossOrigin='anonymous';o.src='https://'+_fs_script;\\n y=n.getElementsByTagName(t)[0];y.parentNode.insertBefore(o,y);\" : '', \"\\n g.identify=function(i,v,s){g(l,{uid:i},s);if(v)g(l,v,s)};g.setUserVars=function(v,s){g(l,v,s)};g.event=function(i,v,s){g('event',{n:i,p:v},s)};\\n g.anonymize=function(){g.identify(!!0)};\\n g.shutdown=function(){g(\\\"rec\\\",!1)};g.restart=function(){g(\\\"rec\\\",!0)};\\n g.log = function(a,b){g(\\\"log\\\",[a,b])};\\n g.consent=function(a){g(\\\"consent\\\",!arguments.length||a)};\\n g.identifyAccount=function(i,v){o='account';v=v||{};v.acctId=i;g(o,v)};\\n g.clearUserCookie=function(){};\\n g.setVars=function(n, p){g('setVars',[n,p]);};\\n g._w={};y='XMLHttpRequest';g._w[y]=m[y];y='fetch';g._w[y]=m[y];\\n if(m[y])m[y]=function(){return g._w[y].apply(this,arguments)};\\n g._v=\\\"\").concat(apiVersion, \"\\\";\\n})(\").concat(globalVar, \",\").concat(getDocumentVar(globalVar), \",\").concat(globalVar, \"['_fs_namespace'],'script','user');\");\n};\nvar initFS = function initFS(_a) {\n var orgId = _a.orgId,\n _b = _a.namespace,\n namespace = _b === void 0 ? 'FS' : _b,\n _c = _a.debug,\n debug = _c === void 0 ? false : _c,\n _d = _a.host,\n host = _d === void 0 ? 'fullstory.com' : _d,\n _e = _a.script,\n script = _e === void 0 ? 'edge.fullstory.com/s/fs.js' : _e;\n if (!orgId) {\n throw new Error('FullStory orgId is a required parameter');\n }\n window['_fs_debug'] = debug;\n window['_fs_host'] = host;\n window['_fs_script'] = script;\n window['_fs_org'] = orgId;\n window['_fs_namespace'] = namespace;\n executeSnippetV1();\n};\nvar SnippetSrc = toV1String();\nvar generateSnippetText = function generateSnippetText(_a) {\n var orgId = _a.orgId,\n _b = _a.namespace,\n namespace = _b === void 0 ? 'FS' : _b,\n _c = _a.debug,\n debug = _c === void 0 ? false : _c,\n _d = _a.host,\n host = _d === void 0 ? 'fullstory.com' : _d,\n _e = _a.script,\n script = _e === void 0 ? 'edge.fullstory.com/s/fs.js' : _e;\n if (!orgId) {\n throw new Error('FullStory orgId is a required parameter');\n }\n return \"window['_fs_debug'] = \".concat(debug, \";\\nwindow['_fs_host'] = '\").concat(host, \"';\\nwindow['_fs_script'] = '\").concat(script, \"';\\nwindow['_fs_org'] = '\").concat(orgId, \"';\\nwindow['_fs_namespace'] = '\").concat(namespace, \"';\\n\").concat(SnippetSrc, \"\\n\");\n};\nexport { SnippetSrc, generateSnippetText, initFS };","import { initFS } from '@fullstory/snippet';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar fs = function fs() {\n return window[window._fs_namespace];\n};\n\nvar ensureSnippetLoaded = function ensureSnippetLoaded() {\n var snippetLoaded = !!fs();\n\n if (!snippetLoaded) {\n throw Error('FullStory is not loaded, please ensure the init function is invoked before calling FullStory API functions');\n }\n};\n\nvar hasFullStoryWithFunction = function hasFullStoryWithFunction() {\n ensureSnippetLoaded();\n\n for (var _len = arguments.length, testNames = new Array(_len), _key = 0; _key < _len; _key++) {\n testNames[_key] = arguments[_key];\n }\n\n return testNames.every(function (current) {\n return fs()[current];\n });\n};\n\nvar guard = function guard(name) {\n return function () {\n if (window._fs_dev_mode) {\n var message = \"FullStory is in dev mode and is not recording: \".concat(name, \" method not executed\");\n console.warn(message);\n return message;\n }\n\n if (hasFullStoryWithFunction(name)) {\n var _fs;\n\n return (_fs = fs())[name].apply(_fs, arguments);\n }\n\n console.warn(\"FS.\".concat(name, \" not ready\"));\n return null;\n };\n};\n\nvar event = guard('event');\nvar log = guard('log');\nvar getCurrentSessionURL = guard('getCurrentSessionURL');\nvar identify = guard('identify');\nvar setUserVars = guard('setUserVars');\nvar consent = guard('consent');\nvar shutdown = guard('shutdown');\nvar restart = guard('restart');\nvar anonymize = guard('anonymize');\nvar setVars = guard('setVars');\n\nvar _init = function _init(inputOptions, readyCallback) {\n var options = _objectSpread2({}, inputOptions);\n\n if (fs()) {\n console.warn('The FullStory snippet has already been defined elsewhere (likely in the <head> element)');\n return;\n }\n\n if (options.recordCrossDomainIFrames) {\n window._fs_run_in_iframe = true;\n }\n\n if (options.recordOnlyThisIFrame) {\n window._fs_is_outer_script = true;\n }\n\n if (options.cookieDomain) {\n window._fs_cookie_domain = options.cookieDomain;\n }\n\n if (options.debug === true) {\n if (!options.script) {\n options.script = 'edge.fullstory.com/s/fs-debug.js';\n } else {\n console.warn('Ignoring `debug = true` because `script` is set');\n }\n }\n\n initFS(options);\n\n if (readyCallback) {\n fs()('observe', {\n type: 'start',\n callback: readyCallback\n });\n }\n\n if (options.devMode === true) {\n var message = 'FullStory was initialized in devMode and will stop recording';\n event('FullStory Dev Mode', {\n message_str: message\n });\n shutdown();\n window._fs_dev_mode = true;\n console.warn(message);\n }\n};\n\nvar initOnce = function initOnce(fn, message) {\n return function () {\n if (window._fs_initialized) {\n if (message) console.warn(message);\n return;\n }\n\n fn.apply(void 0, arguments);\n window._fs_initialized = true;\n };\n};\n\nvar init = initOnce(_init, 'FullStory init has already been called once, additional invocations are ignored');\nvar isInitialized = function isInitialized() {\n return !!window._fs_initialized;\n};\n\nexport { anonymize, consent, event, getCurrentSessionURL, identify, init, isInitialized, log, restart, setUserVars, setVars, shutdown };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cardNumber = void 0;\nvar luhn10 = require(\"./luhn-10\");\nvar getCardTypes = require(\"credit-card-type\");\nfunction verification(card, isPotentiallyValid, isValid) {\n return {\n card: card,\n isPotentiallyValid: isPotentiallyValid,\n isValid: isValid,\n };\n}\nfunction cardNumber(value, options) {\n if (options === void 0) { options = {}; }\n var isPotentiallyValid, isValid, maxLength;\n if (typeof value !== \"string\" && typeof value !== \"number\") {\n return verification(null, false, false);\n }\n var testCardValue = String(value).replace(/-|\\s/g, \"\");\n if (!/^\\d*$/.test(testCardValue)) {\n return verification(null, false, false);\n }\n var potentialTypes = getCardTypes(testCardValue);\n if (potentialTypes.length === 0) {\n return verification(null, false, false);\n }\n else if (potentialTypes.length !== 1) {\n return verification(null, true, false);\n }\n var cardType = potentialTypes[0];\n if (options.maxLength && testCardValue.length > options.maxLength) {\n return verification(cardType, false, false);\n }\n if (cardType.type === getCardTypes.types.UNIONPAY &&\n options.luhnValidateUnionPay !== true) {\n isValid = true;\n }\n else {\n isValid = luhn10(testCardValue);\n }\n maxLength = Math.max.apply(null, cardType.lengths);\n if (options.maxLength) {\n maxLength = Math.min(options.maxLength, maxLength);\n }\n for (var i = 0; i < cardType.lengths.length; i++) {\n if (cardType.lengths[i] === testCardValue.length) {\n isPotentiallyValid = testCardValue.length < maxLength || isValid;\n return verification(cardType, isPotentiallyValid, isValid);\n }\n }\n return verification(cardType, testCardValue.length < maxLength, false);\n}\nexports.cardNumber = cardNumber;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cvv = void 0;\nvar DEFAULT_LENGTH = 3;\nfunction includes(array, thing) {\n for (var i = 0; i < array.length; i++) {\n if (thing === array[i]) {\n return true;\n }\n }\n return false;\n}\nfunction max(array) {\n var maximum = DEFAULT_LENGTH;\n var i = 0;\n for (; i < array.length; i++) {\n maximum = array[i] > maximum ? array[i] : maximum;\n }\n return maximum;\n}\nfunction verification(isValid, isPotentiallyValid) {\n return { isValid: isValid, isPotentiallyValid: isPotentiallyValid };\n}\nfunction cvv(value, maxLength) {\n if (maxLength === void 0) { maxLength = DEFAULT_LENGTH; }\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n if (includes(maxLength, value.length)) {\n return verification(true, true);\n }\n if (value.length < Math.min.apply(null, maxLength)) {\n return verification(false, true);\n }\n if (value.length > max(maxLength)) {\n return verification(false, false);\n }\n return verification(true, true);\n}\nexports.cvv = cvv;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationDate = void 0;\nvar parse_date_1 = require(\"./lib/parse-date\");\nvar expiration_month_1 = require(\"./expiration-month\");\nvar expiration_year_1 = require(\"./expiration-year\");\nfunction verification(isValid, isPotentiallyValid, month, year) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n month: month,\n year: year,\n };\n}\nfunction expirationDate(value, maxElapsedYear) {\n var date;\n if (typeof value === \"string\") {\n value = value.replace(/^(\\d\\d) (\\d\\d(\\d\\d)?)$/, \"$1/$2\");\n date = parse_date_1.parseDate(String(value));\n }\n else if (value !== null && typeof value === \"object\") {\n var fullDate = __assign({}, value);\n date = {\n month: String(fullDate.month),\n year: String(fullDate.year),\n };\n }\n else {\n return verification(false, false, null, null);\n }\n var monthValid = expiration_month_1.expirationMonth(date.month);\n var yearValid = expiration_year_1.expirationYear(date.year, maxElapsedYear);\n if (monthValid.isValid) {\n if (yearValid.isCurrentYear) {\n var isValidForThisYear = monthValid.isValidForThisYear;\n return verification(isValidForThisYear, isValidForThisYear, date.month, date.year);\n }\n if (yearValid.isValid) {\n return verification(true, true, date.month, date.year);\n }\n }\n if (monthValid.isPotentiallyValid && yearValid.isPotentiallyValid) {\n return verification(false, true, null, null);\n }\n return verification(false, false, null, null);\n}\nexports.expirationDate = expirationDate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationMonth = void 0;\nfunction verification(isValid, isPotentiallyValid, isValidForThisYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isValidForThisYear: isValidForThisYear || false,\n };\n}\nfunction expirationMonth(value) {\n var currentMonth = new Date().getMonth() + 1;\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, \"\") === \"\" || value === \"0\") {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n var month = parseInt(value, 10);\n if (isNaN(Number(value))) {\n return verification(false, false);\n }\n var result = month > 0 && month < 13;\n return verification(result, result, result && month >= currentMonth);\n}\nexports.expirationMonth = expirationMonth;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.expirationYear = void 0;\nvar DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE = 19;\nfunction verification(isValid, isPotentiallyValid, isCurrentYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isCurrentYear: isCurrentYear || false,\n };\n}\nfunction expirationYear(value, maxElapsedYear) {\n if (maxElapsedYear === void 0) { maxElapsedYear = DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE; }\n var isCurrentYear;\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, \"\") === \"\") {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n var len = value.length;\n if (len < 2) {\n return verification(false, true);\n }\n var currentYear = new Date().getFullYear();\n if (len === 3) {\n // 20x === 20x\n var firstTwo = value.slice(0, 2);\n var currentFirstTwo = String(currentYear).slice(0, 2);\n return verification(false, firstTwo === currentFirstTwo);\n }\n if (len > 4) {\n return verification(false, false);\n }\n var numericValue = parseInt(value, 10);\n var twoDigitYear = Number(String(currentYear).substr(2, 2));\n var valid = false;\n if (len === 2) {\n isCurrentYear = twoDigitYear === numericValue;\n valid =\n numericValue >= twoDigitYear &&\n numericValue <= twoDigitYear + maxElapsedYear;\n }\n else if (len === 4) {\n isCurrentYear = currentYear === numericValue;\n valid =\n numericValue >= currentYear &&\n numericValue <= currentYear + maxElapsedYear;\n }\n return verification(valid, valid, isCurrentYear);\n}\nexports.expirationYear = expirationYear;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postalCode = exports.cvv = exports.expirationYear = exports.expirationMonth = exports.expirationDate = exports.number = exports.creditCardType = void 0;\nvar creditCardType = require(\"credit-card-type\");\nexports.creditCardType = creditCardType;\nvar card_number_1 = require(\"./card-number\");\nObject.defineProperty(exports, \"number\", { enumerable: true, get: function () { return card_number_1.cardNumber; } });\nvar expiration_date_1 = require(\"./expiration-date\");\nObject.defineProperty(exports, \"expirationDate\", { enumerable: true, get: function () { return expiration_date_1.expirationDate; } });\nvar expiration_month_1 = require(\"./expiration-month\");\nObject.defineProperty(exports, \"expirationMonth\", { enumerable: true, get: function () { return expiration_month_1.expirationMonth; } });\nvar expiration_year_1 = require(\"./expiration-year\");\nObject.defineProperty(exports, \"expirationYear\", { enumerable: true, get: function () { return expiration_year_1.expirationYear; } });\nvar cvv_1 = require(\"./cvv\");\nObject.defineProperty(exports, \"cvv\", { enumerable: true, get: function () { return cvv_1.cvv; } });\nvar postal_code_1 = require(\"./postal-code\");\nObject.defineProperty(exports, \"postalCode\", { enumerable: true, get: function () { return postal_code_1.postalCode; } });\nvar cardValidator = {\n creditCardType: creditCardType,\n number: card_number_1.cardNumber,\n expirationDate: expiration_date_1.expirationDate,\n expirationMonth: expiration_month_1.expirationMonth,\n expirationYear: expiration_year_1.expirationYear,\n cvv: cvv_1.cvv,\n postalCode: postal_code_1.postalCode,\n};\nexports.default = cardValidator;\n","\"use strict\";\n// Polyfill taken from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Polyfill>.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArray = void 0;\nexports.isArray = Array.isArray ||\n function (arg) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseDate = void 0;\nvar expiration_year_1 = require(\"../expiration-year\");\nvar is_array_1 = require(\"./is-array\");\nfunction getNumberOfMonthDigitsInDateString(dateString) {\n var firstCharacter = Number(dateString[0]);\n var assumedYear;\n /*\n if the first character in the string starts with `0`,\n we know that the month will be 2 digits.\n \n '0122' => {month: '01', year: '22'}\n */\n if (firstCharacter === 0) {\n return 2;\n }\n /*\n if the first character in the string starts with\n number greater than 1, it must be a 1 digit month\n \n '322' => {month: '3', year: '22'}\n */\n if (firstCharacter > 1) {\n return 1;\n }\n /*\n if the first 2 characters make up a number between\n 13-19, we know that the month portion must be 1\n \n '139' => {month: '1', year: '39'}\n */\n if (firstCharacter === 1 && Number(dateString[1]) > 2) {\n return 1;\n }\n /*\n if the first 2 characters make up a number between\n 10-12, we check if the year portion would be considered\n valid if we assumed that the month was 1. If it is\n not potentially valid, we assume the month must have\n 2 digits.\n \n '109' => {month: '10', year: '9'}\n '120' => {month: '1', year: '20'} // when checked in the year 2019\n '120' => {month: '12', year: '0'} // when checked in the year 2021\n */\n if (firstCharacter === 1) {\n assumedYear = dateString.substr(1);\n return expiration_year_1.expirationYear(assumedYear).isPotentiallyValid ? 1 : 2;\n }\n /*\n If the length of the value is exactly 5 characters,\n we assume a full year was passed in, meaning the remaining\n single leading digit must be the month value.\n \n '12202' => {month: '1', year: '2202'}\n */\n if (dateString.length === 5) {\n return 1;\n }\n /*\n If the length of the value is more than five characters,\n we assume a full year was passed in addition to the month\n and therefore the month portion must be 2 digits.\n \n '112020' => {month: '11', year: '2020'}\n */\n if (dateString.length > 5) {\n return 2;\n }\n /*\n By default, the month value is the first value\n */\n return 1;\n}\nfunction parseDate(datestring) {\n var date;\n if (/^\\d{4}-\\d{1,2}$/.test(datestring)) {\n date = datestring.split(\"-\").reverse();\n }\n else if (/\\//.test(datestring)) {\n date = datestring.split(/\\s*\\/\\s*/g);\n }\n else if (/\\s/.test(datestring)) {\n date = datestring.split(/ +/g);\n }\n if (is_array_1.isArray(date)) {\n return {\n month: date[0] || \"\",\n year: date.slice(1).join(),\n };\n }\n var numberOfDigitsInMonth = getNumberOfMonthDigitsInDateString(datestring);\n var month = datestring.substr(0, numberOfDigitsInMonth);\n return {\n month: month,\n year: datestring.substr(month.length),\n };\n}\nexports.parseDate = parseDate;\n","/* eslint-disable */\n/*\n * Luhn algorithm implementation in JavaScript\n * Copyright (c) 2009 Nicholas C. Zakas\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\"use strict\";\nfunction luhn10(identifier) {\n var sum = 0;\n var alt = false;\n var i = identifier.length - 1;\n var num;\n while (i >= 0) {\n num = parseInt(identifier.charAt(i), 10);\n if (alt) {\n num *= 2;\n if (num > 9) {\n num = (num % 10) + 1; // eslint-disable-line no-extra-parens\n }\n }\n alt = !alt;\n sum += num;\n i--;\n }\n return sum % 10 === 0;\n}\nmodule.exports = luhn10;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.postalCode = void 0;\nvar DEFAULT_MIN_POSTAL_CODE_LENGTH = 3;\nfunction verification(isValid, isPotentiallyValid) {\n return { isValid: isValid, isPotentiallyValid: isPotentiallyValid };\n}\nfunction postalCode(value, options) {\n if (options === void 0) { options = {}; }\n var minLength = options.minLength || DEFAULT_MIN_POSTAL_CODE_LENGTH;\n if (typeof value !== \"string\") {\n return verification(false, false);\n }\n else if (value.length < minLength) {\n return verification(false, true);\n }\n return verification(true, true);\n}\nexports.postalCode = postalCode;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar cardTypes = require(\"./lib/card-types\");\nvar add_matching_cards_to_results_1 = require(\"./lib/add-matching-cards-to-results\");\nvar is_valid_input_type_1 = require(\"./lib/is-valid-input-type\");\nvar find_best_match_1 = require(\"./lib/find-best-match\");\nvar clone_1 = require(\"./lib/clone\");\nvar customCards = {};\nvar cardNames = {\n VISA: \"visa\",\n MASTERCARD: \"mastercard\",\n AMERICAN_EXPRESS: \"american-express\",\n DINERS_CLUB: \"diners-club\",\n DISCOVER: \"discover\",\n JCB: \"jcb\",\n UNIONPAY: \"unionpay\",\n MAESTRO: \"maestro\",\n ELO: \"elo\",\n MIR: \"mir\",\n HIPER: \"hiper\",\n HIPERCARD: \"hipercard\",\n};\nvar ORIGINAL_TEST_ORDER = [\n cardNames.VISA,\n cardNames.MASTERCARD,\n cardNames.AMERICAN_EXPRESS,\n cardNames.DINERS_CLUB,\n cardNames.DISCOVER,\n cardNames.JCB,\n cardNames.UNIONPAY,\n cardNames.MAESTRO,\n cardNames.ELO,\n cardNames.MIR,\n cardNames.HIPER,\n cardNames.HIPERCARD,\n];\nvar testOrder = clone_1.clone(ORIGINAL_TEST_ORDER);\nfunction findType(cardType) {\n return customCards[cardType] || cardTypes[cardType];\n}\nfunction getAllCardTypes() {\n return testOrder.map(function (cardType) { return clone_1.clone(findType(cardType)); });\n}\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n if (ignoreErrorForNotExisting === void 0) { ignoreErrorForNotExisting = false; }\n var position = testOrder.indexOf(name);\n if (!ignoreErrorForNotExisting && position === -1) {\n throw new Error('\"' + name + '\" is not a supported card type.');\n }\n return position;\n}\nfunction creditCardType(cardNumber) {\n var results = [];\n if (!is_valid_input_type_1.isValidInputType(cardNumber)) {\n return results;\n }\n if (cardNumber.length === 0) {\n return getAllCardTypes();\n }\n testOrder.forEach(function (cardType) {\n var cardConfiguration = findType(cardType);\n add_matching_cards_to_results_1.addMatchingCardsToResults(cardNumber, cardConfiguration, results);\n });\n var bestMatch = find_best_match_1.findBestMatch(results);\n if (bestMatch) {\n return [bestMatch];\n }\n return results;\n}\ncreditCardType.getTypeInfo = function (cardType) {\n return clone_1.clone(findType(cardType));\n};\ncreditCardType.removeCard = function (name) {\n var position = getCardPosition(name);\n testOrder.splice(position, 1);\n};\ncreditCardType.addCard = function (config) {\n var existingCardPosition = getCardPosition(config.type, true);\n customCards[config.type] = config;\n if (existingCardPosition === -1) {\n testOrder.push(config.type);\n }\n};\ncreditCardType.updateCard = function (cardType, updates) {\n var originalObject = customCards[cardType] || cardTypes[cardType];\n if (!originalObject) {\n throw new Error(\"\\\"\" + cardType + \"\\\" is not a recognized type. Use `addCard` instead.'\");\n }\n if (updates.type && originalObject.type !== updates.type) {\n throw new Error(\"Cannot overwrite type parameter.\");\n }\n var clonedCard = clone_1.clone(originalObject);\n clonedCard = __assign(__assign({}, clonedCard), updates);\n customCards[clonedCard.type] = clonedCard;\n};\ncreditCardType.changeOrder = function (name, position) {\n var currentPosition = getCardPosition(name);\n testOrder.splice(currentPosition, 1);\n testOrder.splice(position, 0, name);\n};\ncreditCardType.resetModifications = function () {\n testOrder = clone_1.clone(ORIGINAL_TEST_ORDER);\n customCards = {};\n};\ncreditCardType.types = cardNames;\nmodule.exports = creditCardType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addMatchingCardsToResults = void 0;\nvar clone_1 = require(\"./clone\");\nvar matches_1 = require(\"./matches\");\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n var i, patternLength;\n for (i = 0; i < cardConfiguration.patterns.length; i++) {\n var pattern = cardConfiguration.patterns[i];\n if (!matches_1.matches(cardNumber, pattern)) {\n continue;\n }\n var clonedCardConfiguration = clone_1.clone(cardConfiguration);\n if (Array.isArray(pattern)) {\n patternLength = String(pattern[0]).length;\n }\n else {\n patternLength = String(pattern).length;\n }\n if (cardNumber.length >= patternLength) {\n clonedCardConfiguration.matchStrength = patternLength;\n }\n results.push(clonedCardConfiguration);\n break;\n }\n}\nexports.addMatchingCardsToResults = addMatchingCardsToResults;\n","\"use strict\";\nvar cardTypes = {\n visa: {\n niceType: \"Visa\",\n type: \"visa\",\n patterns: [4],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n mastercard: {\n niceType: \"Mastercard\",\n type: \"mastercard\",\n patterns: [[51, 55], [2221, 2229], [223, 229], [23, 26], [270, 271], 2720],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n \"american-express\": {\n niceType: \"American Express\",\n type: \"american-express\",\n patterns: [34, 37],\n gaps: [4, 10],\n lengths: [15],\n code: {\n name: \"CID\",\n size: 4,\n },\n },\n \"diners-club\": {\n niceType: \"Diners Club\",\n type: \"diners-club\",\n patterns: [[300, 305], 36, 38, 39],\n gaps: [4, 10],\n lengths: [14, 16, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n discover: {\n niceType: \"Discover\",\n type: \"discover\",\n patterns: [6011, [644, 649], 65],\n gaps: [4, 8, 12],\n lengths: [16, 19],\n code: {\n name: \"CID\",\n size: 3,\n },\n },\n jcb: {\n niceType: \"JCB\",\n type: \"jcb\",\n patterns: [2131, 1800, [3528, 3589]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: \"CVV\",\n size: 3,\n },\n },\n unionpay: {\n niceType: \"UnionPay\",\n type: \"unionpay\",\n patterns: [\n 620,\n [624, 626],\n [62100, 62182],\n [62184, 62187],\n [62185, 62197],\n [62200, 62205],\n [622010, 622999],\n 622018,\n [622019, 622999],\n [62207, 62209],\n [622126, 622925],\n [623, 626],\n 6270,\n 6272,\n 6276,\n [627700, 627779],\n [627781, 627799],\n [6282, 6289],\n 6291,\n 6292,\n 810,\n [8110, 8131],\n [8132, 8151],\n [8152, 8163],\n [8164, 8171],\n ],\n gaps: [4, 8, 12],\n lengths: [14, 15, 16, 17, 18, 19],\n code: {\n name: \"CVN\",\n size: 3,\n },\n },\n maestro: {\n niceType: \"Maestro\",\n type: \"maestro\",\n patterns: [\n 493698,\n [500000, 504174],\n [504176, 506698],\n [506779, 508999],\n [56, 59],\n 63,\n 67,\n 6,\n ],\n gaps: [4, 8, 12],\n lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n elo: {\n niceType: \"Elo\",\n type: \"elo\",\n patterns: [\n 401178,\n 401179,\n 438935,\n 457631,\n 457632,\n 431274,\n 451416,\n 457393,\n 504175,\n [506699, 506778],\n [509000, 509999],\n 627780,\n 636297,\n 636368,\n [650031, 650033],\n [650035, 650051],\n [650405, 650439],\n [650485, 650538],\n [650541, 650598],\n [650700, 650718],\n [650720, 650727],\n [650901, 650978],\n [651652, 651679],\n [655000, 655019],\n [655021, 655058],\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVE\",\n size: 3,\n },\n },\n mir: {\n niceType: \"Mir\",\n type: \"mir\",\n patterns: [[2200, 2204]],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: \"CVP2\",\n size: 3,\n },\n },\n hiper: {\n niceType: \"Hiper\",\n type: \"hiper\",\n patterns: [637095, 63737423, 63743358, 637568, 637599, 637609, 637612],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n hipercard: {\n niceType: \"Hipercard\",\n type: \"hipercard\",\n patterns: [606282],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: \"CVC\",\n size: 3,\n },\n },\n};\nmodule.exports = cardTypes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(originalObject) {\n if (!originalObject) {\n return null;\n }\n return JSON.parse(JSON.stringify(originalObject));\n}\nexports.clone = clone;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findBestMatch = void 0;\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) { return result.matchStrength; }).length;\n /*\n * if all possible results have a maxStrength property that means the card\n * number is sufficiently long enough to determine conclusively what the card\n * type is\n * */\n return (numberOfResultsWithMaxStrengthProperty > 0 &&\n numberOfResultsWithMaxStrengthProperty === results.length);\n}\nfunction findBestMatch(results) {\n if (!hasEnoughResultsToDetermineBestMatch(results)) {\n return null;\n }\n return results.reduce(function (bestMatch, result) {\n if (!bestMatch) {\n return result;\n }\n /*\n * If the current best match pattern is less specific than this result, set\n * the result as the new best match\n * */\n if (Number(bestMatch.matchStrength) < Number(result.matchStrength)) {\n return result;\n }\n return bestMatch;\n });\n}\nexports.findBestMatch = findBestMatch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidInputType = void 0;\nfunction isValidInputType(cardNumber) {\n return typeof cardNumber === \"string\" || cardNumber instanceof String;\n}\nexports.isValidInputType = isValidInputType;\n","\"use strict\";\n/*\n * Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\n * */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matches = void 0;\nfunction matchesRange(cardNumber, min, max) {\n var maxLengthToCheck = String(min).length;\n var substr = cardNumber.substr(0, maxLengthToCheck);\n var integerRepresentationOfCardNumber = parseInt(substr, 10);\n min = parseInt(String(min).substr(0, substr.length), 10);\n max = parseInt(String(max).substr(0, substr.length), 10);\n return (integerRepresentationOfCardNumber >= min &&\n integerRepresentationOfCardNumber <= max);\n}\nfunction matchesPattern(cardNumber, pattern) {\n pattern = String(pattern);\n return (pattern.substring(0, cardNumber.length) ===\n cardNumber.substring(0, pattern.length));\n}\nfunction matches(cardNumber, pattern) {\n if (Array.isArray(pattern)) {\n return matchesRange(cardNumber, pattern[0], pattern[1]);\n }\n return matchesPattern(cardNumber, pattern);\n}\nexports.matches = matches;\n","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', 'å°æ—¶', '天', '周', '个月', 'å¹´'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻åŽ'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","import { setTimerId, getTimerId, getDateAttribute } from './utils/dom';\nimport { formatDiff, diffSec, nextInterval } from './utils/date';\nimport { getLocale } from './register';\n// all realtime timer\nvar TIMER_POOL = {};\n/**\n * clear a timer from pool\n * @param tid\n */\nvar clear = function (tid) {\n clearTimeout(tid);\n delete TIMER_POOL[tid];\n};\n// run with timer(setTimeout)\nfunction run(node, date, localeFunc, opts) {\n // clear the node's exist timer\n clear(getTimerId(node));\n var relativeDate = opts.relativeDate, minInterval = opts.minInterval;\n // get diff seconds\n var diff = diffSec(date, relativeDate);\n // render\n node.innerText = formatDiff(diff, localeFunc);\n var tid = setTimeout(function () {\n run(node, date, localeFunc, opts);\n }, Math.min(Math.max(nextInterval(diff), minInterval || 1) * 1000, 0x7fffffff));\n // there is no need to save node in object. Just save the key\n TIMER_POOL[tid] = 0;\n setTimerId(node, tid);\n}\n/**\n * cancel a timer or all timers\n * @param node - node hosting the time string\n */\nexport function cancel(node) {\n // cancel one\n if (node)\n clear(getTimerId(node));\n // cancel all\n // @ts-ignore\n else\n Object.keys(TIMER_POOL).forEach(clear);\n}\n/**\n * render a dom realtime\n * @param nodes\n * @param locale\n * @param opts\n */\nexport function render(nodes, locale, opts) {\n // by .length\n // @ts-ignore\n var nodeList = nodes.length ? nodes : [nodes];\n nodeList.forEach(function (node) {\n run(node, getDateAttribute(node), getLocale(locale), opts || {});\n });\n return nodeList;\n}\n//# sourceMappingURL=realtime.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map","const i=new WeakMap;class t{constructor(t,s){this.startPaused=!1,this.disabled=!1,this.clients=new Set,this.pendingComplete=!1,this.host=t,this.defaultOptions=s.defaultOptions||{},this.startPaused=!!s.startPaused,this.disabled=!!s.disabled,this.onComplete=s.onComplete,i.set(this.host,this)}async add(i){this.clients.add(i),this.startPaused&&i.webAnimation?.pause(),this.pendingComplete=!0,await i.finished,this.pendingComplete&&!this.isAnimating&&(this.pendingComplete=!1,this.onComplete?.())}remove(i){this.clients.delete(i)}pause(){this.clients.forEach((i=>i.webAnimation?.pause()))}play(){this.clients.forEach((i=>i.webAnimation?.play()))}cancel(){this.clients.forEach((i=>i.webAnimation?.cancel())),this.clients.clear()}finish(){this.clients.forEach((i=>i.webAnimation?.finish())),this.clients.clear()}togglePlay(){this.isPlaying?this.pause():this.play()}get isAnimating(){return this.clients.size>0}get isPlaying(){return Array.from(this.clients).some((i=>\"running\"===i.webAnimation?.playState))}async finished(){await Promise.all(Array.from(this.clients).map((i=>i.finished)))}}export{t as AnimateController,i as controllerMap};\n//# sourceMappingURL=animate-controller.js.map\n","import{nothing as t}from\"lit/html.js\";import{directive as i,PartType as s}from\"lit/directive.js\";import{AsyncDirective as e}from\"lit/async-directive.js\";import{controllerMap as h}from\"./animate-controller.js\";export{AnimateController}from\"./animate-controller.js\";let o=0;const r=new Map,n=new WeakSet,a=()=>new Promise((t=>requestAnimationFrame(t))),c=[{transform:\"translateY(100%) scale(0)\",opacity:0}],l=[{transform:\"translateY(-100%) scale(0)\",opacity:0}],d=[{transform:\"translateX(-100%) scale(0)\",opacity:0}],u=[{transform:\"translateX(100%) scale(0)\",opacity:0}],m=[{}],f=[{opacity:0}],p=f,v=[{opacity:0},{opacity:1}],y=[{opacity:0},{opacity:.25,offset:.75},{opacity:1}],g=(t,i)=>{const s=t-i;return 0===s?void 0:s},w=(t,i)=>{const s=t/i;return 1===s?void 0:s},N={left:(t,i)=>{const s=g(t,i);return{value:s,transform:null==s||isNaN(s)?void 0:`translateX(${s}px)`}},top:(t,i)=>{const s=g(t,i);return{value:s,transform:null==s||isNaN(s)?void 0:`translateY(${s}px)`}},width:(t,i)=>{let s;0===i&&(i=1,s={width:\"1px\"});const e=w(t,i);return{value:e,overrideFrom:s,transform:null==e||isNaN(e)?void 0:`scaleX(${e})`}},height:(t,i)=>{let s;0===i&&(i=1,s={height:\"1px\"});const e=w(t,i);return{value:e,overrideFrom:s,transform:null==e||isNaN(e)?void 0:`scaleY(${e})`}}},A={duration:333,easing:\"ease-in-out\"},b=[\"left\",\"top\",\"width\",\"height\",\"opacity\",\"color\",\"background\"],j=new WeakMap;class x extends e{constructor(t){if(super(t),this.t=!1,this.i=null,this.o=null,this.h=!0,this.shouldLog=!1,t.type===s.CHILD)throw Error(\"The `animate` directive must be used in attribute position.\");this.createFinished()}createFinished(){this.resolveFinished?.(),this.finished=new Promise((t=>{this.l=t}))}async resolveFinished(){this.l?.(),this.l=void 0}render(i){return t}getController(){return h.get(this.u)}isDisabled(){return this.options.disabled||this.getController()?.disabled}update(t,[i]){const s=void 0===this.u;return s&&(this.u=t.options?.host,this.u.addController(this),this.u.updateComplete.then((t=>this.t=!0)),this.element=t.element,j.set(this.element,this)),this.optionsOrCallback=i,(s||\"function\"!=typeof i)&&this.p(i),this.render(i)}p(t){t=t??{};const i=this.getController();void 0!==i&&((t={...i.defaultOptions,...t}).keyframeOptions={...i.defaultOptions.keyframeOptions,...t.keyframeOptions}),t.properties??=b,this.options=t}m(){const t={},i=this.element.getBoundingClientRect(),s=getComputedStyle(this.element);return this.options.properties.forEach((e=>{const h=i[e]??(N[e]?void 0:s[e]),o=Number(h);t[e]=isNaN(o)?h+\"\":o})),t}v(){let t,i=!0;return this.options.guard&&(t=this.options.guard(),i=((t,i)=>{if(Array.isArray(t)){if(Array.isArray(i)&&i.length===t.length&&t.every(((t,s)=>t===i[s])))return!1}else if(i===t)return!1;return!0})(t,this._)),this.h=this.t&&!this.isDisabled()&&!this.isAnimating()&&i&&this.element.isConnected,this.h&&(this._=Array.isArray(t)?Array.from(t):t),this.h}hostUpdate(){\"function\"==typeof this.optionsOrCallback&&this.p(this.optionsOrCallback()),this.v()&&(this.A=this.m(),this.i=this.i??this.element.parentNode,this.o=this.element.nextSibling)}async hostUpdated(){if(!this.h||!this.element.isConnected||this.options.skipInitial&&!this.isHostRendered)return;let t;this.prepare(),await a;const i=this.O(),s=this.j(this.options.keyframeOptions,i),e=this.m();if(void 0!==this.A){const{from:s,to:h}=this.N(this.A,e,i);this.log(\"measured\",[this.A,e,s,h]),t=this.calculateKeyframes(s,h)}else{const s=r.get(this.options.inId);if(s){r.delete(this.options.inId);const{from:h,to:n}=this.N(s,e,i);t=this.calculateKeyframes(h,n),t=this.options.in?[{...this.options.in[0],...t[0]},...this.options.in.slice(1),t[1]]:t,o++,t.forEach((t=>t.zIndex=o))}else this.options.in&&(t=[...this.options.in,{}])}this.animate(t,s)}resetStyles(){void 0!==this.P&&(this.element.setAttribute(\"style\",this.P??\"\"),this.P=void 0)}commitStyles(){this.P=this.element.getAttribute(\"style\"),this.webAnimation?.commitStyles(),this.webAnimation?.cancel()}reconnected(){}async disconnected(){if(!this.h)return;if(void 0!==this.options.id&&r.set(this.options.id,this.A),void 0===this.options.out)return;if(this.prepare(),await a(),this.i?.isConnected){const t=this.o&&this.o.parentNode===this.i?this.o:null;if(this.i.insertBefore(this.element,t),this.options.stabilizeOut){const t=this.m();this.log(\"stabilizing out\");const i=this.A.left-t.left,s=this.A.top-t.top;!(\"static\"===getComputedStyle(this.element).position)||0===i&&0===s||(this.element.style.position=\"relative\"),0!==i&&(this.element.style.left=i+\"px\"),0!==s&&(this.element.style.top=s+\"px\")}}const t=this.j(this.options.keyframeOptions);await this.animate(this.options.out,t),this.element.remove()}prepare(){this.createFinished()}start(){this.options.onStart?.(this)}didFinish(t){t&&this.options.onComplete?.(this),this.A=void 0,this.animatingProperties=void 0,this.frames=void 0,this.resolveFinished()}O(){const t=[];for(let i=this.element.parentNode;i;i=i?.parentNode){const s=j.get(i);s&&!s.isDisabled()&&s&&t.push(s)}return t}get isHostRendered(){const t=n.has(this.u);return t||this.u.updateComplete.then((()=>{n.add(this.u)})),t}j(t,i=this.O()){const s={...A};return i.forEach((t=>Object.assign(s,t.options.keyframeOptions))),Object.assign(s,t),s}N(t,i,s){t={...t},i={...i};const e=s.map((t=>t.animatingProperties)).filter((t=>void 0!==t));let h=1,o=1;return e.length>0&&(e.forEach((t=>{t.width&&(h/=t.width),t.height&&(o/=t.height)})),void 0!==t.left&&void 0!==i.left&&(t.left=h*t.left,i.left=h*i.left),void 0!==t.top&&void 0!==i.top&&(t.top=o*t.top,i.top=o*i.top)),{from:t,to:i}}calculateKeyframes(t,i,s=!1){const e={},h={};let o=!1;const r={};for(const s in i){const n=t[s],a=i[s];if(s in N){const t=N[s];if(void 0===n||void 0===a)continue;const i=t(n,a);void 0!==i.transform&&(r[s]=i.value,o=!0,e.transform=`${e.transform??\"\"} ${i.transform}`,void 0!==i.overrideFrom&&Object.assign(e,i.overrideFrom))}else n!==a&&void 0!==n&&void 0!==a&&(o=!0,e[s]=n,h[s]=a)}return e.transformOrigin=h.transformOrigin=s?\"center center\":\"top left\",this.animatingProperties=r,o?[e,h]:void 0}async animate(t,i=this.options.keyframeOptions){this.start(),this.frames=t;let s=!1;if(!this.isAnimating()&&!this.isDisabled()&&(this.options.onFrames&&(this.frames=t=this.options.onFrames(this),this.log(\"modified frames\",t)),void 0!==t)){this.log(\"animate\",[t,i]),s=!0,this.webAnimation=this.element.animate(t,i);const e=this.getController();e?.add(this);try{await this.webAnimation.finished}catch(t){}e?.remove(this)}return this.didFinish(s),s}isAnimating(){return\"running\"===this.webAnimation?.playState||this.webAnimation?.pending}log(t,i){this.shouldLog&&!this.isDisabled()&&console.log(t,this.options.id,i)}}const F=i(x);export{x as Animate,F as animate,a as animationFrame,b as defaultCssProperties,A as defaultKeyframeOptions,p as fade,v as fadeIn,y as fadeInSlow,f as fadeOut,l as flyAbove,c as flyBelow,d as flyLeft,u as flyRight,m as none,N as transformProps};\n//# sourceMappingURL=animate.js.map\n","import{nothing as t}from\"lit/html.js\";import{directive as i,PartType as s}from\"lit/directive.js\";import{AsyncDirective as o}from\"lit/async-directive.js\";const r=[\"top\",\"right\",\"bottom\",\"left\"];class e extends o{constructor(t){if(super(t),t.type!==s.ELEMENT)throw Error(\"The `position` directive must be used in attribute position.\")}render(i,s){return t}update(t,[i,s]){return void 0===this.u&&(this.u=t.options?.host,this.u.addController(this)),this.S=t.element,this.C=i,this.F=s??[\"left\",\"top\",\"width\",\"height\"],this.render(i,s)}hostUpdated(){this.$()}$(){const t=\"function\"==typeof this.C?this.C():this.C?.value,i=t.offsetParent;if(void 0===t||!i)return;const s=t.getBoundingClientRect(),o=i.getBoundingClientRect();this.F?.forEach((t=>{const i=r.includes(t)?s[t]-o[t]:s[t];this.S.style[t]=i+\"px\"}))}}const h=i(e);export{e as Position,h as position};\n//# sourceMappingURL=position.js.map\n","// packages/ag-grid-community/src/localEventService.ts\nvar LocalEventService = class {\n constructor() {\n this.allSyncListeners = /* @__PURE__ */ new Map();\n this.allAsyncListeners = /* @__PURE__ */ new Map();\n this.globalSyncListeners = /* @__PURE__ */ new Set();\n this.globalAsyncListeners = /* @__PURE__ */ new Set();\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n // using an object performs better than a Set for the number of different events we have\n this.firedEvents = {};\n }\n setFrameworkOverrides(frameworkOverrides) {\n this.frameworkOverrides = frameworkOverrides;\n }\n getListeners(eventType, async, autoCreateListenerCollection) {\n const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n let listeners = listenerMap.get(eventType);\n if (!listeners && autoCreateListenerCollection) {\n listeners = /* @__PURE__ */ new Set();\n listenerMap.set(eventType, listeners);\n }\n return listeners;\n }\n noRegisteredListenersExist() {\n return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 && this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;\n }\n addEventListener(eventType, listener, async = false) {\n this.getListeners(eventType, async, true).add(listener);\n }\n removeEventListener(eventType, listener, async = false) {\n const listeners = this.getListeners(eventType, async, false);\n if (!listeners) {\n return;\n }\n listeners.delete(listener);\n if (listeners.size === 0) {\n const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n listenerMap.delete(eventType);\n }\n }\n addGlobalListener(listener, async = false) {\n (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n }\n removeGlobalListener(listener, async = false) {\n (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n }\n dispatchEvent(event) {\n const agEvent = event;\n this.dispatchToListeners(agEvent, true);\n this.dispatchToListeners(agEvent, false);\n this.firedEvents[agEvent.type] = true;\n }\n dispatchEventOnce(event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n }\n dispatchToListeners(event, async) {\n const eventType = event.type;\n if (async && \"event\" in event) {\n const browserEvent = event.event;\n if (browserEvent instanceof Event) {\n event.eventPath = browserEvent.composedPath();\n }\n }\n const processEventListeners = (listeners2, originalListeners2) => listeners2.forEach((listener) => {\n if (!originalListeners2.has(listener)) {\n return;\n }\n const callback = this.frameworkOverrides ? () => this.frameworkOverrides.wrapIncoming(() => listener(event)) : () => listener(event);\n if (async) {\n this.dispatchAsync(callback);\n } else {\n callback();\n }\n });\n const originalListeners = this.getListeners(eventType, async, false) ?? /* @__PURE__ */ new Set();\n const listeners = new Set(originalListeners);\n if (listeners.size > 0) {\n processEventListeners(listeners, originalListeners);\n }\n const globalListeners = new Set(\n async ? this.globalAsyncListeners : this.globalSyncListeners\n );\n globalListeners.forEach((listener) => {\n const callback = this.frameworkOverrides ? () => this.frameworkOverrides.wrapIncoming(() => listener(eventType, event)) : () => listener(eventType, event);\n if (async) {\n this.dispatchAsync(callback);\n } else {\n callback();\n }\n });\n }\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n dispatchAsync(func) {\n this.asyncFunctionsQueue.push(func);\n if (!this.scheduled) {\n const flush = () => {\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n };\n this.frameworkOverrides ? this.frameworkOverrides.wrapIncoming(flush) : flush();\n this.scheduled = true;\n }\n }\n // this happens in the next VM turn only, and empties the queue of events\n flushAsyncQueue() {\n this.scheduled = false;\n const queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n queueCopy.forEach((func) => func());\n }\n};\n\n// packages/ag-grid-community/src/misc/locale/localeUtils.ts\nfunction defaultLocaleTextFunc(_key, defaultValue) {\n return defaultValue;\n}\nfunction _getLocaleTextFunc(localeSvc) {\n return localeSvc?.getLocaleTextFunc() ?? defaultLocaleTextFunc;\n}\n\n// packages/ag-grid-community/src/utils/aria.ts\nfunction _toggleAriaAttribute(element, attribute, value) {\n if (value == null || typeof value === \"string\" && value == \"\") {\n _removeAriaAttribute(element, attribute);\n } else {\n _setAriaAttribute(element, attribute, value);\n }\n}\nfunction _setAriaAttribute(element, attribute, value) {\n element.setAttribute(_ariaAttributeName(attribute), value.toString());\n}\nfunction _removeAriaAttribute(element, attribute) {\n element.removeAttribute(_ariaAttributeName(attribute));\n}\nfunction _ariaAttributeName(attribute) {\n return `aria-${attribute}`;\n}\nfunction _setAriaRole(element, role) {\n if (role) {\n element.setAttribute(\"role\", role);\n } else {\n element.removeAttribute(\"role\");\n }\n}\nfunction _getAriaSortState(sortDirection) {\n let sort;\n if (sortDirection === \"asc\") {\n sort = \"ascending\";\n } else if (sortDirection === \"desc\") {\n sort = \"descending\";\n } else if (sortDirection === \"mixed\") {\n sort = \"other\";\n } else {\n sort = \"none\";\n }\n return sort;\n}\nfunction _getAriaPosInSet(element) {\n return parseInt(element.getAttribute(\"aria-posinset\"), 10);\n}\nfunction _getAriaLabel(element) {\n return element.getAttribute(\"aria-label\");\n}\nfunction _setAriaLabel(element, label) {\n _toggleAriaAttribute(element, \"label\", label);\n}\nfunction _setAriaLabelledBy(element, labelledBy) {\n _toggleAriaAttribute(element, \"labelledby\", labelledBy);\n}\nfunction _setAriaDescribedBy(element, describedby) {\n _toggleAriaAttribute(element, \"describedby\", describedby);\n}\nfunction _setAriaLive(element, live) {\n _toggleAriaAttribute(element, \"live\", live);\n}\nfunction _setAriaAtomic(element, atomic) {\n _toggleAriaAttribute(element, \"atomic\", atomic);\n}\nfunction _setAriaRelevant(element, relevant) {\n _toggleAriaAttribute(element, \"relevant\", relevant);\n}\nfunction _setAriaLevel(element, level) {\n _toggleAriaAttribute(element, \"level\", level);\n}\nfunction _setAriaDisabled(element, disabled) {\n _toggleAriaAttribute(element, \"disabled\", disabled);\n}\nfunction _setAriaHidden(element, hidden) {\n _toggleAriaAttribute(element, \"hidden\", hidden);\n}\nfunction _setAriaActiveDescendant(element, descendantId) {\n _toggleAriaAttribute(element, \"activedescendant\", descendantId);\n}\nfunction _setAriaExpanded(element, expanded) {\n _setAriaAttribute(element, \"expanded\", expanded);\n}\nfunction _removeAriaExpanded(element) {\n _removeAriaAttribute(element, \"expanded\");\n}\nfunction _setAriaSetSize(element, setsize) {\n _setAriaAttribute(element, \"setsize\", setsize);\n}\nfunction _setAriaPosInSet(element, position) {\n _setAriaAttribute(element, \"posinset\", position);\n}\nfunction _setAriaMultiSelectable(element, multiSelectable) {\n _setAriaAttribute(element, \"multiselectable\", multiSelectable);\n}\nfunction _setAriaRowCount(element, rowCount) {\n _setAriaAttribute(element, \"rowcount\", rowCount);\n}\nfunction _setAriaRowIndex(element, rowIndex) {\n _setAriaAttribute(element, \"rowindex\", rowIndex);\n}\nfunction _setAriaRowSpan(element, spanCount) {\n _setAriaAttribute(element, \"rowspan\", spanCount);\n}\nfunction _setAriaColCount(element, colCount) {\n _setAriaAttribute(element, \"colcount\", colCount);\n}\nfunction _setAriaColIndex(element, colIndex) {\n _setAriaAttribute(element, \"colindex\", colIndex);\n}\nfunction _setAriaColSpan(element, colSpan) {\n _setAriaAttribute(element, \"colspan\", colSpan);\n}\nfunction _setAriaSort(element, sort) {\n _setAriaAttribute(element, \"sort\", sort);\n}\nfunction _removeAriaSort(element) {\n _removeAriaAttribute(element, \"sort\");\n}\nfunction _setAriaSelected(element, selected) {\n _toggleAriaAttribute(element, \"selected\", selected);\n}\nfunction _setAriaChecked(element, checked) {\n _setAriaAttribute(element, \"checked\", checked === void 0 ? \"mixed\" : checked);\n}\nfunction _setAriaControls(controllerElement, controlledElement) {\n _toggleAriaAttribute(controllerElement, \"controls\", controlledElement.id);\n _setAriaLabelledBy(controlledElement, controllerElement.id);\n}\nfunction _setAriaHasPopup(element, hasPopup) {\n _toggleAriaAttribute(element, \"haspopup\", hasPopup === false ? null : hasPopup);\n}\nfunction _getAriaCheckboxStateName(translate, state) {\n return state === void 0 ? translate(\"ariaIndeterminate\", \"indeterminate\") : state === true ? translate(\"ariaChecked\", \"checked\") : translate(\"ariaUnchecked\", \"unchecked\");\n}\n\n// packages/ag-grid-community/src/utils/browser.ts\nvar isSafari;\nvar isChrome;\nvar isFirefox;\nvar isMacOs;\nvar isIOS;\nvar invisibleScrollbar;\nvar browserScrollbarWidth;\nvar maxDivHeight;\nfunction _isBrowserSafari() {\n if (isSafari === void 0) {\n isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n return isSafari;\n}\nfunction _isBrowserChrome() {\n if (isChrome === void 0) {\n const win = window;\n isChrome = !!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime) || /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n }\n return isChrome;\n}\nfunction _isBrowserFirefox() {\n if (isFirefox === void 0) {\n isFirefox = /(firefox)/i.test(navigator.userAgent);\n }\n return isFirefox;\n}\nfunction _isMacOsUserAgent() {\n if (isMacOs === void 0) {\n isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n }\n return isMacOs;\n}\nfunction _isIOSUserAgent() {\n if (isIOS === void 0) {\n isIOS = /iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1;\n }\n return isIOS;\n}\nfunction _getTabIndex(el) {\n if (!el) {\n return null;\n }\n const numberTabIndex = el.tabIndex;\n const tabIndex = el.getAttribute(\"tabIndex\");\n if (numberTabIndex === -1 && (tabIndex === null || tabIndex === \"\" && !_isBrowserFirefox())) {\n return null;\n }\n return numberTabIndex.toString();\n}\nfunction _getMaxDivHeight() {\n if (maxDivHeight !== void 0) {\n return maxDivHeight;\n }\n if (!document.body) {\n return -1;\n }\n let res = 1e6;\n const testUpTo = _isBrowserFirefox() ? 6e6 : 1e9;\n const div = document.createElement(\"div\");\n document.body.appendChild(div);\n while (true) {\n const test = res * 2;\n div.style.height = test + \"px\";\n if (test > testUpTo || div.clientHeight !== test) {\n break;\n } else {\n res = test;\n }\n }\n document.body.removeChild(div);\n maxDivHeight = res;\n return res;\n}\nfunction _getScrollbarWidth() {\n if (browserScrollbarWidth == null) {\n initScrollbarWidthAndVisibility();\n }\n return browserScrollbarWidth;\n}\nfunction initScrollbarWidthAndVisibility() {\n const body = document.body;\n const div = document.createElement(\"div\");\n div.style.width = div.style.height = \"100px\";\n div.style.opacity = \"0\";\n div.style.overflow = \"scroll\";\n div.style.msOverflowStyle = \"scrollbar\";\n div.style.position = \"absolute\";\n body.appendChild(div);\n let width = div.offsetWidth - div.clientWidth;\n if (width === 0 && div.clientWidth === 0) {\n width = null;\n }\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n if (width != null) {\n browserScrollbarWidth = width;\n invisibleScrollbar = width === 0;\n }\n}\nfunction _isInvisibleScrollbar() {\n if (invisibleScrollbar == null) {\n initScrollbarWidthAndVisibility();\n }\n return invisibleScrollbar;\n}\n\n// packages/ag-grid-community/src/utils/dom.ts\nvar rtlNegativeScroll;\nfunction _radioCssClass(element, elementClass, otherElementClass) {\n const parent = element.parentElement;\n let sibling = parent && parent.firstChild;\n while (sibling) {\n if (elementClass) {\n sibling.classList.toggle(elementClass, sibling === element);\n }\n if (otherElementClass) {\n sibling.classList.toggle(otherElementClass, sibling !== element);\n }\n sibling = sibling.nextSibling;\n }\n}\nvar FOCUSABLE_SELECTOR = \"[tabindex], input, select, button, textarea, [href]\";\nvar FOCUSABLE_EXCLUDE = \"[disabled], .ag-disabled:not(.ag-button), .ag-disabled *\";\nfunction _isFocusableFormField(element) {\n const matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n const inputSelector = \"input, select, button, textarea\";\n const isFocusable = matches.call(element, inputSelector);\n const isNotFocusable = matches.call(element, FOCUSABLE_EXCLUDE);\n const isElementVisible = _isVisible(element);\n const focusable = isFocusable && !isNotFocusable && isElementVisible;\n return focusable;\n}\nfunction _setDisplayed(element, displayed, options = {}) {\n const { skipAriaHidden } = options;\n element.classList.toggle(\"ag-hidden\", !displayed);\n if (!skipAriaHidden) {\n _setAriaHidden(element, !displayed);\n }\n}\nfunction _setVisible(element, visible, options = {}) {\n const { skipAriaHidden } = options;\n element.classList.toggle(\"ag-invisible\", !visible);\n if (!skipAriaHidden) {\n _setAriaHidden(element, !visible);\n }\n}\nfunction _setDisabled(element, disabled) {\n const attributeName = \"disabled\";\n const addOrRemoveDisabledAttribute = disabled ? (e) => e.setAttribute(attributeName, \"\") : (e) => e.removeAttribute(attributeName);\n addOrRemoveDisabledAttribute(element);\n const inputs = element.querySelectorAll(\"input\") ?? [];\n for (const input of inputs) {\n addOrRemoveDisabledAttribute(input);\n }\n}\nfunction _isElementChildOfClass(element, cls, maxNest) {\n let counter = 0;\n while (element) {\n if (element.classList.contains(cls)) {\n return true;\n }\n element = element.parentElement;\n if (typeof maxNest == \"number\") {\n if (++counter > maxNest) {\n break;\n }\n } else if (element === maxNest) {\n break;\n }\n }\n return false;\n}\nfunction _getElementSize(el) {\n const {\n height,\n width,\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n boxSizing\n } = window.getComputedStyle(el);\n return {\n height: parseFloat(height || \"0\"),\n width: parseFloat(width || \"0\"),\n borderTopWidth: parseFloat(borderTopWidth || \"0\"),\n borderRightWidth: parseFloat(borderRightWidth || \"0\"),\n borderBottomWidth: parseFloat(borderBottomWidth || \"0\"),\n borderLeftWidth: parseFloat(borderLeftWidth || \"0\"),\n paddingTop: parseFloat(paddingTop || \"0\"),\n paddingRight: parseFloat(paddingRight || \"0\"),\n paddingBottom: parseFloat(paddingBottom || \"0\"),\n paddingLeft: parseFloat(paddingLeft || \"0\"),\n marginTop: parseFloat(marginTop || \"0\"),\n marginRight: parseFloat(marginRight || \"0\"),\n marginBottom: parseFloat(marginBottom || \"0\"),\n marginLeft: parseFloat(marginLeft || \"0\"),\n boxSizing\n };\n}\nfunction _getInnerHeight(el) {\n const size = _getElementSize(el);\n if (size.boxSizing === \"border-box\") {\n return size.height - size.paddingTop - size.paddingBottom;\n }\n return size.height;\n}\nfunction _getInnerWidth(el) {\n const size = _getElementSize(el);\n if (size.boxSizing === \"border-box\") {\n return size.width - size.paddingLeft - size.paddingRight;\n }\n return size.width;\n}\nfunction _getAbsoluteHeight(el) {\n const { height, marginBottom, marginTop } = _getElementSize(el);\n return Math.floor(height + marginBottom + marginTop);\n}\nfunction _getAbsoluteWidth(el) {\n const { width, marginLeft, marginRight } = _getElementSize(el);\n return Math.floor(width + marginLeft + marginRight);\n}\nfunction _getElementRectWithOffset(el) {\n const offsetElementRect = el.getBoundingClientRect();\n const { borderTopWidth, borderLeftWidth, borderRightWidth, borderBottomWidth } = _getElementSize(el);\n return {\n top: offsetElementRect.top + (borderTopWidth || 0),\n left: offsetElementRect.left + (borderLeftWidth || 0),\n right: offsetElementRect.right + (borderRightWidth || 0),\n bottom: offsetElementRect.bottom + (borderBottomWidth || 0)\n };\n}\nfunction _isRtlNegativeScroll() {\n if (typeof rtlNegativeScroll === \"boolean\") {\n return rtlNegativeScroll;\n }\n const template = document.createElement(\"div\");\n template.style.direction = \"rtl\";\n template.style.width = \"1px\";\n template.style.height = \"1px\";\n template.style.position = \"fixed\";\n template.style.top = \"0px\";\n template.style.overflow = \"hidden\";\n template.dir = \"rtl\";\n template.innerHTML = /* html */\n `<div style=\"width: 2px\">\n <span style=\"display: inline-block; width: 1px\"></span>\n <span style=\"display: inline-block; width: 1px\"></span>\n </div>`;\n document.body.appendChild(template);\n template.scrollLeft = 1;\n rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;\n document.body.removeChild(template);\n return rtlNegativeScroll;\n}\nfunction _getScrollLeft(element, rtl) {\n let scrollLeft = element.scrollLeft;\n if (rtl) {\n scrollLeft = Math.abs(scrollLeft);\n if (_isBrowserChrome() && !_isRtlNegativeScroll()) {\n scrollLeft = element.scrollWidth - element.getBoundingClientRect().width - scrollLeft;\n }\n }\n return scrollLeft;\n}\nfunction _setScrollLeft(element, value, rtl) {\n if (rtl) {\n if (_isRtlNegativeScroll()) {\n value *= -1;\n } else if (_isBrowserSafari() || _isBrowserChrome()) {\n value = element.scrollWidth - element.getBoundingClientRect().width - value;\n }\n }\n element.scrollLeft = value;\n}\nfunction _clearElement(el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\nfunction _removeFromParent(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction _isInDOM(element) {\n return !!element.offsetParent;\n}\nfunction _isVisible(element) {\n const el = element;\n if (el.checkVisibility) {\n return el.checkVisibility({ checkVisibilityCSS: true });\n }\n const isHidden = !_isInDOM(element) || window.getComputedStyle(element).visibility !== \"visible\";\n return !isHidden;\n}\nfunction _loadTemplate(template) {\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = (template || \"\").trim();\n return tempDiv.firstChild;\n}\nfunction _ensureDomOrder(eContainer, eChild, eChildBefore) {\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n if (!eContainer.firstChild) {\n eContainer.appendChild(eChild);\n } else if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n } else {\n eContainer.appendChild(eChild);\n }\n } else if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n eContainer.insertAdjacentElement(\"afterbegin\", eChild);\n }\n}\nfunction _setDomChildOrder(eContainer, orderedChildren) {\n for (let i = 0; i < orderedChildren.length; i++) {\n const correctCellAtIndex = orderedChildren[i];\n const actualCellAtIndex = eContainer.children[i];\n if (actualCellAtIndex !== correctCellAtIndex) {\n eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n }\n }\n}\nfunction _camelCaseToHyphenated(camelCase) {\n return camelCase.replace(/[A-Z]/g, (s) => `-${s.toLocaleLowerCase()}`);\n}\nfunction _addStylesToElement(eElement, styles) {\n if (!styles) {\n return;\n }\n for (const key of Object.keys(styles)) {\n const value = styles[key];\n if (!key || !key.length || value == null) {\n continue;\n }\n const parsedKey = _camelCaseToHyphenated(key);\n const valueAsString = value.toString();\n const parsedValue = valueAsString.replace(/\\s*!important/g, \"\");\n const priority = parsedValue.length != valueAsString.length ? \"important\" : void 0;\n eElement.style.setProperty(parsedKey, parsedValue, priority);\n }\n}\nfunction _isHorizontalScrollShowing(element) {\n return element.clientWidth < element.scrollWidth;\n}\nfunction _isVerticalScrollShowing(element) {\n return element.clientHeight < element.scrollHeight;\n}\nfunction _setElementWidth(element, width) {\n if (width === \"flex\") {\n element.style.removeProperty(\"width\");\n element.style.removeProperty(\"minWidth\");\n element.style.removeProperty(\"maxWidth\");\n element.style.flex = \"1 1 auto\";\n } else {\n _setFixedWidth(element, width);\n }\n}\nfunction _setFixedWidth(element, width) {\n width = _formatSize(width);\n element.style.width = width;\n element.style.maxWidth = width;\n element.style.minWidth = width;\n}\nfunction _setFixedHeight(element, height) {\n height = _formatSize(height);\n element.style.height = height;\n element.style.maxHeight = height;\n element.style.minHeight = height;\n}\nfunction _formatSize(size) {\n return typeof size === \"number\" ? `${size}px` : size;\n}\nfunction _isNodeOrElement(o) {\n return o instanceof Node || o instanceof HTMLElement;\n}\nfunction _addOrRemoveAttribute(element, name, value) {\n if (value == null || value === \"\") {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value.toString());\n }\n}\nfunction _observeResize(beans, element, callback) {\n const win = _getWindow(beans);\n const ResizeObserverImpl = win.ResizeObserver;\n const resizeObserver = ResizeObserverImpl ? new ResizeObserverImpl(callback) : null;\n resizeObserver?.observe(element);\n return () => resizeObserver?.disconnect();\n}\nfunction _getTextSelectionRanges(beans) {\n const rootNode = _getRootNode(beans);\n const selection = \"getSelection\" in rootNode ? rootNode.getSelection() : null;\n const ranges = [];\n for (let i = 0; i < (selection?.rangeCount ?? 0); i++) {\n const range = selection?.getRangeAt(i);\n if (range) {\n ranges.push(range);\n }\n }\n return { selection, ranges };\n}\nfunction _preserveRangesWhile(beans, fn) {\n const enableCellTextSelection = beans.gos.get(\"enableCellTextSelection\");\n if (!enableCellTextSelection) {\n return fn();\n }\n if (!_isBrowserFirefox() && !_isBrowserSafari()) {\n return fn();\n }\n const { selection, ranges } = _getTextSelectionRanges(beans);\n fn();\n selection?.removeAllRanges();\n for (const range of ranges) {\n selection?.addRange(range);\n }\n}\nfunction _requestAnimationFrame(beans, callback) {\n const win = _getWindow(beans);\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(callback);\n } else if (win.webkitRequestAnimationFrame) {\n win.webkitRequestAnimationFrame(callback);\n } else {\n win.setTimeout(callback, 0);\n }\n}\nvar DataRefAttribute = \"data-ref\";\nvar whitespaceNode;\nfunction getWhitespaceNode() {\n whitespaceNode ?? (whitespaceNode = document.createTextNode(\" \"));\n return whitespaceNode.cloneNode();\n}\nfunction _createElement(params) {\n const { attrs, children, cls, ref, role, tag } = params;\n const element = document.createElement(tag);\n if (cls) {\n element.className = cls;\n }\n if (ref) {\n element.setAttribute(DataRefAttribute, ref);\n }\n if (role) {\n element.setAttribute(\"role\", role);\n }\n if (attrs) {\n for (const key of Object.keys(attrs)) {\n element.setAttribute(key, attrs[key]);\n }\n }\n if (children) {\n if (typeof children === \"string\") {\n element.textContent = children;\n } else {\n let addFirstWhitespace = true;\n for (const child of children) {\n if (child) {\n if (typeof child === \"string\") {\n element.appendChild(document.createTextNode(child));\n addFirstWhitespace = false;\n } else {\n if (addFirstWhitespace) {\n element.appendChild(getWhitespaceNode());\n addFirstWhitespace = false;\n }\n element.append(_createElement(child));\n element.appendChild(getWhitespaceNode());\n }\n }\n }\n }\n }\n return element;\n}\n\n// packages/ag-grid-community/src/utils/generic.ts\nfunction _makeNull(value) {\n if (value == null || value === \"\") {\n return null;\n }\n return value;\n}\nfunction _exists(value) {\n return value != null && value !== \"\";\n}\nfunction _missing(value) {\n return !_exists(value);\n}\nfunction _toStringOrNull(value) {\n return value != null && typeof value.toString === \"function\" ? value.toString() : null;\n}\nfunction _jsonEquals(val1, val2) {\n const val1Json = val1 ? JSON.stringify(val1) : null;\n const val2Json = val2 ? JSON.stringify(val2) : null;\n return val1Json === val2Json;\n}\nfunction _defaultComparator(valueA, valueB, accentedCompare = false) {\n const valueAMissing = valueA == null;\n const valueBMissing = valueB == null;\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n function doQuickCompare(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n if (typeof valueA !== \"string\") {\n return doQuickCompare(valueA, valueB);\n }\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n try {\n return valueA.localeCompare(valueB);\n } catch (e) {\n return doQuickCompare(valueA, valueB);\n }\n}\n\n// packages/ag-grid-community/src/baseUrl.ts\nvar BASE_URL = \"https://www.ag-grid.com\";\n\n// packages/ag-grid-community/src/utils/function.ts\nvar doOnceFlags = {};\nfunction _doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nfunction _logIfDebug(gos, message, ...args) {\n if (gos.get(\"debug\")) {\n console.log(\"AG Grid: \" + message, ...args);\n }\n}\nfunction _warnOnce(msg, ...args) {\n _doOnce(() => console.warn(\"AG Grid: \" + msg, ...args), msg + args?.join(\"\"));\n}\nfunction _errorOnce(msg, ...args) {\n _doOnce(() => console.error(\"AG Grid: \" + msg, ...args), msg + args?.join(\"\"));\n}\nvar batchedCallsSetTimeout = {\n pending: false,\n funcs: []\n};\nvar batchedCallsRaf = {\n pending: false,\n funcs: []\n};\nfunction _batchCall(func, mode = \"setTimeout\", beans) {\n const batch = mode === \"raf\" ? batchedCallsRaf : batchedCallsSetTimeout;\n batch.funcs.push(func);\n if (batch.pending) {\n return;\n }\n batch.pending = true;\n const runBatch = () => {\n const funcsCopy = batch.funcs.slice();\n batch.funcs.length = 0;\n batch.pending = false;\n funcsCopy.forEach((func2) => func2());\n };\n if (mode === \"raf\") {\n _requestAnimationFrame(beans, runBatch);\n } else {\n window.setTimeout(runBatch, 0);\n }\n}\nfunction _debounce(bean, func, delay) {\n let timeout;\n return function(...args) {\n const context = this;\n window.clearTimeout(timeout);\n timeout = window.setTimeout(function() {\n if (bean.isAlive()) {\n func.apply(context, args);\n }\n }, delay);\n };\n}\nfunction _throttle(func, wait) {\n let previousCall = 0;\n return function(...args) {\n const context = this;\n const currentCall = Date.now();\n if (currentCall - previousCall < wait) {\n return;\n }\n previousCall = currentCall;\n func.apply(context, args);\n };\n}\nfunction _waitUntil(condition, callback, timeout = 100, timeoutMessage) {\n const timeStamp = Date.now();\n let interval = null;\n let executed = false;\n const internalCallback = () => {\n const reachedTimeout = Date.now() - timeStamp > timeout;\n if (condition() || reachedTimeout) {\n callback();\n executed = true;\n if (interval != null) {\n window.clearInterval(interval);\n interval = null;\n }\n if (reachedTimeout && timeoutMessage) {\n _warnOnce(timeoutMessage);\n }\n }\n };\n internalCallback();\n if (!executed) {\n interval = window.setInterval(internalCallback, 10);\n }\n}\n\n// packages/ag-grid-community/src/version.ts\nvar VERSION = \"33.2.1\";\n\n// packages/ag-grid-community/src/validation/logging.ts\nvar MAX_URL_LENGTH = 2e3;\nvar MIN_PARAM_LENGTH = 100;\nvar VERSION_PARAM_NAME = \"_version_\";\nvar validation = null;\nvar suppressAllLogging = false;\nvar baseDocLink = `${BASE_URL}/javascript-data-grid`;\nfunction provideValidationServiceLogger(logger) {\n validation = logger;\n}\nfunction setValidationDocLink(docLink) {\n baseDocLink = docLink;\n}\nfunction getErrorParts(id, args, defaultMessage) {\n return validation?.getConsoleMessage(id, args) ?? [minifiedLog(id, args, defaultMessage)];\n}\nfunction getMsgOrDefault(logger, id, args, defaultMessage) {\n if (suppressAllLogging)\n return;\n logger(`error #${id}`, ...getErrorParts(id, args, defaultMessage));\n}\nfunction stringifyObject(inputObj) {\n if (!inputObj)\n return String(inputObj);\n const object = {};\n for (const prop of Object.keys(inputObj)) {\n if (typeof inputObj[prop] !== \"object\" && typeof inputObj[prop] !== \"function\") {\n object[prop] = inputObj[prop];\n }\n }\n return JSON.stringify(object);\n}\nfunction stringifyValue(value) {\n let output = value;\n if (value instanceof Error) {\n output = value.toString();\n } else if (typeof value === \"object\") {\n output = stringifyObject(value);\n }\n return output;\n}\nfunction toStringWithNullUndefined(str) {\n return str === void 0 ? \"undefined\" : str === null ? \"null\" : str;\n}\nfunction getParamsUrl(baseUrl, params) {\n return `${baseUrl}?${params.toString()}`;\n}\nfunction truncateUrl(baseUrl, params, maxLength) {\n const sortedParams = Array.from(params.entries()).sort((a, b) => b[1].length - a[1].length);\n let url = getParamsUrl(baseUrl, params);\n for (const [key, value] of sortedParams) {\n if (key === VERSION_PARAM_NAME) {\n continue;\n }\n const excessLength = url.length - maxLength;\n if (excessLength <= 0) {\n break;\n }\n const ellipse = \"...\";\n const truncateAmount = excessLength + ellipse.length;\n const truncatedValue = value.length - truncateAmount > MIN_PARAM_LENGTH ? value.slice(0, value.length - truncateAmount) + ellipse : value.slice(0, MIN_PARAM_LENGTH) + ellipse;\n params.set(key, truncatedValue);\n url = getParamsUrl(baseUrl, params);\n }\n return url;\n}\nfunction getErrorLink(errorNum, args) {\n const params = new URLSearchParams();\n params.append(VERSION_PARAM_NAME, VERSION);\n if (args) {\n for (const key of Object.keys(args)) {\n params.append(key, stringifyValue(args[key]));\n }\n }\n const baseUrl = `${baseDocLink}/errors/${errorNum}`;\n const url = getParamsUrl(baseUrl, params);\n return url.length <= MAX_URL_LENGTH ? url : truncateUrl(baseUrl, params, MAX_URL_LENGTH);\n}\nvar minifiedLog = (errorNum, args, defaultMessage) => {\n const errorLink = getErrorLink(errorNum, args);\n return `${defaultMessage ? defaultMessage + \" \\n\" : \"\"}Visit ${errorLink}${defaultMessage ? \"\" : \" \\n Alternatively register the ValidationModule to see the full message in the console.\"}`;\n};\nfunction _warn(...args) {\n getMsgOrDefault(_warnOnce, args[0], args[1]);\n}\nfunction _error(...args) {\n getMsgOrDefault(_errorOnce, args[0], args[1]);\n}\nfunction _logPreInitErr(id, args, defaultMessage) {\n getMsgOrDefault(_errorOnce, id, args, defaultMessage);\n}\nfunction getErrMsg(defaultMessage, args) {\n const id = args[0];\n return `error #${id} ` + getErrorParts(id, args[1], defaultMessage).join(\" \");\n}\nfunction _errMsg(...args) {\n return getErrMsg(void 0, args);\n}\nfunction _preInitErrMsg(...args) {\n return getErrMsg(\"\\n\", args);\n}\n\n// packages/ag-grid-community/src/gridOptionsUtils.ts\nfunction isRowModelType(gos, rowModelType) {\n return gos.get(\"rowModelType\") === rowModelType;\n}\nfunction _isClientSideRowModel(gos, rowModel) {\n return isRowModelType(gos, \"clientSide\");\n}\nfunction _isServerSideRowModel(gos, rowModel) {\n return isRowModelType(gos, \"serverSide\");\n}\nfunction _isDomLayout(gos, domLayout) {\n return gos.get(\"domLayout\") === domLayout;\n}\nfunction _isRowSelection(gos) {\n return _getRowSelectionMode(gos) !== void 0;\n}\nfunction _isGetRowHeightFunction(gos) {\n return typeof gos.get(\"getRowHeight\") === \"function\";\n}\nfunction _shouldMaintainColumnOrder(gos, isPivotColumns) {\n if (isPivotColumns) {\n return !gos.get(\"enableStrictPivotColumnOrder\");\n }\n return gos.get(\"maintainColumnOrder\");\n}\nfunction _getRowHeightForNode(beans, rowNode, allowEstimate = false, defaultRowHeight) {\n const { gos, environment } = beans;\n if (defaultRowHeight == null) {\n defaultRowHeight = environment.getDefaultRowHeight();\n }\n if (_isGetRowHeightFunction(gos)) {\n if (allowEstimate) {\n return { height: defaultRowHeight, estimated: true };\n }\n const params = {\n node: rowNode,\n data: rowNode.data\n };\n const height = gos.getCallback(\"getRowHeight\")(params);\n if (isNumeric(height)) {\n if (height === 0) {\n _warn(23);\n }\n return { height: Math.max(1, height), estimated: false };\n }\n }\n if (rowNode.detail && gos.get(\"masterDetail\")) {\n return getMasterDetailRowHeight(gos);\n }\n const gridOptionsRowHeight = gos.get(\"rowHeight\");\n const rowHeight = gridOptionsRowHeight && isNumeric(gridOptionsRowHeight) ? gridOptionsRowHeight : defaultRowHeight;\n return { height: rowHeight, estimated: false };\n}\nfunction getMasterDetailRowHeight(gos) {\n if (gos.get(\"detailRowAutoHeight\")) {\n return { height: 1, estimated: false };\n }\n const defaultRowHeight = gos.get(\"detailRowHeight\");\n if (isNumeric(defaultRowHeight)) {\n return { height: defaultRowHeight, estimated: false };\n }\n return { height: 300, estimated: false };\n}\nfunction _getRowHeightAsNumber(beans) {\n const { environment, gos } = beans;\n const gridOptionsRowHeight = gos.get(\"rowHeight\");\n if (!gridOptionsRowHeight || _missing(gridOptionsRowHeight)) {\n return environment.getDefaultRowHeight();\n }\n const rowHeight = environment.refreshRowHeightVariable();\n if (rowHeight !== -1) {\n return rowHeight;\n }\n _warn(24);\n return environment.getDefaultRowHeight();\n}\nfunction isNumeric(value) {\n return !isNaN(value) && typeof value === \"number\" && isFinite(value);\n}\nfunction _getDomData(gos, element, key) {\n const domData = element[gos.getDomDataKey()];\n return domData ? domData[key] : void 0;\n}\nfunction _setDomData(gos, element, key, value) {\n const domDataKey = gos.getDomDataKey();\n let domData = element[domDataKey];\n if (_missing(domData)) {\n domData = {};\n element[domDataKey] = domData;\n }\n domData[key] = value;\n}\nfunction _getDocument(beans) {\n const { gos, eGridDiv } = beans;\n let result = null;\n const gridOptionsGetDocument = gos.get(\"getDocument\");\n if (gridOptionsGetDocument && _exists(gridOptionsGetDocument)) {\n result = gridOptionsGetDocument();\n } else if (eGridDiv) {\n result = eGridDiv.ownerDocument;\n }\n if (result && _exists(result)) {\n return result;\n }\n return document;\n}\nfunction _getWindow(beans) {\n const eDocument = _getDocument(beans);\n return eDocument.defaultView || window;\n}\nfunction _getRootNode(beans) {\n return beans.eGridDiv.getRootNode();\n}\nfunction _getActiveDomElement(beans) {\n return _getRootNode(beans).activeElement;\n}\nfunction _getPageBody(beans) {\n let rootNode = null;\n let targetEl = null;\n try {\n rootNode = _getDocument(beans).fullscreenElement;\n } catch (e) {\n } finally {\n if (!rootNode) {\n rootNode = _getRootNode(beans);\n }\n const body = rootNode.querySelector(\"body\");\n if (body) {\n targetEl = body;\n } else if (rootNode instanceof ShadowRoot) {\n targetEl = rootNode;\n } else if (rootNode instanceof Document) {\n targetEl = rootNode?.documentElement;\n } else {\n targetEl = rootNode;\n }\n }\n return targetEl;\n}\nfunction _getBodyWidth(beans) {\n const body = _getPageBody(beans);\n return body?.clientWidth ?? (window.innerHeight || -1);\n}\nfunction _getBodyHeight(beans) {\n const body = _getPageBody(beans);\n return body?.clientHeight ?? (window.innerHeight || -1);\n}\nfunction _anchorElementToMouseMoveEvent(element, mouseMoveEvent, beans) {\n const eRect = element.getBoundingClientRect();\n const height = eRect.height;\n const browserWidth = _getBodyWidth(beans) - 2;\n const browserHeight = _getBodyHeight(beans) - 2;\n const offsetParent = element.offsetParent;\n if (!offsetParent) {\n return;\n }\n const offsetParentSize = _getElementRectWithOffset(element.offsetParent);\n const { clientY, clientX } = mouseMoveEvent;\n let top = clientY - offsetParentSize.top - height / 2;\n let left = clientX - offsetParentSize.left - 10;\n const eDocument = _getDocument(beans);\n const win = eDocument.defaultView || window;\n const windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;\n const windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;\n if (browserWidth > 0 && left + element.clientWidth > browserWidth + windowScrollX) {\n left = browserWidth + windowScrollX - element.clientWidth;\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0 && top + element.clientHeight > browserHeight + windowScrollY) {\n top = browserHeight + windowScrollY - element.clientHeight;\n }\n if (top < 0) {\n top = 0;\n }\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n}\nfunction _isNothingFocused(beans) {\n const eDocument = _getDocument(beans);\n const activeEl = _getActiveDomElement(beans);\n return activeEl === null || activeEl === eDocument.body;\n}\nfunction _isAnimateRows(gos) {\n if (gos.get(\"ensureDomOrder\")) {\n return false;\n }\n return gos.get(\"animateRows\");\n}\nfunction _isGroupRowsSticky(gos) {\n if (gos.get(\"paginateChildRows\") || gos.get(\"groupHideOpenParents\") || _isDomLayout(gos, \"print\")) {\n return false;\n }\n return true;\n}\nfunction _isColumnsSortingCoupledToGroup(gos) {\n const autoGroupColumnDef = gos.get(\"autoGroupColumnDef\");\n return !autoGroupColumnDef?.comparator && !gos.get(\"treeData\");\n}\nfunction _getGroupAggFiltering(gos) {\n const userValue = gos.get(\"groupAggFiltering\");\n if (typeof userValue === \"function\") {\n return gos.getCallback(\"groupAggFiltering\");\n }\n if (userValue === true) {\n return () => true;\n }\n return void 0;\n}\nfunction _getGrandTotalRow(gos) {\n return gos.get(\"grandTotalRow\");\n}\nfunction _getGroupTotalRowCallback(gos) {\n const userValue = gos.get(\"groupTotalRow\");\n if (typeof userValue === \"function\") {\n return gos.getCallback(\"groupTotalRow\");\n }\n return () => userValue ?? void 0;\n}\nfunction _isGroupMultiAutoColumn(gos) {\n const isHideOpenParents = !!gos.get(\"groupHideOpenParents\");\n if (isHideOpenParents) {\n return true;\n }\n return gos.get(\"groupDisplayType\") === \"multipleColumns\";\n}\nfunction _isGroupUseEntireRow(gos, pivotMode) {\n if (pivotMode) {\n return false;\n }\n return gos.get(\"groupDisplayType\") === \"groupRows\";\n}\nfunction _getRowIdCallback(gos) {\n const getRowId = gos.getCallback(\"getRowId\");\n if (getRowId === void 0) {\n return getRowId;\n }\n return (params) => {\n let id = getRowId(params);\n if (typeof id !== \"string\") {\n _warn(25, { id });\n id = String(id);\n }\n return id;\n };\n}\nfunction _canSkipShowingRowGroup(gos, node) {\n const isSkippingGroups = gos.get(\"groupHideParentOfSingleChild\");\n if (isSkippingGroups === true) {\n return true;\n }\n if (isSkippingGroups === \"leafGroupsOnly\" && node.leafGroup) {\n return true;\n }\n if (gos.get(\"groupRemoveSingleChildren\")) {\n return true;\n }\n if (gos.get(\"groupRemoveLowestSingleChildren\") && node.leafGroup) {\n return true;\n }\n return false;\n}\nfunction _getMaxConcurrentDatasourceRequests(gos) {\n const res = gos.get(\"maxConcurrentDatasourceRequests\");\n return res > 0 ? res : void 0;\n}\nfunction _shouldUpdateColVisibilityAfterGroup(gos, isGrouped) {\n const preventVisibilityChanges = gos.get(\"suppressGroupChangesColumnVisibility\");\n if (preventVisibilityChanges === true) {\n return false;\n }\n if (isGrouped && preventVisibilityChanges === \"suppressHideOnGroup\") {\n return false;\n }\n if (!isGrouped && preventVisibilityChanges === \"suppressShowOnUngroup\") {\n return false;\n }\n const legacySuppressOnGroup = gos.get(\"suppressRowGroupHidesColumns\");\n if (isGrouped && legacySuppressOnGroup === true) {\n return false;\n }\n const legacySuppressOnUngroup = gos.get(\"suppressMakeColumnVisibleAfterUnGroup\");\n if (!isGrouped && legacySuppressOnUngroup === true) {\n return false;\n }\n return true;\n}\nfunction _getCheckboxes(selection) {\n return selection?.checkboxes ?? true;\n}\nfunction _getHeaderCheckbox(selection) {\n return selection?.mode === \"multiRow\" && (selection.headerCheckbox ?? true);\n}\nfunction _getCheckboxLocation(rowSelection) {\n if (typeof rowSelection !== \"object\") {\n return void 0;\n }\n return rowSelection.checkboxLocation ?? \"selectionColumn\";\n}\nfunction _getHideDisabledCheckboxes(selection) {\n return selection?.hideDisabledCheckboxes ?? false;\n}\nfunction _isUsingNewRowSelectionAPI(gos) {\n const rowSelection = gos.get(\"rowSelection\");\n return typeof rowSelection !== \"string\";\n}\nfunction _isUsingNewCellSelectionAPI(gos) {\n return gos.get(\"cellSelection\") !== void 0;\n}\nfunction _getSuppressMultiRanges(gos) {\n const selection = gos.get(\"cellSelection\");\n const useNewAPI = selection !== void 0;\n if (!useNewAPI) {\n return gos.get(\"suppressMultiRangeSelection\");\n }\n return typeof selection !== \"boolean\" ? selection?.suppressMultiRanges ?? false : false;\n}\nfunction _isCellSelectionEnabled(gos) {\n const selection = gos.get(\"cellSelection\");\n const useNewAPI = selection !== void 0;\n return useNewAPI ? !!selection : gos.get(\"enableRangeSelection\");\n}\nfunction _getFillHandle(gos) {\n const selection = gos.get(\"cellSelection\");\n const useNewAPI = selection !== void 0;\n if (!useNewAPI) {\n return {\n mode: \"fill\",\n setFillValue: gos.get(\"fillOperation\"),\n direction: gos.get(\"fillHandleDirection\"),\n suppressClearOnFillReduction: gos.get(\"suppressClearOnFillReduction\")\n };\n }\n return typeof selection !== \"boolean\" && selection.handle?.mode === \"fill\" ? selection.handle : void 0;\n}\nfunction _getEnableClickSelection(gos) {\n const selection = gos.get(\"rowSelection\") ?? \"single\";\n if (typeof selection === \"string\") {\n const suppressRowClickSelection = gos.get(\"suppressRowClickSelection\");\n const suppressRowDeselection = gos.get(\"suppressRowDeselection\");\n if (suppressRowClickSelection && suppressRowDeselection) {\n return false;\n } else if (suppressRowClickSelection) {\n return \"enableDeselection\";\n } else if (suppressRowDeselection) {\n return \"enableSelection\";\n } else {\n return true;\n }\n }\n return selection.mode === \"singleRow\" || selection.mode === \"multiRow\" ? selection.enableClickSelection ?? false : false;\n}\nfunction _getEnableSelection(gos) {\n const enableClickSelection = _getEnableClickSelection(gos);\n return enableClickSelection === true || enableClickSelection === \"enableSelection\";\n}\nfunction _getEnableDeselection(gos) {\n const enableClickSelection = _getEnableClickSelection(gos);\n return enableClickSelection === true || enableClickSelection === \"enableDeselection\";\n}\nfunction _getIsRowSelectable(gos) {\n const selection = gos.get(\"rowSelection\");\n if (typeof selection === \"string\") {\n return gos.get(\"isRowSelectable\");\n }\n return selection?.isRowSelectable;\n}\nfunction _getRowSelectionMode(arg) {\n const selection = \"beanName\" in arg && arg.beanName === \"gos\" ? arg.get(\"rowSelection\") : arg.rowSelection;\n if (typeof selection === \"string\") {\n switch (selection) {\n case \"multiple\":\n return \"multiRow\";\n case \"single\":\n return \"singleRow\";\n default:\n return;\n }\n }\n switch (selection?.mode) {\n case \"multiRow\":\n case \"singleRow\":\n return selection.mode;\n default:\n return;\n }\n}\nfunction _isMultiRowSelection(arg) {\n const mode = _getRowSelectionMode(arg);\n return mode === \"multiRow\";\n}\nfunction _getEnableSelectionWithoutKeys(gos) {\n const selection = gos.get(\"rowSelection\");\n if (typeof selection === \"string\") {\n return gos.get(\"rowMultiSelectWithClick\");\n }\n return selection?.enableSelectionWithoutKeys ?? false;\n}\nfunction _getGroupSelection(gos) {\n const selection = gos.get(\"rowSelection\");\n if (typeof selection === \"string\") {\n const groupSelectsChildren = gos.get(\"groupSelectsChildren\");\n const groupSelectsFiltered = gos.get(\"groupSelectsFiltered\");\n if (groupSelectsChildren && groupSelectsFiltered) {\n return \"filteredDescendants\";\n } else if (groupSelectsChildren) {\n return \"descendants\";\n } else {\n return \"self\";\n }\n }\n return selection?.mode === \"multiRow\" ? selection.groupSelects : void 0;\n}\nfunction _getSelectAll(gos, defaultValue = true) {\n const rowSelection = gos.get(\"rowSelection\");\n if (typeof rowSelection !== \"object\") {\n return defaultValue ? \"all\" : void 0;\n }\n return rowSelection.mode === \"multiRow\" ? rowSelection.selectAll : \"all\";\n}\nfunction _getGroupSelectsDescendants(gos) {\n const groupSelection = _getGroupSelection(gos);\n return groupSelection === \"descendants\" || groupSelection === \"filteredDescendants\";\n}\nfunction _getMasterSelects(gos) {\n const rowSelection = gos.get(\"rowSelection\");\n return typeof rowSelection === \"object\" && rowSelection.masterSelects || \"self\";\n}\nfunction _isSetFilterByDefault(gos) {\n return gos.isModuleRegistered(\"SetFilter\") && !gos.get(\"suppressSetFilterByDefault\");\n}\nfunction _isLegacyMenuEnabled(gos) {\n return gos.get(\"columnMenu\") === \"legacy\";\n}\nfunction _isColumnMenuAnchoringEnabled(gos) {\n return !_isLegacyMenuEnabled(gos);\n}\nfunction _getCallbackForEvent(eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n return \"on\" + eventName[0].toUpperCase() + eventName.substring(1);\n}\nfunction _combineAttributesAndGridOptions(gridOptions, component, gridOptionsKeys) {\n if (typeof gridOptions !== \"object\") {\n gridOptions = {};\n }\n const mergedOptions = { ...gridOptions };\n gridOptionsKeys.forEach((key) => {\n const value = component[key];\n if (typeof value !== \"undefined\") {\n mergedOptions[key] = value;\n }\n });\n return mergedOptions;\n}\nfunction _processOnChange(changes, api) {\n if (!changes) {\n return;\n }\n const gridChanges = {};\n let hasChanges = false;\n Object.keys(changes).forEach((key) => {\n gridChanges[key] = changes[key];\n hasChanges = true;\n });\n if (!hasChanges) {\n return;\n }\n const internalUpdateEvent = {\n type: \"gridOptionsChanged\",\n options: gridChanges\n };\n api.dispatchEvent(internalUpdateEvent);\n const event = {\n type: \"componentStateChanged\",\n ...gridChanges\n };\n api.dispatchEvent(event);\n}\nfunction _addGridCommonParams(gos, params) {\n return gos.addGridCommonParams(params);\n}\nfunction _getGroupingApproach(gos) {\n if (gos.get(\"treeData\")) {\n if (gos.get(\"treeDataParentIdField\")) {\n return \"treeSelfRef\";\n }\n if (gos.get(\"treeDataChildrenField\")) {\n return \"treeNested\";\n }\n return \"treePath\";\n }\n return \"group\";\n}\n\n// packages/ag-grid-community/src/utils/event.ts\nvar AG_GRID_STOP_PROPAGATION = \"__ag_Grid_Stop_Propagation\";\nvar PASSIVE_EVENTS = [\"touchstart\", \"touchend\", \"touchmove\", \"touchcancel\", \"scroll\"];\nvar NON_PASSIVE_EVENTS = [\"wheel\"];\nvar supports = {};\nfunction _stopPropagationForAgGrid(event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n}\nfunction _isStopPropagationForAgGrid(event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nvar _isEventSupported = /* @__PURE__ */ (() => {\n const tags = {\n select: \"input\",\n change: \"input\",\n submit: \"form\",\n reset: \"form\",\n error: \"img\",\n load: \"img\",\n abort: \"img\"\n };\n const eventChecker = (eventName) => {\n if (typeof supports[eventName] === \"boolean\") {\n return supports[eventName];\n }\n const el = document.createElement(tags[eventName] || \"div\");\n eventName = \"on\" + eventName;\n return supports[eventName] = eventName in el;\n };\n return eventChecker;\n})();\nfunction _getCtrlForEventTarget(gos, eventTarget, type) {\n let sourceElement = eventTarget;\n while (sourceElement) {\n const renderedComp = _getDomData(gos, sourceElement, type);\n if (renderedComp) {\n return renderedComp;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n}\nfunction _isElementInEventPath(element, event) {\n if (!event || !element) {\n return false;\n }\n return _getEventPath(event).indexOf(element) >= 0;\n}\nfunction _createEventPath(event) {\n const res = [];\n let pointer = event.target;\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n}\nfunction _getEventPath(event) {\n const eventNoType = event;\n if (eventNoType.path) {\n return eventNoType.path;\n }\n if (eventNoType.composedPath) {\n return eventNoType.composedPath();\n }\n return _createEventPath(eventNoType);\n}\nfunction _addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n const passive = getPassiveStateForEvent(event);\n let options;\n if (passive != null) {\n options = { passive };\n }\n if (frameworkOverrides && frameworkOverrides.addEventListener) {\n frameworkOverrides.addEventListener(eElement, event, listener, options);\n }\n}\nvar getPassiveStateForEvent = (event) => {\n const isPassive = PASSIVE_EVENTS.includes(event);\n const isNonPassive = NON_PASSIVE_EVENTS.includes(event);\n if (isPassive) {\n return true;\n }\n if (isNonPassive) {\n return false;\n }\n};\n\n// packages/ag-grid-community/src/context/beanStub.ts\nvar BeanStub = class {\n constructor() {\n // not named context to allow children to use 'context' as a variable name\n this.destroyFunctions = [];\n this.destroyed = false;\n // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive\n // prevents vue from creating proxies for created objects and prevents identity related issues\n this.__v_skip = true;\n this.propertyListenerId = 0;\n // Enable multiple grid properties to be updated together by the user but only trigger shared logic once.\n // Closely related to logic in GridOptionsUtils.ts _processOnChange\n this.lastChangeSetIdLookup = {};\n this.isAlive = () => !this.destroyed;\n }\n preWireBeans(beans) {\n this.beans = beans;\n this.stubContext = beans.context;\n this.eventSvc = beans.eventSvc;\n this.gos = beans.gos;\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n destroy() {\n const { destroyFunctions } = this;\n for (let i = 0; i < destroyFunctions.length; i++) {\n destroyFunctions[i]();\n }\n destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchLocalEvent({ type: \"destroyed\" });\n }\n // The typing of AgEventListener<any, any, any> is not ideal, but it's the best we can do at the moment to enable\n // eventSvc to have the best typing at the expense of BeanStub local events\n /** Add a local event listener against this BeanStub */\n addEventListener(eventType, listener, async) {\n if (!this.localEventService) {\n this.localEventService = new LocalEventService();\n }\n this.localEventService.addEventListener(eventType, listener, async);\n }\n /** Remove a local event listener from this BeanStub */\n removeEventListener(eventType, listener, async) {\n this.localEventService?.removeEventListener(eventType, listener, async);\n }\n dispatchLocalEvent(event) {\n this.localEventService?.dispatchEvent(event);\n }\n addManagedElementListeners(object, handlers) {\n return this._setupListeners(object, handlers);\n }\n addManagedEventListeners(handlers) {\n return this._setupListeners(this.eventSvc, handlers);\n }\n addManagedListeners(object, handlers) {\n return this._setupListeners(object, handlers);\n }\n _setupListeners(object, handlers) {\n const destroyFuncs = [];\n for (const k of Object.keys(handlers)) {\n const handler = handlers[k];\n if (handler) {\n destroyFuncs.push(this._setupListener(object, k, handler));\n }\n }\n return destroyFuncs;\n }\n _setupListener(object, event, listener) {\n if (this.destroyed) {\n return () => null;\n }\n let destroyFunc;\n if (isAgEventEmitter(object)) {\n object.__addEventListener(event, listener);\n destroyFunc = () => {\n object.__removeEventListener(event, listener);\n return null;\n };\n } else {\n if (object instanceof HTMLElement) {\n _addSafePassiveEventListener(this.beans.frameworkOverrides, object, event, listener);\n } else {\n object.addEventListener(event, listener);\n }\n destroyFunc = () => {\n object.removeEventListener(event, listener);\n return null;\n };\n }\n this.destroyFunctions.push(destroyFunc);\n return () => {\n destroyFunc();\n this.destroyFunctions = this.destroyFunctions.filter((fn) => fn !== destroyFunc);\n return null;\n };\n }\n /**\n * Setup a managed property listener for the given GridOption property.\n * However, stores the destroy function in the beanStub so that if this bean\n * is a component the destroy function will be called when the component is destroyed\n * as opposed to being cleaned up only when the GridOptionsService is destroyed.\n */\n setupGridOptionListener(event, listener) {\n const { gos } = this;\n gos.addPropertyEventListener(event, listener);\n const destroyFunc = () => {\n gos.removePropertyEventListener(event, listener);\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return () => {\n destroyFunc();\n this.destroyFunctions = this.destroyFunctions.filter((fn) => fn !== destroyFunc);\n return null;\n };\n }\n /**\n * Setup a managed property listener for the given GridOption property.\n * @param event GridOption property to listen to changes for.\n * @param listener Listener to run when property value changes\n */\n addManagedPropertyListener(event, listener) {\n if (this.destroyed) {\n return () => null;\n }\n return this.setupGridOptionListener(event, listener);\n }\n /**\n * Setup managed property listeners for the given set of GridOption properties.\n * The listener will be run if any of the property changes but will only run once if\n * multiple of the properties change within the same framework lifecycle event.\n * Works on the basis that GridOptionsService updates all properties *before* any property change events are fired.\n * @param events Array of GridOption properties to listen for changes too.\n * @param listener Shared listener to run if any of the properties change\n */\n addManagedPropertyListeners(events, listener) {\n if (this.destroyed) {\n return;\n }\n const eventsKey = events.join(\"-\") + this.propertyListenerId++;\n const wrappedListener = (event) => {\n if (event.changeSet) {\n if (event.changeSet && event.changeSet.id === this.lastChangeSetIdLookup[eventsKey]) {\n return;\n }\n this.lastChangeSetIdLookup[eventsKey] = event.changeSet.id;\n }\n const propertiesChangeEvent = {\n type: \"gridPropertyChanged\",\n changeSet: event.changeSet,\n source: event.source\n };\n listener(propertiesChangeEvent);\n };\n events.forEach((event) => this.setupGridOptionListener(event, wrappedListener));\n }\n getLocaleTextFunc() {\n return _getLocaleTextFunc(this.beans.localeSvc);\n }\n addDestroyFunc(func) {\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n } else {\n func();\n }\n }\n /** doesn't throw an error if `bean` is undefined */\n createOptionalManagedBean(bean, context) {\n return bean ? this.createManagedBean(bean, context) : void 0;\n }\n createManagedBean(bean, context) {\n const res = this.createBean(bean, context);\n this.addDestroyFunc(this.destroyBean.bind(this, bean, context));\n return res;\n }\n createBean(bean, context, afterPreCreateCallback) {\n return (context || this.stubContext).createBean(bean, afterPreCreateCallback);\n }\n /**\n * Destroys a bean and returns undefined to support destruction and clean up in a single line.\n * this.dateComp = this.context.destroyBean(this.dateComp);\n */\n destroyBean(bean, context) {\n return (context || this.stubContext).destroyBean(bean);\n }\n /**\n * Destroys an array of beans and returns an empty array to support destruction and clean up in a single line.\n * this.dateComps = this.context.destroyBeans(this.dateComps);\n */\n destroyBeans(beans, context) {\n return (context || this.stubContext).destroyBeans(beans);\n }\n};\nfunction isAgEventEmitter(object) {\n return object.__addEventListener !== void 0;\n}\n\n// packages/ag-grid-community/src/utils/object.ts\nvar SKIP_JS_BUILTINS = /* @__PURE__ */ new Set([\"__proto__\", \"constructor\", \"prototype\"]);\nfunction _iterateObject(object, callback) {\n if (object == null) {\n return;\n }\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; i++) {\n callback(i.toString(), object[i]);\n }\n return;\n }\n for (const key of Object.keys(object)) {\n callback(key, object[key]);\n }\n}\nfunction _mergeDeep(dest, source, copyUndefined = true, makeCopyOfSimpleObjects = false) {\n if (!_exists(source)) {\n return;\n }\n _iterateObject(source, (key, sourceValue) => {\n if (SKIP_JS_BUILTINS.has(key)) {\n return;\n }\n let destValue = dest[key];\n if (destValue === sourceValue) {\n return;\n }\n if (makeCopyOfSimpleObjects) {\n const objectIsDueToBeCopied = destValue == null && sourceValue != null;\n if (objectIsDueToBeCopied) {\n const doNotCopyAsSourceIsSimpleObject = typeof sourceValue === \"object\" && sourceValue.constructor === Object;\n if (doNotCopyAsSourceIsSimpleObject) {\n destValue = {};\n dest[key] = destValue;\n }\n }\n }\n if (_isNonNullObject(sourceValue) && _isNonNullObject(destValue) && !Array.isArray(destValue)) {\n _mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);\n } else if (copyUndefined || sourceValue !== void 0) {\n dest[key] = sourceValue;\n }\n });\n}\nfunction _getValueUsingField(data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n if (!fieldContainsDots) {\n return data[field];\n }\n const fields = field.split(\".\");\n let currentObject = data;\n for (let i = 0; i < fields.length; i++) {\n if (currentObject == null) {\n return void 0;\n }\n currentObject = currentObject[fields[i]];\n }\n return currentObject;\n}\nfunction _isNonNullObject(value) {\n return typeof value === \"object\" && value !== null;\n}\n\n// packages/ag-grid-community/src/utils/string.ts\nvar reUnescapedHtml = /[&<>\"']/g;\nvar HTML_ESCAPES = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\"\n};\nfunction _escapeString(toEscape, skipEscapingHtmlChars) {\n if (toEscape == null) {\n return null;\n }\n const stringResult = toEscape.toString().toString();\n if (skipEscapingHtmlChars) {\n return stringResult;\n }\n return stringResult.replace(reUnescapedHtml, (chr) => HTML_ESCAPES[chr]);\n}\n\n// packages/ag-grid-community/src/entities/agColumn.ts\nvar COL_DEF_DEFAULTS = {\n resizable: true,\n sortable: true\n};\nvar instanceIdSequence = 0;\nfunction getNextColInstanceId() {\n return instanceIdSequence++;\n}\nfunction isColumn(col) {\n return col instanceof AgColumn;\n}\nvar AgColumn = class extends BeanStub {\n constructor(colDef, userProvidedColDef, colId, primary) {\n super();\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.colId = colId;\n this.primary = primary;\n this.isColumn = true;\n // used by React (and possibly other frameworks) as key for rendering. also used to\n // identify old vs new columns for destroying cols when no longer used.\n this.instanceId = getNextColInstanceId();\n // The measured height of this column's header when autoHeaderHeight is enabled\n this.autoHeaderHeight = null;\n this.moving = false;\n this.menuVisible = false;\n this.lastLeftPinned = false;\n this.firstRightPinned = false;\n this.filterActive = false;\n this.colEventSvc = new LocalEventService();\n this.tooltipEnabled = false;\n this.rowGroupActive = false;\n this.pivotActive = false;\n this.aggregationActive = false;\n this.flex = null;\n this.colIdSanitised = _escapeString(colId);\n }\n destroy() {\n super.destroy();\n this.beans.rowSpanSvc?.deregister(this);\n }\n getInstanceId() {\n return this.instanceId;\n }\n setState() {\n const {\n colDef,\n beans: { sortSvc, pinnedCols, colFlex }\n } = this;\n sortSvc?.initCol(this);\n const hide = colDef.hide;\n if (hide !== void 0) {\n this.visible = !hide;\n } else {\n this.visible = !colDef.initialHide;\n }\n pinnedCols?.initCol(this);\n colFlex?.initCol(this);\n }\n // gets called when user provides an alternative colDef, eg\n setColDef(colDef, userProvidedColDef, source) {\n const colSpanChanged = colDef.spanRows !== this.colDef.spanRows;\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.initMinAndMaxWidths();\n this.initDotNotation();\n this.initTooltip();\n if (colSpanChanged) {\n this.beans.rowSpanSvc?.deregister(this);\n this.initRowSpan();\n }\n this.dispatchColEvent(\"colDefChanged\", source);\n }\n getUserProvidedColDef() {\n return this.userProvidedColDef;\n }\n getParent() {\n return this.parent;\n }\n getOriginalParent() {\n return this.originalParent;\n }\n // this is done after constructor as it uses gridOptionsService\n postConstruct() {\n this.setState();\n this.initMinAndMaxWidths();\n this.resetActualWidth(\"gridInitializing\");\n this.initDotNotation();\n this.initTooltip();\n this.initRowSpan();\n }\n initDotNotation() {\n const {\n gos,\n colDef: { field, tooltipField }\n } = this;\n const suppressDotNotation = gos.get(\"suppressFieldDotNotation\");\n this.fieldContainsDots = _exists(field) && field.indexOf(\".\") >= 0 && !suppressDotNotation;\n this.tooltipFieldContainsDots = _exists(tooltipField) && tooltipField.indexOf(\".\") >= 0 && !suppressDotNotation;\n }\n initMinAndMaxWidths() {\n const colDef = this.colDef;\n this.minWidth = colDef.minWidth ?? this.beans.environment.getDefaultColumnMinWidth();\n this.maxWidth = colDef.maxWidth ?? Number.MAX_SAFE_INTEGER;\n }\n initTooltip() {\n this.beans.tooltipSvc?.initCol(this);\n }\n initRowSpan() {\n if (this.colDef.spanRows) {\n this.beans.rowSpanSvc?.register(this);\n }\n }\n resetActualWidth(source) {\n const initialWidth = this.calculateColInitialWidth(this.colDef);\n this.setActualWidth(initialWidth, source, true);\n }\n calculateColInitialWidth(colDef) {\n let width;\n const colDefWidth = colDef.width;\n const colDefInitialWidth = colDef.initialWidth;\n if (colDefWidth != null) {\n width = colDefWidth;\n } else if (colDefInitialWidth != null) {\n width = colDefInitialWidth;\n } else {\n width = 200;\n }\n return Math.max(Math.min(width, this.maxWidth), this.minWidth);\n }\n isEmptyGroup() {\n return false;\n }\n isRowGroupDisplayed(colId) {\n return this.beans.showRowGroupCols?.isRowGroupDisplayed(this, colId) ?? false;\n }\n isPrimary() {\n return this.primary;\n }\n isFilterAllowed() {\n const filterDefined = !!this.colDef.filter;\n return filterDefined;\n }\n isFieldContainsDots() {\n return this.fieldContainsDots;\n }\n isTooltipEnabled() {\n return this.tooltipEnabled;\n }\n isTooltipFieldContainsDots() {\n return this.tooltipFieldContainsDots;\n }\n getHighlighted() {\n return this.highlighted;\n }\n __addEventListener(eventType, listener) {\n this.colEventSvc.addEventListener(eventType, listener);\n }\n __removeEventListener(eventType, listener) {\n this.colEventSvc.removeEventListener(eventType, listener);\n }\n /**\n * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods.\n */\n addEventListener(eventType, userListener) {\n this.frameworkEventListenerService = this.beans.frameworkOverrides.createLocalEventListenerWrapper?.(\n this.frameworkEventListenerService,\n this.colEventSvc\n );\n const listener = this.frameworkEventListenerService?.wrap(userListener) ?? userListener;\n this.colEventSvc.addEventListener(eventType, listener);\n }\n /**\n * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods.\n */\n removeEventListener(eventType, userListener) {\n const listener = this.frameworkEventListenerService?.unwrap(userListener) ?? userListener;\n this.colEventSvc.removeEventListener(eventType, listener);\n }\n createColumnFunctionCallbackParams(rowNode) {\n return _addGridCommonParams(this.gos, {\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef\n });\n }\n isSuppressNavigable(rowNode) {\n return this.beans.cellNavigation?.isSuppressNavigable(this, rowNode) ?? false;\n }\n isCellEditable(rowNode) {\n return this.beans.editSvc?.isCellEditable(this, rowNode) ?? false;\n }\n isSuppressFillHandle() {\n return !!this.colDef.suppressFillHandle;\n }\n isAutoHeight() {\n return !!this.colDef.autoHeight;\n }\n isAutoHeaderHeight() {\n return !!this.colDef.autoHeaderHeight;\n }\n isRowDrag(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n }\n isDndSource(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n }\n isCellCheckboxSelection(rowNode) {\n return this.beans.selectionSvc?.isCellCheckboxSelection(this, rowNode) ?? false;\n }\n isSuppressPaste(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef?.suppressPaste ?? null);\n }\n isResizable() {\n return !!this.getColDefValue(\"resizable\");\n }\n /** Get value from ColDef or default if it exists. */\n getColDefValue(key) {\n return this.colDef[key] ?? COL_DEF_DEFAULTS[key];\n }\n isColumnFunc(rowNode, value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"function\") {\n const params = this.createColumnFunctionCallbackParams(rowNode);\n const editableFunc = value;\n return editableFunc(params);\n }\n return false;\n }\n createColumnEvent(type, source) {\n return _addGridCommonParams(this.gos, {\n type,\n column: this,\n columns: [this],\n source\n });\n }\n isMoving() {\n return this.moving;\n }\n getSort() {\n return this.sort;\n }\n isSortable() {\n return !!this.getColDefValue(\"sortable\");\n }\n /** @deprecated v32 use col.getSort() === 'asc */\n isSortAscending() {\n return this.sort === \"asc\";\n }\n /** @deprecated v32 use col.getSort() === 'desc */\n isSortDescending() {\n return this.sort === \"desc\";\n }\n /** @deprecated v32 use col.getSort() === undefined */\n isSortNone() {\n return _missing(this.sort);\n }\n /** @deprecated v32 use col.getSort() !== undefined */\n isSorting() {\n return _exists(this.sort);\n }\n getSortIndex() {\n return this.sortIndex;\n }\n isMenuVisible() {\n return this.menuVisible;\n }\n getAggFunc() {\n return this.aggFunc;\n }\n getLeft() {\n return this.left;\n }\n getOldLeft() {\n return this.oldLeft;\n }\n getRight() {\n return this.left + this.actualWidth;\n }\n setLeft(left, source) {\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.dispatchColEvent(\"leftChanged\", source);\n }\n }\n isFilterActive() {\n return this.filterActive;\n }\n /** @deprecated v33 Use `api.isColumnHovered(column)` instead. */\n isHovered() {\n _warn(261);\n return !!this.beans.colHover?.isHovered(this);\n }\n setFirstRightPinned(firstRightPinned, source) {\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.dispatchColEvent(\"firstRightPinnedChanged\", source);\n }\n }\n setLastLeftPinned(lastLeftPinned, source) {\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.dispatchColEvent(\"lastLeftPinnedChanged\", source);\n }\n }\n isFirstRightPinned() {\n return this.firstRightPinned;\n }\n isLastLeftPinned() {\n return this.lastLeftPinned;\n }\n isPinned() {\n return this.pinned === \"left\" || this.pinned === \"right\";\n }\n isPinnedLeft() {\n return this.pinned === \"left\";\n }\n isPinnedRight() {\n return this.pinned === \"right\";\n }\n getPinned() {\n return this.pinned;\n }\n setVisible(visible, source) {\n const newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.dispatchColEvent(\"visibleChanged\", source);\n }\n this.dispatchStateUpdatedEvent(\"hide\");\n }\n isVisible() {\n return this.visible;\n }\n isSpanHeaderHeight() {\n const colDef = this.getColDef();\n return !colDef.suppressSpanHeaderHeight;\n }\n getColumnGroupPaddingInfo() {\n let parent = this.getParent();\n if (!parent || !parent.isPadding()) {\n return { numberOfParents: 0, isSpanningTotal: false };\n }\n const numberOfParents = parent.getPaddingLevel() + 1;\n let isSpanningTotal = true;\n while (parent) {\n if (!parent.isPadding()) {\n isSpanningTotal = false;\n break;\n }\n parent = parent.getParent();\n }\n return { numberOfParents, isSpanningTotal };\n }\n getColDef() {\n return this.colDef;\n }\n getDefinition() {\n return this.colDef;\n }\n getColumnGroupShow() {\n return this.colDef.columnGroupShow;\n }\n getColId() {\n return this.colId;\n }\n getId() {\n return this.colId;\n }\n getUniqueId() {\n return this.colId;\n }\n getActualWidth() {\n return this.actualWidth;\n }\n getAutoHeaderHeight() {\n return this.autoHeaderHeight;\n }\n /** Returns true if the header height has changed */\n setAutoHeaderHeight(height) {\n const changed = height !== this.autoHeaderHeight;\n this.autoHeaderHeight = height;\n return changed;\n }\n createBaseColDefParams(rowNode) {\n const params = _addGridCommonParams(this.gos, {\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this\n });\n return params;\n }\n getColSpan(rowNode) {\n if (_missing(this.colDef.colSpan)) {\n return 1;\n }\n const params = this.createBaseColDefParams(rowNode);\n const colSpan = this.colDef.colSpan(params);\n return Math.max(colSpan, 1);\n }\n getRowSpan(rowNode) {\n if (_missing(this.colDef.rowSpan)) {\n return 1;\n }\n const params = this.createBaseColDefParams(rowNode);\n const rowSpan = this.colDef.rowSpan(params);\n return Math.max(rowSpan, 1);\n }\n setActualWidth(actualWidth, source, silent = false) {\n actualWidth = Math.max(actualWidth, this.minWidth);\n actualWidth = Math.min(actualWidth, this.maxWidth);\n if (this.actualWidth !== actualWidth) {\n this.actualWidth = actualWidth;\n if (this.flex != null && source !== \"flex\" && source !== \"gridInitializing\") {\n this.flex = null;\n }\n if (!silent) {\n this.fireColumnWidthChangedEvent(source);\n }\n }\n this.dispatchStateUpdatedEvent(\"width\");\n }\n fireColumnWidthChangedEvent(source) {\n this.dispatchColEvent(\"widthChanged\", source);\n }\n isGreaterThanMax(width) {\n return width > this.maxWidth;\n }\n getMinWidth() {\n return this.minWidth;\n }\n getMaxWidth() {\n return this.maxWidth;\n }\n getFlex() {\n return this.flex;\n }\n isRowGroupActive() {\n return this.rowGroupActive;\n }\n isPivotActive() {\n return this.pivotActive;\n }\n isAnyFunctionActive() {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n }\n isAnyFunctionAllowed() {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n }\n isValueActive() {\n return this.aggregationActive;\n }\n isAllowPivot() {\n return this.colDef.enablePivot === true;\n }\n isAllowValue() {\n return this.colDef.enableValue === true;\n }\n isAllowRowGroup() {\n return this.colDef.enableRowGroup === true;\n }\n dispatchColEvent(type, source, additionalEventAttributes) {\n const colEvent = this.createColumnEvent(type, source);\n if (additionalEventAttributes) {\n _mergeDeep(colEvent, additionalEventAttributes);\n }\n this.colEventSvc.dispatchEvent(colEvent);\n }\n dispatchStateUpdatedEvent(key) {\n this.colEventSvc.dispatchEvent({\n type: \"columnStateUpdated\",\n key\n });\n }\n};\n\n// packages/ag-grid-community/src/entities/agProvidedColumnGroup.ts\nfunction isProvidedColumnGroup(col) {\n return col instanceof AgProvidedColumnGroup;\n}\nvar AgProvidedColumnGroup = class extends BeanStub {\n constructor(colGroupDef, groupId, padding, level) {\n super();\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.padding = padding;\n this.level = level;\n this.isColumn = false;\n this.expandable = false;\n // used by React (and possibly other frameworks) as key for rendering. also used to\n // identify old vs new columns for destroying cols when no longer used.\n this.instanceId = getNextColInstanceId();\n this.expandableListenerRemoveCallback = null;\n this.expanded = !!colGroupDef?.openByDefault;\n }\n destroy() {\n if (this.expandableListenerRemoveCallback) {\n this.reset(null, void 0);\n }\n super.destroy();\n }\n reset(colGroupDef, level) {\n this.colGroupDef = colGroupDef;\n this.level = level;\n this.originalParent = null;\n if (this.expandableListenerRemoveCallback) {\n this.expandableListenerRemoveCallback();\n }\n this.children = void 0;\n this.expandable = void 0;\n }\n getInstanceId() {\n return this.instanceId;\n }\n getOriginalParent() {\n return this.originalParent;\n }\n getLevel() {\n return this.level;\n }\n isVisible() {\n if (this.children) {\n return this.children.some((child) => child.isVisible());\n }\n return false;\n }\n isPadding() {\n return this.padding;\n }\n setExpanded(expanded) {\n this.expanded = expanded === void 0 ? false : expanded;\n this.dispatchLocalEvent({ type: \"expandedChanged\" });\n }\n isExpandable() {\n return this.expandable;\n }\n isExpanded() {\n return this.expanded;\n }\n getGroupId() {\n return this.groupId;\n }\n getId() {\n return this.getGroupId();\n }\n setChildren(children) {\n this.children = children;\n }\n getChildren() {\n return this.children;\n }\n getColGroupDef() {\n return this.colGroupDef;\n }\n getLeafColumns() {\n const result = [];\n this.addLeafColumns(result);\n return result;\n }\n addLeafColumns(leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach((child) => {\n if (isColumn(child)) {\n leafColumns.push(child);\n } else if (isProvidedColumnGroup(child)) {\n child.addLeafColumns(leafColumns);\n }\n });\n }\n getColumnGroupShow() {\n const colGroupDef = this.colGroupDef;\n if (!colGroupDef) {\n return;\n }\n return colGroupDef.columnGroupShow;\n }\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n setupExpandable() {\n this.setExpandable();\n if (this.expandableListenerRemoveCallback) {\n this.expandableListenerRemoveCallback();\n }\n const listener = this.onColumnVisibilityChanged.bind(this);\n this.getLeafColumns().forEach((col) => col.__addEventListener(\"visibleChanged\", listener));\n this.expandableListenerRemoveCallback = () => {\n this.getLeafColumns().forEach((col) => col.__removeEventListener(\"visibleChanged\", listener));\n this.expandableListenerRemoveCallback = null;\n };\n }\n setExpandable() {\n if (this.isPadding()) {\n return;\n }\n let atLeastOneShowingWhenOpen = false;\n let atLeastOneShowingWhenClosed = false;\n let atLeastOneChangeable = false;\n const children = this.findChildrenRemovingPadding();\n for (let i = 0, j = children.length; i < j; i++) {\n const abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n const headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === \"open\") {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n } else if (headerGroupShow === \"closed\") {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n } else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n }\n }\n const expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n this.dispatchLocalEvent({ type: \"expandableChanged\" });\n }\n }\n findChildrenRemovingPadding() {\n const res = [];\n const process = (items) => {\n items.forEach((item) => {\n const skipBecausePadding = isProvidedColumnGroup(item) && item.isPadding();\n if (skipBecausePadding) {\n process(item.children);\n } else {\n res.push(item);\n }\n });\n };\n process(this.children);\n return res;\n }\n onColumnVisibilityChanged() {\n this.setExpandable();\n }\n};\n\n// packages/ag-grid-community/src/entities/defaultColumnTypes.ts\nvar DefaultColumnTypes = {\n numericColumn: {\n headerClass: \"ag-right-aligned-header\",\n cellClass: \"ag-right-aligned-cell\"\n },\n rightAligned: {\n headerClass: \"ag-right-aligned-header\",\n cellClass: \"ag-right-aligned-cell\"\n }\n};\n\n// packages/ag-grid-community/src/columns/columnKeyCreator.ts\nvar ColumnKeyCreator = class {\n constructor() {\n this.existingKeys = {};\n }\n addExistingKeys(keys) {\n for (let i = 0; i < keys.length; i++) {\n this.existingKeys[keys[i]] = true;\n }\n }\n getUniqueKey(colId, colField) {\n colId = _toStringOrNull(colId);\n let count = 0;\n while (true) {\n let idToTry = colId ?? colField;\n if (idToTry) {\n if (count !== 0) {\n idToTry += \"_\" + count;\n }\n } else {\n idToTry = count;\n }\n if (!this.existingKeys[idToTry]) {\n this.existingKeys[idToTry] = true;\n return String(idToTry);\n }\n count++;\n }\n }\n};\n\n// packages/ag-grid-community/src/utils/array.ts\nvar _EmptyArray = Object.freeze([]);\nfunction _last(arr) {\n if (!arr?.length) {\n return;\n }\n return arr[arr.length - 1];\n}\nfunction _areEqual(a, b, comparator) {\n if (a == null && b == null) {\n return true;\n }\n return a != null && b != null && a.length === b.length && a.every((value, index) => comparator ? comparator(value, b[index]) : b[index] === value);\n}\nfunction _forAll(array, callback) {\n if (!array) {\n return;\n }\n for (const value of array) {\n callback(value);\n }\n}\nfunction _removeFromArray(array, object) {\n const index = array.indexOf(object);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction _moveInArray(array, objectsToMove, toIndex) {\n for (let i = 0; i < objectsToMove.length; i++) {\n _removeFromArray(array, objectsToMove[i]);\n }\n for (let i = objectsToMove.length - 1; i >= 0; i--) {\n array.splice(toIndex, 0, objectsToMove[i]);\n }\n}\nfunction _flatten(arrays) {\n return [].concat.apply([], arrays);\n}\n\n// packages/ag-grid-community/src/columns/columnUtils.ts\nvar GROUP_AUTO_COLUMN_ID = \"ag-Grid-AutoColumn\";\nvar SELECTION_COLUMN_ID = \"ag-Grid-SelectionColumn\";\nvar ROW_NUMBERS_COLUMN_ID = \"ag-Grid-RowNumbersColumn\";\nfunction _getColumnsFromTree(rootColumns) {\n const result = [];\n const recursiveFindColumns = (childColumns) => {\n for (let i = 0; i < childColumns.length; i++) {\n const child = childColumns[i];\n if (isColumn(child)) {\n result.push(child);\n } else if (isProvidedColumnGroup(child)) {\n recursiveFindColumns(child.getChildren());\n }\n }\n };\n recursiveFindColumns(rootColumns);\n return result;\n}\nfunction getWidthOfColsInList(columnList) {\n return columnList.reduce((width, col) => width + col.getActualWidth(), 0);\n}\nfunction _destroyColumnTree(beans, oldTree, newTree) {\n const oldObjectsById = {};\n if (!oldTree) {\n return;\n }\n depthFirstOriginalTreeSearch(null, oldTree, (child) => {\n oldObjectsById[child.getInstanceId()] = child;\n });\n if (newTree) {\n depthFirstOriginalTreeSearch(null, newTree, (child) => {\n oldObjectsById[child.getInstanceId()] = null;\n });\n }\n const colsToDestroy = Object.values(oldObjectsById).filter((item) => item != null);\n beans.context.destroyBeans(colsToDestroy);\n}\nfunction isColumnGroupAutoCol(col) {\n const colId = col.getId();\n return colId.startsWith(GROUP_AUTO_COLUMN_ID);\n}\nfunction isColumnSelectionCol(col) {\n const id = typeof col === \"string\" ? col : \"getColId\" in col ? col.getColId() : col.colId;\n return id?.startsWith(SELECTION_COLUMN_ID) ?? false;\n}\nfunction isRowNumberCol(col) {\n const id = typeof col === \"string\" ? col : \"getColId\" in col ? col.getColId() : col.colId;\n return id?.startsWith(ROW_NUMBERS_COLUMN_ID) ?? false;\n}\nfunction convertColumnTypes(type) {\n let typeKeys = [];\n if (type instanceof Array) {\n typeKeys = type;\n } else if (typeof type === \"string\") {\n typeKeys = type.split(\",\");\n }\n return typeKeys;\n}\nfunction _areColIdsEqual(colsA, colsB) {\n return _areEqual(colsA, colsB, (a, b) => a.getColId() === b.getColId());\n}\nfunction _updateColsMap(cols) {\n cols.map = {};\n cols.list.forEach((col) => cols.map[col.getId()] = col);\n}\nfunction _convertColumnEventSourceType(source) {\n return source === \"gridOptionsUpdated\" ? \"gridOptionsChanged\" : source;\n}\nfunction _columnsMatch(column, key) {\n const columnMatches = column === key;\n const colDefMatches = column.getColDef() === key;\n const idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n}\nvar getValueFactory = (stateItem, defaultState) => (key1, key2) => {\n const obj = {\n value1: void 0,\n value2: void 0\n };\n let calculated = false;\n if (stateItem) {\n if (stateItem[key1] !== void 0) {\n obj.value1 = stateItem[key1];\n calculated = true;\n }\n if (_exists(key2) && stateItem[key2] !== void 0) {\n obj.value2 = stateItem[key2];\n calculated = true;\n }\n }\n if (!calculated && defaultState) {\n if (defaultState[key1] !== void 0) {\n obj.value1 = defaultState[key1];\n }\n if (_exists(key2) && defaultState[key2] !== void 0) {\n obj.value2 = defaultState[key2];\n }\n }\n return obj;\n};\n\n// packages/ag-grid-community/src/columns/columnFactoryUtils.ts\nfunction _createColumnTree(beans, defs = null, primaryColumns, existingTree, source) {\n const columnKeyCreator = new ColumnKeyCreator();\n const { existingCols, existingGroups, existingColKeys } = extractExistingTreeData(existingTree);\n columnKeyCreator.addExistingKeys(existingColKeys);\n const unbalancedTree = _recursivelyCreateColumns(\n beans,\n defs,\n 0,\n primaryColumns,\n existingCols,\n columnKeyCreator,\n existingGroups,\n source\n );\n const { colGroupSvc } = beans;\n const treeDept = colGroupSvc?.findMaxDepth(unbalancedTree, 0) ?? 0;\n const columnTree = colGroupSvc ? colGroupSvc.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator) : unbalancedTree;\n const deptFirstCallback = (child, parent) => {\n if (isProvidedColumnGroup(child)) {\n child.setupExpandable();\n }\n child.originalParent = parent;\n };\n depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);\n return {\n columnTree,\n treeDept\n };\n}\nfunction extractExistingTreeData(existingTree) {\n const existingCols = [];\n const existingGroups = [];\n const existingColKeys = [];\n if (existingTree) {\n depthFirstOriginalTreeSearch(null, existingTree, (item) => {\n if (isProvidedColumnGroup(item)) {\n const group = item;\n existingGroups.push(group);\n } else {\n const col = item;\n existingColKeys.push(col.getId());\n existingCols.push(col);\n }\n });\n }\n return { existingCols, existingGroups, existingColKeys };\n}\nfunction _recursivelyCreateColumns(beans, defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups, source) {\n if (!defs)\n return [];\n const { colGroupSvc } = beans;\n const result = new Array(defs.length);\n for (let i = 0; i < result.length; i++) {\n const def = defs[i];\n if (colGroupSvc && isColumnGroup(def)) {\n result[i] = colGroupSvc.createProvidedColumnGroup(\n primaryColumns,\n def,\n level,\n existingColsCopy,\n columnKeyCreator,\n existingGroups,\n source\n );\n } else {\n result[i] = createColumn(beans, primaryColumns, def, existingColsCopy, columnKeyCreator, source);\n }\n }\n return result;\n}\nfunction createColumn(beans, primaryColumns, colDef, existingColsCopy, columnKeyCreator, source) {\n const existingColAndIndex = findExistingColumn(colDef, existingColsCopy);\n if (existingColAndIndex) {\n existingColsCopy?.splice(existingColAndIndex.idx, 1);\n }\n let column = existingColAndIndex?.column;\n if (!column) {\n const colId = columnKeyCreator.getUniqueKey(colDef.colId, colDef.field);\n const colDefMerged = _addColumnDefaultAndTypes(beans, colDef, colId);\n column = new AgColumn(colDefMerged, colDef, colId, primaryColumns);\n beans.context.createBean(column);\n } else {\n const colDefMerged = _addColumnDefaultAndTypes(beans, colDef, column.getColId());\n column.setColDef(colDefMerged, colDef, source);\n _updateColumnState(beans, column, colDefMerged, source);\n }\n beans.dataTypeSvc?.addColumnListeners(column);\n return column;\n}\nfunction updateSomeColumnState(beans, column, hide, sort, sortIndex, pinned, flex, source) {\n const { sortSvc, pinnedCols, colFlex } = beans;\n if (hide !== void 0) {\n column.setVisible(!hide, source);\n }\n if (sortSvc) {\n sortSvc.updateColSort(column, sort, source);\n if (sortIndex !== void 0) {\n sortSvc.setColSortIndex(column, sortIndex);\n }\n }\n if (pinned !== void 0) {\n pinnedCols?.setColPinned(column, pinned);\n }\n if (flex !== void 0) {\n colFlex?.setColFlex(column, flex);\n }\n}\nfunction _updateColumnState(beans, column, colDef, source) {\n updateSomeColumnState(\n beans,\n column,\n colDef.hide,\n colDef.sort,\n colDef.sortIndex,\n colDef.pinned,\n colDef.flex,\n source\n );\n const colFlex = column.getFlex();\n if (colFlex != null && colFlex > 0) {\n return;\n }\n if (colDef.width != null) {\n column.setActualWidth(colDef.width, source);\n } else {\n const widthBeforeUpdate = column.getActualWidth();\n column.setActualWidth(widthBeforeUpdate, source);\n }\n}\nfunction findExistingColumn(newColDef, existingColsCopy) {\n if (!existingColsCopy)\n return void 0;\n for (let i = 0; i < existingColsCopy.length; i++) {\n const def = existingColsCopy[i].getUserProvidedColDef();\n if (!def)\n continue;\n const newHasId = newColDef.colId != null;\n if (newHasId) {\n if (existingColsCopy[i].getId() === newColDef.colId) {\n return { idx: i, column: existingColsCopy[i] };\n }\n continue;\n }\n const newHasField = newColDef.field != null;\n if (newHasField) {\n if (def.field === newColDef.field) {\n return { idx: i, column: existingColsCopy[i] };\n }\n continue;\n }\n if (def === newColDef) {\n return { idx: i, column: existingColsCopy[i] };\n }\n }\n return void 0;\n}\nfunction _addColumnDefaultAndTypes(beans, colDef, colId, isAutoCol) {\n const { gos, dataTypeSvc, validation: validation2 } = beans;\n const res = {};\n const defaultColDef = gos.get(\"defaultColDef\");\n _mergeDeep(res, defaultColDef, false, true);\n const columnType = updateColDefAndGetColumnType(beans, res, colDef, colId);\n if (columnType) {\n assignColumnTypes(beans, columnType, res);\n }\n _mergeDeep(res, colDef, false, true);\n const autoGroupColDef = gos.get(\"autoGroupColumnDef\");\n const isSortingCoupled = _isColumnsSortingCoupledToGroup(gos);\n if (colDef.rowGroup && autoGroupColDef && isSortingCoupled) {\n _mergeDeep(\n res,\n { sort: autoGroupColDef.sort, initialSort: autoGroupColDef.initialSort },\n false,\n true\n );\n }\n dataTypeSvc?.validateColDef(res);\n validation2?.validateColDef(res, colId, isAutoCol);\n return res;\n}\nfunction updateColDefAndGetColumnType(beans, colDef, userColDef, colId) {\n const dataTypeDefinitionColumnType = beans.dataTypeSvc?.updateColDefAndGetColumnType(colDef, userColDef, colId);\n const columnTypes = userColDef.type ?? dataTypeDefinitionColumnType ?? colDef.type;\n colDef.type = columnTypes;\n return columnTypes ? convertColumnTypes(columnTypes) : void 0;\n}\nfunction assignColumnTypes(beans, typeKeys, colDefMerged) {\n if (!typeKeys.length) {\n return;\n }\n const allColumnTypes = Object.assign({}, DefaultColumnTypes);\n const userTypes = beans.gos.get(\"columnTypes\") || {};\n for (const key of Object.keys(userTypes)) {\n const value = userTypes[key];\n if (key in allColumnTypes) {\n _warn(34, { key });\n } else {\n const colType = value;\n if (colType.type) {\n _warn(35);\n }\n allColumnTypes[key] = value;\n }\n }\n typeKeys.forEach((t) => {\n const typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n _mergeDeep(colDefMerged, typeColDef, false, true);\n } else {\n _warn(36, { t });\n }\n });\n}\nfunction isColumnGroup(abstractColDef) {\n return abstractColDef.children !== void 0;\n}\nfunction depthFirstOriginalTreeSearch(parent, tree, callback) {\n if (!tree) {\n return;\n }\n for (let i = 0; i < tree.length; i++) {\n const child = tree[i];\n if (isProvidedColumnGroup(child)) {\n depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n }\n}\n\n// packages/ag-grid-community/src/columnMove/columnMoveUtils.ts\nfunction placeLockedColumns(cols, gos) {\n const left = [];\n const normal = [];\n const right = [];\n cols.forEach((col) => {\n const position = col.getColDef().lockPosition;\n if (position === \"right\") {\n right.push(col);\n } else if (position === \"left\" || position === true) {\n left.push(col);\n } else {\n normal.push(col);\n }\n });\n const isRtl = gos.get(\"enableRtl\");\n if (isRtl) {\n return [...right, ...normal, ...left];\n }\n return [...left, ...normal, ...right];\n}\nfunction doesMovePassMarryChildren(allColumnsCopy, gridBalancedTree) {\n let rulePassed = true;\n depthFirstOriginalTreeSearch(null, gridBalancedTree, (child) => {\n if (!isProvidedColumnGroup(child)) {\n return;\n }\n const columnGroup = child;\n const colGroupDef = columnGroup.getColGroupDef();\n const marryChildren = colGroupDef && colGroupDef.marryChildren;\n if (!marryChildren) {\n return;\n }\n const newIndexes = [];\n columnGroup.getLeafColumns().forEach((col) => {\n const newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n const maxIndex = Math.max.apply(Math, newIndexes);\n const minIndex = Math.min.apply(Math, newIndexes);\n const spread = maxIndex - minIndex;\n const maxSpread = columnGroup.getLeafColumns().length - 1;\n if (spread > maxSpread) {\n rulePassed = false;\n }\n });\n return rulePassed;\n}\n\n// packages/ag-grid-community/src/columns/columnEventUtils.ts\nfunction getCommonValue(cols, valueGetter) {\n if (!cols || cols.length == 0) {\n return void 0;\n }\n const firstValue = valueGetter(cols[0]);\n for (let i = 1; i < cols.length; i++) {\n if (firstValue !== valueGetter(cols[i])) {\n return void 0;\n }\n }\n return firstValue;\n}\nfunction dispatchColumnPinnedEvent(eventSvc, changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n const column = changedColumns.length === 1 ? changedColumns[0] : null;\n const pinned = getCommonValue(changedColumns, (col) => col.getPinned());\n eventSvc.dispatchEvent({\n type: \"columnPinned\",\n // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'\n pinned: pinned != null ? pinned : null,\n columns: changedColumns,\n column,\n source\n });\n}\nfunction dispatchColumnVisibleEvent(eventSvc, changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n const column = changedColumns.length === 1 ? changedColumns[0] : null;\n const visible = getCommonValue(changedColumns, (col) => col.isVisible());\n eventSvc.dispatchEvent({\n type: \"columnVisible\",\n visible,\n columns: changedColumns,\n column,\n source\n });\n}\nfunction dispatchColumnChangedEvent(eventSvc, type, columns, source) {\n eventSvc.dispatchEvent({\n type,\n columns,\n column: columns && columns.length == 1 ? columns[0] : null,\n source\n });\n}\nfunction dispatchColumnResizedEvent(eventSvc, columns, finished, source, flexColumns = null) {\n if (columns?.length) {\n eventSvc.dispatchEvent({\n type: \"columnResized\",\n columns,\n column: columns.length === 1 ? columns[0] : null,\n flexColumns,\n finished,\n source\n });\n }\n}\n\n// packages/ag-grid-community/src/columns/columnStateUtils.ts\nfunction _applyColumnState(beans, params, source) {\n const {\n colModel,\n rowGroupColsSvc,\n pivotColsSvc,\n autoColSvc,\n selectionColSvc,\n colAnimation,\n visibleCols,\n pivotResultCols,\n environment,\n valueColsSvc,\n eventSvc,\n gos\n } = beans;\n const providedCols = colModel.getColDefCols() || [];\n if (!providedCols?.length) {\n return false;\n }\n if (params?.state && !params.state.forEach) {\n _warn(32);\n return false;\n }\n const syncColumnWithStateItem = (column, stateItem, rowGroupIndexes, pivotIndexes, autoCol) => {\n if (!column) {\n return;\n }\n const getValue = getValueFactory(stateItem, params.defaultState);\n const flex = getValue(\"flex\").value1;\n updateSomeColumnState(\n beans,\n column,\n getValue(\"hide\").value1,\n getValue(\"sort\").value1,\n getValue(\"sortIndex\").value1,\n getValue(\"pinned\").value1,\n flex,\n source\n );\n if (flex == null) {\n const width = getValue(\"width\").value1;\n if (width != null) {\n const minColWidth = column.getColDef().minWidth ?? environment.getDefaultColumnMinWidth();\n if (minColWidth != null && width >= minColWidth) {\n column.setActualWidth(width, source);\n }\n }\n }\n if (autoCol || !column.isPrimary()) {\n return;\n }\n valueColsSvc?.syncColumnWithState(column, source, getValue);\n rowGroupColsSvc?.syncColumnWithState(column, source, getValue, rowGroupIndexes);\n pivotColsSvc?.syncColumnWithState(column, source, getValue, pivotIndexes);\n };\n const applyStates = (states, existingColumns, getById2) => {\n const dispatchEventsFunc = _compareColumnStatesAndDispatchEvents(beans, source);\n const columnsWithNoState = existingColumns.slice();\n const rowGroupIndexes = {};\n const pivotIndexes = {};\n const autoColStates = [];\n const selectionColStates = [];\n const unmatchedAndAutoStates2 = [];\n let unmatchedCount2 = 0;\n const previousRowGroupCols = rowGroupColsSvc?.columns.slice() ?? [];\n const previousPivotCols = pivotColsSvc?.columns.slice() ?? [];\n states.forEach((state) => {\n const colId = state.colId;\n const isAutoGroupColumn = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupColumn) {\n autoColStates.push(state);\n unmatchedAndAutoStates2.push(state);\n return;\n }\n if (isColumnSelectionCol(colId)) {\n selectionColStates.push(state);\n unmatchedAndAutoStates2.push(state);\n return;\n }\n const column = getById2(colId);\n if (!column) {\n unmatchedAndAutoStates2.push(state);\n unmatchedCount2 += 1;\n } else {\n syncColumnWithStateItem(column, state, rowGroupIndexes, pivotIndexes, false);\n _removeFromArray(columnsWithNoState, column);\n }\n });\n const applyDefaultsFunc = (col) => syncColumnWithStateItem(col, null, rowGroupIndexes, pivotIndexes, false);\n columnsWithNoState.forEach(applyDefaultsFunc);\n rowGroupColsSvc?.sortColumns(comparatorByIndex.bind(rowGroupColsSvc, rowGroupIndexes, previousRowGroupCols));\n pivotColsSvc?.sortColumns(comparatorByIndex.bind(pivotColsSvc, pivotIndexes, previousPivotCols));\n colModel.refreshCols(false);\n const syncColStates = (getCol, colStates, columns = []) => {\n colStates.forEach((stateItem) => {\n const col = getCol(stateItem.colId);\n _removeFromArray(columns, col);\n syncColumnWithStateItem(col, stateItem, null, null, true);\n });\n columns.forEach(applyDefaultsFunc);\n };\n syncColStates(\n (colId) => autoColSvc?.getColumn(colId) ?? null,\n autoColStates,\n autoColSvc?.getColumns()?.slice()\n );\n syncColStates(\n (colId) => selectionColSvc?.getColumn(colId) ?? null,\n selectionColStates,\n selectionColSvc?.getColumns()?.slice()\n );\n orderLiveColsLikeState(params, colModel, gos);\n visibleCols.refresh(source);\n eventSvc.dispatchEvent({\n type: \"columnEverythingChanged\",\n source\n });\n dispatchEventsFunc();\n return { unmatchedAndAutoStates: unmatchedAndAutoStates2, unmatchedCount: unmatchedCount2 };\n };\n colAnimation?.start();\n let { unmatchedAndAutoStates, unmatchedCount } = applyStates(\n params.state || [],\n providedCols,\n (id) => colModel.getColDefCol(id)\n );\n if (unmatchedAndAutoStates.length > 0 || _exists(params.defaultState)) {\n const pivotResultColsList = pivotResultCols?.getPivotResultCols()?.list ?? [];\n unmatchedCount = applyStates(\n unmatchedAndAutoStates,\n pivotResultColsList,\n (id) => pivotResultCols?.getPivotResultCol(id) ?? null\n ).unmatchedCount;\n }\n colAnimation?.finish();\n return unmatchedCount === 0;\n}\nfunction _resetColumnState(beans, source) {\n const { colModel, autoColSvc, selectionColSvc } = beans;\n const primaryCols = colModel.getColDefCols();\n if (!primaryCols?.length) {\n return;\n }\n const primaryColumnTree = colModel.getColDefColTree();\n const primaryColumns = _getColumnsFromTree(primaryColumnTree);\n const columnStates = [];\n let letRowGroupIndex = 1e3;\n let letPivotIndex = 1e3;\n const addColState = (col) => {\n const stateItem = getColumnStateFromColDef(col);\n if (_missing(stateItem.rowGroupIndex) && stateItem.rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (_missing(stateItem.pivotIndex) && stateItem.pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n };\n autoColSvc?.getColumns()?.forEach(addColState);\n selectionColSvc?.getColumns()?.forEach(addColState);\n primaryColumns?.forEach(addColState);\n _applyColumnState(beans, { state: columnStates }, source);\n const autoCols = autoColSvc?.getColumns() ?? [];\n const selectionCols = selectionColSvc?.getColumns() ?? [];\n const orderedCols = [...selectionCols, ...autoCols, ...primaryCols];\n const orderedColState = orderedCols.map((col) => ({ colId: col.colId }));\n _applyColumnState(beans, { state: orderedColState, applyOrder: true }, source);\n}\nfunction _compareColumnStatesAndDispatchEvents(beans, source) {\n const { rowGroupColsSvc, pivotColsSvc, valueColsSvc, colModel, sortSvc, eventSvc } = beans;\n const startState = {\n rowGroupColumns: rowGroupColsSvc?.columns.slice() ?? [],\n pivotColumns: pivotColsSvc?.columns.slice() ?? [],\n valueColumns: valueColsSvc?.columns.slice() ?? []\n };\n const columnStateBefore = _getColumnState(beans);\n const columnStateBeforeMap = {};\n columnStateBefore.forEach((col) => {\n columnStateBeforeMap[col.colId] = col;\n });\n return () => {\n const dispatchWhenListsDifferent = (eventType, colsBefore, colsAfter, idMapper) => {\n const beforeList = colsBefore.map(idMapper);\n const afterList = colsAfter.map(idMapper);\n const unchanged = _areEqual(beforeList, afterList);\n if (unchanged) {\n return;\n }\n const changes = new Set(colsBefore);\n colsAfter.forEach((id) => {\n if (!changes.delete(id)) {\n changes.add(id);\n }\n });\n const changesArr = [...changes];\n eventSvc.dispatchEvent({\n type: eventType,\n columns: changesArr,\n column: changesArr.length === 1 ? changesArr[0] : null,\n source\n });\n };\n const getChangedColumns = (changedPredicate) => {\n const changedColumns2 = [];\n colModel.forAllCols((column) => {\n const colStateBefore = columnStateBeforeMap[column.getColId()];\n if (colStateBefore && changedPredicate(colStateBefore, column)) {\n changedColumns2.push(column);\n }\n });\n return changedColumns2;\n };\n const columnIdMapper = (c) => c.getColId();\n dispatchWhenListsDifferent(\n \"columnRowGroupChanged\",\n startState.rowGroupColumns,\n rowGroupColsSvc?.columns ?? [],\n columnIdMapper\n );\n dispatchWhenListsDifferent(\n \"columnPivotChanged\",\n startState.pivotColumns,\n pivotColsSvc?.columns ?? [],\n columnIdMapper\n );\n const valueChangePredicate = (cs, c) => {\n const oldActive = cs.aggFunc != null;\n const activeChanged = oldActive != c.isValueActive();\n const aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();\n return activeChanged || aggFuncChanged;\n };\n const changedValues = getChangedColumns(valueChangePredicate);\n if (changedValues.length > 0) {\n dispatchColumnChangedEvent(eventSvc, \"columnValueChanged\", changedValues, source);\n }\n const resizeChangePredicate = (cs, c) => cs.width != c.getActualWidth();\n dispatchColumnResizedEvent(eventSvc, getChangedColumns(resizeChangePredicate), true, source);\n const pinnedChangePredicate = (cs, c) => cs.pinned != c.getPinned();\n dispatchColumnPinnedEvent(eventSvc, getChangedColumns(pinnedChangePredicate), source);\n const visibilityChangePredicate = (cs, c) => cs.hide == c.isVisible();\n dispatchColumnVisibleEvent(eventSvc, getChangedColumns(visibilityChangePredicate), source);\n const sortChangePredicate = (cs, c) => cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex();\n const changedColumns = getChangedColumns(sortChangePredicate);\n if (changedColumns.length > 0) {\n sortSvc?.dispatchSortChangedEvents(source, changedColumns);\n }\n const colStateAfter = _getColumnState(beans);\n normaliseColumnMovedEventForColumnState(columnStateBefore, colStateAfter, source, colModel, eventSvc);\n };\n}\nfunction _getColumnState(beans) {\n const { colModel, rowGroupColsSvc, pivotColsSvc } = beans;\n const primaryCols = colModel.getColDefCols();\n if (_missing(primaryCols) || !colModel.isAlive()) {\n return [];\n }\n const rowGroupColumns = rowGroupColsSvc?.columns;\n const pivotColumns = pivotColsSvc?.columns;\n const res = [];\n const createStateItemFromColumn = (column) => {\n const rowGroupIndex = column.isRowGroupActive() && rowGroupColumns ? rowGroupColumns.indexOf(column) : null;\n const pivotIndex = column.isPivotActive() && pivotColumns ? pivotColumns.indexOf(column) : null;\n const aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n const sort = column.getSort() != null ? column.getSort() : null;\n const sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;\n res.push({\n colId: column.getColId(),\n width: column.getActualWidth(),\n hide: !column.isVisible(),\n pinned: column.getPinned(),\n sort,\n sortIndex,\n aggFunc,\n rowGroup: column.isRowGroupActive(),\n rowGroupIndex,\n pivot: column.isPivotActive(),\n pivotIndex,\n flex: column.getFlex() ?? null\n });\n };\n colModel.forAllCols((col) => createStateItemFromColumn(col));\n const colIdToGridIndexMap = new Map(\n colModel.getCols().map((col, index) => [col.getColId(), index])\n );\n res.sort((itemA, itemB) => {\n const posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;\n const posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;\n return posA - posB;\n });\n return res;\n}\nfunction getColumnStateFromColDef(column) {\n const getValueOrNull = (a, b) => a != null ? a : b != null ? b : null;\n const colDef = column.getColDef();\n const sort = getValueOrNull(colDef.sort, colDef.initialSort);\n const sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);\n const hide = getValueOrNull(colDef.hide, colDef.initialHide);\n const pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);\n const width = getValueOrNull(colDef.width, colDef.initialWidth);\n const flex = getValueOrNull(colDef.flex, colDef.initialFlex);\n let rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);\n let rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);\n if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {\n rowGroupIndex = null;\n rowGroup = null;\n }\n let pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);\n let pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);\n if (pivotIndex == null && (pivot == null || pivot == false)) {\n pivotIndex = null;\n pivot = null;\n }\n const aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);\n return {\n colId: column.getColId(),\n sort,\n sortIndex,\n hide,\n pinned,\n width,\n flex,\n rowGroup,\n rowGroupIndex,\n pivot,\n pivotIndex,\n aggFunc\n };\n}\nfunction orderLiveColsLikeState(params, colModel, gos) {\n if (!params.applyOrder || !params.state) {\n return;\n }\n const colIds = [];\n params.state.forEach((item) => {\n if (item.colId != null) {\n colIds.push(item.colId);\n }\n });\n sortColsLikeKeys(colModel.cols, colIds, colModel, gos);\n}\nfunction sortColsLikeKeys(cols, colIds, colModel, gos) {\n if (cols == null) {\n return;\n }\n let newOrder = [];\n const processedColIds = {};\n colIds.forEach((colId) => {\n if (processedColIds[colId]) {\n return;\n }\n const col = cols.map[colId];\n if (col) {\n newOrder.push(col);\n processedColIds[colId] = true;\n }\n });\n let autoGroupInsertIndex = 0;\n cols.list.forEach((col) => {\n const colId = col.getColId();\n const alreadyProcessed = processedColIds[colId] != null;\n if (alreadyProcessed) {\n return;\n }\n const isAutoGroupCol = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupCol) {\n newOrder.splice(autoGroupInsertIndex++, 0, col);\n } else {\n newOrder.push(col);\n }\n });\n newOrder = placeLockedColumns(newOrder, gos);\n if (!doesMovePassMarryChildren(newOrder, colModel.getColTree())) {\n _warn(39);\n return;\n }\n cols.list = newOrder;\n}\nfunction normaliseColumnMovedEventForColumnState(colStateBefore, colStateAfter, source, colModel, eventSvc) {\n const colStateAfterMapped = {};\n colStateAfter.forEach((s) => colStateAfterMapped[s.colId] = s);\n const colsIntersectIds = {};\n colStateBefore.forEach((s) => {\n if (colStateAfterMapped[s.colId]) {\n colsIntersectIds[s.colId] = true;\n }\n });\n const beforeFiltered = colStateBefore.filter((c) => colsIntersectIds[c.colId]);\n const afterFiltered = colStateAfter.filter((c) => colsIntersectIds[c.colId]);\n const movedColumns = [];\n afterFiltered.forEach((csAfter, index) => {\n const csBefore = beforeFiltered && beforeFiltered[index];\n if (csBefore && csBefore.colId !== csAfter.colId) {\n const gridCol = colModel.getCol(csBefore.colId);\n if (gridCol) {\n movedColumns.push(gridCol);\n }\n }\n });\n if (!movedColumns.length) {\n return;\n }\n eventSvc.dispatchEvent({\n type: \"columnMoved\",\n columns: movedColumns,\n column: movedColumns.length === 1 ? movedColumns[0] : null,\n finished: true,\n source\n });\n}\nvar comparatorByIndex = (indexes, oldList, colA, colB) => {\n const indexA = indexes[colA.getId()];\n const indexB = indexes[colB.getId()];\n const aHasIndex = indexA != null;\n const bHasIndex = indexB != null;\n if (aHasIndex && bHasIndex) {\n return indexA - indexB;\n }\n if (aHasIndex) {\n return -1;\n }\n if (bHasIndex) {\n return 1;\n }\n const oldIndexA = oldList.indexOf(colA);\n const oldIndexB = oldList.indexOf(colB);\n const aHasOldIndex = oldIndexA >= 0;\n const bHasOldIndex = oldIndexB >= 0;\n if (aHasOldIndex && bHasOldIndex) {\n return oldIndexA - oldIndexB;\n }\n if (aHasOldIndex) {\n return -1;\n }\n return 1;\n};\n\n// packages/ag-grid-community/src/columns/columnModel.ts\nvar ColumnModel = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colModel\";\n // if pivotMode is on, however pivot results are NOT shown if no pivot columns are set\n this.pivotMode = false;\n this.ready = false;\n this.changeEventsDispatching = false;\n }\n postConstruct() {\n this.pivotMode = this.gos.get(\"pivotMode\");\n this.addManagedPropertyListeners(\n [\"groupDisplayType\", \"treeData\", \"treeDataDisplayType\", \"groupHideOpenParents\"],\n (event) => this.refreshAll(_convertColumnEventSourceType(event.source))\n );\n this.addManagedPropertyListeners(\n [\"defaultColDef\", \"defaultColGroupDef\", \"columnTypes\", \"suppressFieldDotNotation\"],\n this.recreateColumnDefs.bind(this)\n );\n this.addManagedPropertyListener(\n \"pivotMode\",\n (event) => this.setPivotMode(this.gos.get(\"pivotMode\"), _convertColumnEventSourceType(event.source))\n );\n }\n // called from SyncService, when grid has finished initialising\n createColsFromColDefs(source) {\n const { beans } = this;\n const {\n valueCache,\n colAutosize,\n rowGroupColsSvc,\n pivotColsSvc,\n valueColsSvc,\n visibleCols,\n colViewport,\n eventSvc\n } = beans;\n const dispatchEventsFunc = this.colDefs ? _compareColumnStatesAndDispatchEvents(beans, source) : void 0;\n valueCache?.expire();\n const oldCols = this.colDefCols?.list;\n const oldTree = this.colDefCols?.tree;\n const newTree = _createColumnTree(beans, this.colDefs, true, oldTree, source);\n _destroyColumnTree(beans, this.colDefCols?.tree, newTree.columnTree);\n const tree = newTree.columnTree;\n const treeDepth = newTree.treeDept;\n const list = _getColumnsFromTree(tree);\n const map = {};\n list.forEach((col) => map[col.getId()] = col);\n this.colDefCols = { tree, treeDepth, list, map };\n rowGroupColsSvc?.extractCols(source, oldCols);\n pivotColsSvc?.extractCols(source, oldCols);\n valueColsSvc?.extractCols(source, oldCols);\n this.ready = true;\n this.refreshCols(true);\n visibleCols.refresh(source);\n colViewport.checkViewportColumns();\n eventSvc.dispatchEvent({\n type: \"columnEverythingChanged\",\n source\n });\n if (dispatchEventsFunc) {\n this.changeEventsDispatching = true;\n dispatchEventsFunc();\n this.changeEventsDispatching = false;\n }\n eventSvc.dispatchEvent({\n type: \"newColumnsLoaded\",\n source\n });\n if (source === \"gridInitializing\") {\n colAutosize?.applyAutosizeStrategy();\n }\n }\n // called from: buildAutoGroupColumns (events 'groupDisplayType', 'treeData', 'treeDataDisplayType', 'groupHideOpenParents')\n // createColsFromColDefs (recreateColumnDefs, setColumnsDefs),\n // setPivotMode, applyColumnState,\n // functionColsService.setPrimaryColList, functionColsService.updatePrimaryColList,\n // pivotResultCols.setPivotResultCols\n refreshCols(newColDefs) {\n if (!this.colDefCols) {\n return;\n }\n const prevColTree = this.cols?.tree;\n this.saveColOrder();\n const {\n autoColSvc,\n selectionColSvc,\n rowNumbersSvc,\n quickFilter,\n pivotResultCols,\n showRowGroupCols,\n rowAutoHeight,\n visibleCols,\n colViewport,\n eventSvc\n } = this.beans;\n const cols = this.selectCols(pivotResultCols, this.colDefCols);\n this.createColumnsForService([autoColSvc, selectionColSvc, rowNumbersSvc], cols);\n const shouldSortNewColDefs = _shouldMaintainColumnOrder(this.gos, this.showingPivotResult);\n if (!newColDefs || shouldSortNewColDefs) {\n this.restoreColOrder(cols);\n }\n this.positionLockedCols(cols);\n showRowGroupCols?.refresh();\n quickFilter?.refreshCols();\n this.setColSpanActive();\n rowAutoHeight?.setAutoHeightActive(cols);\n visibleCols.clear();\n colViewport.clear();\n const dispatchChangedEvent = !_areEqual(prevColTree, this.cols.tree);\n if (dispatchChangedEvent) {\n eventSvc.dispatchEvent({\n type: \"gridColumnsChanged\"\n });\n }\n }\n createColumnsForService(services, cols) {\n for (const service of services) {\n if (!service) {\n continue;\n }\n service.createColumns(cols, (updateOrder) => {\n this.lastOrder = updateOrder(this.lastOrder);\n this.lastPivotOrder = updateOrder(this.lastPivotOrder);\n });\n service.addColumns(cols);\n }\n }\n selectCols(pivotResultColsSvc, colDefCols) {\n const pivotResultCols = pivotResultColsSvc?.getPivotResultCols() ?? null;\n this.showingPivotResult = pivotResultCols != null;\n const { map, list, tree, treeDepth } = pivotResultCols ?? colDefCols;\n this.cols = {\n list: list.slice(),\n map: { ...map },\n tree: tree.slice(),\n treeDepth\n };\n if (pivotResultCols) {\n const hasSameColumns = pivotResultCols.list.some((col) => this.cols?.map[col.getColId()] !== void 0);\n if (!hasSameColumns) {\n this.lastPivotOrder = null;\n }\n }\n return this.cols;\n }\n getColsToShow() {\n if (!this.cols) {\n return [];\n }\n const showAutoGroupAndValuesOnly = this.isPivotMode() && !this.showingPivotResult;\n const valueColumns = this.beans.valueColsSvc?.columns;\n const res = this.cols.list.filter((col) => {\n const isAutoGroupCol = isColumnGroupAutoCol(col);\n if (showAutoGroupAndValuesOnly) {\n const isValueCol = valueColumns?.includes(col);\n return isAutoGroupCol || isValueCol;\n } else {\n return isAutoGroupCol || col.isVisible();\n }\n });\n return res;\n }\n // on events 'groupDisplayType', 'treeData', 'treeDataDisplayType', 'groupHideOpenParents'\n refreshAll(source) {\n if (!this.ready) {\n return;\n }\n this.refreshCols(false);\n this.beans.visibleCols.refresh(source);\n }\n setColsVisible(keys, visible = false, source) {\n _applyColumnState(\n this.beans,\n {\n state: keys.map((key) => ({\n colId: typeof key === \"string\" ? key : key.getColId(),\n hide: !visible\n }))\n },\n source\n );\n }\n restoreColOrder(cols) {\n const lastOrder = this.showingPivotResult ? this.lastPivotOrder : this.lastOrder;\n if (!lastOrder) {\n return;\n }\n const lastOrderMapped = new Map(lastOrder.map((col, index) => [col, index]));\n const noColsFound = !cols.list.some((col) => lastOrderMapped.has(col));\n if (noColsFound) {\n return;\n }\n const colsMap = new Map(cols.list.map((col) => [col, true]));\n const lastOrderFiltered = lastOrder.filter((col) => colsMap.has(col));\n const lastOrderFilteredMap = new Map(lastOrderFiltered.map((col) => [col, true]));\n const missingFromLastOrder = cols.list.filter((col) => !lastOrderFilteredMap.has(col));\n const res = lastOrderFiltered.slice();\n missingFromLastOrder.forEach((newCol) => {\n let parent = newCol.getOriginalParent();\n if (!parent) {\n res.push(newCol);\n return;\n }\n const siblings = [];\n while (!siblings.length && parent) {\n const leafCols = parent.getLeafColumns();\n leafCols.forEach((leafCol) => {\n const presentInNewCols = res.indexOf(leafCol) >= 0;\n const notYetInSiblings = siblings.indexOf(leafCol) < 0;\n if (presentInNewCols && notYetInSiblings) {\n siblings.push(leafCol);\n }\n });\n parent = parent.getOriginalParent();\n }\n if (!siblings.length) {\n res.push(newCol);\n return;\n }\n const indexes = siblings.map((col) => res.indexOf(col));\n const lastIndex = Math.max(...indexes);\n res.splice(lastIndex + 1, 0, newCol);\n });\n cols.list = res;\n }\n positionLockedCols(cols) {\n cols.list = placeLockedColumns(cols.list, this.gos);\n }\n saveColOrder() {\n if (this.showingPivotResult) {\n this.lastPivotOrder = this.cols?.list ?? null;\n } else {\n this.lastOrder = this.cols?.list ?? null;\n }\n }\n getColumnDefs() {\n return this.colDefCols ? this.beans.colDefFactory?.getColumnDefs(\n this.colDefCols.list,\n this.showingPivotResult,\n this.lastOrder,\n this.cols?.list ?? []\n ) : void 0;\n }\n setColSpanActive() {\n this.colSpanActive = !!this.cols?.list.some((col) => col.getColDef().colSpan != null);\n }\n isPivotMode() {\n return this.pivotMode;\n }\n setPivotMode(pivotMode, source) {\n if (pivotMode === this.pivotMode) {\n return;\n }\n this.pivotMode = pivotMode;\n if (!this.ready) {\n return;\n }\n this.refreshCols(false);\n const { visibleCols, eventSvc } = this.beans;\n visibleCols.refresh(source);\n eventSvc.dispatchEvent({\n type: \"columnPivotModeChanged\"\n });\n }\n // + clientSideRowModel\n isPivotActive() {\n const pivotColumns = this.beans.pivotColsSvc?.columns;\n return this.pivotMode && !!pivotColumns?.length;\n }\n // called when dataTypes change\n recreateColumnDefs(e) {\n if (!this.cols) {\n return;\n }\n this.beans.autoColSvc?.updateColumns(e);\n const source = _convertColumnEventSourceType(e.source);\n this.createColsFromColDefs(source);\n }\n setColumnDefs(columnDefs, source) {\n this.colDefs = columnDefs;\n this.createColsFromColDefs(source);\n }\n destroy() {\n _destroyColumnTree(this.beans, this.colDefCols?.tree);\n super.destroy();\n }\n getColTree() {\n return this.cols?.tree ?? [];\n }\n // + columnSelectPanel\n getColDefColTree() {\n return this.colDefCols?.tree ?? [];\n }\n // + clientSideRowController -> sorting, building quick filter text\n // + headerRenderer -> sorting (clearing icon)\n getColDefCols() {\n return this.colDefCols?.list ?? null;\n }\n // + moveColumnController\n getCols() {\n return this.cols?.list ?? [];\n }\n forAllCols(callback) {\n const { pivotResultCols, autoColSvc, selectionColSvc } = this.beans;\n _forAll(this.colDefCols?.list, callback);\n _forAll(autoColSvc?.columns?.list, callback);\n _forAll(selectionColSvc?.columns?.list, callback);\n _forAll(pivotResultCols?.getPivotResultCols()?.list, callback);\n }\n getColsForKeys(keys) {\n if (!keys) {\n return [];\n }\n return keys.map((key) => this.getCol(key)).filter((col) => col != null);\n }\n getColDefCol(key) {\n if (!this.colDefCols?.list) {\n return null;\n }\n return this.getColFromCollection(key, this.colDefCols);\n }\n getCol(key) {\n if (key == null) {\n return null;\n }\n return this.getColFromCollection(key, this.cols);\n }\n getColFromCollection(key, cols) {\n if (cols == null) {\n return null;\n }\n const { map, list } = cols;\n if (typeof key == \"string\" && map[key]) {\n return map[key];\n }\n for (let i = 0; i < list.length; i++) {\n if (_columnsMatch(list[i], key)) {\n return list[i];\n }\n }\n return this.beans.autoColSvc?.getColumn(key) ?? this.beans.selectionColSvc?.getColumn(key) ?? null;\n }\n};\n\n// packages/ag-grid-community/src/columns/baseColsService.ts\nvar BaseColsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.dispatchColumnChangedEvent = dispatchColumnChangedEvent;\n this.columns = [];\n this.columnIndexMap = {};\n this.updateIndexMap = () => {\n this.columnIndexMap = {};\n this.columns.forEach((col, index) => this.columnIndexMap[col.getId()] = index);\n };\n }\n wireBeans(beans) {\n this.colModel = beans.colModel;\n this.aggFuncSvc = beans.aggFuncSvc;\n this.visibleCols = beans.visibleCols;\n }\n sortColumns(compareFn) {\n this.columns.sort(compareFn);\n this.updateIndexMap();\n }\n setColumns(colKeys, source) {\n this.setColList(colKeys, this.columns, this.eventName, true, true, this.columnProcessors.set, source);\n }\n addColumns(colKeys, source) {\n this.updateColList(colKeys, this.columns, true, true, this.columnProcessors.add, this.eventName, source);\n }\n removeColumns(colKeys, source) {\n this.updateColList(colKeys, this.columns, false, true, this.columnProcessors.remove, this.eventName, source);\n }\n getColumnIndex(colId) {\n return this.columnIndexMap[colId];\n }\n setColList(colKeys = [], masterList, eventName, detectOrderChange, autoGroupsNeedBuilding, columnCallback, source) {\n const gridColumns = this.colModel.getCols();\n if (!gridColumns || gridColumns.length === 0) {\n return;\n }\n const changes = /* @__PURE__ */ new Map();\n masterList.forEach((col, idx) => changes.set(col, idx));\n masterList.length = 0;\n if (_exists(colKeys)) {\n colKeys.forEach((key) => {\n const column = this.colModel.getColDefCol(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n masterList.forEach((col, idx) => {\n const oldIndex = changes.get(col);\n if (oldIndex === void 0) {\n changes.set(col, 0);\n return;\n }\n if (detectOrderChange && oldIndex !== idx) {\n return;\n }\n changes.delete(col);\n });\n this.updateIndexMap();\n const primaryCols = this.colModel.getColDefCols();\n (primaryCols || []).forEach((column) => {\n const added = masterList.indexOf(column) >= 0;\n columnCallback(column, added, source);\n });\n autoGroupsNeedBuilding && this.colModel.refreshCols(false);\n this.visibleCols.refresh(source);\n this.dispatchColumnChangedEvent(this.eventSvc, eventName, [...changes.keys()], source);\n }\n updateColList(keys = [], masterList, actionIsAdd, autoGroupsNeedBuilding, columnCallback, eventType, source) {\n if (!keys || keys.length === 0) {\n return;\n }\n let atLeastOne = false;\n const updatedCols = /* @__PURE__ */ new Set();\n keys.forEach((key) => {\n if (!key) {\n return;\n }\n const columnToAdd = this.colModel.getColDefCol(key);\n if (!columnToAdd) {\n return;\n }\n updatedCols.add(columnToAdd);\n if (actionIsAdd) {\n if (masterList.indexOf(columnToAdd) >= 0) {\n return;\n }\n masterList.push(columnToAdd);\n } else {\n const currentIndex = masterList.indexOf(columnToAdd);\n if (currentIndex < 0) {\n return;\n }\n for (let i = currentIndex + 1; i < masterList.length; i++) {\n updatedCols.add(masterList[i]);\n }\n _removeFromArray(masterList, columnToAdd);\n }\n columnCallback(columnToAdd, actionIsAdd, source);\n atLeastOne = true;\n });\n if (!atLeastOne) {\n return;\n }\n this.updateIndexMap();\n if (autoGroupsNeedBuilding) {\n this.colModel.refreshCols(false);\n }\n this.visibleCols.refresh(source);\n const eventColumns = Array.from(updatedCols);\n this.eventSvc.dispatchEvent({\n type: eventType,\n columns: eventColumns,\n column: eventColumns.length === 1 ? eventColumns[0] : null,\n source\n });\n }\n extractCols(source, oldProvidedCols = []) {\n const previousCols = this.columns;\n const colsWithIndex = [];\n const colsWithValue = [];\n const { setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc } = this.columnExtractors;\n const primaryCols = this.colModel.getColDefCols() || [];\n primaryCols.forEach((col) => {\n const colIsNew = oldProvidedCols.indexOf(col) < 0;\n const colDef = col.getColDef();\n const value = getValueFunc(colDef);\n const initialValue = getInitialValueFunc(colDef);\n const index = getIndexFunc(colDef);\n const initialIndex = getInitialIndexFunc(colDef);\n let include;\n const valuePresent = value !== void 0;\n const indexPresent = index !== void 0;\n const initialValuePresent = initialValue !== void 0;\n const initialIndexPresent = initialIndex !== void 0;\n if (valuePresent) {\n include = value;\n } else if (indexPresent) {\n if (index === null) {\n include = false;\n } else {\n include = index >= 0;\n }\n } else {\n if (colIsNew) {\n if (initialValuePresent) {\n include = initialValue;\n } else if (initialIndexPresent) {\n include = initialIndex != null && initialIndex >= 0;\n } else {\n include = false;\n }\n } else {\n include = previousCols.indexOf(col) >= 0;\n }\n }\n if (include) {\n const useIndex = colIsNew ? index != null || initialIndex != null : index != null;\n useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);\n }\n });\n const getIndexForCol = (col) => {\n const index = getIndexFunc(col.getColDef());\n const defaultIndex = getInitialIndexFunc(col.getColDef());\n return index != null ? index : defaultIndex;\n };\n colsWithIndex.sort((colA, colB) => {\n const indexA = getIndexForCol(colA);\n const indexB = getIndexForCol(colB);\n if (indexA === indexB) {\n return 0;\n }\n if (indexA < indexB) {\n return -1;\n }\n return 1;\n });\n const res = [].concat(colsWithIndex);\n previousCols.forEach((col) => {\n if (colsWithValue.indexOf(col) >= 0) {\n res.push(col);\n }\n });\n colsWithValue.forEach((col) => {\n if (res.indexOf(col) < 0) {\n res.push(col);\n }\n });\n previousCols.forEach((col) => {\n if (res.indexOf(col) < 0) {\n setFlagFunc(col, false, source);\n }\n });\n res.forEach((col) => {\n if (previousCols.indexOf(col) < 0) {\n setFlagFunc(col, true, source);\n }\n });\n this.columns = res;\n this.updateIndexMap();\n return this.columns;\n }\n restoreColumnOrder(columnStateAccumulator, incomingColumnState) {\n const colList = this.columns;\n const primaryCols = this.colModel.getColDefCols();\n if (!colList.length || !primaryCols) {\n return columnStateAccumulator;\n }\n const updatedColIdArray = Object.keys(incomingColumnState);\n const updatedColIds = new Set(updatedColIdArray);\n const newColIds = new Set(updatedColIdArray);\n const allColIds = new Set(\n colList.map((column) => {\n const colId = column.getColId();\n newColIds.delete(colId);\n return colId;\n }).concat(updatedColIdArray)\n );\n const colIdsInOriginalOrder = [];\n const originalOrderMap = {};\n let orderIndex = 0;\n for (let i = 0; i < primaryCols.length; i++) {\n const colId = primaryCols[i].getColId();\n if (allColIds.has(colId)) {\n colIdsInOriginalOrder.push(colId);\n originalOrderMap[colId] = orderIndex++;\n }\n }\n let index = 1e3;\n let hasAddedNewCols = false;\n let lastIndex = 0;\n const enableProp = this.columnOrdering.enableProp;\n const initialEnableProp = this.columnOrdering.initialEnableProp;\n const indexProp = this.columnOrdering.indexProp;\n const initialIndexProp = this.columnOrdering.initialIndexProp;\n const processPrecedingNewCols = (colId) => {\n const originalOrderIndex = originalOrderMap[colId];\n for (let i = lastIndex; i < originalOrderIndex; i++) {\n const newColId = colIdsInOriginalOrder[i];\n if (newColIds.has(newColId)) {\n incomingColumnState[newColId][indexProp] = index++;\n newColIds.delete(newColId);\n }\n }\n lastIndex = originalOrderIndex;\n };\n colList.forEach((column) => {\n const colId = column.getColId();\n if (updatedColIds.has(colId)) {\n processPrecedingNewCols(colId);\n incomingColumnState[colId][indexProp] = index++;\n } else {\n const colDef = column.getColDef();\n const missingIndex = colDef[indexProp] === null || colDef[indexProp] === void 0 && colDef[initialIndexProp] == null;\n if (missingIndex) {\n if (!hasAddedNewCols) {\n const propEnabled = colDef[enableProp] || colDef[enableProp] === void 0 && colDef[initialEnableProp];\n if (propEnabled) {\n processPrecedingNewCols(colId);\n } else {\n newColIds.forEach((newColId) => {\n incomingColumnState[newColId][indexProp] = index + originalOrderMap[newColId];\n });\n index += colIdsInOriginalOrder.length;\n hasAddedNewCols = true;\n }\n }\n if (!columnStateAccumulator[colId]) {\n columnStateAccumulator[colId] = { colId };\n }\n columnStateAccumulator[colId][indexProp] = index++;\n }\n }\n });\n return columnStateAccumulator;\n }\n};\n\n// packages/ag-grid-community/src/columns/groupInstanceIdCreator.ts\nvar GroupInstanceIdCreator = class {\n constructor() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n getInstanceIdForKey(key) {\n const lastResult = this.existingIds[key];\n let result;\n if (typeof lastResult !== \"number\") {\n result = 0;\n } else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n }\n};\n\n// packages/ag-grid-community/src/components/emptyBean.ts\nvar EmptyBean = class extends BeanStub {\n};\nfunction setupCompBean(ctrl, ctx, compBean) {\n if (compBean) {\n ctrl.addDestroyFunc(() => ctx.destroyBean(compBean));\n }\n return compBean ?? ctrl;\n}\n\n// packages/ag-grid-community/src/rendering/cssClassManager.ts\nvar CssClassManager = class {\n constructor(getGui) {\n // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already\n // there, or removing one that wasn't present, all takes CPU.\n this.cssClassStates = {};\n this.getGui = getGui;\n }\n addCssClass(className) {\n this.addOrRemoveCssClass(className, true);\n }\n removeCssClass(className) {\n this.addOrRemoveCssClass(className, false);\n }\n containsCssClass(className) {\n const eGui = this.getGui();\n if (!eGui) {\n return false;\n }\n return eGui.classList.contains(className);\n }\n addOrRemoveCssClass(className, addOrRemove) {\n if (!className) {\n return;\n }\n if (className.indexOf(\" \") >= 0) {\n const list = (className || \"\").split(\" \");\n if (list.length > 1) {\n list.forEach((cls) => this.addOrRemoveCssClass(cls, addOrRemove));\n return;\n }\n }\n const updateNeeded = this.cssClassStates[className] !== addOrRemove;\n if (updateNeeded && className.length) {\n const eGui = this.getGui();\n if (eGui) {\n eGui.classList.toggle(className, addOrRemove);\n }\n this.cssClassStates[className] = addOrRemove;\n }\n }\n};\n\n// packages/ag-grid-community/src/widgets/component.ts\nvar compIdSequence = 0;\nvar RefPlaceholder = null;\nvar Component = class extends BeanStub {\n constructor(templateOrParams, componentSelectors) {\n super();\n this.suppressDataRefValidation = false;\n // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n this.displayed = true;\n // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n this.compId = compIdSequence++;\n this.cssClassManager = new CssClassManager(() => this.eGui);\n this.componentSelectors = new Map((componentSelectors ?? []).map((comp) => [comp.selector, comp]));\n if (templateOrParams) {\n this.setTemplate(templateOrParams);\n }\n }\n preConstruct() {\n this.wireTemplate(this.getGui());\n const debugId = \"component-\" + Object.getPrototypeOf(this)?.constructor?.name;\n this.css?.forEach((css) => this.beans.environment.addGlobalCSS(css, debugId));\n }\n wireTemplate(element, paramsMap) {\n if (element && this.gos) {\n this.applyElementsToComponent(element);\n this.createChildComponentsFromTags(element, paramsMap);\n }\n }\n getCompId() {\n return this.compId;\n }\n getDataRefAttribute(element) {\n if (element.getAttribute) {\n return element.getAttribute(DataRefAttribute);\n }\n return null;\n }\n applyElementsToComponent(element, elementRef, paramsMap, newComponent = null) {\n if (elementRef === void 0) {\n elementRef = this.getDataRefAttribute(element);\n }\n if (elementRef) {\n const current = this[elementRef];\n if (current === RefPlaceholder) {\n this[elementRef] = newComponent ?? element;\n } else {\n const usedAsParamRef = paramsMap && paramsMap[elementRef];\n if (!this.suppressDataRefValidation && !usedAsParamRef) {\n throw new Error(`data-ref: ${elementRef} on ${this.constructor.name} with ${current}`);\n }\n }\n }\n }\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n createChildComponentsFromTags(parentNode, paramsMap) {\n const childNodeList = [];\n for (const childNode of parentNode.childNodes ?? []) {\n childNodeList.push(childNode);\n }\n childNodeList.forEach((childNode) => {\n if (!(childNode instanceof HTMLElement)) {\n return;\n }\n const childComp = this.createComponentFromElement(\n childNode,\n (childComp2) => {\n const childGui = childComp2.getGui();\n if (childGui) {\n for (const attr of childNode.attributes ?? []) {\n childGui.setAttribute(attr.name, attr.value);\n }\n }\n },\n paramsMap\n );\n if (childComp) {\n if (childComp.addItems && childNode.children.length) {\n this.createChildComponentsFromTags(childNode, paramsMap);\n const items = Array.prototype.slice.call(childNode.children);\n childComp.addItems(items);\n }\n this.swapComponentForNode(childComp, parentNode, childNode);\n } else if (childNode.childNodes) {\n this.createChildComponentsFromTags(childNode, paramsMap);\n }\n });\n }\n createComponentFromElement(element, afterPreCreateCallback, paramsMap) {\n const key = element.nodeName;\n const elementRef = this.getDataRefAttribute(element);\n const isAgGridComponent = key.indexOf(\"AG-\") === 0;\n const componentSelector = isAgGridComponent ? this.componentSelectors.get(key) : null;\n let newComponent = null;\n if (componentSelector) {\n const componentParams = paramsMap && elementRef ? paramsMap[elementRef] : void 0;\n newComponent = new componentSelector.component(componentParams);\n newComponent.setParentComponent(this);\n this.createBean(newComponent, null, afterPreCreateCallback);\n } else if (isAgGridComponent) {\n throw new Error(`selector: ${key}`);\n }\n this.applyElementsToComponent(element, elementRef, paramsMap, newComponent);\n return newComponent;\n }\n swapComponentForNode(newComponent, parentNode, childNode) {\n const eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.addDestroyFunc(this.destroyBean.bind(this, newComponent));\n }\n activateTabIndex(elements) {\n const tabIndex = this.gos.get(\"tabIndex\");\n if (!elements) {\n elements = [];\n }\n if (!elements.length) {\n elements.push(this.getGui());\n }\n elements.forEach((el) => el.setAttribute(\"tabindex\", tabIndex.toString()));\n }\n setTemplate(templateOrParams, componentSelectors, paramsMap) {\n let eGui;\n if (typeof templateOrParams === \"string\" || templateOrParams == null) {\n eGui = _loadTemplate(templateOrParams);\n } else {\n eGui = _createElement(templateOrParams);\n }\n this.setTemplateFromElement(eGui, componentSelectors, paramsMap);\n }\n setTemplateFromElement(element, components, paramsMap, suppressDataRefValidation = false) {\n this.eGui = element;\n this.suppressDataRefValidation = suppressDataRefValidation;\n if (components) {\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n this.componentSelectors.set(component.selector, component);\n }\n }\n this.wireTemplate(element, paramsMap);\n }\n getGui() {\n return this.eGui;\n }\n getFocusableElement() {\n return this.eGui;\n }\n getAriaElement() {\n return this.getFocusableElement();\n }\n setParentComponent(component) {\n this.parentComponent = component;\n }\n getParentComponent() {\n return this.parentComponent;\n }\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n setGui(eGui) {\n this.eGui = eGui;\n }\n queryForHtmlElement(cssSelector) {\n return this.eGui.querySelector(cssSelector);\n }\n getContainerAndElement(newChild, container) {\n let parent = container;\n if (newChild == null) {\n return null;\n }\n if (!parent) {\n parent = this.eGui;\n }\n if (_isNodeOrElement(newChild)) {\n return {\n element: newChild,\n parent\n };\n }\n return {\n element: newChild.getGui(),\n parent\n };\n }\n prependChild(newChild, container) {\n const { element, parent } = this.getContainerAndElement(newChild, container) || {};\n if (!element || !parent) {\n return;\n }\n parent.insertAdjacentElement(\"afterbegin\", element);\n }\n appendChild(newChild, container) {\n const { element, parent } = this.getContainerAndElement(newChild, container) || {};\n if (!element || !parent) {\n return;\n }\n parent.appendChild(element);\n }\n isDisplayed() {\n return this.displayed;\n }\n setVisible(visible, options = {}) {\n if (visible !== this.visible) {\n this.visible = visible;\n const { skipAriaHidden } = options;\n _setVisible(this.eGui, visible, { skipAriaHidden });\n }\n }\n setDisplayed(displayed, options = {}) {\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n const { skipAriaHidden } = options;\n _setDisplayed(this.eGui, displayed, { skipAriaHidden });\n const event = {\n type: \"displayChanged\",\n visible: this.displayed\n };\n this.dispatchLocalEvent(event);\n }\n }\n destroy() {\n if (this.parentComponent) {\n this.parentComponent = void 0;\n }\n super.destroy();\n }\n addGuiEventListener(event, listener, options) {\n this.eGui.addEventListener(event, listener, options);\n this.addDestroyFunc(() => this.eGui.removeEventListener(event, listener));\n }\n addCssClass(className) {\n this.cssClassManager.addCssClass(className);\n }\n removeCssClass(className) {\n this.cssClassManager.removeCssClass(className);\n }\n containsCssClass(className) {\n return this.cssClassManager.containsCssClass(className);\n }\n addOrRemoveCssClass(className, addOrRemove) {\n this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);\n }\n registerCSS(css) {\n this.css || (this.css = []);\n this.css.push(css);\n }\n};\n\n// packages/ag-grid-community/src/utils/promise.ts\nfunction _isPromise(fn) {\n if (typeof fn.then === \"function\") {\n return true;\n }\n return false;\n}\nvar AgPromise = class _AgPromise {\n constructor(callback) {\n this.status = 0 /* IN_PROGRESS */;\n this.resolution = null;\n this.waiters = [];\n callback(\n (value) => this.onDone(value),\n (params) => this.onReject(params)\n );\n }\n static all(promises) {\n return promises.length ? new _AgPromise((resolve) => {\n let remainingToResolve = promises.length;\n const combinedValues = new Array(remainingToResolve);\n promises.forEach((promise, index) => {\n promise.then((value) => {\n combinedValues[index] = value;\n remainingToResolve--;\n if (remainingToResolve === 0) {\n resolve(combinedValues);\n }\n });\n });\n }) : _AgPromise.resolve();\n }\n static resolve(value = null) {\n return new _AgPromise((resolve) => resolve(value));\n }\n then(func) {\n return new _AgPromise((resolve) => {\n if (this.status === 1 /* RESOLVED */) {\n resolve(func(this.resolution));\n } else {\n this.waiters.push((value) => resolve(func(value)));\n }\n });\n }\n onDone(value) {\n this.status = 1 /* RESOLVED */;\n this.resolution = value;\n this.waiters.forEach((waiter) => waiter(value));\n }\n onReject(_) {\n }\n};\n\n// packages/ag-grid-community/src/components/framework/userComponentFactory.ts\nfunction doesImplementIComponent(candidate) {\n if (!candidate) {\n return false;\n }\n return candidate.prototype && \"getGui\" in candidate.prototype;\n}\nfunction _getUserCompKeys(frameworkOverrides, defObject, type, params) {\n const { name } = type;\n let compName;\n let jsComp;\n let fwComp;\n let paramsFromSelector;\n let popupFromSelector;\n let popupPositionFromSelector;\n if (defObject) {\n const defObjectAny = defObject;\n const selectorFunc = defObjectAny[name + \"Selector\"];\n const selectorRes = selectorFunc ? selectorFunc(params) : null;\n const assignComp = (providedJsComp) => {\n if (typeof providedJsComp === \"string\") {\n compName = providedJsComp;\n } else if (providedJsComp != null && providedJsComp !== true) {\n const isFwkComp = frameworkOverrides.isFrameworkComponent(providedJsComp);\n if (isFwkComp) {\n fwComp = providedJsComp;\n } else {\n jsComp = providedJsComp;\n }\n }\n };\n if (selectorRes) {\n assignComp(selectorRes.component);\n paramsFromSelector = selectorRes.params;\n popupFromSelector = selectorRes.popup;\n popupPositionFromSelector = selectorRes.popupPosition;\n } else {\n assignComp(defObjectAny[name]);\n }\n }\n return { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector };\n}\nvar UserComponentFactory = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"userCompFactory\";\n }\n wireBeans(beans) {\n this.agCompUtils = beans.agCompUtils;\n this.registry = beans.registry;\n this.frameworkCompWrapper = beans.frameworkCompWrapper;\n this.gridOptions = beans.gridOptions;\n }\n getCompDetailsFromGridOptions(type, defaultName, params, mandatory = false) {\n return this.getCompDetails(this.gridOptions, type, defaultName, params, mandatory);\n }\n getCompDetails(defObject, type, defaultName, params, mandatory = false) {\n const { name, cellRenderer } = type;\n let { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector } = _getUserCompKeys(this.beans.frameworkOverrides, defObject, type, params);\n let defaultCompParams;\n const lookupFromRegistry = (key) => {\n const item = this.registry.getUserComponent(name, key);\n if (item) {\n jsComp = !item.componentFromFramework ? item.component : void 0;\n fwComp = item.componentFromFramework ? item.component : void 0;\n defaultCompParams = item.params;\n }\n };\n if (compName != null) {\n lookupFromRegistry(compName);\n }\n if (jsComp == null && fwComp == null && defaultName != null) {\n lookupFromRegistry(defaultName);\n }\n if (jsComp && cellRenderer && !doesImplementIComponent(jsComp)) {\n jsComp = this.agCompUtils?.adaptFunction(type, jsComp);\n }\n if (!jsComp && !fwComp) {\n const { validation: validation2 } = this.beans;\n if (mandatory && (compName !== defaultName || !defaultName)) {\n if (compName) {\n if (!validation2?.isProvidedUserComp(compName)) {\n _error(50, { compName });\n }\n } else {\n if (defaultName) {\n if (!validation2) {\n _error(260, {\n ...this.gos.getModuleErrorParams(),\n propName: name,\n compName: defaultName\n });\n }\n } else {\n _error(216, { name });\n }\n }\n } else if (defaultName && !validation2) {\n _error(146, { comp: defaultName });\n }\n return;\n }\n const paramsMerged = this.mergeParams(defObject, type, params, paramsFromSelector, defaultCompParams);\n const componentFromFramework = jsComp == null;\n const componentClass = jsComp ?? fwComp;\n return {\n componentFromFramework,\n componentClass,\n params: paramsMerged,\n type,\n popupFromSelector,\n popupPositionFromSelector,\n newAgStackInstance: () => this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type)\n };\n }\n newAgStackInstance(ComponentClass, componentFromFramework, params, type) {\n const jsComponent = !componentFromFramework;\n let instance;\n if (jsComponent) {\n instance = new ComponentClass();\n } else {\n instance = this.frameworkCompWrapper.wrap(\n ComponentClass,\n type.mandatoryMethods,\n type.optionalMethods,\n type\n );\n }\n this.createBean(instance);\n const deferredInit = instance.init?.(params);\n if (deferredInit == null) {\n return AgPromise.resolve(instance);\n }\n return deferredInit.then(() => instance);\n }\n /**\n * merges params with application provided params\n * used by Floating Filter\n */\n mergeParams(defObject, type, paramsFromGrid, paramsFromSelector = null, defaultCompParams) {\n const params = { ...paramsFromGrid, ...defaultCompParams };\n const defObjectAny = defObject;\n const userParams = defObjectAny && defObjectAny[type.name + \"Params\"];\n if (typeof userParams === \"function\") {\n const userParamsFromFunc = userParams(paramsFromGrid);\n _mergeDeep(params, userParamsFromFunc);\n } else if (typeof userParams === \"object\") {\n _mergeDeep(params, userParams);\n }\n _mergeDeep(params, paramsFromSelector);\n return params;\n }\n};\n\n// packages/ag-grid-community/src/components/framework/userCompUtils.ts\nvar DateComponent = {\n name: \"dateComponent\",\n mandatoryMethods: [\"getDate\", \"setDate\"],\n optionalMethods: [\"afterGuiAttached\", \"setInputPlaceholder\", \"setInputAriaLabel\", \"setDisabled\", \"refresh\"]\n};\nvar DragAndDropImageComponent = {\n name: \"dragAndDropImageComponent\",\n mandatoryMethods: [\"setIcon\", \"setLabel\"]\n};\nvar HeaderComponent = { name: \"headerComponent\", optionalMethods: [\"refresh\"] };\nvar InnerHeaderComponent = { name: \"innerHeaderComponent\" };\nvar InnerHeaderGroupComponent = { name: \"innerHeaderGroupComponent\" };\nvar HeaderGroupComponent = { name: \"headerGroupComponent\" };\nvar InnerCellRendererComponent = {\n name: \"innerRenderer\",\n cellRenderer: true,\n optionalMethods: [\"afterGuiAttached\"]\n};\nvar CellRendererComponent = {\n name: \"cellRenderer\",\n optionalMethods: [\"refresh\", \"afterGuiAttached\"],\n cellRenderer: true\n};\nvar EditorRendererComponent = {\n name: \"cellRenderer\",\n optionalMethods: [\"refresh\", \"afterGuiAttached\"]\n};\nvar LoadingCellRendererComponent = { name: \"loadingCellRenderer\", cellRenderer: true };\nvar CellEditorComponent = {\n name: \"cellEditor\",\n mandatoryMethods: [\"getValue\"],\n optionalMethods: [\n \"isPopup\",\n \"isCancelBeforeStart\",\n \"isCancelAfterEnd\",\n \"getPopupPosition\",\n \"focusIn\",\n \"focusOut\",\n \"afterGuiAttached\",\n \"refresh\"\n ]\n};\nvar LoadingOverlayComponent = { name: \"loadingOverlayComponent\", optionalMethods: [\"refresh\"] };\nvar NoRowsOverlayComponent = { name: \"noRowsOverlayComponent\", optionalMethods: [\"refresh\"] };\nvar TooltipComponent = { name: \"tooltipComponent\" };\nvar FilterComponent = {\n name: \"filter\",\n mandatoryMethods: [\"isFilterActive\", \"doesFilterPass\", \"getModel\", \"setModel\"],\n optionalMethods: [\n \"afterGuiAttached\",\n \"afterGuiDetached\",\n \"onNewRowsLoaded\",\n \"getModelAsString\",\n \"onFloatingFilterChanged\",\n \"onAnyFilterChanged\",\n \"refresh\"\n ]\n};\nvar FloatingFilterComponent = {\n name: \"floatingFilterComponent\",\n mandatoryMethods: [\"onParentModelChanged\"],\n optionalMethods: [\"afterGuiAttached\", \"refresh\"]\n};\nvar FullWidth = {\n name: \"fullWidthCellRenderer\",\n optionalMethods: [\"refresh\", \"afterGuiAttached\"],\n cellRenderer: true\n};\nvar FullWidthLoading = { name: \"loadingCellRenderer\", cellRenderer: true };\nvar FullWidthGroup = {\n name: \"groupRowRenderer\",\n optionalMethods: [\"afterGuiAttached\"],\n cellRenderer: true\n};\nvar FullWidthDetail = { name: \"detailCellRenderer\", optionalMethods: [\"refresh\"], cellRenderer: true };\nfunction _getDragAndDropImageCompDetails(userCompFactory, params) {\n return userCompFactory.getCompDetailsFromGridOptions(DragAndDropImageComponent, \"agDragAndDropImage\", params, true);\n}\nfunction _getInnerCellRendererDetails(userCompFactory, def, params) {\n return userCompFactory.getCompDetails(def, InnerCellRendererComponent, void 0, params);\n}\nfunction _getHeaderCompDetails(userCompFactory, colDef, params) {\n return userCompFactory.getCompDetails(colDef, HeaderComponent, \"agColumnHeader\", params);\n}\nfunction _getInnerHeaderCompDetails(userCompFactory, headerCompParams, params) {\n return userCompFactory.getCompDetails(headerCompParams, InnerHeaderComponent, void 0, params);\n}\nfunction _getHeaderGroupCompDetails(userCompFactory, params) {\n const colGroupDef = params.columnGroup.getColGroupDef();\n return userCompFactory.getCompDetails(colGroupDef, HeaderGroupComponent, \"agColumnGroupHeader\", params);\n}\nfunction _getInnerHeaderGroupCompDetails(userCompFactory, headerGroupCompParams, params) {\n return userCompFactory.getCompDetails(headerGroupCompParams, InnerHeaderGroupComponent, void 0, params);\n}\nfunction _getFullWidthCellRendererDetails(userCompFactory, params) {\n return userCompFactory.getCompDetailsFromGridOptions(FullWidth, void 0, params, true);\n}\nfunction _getFullWidthLoadingCellRendererDetails(userCompFactory, params) {\n return userCompFactory.getCompDetailsFromGridOptions(FullWidthLoading, \"agLoadingCellRenderer\", params, true);\n}\nfunction _getFullWidthGroupCellRendererDetails(userCompFactory, params) {\n return userCompFactory.getCompDetailsFromGridOptions(FullWidthGroup, \"agGroupRowRenderer\", params, true);\n}\nfunction _getFullWidthDetailCellRendererDetails(userCompFactory, params) {\n return userCompFactory.getCompDetailsFromGridOptions(FullWidthDetail, \"agDetailCellRenderer\", params, true);\n}\nfunction _getCellRendererDetails(userCompFactory, def, params) {\n return userCompFactory.getCompDetails(def, CellRendererComponent, void 0, params);\n}\nfunction _getEditorRendererDetails(userCompFactory, def, params) {\n return userCompFactory.getCompDetails(\n def,\n EditorRendererComponent,\n void 0,\n params\n );\n}\nfunction _getLoadingCellRendererDetails(userCompFactory, def, params) {\n return userCompFactory.getCompDetails(def, LoadingCellRendererComponent, \"agSkeletonCellRenderer\", params, true);\n}\nfunction _getCellEditorDetails(userCompFactory, def, params) {\n return userCompFactory.getCompDetails(def, CellEditorComponent, \"agCellEditor\", params, true);\n}\nfunction _getFilterDetails(userCompFactory, def, params, defaultFilter) {\n return userCompFactory.getCompDetails(def, FilterComponent, defaultFilter, params, true);\n}\nfunction _getDateCompDetails(userCompFactory, def, params) {\n return userCompFactory.getCompDetails(def, DateComponent, \"agDateInput\", params, true);\n}\nfunction _getLoadingOverlayCompDetails(userCompFactory, params) {\n return userCompFactory.getCompDetailsFromGridOptions(LoadingOverlayComponent, \"agLoadingOverlay\", params, true);\n}\nfunction _getNoRowsOverlayCompDetails(userCompFactory, params) {\n return userCompFactory.getCompDetailsFromGridOptions(NoRowsOverlayComponent, \"agNoRowsOverlay\", params, true);\n}\nfunction _getTooltipCompDetails(userCompFactory, params) {\n return userCompFactory.getCompDetails(params.colDef, TooltipComponent, \"agTooltipComponent\", params, true);\n}\nfunction _getFloatingFilterCompDetails(userCompFactory, def, params, defaultFloatingFilter) {\n return userCompFactory.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);\n}\nfunction _getFilterCompKeys(frameworkOverrides, def) {\n return _getUserCompKeys(frameworkOverrides, def, FilterComponent);\n}\nfunction _mergeFilterParamsWithApplicationProvidedParams(userCompFactory, defObject, paramsFromGrid) {\n return userCompFactory.mergeParams(defObject, FilterComponent, paramsFromGrid);\n}\n\n// packages/ag-grid-community/src/components/framework/unwrapUserComp.ts\nfunction _unwrapUserComp(comp) {\n const compAsAny = comp;\n const isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;\n return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;\n}\n\n// packages/ag-grid-community/src/modules/moduleRegistry.ts\nvar allRegisteredModules = /* @__PURE__ */ new Set();\nvar globalModulesMap = {};\nvar gridModulesMap = {};\nvar currentModuleVersion;\nvar areGridScopedModules = false;\nvar isUmd = false;\nfunction isValidModuleVersion(module) {\n const [moduleMajor, moduleMinor] = module.version.split(\".\") || [];\n const [currentModuleMajor, currentModuleMinor] = currentModuleVersion.split(\".\") || [];\n return moduleMajor === currentModuleMajor && moduleMinor === currentModuleMinor;\n}\nfunction runVersionChecks(module) {\n if (!currentModuleVersion) {\n currentModuleVersion = module.version;\n }\n const errorMsg = (details) => `You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. ${details} Please update all modules to the same version.`;\n if (!module.version) {\n _errorOnce(errorMsg(`'${module.moduleName}' is incompatible.`));\n } else if (!isValidModuleVersion(module)) {\n _errorOnce(\n errorMsg(\n `'${module.moduleName}' is version ${module.version} but the other modules are version ${currentModuleVersion}.`\n )\n );\n }\n if (module.validate) {\n const result = module.validate();\n if (!result.isValid) {\n const errorResult = result;\n _errorOnce(`${errorResult.message}`);\n }\n }\n}\nfunction _registerModule(module, gridId) {\n runVersionChecks(module);\n const rowModels = module.rowModels ?? [\"all\"];\n allRegisteredModules.add(module);\n let moduleStore;\n if (gridId !== void 0) {\n areGridScopedModules = true;\n if (gridModulesMap[gridId] === void 0) {\n gridModulesMap[gridId] = {};\n }\n moduleStore = gridModulesMap[gridId];\n } else {\n moduleStore = globalModulesMap;\n }\n rowModels.forEach((rowModel) => {\n if (moduleStore[rowModel] === void 0) {\n moduleStore[rowModel] = {};\n }\n moduleStore[rowModel][module.moduleName] = module;\n });\n if (module.dependsOn) {\n module.dependsOn.forEach((dependency) => _registerModule(dependency, gridId));\n }\n}\nfunction _unRegisterGridModules(gridId) {\n delete gridModulesMap[gridId];\n}\nfunction _isModuleRegistered(moduleName, gridId, rowModel) {\n const isRegisteredForRowModel = (model) => !!globalModulesMap[model]?.[moduleName] || !!gridModulesMap[gridId]?.[model]?.[moduleName];\n return isRegisteredForRowModel(rowModel) || isRegisteredForRowModel(\"all\");\n}\nfunction _areModulesGridScoped() {\n return areGridScopedModules;\n}\nfunction _getRegisteredModules(gridId, rowModel) {\n const gridModules = gridModulesMap[gridId] ?? {};\n return [\n ...Object.values(globalModulesMap[\"all\"] ?? {}),\n ...Object.values(gridModules[\"all\"] ?? {}),\n ...Object.values(globalModulesMap[rowModel] ?? {}),\n ...Object.values(gridModules[rowModel] ?? {})\n ];\n}\nfunction _getAllRegisteredModules() {\n return new Set(allRegisteredModules);\n}\nfunction _getGridRegisteredModules(gridId, rowModel) {\n const gridModules = gridModulesMap[gridId] ?? {};\n return [...Object.values(gridModules[\"all\"] ?? {}), ...Object.values(gridModules[rowModel] ?? {})];\n}\nfunction _isUmd() {\n return isUmd;\n}\nfunction _setUmd() {\n isUmd = true;\n}\nvar ModuleRegistry = class {\n /**\n * @deprecated v33 Use `registerModules([module])` instead.\n */\n static register(module) {\n _registerModule(module, void 0);\n }\n /**\n * Globally register the given modules for all grids.\n * @param modules - modules to register\n */\n static registerModules(modules) {\n modules.forEach((module) => _registerModule(module, void 0));\n }\n};\n\n// packages/ag-grid-community/src/context/genericContext.ts\nvar GenericContext = class {\n constructor(params) {\n this.beans = {};\n this.createdBeans = [];\n this.destroyed = false;\n if (!params || !params.beanClasses) {\n return;\n }\n this.beanDestroyComparator = params.beanDestroyComparator;\n this.init(params);\n }\n init(params) {\n for (const beanName of Object.keys(params.providedBeanInstances)) {\n this.beans[beanName] = params.providedBeanInstances[beanName];\n }\n params.beanClasses.forEach((BeanClass) => {\n const instance = new BeanClass();\n if (instance.beanName) {\n this.beans[instance.beanName] = instance;\n } else {\n console.error(`Bean ${BeanClass.name} is missing beanName`);\n }\n this.createdBeans.push(instance);\n });\n params.derivedBeans?.forEach((beanFunc) => {\n const { beanName, bean } = beanFunc(this);\n this.beans[beanName] = bean;\n this.createdBeans.push(bean);\n });\n if (params.beanInitComparator) {\n this.createdBeans.sort(params.beanInitComparator);\n }\n this.initBeans(this.createdBeans);\n }\n getBeanInstances() {\n return Object.values(this.beans);\n }\n createBean(bean, afterPreCreateCallback) {\n if (!bean) {\n throw Error(\"null bean\");\n }\n this.initBeans([bean], afterPreCreateCallback);\n return bean;\n }\n initBeans(beanInstances, afterPreCreateCallback) {\n beanInstances.forEach((instance) => {\n instance.preWireBeans?.(this.beans);\n instance.wireBeans?.(this.beans);\n });\n beanInstances.forEach((instance) => instance.preConstruct?.());\n if (afterPreCreateCallback) {\n beanInstances.forEach(afterPreCreateCallback);\n }\n beanInstances.forEach((instance) => instance.postConstruct?.());\n }\n getBeans() {\n return this.beans;\n }\n getBean(name) {\n return this.beans[name];\n }\n destroy() {\n if (this.destroyed) {\n return;\n }\n this.destroyed = true;\n const beanInstances = this.getBeanInstances();\n if (this.beanDestroyComparator) {\n beanInstances.sort(this.beanDestroyComparator);\n }\n this.destroyBeans(beanInstances);\n this.beans = {};\n this.createdBeans = [];\n }\n /**\n * Destroys a bean and returns undefined to support destruction and clean up in a single line.\n * this.dateComp = this.context.destroyBean(this.dateComp);\n */\n destroyBean(bean) {\n bean?.destroy?.();\n }\n /**\n * Destroys an array of beans and returns an empty array to support destruction and clean up in a single line.\n * this.dateComps = this.context.destroyBeans(this.dateComps);\n */\n destroyBeans(beans) {\n if (beans) {\n for (let i = 0; i < beans.length; i++) {\n this.destroyBean(beans[i]);\n }\n }\n return [];\n }\n isDestroyed() {\n return this.destroyed;\n }\n};\n\n// packages/ag-grid-community/src/context/context.ts\nvar Context = class extends GenericContext {\n init(params) {\n this.gridId = params.gridId;\n this.beans.context = this;\n this.destroyCallback = params.destroyCallback;\n super.init(params);\n }\n destroy() {\n super.destroy();\n _unRegisterGridModules(this.gridId);\n this.destroyCallback?.();\n }\n getGridId() {\n return this.gridId;\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/cssClassApplier.ts\nvar CSS_FIRST_COLUMN = \"ag-column-first\";\nvar CSS_LAST_COLUMN = \"ag-column-last\";\nfunction _getHeaderClassesFromColDef(abstractColDef, gos, column, columnGroup) {\n if (_missing(abstractColDef)) {\n return [];\n }\n return getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gos, column, columnGroup);\n}\nfunction _getToolPanelClassesFromColDef(abstractColDef, gos, column, columnGroup) {\n if (_missing(abstractColDef)) {\n return [];\n }\n return getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gos, column, columnGroup);\n}\nfunction refreshFirstAndLastStyles(comp, column, presentedColsService) {\n comp.addOrRemoveCssClass(CSS_FIRST_COLUMN, presentedColsService.isColAtEdge(column, \"first\"));\n comp.addOrRemoveCssClass(CSS_LAST_COLUMN, presentedColsService.isColAtEdge(column, \"last\"));\n}\nfunction getClassParams(abstractColDef, gos, column, columnGroup) {\n return _addGridCommonParams(gos, {\n // bad naming, as colDef here can be a group or a column,\n // however most people won't appreciate the difference,\n // so keeping it as colDef to avoid confusion.\n colDef: abstractColDef,\n column,\n columnGroup\n });\n}\nfunction getColumnClassesFromCollDef(classesOrFunc, abstractColDef, gos, column, columnGroup) {\n if (_missing(classesOrFunc)) {\n return [];\n }\n let classToUse;\n if (typeof classesOrFunc === \"function\") {\n const params = getClassParams(abstractColDef, gos, column, columnGroup);\n classToUse = classesOrFunc(params);\n } else {\n classToUse = classesOrFunc;\n }\n if (typeof classToUse === \"string\") {\n return [classToUse];\n }\n if (Array.isArray(classToUse)) {\n return [...classToUse];\n }\n return [];\n}\n\n// packages/ag-grid-community/src/constants/keyCode.ts\nvar KeyCode = {\n BACKSPACE: \"Backspace\",\n TAB: \"Tab\",\n ENTER: \"Enter\",\n ESCAPE: \"Escape\",\n SPACE: \" \",\n LEFT: \"ArrowLeft\",\n UP: \"ArrowUp\",\n RIGHT: \"ArrowRight\",\n DOWN: \"ArrowDown\",\n DELETE: \"Delete\",\n F2: \"F2\",\n PAGE_UP: \"PageUp\",\n PAGE_DOWN: \"PageDown\",\n PAGE_HOME: \"Home\",\n PAGE_END: \"End\",\n // these should be used with `event.code` instead of `event.key`\n // as `event.key` changes when non-latin keyboards are used\n A: \"KeyA\",\n C: \"KeyC\",\n D: \"KeyD\",\n V: \"KeyV\",\n X: \"KeyX\",\n Y: \"KeyY\",\n Z: \"KeyZ\"\n};\n\n// packages/ag-grid-community/src/utils/focus.ts\nvar keyboardModeActive = false;\nvar instanceCount = 0;\nfunction addKeyboardModeEvents(doc) {\n if (instanceCount > 0) {\n return;\n }\n doc.addEventListener(\"keydown\", toggleKeyboardMode);\n doc.addEventListener(\"mousedown\", toggleKeyboardMode);\n}\nfunction removeKeyboardModeEvents(doc) {\n if (instanceCount > 0)\n return;\n doc.removeEventListener(\"keydown\", toggleKeyboardMode);\n doc.removeEventListener(\"mousedown\", toggleKeyboardMode);\n}\nfunction toggleKeyboardMode(event) {\n const isKeyboardActive = keyboardModeActive;\n const isKeyboardEvent = event.type === \"keydown\";\n if (isKeyboardEvent) {\n if (event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n }\n if (isKeyboardActive === isKeyboardEvent) {\n return;\n }\n keyboardModeActive = isKeyboardEvent;\n}\nfunction _registerKeyboardFocusEvents(beans) {\n const eDocument = _getDocument(beans);\n addKeyboardModeEvents(eDocument);\n instanceCount++;\n return () => {\n instanceCount--;\n removeKeyboardModeEvents(eDocument);\n };\n}\nfunction _isKeyboardMode() {\n return keyboardModeActive;\n}\nfunction _addFocusableContainerListener(beans, comp, eGui) {\n comp.addManagedElementListeners(eGui, {\n keydown: (e) => {\n if (!e.defaultPrevented && e.key === KeyCode.TAB) {\n const backwards = e.shiftKey;\n if (!_findNextFocusableElement(beans, eGui, false, backwards)) {\n if (_focusNextGridCoreContainer(beans, backwards)) {\n e.preventDefault();\n }\n }\n }\n }\n });\n}\nfunction _findFocusableElements(rootNode, exclude, onlyUnmanaged = false) {\n const focusableString = FOCUSABLE_SELECTOR;\n let excludeString = FOCUSABLE_EXCLUDE;\n if (exclude) {\n excludeString += \", \" + exclude;\n }\n if (onlyUnmanaged) {\n excludeString += ', [tabindex=\"-1\"]';\n }\n const nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString)).filter((node) => {\n return _isVisible(node);\n });\n const excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));\n if (!excludeNodes.length) {\n return nodes;\n }\n const diff = (a, b) => a.filter((element) => b.indexOf(element) === -1);\n return diff(nodes, excludeNodes);\n}\nfunction _focusInto(rootNode, up = false, onlyUnmanaged = false, excludeTabGuards = false) {\n const focusableElements = _findFocusableElements(\n rootNode,\n excludeTabGuards ? \".ag-tab-guard\" : null,\n onlyUnmanaged\n );\n const toFocus = up ? _last(focusableElements) : focusableElements[0];\n if (toFocus) {\n toFocus.focus({ preventScroll: true });\n return true;\n }\n return false;\n}\nfunction _findNextFocusableElement(beans, rootNode, onlyManaged, backwards) {\n const focusable = _findFocusableElements(rootNode, onlyManaged ? ':not([tabindex=\"-1\"])' : null);\n const activeEl = _getActiveDomElement(beans);\n let currentIndex;\n if (onlyManaged) {\n currentIndex = focusable.findIndex((el) => el.contains(activeEl));\n } else {\n currentIndex = focusable.indexOf(activeEl);\n }\n const nextIndex = currentIndex + (backwards ? -1 : 1);\n if (nextIndex < 0 || nextIndex >= focusable.length) {\n return null;\n }\n return focusable[nextIndex];\n}\nfunction _findTabbableParent(node, limit = 5) {\n let counter = 0;\n while (node && _getTabIndex(node) === null && ++counter <= limit) {\n node = node.parentElement;\n }\n if (_getTabIndex(node) === null) {\n return null;\n }\n return node;\n}\nfunction _focusGridInnerElement(beans, fromBottom) {\n return beans.ctrlsSvc.get(\"gridCtrl\").focusInnerElement(fromBottom);\n}\nfunction _isHeaderFocusSuppressed(beans) {\n return beans.gos.get(\"suppressHeaderFocus\") || !!beans.overlays?.isExclusive();\n}\nfunction _isCellFocusSuppressed(beans) {\n return beans.gos.get(\"suppressCellFocus\") || !!beans.overlays?.isExclusive();\n}\nfunction _focusNextGridCoreContainer(beans, backwards, forceOut = false) {\n const gridCtrl = beans.ctrlsSvc.get(\"gridCtrl\");\n if (!forceOut && gridCtrl.focusNextInnerContainer(backwards)) {\n return true;\n }\n if (forceOut || !backwards && !gridCtrl.isDetailGrid()) {\n gridCtrl.forceFocusOutOfContainer(backwards);\n }\n return false;\n}\n\n// packages/ag-grid-community/src/rendering/cell/cellKeyboardListenerFeature.ts\nfunction _isDeleteKey(key, alwaysReturnFalseOnBackspace = false) {\n if (key === KeyCode.DELETE) {\n return true;\n }\n if (!alwaysReturnFalseOnBackspace && key === KeyCode.BACKSPACE) {\n return _isMacOsUserAgent();\n }\n return false;\n}\nvar CellKeyboardListenerFeature = class extends BeanStub {\n constructor(cellCtrl, beans, rowNode, rowCtrl) {\n super();\n this.cellCtrl = cellCtrl;\n this.rowNode = rowNode;\n this.rowCtrl = rowCtrl;\n this.beans = beans;\n }\n init() {\n this.eGui = this.cellCtrl.eGui;\n }\n onKeyDown(event) {\n const key = event.key;\n switch (key) {\n case KeyCode.ENTER:\n this.onEnterKeyDown(event);\n break;\n case KeyCode.F2:\n this.onF2KeyDown(event);\n break;\n case KeyCode.ESCAPE:\n this.onEscapeKeyDown(event);\n break;\n case KeyCode.TAB:\n this.onTabKeyDown(event);\n break;\n case KeyCode.BACKSPACE:\n case KeyCode.DELETE:\n this.onBackspaceOrDeleteKeyDown(key, event);\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n this.onNavigationKeyDown(event, key);\n break;\n }\n }\n onNavigationKeyDown(event, key) {\n if (this.cellCtrl.editing) {\n return;\n }\n if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {\n this.onShiftRangeSelect(event);\n } else {\n const currentCellPosition = this.cellCtrl.getFocusedCellPosition();\n this.beans.navigation?.navigateToNextCell(event, key, currentCellPosition, true);\n }\n event.preventDefault();\n }\n onShiftRangeSelect(event) {\n const { rangeSvc, navigation } = this.beans;\n if (!rangeSvc) {\n return;\n }\n const endCell = rangeSvc.extendLatestRangeInDirection(event);\n if (endCell) {\n navigation?.ensureCellVisible(endCell);\n }\n }\n onTabKeyDown(event) {\n this.beans.navigation?.onTabKeyDown(this.cellCtrl, event);\n }\n onBackspaceOrDeleteKeyDown(key, event) {\n const { cellCtrl, beans, rowNode } = this;\n const { gos, rangeSvc, eventSvc } = beans;\n if (cellCtrl.editing) {\n return;\n }\n eventSvc.dispatchEvent({ type: \"keyShortcutChangedCellStart\" });\n if (_isDeleteKey(key, gos.get(\"enableCellEditingOnBackspace\"))) {\n if (rangeSvc && _isCellSelectionEnabled(gos)) {\n rangeSvc.clearCellRangeCellValues({ dispatchWrapperEvents: true, wrapperEventSource: \"deleteKey\" });\n } else if (cellCtrl.isCellEditable()) {\n const { column } = cellCtrl;\n const emptyValue = this.beans.valueSvc.getDeleteValue(column, rowNode);\n rowNode.setDataValue(column, emptyValue, \"cellClear\");\n }\n } else {\n beans.editSvc?.startRowOrCellEdit(cellCtrl, key, event);\n }\n eventSvc.dispatchEvent({ type: \"keyShortcutChangedCellEnd\" });\n }\n onEnterKeyDown(e) {\n const { cellCtrl, beans } = this;\n if (cellCtrl.editing || this.rowCtrl.editing) {\n this.beans.editSvc?.stopRowOrCellEdit(cellCtrl, false, false, e.shiftKey);\n } else {\n if (beans.gos.get(\"enterNavigatesVertically\")) {\n const key = e.shiftKey ? KeyCode.UP : KeyCode.DOWN;\n beans.navigation?.navigateToNextCell(null, key, cellCtrl.cellPosition, false);\n } else {\n beans.editSvc?.startRowOrCellEdit(cellCtrl, KeyCode.ENTER, e);\n if (cellCtrl.editing) {\n e.preventDefault();\n }\n }\n }\n }\n onF2KeyDown(event) {\n const { cellCtrl, beans } = this;\n if (!cellCtrl.editing) {\n beans.editSvc?.startRowOrCellEdit(cellCtrl, KeyCode.F2, event);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onEscapeKeyDown(event) {\n const { cellCtrl, beans } = this;\n if (cellCtrl.editing) {\n beans.editSvc?.stopRowOrCellEdit(cellCtrl, true);\n }\n }\n processCharacter(event) {\n const eventTarget = event.target;\n const eventOnChildComponent = eventTarget !== this.eGui;\n if (eventOnChildComponent || this.cellCtrl.editing) {\n return;\n }\n const key = event.key;\n if (key === KeyCode.SPACE) {\n this.onSpaceKeyDown(event);\n } else {\n if (this.beans.editSvc?.startRowOrCellEdit(this.cellCtrl, key, event)) {\n event.preventDefault();\n }\n }\n }\n onSpaceKeyDown(event) {\n const { gos } = this.beans;\n if (!this.cellCtrl.editing && _isRowSelection(gos)) {\n this.beans.selectionSvc?.handleSelectionEvent(event, this.rowNode, \"spaceKey\");\n }\n event.preventDefault();\n }\n destroy() {\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellMouseListenerFeature.ts\nvar CellMouseListenerFeature = class extends BeanStub {\n constructor(cellCtrl, beans, column) {\n super();\n this.cellCtrl = cellCtrl;\n this.column = column;\n this.beans = beans;\n }\n onMouseEvent(eventName, mouseEvent) {\n if (_isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case \"click\":\n this.onCellClicked(mouseEvent);\n break;\n case \"mousedown\":\n case \"touchstart\":\n this.onMouseDown(mouseEvent);\n break;\n case \"dblclick\":\n this.onCellDoubleClicked(mouseEvent);\n break;\n case \"mouseout\":\n this.onMouseOut(mouseEvent);\n break;\n case \"mouseover\":\n this.onMouseOver(mouseEvent);\n break;\n }\n }\n onCellClicked(mouseEvent) {\n if (this.beans.touchSvc?.handleCellDoubleClick(this, mouseEvent)) {\n return;\n }\n const { eventSvc, rangeSvc, gos, editSvc } = this.beans;\n const isMultiKey = mouseEvent.ctrlKey || mouseEvent.metaKey;\n if (rangeSvc && isMultiKey) {\n if (rangeSvc.getCellRangeCount(this.cellCtrl.cellPosition) > 1) {\n rangeSvc.intersectLastRange(true);\n }\n }\n const cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, \"cellClicked\");\n eventSvc.dispatchEvent(cellClickedEvent);\n const colDef = this.column.getColDef();\n if (colDef.onCellClicked) {\n window.setTimeout(() => {\n this.beans.frameworkOverrides.wrapOutgoing(() => {\n colDef.onCellClicked(cellClickedEvent);\n });\n }, 0);\n }\n const editOnSingleClick = (gos.get(\"singleClickEdit\") || colDef.singleClickEdit) && !gos.get(\"suppressClickEdit\");\n if (editOnSingleClick && !(mouseEvent.shiftKey && rangeSvc?.getCellRanges().length != 0)) {\n editSvc?.startRowOrCellEdit(this.cellCtrl, void 0, mouseEvent);\n }\n }\n onCellDoubleClicked(mouseEvent) {\n const { column, beans, cellCtrl } = this;\n const { eventSvc, frameworkOverrides, gos, editSvc } = beans;\n const colDef = column.getColDef();\n const cellDoubleClickedEvent = cellCtrl.createEvent(mouseEvent, \"cellDoubleClicked\");\n eventSvc.dispatchEvent(cellDoubleClickedEvent);\n if (typeof colDef.onCellDoubleClicked === \"function\") {\n window.setTimeout(() => {\n frameworkOverrides.wrapOutgoing(() => {\n colDef.onCellDoubleClicked(cellDoubleClickedEvent);\n });\n }, 0);\n }\n const editOnDoubleClick = !gos.get(\"singleClickEdit\") && !gos.get(\"suppressClickEdit\");\n if (editOnDoubleClick) {\n editSvc?.startRowOrCellEdit(cellCtrl, null, mouseEvent);\n }\n }\n onMouseDown(mouseEvent) {\n const { ctrlKey, metaKey, shiftKey } = mouseEvent;\n const target = mouseEvent.target;\n const { cellCtrl, beans } = this;\n const { eventSvc, rangeSvc, rowNumbersSvc, focusSvc, gos } = beans;\n if (this.isRightClickInExistingRange(mouseEvent)) {\n return;\n }\n const hasRanges = rangeSvc && !rangeSvc.isEmpty();\n const containsWidget = this.containsWidget(target);\n const { cellPosition } = cellCtrl;\n const isRowNumberColumn = isRowNumberCol(cellPosition.column);\n if (rowNumbersSvc && isRowNumberColumn && !rowNumbersSvc.handleMouseDownOnCell(cellPosition, mouseEvent)) {\n if (rangeSvc) {\n mouseEvent.preventDefault();\n }\n mouseEvent.stopImmediatePropagation();\n return;\n }\n if (!shiftKey || !hasRanges) {\n const isEnableCellTextSelection = gos.get(\"enableCellTextSelection\");\n const shouldFocus = isEnableCellTextSelection && mouseEvent.defaultPrevented;\n const forceBrowserFocus = (_isBrowserSafari() || shouldFocus) && !cellCtrl.editing && !_isFocusableFormField(target) && !containsWidget;\n cellCtrl.focusCell(forceBrowserFocus);\n }\n if (shiftKey && hasRanges && !focusSvc.isCellFocused(cellPosition)) {\n mouseEvent.preventDefault();\n const focusedCellPosition = focusSvc.getFocusedCell();\n if (focusedCellPosition) {\n const { column, rowIndex, rowPinned } = focusedCellPosition;\n const focusedRowCtrl = beans.rowRenderer.getRowByPosition({ rowIndex, rowPinned });\n const focusedCellCtrl = focusedRowCtrl?.getCellCtrl(column);\n if (focusedCellCtrl?.editing) {\n focusedCellCtrl.stopEditing();\n }\n focusSvc.setFocusedCell({\n column,\n rowIndex,\n rowPinned,\n forceBrowserFocus: true,\n preventScrollOnBrowserFocus: true\n });\n }\n }\n if (containsWidget) {\n return;\n }\n if (rangeSvc) {\n if (isRowNumberColumn) {\n mouseEvent.preventDefault();\n }\n if (shiftKey) {\n rangeSvc.extendLatestRangeToCell(cellPosition);\n } else {\n const isMultiKey = ctrlKey || metaKey;\n rangeSvc.setRangeToCell(cellPosition, isMultiKey);\n }\n }\n eventSvc.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, \"cellMouseDown\"));\n }\n isRightClickInExistingRange(mouseEvent) {\n const { rangeSvc } = this.beans;\n if (rangeSvc) {\n const cellInRange = rangeSvc.isCellInAnyRange(this.cellCtrl.cellPosition);\n const isRightClick = mouseEvent.button === 2 || mouseEvent.ctrlKey && this.beans.gos.get(\"allowContextMenuWithControlKey\");\n if (cellInRange && isRightClick) {\n return true;\n }\n }\n return false;\n }\n containsWidget(target) {\n return _isElementChildOfClass(target, \"ag-selection-checkbox\", 3) || _isElementChildOfClass(target, \"ag-drag-handle\", 3);\n }\n onMouseOut(mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n const { eventSvc, colHover } = this.beans;\n eventSvc.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, \"cellMouseOut\"));\n colHover?.clearMouseOver();\n }\n onMouseOver(mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n const { eventSvc, colHover } = this.beans;\n eventSvc.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, \"cellMouseOver\"));\n colHover?.setMouseOver([this.column]);\n }\n mouseStayingInsideCell(e) {\n if (!e.target || !e.relatedTarget) {\n return false;\n }\n const eCell = this.cellCtrl.eGui;\n const cellContainsTarget = eCell.contains(e.target);\n const cellContainsRelatedTarget = eCell.contains(e.relatedTarget);\n return cellContainsTarget && cellContainsRelatedTarget;\n }\n destroy() {\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellPositionFeature.ts\nvar CellPositionFeature = class extends BeanStub {\n constructor(cellCtrl, beans) {\n super();\n this.cellCtrl = cellCtrl;\n this.beans = beans;\n this.column = cellCtrl.column;\n this.rowNode = cellCtrl.rowNode;\n }\n setupRowSpan() {\n this.rowSpan = this.column.getRowSpan(this.rowNode);\n this.addManagedListeners(this.beans.eventSvc, { newColumnsLoaded: () => this.onNewColumnsLoaded() });\n }\n init() {\n this.eSetLeft = this.cellCtrl.getRootElement();\n this.eContent = this.cellCtrl.eGui;\n const cellSpan = this.cellCtrl.getCellSpan();\n if (!cellSpan) {\n this.setupColSpan();\n this.setupRowSpan();\n }\n this.onLeftChanged();\n this.onWidthChanged();\n if (!cellSpan) {\n this._legacyApplyRowSpan();\n }\n if (cellSpan) {\n this.refreshSpanHeight(cellSpan);\n this.addManagedListeners(this.beans.eventSvc, {\n paginationChanged: this.refreshSpanHeight.bind(this, cellSpan),\n recalculateRowBounds: this.refreshSpanHeight.bind(this, cellSpan)\n });\n }\n }\n refreshSpanHeight(cellSpan) {\n const spanHeight = cellSpan.getCellHeight();\n if (spanHeight != null) {\n this.eContent.style.height = `${spanHeight}px`;\n }\n }\n onNewColumnsLoaded() {\n const rowSpan = this.column.getRowSpan(this.rowNode);\n if (this.rowSpan === rowSpan) {\n return;\n }\n this.rowSpan = rowSpan;\n this._legacyApplyRowSpan(true);\n }\n onDisplayColumnsChanged() {\n const colsSpanning = this.getColSpanningList();\n if (!_areEqual(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged();\n }\n }\n setupColSpan() {\n if (this.column.getColDef().colSpan == null) {\n return;\n }\n this.colsSpanning = this.getColSpanningList();\n this.addManagedListeners(this.beans.eventSvc, {\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n displayedColumnsChanged: this.onDisplayColumnsChanged.bind(this),\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n displayedColumnsWidthChanged: this.onWidthChanged.bind(this)\n });\n }\n onWidthChanged() {\n if (!this.eContent) {\n return;\n }\n const width = this.getCellWidth();\n this.eContent.style.width = `${width}px`;\n }\n getCellWidth() {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n return this.colsSpanning.reduce((width, col) => width + col.getActualWidth(), 0);\n }\n getColSpanningList() {\n const { column, rowNode } = this;\n const colSpan = column.getColSpan(rowNode);\n const colsSpanning = [];\n if (colSpan === 1) {\n colsSpanning.push(column);\n } else {\n let pointer = column;\n const pinned = column.getPinned();\n for (let i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.visibleCols.getColAfter(pointer);\n if (!pointer || _missing(pointer)) {\n break;\n }\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n }\n onLeftChanged() {\n if (!this.eSetLeft) {\n return;\n }\n const left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.eSetLeft.style.left = left + \"px\";\n }\n getCellLeft() {\n let mostLeftCol;\n if (this.beans.gos.get(\"enableRtl\") && this.colsSpanning) {\n mostLeftCol = _last(this.colsSpanning);\n } else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n }\n modifyLeftForPrintLayout(leftPosition) {\n if (!this.cellCtrl.printLayout || this.column.getPinned() === \"left\") {\n return leftPosition;\n }\n const { visibleCols } = this.beans;\n const leftWidth = visibleCols.getColsLeftWidth();\n if (this.column.getPinned() === \"right\") {\n const bodyWidth = visibleCols.bodyWidth;\n return leftWidth + bodyWidth + (leftPosition || 0);\n }\n return leftWidth + (leftPosition || 0);\n }\n _legacyApplyRowSpan(force) {\n if (this.rowSpan === 1 && !force) {\n return;\n }\n const singleRowHeight = _getRowHeightAsNumber(this.beans);\n const totalRowHeight = singleRowHeight * this.rowSpan;\n this.eContent.style.height = `${totalRowHeight}px`;\n this.eContent.style.zIndex = \"1\";\n }\n // overriding to make public, as we don't dispose this bean via context\n destroy() {\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellCtrl.ts\nvar CSS_CELL = \"ag-cell\";\nvar CSS_AUTO_HEIGHT = \"ag-cell-auto-height\";\nvar CSS_NORMAL_HEIGHT = \"ag-cell-normal-height\";\nvar CSS_CELL_FOCUS = \"ag-cell-focus\";\nvar CSS_CELL_FIRST_RIGHT_PINNED = \"ag-cell-first-right-pinned\";\nvar CSS_CELL_LAST_LEFT_PINNED = \"ag-cell-last-left-pinned\";\nvar CSS_CELL_NOT_INLINE_EDITING = \"ag-cell-not-inline-editing\";\nvar CSS_CELL_WRAP_TEXT = \"ag-cell-wrap-text\";\nvar DOM_DATA_KEY_CELL_CTRL = \"cellCtrl\";\nfunction _getCellCtrlForEventTarget(gos, eventTarget) {\n return _getCtrlForEventTarget(gos, eventTarget, DOM_DATA_KEY_CELL_CTRL);\n}\nvar instanceIdSequence2 = 0;\nvar CellCtrl = class extends BeanStub {\n constructor(column, rowNode, beans, rowCtrl) {\n super();\n this.column = column;\n this.rowNode = rowNode;\n this.rowCtrl = rowCtrl;\n this.rangeFeature = void 0;\n this.positionFeature = void 0;\n this.customStyleFeature = void 0;\n this.tooltipFeature = void 0;\n this.mouseListener = void 0;\n this.keyboardListener = void 0;\n this.suppressRefreshCell = false;\n this.onCompAttachedFuncs = [];\n this.onEditorAttachedFuncs = [];\n this.focusEventWhileNotReady = null;\n // if cell has been focused, check if it's focused when destroyed\n this.hasBeenFocused = false;\n this.beans = beans;\n const { colId, colIdSanitised } = column;\n this.instanceId = colId + \"-\" + instanceIdSequence2++;\n this.colIdSanitised = colIdSanitised;\n this.createCellPosition();\n this.updateAndFormatValue(false);\n }\n addFeatures() {\n const { beans } = this;\n this.positionFeature = new CellPositionFeature(this, beans);\n this.customStyleFeature = beans.cellStyles?.createCellCustomStyleFeature(this, beans);\n this.mouseListener = new CellMouseListenerFeature(this, beans, this.column);\n this.keyboardListener = new CellKeyboardListenerFeature(this, beans, this.rowNode, this.rowCtrl);\n if (this.column.isTooltipEnabled()) {\n this.enableTooltipFeature();\n }\n const { rangeSvc } = beans;\n const cellSelectionEnabled = rangeSvc && _isCellSelectionEnabled(beans.gos);\n if (cellSelectionEnabled) {\n this.rangeFeature = rangeSvc.createCellRangeFeature(beans, this);\n }\n }\n isCellSpanning() {\n return false;\n }\n getCellSpan() {\n return void 0;\n }\n removeFeatures() {\n const context = this.beans.context;\n this.positionFeature = context.destroyBean(this.positionFeature);\n this.customStyleFeature = context.destroyBean(this.customStyleFeature);\n this.mouseListener = context.destroyBean(this.mouseListener);\n this.keyboardListener = context.destroyBean(this.keyboardListener);\n this.rangeFeature = context.destroyBean(this.rangeFeature);\n this.disableTooltipFeature();\n }\n enableTooltipFeature(value, shouldDisplayTooltip) {\n this.tooltipFeature = this.beans.tooltipSvc?.enableCellTooltipFeature(this, value, shouldDisplayTooltip);\n }\n disableTooltipFeature() {\n this.tooltipFeature = this.beans.context.destroyBean(this.tooltipFeature);\n }\n setComp(comp, eCell, _eWrapper, eCellWrapper, printLayout, startEditing, compBean) {\n this.comp = comp;\n this.eGui = eCell;\n this.printLayout = printLayout;\n compBean ?? (compBean = this);\n this.addDomData(compBean);\n this.addFeatures();\n compBean.addDestroyFunc(() => this.removeFeatures());\n this.onSuppressCellFocusChanged(this.beans.gos.get(\"suppressCellFocus\"));\n this.setupFocus();\n this.applyStaticCssClasses();\n this.setWrapText();\n this.onFirstRightPinnedChanged();\n this.onLastLeftPinnedChanged();\n this.onColumnHover();\n this.setupControlComps();\n this.setupAutoHeight(eCellWrapper, compBean);\n this.refreshFirstAndLastStyles();\n this.refreshAriaColIndex();\n this.positionFeature?.init();\n this.customStyleFeature?.setComp(comp);\n this.tooltipFeature?.refreshTooltip();\n this.keyboardListener?.init();\n this.rangeFeature?.setComp(comp);\n if (startEditing && this.isCellEditable()) {\n this.beans.editSvc?.startEditing(this);\n } else {\n this.showValue(false, true);\n }\n if (this.onCompAttachedFuncs.length) {\n this.onCompAttachedFuncs.forEach((func) => func());\n this.onCompAttachedFuncs = [];\n }\n }\n setupAutoHeight(eCellWrapper, compBean) {\n this.isAutoHeight = this.beans.rowAutoHeight?.setupCellAutoHeight(this, eCellWrapper, compBean) ?? false;\n }\n getCellAriaRole() {\n return this.column.getColDef().cellAriaRole ?? \"gridcell\";\n }\n isCellRenderer() {\n const colDef = this.column.getColDef();\n return colDef.cellRenderer != null || colDef.cellRendererSelector != null;\n }\n getValueToDisplay() {\n return this.valueFormatted ?? this.value;\n }\n showValue(forceNewCellRendererInstance, skipRangeHandleRefresh) {\n const { beans, column, rowNode, rangeFeature } = this;\n const { userCompFactory } = beans;\n const valueToDisplay = this.getValueToDisplay();\n let compDetails;\n const isSsrmLoading = rowNode.stub && rowNode.groupData?.[column.getId()] == null;\n const colDef = column.getColDef();\n if (isSsrmLoading || this.isCellRenderer()) {\n const params = this.createCellRendererParams();\n if (!isSsrmLoading || isRowNumberCol(column)) {\n compDetails = _getCellRendererDetails(userCompFactory, colDef, params);\n } else {\n compDetails = _getLoadingCellRendererDetails(userCompFactory, colDef, params);\n }\n }\n if (!compDetails && !isSsrmLoading && beans.findSvc?.isMatch(rowNode, column)) {\n const params = this.createCellRendererParams();\n compDetails = _getCellRendererDetails(\n userCompFactory,\n { ...column.getColDef(), cellRenderer: \"agFindCellRenderer\" },\n params\n );\n }\n this.comp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);\n if (!skipRangeHandleRefresh && rangeFeature) {\n _requestAnimationFrame(beans, () => rangeFeature?.refreshHandle());\n }\n }\n setupControlComps() {\n const colDef = this.column.getColDef();\n this.includeSelection = this.isIncludeControl(this.isCheckboxSelection(colDef));\n this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);\n this.includeDndSource = this.isIncludeControl(colDef.dndSource);\n this.comp.setIncludeSelection(this.includeSelection);\n this.comp.setIncludeDndSource(this.includeDndSource);\n this.comp.setIncludeRowDrag(this.includeRowDrag);\n }\n isForceWrapper() {\n const forceWrapper = this.beans.gos.get(\"enableCellTextSelection\") || this.column.isAutoHeight();\n return forceWrapper;\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n isIncludeControl(value) {\n const rowNodePinned = this.rowNode.rowPinned != null;\n const isFunc = typeof value === \"function\";\n const res = rowNodePinned ? false : isFunc || value === true;\n return res;\n }\n isCheckboxSelection(colDef) {\n const { rowSelection, groupDisplayType } = this.beans.gridOptions;\n const checkboxLocation = _getCheckboxLocation(rowSelection);\n const isSelectionColumn = isColumnSelectionCol(this.column);\n if (groupDisplayType === \"custom\" && checkboxLocation !== \"selectionColumn\" && isSelectionColumn) {\n return false;\n }\n return colDef.checkboxSelection || isSelectionColumn && typeof rowSelection === \"object\" && _getCheckboxes(rowSelection);\n }\n refreshShouldDestroy() {\n const colDef = this.column.getColDef();\n const selectionChanged = this.includeSelection != this.isIncludeControl(this.isCheckboxSelection(colDef));\n const rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);\n const dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);\n const autoHeightChanged = this.isAutoHeight != this.column.isAutoHeight();\n return selectionChanged || rowDragChanged || dndSourceChanged || autoHeightChanged;\n }\n onPopupEditorClosed() {\n if (!this.editing) {\n return;\n }\n this.beans.editSvc?.stopRowOrCellEdit(this);\n }\n /**\n * Ends the Cell Editing\n * @param cancel `True` if the edit process is being canceled.\n * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.\n */\n stopEditing(cancel = false) {\n return this.beans.editSvc?.stopEditing(this, cancel) ?? false;\n }\n createCellRendererParams() {\n const {\n value,\n valueFormatted,\n column,\n rowNode,\n comp,\n eGui,\n beans: { valueSvc, gos }\n } = this;\n const res = _addGridCommonParams(gos, {\n value,\n valueFormatted,\n getValue: () => valueSvc.getValueForDisplay(column, rowNode),\n setValue: (value2) => valueSvc.setValue(rowNode, column, value2),\n formatValue: this.formatValue.bind(this),\n data: rowNode.data,\n node: rowNode,\n pinned: column.getPinned(),\n colDef: column.getColDef(),\n column,\n refreshCell: this.refreshCell.bind(this),\n eGridCell: eGui,\n eParentOfValue: comp.getParentOfValue(),\n registerRowDragger: (rowDraggerElement, dragStartPixels, value2, suppressVisibilityChange) => this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange),\n setTooltip: (value2, shouldDisplayTooltip) => {\n gos.assertModuleRegistered(\"Tooltip\", 3);\n if (this.tooltipFeature) {\n this.disableTooltipFeature();\n }\n this.enableTooltipFeature(value2, shouldDisplayTooltip);\n this.tooltipFeature?.refreshTooltip();\n }\n });\n return res;\n }\n onCellChanged(event) {\n const eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n }\n refreshOrDestroyCell(params) {\n if (this.refreshShouldDestroy()) {\n this.rowCtrl?.recreateCell(this);\n } else {\n this.refreshCell(params);\n }\n }\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowCtrl: event dataChanged {suppressFlash: !update, newData: !update}\n // + rowCtrl: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n refreshCell(params) {\n if (this.suppressRefreshCell || this.editing) {\n return;\n }\n const colDef = this.column.getColDef();\n const newData = params != null && !!params.newData;\n const suppressFlash = params != null && !!params.suppressFlash;\n const noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;\n const forceRefresh = params && params.forceRefresh || noValueProvided || newData;\n const isCellCompReady = !!this.comp;\n const valuesDifferent = this.updateAndFormatValue(isCellCompReady);\n const dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (!isCellCompReady) {\n return;\n }\n if (dataNeedsUpdating) {\n this.showValue(newData, false);\n const processingFilterChange = this.beans.filterManager?.isSuppressFlashingCellsBecauseFiltering();\n const flashCell = !suppressFlash && !processingFilterChange && colDef.enableCellChangeFlash;\n if (flashCell) {\n this.beans.cellFlashSvc?.flashCell(this);\n }\n this.customStyleFeature?.applyUserStyles();\n this.customStyleFeature?.applyClassesFromColDef();\n }\n this.tooltipFeature?.refreshTooltip();\n this.customStyleFeature?.applyCellClassRules();\n }\n isCellEditable() {\n return this.column.isCellEditable(this.rowNode);\n }\n formatValue(value) {\n return this.callValueFormatter(value) ?? value;\n }\n callValueFormatter(value) {\n return this.beans.valueSvc.formatValue(this.column, this.rowNode, value);\n }\n updateAndFormatValue(compareValues) {\n const oldValue = this.value;\n const oldValueFormatted = this.valueFormatted;\n this.value = this.beans.valueSvc.getValueForDisplay(this.column, this.rowNode);\n this.valueFormatted = this.callValueFormatter(this.value);\n if (compareValues) {\n return !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;\n }\n return true;\n }\n valuesAreEqual(val1, val2) {\n const colDef = this.column.getColDef();\n return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;\n }\n addDomData(compBean) {\n const element = this.eGui;\n _setDomData(this.beans.gos, element, DOM_DATA_KEY_CELL_CTRL, this);\n compBean.addDestroyFunc(() => _setDomData(this.beans.gos, element, DOM_DATA_KEY_CELL_CTRL, null));\n }\n createEvent(domEvent, eventType) {\n const { rowNode, column, value, beans } = this;\n const event = _addGridCommonParams(beans.gos, {\n type: eventType,\n node: rowNode,\n data: rowNode.data,\n value,\n column,\n colDef: column.getColDef(),\n rowPinned: rowNode.rowPinned,\n event: domEvent,\n rowIndex: rowNode.rowIndex\n });\n return event;\n }\n processCharacter(event) {\n this.keyboardListener?.processCharacter(event);\n }\n onKeyDown(event) {\n this.keyboardListener?.onKeyDown(event);\n }\n onMouseEvent(eventName, mouseEvent) {\n this.mouseListener?.onMouseEvent(eventName, mouseEvent);\n }\n getColSpanningList() {\n return this.positionFeature.getColSpanningList();\n }\n onLeftChanged() {\n if (!this.comp) {\n return;\n }\n this.positionFeature?.onLeftChanged();\n }\n onDisplayedColumnsChanged() {\n if (!this.eGui) {\n return;\n }\n this.refreshAriaColIndex();\n this.refreshFirstAndLastStyles();\n }\n refreshFirstAndLastStyles() {\n const { comp, column, beans } = this;\n refreshFirstAndLastStyles(comp, column, beans.visibleCols);\n }\n refreshAriaColIndex() {\n const colIdx = this.beans.visibleCols.getAriaColIndex(this.column);\n _setAriaColIndex(this.eGui, colIdx);\n }\n onWidthChanged() {\n return this.positionFeature?.onWidthChanged();\n }\n getRowPosition() {\n const { rowIndex, rowPinned } = this.cellPosition;\n return {\n rowIndex,\n rowPinned\n };\n }\n updateRangeBordersIfRangeCount() {\n if (!this.comp) {\n return;\n }\n this.rangeFeature?.updateRangeBordersIfRangeCount();\n }\n onCellSelectionChanged() {\n if (!this.comp) {\n return;\n }\n this.rangeFeature?.onCellSelectionChanged();\n }\n isRangeSelectionEnabled() {\n return this.rangeFeature != null;\n }\n focusCell(forceBrowserFocus = false) {\n this.beans.focusSvc.setFocusedCell({\n ...this.getFocusedCellPosition(),\n forceBrowserFocus\n });\n }\n /**\n * Restores focus to the cell, if it should have it\n * @param waitForRender if the cell has just setComp, it may not be rendered yet, so we wait for the next render\n */\n restoreFocus(waitForRender = false) {\n if (!this.comp || this.editing || !this.isCellFocused() || !this.beans.focusSvc.shouldTakeFocus()) {\n return;\n }\n const focus = () => {\n if (!this.isAlive()) {\n return;\n }\n const focusableElement = this.comp.getFocusableElement();\n if (this.isCellFocused()) {\n focusableElement.focus({ preventScroll: true });\n }\n };\n if (waitForRender) {\n setTimeout(focus, 0);\n return;\n }\n focus();\n }\n onRowIndexChanged() {\n this.createCellPosition();\n this.onCellFocused();\n this.restoreFocus();\n this.rangeFeature?.onCellSelectionChanged();\n }\n onSuppressCellFocusChanged(suppressCellFocus) {\n const element = this.eGui;\n if (!element) {\n return;\n }\n if (isRowNumberCol(this.column)) {\n suppressCellFocus = true;\n }\n _addOrRemoveAttribute(element, \"tabindex\", suppressCellFocus ? void 0 : -1);\n }\n onFirstRightPinnedChanged() {\n if (!this.comp) {\n return;\n }\n const firstRightPinned = this.column.isFirstRightPinned();\n this.comp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);\n }\n onLastLeftPinnedChanged() {\n if (!this.comp) {\n return;\n }\n const lastLeftPinned = this.column.isLastLeftPinned();\n this.comp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);\n }\n /**\n * Returns whether cell is focused by the focusSvc, overridden by spannedCellCtrl\n */\n checkCellFocused() {\n return this.beans.focusSvc.isCellFocused(this.cellPosition);\n }\n isCellFocused() {\n const isFocused = this.checkCellFocused();\n this.hasBeenFocused || (this.hasBeenFocused = isFocused);\n return isFocused;\n }\n setupFocus() {\n this.restoreFocus(true);\n this.onCellFocused(this.focusEventWhileNotReady ?? void 0);\n }\n onCellFocused(event) {\n const { beans } = this;\n if (_isCellFocusSuppressed(beans)) {\n return;\n }\n if (!this.comp) {\n if (event) {\n this.focusEventWhileNotReady = event;\n }\n return;\n }\n const cellFocused = this.isCellFocused();\n this.comp.addOrRemoveCssClass(CSS_CELL_FOCUS, cellFocused);\n if (cellFocused && event && event.forceBrowserFocus) {\n let focusEl = this.comp.getFocusableElement();\n if (this.editing) {\n const focusableEls = _findFocusableElements(focusEl, null, true);\n if (focusableEls.length) {\n focusEl = focusableEls[0];\n }\n }\n focusEl.focus({ preventScroll: !!event.preventScrollOnBrowserFocus });\n }\n const fullRowEdit = beans.gos.get(\"editType\") === \"fullRow\";\n if (!cellFocused && !fullRowEdit && this.editing) {\n beans.editSvc?.stopRowOrCellEdit(this);\n }\n if (cellFocused) {\n this.rowCtrl.announceDescription();\n }\n }\n createCellPosition() {\n const { rowIndex, rowPinned } = this.rowNode;\n this.cellPosition = {\n rowIndex,\n rowPinned: _makeNull(rowPinned),\n column: this.column\n };\n }\n setInlineEditingCss() {\n this.beans.editSvc?.setInlineEditingCss(this.rowCtrl);\n }\n // CSS Classes that only get applied once, they never change\n applyStaticCssClasses() {\n const { comp } = this;\n comp.addOrRemoveCssClass(CSS_CELL, true);\n comp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, true);\n const autoHeight = this.column.isAutoHeight() == true;\n comp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);\n comp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);\n }\n onColumnHover() {\n this.beans.colHover?.onCellColumnHover(this.column, this.comp);\n }\n onColDefChanged() {\n if (!this.comp) {\n return;\n }\n if (this.column.isTooltipEnabled()) {\n this.disableTooltipFeature();\n this.enableTooltipFeature();\n } else {\n this.disableTooltipFeature();\n }\n this.setWrapText();\n if (!this.editing) {\n this.refreshOrDestroyCell({ forceRefresh: true, suppressFlash: true });\n } else {\n this.beans.editSvc?.handleColDefChanged(this);\n }\n }\n setWrapText() {\n const value = this.column.getColDef().wrapText == true;\n this.comp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);\n }\n dispatchCellContextMenuEvent(event) {\n const colDef = this.column.getColDef();\n const cellContextMenuEvent = this.createEvent(event, \"cellContextMenu\");\n const { beans } = this;\n beans.eventSvc.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n window.setTimeout(() => {\n beans.frameworkOverrides.wrapOutgoing(() => {\n colDef.onCellContextMenu(cellContextMenuEvent);\n });\n }, 0);\n }\n }\n getCellRenderer() {\n return this.comp?.getCellRenderer() ?? null;\n }\n destroy() {\n this.onCompAttachedFuncs = [];\n this.onEditorAttachedFuncs = [];\n if (this.isCellFocused() && this.hasBrowserFocus()) {\n this.beans.focusSvc.attemptToRecoverFocus();\n }\n super.destroy();\n }\n hasBrowserFocus() {\n return this.eGui?.contains(_getActiveDomElement(this.beans)) ?? false;\n }\n createSelectionCheckbox() {\n const cbSelectionComponent = this.beans.selectionSvc?.createCheckboxSelectionComponent();\n if (!cbSelectionComponent) {\n return void 0;\n }\n this.beans.context.createBean(cbSelectionComponent);\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });\n return cbSelectionComponent;\n }\n createDndSource() {\n const dndSourceComp = this.beans.registry.createDynamicBean(\n \"dndSourceComp\",\n false,\n this.rowNode,\n this.column,\n this.eGui\n );\n if (dndSourceComp) {\n this.beans.context.createBean(dndSourceComp);\n }\n return dndSourceComp;\n }\n registerRowDragger(customElement, dragStartPixels, suppressVisibilityChange) {\n if (this.customRowDragComp) {\n this.customRowDragComp.setDragElement(customElement, dragStartPixels);\n return;\n }\n const newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);\n if (newComp) {\n this.customRowDragComp = newComp;\n this.addDestroyFunc(() => {\n this.beans.context.destroyBean(newComp);\n this.customRowDragComp = null;\n });\n }\n }\n createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange) {\n const rowDragComp = this.beans.rowDragSvc?.createRowDragCompForCell(\n this.rowNode,\n this.column,\n () => this.value,\n customElement,\n dragStartPixels,\n suppressVisibilityChange\n );\n if (!rowDragComp) {\n return void 0;\n }\n this.beans.context.createBean(rowDragComp);\n return rowDragComp;\n }\n cellEditorAttached() {\n this.onEditorAttachedFuncs.forEach((func) => func());\n this.onEditorAttachedFuncs = [];\n }\n setFocusedCellPosition(_cellPosition) {\n }\n getFocusedCellPosition() {\n return this.cellPosition;\n }\n // used by spannedCellCtrl\n refreshAriaRowIndex() {\n }\n /**\n * Returns the root element of the cell, could be a span container rather than the cell element.\n * @returns The root element of the cell.\n */\n getRootElement() {\n return this.eGui;\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/mouseEventUtils.ts\nvar GRID_DOM_KEY = \"__ag_grid_instance\";\nfunction _stampTopLevelGridCompWithGridInstance(gos, eGridDiv) {\n eGridDiv[GRID_DOM_KEY] = gos.gridInstanceId;\n}\nfunction _isEventFromThisGrid(gos, event) {\n const res = _isElementInThisGrid(gos, event.target);\n return res;\n}\nfunction _isElementInThisGrid(gos, element) {\n let pointer = element;\n while (pointer) {\n const instanceId = pointer[GRID_DOM_KEY];\n if (_exists(instanceId)) {\n const eventFromThisGrid = instanceId === gos.gridInstanceId;\n return eventFromThisGrid;\n }\n pointer = pointer.parentElement;\n }\n return false;\n}\nfunction _getCellPositionForEvent(gos, event) {\n return _getCellCtrlForEventTarget(gos, event.target)?.getFocusedCellPosition() ?? null;\n}\nfunction _getNormalisedMousePosition(beans, event) {\n const gridPanelHasScrolls = _isDomLayout(beans.gos, \"normal\");\n const e = event;\n let x;\n let y;\n if (e.clientX != null || e.clientY != null) {\n x = e.clientX;\n y = e.clientY;\n } else {\n x = e.x;\n y = e.y;\n }\n if (gridPanelHasScrolls) {\n const scrollFeature = beans.ctrlsSvc.getScrollFeature();\n const vRange = scrollFeature.getVScrollPosition();\n const hRange = scrollFeature.getHScrollPosition();\n x += hRange.left;\n y += vRange.top;\n }\n return { x, y };\n}\n\n// packages/ag-grid-community/src/dragAndDrop/dragAndDropService.ts\nvar DragSourceType = /* @__PURE__ */ ((DragSourceType2) => {\n DragSourceType2[DragSourceType2[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType2[DragSourceType2[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType2[DragSourceType2[\"RowDrag\"] = 2] = \"RowDrag\";\n DragSourceType2[DragSourceType2[\"ChartPanel\"] = 3] = \"ChartPanel\";\n DragSourceType2[DragSourceType2[\"AdvancedFilterBuilder\"] = 4] = \"AdvancedFilterBuilder\";\n return DragSourceType2;\n})(DragSourceType || {});\nvar DragAndDropService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"dragAndDrop\";\n this.dragSourceAndParamsList = [];\n this.dropTargets = [];\n }\n wireBeans(beans) {\n this.ctrlsSvc = beans.ctrlsSvc;\n this.dragSvc = beans.dragSvc;\n this.environment = beans.environment;\n this.userCompFactory = beans.userCompFactory;\n }\n addDragSource(dragSource, allowTouch = false) {\n const params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this),\n onDragCancel: this.onDragCancel.bind(this),\n includeTouch: allowTouch\n };\n this.dragSourceAndParamsList.push({ params, dragSource });\n this.dragSvc.addDragSource(params);\n }\n getDragAndDropImageComponent() {\n const { dragAndDropImageComp } = this;\n if (!dragAndDropImageComp || !dragAndDropImageComp.comp) {\n return null;\n }\n return dragAndDropImageComp.comp;\n }\n removeDragSource(dragSource) {\n const { dragSourceAndParamsList, dragSvc } = this;\n const sourceAndParams = dragSourceAndParamsList.find((item) => item.dragSource === dragSource);\n if (sourceAndParams) {\n dragSvc.removeDragSource(sourceAndParams.params);\n _removeFromArray(dragSourceAndParamsList, sourceAndParams);\n }\n }\n destroy() {\n const { dragSourceAndParamsList, dragSvc, dropTargets } = this;\n dragSourceAndParamsList.forEach((sourceAndParams) => dragSvc.removeDragSource(sourceAndParams.params));\n dragSourceAndParamsList.length = 0;\n dropTargets.length = 0;\n this.clearDragAndDropProperties();\n super.destroy();\n }\n nudge() {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n }\n onDragStart(dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = dragSource.getDragItem();\n dragSource.onDragStarted?.();\n this.createDragAndDropImageComponent();\n }\n onDragStop(mouseEvent) {\n this.dragSource?.onDragStopped?.();\n const { lastDropTarget } = this;\n if (lastDropTarget?.onDragStop) {\n const draggingEvent = this.createDropTargetEvent(lastDropTarget, mouseEvent, null, null, false);\n lastDropTarget.onDragStop(draggingEvent);\n }\n this.clearDragAndDropProperties();\n }\n onDragCancel() {\n const { dragSource, lastDropTarget } = this;\n dragSource?.onDragCancelled?.();\n if (lastDropTarget?.onDragCancel) {\n lastDropTarget.onDragCancel(\n this.createDropTargetEvent(lastDropTarget, this.eventLastTime, null, null, false)\n );\n }\n this.clearDragAndDropProperties();\n }\n clearDragAndDropProperties() {\n this.eventLastTime = null;\n this.dragging = false;\n this.lastDropTarget = void 0;\n this.dragItem = null;\n this.dragSource = null;\n this.removeDragAndDropImageComponent();\n }\n onDragging(mouseEvent, fromNudge = false) {\n const hDirection = this.getHorizontalDirection(mouseEvent);\n const vDirection = this.getVerticalDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionDragAndDropImageComp(mouseEvent);\n const validDropTargets = this.dropTargets.filter((target) => this.isMouseOnDropTarget(mouseEvent, target));\n const dropTarget = this.findCurrentDropTarget(mouseEvent, validDropTargets);\n const { lastDropTarget, dragSource, dragAndDropImageComp, dragItem } = this;\n if (dropTarget !== lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n if (lastDropTarget !== null && dropTarget === null) {\n dragSource?.onGridExit?.(dragItem);\n }\n if (lastDropTarget === null && dropTarget !== null) {\n dragSource?.onGridEnter?.(dragItem);\n }\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n if (dropTarget && dragAndDropImageComp) {\n const { comp, promise } = dragAndDropImageComp;\n if (comp) {\n comp.setIcon(dropTarget.getIconName ? dropTarget.getIconName() : null, false);\n } else {\n promise.then((resolvedComponent) => {\n if (resolvedComponent) {\n resolvedComponent.setIcon(dropTarget.getIconName ? dropTarget.getIconName() : null, false);\n }\n });\n }\n }\n this.lastDropTarget = dropTarget;\n } else if (dropTarget && dropTarget.onDragging) {\n const draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n }\n getAllContainersFromDropTarget(dropTarget) {\n const secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n const containers = [[dropTarget.getContainer()]];\n return secondaryContainers ? containers.concat(secondaryContainers) : containers;\n }\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n isMouseOnDropTarget(mouseEvent, dropTarget) {\n const allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);\n let mouseOverTarget = false;\n const allContainersIntersect = (mouseEvent2, containers) => {\n for (const container of containers) {\n const { width, height, left, right, top, bottom } = container.getBoundingClientRect();\n if (width === 0 || height === 0) {\n return false;\n }\n const horizontalFit = mouseEvent2.clientX >= left && mouseEvent2.clientX < right;\n const verticalFit = mouseEvent2.clientY >= top && mouseEvent2.clientY < bottom;\n if (!horizontalFit || !verticalFit) {\n return false;\n }\n }\n return true;\n };\n for (const currentContainers of allContainersFromDropTarget) {\n if (allContainersIntersect(mouseEvent, currentContainers)) {\n mouseOverTarget = true;\n break;\n }\n }\n const { eElement, type } = this.dragSource;\n if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(eElement)) {\n return false;\n }\n return mouseOverTarget && dropTarget.isInterestedIn(type, eElement);\n }\n findCurrentDropTarget(mouseEvent, validDropTargets) {\n const len = validDropTargets.length;\n if (len === 0) {\n return null;\n }\n if (len === 1) {\n return validDropTargets[0];\n }\n const rootNode = _getRootNode(this.beans);\n const elementStack = rootNode.elementsFromPoint(mouseEvent.clientX, mouseEvent.clientY);\n for (const el of elementStack) {\n for (const dropTarget of validDropTargets) {\n const containers = this.getAllContainersFromDropTarget(dropTarget).flatMap((a) => a);\n if (containers.indexOf(el) !== -1) {\n return dropTarget;\n }\n }\n }\n return null;\n }\n enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n if (dropTarget.onDragEnter) {\n const dragEnterEvent = this.createDropTargetEvent(\n dropTarget,\n mouseEvent,\n hDirection,\n vDirection,\n fromNudge\n );\n dropTarget.onDragEnter(dragEnterEvent);\n }\n }\n leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge) {\n const { lastDropTarget } = this;\n if (!lastDropTarget) {\n return;\n }\n if (lastDropTarget.onDragLeave) {\n const dragLeaveEvent = this.createDropTargetEvent(\n lastDropTarget,\n mouseEvent,\n hDirection,\n vDirection,\n fromNudge\n );\n lastDropTarget.onDragLeave(dragLeaveEvent);\n }\n const dragAndDropImageComponent = this.getDragAndDropImageComponent();\n if (dragAndDropImageComponent) {\n dragAndDropImageComponent.setIcon(null, false);\n }\n }\n addDropTarget(dropTarget) {\n this.dropTargets.push(dropTarget);\n }\n removeDropTarget(dropTarget) {\n this.dropTargets = this.dropTargets.filter((target) => target.getContainer() !== dropTarget.getContainer());\n }\n hasExternalDropZones() {\n return this.dropTargets.some((zones) => zones.external);\n }\n findExternalZone(params) {\n const externalTargets = this.dropTargets.filter((target) => target.external);\n return externalTargets.find((zone) => zone.getContainer() === params.getContainer()) || null;\n }\n isDropZoneWithinThisGrid(draggingEvent) {\n const gridBodyCon = this.ctrlsSvc.getGridBodyCtrl();\n const gridGui = gridBodyCon.eGridBody;\n const { dropZoneTarget } = draggingEvent;\n return gridGui.contains(dropZoneTarget);\n }\n getHorizontalDirection(event) {\n const clientX = this.eventLastTime?.clientX;\n const eClientX = event.clientX;\n if (clientX === eClientX) {\n return null;\n }\n return clientX > eClientX ? \"left\" : \"right\";\n }\n getVerticalDirection(event) {\n const clientY = this.eventLastTime?.clientY;\n const eClientY = event.clientY;\n if (clientY === eClientY) {\n return null;\n }\n return clientY > eClientY ? \"up\" : \"down\";\n }\n createDropTargetEvent(dropTarget, event, hDirection, vDirection, fromNudge) {\n const dropZoneTarget = dropTarget.getContainer();\n const rect = dropZoneTarget.getBoundingClientRect();\n const { dragItem, dragSource, gos } = this;\n const x = event.clientX - rect.left;\n const y = event.clientY - rect.top;\n return _addGridCommonParams(gos, {\n event,\n x,\n y,\n vDirection,\n hDirection,\n dragSource,\n fromNudge,\n dragItem,\n dropZoneTarget\n });\n }\n positionDragAndDropImageComp(event) {\n const dragAndDropImageComponent = this.getDragAndDropImageComponent();\n if (!dragAndDropImageComponent) {\n return;\n }\n _anchorElementToMouseMoveEvent(dragAndDropImageComponent.getGui(), event, this.beans);\n }\n removeDragAndDropImageComponent() {\n const { dragAndDropImageComp } = this;\n if (dragAndDropImageComp) {\n const { comp } = dragAndDropImageComp;\n if (comp) {\n const eGui = comp.getGui();\n this.dragAndDropImageParent?.removeChild(eGui);\n this.destroyBean(comp);\n }\n }\n this.dragAndDropImageComp = null;\n }\n createDragAndDropImageComponent() {\n const { dragSource, gos, userCompFactory } = this;\n if (!dragSource) {\n return;\n }\n const userCompDetails = _getDragAndDropImageCompDetails(\n userCompFactory,\n _addGridCommonParams(gos, {\n dragSource\n })\n );\n if (!userCompDetails) {\n return;\n }\n const promise = userCompDetails.newAgStackInstance();\n this.dragAndDropImageComp = {\n promise\n };\n promise.then((comp) => {\n if (!comp || !this.isAlive()) {\n return;\n }\n this.processDragAndDropImageComponent(comp);\n this.dragAndDropImageComp.comp = comp;\n });\n }\n processDragAndDropImageComponent(dragAndDropImageComponent) {\n const { dragSource, environment } = this;\n if (!dragSource) {\n return;\n }\n const eGui = dragAndDropImageComponent.getGui();\n eGui.style.setProperty(\"position\", \"absolute\");\n eGui.style.setProperty(\"z-index\", \"9999\");\n _stampTopLevelGridCompWithGridInstance(this.gos, eGui);\n environment.applyThemeClasses(eGui);\n dragAndDropImageComponent.setIcon(null, false);\n let { dragItemName } = dragSource;\n if (typeof dragItemName === \"function\") {\n dragItemName = dragItemName();\n }\n dragAndDropImageComponent.setLabel(dragItemName || \"\");\n eGui.style.top = \"20px\";\n eGui.style.left = \"20px\";\n const targetEl = _getPageBody(this.beans);\n this.dragAndDropImageParent = targetEl;\n if (!targetEl) {\n _warn(54);\n } else {\n targetEl.appendChild(eGui);\n }\n }\n registerGridDropTarget(elementFn, ctrl) {\n const dropTarget = {\n getContainer: elementFn,\n isInterestedIn: (type) => type === 1 /* HeaderCell */ || type === 0 /* ToolPanel */,\n getIconName: () => \"notAllowed\"\n };\n this.addDropTarget(dropTarget);\n ctrl.addDestroyFunc(() => this.removeDropTarget(dropTarget));\n }\n};\n\n// packages/ag-grid-community/src/autoScrollService.ts\nvar AutoScrollService = class {\n constructor(params) {\n this.tickingInterval = null;\n this.onScrollCallback = null;\n this.scrollContainer = params.scrollContainer;\n this.scrollHorizontally = params.scrollAxis.indexOf(\"x\") !== -1;\n this.scrollVertically = params.scrollAxis.indexOf(\"y\") !== -1;\n this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;\n if (params.onScrollCallback) {\n this.onScrollCallback = params.onScrollCallback;\n }\n if (this.scrollVertically) {\n this.getVerticalPosition = params.getVerticalPosition;\n this.setVerticalPosition = params.setVerticalPosition;\n }\n if (this.scrollHorizontally) {\n this.getHorizontalPosition = params.getHorizontalPosition;\n this.setHorizontalPosition = params.setHorizontalPosition;\n }\n this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || (() => false);\n this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (() => false);\n }\n check(mouseEvent, forceSkipVerticalScroll = false) {\n const skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();\n if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {\n return;\n }\n const rect = this.scrollContainer.getBoundingClientRect();\n const scrollTick = this.scrollByTick;\n this.tickLeft = mouseEvent.clientX < rect.left + scrollTick;\n this.tickRight = mouseEvent.clientX > rect.right - scrollTick;\n this.tickUp = mouseEvent.clientY < rect.top + scrollTick && !skipVerticalScroll;\n this.tickDown = mouseEvent.clientY > rect.bottom - scrollTick && !skipVerticalScroll;\n if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {\n this.ensureTickingStarted();\n } else {\n this.ensureCleared();\n }\n }\n ensureTickingStarted() {\n if (this.tickingInterval === null) {\n this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n this.tickCount = 0;\n }\n }\n doTick() {\n this.tickCount++;\n const tickAmount = this.tickCount > 20 ? 200 : this.tickCount > 10 ? 80 : 40;\n if (this.scrollVertically) {\n const vScrollPosition = this.getVerticalPosition();\n if (this.tickUp) {\n this.setVerticalPosition(vScrollPosition - tickAmount);\n }\n if (this.tickDown) {\n this.setVerticalPosition(vScrollPosition + tickAmount);\n }\n }\n if (this.scrollHorizontally) {\n const hScrollPosition = this.getHorizontalPosition();\n if (this.tickLeft) {\n this.setHorizontalPosition(hScrollPosition - tickAmount);\n }\n if (this.tickRight) {\n this.setHorizontalPosition(hScrollPosition + tickAmount);\n }\n }\n if (this.onScrollCallback) {\n this.onScrollCallback();\n }\n }\n ensureCleared() {\n if (this.tickingInterval) {\n window.clearInterval(this.tickingInterval);\n this.tickingInterval = null;\n }\n }\n};\n\n// packages/ag-grid-community/src/entities/positionUtils.ts\nfunction _createCellId(cellPosition) {\n const { rowIndex, rowPinned, column } = cellPosition;\n return `${rowIndex}.${rowPinned == null ? \"null\" : rowPinned}.${column.getId()}`;\n}\nfunction _areCellsEqual(cellA, cellB) {\n const colsMatch = cellA.column === cellB.column;\n const floatingMatch = cellA.rowPinned === cellB.rowPinned;\n const indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n}\nfunction _isRowBefore(rowA, rowB) {\n switch (rowA.rowPinned) {\n case \"top\":\n if (rowB.rowPinned !== \"top\") {\n return true;\n }\n break;\n case \"bottom\":\n if (rowB.rowPinned !== \"bottom\") {\n return false;\n }\n break;\n default:\n if (_exists(rowB.rowPinned)) {\n return rowB.rowPinned !== \"top\";\n }\n break;\n }\n return rowA.rowIndex < rowB.rowIndex;\n}\nfunction _isSameRow(rowA, rowB) {\n if (!rowA && !rowB) {\n return true;\n }\n if (rowA && !rowB || !rowA && rowB) {\n return false;\n }\n return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n}\nfunction _getFirstRow(beans) {\n let rowIndex = 0;\n let rowPinned;\n const { pinnedRowModel, rowModel, pageBounds } = beans;\n if (pinnedRowModel?.getPinnedTopRowCount()) {\n rowPinned = \"top\";\n } else if (rowModel.getRowCount()) {\n rowPinned = null;\n rowIndex = pageBounds.getFirstRow();\n } else if (pinnedRowModel?.getPinnedBottomRowCount()) {\n rowPinned = \"bottom\";\n }\n return rowPinned === void 0 ? null : { rowIndex, rowPinned };\n}\nfunction _getLastRow(beans) {\n let rowIndex;\n let rowPinned = null;\n const { pinnedRowModel, pageBounds } = beans;\n const pinnedBottomCount = pinnedRowModel?.getPinnedBottomRowCount();\n const pinnedTopCount = pinnedRowModel?.getPinnedTopRowCount();\n if (pinnedBottomCount) {\n rowPinned = \"bottom\";\n rowIndex = pinnedBottomCount - 1;\n } else if (beans.rowModel.getRowCount()) {\n rowPinned = null;\n rowIndex = pageBounds.getLastRow();\n } else if (pinnedTopCount) {\n rowPinned = \"top\";\n rowIndex = pinnedTopCount - 1;\n }\n return rowIndex === void 0 ? null : { rowIndex, rowPinned };\n}\nfunction _getRowNode(beans, gridRow) {\n switch (gridRow.rowPinned) {\n case \"top\":\n return beans.pinnedRowModel?.getPinnedTopRow(gridRow.rowIndex);\n case \"bottom\":\n return beans.pinnedRowModel?.getPinnedBottomRow(gridRow.rowIndex);\n default:\n return beans.rowModel.getRow(gridRow.rowIndex);\n }\n}\nfunction _getCellByPosition(beans, cellPosition) {\n const spannedCellCtrl = beans.spannedRowRenderer?.getCellByPosition(cellPosition);\n if (spannedCellCtrl) {\n return spannedCellCtrl;\n }\n const rowCtrl = beans.rowRenderer.getRowByPosition(cellPosition);\n if (!rowCtrl) {\n return null;\n }\n return rowCtrl.getCellCtrl(cellPosition.column);\n}\nfunction _getRowAbove(beans, rowPosition) {\n const { rowIndex: index, rowPinned: pinned } = rowPosition;\n const { pageBounds, pinnedRowModel, rowModel } = beans;\n if (index === 0) {\n if (pinned === \"top\") {\n return null;\n }\n if (pinned === \"bottom\" && rowModel.isRowsToRender()) {\n return { rowIndex: pageBounds.getLastRow(), rowPinned: null };\n }\n return pinnedRowModel?.isRowsToRender(\"top\") ? { rowIndex: pinnedRowModel.getPinnedTopRowCount() - 1, rowPinned: \"top\" } : null;\n }\n const rowNode = pinned ? void 0 : rowModel.getRow(index);\n return getNextStickyPosition(beans, rowNode, true) ?? { rowIndex: index - 1, rowPinned: pinned };\n}\nfunction _getRowBelow(beans, rowPosition) {\n const { rowIndex: index, rowPinned: pinned } = rowPosition;\n const { pageBounds, pinnedRowModel, rowModel } = beans;\n if (isLastRowInContainer(beans, rowPosition)) {\n if (pinned === \"bottom\") {\n return null;\n }\n if (pinned === \"top\" && rowModel.isRowsToRender()) {\n return { rowIndex: pageBounds.getFirstRow(), rowPinned: null };\n }\n return pinnedRowModel?.isRowsToRender(\"bottom\") ? { rowIndex: 0, rowPinned: \"bottom\" } : null;\n }\n const rowNode = pinned ? void 0 : rowModel.getRow(index);\n return getNextStickyPosition(beans, rowNode) ?? { rowIndex: index + 1, rowPinned: pinned };\n}\nfunction getNextStickyPosition(beans, rowNode, up) {\n const { gos, rowRenderer } = beans;\n if (!rowNode?.sticky || !_isGroupRowsSticky(gos)) {\n return;\n }\n const stickyRowCtrls = up ? rowRenderer.getStickyTopRowCtrls() : rowRenderer.getStickyBottomRowCtrls();\n let nextCtrl;\n for (let i = 0; i < stickyRowCtrls.length; i++) {\n if (stickyRowCtrls[i].rowNode.rowIndex === rowNode.rowIndex) {\n nextCtrl = stickyRowCtrls[i + (up ? -1 : 1)];\n break;\n }\n }\n return nextCtrl ? { rowIndex: nextCtrl.rowNode.rowIndex, rowPinned: null } : void 0;\n}\nfunction isLastRowInContainer(beans, rowPosition) {\n const { rowPinned, rowIndex } = rowPosition;\n const { pinnedRowModel, pageBounds } = beans;\n if (rowPinned === \"top\") {\n const lastTopIndex = (pinnedRowModel?.getPinnedTopRowCount() ?? 0) - 1;\n return lastTopIndex <= rowIndex;\n }\n if (rowPinned === \"bottom\") {\n const lastBottomIndex = (pinnedRowModel?.getPinnedBottomRowCount() ?? 0) - 1;\n return lastBottomIndex <= rowIndex;\n }\n const lastBodyIndex = pageBounds.getLastRow();\n return lastBodyIndex <= rowIndex;\n}\n\n// packages/ag-grid-community/src/dragAndDrop/rowDragFeature.ts\nvar RowDragFeature = class extends BeanStub {\n constructor(eContainer) {\n super();\n this.eContainer = eContainer;\n }\n postConstruct() {\n const { rowModel, gos, ctrlsSvc } = this.beans;\n if (_isClientSideRowModel(gos, rowModel)) {\n this.clientSideRowModel = rowModel;\n }\n ctrlsSvc.whenReady(this, (p) => {\n const gridBodyCon = p.gridBodyCtrl;\n this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCon.eBodyViewport,\n scrollAxis: \"y\",\n getVerticalPosition: () => gridBodyCon.scrollFeature.getVScrollPosition().top,\n setVerticalPosition: (position) => gridBodyCon.scrollFeature.setVerticalScrollPosition(position),\n onScrollCallback: () => {\n this.onDragging(this.lastDraggingEvent);\n }\n });\n });\n }\n getContainer() {\n return this.eContainer;\n }\n isInterestedIn(type) {\n return type === 2 /* RowDrag */;\n }\n getIconName() {\n const managedDrag = this.gos.get(\"rowDragManaged\");\n if (managedDrag && this.shouldPreventRowMove()) {\n return \"notAllowed\";\n }\n return \"move\";\n }\n shouldPreventRowMove() {\n const { rowGroupColsSvc, filterManager, sortSvc } = this.beans;\n const rowGroupCols = rowGroupColsSvc?.columns ?? [];\n if (rowGroupCols.length) {\n return true;\n }\n const isFilterPresent = filterManager?.isAnyFilterPresent();\n if (isFilterPresent) {\n return true;\n }\n const isSortActive = sortSvc?.isSortActive();\n if (isSortActive) {\n return true;\n }\n return false;\n }\n getRowNodes(draggingEvent) {\n if (!this.isFromThisGrid(draggingEvent)) {\n return draggingEvent.dragItem.rowNodes || [];\n }\n const currentNode = draggingEvent.dragItem.rowNode;\n const isRowDragMultiRow = this.gos.get(\"rowDragMultiRow\");\n if (isRowDragMultiRow) {\n const selectedNodes = [...this.beans.selectionSvc?.getSelectedNodes() ?? []].sort((a, b) => {\n if (a.rowIndex == null || b.rowIndex == null) {\n return 0;\n }\n return this.getRowIndexNumber(a) - this.getRowIndexNumber(b);\n });\n if (selectedNodes.indexOf(currentNode) !== -1) {\n return selectedNodes;\n }\n }\n return [currentNode];\n }\n onDragEnter(draggingEvent) {\n draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);\n this.dispatchGridEvent(\"rowDragEnter\", draggingEvent);\n this.getRowNodes(draggingEvent).forEach((rowNode) => {\n this.setRowNodeDragging(rowNode, true);\n });\n this.onEnterOrDragging(draggingEvent);\n }\n onDragging(draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n }\n isFromThisGrid(draggingEvent) {\n const { dragSourceDomDataKey } = draggingEvent.dragSource;\n return dragSourceDomDataKey === this.gos.getDomDataKey();\n }\n onEnterOrDragging(draggingEvent) {\n this.dispatchGridEvent(\"rowDragMove\", draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n const pixel = _getNormalisedMousePosition(this.beans, draggingEvent).y;\n const managedDrag = this.gos.get(\"rowDragManaged\");\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.autoScrollService.check(draggingEvent.event);\n }\n doManagedDrag(draggingEvent, pixel) {\n const { dragAndDrop, gos } = this.beans;\n const isFromThisGrid = this.isFromThisGrid(draggingEvent);\n const managedDrag = gos.get(\"rowDragManaged\");\n const rowNodes = draggingEvent.dragItem.rowNodes;\n if (managedDrag && this.shouldPreventRowMove()) {\n return;\n }\n if (gos.get(\"suppressMoveWhenRowDragging\") || !isFromThisGrid) {\n if (dragAndDrop.isDropZoneWithinThisGrid(draggingEvent)) {\n this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);\n }\n } else {\n this.moveRows(rowNodes, pixel);\n }\n }\n getRowIndexNumber(rowNode) {\n const rowIndexStr = rowNode.getRowIndexString();\n return parseInt(_last(rowIndexStr.split(\"-\")), 10);\n }\n moveRowAndClearHighlight(draggingEvent) {\n const clientSideRowModel = this.clientSideRowModel;\n const lastHighlightedRowNode = clientSideRowModel.getLastHighlightedRowNode();\n const isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === \"Below\";\n const pixel = _getNormalisedMousePosition(this.beans, draggingEvent).y;\n const rowNodes = draggingEvent.dragItem.rowNodes;\n let increment = isBelow ? 1 : 0;\n if (this.isFromThisGrid(draggingEvent)) {\n rowNodes.forEach((rowNode) => {\n if (rowNode.rowTop < pixel) {\n increment -= 1;\n }\n });\n this.moveRows(rowNodes, pixel, increment);\n } else {\n const getRowIdFunc = _getRowIdCallback(this.gos);\n let addIndex = clientSideRowModel.getRowIndexAtPixel(pixel) + 1;\n if (clientSideRowModel.getHighlightPosition(pixel) === \"Above\") {\n addIndex--;\n }\n clientSideRowModel.updateRowData({\n add: rowNodes.filter(\n (node) => !clientSideRowModel.getRowNode(\n getRowIdFunc?.({ data: node.data, level: 0, rowPinned: node.rowPinned }) ?? node.data.id\n )\n ).map((node) => node.data),\n addIndex\n });\n }\n this.clearRowHighlight();\n }\n clearRowHighlight() {\n this.clientSideRowModel.highlightRowAtPixel(null);\n }\n moveRows(rowNodes, pixel, increment = 0) {\n const focusSvc = this.beans.focusSvc;\n const cellPosition = focusSvc.getFocusedCell();\n const cellCtrl = cellPosition && _getCellByPosition(this.beans, cellPosition);\n const rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);\n if (rowWasMoved) {\n if (cellCtrl) {\n cellCtrl.focusCell();\n } else {\n focusSvc.clearFocusedCell();\n }\n }\n }\n addRowDropZone(params) {\n if (!params.getContainer()) {\n _warn(55);\n return;\n }\n const dragAndDrop = this.beans.dragAndDrop;\n if (dragAndDrop.findExternalZone(params)) {\n _warn(56);\n return;\n }\n let processedParams = {\n getContainer: params.getContainer\n };\n if (params.fromGrid) {\n processedParams = params;\n } else {\n if (params.onDragEnter) {\n processedParams.onDragEnter = (e) => {\n params.onDragEnter(this.draggingToRowDragEvent(\"rowDragEnter\", e));\n };\n }\n if (params.onDragLeave) {\n processedParams.onDragLeave = (e) => {\n params.onDragLeave(this.draggingToRowDragEvent(\"rowDragLeave\", e));\n };\n }\n if (params.onDragging) {\n processedParams.onDragging = (e) => {\n params.onDragging(this.draggingToRowDragEvent(\"rowDragMove\", e));\n };\n }\n if (params.onDragStop) {\n processedParams.onDragStop = (e) => {\n params.onDragStop(this.draggingToRowDragEvent(\"rowDragEnd\", e));\n };\n }\n if (params.onDragCancel) {\n processedParams.onDragCancel = (e) => {\n params.onDragCancel(this.draggingToRowDragEvent(\"rowDragCancel\", e));\n };\n }\n }\n const dropTarget = {\n isInterestedIn: (type) => type === 2 /* RowDrag */,\n getIconName: () => \"move\",\n external: true,\n ...processedParams\n };\n dragAndDrop.addDropTarget(dropTarget);\n this.addDestroyFunc(() => dragAndDrop.removeDropTarget(dropTarget));\n }\n getRowDropZone(events) {\n const getContainer = this.getContainer.bind(this);\n const onDragEnter = this.onDragEnter.bind(this);\n const onDragLeave = this.onDragLeave.bind(this);\n const onDragging = this.onDragging.bind(this);\n const onDragStop = this.onDragStop.bind(this);\n const onDragCancel = this.onDragCancel.bind(this);\n let params;\n if (!events) {\n params = {\n getContainer,\n onDragEnter,\n onDragLeave,\n onDragging,\n onDragStop,\n onDragCancel,\n /* @private */\n fromGrid: true\n };\n } else {\n params = {\n getContainer,\n onDragEnter: events.onDragEnter ? (e) => {\n onDragEnter(e);\n events.onDragEnter(this.draggingToRowDragEvent(\"rowDragEnter\", e));\n } : onDragEnter,\n onDragLeave: events.onDragLeave ? (e) => {\n onDragLeave(e);\n events.onDragLeave(this.draggingToRowDragEvent(\"rowDragLeave\", e));\n } : onDragLeave,\n onDragging: events.onDragging ? (e) => {\n onDragging(e);\n events.onDragging(this.draggingToRowDragEvent(\"rowDragMove\", e));\n } : onDragging,\n onDragStop: events.onDragStop ? (e) => {\n onDragStop(e);\n events.onDragStop(this.draggingToRowDragEvent(\"rowDragEnd\", e));\n } : onDragStop,\n onDragCancel: events.onDragCancel ? (e) => {\n onDragCancel(e);\n events.onDragCancel(this.draggingToRowDragEvent(\"rowDragCancel\", e));\n } : onDragCancel,\n fromGrid: true\n };\n }\n return params;\n }\n draggingToRowDragEvent(type, draggingEvent) {\n const beans = this.beans;\n const { pageBounds, rowModel, gos } = beans;\n const yNormalised = _getNormalisedMousePosition(beans, draggingEvent).y;\n const mouseIsPastLastRow = yNormalised > pageBounds.getCurrentPageHeight();\n let overIndex = -1;\n let overNode;\n if (!mouseIsPastLastRow) {\n overIndex = rowModel.getRowIndexAtPixel(yNormalised);\n overNode = rowModel.getRow(overIndex);\n }\n const event = _addGridCommonParams(gos, {\n type,\n event: draggingEvent.event,\n node: draggingEvent.dragItem.rowNode,\n nodes: draggingEvent.dragItem.rowNodes,\n overIndex,\n overNode,\n y: yNormalised,\n vDirection: draggingEvent.vDirection\n });\n return event;\n }\n dispatchGridEvent(type, draggingEvent) {\n const event = this.draggingToRowDragEvent(type, draggingEvent);\n this.eventSvc.dispatchEvent(event);\n }\n onDragLeave(draggingEvent) {\n this.dispatchGridEvent(\"rowDragLeave\", draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gos.get(\"rowDragManaged\")) {\n this.clearRowHighlight();\n }\n }\n onDragStop(draggingEvent) {\n this.dispatchGridEvent(\"rowDragEnd\", draggingEvent);\n this.stopDragging(draggingEvent);\n const { dragAndDrop, gos } = this.beans;\n if (gos.get(\"rowDragManaged\") && (gos.get(\"suppressMoveWhenRowDragging\") || !this.isFromThisGrid(draggingEvent)) && dragAndDrop.isDropZoneWithinThisGrid(draggingEvent)) {\n this.moveRowAndClearHighlight(draggingEvent);\n }\n }\n onDragCancel(draggingEvent) {\n this.dispatchGridEvent(\"rowDragCancel\", draggingEvent);\n this.stopDragging(draggingEvent);\n const { dragAndDrop, gos } = this.beans;\n if (gos.get(\"rowDragManaged\") && (gos.get(\"suppressMoveWhenRowDragging\") || !this.isFromThisGrid(draggingEvent)) && dragAndDrop.isDropZoneWithinThisGrid(draggingEvent)) {\n this.clearRowHighlight();\n }\n }\n stopDragging(draggingEvent) {\n this.autoScrollService.ensureCleared();\n this.getRowNodes(draggingEvent).forEach((rowNode) => {\n this.setRowNodeDragging(rowNode, false);\n });\n }\n setRowNodeDragging(rowNode, dragging) {\n if (rowNode.dragging !== dragging) {\n rowNode.dragging = dragging;\n rowNode.dispatchRowEvent(\"draggingChanged\");\n }\n }\n};\n\n// packages/ag-grid-community/src/utils/mouse.ts\nfunction _areEventsNear(e1, e2, pixelCount) {\n if (pixelCount === 0) {\n return false;\n }\n const diffX = Math.abs(e1.clientX - e2.clientX);\n const diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n}\n\n// packages/ag-grid-community/src/dragAndDrop/dragService.ts\nvar DragService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"dragSvc\";\n this.dragEndFunctions = [];\n this.dragSources = [];\n }\n destroy() {\n const { dragSources } = this;\n dragSources.forEach(this.removeListener.bind(this));\n dragSources.length = 0;\n super.destroy();\n }\n removeListener(dragSourceAndListener) {\n const element = dragSourceAndListener.dragSource.eElement;\n const mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener(\"mousedown\", mouseDownListener);\n if (dragSourceAndListener.touchEnabled) {\n const touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener(\"touchstart\", touchStartListener, { passive: true });\n }\n }\n removeDragSource(params) {\n const { dragSources } = this;\n const dragSourceAndListener = dragSources.find((item) => item.dragSource === params);\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n _removeFromArray(dragSources, dragSourceAndListener);\n }\n addDragSource(params) {\n const mouseListener = this.onMouseDown.bind(this, params);\n const { eElement, includeTouch, stopPropagationForTouch } = params;\n eElement.addEventListener(\"mousedown\", mouseListener);\n let touchListener = null;\n const suppressTouch = this.gos.get(\"suppressTouch\");\n if (includeTouch && !suppressTouch) {\n touchListener = (touchEvent) => {\n if (_isFocusableFormField(touchEvent.target)) {\n return;\n }\n if (stopPropagationForTouch) {\n touchEvent.stopPropagation();\n }\n this.onTouchStart(params, touchEvent);\n };\n eElement.addEventListener(\"touchstart\", touchListener, { passive: false });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: !!includeTouch\n });\n }\n // gets called whenever mouse down on any drag source\n onTouchStart(params, touchEvent) {\n this.currentDragParams = params;\n this.dragging = false;\n const touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n const touchMoveEvent = (e) => this.onTouchMove(e, params.eElement);\n const touchEndEvent = (e) => this.onTouchUp(e, params.eElement);\n const documentTouchMove = (e) => {\n if (e.cancelable) {\n e.preventDefault();\n }\n };\n const target = touchEvent.target;\n const events = [\n // Prevents the page document from moving while we are dragging items around.\n // preventDefault needs to be called in the touchmove listener and never inside the\n // touchstart, because using touchstart causes the click event to be cancelled on touch devices.\n {\n target: _getRootNode(this.beans),\n type: \"touchmove\",\n listener: documentTouchMove,\n options: { passive: false }\n },\n { target, type: \"touchmove\", listener: touchMoveEvent, options: { passive: true } },\n { target, type: \"touchend\", listener: touchEndEvent, options: { passive: true } },\n { target, type: \"touchcancel\", listener: touchEndEvent, options: { passive: true } }\n ];\n this.addTemporaryEvents(events);\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart, params.eElement);\n }\n }\n // gets called whenever mouse down on any drag source\n onMouseDown(params, mouseEvent) {\n const e = mouseEvent;\n if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {\n return;\n }\n if (e._alreadyProcessedByDragService) {\n return;\n }\n e._alreadyProcessedByDragService = true;\n if (mouseEvent.button !== 0) {\n return;\n }\n if (this.shouldPreventMouseEvent(mouseEvent)) {\n mouseEvent.preventDefault();\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseStartEvent = mouseEvent;\n this.startTarget = mouseEvent.target;\n const mouseMoveEvent = (event) => this.onMouseMove(event, params.eElement);\n const mouseUpEvent = (event) => this.onMouseUp(event, params.eElement);\n const contextEvent = (event) => event.preventDefault();\n const keydownEvent = (event) => {\n if (event.key === KeyCode.ESCAPE) {\n this.cancelDrag(params.eElement);\n }\n };\n const target = _getRootNode(this.beans);\n const events = [\n { target, type: \"mousemove\", listener: mouseMoveEvent },\n { target, type: \"mouseup\", listener: mouseUpEvent },\n { target, type: \"contextmenu\", listener: contextEvent },\n { target, type: \"keydown\", listener: keydownEvent }\n ];\n this.addTemporaryEvents(events);\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent, params.eElement);\n }\n }\n addTemporaryEvents(events) {\n events.forEach((currentEvent) => {\n const { target, type, listener, options } = currentEvent;\n target.addEventListener(type, listener, options);\n });\n this.dragEndFunctions.push(() => {\n events.forEach((currentEvent) => {\n const { target, type, listener, options } = currentEvent;\n target.removeEventListener(type, listener, options);\n });\n });\n }\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n isEventNearStartEvent(currentEvent, startEvent) {\n const { dragStartPixels } = this.currentDragParams;\n const requiredPixelDiff = _exists(dragStartPixels) ? dragStartPixels : 4;\n return _areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n }\n getFirstActiveTouch(touchList) {\n for (let i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n }\n onCommonMove(currentEvent, startEvent, el) {\n if (!this.dragging) {\n if (this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n this.eventSvc.dispatchEvent({\n type: \"dragStarted\",\n target: el\n });\n this.currentDragParams.onDragStart(startEvent);\n if (!this.currentDragParams) {\n this.dragging = false;\n return;\n }\n this.currentDragParams.onDragging(startEvent);\n }\n this.currentDragParams?.onDragging(currentEvent);\n }\n onTouchMove(touchEvent, el) {\n const touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n this.onCommonMove(touch, this.touchStart, el);\n }\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n onMouseMove(mouseEvent, el) {\n if (_isBrowserSafari()) {\n const eDocument = _getDocument(this.beans);\n eDocument.getSelection()?.removeAllRanges();\n }\n if (this.shouldPreventMouseEvent(mouseEvent)) {\n mouseEvent.preventDefault();\n }\n this.onCommonMove(mouseEvent, this.mouseStartEvent, el);\n }\n shouldPreventMouseEvent(mouseEvent) {\n const { gos } = this;\n const isEnableCellTextSelect = gos.get(\"enableCellTextSelection\");\n const isMouseMove = mouseEvent.type === \"mousemove\";\n const isOverFormFieldElement = (mouseEvent2) => {\n const el = mouseEvent2.target;\n const tagName = el?.tagName.toLocaleLowerCase();\n return !!tagName?.match(\"^a$|textarea|input|select|button\");\n };\n return (\n // when `isEnableCellTextSelect` is `true`, we need to preventDefault on mouseMove\n // to avoid the grid text being selected while dragging components.\n isEnableCellTextSelect && isMouseMove && mouseEvent.cancelable && _isEventFromThisGrid(gos, mouseEvent) && !isOverFormFieldElement(mouseEvent)\n );\n }\n onTouchUp(touchEvent, el) {\n let touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n if (!touch) {\n touch = this.touchLastTime;\n }\n this.onUpCommon(touch, el);\n }\n onMouseUp(mouseEvent, el) {\n this.onUpCommon(mouseEvent, el);\n }\n onUpCommon(eventOrTouch, el) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n this.eventSvc.dispatchEvent({\n type: \"dragStopped\",\n target: el\n });\n }\n this.resetDragProperties();\n }\n cancelDrag(el) {\n this.eventSvc.dispatchEvent({\n type: \"dragCancelled\",\n target: el\n });\n this.currentDragParams?.onDragCancel?.();\n this.resetDragProperties();\n }\n resetDragProperties() {\n this.mouseStartEvent = null;\n this.startTarget = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n const { dragEndFunctions } = this;\n dragEndFunctions.forEach((func) => func());\n dragEndFunctions.length = 0;\n }\n};\n\n// packages/ag-grid-community/src/entities/agColumnGroup.ts\nfunction createUniqueColumnGroupId(groupId, instanceId) {\n return groupId + \"_\" + instanceId;\n}\nfunction isColumnGroup2(col) {\n return col instanceof AgColumnGroup;\n}\nvar AgColumnGroup = class extends BeanStub {\n constructor(providedColumnGroup, groupId, partId, pinned) {\n super();\n this.providedColumnGroup = providedColumnGroup;\n this.groupId = groupId;\n this.partId = partId;\n this.pinned = pinned;\n this.isColumn = false;\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n // The measured height of this column's header when autoHeaderHeight is enabled\n this.autoHeaderHeight = null;\n this.parent = null;\n }\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n reset() {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n }\n getParent() {\n return this.parent;\n }\n getUniqueId() {\n return createUniqueColumnGroupId(this.groupId, this.partId);\n }\n isEmptyGroup() {\n return this.displayedChildren.length === 0;\n }\n isMoving() {\n const allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n return allLeafColumns.every((col) => col.isMoving());\n }\n checkLeft() {\n this.displayedChildren.forEach((child) => {\n if (isColumnGroup2(child)) {\n child.checkLeft();\n }\n });\n if (this.displayedChildren.length > 0) {\n if (this.gos.get(\"enableRtl\")) {\n const lastChild = _last(this.displayedChildren);\n const lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n } else {\n const firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n } else {\n this.setLeft(null);\n }\n }\n getLeft() {\n return this.left;\n }\n getOldLeft() {\n return this.oldLeft;\n }\n setLeft(left) {\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.dispatchLocalEvent({ type: \"leftChanged\" });\n }\n }\n getPinned() {\n return this.pinned;\n }\n getGroupId() {\n return this.groupId;\n }\n getPartId() {\n return this.partId;\n }\n getActualWidth() {\n let groupActualWidth = 0;\n this.displayedChildren?.forEach((child) => {\n groupActualWidth += child.getActualWidth();\n });\n return groupActualWidth;\n }\n isResizable() {\n if (!this.displayedChildren) {\n return false;\n }\n let result = false;\n this.displayedChildren.forEach((child) => {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n }\n getMinWidth() {\n let result = 0;\n this.displayedChildren.forEach((groupChild) => {\n result += groupChild.getMinWidth();\n });\n return result;\n }\n addChild(child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n }\n getDisplayedChildren() {\n return this.displayedChildren;\n }\n getLeafColumns() {\n const result = [];\n this.addLeafColumns(result);\n return result;\n }\n getDisplayedLeafColumns() {\n const result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n }\n getDefinition() {\n return this.providedColumnGroup.getColGroupDef();\n }\n getColGroupDef() {\n return this.providedColumnGroup.getColGroupDef();\n }\n isPadding() {\n return this.providedColumnGroup.isPadding();\n }\n isExpandable() {\n return this.providedColumnGroup.isExpandable();\n }\n isExpanded() {\n return this.providedColumnGroup.isExpanded();\n }\n setExpanded(expanded) {\n this.providedColumnGroup.setExpanded(expanded);\n }\n isAutoHeaderHeight() {\n return !!this.getColGroupDef()?.autoHeaderHeight;\n }\n getAutoHeaderHeight() {\n return this.autoHeaderHeight;\n }\n /** Returns true if the header height has changed */\n setAutoHeaderHeight(height) {\n const changed = height !== this.autoHeaderHeight;\n this.autoHeaderHeight = height;\n return changed;\n }\n addDisplayedLeafColumns(leafColumns) {\n this.displayedChildren.forEach((child) => {\n if (isColumn(child)) {\n leafColumns.push(child);\n } else if (isColumnGroup2(child)) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n }\n addLeafColumns(leafColumns) {\n this.children.forEach((child) => {\n if (isColumn(child)) {\n leafColumns.push(child);\n } else if (isColumnGroup2(child)) {\n child.addLeafColumns(leafColumns);\n }\n });\n }\n getChildren() {\n return this.children;\n }\n getColumnGroupShow() {\n return this.providedColumnGroup.getColumnGroupShow();\n }\n getProvidedColumnGroup() {\n return this.providedColumnGroup;\n }\n getPaddingLevel() {\n const parent = this.getParent();\n if (!this.isPadding() || !parent || !parent.isPadding()) {\n return 0;\n }\n return 1 + parent.getPaddingLevel();\n }\n calculateDisplayedColumns() {\n this.displayedChildren = [];\n let parentWithExpansion = this;\n while (parentWithExpansion != null && parentWithExpansion.isPadding()) {\n parentWithExpansion = parentWithExpansion.getParent();\n }\n const isExpandable = parentWithExpansion ? parentWithExpansion.getProvidedColumnGroup().isExpandable() : false;\n if (!isExpandable) {\n this.displayedChildren = this.children;\n this.dispatchLocalEvent({ type: \"displayedChildrenChanged\" });\n return;\n }\n this.children.forEach((child) => {\n const emptyGroup = isColumnGroup2(child) && (!child.displayedChildren || !child.displayedChildren.length);\n if (emptyGroup) {\n return;\n }\n const headerGroupShow = child.getColumnGroupShow();\n switch (headerGroupShow) {\n case \"open\":\n if (parentWithExpansion.getProvidedColumnGroup().isExpanded()) {\n this.displayedChildren.push(child);\n }\n break;\n case \"closed\":\n if (!parentWithExpansion.getProvidedColumnGroup().isExpanded()) {\n this.displayedChildren.push(child);\n }\n break;\n default:\n this.displayedChildren.push(child);\n break;\n }\n });\n this.dispatchLocalEvent({ type: \"displayedChildrenChanged\" });\n }\n};\n\n// packages/ag-grid-community/src/entities/rowNode.ts\nvar ROW_ID_PREFIX_ROW_GROUP = \"row-group-\";\nvar ROW_ID_PREFIX_TOP_PINNED = \"t-\";\nvar ROW_ID_PREFIX_BOTTOM_PINNED = \"b-\";\nvar OBJECT_ID_SEQUENCE = 0;\nvar RowNode = class {\n constructor(beans) {\n /** `true` if this row is a master row, part of master / detail (ie row can be expanded to show detail) */\n this.master = false;\n /** `true` if this row is a detail row, part of master / detail (ie child row of an expanded master row)*/\n this.detail = void 0;\n /** The current row index. If the row is filtered out or in a collapsed group, this value will be `null`. */\n this.rowIndex = null;\n /** The key for the group eg Ireland, UK, USA */\n this.key = null;\n /**\n * The index of the row in the source rowData array including any updates via transactions.\n * It does not change when sorting, filtering, grouping, pivoting or any other UI related operations.\n * If this is a filler node (a visual row created by AG Grid in tree data or grouping) the value will be `-1`.\n *\n * Generally readonly. It is modified only by:\n * - ClientSideNodeManager, cast to ClientSideNodeManagerRowNode\n * - ClientSideRowModel, cast to ClientSideRowModelRowNode\n */\n this.sourceRowIndex = -1;\n /**\n * Children mapped by the pivot columns.\n *\n * TODO: this field is currently used only by the GroupStrategy and Pivot.\n * TreeStrategy does not use it, and pivot cannot be enabled with tree data.\n * Creating a new object for every row when not pivoting and not grouping\n * consumes memory unnecessarily. Setting it to null however currently breaks\n * transactional updates in groups so this requires a deeper investigation on GroupStrategy.\n */\n this.childrenMapped = {};\n /** The TreeNode associated to this row. Used only with tree data. */\n this.treeNode = null;\n /** The flags associated to this node. Used only with tree data. */\n this.treeNodeFlags = 0;\n /**\n * This will be `true` if it has a rowIndex assigned, otherwise `false`.\n */\n this.displayed = false;\n /** The row top position in pixels. */\n this.rowTop = null;\n /** The top pixel for this row last time, makes sense if data set was ordered or filtered,\n * it is used so new rows can animate in from their old position. */\n this.oldRowTop = null;\n /** `true` by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /**\n * Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers.\n * If re-naming this property, you must also update `IGNORED_SIBLING_PROPERTIES`\n */\n this.__objectId = OBJECT_ID_SEQUENCE++;\n /** `true` when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.highlighted = null;\n this.hovered = false;\n this.__selected = false;\n this.beans = beans;\n }\n /**\n * Replaces the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n */\n setData(data) {\n this.setDataCommon(data, false);\n }\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n /**\n * Updates the data on the `rowNode`. When this method is called, the grid will refresh the entire rendered row if it is displayed.\n */\n updateData(data) {\n this.setDataCommon(data, true);\n }\n setDataCommon(data, update) {\n const { valueCache, selectionSvc, eventSvc } = this.beans;\n const oldData = this.data;\n this.data = data;\n valueCache?.onDataChanged();\n this.updateDataOnDetailNode();\n selectionSvc?.updateRowSelectable(this);\n this.resetQuickFilterAggregateText();\n const event = this.createDataChangedEvent(data, oldData, update);\n this.__localEventService?.dispatchEvent(event);\n eventSvc.dispatchEvent({ type: \"rowNodeDataChanged\", node: this });\n }\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n updateDataOnDetailNode() {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n }\n createDataChangedEvent(newData, oldData, update) {\n return {\n type: \"dataChanged\",\n node: this,\n oldData,\n newData,\n update\n };\n }\n getRowIndexString() {\n if (this.rowIndex == null) {\n _error(13);\n return null;\n }\n if (this.rowPinned === \"top\") {\n return ROW_ID_PREFIX_TOP_PINNED + this.rowIndex;\n }\n if (this.rowPinned === \"bottom\") {\n return ROW_ID_PREFIX_BOTTOM_PINNED + this.rowIndex;\n }\n return this.rowIndex.toString();\n }\n setDataAndId(data, id) {\n const { selectionSvc } = this.beans;\n const oldNode = selectionSvc?.createDaemonNode?.(this);\n const oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n if (selectionSvc) {\n selectionSvc.updateRowSelectable(this);\n selectionSvc.syncInRowNode(this, oldNode);\n }\n const event = this.createDataChangedEvent(data, oldData, false);\n this.__localEventService?.dispatchEvent(event);\n }\n setId(id) {\n const getRowIdFunc = _getRowIdCallback(this.beans.gos);\n if (getRowIdFunc) {\n if (this.data) {\n const parentKeys = this.parent?.getRoute() ?? [];\n this.id = getRowIdFunc({\n data: this.data,\n parentKeys: parentKeys.length > 0 ? parentKeys : void 0,\n level: this.level,\n rowPinned: this.rowPinned\n });\n if (this.id.startsWith(ROW_ID_PREFIX_ROW_GROUP)) {\n _error(14, {\n groupPrefix: ROW_ID_PREFIX_ROW_GROUP\n });\n }\n } else {\n this.id = void 0;\n }\n } else {\n this.id = id;\n }\n }\n setRowTop(rowTop) {\n this.oldRowTop = this.rowTop;\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n this.dispatchRowEvent(\"topChanged\");\n this.setDisplayed(rowTop !== null);\n }\n clearRowTopAndRowIndex() {\n this.oldRowTop = null;\n this.setRowTop(null);\n this.setRowIndex(null);\n }\n setHovered(hovered) {\n this.hovered = hovered;\n }\n isHovered() {\n return this.hovered;\n }\n /**\n * Sets the row height.\n * Call if you want to change the height initially assigned to the row.\n * After calling, you must call `api.onRowHeightChanged()` so the grid knows it needs to work out the placement of the rows. */\n setRowHeight(rowHeight, estimated = false) {\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n this.dispatchRowEvent(\"heightChanged\");\n }\n setExpanded(expanded, e, forceSync) {\n this.beans.expansionSvc?.setExpanded(this, expanded, e, forceSync);\n }\n /**\n * Replaces the value on the `rowNode` for the specified column. When complete,\n * the grid will refresh the rendered cell on the required row only.\n * **Note**: This method only fires `onCellEditRequest` when the Grid is in **Read Only** mode.\n *\n * @param colKey The column where the value should be updated\n * @param newValue The new value\n * @param eventSource The source of the event\n * @returns `true` if the value was changed, otherwise `false`.\n */\n setDataValue(colKey, newValue, eventSource) {\n const { colModel, valueSvc, gos, selectionSvc } = this.beans;\n const column = typeof colKey !== \"string\" ? colKey : colModel.getCol(colKey) ?? colModel.getColDefCol(colKey);\n if (!column) {\n return false;\n }\n const oldValue = valueSvc.getValueForDisplay(column, this);\n if (gos.get(\"readOnlyEdit\")) {\n const {\n beans: { eventSvc },\n data,\n rowIndex,\n rowPinned\n } = this;\n eventSvc.dispatchEvent({\n type: \"cellEditRequest\",\n event: null,\n rowIndex,\n rowPinned,\n column,\n colDef: column.colDef,\n data,\n node: this,\n oldValue,\n newValue,\n value: newValue,\n source: eventSource\n });\n return false;\n }\n const valueChanged = valueSvc.setValue(this, column, newValue, eventSource);\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n selectionSvc?.updateRowSelectable(this);\n return valueChanged;\n }\n updateHasChildren() {\n let newValue = this.group && !this.footer || this.childrenAfterGroup && this.childrenAfterGroup.length > 0;\n const { rowChildrenSvc } = this.beans;\n if (rowChildrenSvc) {\n newValue = rowChildrenSvc.getHasChildrenValue(this);\n }\n if (newValue !== this.__hasChildren) {\n this.__hasChildren = !!newValue;\n this.dispatchRowEvent(\"hasChildrenChanged\");\n }\n }\n hasChildren() {\n if (this.__hasChildren == null) {\n this.updateHasChildren();\n }\n return this.__hasChildren;\n }\n dispatchCellChangedEvent(column, newValue, oldValue) {\n const cellChangedEvent = {\n type: \"cellChanged\",\n node: this,\n column,\n newValue,\n oldValue\n };\n this.__localEventService?.dispatchEvent(cellChangedEvent);\n }\n /**\n * The first time `quickFilter` runs, the grid creates a one-off string representation of the row.\n * This string is then used for the quick filter instead of hitting each column separately.\n * When you edit, using grid editing, this string gets cleared down.\n * However if you edit without using grid editing, you will need to clear this string down for the row to be updated with the new values.\n * Otherwise new values will not work with the `quickFilter`. */\n resetQuickFilterAggregateText() {\n this.quickFilterAggregateText = null;\n }\n /** Returns:\n * - `true` if the node can be expanded, i.e it is a group or master row.\n * - `false` if the node cannot be expanded\n */\n isExpandable() {\n return this.beans.expansionSvc?.isExpandable(this) ?? false;\n }\n /** Returns:\n * - `true` if node is selected,\n * - `false` if the node isn't selected\n * - `undefined` if it's partially selected (group where not all children are selected). */\n isSelected() {\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.__selected;\n }\n /** Perform a depth-first search of this node and its children. */\n depthFirstSearch(callback) {\n this.childrenAfterGroup?.forEach((child) => child.depthFirstSearch(callback));\n callback(this);\n }\n dispatchRowEvent(type) {\n this.__localEventService?.dispatchEvent({\n type,\n node: this\n });\n }\n /**\n * Select (or deselect) the node.\n * @param newValue -`true` for selection, `false` for deselection.\n * @param clearSelection - If selecting, then passing `true` will select the node exclusively (i.e. NOT do multi select). If doing deselection, `clearSelection` has no impact.\n * @param source - Source property that will appear in the `selectionChanged` event.\n */\n setSelected(newValue, clearSelection = false, source = \"api\") {\n this.beans.selectionSvc?.setNodesSelected({\n nodes: [this],\n newValue,\n clearSelection,\n source\n });\n }\n /**\n * Returns:\n * - `true` if node is either pinned to the `top` or `bottom`\n * - `false` if the node isn't pinned\n */\n isRowPinned() {\n return !!this.rowPinned;\n }\n __addEventListener(eventType, listener) {\n if (!this.__localEventService) {\n this.__localEventService = new LocalEventService();\n }\n this.__localEventService.addEventListener(eventType, listener);\n }\n __removeEventListener(eventType, listener) {\n this.removeLocalListener(eventType, listener);\n }\n /**\n * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods.\n */\n addEventListener(eventType, userListener) {\n this.beans.validation?.checkRowEvents(eventType);\n if (!this.__localEventService) {\n this.__localEventService = new LocalEventService();\n }\n this.frameworkEventListenerService = this.beans.frameworkOverrides.createLocalEventListenerWrapper?.(\n this.frameworkEventListenerService,\n this.__localEventService\n );\n const listener = this.frameworkEventListenerService?.wrap(userListener) ?? userListener;\n this.__localEventService.addEventListener(eventType, listener);\n }\n /**\n * PUBLIC USE ONLY: for internal use within AG Grid use the `__addEventListener` and `__removeEventListener` methods.\n */\n removeEventListener(eventType, userListener) {\n const listener = this.frameworkEventListenerService?.unwrap(userListener) ?? userListener;\n this.removeLocalListener(eventType, listener);\n }\n removeLocalListener(eventType, listener) {\n this.__localEventService?.removeEventListener(eventType, listener);\n if (this.__localEventService?.noRegisteredListenersExist()) {\n this.__localEventService = null;\n }\n }\n /**\n * @deprecated v32.2.0 Check `node.detail` then user provided callback `isFullWidthRow` instead.\n *\n * Returns:\n * - `true` if the node is a full width cell\n * - `false` if the node is not a full width cell\n */\n isFullWidthCell() {\n _warn(61);\n if (this.detail) {\n return true;\n }\n const isFullWidthCellFunc = this.beans.gos.getCallback(\"isFullWidthRow\");\n return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this }) : false;\n }\n /**\n * Returns the route of keys to the row node. Returns undefined if the node has no key.\n */\n getRoute() {\n if (this.level === -1) {\n return [];\n }\n if (this.key == null) {\n return void 0;\n }\n const res = [];\n let pointer = this;\n while (pointer && pointer.key != null) {\n res.push(pointer.key);\n pointer = pointer.parent;\n }\n return res.reverse();\n }\n setFirstChild(firstChild) {\n if (this.firstChild !== firstChild) {\n this.firstChild = firstChild;\n this.dispatchRowEvent(\"firstChildChanged\");\n }\n }\n setDisplayed(displayed) {\n if (this.displayed !== displayed) {\n this.displayed = displayed;\n this.dispatchRowEvent(\"displayedChanged\");\n }\n }\n setRowIndex(rowIndex) {\n if (this.rowIndex !== rowIndex) {\n this.rowIndex = rowIndex;\n this.dispatchRowEvent(\"rowIndexChanged\");\n }\n }\n setAllChildrenCount(allChildrenCount) {\n if (this.allChildrenCount !== allChildrenCount) {\n this.allChildrenCount = allChildrenCount;\n this.dispatchRowEvent(\"allChildrenCountChanged\");\n }\n }\n setUiLevel(uiLevel) {\n if (this.uiLevel !== uiLevel) {\n this.uiLevel = uiLevel;\n this.dispatchRowEvent(\"uiLevelChanged\");\n }\n }\n};\n\n// packages/ag-grid-community/src/entities/rowNodeUtils.ts\nfunction _createGlobalRowEvent(rowNode, gos, type) {\n return _addGridCommonParams(gos, {\n type,\n node: rowNode,\n data: rowNode.data,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned\n });\n}\n\n// packages/ag-grid-community/src/filter/filterWrapperComp.ts\nvar FilterWrapperElement = { tag: \"div\", cls: \"ag-filter\" };\nvar FilterWrapperComp = class extends Component {\n constructor(column, source) {\n super(FilterWrapperElement);\n this.column = column;\n this.source = source;\n this.filterWrapper = null;\n }\n postConstruct() {\n this.createFilter(true);\n this.addManagedEventListeners({ filterDestroyed: this.onFilterDestroyed.bind(this) });\n }\n hasFilter() {\n return !!this.filterWrapper;\n }\n getFilter() {\n return this.filterWrapper?.filterPromise ?? null;\n }\n afterInit() {\n return this.filterWrapper?.filterPromise?.then(() => {\n }) ?? AgPromise.resolve();\n }\n afterGuiAttached(params) {\n this.filterWrapper?.filterPromise?.then((filter) => {\n filter?.afterGuiAttached?.(params);\n });\n }\n afterGuiDetached() {\n this.filterWrapper?.filterPromise?.then((filter) => {\n filter?.afterGuiDetached?.();\n });\n }\n createFilter(init) {\n const { column, source } = this;\n this.filterWrapper = this.beans.filterManager?.getOrCreateFilterWrapper(column) ?? null;\n if (!this.filterWrapper?.filterPromise) {\n return;\n }\n this.filterWrapper.filterPromise.then((filter) => {\n const guiFromFilter = filter.getGui();\n if (!_exists(guiFromFilter)) {\n _warn(69, { guiFromFilter });\n }\n this.appendChild(guiFromFilter);\n if (init) {\n this.eventSvc.dispatchEvent({\n type: \"filterOpened\",\n column,\n source,\n eGui: this.getGui()\n });\n }\n });\n }\n onFilterDestroyed(event) {\n if ((event.source === \"api\" || event.source === \"paramsUpdated\") && event.column.getId() === this.column.getId() && this.beans.colModel.getColDefCol(this.column)) {\n _clearElement(this.getGui());\n this.createFilter();\n }\n }\n destroy() {\n this.filterWrapper = null;\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/rendering/features/positionableFeature.ts\nvar RESIZE_CONTAINER_STYLE = \"ag-resizer-wrapper\";\nvar makeDiv = (dataRefPrefix, classSuffix) => ({\n tag: \"div\",\n ref: `${dataRefPrefix}Resizer`,\n cls: `ag-resizer ag-resizer-${classSuffix}`\n});\nvar RESIZE_TEMPLATE = {\n tag: \"div\",\n cls: RESIZE_CONTAINER_STYLE,\n children: [\n makeDiv(\"eTopLeft\", \"topLeft\"),\n makeDiv(\"eTop\", \"top\"),\n makeDiv(\"eTopRight\", \"topRight\"),\n makeDiv(\"eRight\", \"right\"),\n makeDiv(\"eBottomRight\", \"bottomRight\"),\n makeDiv(\"eBottom\", \"bottom\"),\n makeDiv(\"eBottomLeft\", \"bottomLeft\"),\n makeDiv(\"eLeft\", \"left\")\n ]\n};\nvar PositionableFeature = class extends BeanStub {\n constructor(element, config) {\n super();\n this.element = element;\n this.dragStartPosition = {\n x: 0,\n y: 0\n };\n this.position = {\n x: 0,\n y: 0\n };\n this.lastSize = {\n width: -1,\n height: -1\n };\n this.positioned = false;\n this.resizersAdded = false;\n this.resizeListeners = [];\n this.boundaryEl = null;\n this.isResizing = false;\n this.isMoving = false;\n this.resizable = {};\n this.movable = false;\n this.currentResizer = null;\n this.config = Object.assign({}, { popup: false }, config);\n }\n wireBeans(beans) {\n this.popupSvc = beans.popupSvc;\n this.dragSvc = beans.dragSvc;\n }\n center() {\n const { clientHeight, clientWidth } = this.offsetParent;\n const x = clientWidth / 2 - this.getWidth() / 2;\n const y = clientHeight / 2 - this.getHeight() / 2;\n this.offsetElement(x, y);\n }\n initialisePosition() {\n if (this.positioned) {\n return;\n }\n const { centered, forcePopupParentAsOffsetParent, minWidth, width, minHeight, height, x, y } = this.config;\n if (!this.offsetParent) {\n this.setOffsetParent();\n }\n let computedMinHeight = 0;\n let computedMinWidth = 0;\n const isElementVisible = _isVisible(this.element);\n if (isElementVisible) {\n const boundaryEl = this.findBoundaryElement();\n const offsetParentComputedStyles = window.getComputedStyle(boundaryEl);\n if (offsetParentComputedStyles.minWidth != null) {\n const paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;\n computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;\n }\n if (offsetParentComputedStyles.minHeight != null) {\n const paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;\n computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;\n }\n }\n this.minHeight = minHeight || computedMinHeight;\n this.minWidth = minWidth || computedMinWidth;\n if (width) {\n this.setWidth(width);\n }\n if (height) {\n this.setHeight(height);\n }\n if (!width || !height) {\n this.refreshSize();\n }\n if (centered) {\n this.center();\n } else if (x || y) {\n this.offsetElement(x, y);\n } else if (isElementVisible && forcePopupParentAsOffsetParent) {\n let boundaryEl = this.boundaryEl;\n let initialisedDuringPositioning = true;\n if (!boundaryEl) {\n boundaryEl = this.findBoundaryElement();\n initialisedDuringPositioning = false;\n }\n if (boundaryEl) {\n const top = parseFloat(boundaryEl.style.top);\n const left = parseFloat(boundaryEl.style.left);\n if (initialisedDuringPositioning) {\n this.offsetElement(isNaN(left) ? 0 : left, isNaN(top) ? 0 : top);\n } else {\n this.setPosition(left, top);\n }\n }\n }\n this.positioned = !!this.offsetParent;\n }\n isPositioned() {\n return this.positioned;\n }\n getPosition() {\n return this.position;\n }\n setMovable(movable, moveElement) {\n if (!this.config.popup || movable === this.movable) {\n return;\n }\n this.movable = movable;\n const params = this.moveElementDragListener || {\n eElement: moveElement,\n onDragStart: this.onMoveStart.bind(this),\n onDragging: this.onMove.bind(this),\n onDragStop: this.onMoveEnd.bind(this)\n };\n if (movable) {\n this.dragSvc?.addDragSource(params);\n this.moveElementDragListener = params;\n } else {\n this.dragSvc?.removeDragSource(params);\n this.moveElementDragListener = void 0;\n }\n }\n setResizable(resizable) {\n this.clearResizeListeners();\n if (resizable) {\n this.addResizers();\n } else {\n this.removeResizers();\n }\n if (typeof resizable === \"boolean\") {\n if (resizable === false) {\n return;\n }\n resizable = {\n topLeft: resizable,\n top: resizable,\n topRight: resizable,\n right: resizable,\n bottomRight: resizable,\n bottom: resizable,\n bottomLeft: resizable,\n left: resizable\n };\n }\n Object.keys(resizable).forEach((side) => {\n const resizableStructure = resizable;\n const isSideResizable = !!resizableStructure[side];\n const resizerEl = this.getResizerElement(side);\n const params = {\n dragStartPixels: 0,\n eElement: resizerEl,\n onDragStart: (e) => this.onResizeStart(e, side),\n onDragging: this.onResize.bind(this),\n onDragStop: (e) => this.onResizeEnd(e, side)\n };\n if (isSideResizable || !this.isAlive() && !isSideResizable) {\n if (isSideResizable) {\n this.dragSvc?.addDragSource(params);\n this.resizeListeners.push(params);\n resizerEl.style.pointerEvents = \"all\";\n } else {\n resizerEl.style.pointerEvents = \"none\";\n }\n this.resizable[side] = isSideResizable;\n }\n });\n }\n removeSizeFromEl() {\n this.element.style.removeProperty(\"height\");\n this.element.style.removeProperty(\"width\");\n this.element.style.removeProperty(\"flex\");\n }\n restoreLastSize() {\n this.element.style.flex = \"0 0 auto\";\n const { height, width } = this.lastSize;\n if (width !== -1) {\n this.element.style.width = `${width}px`;\n }\n if (height !== -1) {\n this.element.style.height = `${height}px`;\n }\n }\n getHeight() {\n return this.element.offsetHeight;\n }\n setHeight(height) {\n const { popup } = this.config;\n const eGui = this.element;\n let isPercent = false;\n if (typeof height === \"string\" && height.indexOf(\"%\") !== -1) {\n _setFixedHeight(eGui, height);\n height = _getAbsoluteHeight(eGui);\n isPercent = true;\n } else {\n height = Math.max(this.minHeight, height);\n if (this.positioned) {\n const availableHeight = this.getAvailableHeight();\n if (availableHeight && height > availableHeight) {\n height = availableHeight;\n }\n }\n }\n if (this.getHeight() === height) {\n return;\n }\n if (!isPercent) {\n if (popup) {\n _setFixedHeight(eGui, height);\n } else {\n eGui.style.height = `${height}px`;\n eGui.style.flex = \"0 0 auto\";\n this.lastSize.height = typeof height === \"number\" ? height : parseFloat(height);\n }\n } else {\n eGui.style.maxHeight = \"unset\";\n eGui.style.minHeight = \"unset\";\n }\n }\n getAvailableHeight() {\n const { popup, forcePopupParentAsOffsetParent } = this.config;\n if (!this.positioned) {\n this.initialisePosition();\n }\n const { clientHeight } = this.offsetParent;\n if (!clientHeight) {\n return null;\n }\n const elRect = this.element.getBoundingClientRect();\n const offsetParentRect = this.offsetParent.getBoundingClientRect();\n const yPosition = popup ? this.position.y : elRect.top;\n const parentTop = popup ? 0 : offsetParentRect.top;\n let additionalHeight = 0;\n if (forcePopupParentAsOffsetParent) {\n const parentEl = this.element.parentElement;\n if (parentEl) {\n const { bottom } = parentEl.getBoundingClientRect();\n additionalHeight = bottom - elRect.bottom;\n }\n }\n const availableHeight = clientHeight + parentTop - yPosition - additionalHeight;\n return availableHeight;\n }\n getWidth() {\n return this.element.offsetWidth;\n }\n setWidth(width) {\n const eGui = this.element;\n const { popup } = this.config;\n let isPercent = false;\n if (typeof width === \"string\" && width.indexOf(\"%\") !== -1) {\n _setFixedWidth(eGui, width);\n width = _getAbsoluteWidth(eGui);\n isPercent = true;\n } else if (this.positioned) {\n width = Math.max(this.minWidth, width);\n const { clientWidth } = this.offsetParent;\n const xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;\n if (clientWidth && width + xPosition > clientWidth) {\n width = clientWidth - xPosition;\n }\n }\n if (this.getWidth() === width) {\n return;\n }\n if (!isPercent) {\n if (this.config.popup) {\n _setFixedWidth(eGui, width);\n } else {\n eGui.style.width = `${width}px`;\n eGui.style.flex = \" unset\";\n this.lastSize.width = typeof width === \"number\" ? width : parseFloat(width);\n }\n } else {\n eGui.style.maxWidth = \"unset\";\n eGui.style.minWidth = \"unset\";\n }\n }\n offsetElement(x = 0, y = 0) {\n const { forcePopupParentAsOffsetParent } = this.config;\n const ePopup = forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;\n if (!ePopup) {\n return;\n }\n this.popupSvc?.positionPopup({\n ePopup,\n keepWithinBounds: true,\n skipObserver: this.movable || this.isResizable(),\n updatePosition: () => ({ x, y })\n });\n this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));\n }\n constrainSizeToAvailableHeight(constrain) {\n if (!this.config.forcePopupParentAsOffsetParent) {\n return;\n }\n const applyMaxHeightToElement = () => {\n const availableHeight = this.getAvailableHeight();\n this.element.style.setProperty(\"max-height\", `${availableHeight}px`);\n };\n if (constrain && this.popupSvc) {\n this.resizeObserverSubscriber = _observeResize(\n this.beans,\n this.popupSvc?.getPopupParent(),\n applyMaxHeightToElement\n );\n } else {\n this.element.style.removeProperty(\"max-height\");\n if (this.resizeObserverSubscriber) {\n this.resizeObserverSubscriber();\n this.resizeObserverSubscriber = void 0;\n }\n }\n }\n setPosition(x, y) {\n this.position.x = x;\n this.position.y = y;\n }\n updateDragStartPosition(x, y) {\n this.dragStartPosition = { x, y };\n }\n calculateMouseMovement(params) {\n const { e, isLeft, isTop, anywhereWithin, topBuffer } = params;\n const xDiff = e.clientX - this.dragStartPosition.x;\n const yDiff = e.clientY - this.dragStartPosition.y;\n const movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;\n const movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;\n return { movementX, movementY };\n }\n shouldSkipX(e, isLeft, anywhereWithin, diff) {\n const elRect = this.element.getBoundingClientRect();\n const parentRect = this.offsetParent.getBoundingClientRect();\n const boundaryElRect = this.boundaryEl.getBoundingClientRect();\n const xPosition = this.config.popup ? this.position.x : elRect.left;\n let skipX = xPosition <= 0 && parentRect.left >= e.clientX || parentRect.right <= e.clientX && parentRect.right <= boundaryElRect.right;\n if (skipX) {\n return true;\n }\n if (isLeft) {\n skipX = // skip if we are moving to the left and the cursor\n // is positioned to the right of the left side anchor\n diff < 0 && e.clientX > xPosition + parentRect.left || // skip if we are moving to the right and the cursor\n // is positioned to the left of the dialog\n diff > 0 && e.clientX < xPosition + parentRect.left;\n } else {\n if (anywhereWithin) {\n skipX = diff < 0 && e.clientX > boundaryElRect.right || diff > 0 && e.clientX < xPosition + parentRect.left;\n } else {\n skipX = // if the movement is bound to the right side of the dialog\n // we skip if we are moving to the left and the cursor\n // is to the right of the dialog\n diff < 0 && e.clientX > boundaryElRect.right || // or skip if we are moving to the right and the cursor\n // is to the left of the right side anchor\n diff > 0 && e.clientX < boundaryElRect.right;\n }\n }\n return skipX;\n }\n shouldSkipY(e, isTop, topBuffer = 0, diff) {\n const elRect = this.element.getBoundingClientRect();\n const parentRect = this.offsetParent.getBoundingClientRect();\n const boundaryElRect = this.boundaryEl.getBoundingClientRect();\n const yPosition = this.config.popup ? this.position.y : elRect.top;\n let skipY = yPosition <= 0 && parentRect.top >= e.clientY || parentRect.bottom <= e.clientY && parentRect.bottom <= boundaryElRect.bottom;\n if (skipY) {\n return true;\n }\n if (isTop) {\n skipY = // skip if we are moving to towards top and the cursor is\n // below the top anchor + topBuffer\n // note: topBuffer is used when moving the dialog using the title bar\n diff < 0 && e.clientY > yPosition + parentRect.top + topBuffer || // skip if we are moving to the bottom and the cursor is\n // above the top anchor\n diff > 0 && e.clientY < yPosition + parentRect.top;\n } else {\n skipY = // skip if we are moving towards the top and the cursor\n // is below the bottom anchor\n diff < 0 && e.clientY > boundaryElRect.bottom || // skip if we are moving towards the bottom and the cursor\n // is above the bottom anchor\n diff > 0 && e.clientY < boundaryElRect.bottom;\n }\n return skipY;\n }\n createResizeMap() {\n const getElement = (ref) => ({\n element: this.element.querySelector(`[data-ref=${ref}Resizer]`)\n });\n this.resizerMap = {\n topLeft: getElement(\"eTopLeft\"),\n top: getElement(\"eTop\"),\n topRight: getElement(\"eTopRight\"),\n right: getElement(\"eRight\"),\n bottomRight: getElement(\"eBottomRight\"),\n bottom: getElement(\"eBottom\"),\n bottomLeft: getElement(\"eBottomLeft\"),\n left: getElement(\"eLeft\")\n };\n }\n addResizers() {\n if (this.resizersAdded) {\n return;\n }\n const eGui = this.element;\n if (!eGui) {\n return;\n }\n eGui.appendChild(_createElement(RESIZE_TEMPLATE));\n this.createResizeMap();\n this.resizersAdded = true;\n }\n removeResizers() {\n this.resizerMap = void 0;\n const resizerEl = this.element.querySelector(`.${RESIZE_CONTAINER_STYLE}`);\n if (resizerEl) {\n this.element.removeChild(resizerEl);\n }\n this.resizersAdded = false;\n }\n getResizerElement(side) {\n return this.resizerMap[side].element;\n }\n onResizeStart(e, side) {\n this.boundaryEl = this.findBoundaryElement();\n if (!this.positioned) {\n this.initialisePosition();\n }\n this.currentResizer = {\n isTop: !!side.match(/top/i),\n isRight: !!side.match(/right/i),\n isBottom: !!side.match(/bottom/i),\n isLeft: !!side.match(/left/i)\n };\n this.element.classList.add(\"ag-resizing\");\n this.resizerMap[side].element.classList.add(\"ag-active\");\n const { popup, forcePopupParentAsOffsetParent } = this.config;\n if (!popup && !forcePopupParentAsOffsetParent) {\n this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);\n }\n this.isResizing = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n }\n getSiblings() {\n const element = this.element;\n const parent = element.parentElement;\n if (!parent) {\n return null;\n }\n return Array.prototype.slice.call(parent.children).filter((el) => !el.classList.contains(\"ag-hidden\"));\n }\n getMinSizeOfSiblings() {\n const siblings = this.getSiblings() || [];\n let height = 0;\n let width = 0;\n for (let i = 0; i < siblings.length; i++) {\n const currentEl = siblings[i];\n const isFlex = !!currentEl.style.flex && currentEl.style.flex !== \"0 0 auto\";\n if (currentEl === this.element) {\n continue;\n }\n let nextHeight = this.minHeight || 0;\n let nextWidth = this.minWidth || 0;\n if (isFlex) {\n const computedStyle = window.getComputedStyle(currentEl);\n if (computedStyle.minHeight) {\n nextHeight = parseInt(computedStyle.minHeight, 10);\n }\n if (computedStyle.minWidth) {\n nextWidth = parseInt(computedStyle.minWidth, 10);\n }\n } else {\n nextHeight = currentEl.offsetHeight;\n nextWidth = currentEl.offsetWidth;\n }\n height += nextHeight;\n width += nextWidth;\n }\n return { height, width };\n }\n applySizeToSiblings(vertical) {\n let containerToFlex = null;\n const siblings = this.getSiblings();\n if (!siblings) {\n return;\n }\n for (let i = 0; i < siblings.length; i++) {\n const el = siblings[i];\n if (el === containerToFlex) {\n continue;\n }\n if (vertical) {\n el.style.height = `${el.offsetHeight}px`;\n } else {\n el.style.width = `${el.offsetWidth}px`;\n }\n el.style.flex = \"0 0 auto\";\n if (el === this.element) {\n containerToFlex = siblings[i + 1];\n }\n }\n if (containerToFlex) {\n containerToFlex.style.removeProperty(\"height\");\n containerToFlex.style.removeProperty(\"min-height\");\n containerToFlex.style.removeProperty(\"max-height\");\n containerToFlex.style.flex = \"1 1 auto\";\n }\n }\n isResizable() {\n return Object.values(this.resizable).some((value) => value);\n }\n onResize(e) {\n if (!this.isResizing || !this.currentResizer) {\n return;\n }\n const { popup, forcePopupParentAsOffsetParent } = this.config;\n const { isTop, isRight, isBottom, isLeft } = this.currentResizer;\n const isHorizontal = isRight || isLeft;\n const isVertical = isBottom || isTop;\n const { movementX, movementY } = this.calculateMouseMovement({ e, isLeft, isTop });\n const xPosition = this.position.x;\n const yPosition = this.position.y;\n let offsetLeft = 0;\n let offsetTop = 0;\n if (isHorizontal && movementX) {\n const direction = isLeft ? -1 : 1;\n const oldWidth = this.getWidth();\n const newWidth = oldWidth + movementX * direction;\n let skipWidth = false;\n if (isLeft) {\n offsetLeft = oldWidth - newWidth;\n if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {\n skipWidth = true;\n offsetLeft = 0;\n }\n }\n if (!skipWidth) {\n this.setWidth(newWidth);\n }\n }\n if (isVertical && movementY) {\n const direction = isTop ? -1 : 1;\n const oldHeight = this.getHeight();\n const newHeight = oldHeight + movementY * direction;\n let skipHeight = false;\n if (isTop) {\n offsetTop = oldHeight - newHeight;\n if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {\n skipHeight = true;\n offsetTop = 0;\n }\n } else {\n if (!this.config.popup && !this.config.forcePopupParentAsOffsetParent && oldHeight < newHeight && this.getMinSizeOfSiblings().height + newHeight > this.element.parentElement.offsetHeight) {\n skipHeight = true;\n }\n }\n if (!skipHeight) {\n this.setHeight(newHeight);\n }\n }\n this.updateDragStartPosition(e.clientX, e.clientY);\n if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {\n this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);\n }\n }\n onResizeEnd(e, side) {\n this.isResizing = false;\n this.currentResizer = null;\n this.boundaryEl = null;\n this.element.classList.remove(\"ag-resizing\");\n this.resizerMap[side].element.classList.remove(\"ag-active\");\n this.dispatchLocalEvent({ type: \"resize\" });\n }\n refreshSize() {\n const eGui = this.element;\n if (this.config.popup) {\n if (!this.config.width) {\n this.setWidth(eGui.offsetWidth);\n }\n if (!this.config.height) {\n this.setHeight(eGui.offsetHeight);\n }\n }\n }\n onMoveStart(e) {\n this.boundaryEl = this.findBoundaryElement();\n if (!this.positioned) {\n this.initialisePosition();\n }\n this.isMoving = true;\n this.element.classList.add(\"ag-moving\");\n this.updateDragStartPosition(e.clientX, e.clientY);\n }\n onMove(e) {\n if (!this.isMoving) {\n return;\n }\n const { x, y } = this.position;\n let topBuffer;\n if (this.config.calculateTopBuffer) {\n topBuffer = this.config.calculateTopBuffer();\n }\n const { movementX, movementY } = this.calculateMouseMovement({\n e,\n isTop: true,\n anywhereWithin: true,\n topBuffer\n });\n this.offsetElement(x + movementX, y + movementY);\n this.updateDragStartPosition(e.clientX, e.clientY);\n }\n onMoveEnd() {\n this.isMoving = false;\n this.boundaryEl = null;\n this.element.classList.remove(\"ag-moving\");\n }\n setOffsetParent() {\n if (this.config.forcePopupParentAsOffsetParent && this.popupSvc) {\n this.offsetParent = this.popupSvc.getPopupParent();\n } else {\n this.offsetParent = this.element.offsetParent;\n }\n }\n findBoundaryElement() {\n let el = this.element;\n while (el) {\n if (window.getComputedStyle(el).position !== \"static\") {\n return el;\n }\n el = el.parentElement;\n }\n return this.element;\n }\n clearResizeListeners() {\n while (this.resizeListeners.length) {\n const params = this.resizeListeners.pop();\n this.dragSvc?.removeDragSource(params);\n }\n }\n destroy() {\n super.destroy();\n if (this.moveElementDragListener) {\n this.dragSvc?.removeDragSource(this.moveElementDragListener);\n }\n this.constrainSizeToAvailableHeight(false);\n this.clearResizeListeners();\n this.removeResizers();\n }\n};\n\n// packages/ag-grid-community/src/widgets/managedFocusFeature.ts\nvar FOCUS_MANAGED_CLASS = \"ag-focus-managed\";\nvar ManagedFocusFeature = class extends BeanStub {\n constructor(eFocusable, callbacks = {}) {\n super();\n this.eFocusable = eFocusable;\n this.callbacks = callbacks;\n this.callbacks = {\n shouldStopEventPropagation: () => false,\n onTabKeyDown: (e) => {\n if (e.defaultPrevented) {\n return;\n }\n const nextRoot = _findNextFocusableElement(this.beans, this.eFocusable, false, e.shiftKey);\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n },\n ...callbacks\n };\n }\n postConstruct() {\n const {\n eFocusable,\n callbacks: { onFocusIn, onFocusOut }\n } = this;\n eFocusable.classList.add(FOCUS_MANAGED_CLASS);\n this.addKeyDownListeners(eFocusable);\n if (onFocusIn) {\n this.addManagedElementListeners(eFocusable, { focusin: onFocusIn });\n }\n if (onFocusOut) {\n this.addManagedElementListeners(eFocusable, { focusout: onFocusOut });\n }\n }\n addKeyDownListeners(eGui) {\n this.addManagedElementListeners(eGui, {\n keydown: (e) => {\n if (e.defaultPrevented || _isStopPropagationForAgGrid(e)) {\n return;\n }\n const { callbacks } = this;\n if (callbacks.shouldStopEventPropagation(e)) {\n _stopPropagationForAgGrid(e);\n return;\n }\n if (e.key === KeyCode.TAB) {\n callbacks.onTabKeyDown(e);\n } else if (callbacks.handleKeyDown) {\n callbacks.handleKeyDown(e);\n }\n }\n });\n }\n};\n\n// packages/ag-grid-community/src/filter/filterLocaleText.ts\nvar FILTER_LOCALE_TEXT = {\n applyFilter: \"Apply\",\n clearFilter: \"Clear\",\n resetFilter: \"Reset\",\n cancelFilter: \"Cancel\",\n textFilter: \"Text Filter\",\n numberFilter: \"Number Filter\",\n dateFilter: \"Date Filter\",\n setFilter: \"Set Filter\",\n filterOoo: \"Filter...\",\n empty: \"Choose one\",\n equals: \"Equals\",\n notEqual: \"Does not equal\",\n lessThan: \"Less than\",\n greaterThan: \"Greater than\",\n inRange: \"Between\",\n inRangeStart: \"From\",\n inRangeEnd: \"To\",\n lessThanOrEqual: \"Less than or equal to\",\n greaterThanOrEqual: \"Greater than or equal to\",\n contains: \"Contains\",\n notContains: \"Does not contain\",\n startsWith: \"Begins with\",\n endsWith: \"Ends with\",\n blank: \"Blank\",\n notBlank: \"Not blank\",\n before: \"Before\",\n after: \"After\",\n andCondition: \"AND\",\n orCondition: \"OR\",\n dateFormatOoo: \"yyyy-mm-dd\"\n};\n\n// packages/ag-grid-community/src/filter/floating/provided/providedFilterUtils.ts\nfunction getDebounceMs(params, debounceDefault) {\n const { debounceMs } = params;\n if (isUseApplyButton(params)) {\n if (debounceMs != null) {\n _warn(71);\n }\n return 0;\n }\n return debounceMs ?? debounceDefault;\n}\nfunction isUseApplyButton(params) {\n return (params.buttons?.indexOf(\"apply\") ?? -1) >= 0;\n}\n\n// packages/ag-grid-community/src/filter/provided/providedFilter.ts\nvar ProvidedFilter = class extends Component {\n constructor(filterNameKey) {\n super();\n this.filterNameKey = filterNameKey;\n this.applyActive = false;\n this.hidePopup = null;\n this.debouncePending = false;\n // after the user hits 'apply' the model gets copied to here. this is then the model that we use for\n // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.\n // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is\n // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter\n // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter\n // not active) then this appliedModel will be null/undefined.\n this.appliedModel = null;\n this.eFilterBody = RefPlaceholder;\n this.buttonListeners = [];\n // subclasses can override this to provide alternative debounce defaults\n this.defaultDebounceMs = 0;\n }\n postConstruct() {\n this.resetTemplate();\n this.createManagedBean(\n new ManagedFocusFeature(this.getFocusableElement(), {\n handleKeyDown: this.handleKeyDown.bind(this)\n })\n );\n this.positionableFeature = new PositionableFeature(this.getPositionableElement(), {\n forcePopupParentAsOffsetParent: true\n });\n this.createBean(this.positionableFeature);\n }\n // override\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n handleKeyDown(e) {\n }\n getFilterTitle() {\n return this.translate(this.filterNameKey);\n }\n isFilterActive() {\n return !!this.appliedModel;\n }\n resetTemplate(paramsMap) {\n let eGui = this.getGui();\n eGui?.removeEventListener(\"submit\", this.onFormSubmit);\n const element = {\n tag: \"form\",\n cls: \"ag-filter-wrapper\",\n children: [\n {\n tag: \"div\",\n ref: \"eFilterBody\",\n cls: `ag-filter-body-wrapper ag-${this.getCssIdentifier()}-body-wrapper`,\n children: [this.createBodyTemplate()]\n }\n ]\n };\n this.setTemplate(element, this.getAgComponents(), paramsMap);\n eGui = this.getGui();\n eGui?.addEventListener(\"submit\", this.onFormSubmit);\n }\n isReadOnly() {\n return !!this.params.readOnly;\n }\n init(params) {\n this.setParams(params);\n this.resetUiToDefaults(true).then(() => {\n this.updateUiVisibility();\n this.setupOnBtApplyDebounce();\n });\n }\n setParams(params) {\n this.params = params;\n this.applyActive = isUseApplyButton(params);\n this.resetButtonsPanel(params);\n }\n updateParams(params) {\n this.params = params;\n this.applyActive = isUseApplyButton(params);\n this.resetUiToActiveModel(this.getModel(), () => {\n this.updateUiVisibility();\n this.setupOnBtApplyDebounce();\n });\n }\n resetButtonsPanel(newParams, oldParams) {\n const { buttons: oldButtons, readOnly: oldReadOnly } = oldParams ?? {};\n const { buttons, readOnly } = newParams;\n if (oldReadOnly === readOnly && _jsonEquals(oldButtons, buttons)) {\n return;\n }\n const hasButtons = buttons && buttons.length > 0 && !this.isReadOnly();\n if (!this.eButtonsPanel) {\n if (hasButtons) {\n this.eButtonsPanel = _createElement({ tag: \"div\", cls: \"ag-filter-apply-panel\" });\n }\n } else {\n _clearElement(this.eButtonsPanel);\n this.buttonListeners.forEach((destroyFunc) => destroyFunc());\n this.buttonListeners = [];\n }\n if (!hasButtons) {\n if (this.eButtonsPanel) {\n _removeFromParent(this.eButtonsPanel);\n }\n return;\n }\n const fragment = document.createDocumentFragment();\n const addButton = (type) => {\n let clickListener;\n const text = type ? this.translate(`${type}Filter`) : void 0;\n switch (type) {\n case \"apply\":\n clickListener = (e) => this.onBtApply(false, false, e);\n break;\n case \"clear\":\n clickListener = () => this.onBtClear();\n break;\n case \"reset\":\n clickListener = () => this.onBtReset();\n break;\n case \"cancel\":\n clickListener = (e) => {\n this.onBtCancel(e);\n };\n break;\n default:\n _warn(75);\n return;\n }\n const buttonType = type === \"apply\" ? \"submit\" : \"button\";\n const button = _loadTemplate(\n /* html */\n `<button\n type=\"${buttonType}\"\n data-ref=\"${type}FilterButton\"\n class=\"ag-button ag-standard-button ag-filter-apply-panel-button\"\n >${text}\n </button>`\n );\n this.buttonListeners.push(...this.addManagedElementListeners(button, { click: clickListener }));\n fragment.append(button);\n };\n buttons.forEach((type) => addButton(type));\n this.eButtonsPanel.append(fragment);\n this.getGui().appendChild(this.eButtonsPanel);\n }\n setupOnBtApplyDebounce() {\n const debounceMs = getDebounceMs(this.params, this.defaultDebounceMs);\n const debounceFunc = _debounce(this, this.checkApplyDebounce.bind(this), debounceMs);\n this.onBtApplyDebounce = () => {\n this.debouncePending = true;\n debounceFunc();\n };\n }\n checkApplyDebounce() {\n if (this.debouncePending) {\n this.debouncePending = false;\n this.onBtApply();\n }\n }\n getModel() {\n return this.appliedModel ?? null;\n }\n setModel(model) {\n const promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();\n return promise.then(() => {\n this.updateUiVisibility();\n this.applyModel(\"api\");\n });\n }\n onBtCancel(e) {\n this.resetUiToActiveModel(this.getModel(), () => {\n this.handleCancelEnd(e);\n });\n }\n handleCancelEnd(e) {\n if (this.params.closeOnApply) {\n this.close(e);\n }\n }\n resetUiToActiveModel(currentModel, afterUiUpdatedFunc) {\n const afterAppliedFunc = () => {\n this.onUiChanged(false, \"prevent\");\n afterUiUpdatedFunc?.();\n };\n if (currentModel != null) {\n this.setModelIntoUi(currentModel).then(afterAppliedFunc);\n } else {\n this.resetUiToDefaults().then(afterAppliedFunc);\n }\n }\n onBtClear() {\n this.resetUiToDefaults().then(() => this.onUiChanged());\n }\n onBtReset() {\n this.onBtClear();\n this.onBtApply();\n }\n /**\n * Applies changes made in the UI to the filter, and returns true if the model has changed.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n applyModel(source = \"api\") {\n const newModel = this.getModelFromUi();\n if (!this.isModelValid(newModel)) {\n return false;\n }\n const previousModel = this.appliedModel;\n this.appliedModel = newModel;\n return !this.areModelsEqual(previousModel, newModel);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isModelValid(model) {\n return true;\n }\n onFormSubmit(e) {\n e.preventDefault();\n }\n onBtApply(afterFloatingFilter = false, afterDataChange = false, e) {\n if (e) {\n e.preventDefault();\n }\n if (this.applyModel(afterDataChange ? \"rowDataUpdated\" : \"ui\")) {\n const source = \"columnFilter\";\n this.params.filterChangedCallback({ afterFloatingFilter, afterDataChange, source });\n }\n const { closeOnApply } = this.params;\n if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {\n this.close(e);\n }\n }\n onNewRowsLoaded() {\n }\n close(e) {\n if (!this.hidePopup) {\n return;\n }\n const keyboardEvent = e;\n const key = keyboardEvent && keyboardEvent.key;\n let params;\n if (key === \"Enter\" || key === \"Space\") {\n params = { keyboardEvent };\n }\n this.hidePopup(params);\n this.hidePopup = null;\n }\n /**\n * By default, if the change came from a floating filter it will be applied immediately, otherwise if there is no\n * apply button it will be applied after a debounce, otherwise it will not be applied at all. This behaviour can\n * be adjusted by using the apply parameter.\n */\n onUiChanged(fromFloatingFilter = false, apply) {\n this.updateUiVisibility();\n this.params.filterModifiedCallback();\n if (this.applyActive && !this.isReadOnly()) {\n const isValid = this.isModelValid(this.getModelFromUi());\n const applyFilterButton = this.queryForHtmlElement(`[data-ref=\"applyFilterButton\"]`);\n if (applyFilterButton) {\n _setDisabled(applyFilterButton, !isValid);\n }\n }\n if (fromFloatingFilter && !apply || apply === \"immediately\") {\n this.onBtApply(fromFloatingFilter);\n } else if (!this.applyActive && !apply || apply === \"debounce\") {\n this.onBtApplyDebounce();\n }\n }\n afterGuiAttached(params) {\n if (params) {\n this.hidePopup = params.hidePopup;\n }\n this.refreshFilterResizer(params?.container);\n }\n refreshFilterResizer(containerType) {\n const { positionableFeature, gos } = this;\n if (!positionableFeature || containerType === \"toolPanel\") {\n return;\n }\n const isResizable = containerType === \"floatingFilter\" || containerType === \"columnFilter\";\n if (isResizable) {\n positionableFeature.restoreLastSize();\n positionableFeature.setResizable(\n gos.get(\"enableRtl\") ? { bottom: true, bottomLeft: true, left: true } : { bottom: true, bottomRight: true, right: true }\n );\n } else {\n positionableFeature.removeSizeFromEl();\n positionableFeature.setResizable(false);\n }\n positionableFeature.constrainSizeToAvailableHeight(true);\n }\n afterGuiDetached() {\n this.checkApplyDebounce();\n this.positionableFeature?.constrainSizeToAvailableHeight(false);\n }\n refresh(newParams) {\n const oldParams = this.params;\n this.params = newParams;\n this.resetButtonsPanel(newParams, oldParams);\n return true;\n }\n destroy() {\n const eGui = this.getGui();\n if (eGui) {\n eGui.removeEventListener(\"submit\", this.onFormSubmit);\n }\n this.hidePopup = null;\n if (this.positionableFeature) {\n this.positionableFeature = this.destroyBean(this.positionableFeature);\n }\n this.appliedModel = null;\n super.destroy();\n }\n translate(key) {\n return this.getLocaleTextFunc()(key, FILTER_LOCALE_TEXT[key]);\n }\n getCellValue(rowNode) {\n return this.params.getValue(rowNode);\n }\n // override to control positionable feature\n getPositionableElement() {\n return this.eFilterBody;\n }\n};\n\n// packages/ag-grid-community/src/filter/floating/floatingFilterMapper.ts\nfunction _getDefaultFloatingFilterType(frameworkOverrides, def, getFromDefault) {\n if (def == null) {\n return null;\n }\n let defaultFloatingFilterType = null;\n const { compName, jsComp, fwComp } = _getFilterCompKeys(frameworkOverrides, def);\n if (compName) {\n const floatingFilterTypeMap = {\n agSetColumnFilter: \"agSetColumnFloatingFilter\",\n agMultiColumnFilter: \"agMultiColumnFloatingFilter\",\n agGroupColumnFilter: \"agGroupColumnFloatingFilter\",\n agNumberColumnFilter: \"agNumberColumnFloatingFilter\",\n agDateColumnFilter: \"agDateColumnFloatingFilter\",\n agTextColumnFilter: \"agTextColumnFloatingFilter\"\n };\n defaultFloatingFilterType = floatingFilterTypeMap[compName];\n } else {\n const usingDefaultFilter = jsComp == null && fwComp == null && def.filter === true;\n if (usingDefaultFilter) {\n defaultFloatingFilterType = getFromDefault();\n }\n }\n return defaultFloatingFilterType;\n}\n\n// packages/ag-grid-community/src/styling/layoutFeature.ts\nvar LayoutCssClasses = {\n AUTO_HEIGHT: \"ag-layout-auto-height\",\n NORMAL: \"ag-layout-normal\",\n PRINT: \"ag-layout-print\"\n};\nvar LayoutFeature = class extends BeanStub {\n constructor(view) {\n super();\n this.view = view;\n }\n postConstruct() {\n this.addManagedPropertyListener(\"domLayout\", this.updateLayoutClasses.bind(this));\n this.updateLayoutClasses();\n }\n updateLayoutClasses() {\n const domLayout = this.gos.get(\"domLayout\");\n const params = {\n autoHeight: domLayout === \"autoHeight\",\n normal: domLayout === \"normal\",\n print: domLayout === \"print\"\n };\n const cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT : params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;\n this.view.updateLayoutClasses(cssClass, params);\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/gridBodyScrollFeature.ts\nvar VIEWPORT = \"Viewport\";\nvar FAKE_V_SCROLLBAR = \"fakeVScrollComp\";\nvar HORIZONTAL_SOURCES = [\n \"fakeHScrollComp\",\n \"centerHeader\",\n \"topCenter\",\n \"bottomCenter\",\n \"stickyTopCenter\",\n \"stickyBottomCenter\"\n];\nvar SCROLL_DEBOUNCE_TIMEOUT = 100;\nvar SCROLL_END_TIMEOUT = 150;\nvar GridBodyScrollFeature = class extends BeanStub {\n constructor(eBodyViewport) {\n super();\n this.lastScrollSource = [null, null];\n this.scrollLeft = -1;\n this.nextScrollTop = -1;\n this.scrollTop = -1;\n // Used to provide approximate values of scrollTop and offsetHeight\n // without forcing the browser to recalculate styles.\n this.lastOffsetHeight = -1;\n this.lastScrollTop = -1;\n this.lastIsHorizontalScrollShowing = false;\n this.scrollTimer = 0;\n this.isVerticalPositionInvalidated = true;\n this.isHorizontalPositionInvalidated = true;\n this.eBodyViewport = eBodyViewport;\n this.resetLastHScrollDebounced = _debounce(\n this,\n () => this.lastScrollSource[1 /* Horizontal */] = null,\n SCROLL_END_TIMEOUT\n );\n this.resetLastVScrollDebounced = _debounce(\n this,\n () => this.lastScrollSource[0 /* Vertical */] = null,\n SCROLL_END_TIMEOUT\n );\n }\n wireBeans(beans) {\n this.ctrlsSvc = beans.ctrlsSvc;\n this.animationFrameSvc = beans.animationFrameSvc;\n this.visibleCols = beans.visibleCols;\n }\n destroy() {\n super.destroy();\n window.clearTimeout(this.scrollTimer);\n }\n postConstruct() {\n this.enableRtl = this.gos.get(\"enableRtl\");\n const invalidateVerticalScroll = this.invalidateVerticalScroll.bind(this);\n const invalidateHorizontalScroll = this.invalidateHorizontalScroll.bind(this);\n this.addManagedEventListeners({\n displayedColumnsWidthChanged: this.onDisplayedColumnsWidthChanged.bind(this),\n gridSizeChanged: invalidateVerticalScroll,\n // We only invalidate horizontal scrolling when the viewport switches\n // between scrollable and non-scrollable, avoiding unnecessary\n // invalidation on every gridSizeChanged event. If more properties\n // require invalidation, read/write DOM cycles may be needed.\n scrollGapChanged: invalidateHorizontalScroll\n });\n this.addManagedElementListeners(this.eBodyViewport, {\n scroll: invalidateVerticalScroll\n });\n this.ctrlsSvc.whenReady(this, (p) => {\n this.centerRowsCtrl = p.center;\n this.onDisplayedColumnsWidthChanged();\n this.addScrollListener();\n });\n }\n invalidateHorizontalScroll() {\n this.isHorizontalPositionInvalidated = true;\n }\n invalidateVerticalScroll() {\n this.isVerticalPositionInvalidated = true;\n }\n addScrollListener() {\n this.addHorizontalScrollListeners();\n this.addVerticalScrollListeners();\n }\n addHorizontalScrollListeners() {\n this.addManagedElementListeners(this.centerRowsCtrl.eViewport, {\n scroll: this.onHScroll.bind(this, VIEWPORT)\n });\n for (const source of HORIZONTAL_SOURCES) {\n const scrollPartner = this.ctrlsSvc.get(source);\n this.registerScrollPartner(scrollPartner, this.onHScroll.bind(this, source));\n }\n }\n addVerticalScrollListeners() {\n const fakeVScrollComp = this.ctrlsSvc.get(\"fakeVScrollComp\");\n const isDebounce = this.gos.get(\"debounceVerticalScrollbar\");\n const onVScroll = isDebounce ? _debounce(this, this.onVScroll.bind(this, VIEWPORT), SCROLL_DEBOUNCE_TIMEOUT) : this.onVScroll.bind(this, VIEWPORT);\n const onFakeVScroll = isDebounce ? _debounce(this, this.onVScroll.bind(this, FAKE_V_SCROLLBAR), SCROLL_DEBOUNCE_TIMEOUT) : this.onVScroll.bind(this, FAKE_V_SCROLLBAR);\n this.addManagedElementListeners(this.eBodyViewport, { scroll: onVScroll });\n this.registerScrollPartner(fakeVScrollComp, onFakeVScroll);\n }\n registerScrollPartner(comp, callback) {\n comp.onScrollCallback(callback);\n }\n onDisplayedColumnsWidthChanged() {\n if (this.enableRtl) {\n this.horizontallyScrollHeaderCenterAndFloatingCenter();\n }\n }\n horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft) {\n const notYetInitialised = this.centerRowsCtrl == null;\n if (notYetInitialised) {\n return;\n }\n if (scrollLeft === void 0) {\n scrollLeft = this.centerRowsCtrl.getCenterViewportScrollLeft();\n }\n this.setScrollLeftForAllContainersExceptCurrent(Math.abs(scrollLeft));\n }\n setScrollLeftForAllContainersExceptCurrent(scrollLeft) {\n for (const container of [...HORIZONTAL_SOURCES, VIEWPORT]) {\n if (this.lastScrollSource[1 /* Horizontal */] === container) {\n continue;\n }\n const viewport = this.getViewportForSource(container);\n _setScrollLeft(viewport, scrollLeft, this.enableRtl);\n }\n }\n getViewportForSource(source) {\n if (source === VIEWPORT) {\n return this.centerRowsCtrl.eViewport;\n }\n return this.ctrlsSvc.get(source).eViewport;\n }\n isControllingScroll(source, direction) {\n if (this.lastScrollSource[direction] == null) {\n if (direction === 0 /* Vertical */) {\n this.lastScrollSource[0] = source;\n } else {\n this.lastScrollSource[1] = source;\n }\n return true;\n }\n return this.lastScrollSource[direction] === source;\n }\n onHScroll(source) {\n if (!this.isControllingScroll(source, 1 /* Horizontal */)) {\n return;\n }\n const centerContainerViewport = this.centerRowsCtrl.eViewport;\n const { scrollLeft } = centerContainerViewport;\n if (this.shouldBlockScrollUpdate(1 /* Horizontal */, scrollLeft, true)) {\n return;\n }\n const newScrollLeft = _getScrollLeft(this.getViewportForSource(source), this.enableRtl);\n this.doHorizontalScroll(newScrollLeft);\n this.resetLastHScrollDebounced();\n }\n onVScroll(source) {\n if (!this.isControllingScroll(source, 0 /* Vertical */)) {\n return;\n }\n let scrollTop;\n if (source === VIEWPORT) {\n scrollTop = this.eBodyViewport.scrollTop;\n } else {\n scrollTop = this.ctrlsSvc.get(\"fakeVScrollComp\").getScrollPosition();\n }\n if (this.shouldBlockScrollUpdate(0 /* Vertical */, scrollTop, true)) {\n return;\n }\n const { animationFrameSvc } = this;\n animationFrameSvc?.setScrollTop(scrollTop);\n this.nextScrollTop = scrollTop;\n if (source === VIEWPORT) {\n this.ctrlsSvc.get(\"fakeVScrollComp\").setScrollPosition(scrollTop);\n } else {\n this.eBodyViewport.scrollTop = scrollTop;\n }\n if (animationFrameSvc?.active) {\n animationFrameSvc.schedule();\n } else {\n this.scrollGridIfNeeded(true);\n }\n this.resetLastVScrollDebounced();\n }\n doHorizontalScroll(scrollLeft) {\n const fakeScrollLeft = this.ctrlsSvc.get(\"fakeHScrollComp\").getScrollPosition();\n if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {\n return;\n }\n this.scrollLeft = scrollLeft;\n this.fireScrollEvent(1 /* Horizontal */);\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.centerRowsCtrl.onHorizontalViewportChanged(true);\n }\n fireScrollEvent(direction) {\n const bodyScrollEvent = {\n type: \"bodyScroll\",\n direction: direction === 1 /* Horizontal */ ? \"horizontal\" : \"vertical\",\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventSvc.dispatchEvent(bodyScrollEvent);\n window.clearTimeout(this.scrollTimer);\n this.scrollTimer = window.setTimeout(() => {\n this.scrollTimer = 0;\n this.eventSvc.dispatchEvent({\n ...bodyScrollEvent,\n type: \"bodyScrollEnd\"\n });\n }, SCROLL_END_TIMEOUT);\n }\n shouldBlockScrollUpdate(direction, scrollTo, touchOnly = false) {\n if (touchOnly && !_isIOSUserAgent()) {\n return false;\n }\n if (direction === 0 /* Vertical */) {\n return this.shouldBlockVerticalScroll(scrollTo);\n }\n return this.shouldBlockHorizontalScroll(scrollTo);\n }\n shouldBlockVerticalScroll(scrollTo) {\n const clientHeight = _getInnerHeight(this.eBodyViewport);\n const { scrollHeight } = this.eBodyViewport;\n if (scrollTo < 0 || scrollTo + clientHeight > scrollHeight) {\n return true;\n }\n return false;\n }\n shouldBlockHorizontalScroll(scrollTo) {\n const clientWidth = this.centerRowsCtrl.getCenterWidth();\n const { scrollWidth } = this.centerRowsCtrl.eViewport;\n if (this.enableRtl && _isRtlNegativeScroll()) {\n if (scrollTo > 0) {\n return true;\n }\n } else if (scrollTo < 0) {\n return true;\n }\n if (Math.abs(scrollTo) + clientWidth > scrollWidth) {\n return true;\n }\n return false;\n }\n redrawRowsAfterScroll() {\n this.fireScrollEvent(0 /* Vertical */);\n }\n // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n // back to the left to be kept in sync.\n // adding and removing the grid from the DOM both resets the scroll position and\n // triggers a resize event, so notify listeners if the scroll position has changed\n checkScrollLeft() {\n if (this.scrollLeft !== this.centerRowsCtrl.getCenterViewportScrollLeft()) {\n this.onHScroll(VIEWPORT);\n }\n }\n scrollGridIfNeeded(suppressedAnimationFrame = false) {\n const frameNeeded = this.scrollTop != this.nextScrollTop;\n if (frameNeeded) {\n this.scrollTop = this.nextScrollTop;\n if (suppressedAnimationFrame) {\n this.invalidateVerticalScroll();\n }\n this.redrawRowsAfterScroll();\n }\n return frameNeeded;\n }\n // called by scrollHorizontally method and alignedGridsService\n setHorizontalScrollPosition(hScrollPosition, fromAlignedGridsService = false) {\n const minScrollLeft = 0;\n const maxScrollLeft = this.centerRowsCtrl.eViewport.scrollWidth - this.centerRowsCtrl.getCenterWidth();\n if (!fromAlignedGridsService && this.shouldBlockScrollUpdate(1 /* Horizontal */, hScrollPosition)) {\n if (this.enableRtl && _isRtlNegativeScroll()) {\n hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;\n } else {\n hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);\n }\n }\n _setScrollLeft(this.centerRowsCtrl.eViewport, Math.abs(hScrollPosition), this.enableRtl);\n this.doHorizontalScroll(hScrollPosition);\n }\n setVerticalScrollPosition(vScrollPosition) {\n this.invalidateVerticalScroll();\n this.eBodyViewport.scrollTop = vScrollPosition;\n }\n getVScrollPosition() {\n if (!this.isVerticalPositionInvalidated) {\n const { lastOffsetHeight, lastScrollTop } = this;\n return {\n top: lastScrollTop,\n bottom: lastScrollTop + lastOffsetHeight\n };\n }\n this.isVerticalPositionInvalidated = false;\n const { scrollTop, offsetHeight } = this.eBodyViewport;\n this.lastScrollTop = scrollTop;\n this.lastOffsetHeight = offsetHeight;\n return {\n top: scrollTop,\n bottom: scrollTop + offsetHeight\n };\n }\n /** Get an approximate scroll position that returns the last real value read.\n * This is useful for avoiding repeated DOM reads that force the browser to recalculate styles.\n * This can have big performance improvements but may not be 100% accurate so only use if this is acceptable.\n */\n getApproximateVScollPosition() {\n if (this.lastScrollTop >= 0 && this.lastOffsetHeight >= 0) {\n return {\n top: this.scrollTop,\n bottom: this.scrollTop + this.lastOffsetHeight\n };\n }\n return this.getVScrollPosition();\n }\n getHScrollPosition() {\n return this.centerRowsCtrl.getHScrollPosition();\n }\n isHorizontalScrollShowing() {\n if (this.isHorizontalPositionInvalidated) {\n this.lastIsHorizontalScrollShowing = this.centerRowsCtrl.isHorizontalScrollShowing();\n this.isHorizontalPositionInvalidated = false;\n }\n return this.lastIsHorizontalScrollShowing;\n }\n // called by the headerRootComp and moveColumnController\n scrollHorizontally(pixels) {\n const oldScrollPosition = this.centerRowsCtrl.eViewport.scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.centerRowsCtrl.eViewport.scrollLeft - oldScrollPosition;\n }\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n scrollToTop() {\n this.eBodyViewport.scrollTop = 0;\n }\n // Valid values for position are bottom, middle and top\n ensureNodeVisible(comparator, position = null) {\n const { rowModel } = this.beans;\n const rowCount = rowModel.getRowCount();\n let indexToSelect = -1;\n for (let i = 0; i < rowCount; i++) {\n const node = rowModel.getRow(i);\n if (typeof comparator === \"function\") {\n const predicate = comparator;\n if (node && predicate(node)) {\n indexToSelect = i;\n break;\n }\n } else {\n if (comparator === node || comparator === node.data) {\n indexToSelect = i;\n break;\n }\n }\n }\n if (indexToSelect >= 0) {\n this.ensureIndexVisible(indexToSelect, position);\n }\n }\n // Valid values for position are bottom, middle and top\n // position should be {'top','middle','bottom', or undefined/null}.\n // if undefined/null, then the grid will to the minimal amount of scrolling,\n // eg if grid needs to scroll up, it scrolls until row is on top,\n // if grid needs to scroll down, it scrolls until row is on bottom,\n // if row is already in view, grid does not scroll\n ensureIndexVisible(index, position) {\n if (_isDomLayout(this.gos, \"print\")) {\n return;\n }\n const { rowModel } = this.beans;\n const rowCount = rowModel.getRowCount();\n if (typeof index !== \"number\" || index < 0 || index >= rowCount) {\n _warn(88, { index });\n return;\n }\n const { frameworkOverrides, pageBounds, rowContainerHeight: heightScaler, rowRenderer } = this.beans;\n frameworkOverrides.wrapIncoming(() => {\n const gridBodyCtrl = this.ctrlsSvc.getGridBodyCtrl();\n const rowNode = rowModel.getRow(index);\n let rowGotShiftedDuringOperation;\n let stickyHeightsChanged;\n let attempt = 0;\n this.invalidateVerticalScroll();\n do {\n const { stickyTopHeight, stickyBottomHeight } = gridBodyCtrl;\n const startingRowTop = rowNode.rowTop;\n const startingRowHeight = rowNode.rowHeight;\n const paginationOffset = pageBounds.getPixelOffset();\n const rowTopPixel = rowNode.rowTop - paginationOffset;\n const rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n const scrollPosition = this.getVScrollPosition();\n const heightOffset = heightScaler.divStretchOffset;\n const vScrollTop = scrollPosition.top + heightOffset;\n const vScrollBottom = scrollPosition.bottom + heightOffset;\n const viewportHeight = vScrollBottom - vScrollTop;\n const pxTop = heightScaler.getScrollPositionForPixel(rowTopPixel);\n const pxBottom = heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n const pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n const rowAboveViewport = vScrollTop + stickyTopHeight > rowTopPixel;\n const rowBelowViewport = vScrollBottom - stickyBottomHeight < rowBottomPixel;\n let newScrollPosition = null;\n if (position === \"top\") {\n newScrollPosition = pxTop - stickyTopHeight;\n } else if (position === \"bottom\") {\n newScrollPosition = pxBottom + stickyBottomHeight;\n } else if (position === \"middle\") {\n newScrollPosition = pxMiddle;\n } else if (rowAboveViewport) {\n newScrollPosition = pxTop - stickyTopHeight;\n } else if (rowBelowViewport) {\n newScrollPosition = pxBottom + stickyBottomHeight;\n }\n if (newScrollPosition !== null) {\n this.setVerticalScrollPosition(newScrollPosition);\n rowRenderer.redraw({ afterScroll: true });\n }\n rowGotShiftedDuringOperation = startingRowTop !== rowNode.rowTop || startingRowHeight !== rowNode.rowHeight;\n stickyHeightsChanged = stickyTopHeight !== gridBodyCtrl.stickyTopHeight || stickyBottomHeight !== gridBodyCtrl.stickyBottomHeight;\n attempt++;\n } while ((rowGotShiftedDuringOperation || stickyHeightsChanged) && attempt < 10);\n this.animationFrameSvc?.flushAllFrames();\n });\n }\n ensureColumnVisible(key, position = \"auto\") {\n const { colModel, frameworkOverrides } = this.beans;\n const column = colModel.getCol(key);\n if (!column) {\n return;\n }\n if (column.isPinned()) {\n return;\n }\n if (!this.visibleCols.isColDisplayed(column)) {\n return;\n }\n const newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);\n frameworkOverrides.wrapIncoming(() => {\n if (newHorizontalScroll !== null) {\n this.centerRowsCtrl.setCenterViewportScrollLeft(newHorizontalScroll);\n }\n this.centerRowsCtrl.onHorizontalViewportChanged();\n this.animationFrameSvc?.flushAllFrames();\n });\n }\n getPositionedHorizontalScroll(column, position) {\n const { columnBeforeStart, columnAfterEnd } = this.isColumnOutsideViewport(column);\n const viewportTooSmallForColumn = this.centerRowsCtrl.getCenterWidth() < column.getActualWidth();\n const viewportWidth = this.centerRowsCtrl.getCenterWidth();\n const isRtl = this.enableRtl;\n let alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;\n let alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;\n if (position !== \"auto\") {\n alignColToStart = position === \"start\";\n alignColToEnd = position === \"end\";\n }\n const isMiddle = position === \"middle\";\n if (alignColToStart || alignColToEnd || isMiddle) {\n const { colLeft, colMiddle, colRight } = this.getColumnBounds(column);\n if (isMiddle) {\n return colMiddle - viewportWidth / 2;\n }\n if (alignColToStart) {\n return isRtl ? colRight : colLeft;\n }\n return isRtl ? colLeft - viewportWidth : colRight - viewportWidth;\n }\n return null;\n }\n isColumnOutsideViewport(column) {\n const { start: viewportStart, end: viewportEnd } = this.getViewportBounds();\n const { colLeft, colRight } = this.getColumnBounds(column);\n const isRtl = this.enableRtl;\n const columnBeforeStart = isRtl ? viewportStart > colRight : viewportEnd < colRight;\n const columnAfterEnd = isRtl ? viewportEnd < colLeft : viewportStart > colLeft;\n return { columnBeforeStart, columnAfterEnd };\n }\n getColumnBounds(column) {\n const isRtl = this.enableRtl;\n const bodyWidth = this.visibleCols.bodyWidth;\n const colWidth = column.getActualWidth();\n const colLeft = column.getLeft();\n const multiplier = isRtl ? -1 : 1;\n const colLeftPixel = isRtl ? bodyWidth - colLeft : colLeft;\n const colRightPixel = colLeftPixel + colWidth * multiplier;\n const colMidPixel = colLeftPixel + colWidth / 2 * multiplier;\n return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };\n }\n getViewportBounds() {\n const viewportWidth = this.centerRowsCtrl.getCenterWidth();\n const scrollPosition = this.centerRowsCtrl.getCenterViewportScrollLeft();\n const viewportStartPixel = scrollPosition;\n const viewportEndPixel = viewportWidth + scrollPosition;\n return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/centerWidthFeature.ts\nvar CenterWidthFeature = class extends BeanStub {\n constructor(callback, addSpacer = false) {\n super();\n this.callback = callback;\n this.addSpacer = addSpacer;\n }\n postConstruct() {\n const listener = this.setWidth.bind(this);\n this.addManagedPropertyListener(\"domLayout\", listener);\n this.addManagedEventListeners({\n columnContainerWidthChanged: listener,\n displayedColumnsChanged: listener,\n leftPinnedWidthChanged: listener\n });\n if (this.addSpacer) {\n this.addManagedEventListeners({\n rightPinnedWidthChanged: listener,\n scrollVisibilityChanged: listener,\n scrollbarWidthChanged: listener\n });\n }\n this.setWidth();\n }\n setWidth() {\n const printLayout = _isDomLayout(this.gos, \"print\");\n const { visibleCols, scrollVisibleSvc } = this.beans;\n const centerWidth = visibleCols.bodyWidth;\n const leftWidth = visibleCols.getColsLeftWidth();\n const rightWidth = visibleCols.getDisplayedColumnsRightWidth();\n let totalWidth;\n if (printLayout) {\n totalWidth = centerWidth + leftWidth + rightWidth;\n } else {\n totalWidth = centerWidth;\n if (this.addSpacer) {\n const relevantWidth = this.gos.get(\"enableRtl\") ? leftWidth : rightWidth;\n if (relevantWidth === 0 && scrollVisibleSvc.verticalScrollShowing) {\n totalWidth += scrollVisibleSvc.getScrollbarWidth();\n }\n }\n }\n this.callback(totalWidth);\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/viewportSizeFeature.ts\nvar ViewportSizeFeature = class extends BeanStub {\n constructor(centerContainerCtrl) {\n super();\n this.centerContainerCtrl = centerContainerCtrl;\n }\n wireBeans(beans) {\n this.scrollVisibleSvc = beans.scrollVisibleSvc;\n }\n postConstruct() {\n this.beans.ctrlsSvc.whenReady(this, (p) => {\n this.gridBodyCtrl = p.gridBodyCtrl;\n this.listenForResize();\n });\n this.addManagedEventListeners({ scrollbarWidthChanged: this.onScrollbarWidthChanged.bind(this) });\n this.addManagedPropertyListeners([\"alwaysShowHorizontalScroll\", \"alwaysShowVerticalScroll\"], () => {\n this.checkViewportAndScrolls();\n });\n }\n listenForResize() {\n const { beans, centerContainerCtrl, gridBodyCtrl } = this;\n const listener = () => {\n _requestAnimationFrame(beans, () => {\n this.onCenterViewportResized();\n });\n };\n centerContainerCtrl.registerViewportResizeListener(listener);\n gridBodyCtrl.registerBodyViewportResizeListener(listener);\n }\n onScrollbarWidthChanged() {\n this.checkViewportAndScrolls();\n }\n onCenterViewportResized() {\n this.scrollVisibleSvc.updateScrollGap();\n if (this.centerContainerCtrl.isViewportInTheDOMTree()) {\n const { pinnedCols, colFlex } = this.beans;\n pinnedCols?.keepPinnedColumnsNarrowerThanViewport();\n this.checkViewportAndScrolls();\n const newWidth = this.centerContainerCtrl.getCenterWidth();\n if (newWidth !== this.centerWidth) {\n this.centerWidth = newWidth;\n colFlex?.refreshFlexedColumns({\n viewportWidth: this.centerWidth,\n updateBodyWidths: true,\n fireResizedEvent: true\n });\n }\n } else {\n this.bodyHeight = 0;\n }\n }\n // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n checkViewportAndScrolls() {\n this.updateScrollVisibleService();\n this.checkBodyHeight();\n this.onHorizontalViewportChanged();\n this.gridBodyCtrl.scrollFeature.checkScrollLeft();\n }\n getBodyHeight() {\n return this.bodyHeight;\n }\n checkBodyHeight() {\n const eBodyViewport = this.gridBodyCtrl.eBodyViewport;\n const bodyHeight = _getInnerHeight(eBodyViewport);\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n this.eventSvc.dispatchEvent({\n type: \"bodyHeightChanged\"\n });\n }\n }\n updateScrollVisibleService() {\n this.updateScrollVisibleServiceImpl();\n setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n }\n updateScrollVisibleServiceImpl() {\n const params = {\n horizontalScrollShowing: this.centerContainerCtrl.isHorizontalScrollShowing(),\n verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()\n };\n this.scrollVisibleSvc.setScrollsVisible(params);\n }\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged\n onHorizontalViewportChanged() {\n const scrollWidth = this.centerContainerCtrl.getCenterWidth();\n const scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();\n this.beans.colViewport.setScrollPosition(scrollWidth, scrollPosition);\n }\n};\n\n// packages/ag-grid-community/src/styling/stylingUtils.ts\nfunction processClassRules(expressionSvc, previousClassRules, classRules, params, onApplicableClass, onNotApplicableClass) {\n if (classRules == null && previousClassRules == null) {\n return;\n }\n const classesToApply = {};\n const classesToRemove = {};\n const forEachSingleClass = (className, callback) => {\n className.split(\" \").forEach((singleClass) => {\n if (singleClass.trim() == \"\")\n return;\n callback(singleClass);\n });\n };\n if (classRules) {\n const classNames = Object.keys(classRules);\n for (let i = 0; i < classNames.length; i++) {\n const className = classNames[i];\n const rule = classRules[className];\n let resultOfRule;\n if (typeof rule === \"string\") {\n resultOfRule = expressionSvc ? expressionSvc.evaluate(rule, params) : true;\n } else if (typeof rule === \"function\") {\n resultOfRule = rule(params);\n }\n forEachSingleClass(className, (singleClass) => {\n resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;\n });\n }\n }\n if (previousClassRules && onNotApplicableClass) {\n Object.keys(previousClassRules).forEach(\n (className) => forEachSingleClass(className, (singleClass) => {\n if (!classesToApply[singleClass]) {\n classesToRemove[singleClass] = true;\n }\n })\n );\n }\n if (onNotApplicableClass) {\n Object.keys(classesToRemove).forEach(onNotApplicableClass);\n }\n Object.keys(classesToApply).forEach(onApplicableClass);\n}\n\n// packages/ag-grid-community/src/styling/rowStyleService.ts\nfunction calculateRowLevel(rowNode) {\n if (rowNode.group) {\n return rowNode.level;\n }\n const parent = rowNode.parent;\n return parent ? parent.level + 1 : 0;\n}\nvar RowStyleService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowStyleSvc\";\n }\n processClassesFromGridOptions(classes, rowNode) {\n const gos = this.gos;\n const process = (rowCls) => {\n if (typeof rowCls === \"string\") {\n classes.push(rowCls);\n } else if (Array.isArray(rowCls)) {\n rowCls.forEach((e) => classes.push(e));\n }\n };\n const rowClass = gos.get(\"rowClass\");\n if (rowClass) {\n process(rowClass);\n }\n const rowClassFunc = gos.getCallback(\"getRowClass\");\n if (rowClassFunc) {\n const params = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex\n };\n const rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n }\n preProcessRowClassRules(classes, rowNode) {\n this.processRowClassRules(\n rowNode,\n (className) => {\n classes.push(className);\n },\n () => {\n }\n );\n }\n processRowClassRules(rowNode, onApplicableClass, onNotApplicableClass) {\n const { gos, expressionSvc } = this.beans;\n const rowClassParams = _addGridCommonParams(gos, {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex\n });\n processClassRules(\n expressionSvc,\n void 0,\n gos.get(\"rowClassRules\"),\n rowClassParams,\n onApplicableClass,\n onNotApplicableClass\n );\n }\n processStylesFromGridOptions(rowNode) {\n const gos = this.gos;\n const rowStyle = gos.get(\"rowStyle\");\n const rowStyleFunc = gos.getCallback(\"getRowStyle\");\n let rowStyleFuncResult;\n if (rowStyleFunc) {\n const params = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n if (rowStyleFuncResult || rowStyle) {\n return Object.assign({}, rowStyle, rowStyleFuncResult);\n }\n return void 0;\n }\n};\n\n// packages/ag-grid-community/src/rendering/row/rowCtrl.ts\nvar instanceIdSequence3 = 0;\nvar DOM_DATA_KEY_ROW_CTRL = \"renderedRow\";\nvar RowCtrl = class extends BeanStub {\n constructor(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {\n super();\n this.rowNode = rowNode;\n this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n this.printLayout = printLayout;\n this.allRowGuis = [];\n this.active = true;\n this.centerCellCtrls = { list: [], map: {} };\n this.leftCellCtrls = { list: [], map: {} };\n this.rightCellCtrls = { list: [], map: {} };\n this.slideInAnimation = {\n left: false,\n center: false,\n right: false,\n fullWidth: false\n };\n this.fadeInAnimation = {\n left: false,\n center: false,\n right: false,\n fullWidth: false\n };\n this.rowDragComps = [];\n this.lastMouseDownOnDragger = false;\n this.emptyStyle = {};\n this.updateColumnListsPending = false;\n this.rowId = null;\n /** sanitised */\n this.businessKey = null;\n this.beans = beans;\n this.gos = beans.gos;\n this.paginationPage = beans.pagination?.getCurrentPage() ?? 0;\n this.suppressRowTransform = this.gos.get(\"suppressRowTransform\");\n this.instanceId = rowNode.id + \"-\" + instanceIdSequence3++;\n this.rowId = _escapeString(rowNode.id);\n this.initRowBusinessKey();\n this.rowFocused = beans.focusSvc.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n this.rowLevel = calculateRowLevel(this.rowNode);\n this.setRowType();\n this.setAnimateFlags(animateIn);\n this.rowStyles = this.processStylesFromGridOptions();\n this.addListeners();\n }\n initRowBusinessKey() {\n this.businessKeyForNodeFunc = this.gos.get(\"getBusinessKeyForNode\");\n this.updateRowBusinessKey();\n }\n updateRowBusinessKey() {\n if (typeof this.businessKeyForNodeFunc !== \"function\") {\n return;\n }\n const businessKey = this.businessKeyForNodeFunc(this.rowNode);\n this.businessKey = _escapeString(businessKey);\n }\n updateGui(containerType, gui) {\n if (containerType === \"left\") {\n this.leftGui = gui;\n } else if (containerType === \"right\") {\n this.rightGui = gui;\n } else if (containerType === \"fullWidth\") {\n this.fullWidthGui = gui;\n } else {\n this.centerGui = gui;\n }\n }\n setComp(rowComp, element, containerType, compBean) {\n const { context, focusSvc } = this.beans;\n compBean = setupCompBean(this, context, compBean);\n const gui = { rowComp, element, containerType, compBean };\n this.allRowGuis.push(gui);\n this.updateGui(containerType, gui);\n this.initialiseRowComp(gui);\n const rowNode = this.rowNode;\n const isSsrmLoadingRow = this.rowType === \"FullWidthLoading\" || rowNode.stub;\n const isIrmLoadingRow = !rowNode.data && this.beans.rowModel.getType() === \"infinite\";\n if (!isSsrmLoadingRow && !isIrmLoadingRow && !rowNode.rowPinned) {\n this.beans.rowRenderer.dispatchFirstDataRenderedEvent();\n }\n const focusableElement = this.fullWidthGui?.element;\n if (focusableElement) {\n if (!this.editing && focusSvc.isRowFocused(rowNode.rowIndex, rowNode.rowPinned) && focusSvc.shouldTakeFocus()) {\n setTimeout(() => focusableElement.focus({ preventScroll: true }), 0);\n }\n }\n }\n unsetComp(containerType) {\n this.allRowGuis = this.allRowGuis.filter((rowGui) => rowGui.containerType !== containerType);\n this.updateGui(containerType, void 0);\n }\n isCacheable() {\n return this.rowType === \"FullWidthDetail\" && this.gos.get(\"keepDetailRows\");\n }\n setCached(cached) {\n const displayValue = cached ? \"none\" : \"\";\n this.allRowGuis.forEach((rg) => rg.element.style.display = displayValue);\n }\n initialiseRowComp(gui) {\n const gos = this.gos;\n this.onSuppressCellFocusChanged(this.beans.gos.get(\"suppressCellFocus\"));\n this.listenOnDomOrder(gui);\n this.onRowHeightChanged(gui);\n this.updateRowIndexes(gui);\n this.setFocusedClasses(gui);\n this.setStylesFromGridOptions(false, gui);\n if (_isRowSelection(gos) && this.rowNode.selectable) {\n this.onRowSelected(gui);\n }\n this.updateColumnLists(!this.useAnimationFrameForCreate);\n const comp = gui.rowComp;\n const initialRowClasses = this.getInitialRowClasses(gui.containerType);\n initialRowClasses.forEach((name) => comp.addOrRemoveCssClass(name, true));\n this.executeSlideAndFadeAnimations(gui);\n if (this.rowNode.group) {\n _setAriaExpanded(gui.element, this.rowNode.expanded == true);\n }\n this.setRowCompRowId(comp);\n this.setRowCompRowBusinessKey(comp);\n _setDomData(gos, gui.element, DOM_DATA_KEY_ROW_CTRL, this);\n gui.compBean.addDestroyFunc(() => _setDomData(gos, gui.element, DOM_DATA_KEY_ROW_CTRL, null));\n if (this.useAnimationFrameForCreate) {\n this.beans.animationFrameSvc.createTask(\n this.addHoverFunctionality.bind(this, gui),\n this.rowNode.rowIndex,\n \"p2\",\n false\n );\n } else {\n this.addHoverFunctionality(gui);\n }\n if (this.isFullWidth()) {\n this.setupFullWidth(gui);\n }\n if (gos.get(\"rowDragEntireRow\")) {\n this.addRowDraggerToRow(gui);\n }\n if (this.useAnimationFrameForCreate) {\n this.beans.animationFrameSvc.addDestroyTask(() => {\n if (!this.isAlive()) {\n return;\n }\n gui.rowComp.addOrRemoveCssClass(\"ag-after-created\", true);\n });\n }\n this.executeProcessRowPostCreateFunc();\n }\n setRowCompRowBusinessKey(comp) {\n if (this.businessKey == null) {\n return;\n }\n comp.setRowBusinessKey(this.businessKey);\n }\n setRowCompRowId(comp) {\n const rowId = _escapeString(this.rowNode.id);\n this.rowId = rowId;\n if (rowId == null) {\n return;\n }\n comp.setRowId(rowId);\n }\n executeSlideAndFadeAnimations(gui) {\n const { containerType } = gui;\n const shouldSlide = this.slideInAnimation[containerType];\n if (shouldSlide) {\n _batchCall(() => {\n this.onTopChanged();\n });\n this.slideInAnimation[containerType] = false;\n }\n const shouldFade = this.fadeInAnimation[containerType];\n if (shouldFade) {\n _batchCall(() => {\n gui.rowComp.addOrRemoveCssClass(\"ag-opacity-zero\", false);\n });\n this.fadeInAnimation[containerType] = false;\n }\n }\n addRowDraggerToRow(gui) {\n const rowDragComp = this.beans.rowDragSvc?.createRowDragCompForRow(this.rowNode, gui.element);\n if (!rowDragComp) {\n return;\n }\n const rowDragBean = this.createBean(rowDragComp, this.beans.context);\n this.rowDragComps.push(rowDragBean);\n gui.compBean.addDestroyFunc(() => {\n this.rowDragComps = this.rowDragComps.filter((r) => r !== rowDragBean);\n this.destroyBean(rowDragBean, this.beans.context);\n });\n }\n setupFullWidth(gui) {\n const pinned = this.getPinnedForContainer(gui.containerType);\n const compDetails = this.createFullWidthCompDetails(gui.element, pinned);\n gui.rowComp.showFullWidth(compDetails);\n }\n getFullWidthCellRenderers() {\n if (this.gos.get(\"embedFullWidthRows\")) {\n return this.allRowGuis.map((gui) => gui?.rowComp?.getFullWidthCellRenderer());\n }\n return [this.fullWidthGui?.rowComp?.getFullWidthCellRenderer()];\n }\n executeProcessRowPostCreateFunc() {\n const func = this.gos.getCallback(\"processRowPostCreate\");\n if (!func || !this.areAllContainersReady()) {\n return;\n }\n const params = {\n // areAllContainersReady asserts that centerGui is not null\n eRow: this.centerGui.element,\n ePinnedLeftRow: this.leftGui ? this.leftGui.element : void 0,\n ePinnedRightRow: this.rightGui ? this.rightGui.element : void 0,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this)\n };\n func(params);\n }\n areAllContainersReady() {\n const {\n leftGui,\n centerGui,\n rightGui,\n beans: { visibleCols }\n } = this;\n const isLeftReady = !!leftGui || !visibleCols.isPinningLeft();\n const isCenterReady = !!centerGui;\n const isRightReady = !!rightGui || !visibleCols.isPinningRight();\n return isLeftReady && isCenterReady && isRightReady;\n }\n isNodeFullWidthCell() {\n if (this.rowNode.detail) {\n return true;\n }\n const isFullWidthCellFunc = this.beans.gos.getCallback(\"isFullWidthRow\");\n return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this.rowNode }) : false;\n }\n setRowType() {\n const isStub = this.rowNode.stub && !this.gos.get(\"suppressServerSideFullWidthLoadingRow\") && !this.gos.get(\"groupHideOpenParents\");\n const isFullWidthCell = this.isNodeFullWidthCell();\n const isDetailCell = this.gos.get(\"masterDetail\") && this.rowNode.detail;\n const pivotMode = this.beans.colModel.isPivotMode();\n const isGroupRow = !!this.rowNode.group && !this.rowNode.footer;\n const isFullWidthGroup = isGroupRow && _isGroupUseEntireRow(this.gos, pivotMode);\n if (isStub) {\n this.rowType = \"FullWidthLoading\";\n } else if (isDetailCell) {\n this.rowType = \"FullWidthDetail\";\n } else if (isFullWidthCell) {\n this.rowType = \"FullWidth\";\n } else if (isFullWidthGroup) {\n this.rowType = \"FullWidthGroup\";\n } else {\n this.rowType = \"Normal\";\n }\n }\n updateColumnLists(suppressAnimationFrame = false, useFlushSync = false) {\n if (this.isFullWidth()) {\n return;\n }\n const { animationFrameSvc } = this.beans;\n const noAnimation = !animationFrameSvc?.active || suppressAnimationFrame || this.printLayout;\n if (noAnimation) {\n this.updateColumnListsImpl(useFlushSync);\n return;\n }\n if (this.updateColumnListsPending) {\n return;\n }\n animationFrameSvc.createTask(\n () => {\n if (!this.active) {\n return;\n }\n this.updateColumnListsImpl(true);\n },\n this.rowNode.rowIndex,\n \"p1\",\n false\n );\n this.updateColumnListsPending = true;\n }\n /**\n * Overridden by SpannedRowCtrl\n */\n getNewCellCtrl(col) {\n const isCellSpan = this.beans.rowSpanSvc?.isCellSpanning(col, this.rowNode);\n if (isCellSpan) {\n return void 0;\n }\n return new CellCtrl(col, this.rowNode, this.beans, this);\n }\n /**\n * Overridden by SpannedRowCtrl, if span context changes cell needs rebuilt\n */\n shouldRecreateCellCtrl(cell) {\n return !!this.beans.rowSpanSvc?.isCellSpanning(cell.column, this.rowNode);\n }\n createCellCtrls(prev, cols, pinned = null) {\n const res = {\n list: [],\n map: {}\n };\n const addCell = (colInstanceId, cellCtrl, index) => {\n if (index != null) {\n res.list.splice(index, 0, cellCtrl);\n } else {\n res.list.push(cellCtrl);\n }\n res.map[colInstanceId] = cellCtrl;\n };\n const colsFromPrev = [];\n for (const col of cols) {\n const colInstanceId = col.getInstanceId();\n let cellCtrl = prev.map[colInstanceId];\n if (cellCtrl && this.shouldRecreateCellCtrl(cellCtrl)) {\n cellCtrl.destroy();\n cellCtrl = void 0;\n }\n if (!cellCtrl) {\n cellCtrl = this.getNewCellCtrl(col);\n }\n if (!cellCtrl) {\n continue;\n }\n addCell(colInstanceId, cellCtrl);\n }\n if (this.beans.focusSvc.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned)) {\n const column = this.beans.focusSvc.getFocusedCell().column;\n const focusedColInstanceId = column.getInstanceId();\n const focusedCellCtrl = res.map[focusedColInstanceId];\n if (!focusedCellCtrl && column.getPinned() == pinned && this.beans.visibleCols.allCols.includes(column)) {\n const cellCtrl = this.getNewCellCtrl(column);\n if (cellCtrl) {\n addCell(focusedColInstanceId, cellCtrl);\n }\n }\n }\n for (const prevCellCtrl of prev.list) {\n const colInstanceId = prevCellCtrl.column.getInstanceId();\n const cellInResult = res.map[colInstanceId] != null;\n if (cellInResult) {\n continue;\n }\n const keepCell = !this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);\n if (keepCell) {\n colsFromPrev.push([colInstanceId, prevCellCtrl]);\n } else {\n prevCellCtrl.destroy();\n }\n }\n if (colsFromPrev.length) {\n for (const [colInstanceId, cellCtrl] of colsFromPrev) {\n const index = res.list.findIndex((ctrl) => ctrl.column.getLeft() > cellCtrl.column.getLeft());\n const normalisedIndex = index === -1 ? void 0 : Math.max(index - 1, 0);\n addCell(colInstanceId, cellCtrl, normalisedIndex);\n }\n }\n return res;\n }\n updateColumnListsImpl(useFlushSync) {\n this.updateColumnListsPending = false;\n this.createAllCellCtrls();\n this.setCellCtrls(useFlushSync);\n }\n setCellCtrls(useFlushSync) {\n this.allRowGuis.forEach((item) => {\n const cellControls = this.getCellCtrlsForContainer(item.containerType);\n item.rowComp.setCellCtrls(cellControls, useFlushSync);\n });\n }\n getCellCtrlsForContainer(containerType) {\n switch (containerType) {\n case \"left\":\n return this.leftCellCtrls.list;\n case \"right\":\n return this.rightCellCtrls.list;\n case \"fullWidth\":\n return [];\n case \"center\":\n return this.centerCellCtrls.list;\n }\n }\n createAllCellCtrls() {\n const colViewport = this.beans.colViewport;\n const presentedColsService = this.beans.visibleCols;\n if (this.printLayout) {\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, presentedColsService.allCols);\n this.leftCellCtrls = { list: [], map: {} };\n this.rightCellCtrls = { list: [], map: {} };\n } else {\n const centerCols = colViewport.getColsWithinViewport(this.rowNode);\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);\n const leftCols = presentedColsService.getLeftColsForRow(this.rowNode);\n this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, \"left\");\n const rightCols = presentedColsService.getRightColsForRow(this.rowNode);\n this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, \"right\");\n }\n }\n isCellEligibleToBeRemoved(cellCtrl, nextContainerPinned) {\n const REMOVE_CELL = true;\n const KEEP_CELL = false;\n const { column } = cellCtrl;\n if (column.getPinned() != nextContainerPinned) {\n return REMOVE_CELL;\n }\n if (this.shouldRecreateCellCtrl(cellCtrl)) {\n return REMOVE_CELL;\n }\n const { editing } = cellCtrl;\n const { visibleCols } = this.beans;\n const focused = cellCtrl.isCellFocused();\n const mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n const displayedColumns = visibleCols.allCols;\n const cellStillDisplayed = displayedColumns.indexOf(column) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n }\n getDomOrder() {\n const isEnsureDomOrder = this.gos.get(\"ensureDomOrder\");\n return isEnsureDomOrder || _isDomLayout(this.gos, \"print\");\n }\n listenOnDomOrder(gui) {\n const listener = () => {\n gui.rowComp.setDomOrder(this.getDomOrder());\n };\n gui.compBean.addManagedPropertyListeners([\"domLayout\", \"ensureDomOrder\"], listener);\n }\n setAnimateFlags(animateIn) {\n if (this.rowNode.sticky || !animateIn) {\n return;\n }\n const oldRowTopExists = _exists(this.rowNode.oldRowTop);\n const { visibleCols } = this.beans;\n const pinningLeft = visibleCols.isPinningLeft();\n const pinningRight = visibleCols.isPinningRight();\n if (oldRowTopExists) {\n const { slideInAnimation } = this;\n if (this.isFullWidth() && !this.gos.get(\"embedFullWidthRows\")) {\n slideInAnimation.fullWidth = true;\n return;\n }\n slideInAnimation.center = true;\n slideInAnimation.left = pinningLeft;\n slideInAnimation.right = pinningRight;\n } else {\n const { fadeInAnimation } = this;\n if (this.isFullWidth() && !this.gos.get(\"embedFullWidthRows\")) {\n fadeInAnimation.fullWidth = true;\n return;\n }\n fadeInAnimation.center = true;\n fadeInAnimation.left = pinningLeft;\n fadeInAnimation.right = pinningRight;\n }\n }\n isFullWidth() {\n return this.rowType !== \"Normal\";\n }\n refreshFullWidth() {\n const tryRefresh = (gui, pinned) => {\n if (!gui) {\n return true;\n }\n return gui.rowComp.refreshFullWidth(() => {\n const compDetails = this.createFullWidthCompDetails(gui.element, pinned);\n return compDetails.params;\n });\n };\n const fullWidthSuccess = tryRefresh(this.fullWidthGui, null);\n const centerSuccess = tryRefresh(this.centerGui, null);\n const leftSuccess = tryRefresh(this.leftGui, \"left\");\n const rightSuccess = tryRefresh(this.rightGui, \"right\");\n const allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;\n return allFullWidthRowsRefreshed;\n }\n addListeners() {\n this.addManagedListeners(this.rowNode, {\n heightChanged: () => this.onRowHeightChanged(),\n rowSelected: () => this.onRowSelected(),\n rowIndexChanged: this.onRowIndexChanged.bind(this),\n topChanged: this.onTopChanged.bind(this),\n ...this.beans.expansionSvc?.getRowExpandedListeners(this) ?? {}\n });\n if (this.rowNode.detail) {\n this.addManagedListeners(this.rowNode.parent, { dataChanged: this.onRowNodeDataChanged.bind(this) });\n }\n this.addManagedListeners(this.rowNode, {\n dataChanged: this.onRowNodeDataChanged.bind(this),\n cellChanged: this.postProcessCss.bind(this),\n rowHighlightChanged: this.onRowNodeHighlightChanged.bind(this),\n draggingChanged: this.postProcessRowDragging.bind(this),\n uiLevelChanged: this.onUiLevelChanged.bind(this)\n });\n this.addManagedListeners(this.beans.eventSvc, {\n paginationPixelOffsetChanged: this.onPaginationPixelOffsetChanged.bind(this),\n heightScaleChanged: this.onTopChanged.bind(this),\n displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this),\n virtualColumnsChanged: this.onVirtualColumnsChanged.bind(this),\n cellFocused: this.onCellFocusChanged.bind(this),\n cellFocusCleared: this.onCellFocusChanged.bind(this),\n paginationChanged: this.onPaginationChanged.bind(this),\n modelUpdated: this.refreshFirstAndLastRowStyles.bind(this),\n columnMoved: () => this.updateColumnLists()\n });\n if (this.beans.rowSpanSvc) {\n this.addManagedListeners(this.beans.rowSpanSvc, {\n spannedCellsUpdated: ({ pinned }) => {\n if (pinned && !this.rowNode.rowPinned) {\n return;\n }\n this.updateColumnLists();\n }\n });\n }\n this.addDestroyFunc(() => {\n this.rowDragComps = this.destroyBeans(this.rowDragComps, this.beans.context);\n this.tooltipFeature = this.destroyBean(this.tooltipFeature, this.beans.context);\n });\n this.addManagedPropertyListeners(\n [\"rowStyle\", \"getRowStyle\", \"rowClass\", \"getRowClass\", \"rowClassRules\"],\n this.postProcessCss.bind(this)\n );\n this.addManagedPropertyListener(\"rowDragEntireRow\", () => {\n const useRowDragEntireRow = this.gos.get(\"rowDragEntireRow\");\n if (useRowDragEntireRow) {\n this.allRowGuis.forEach((gui) => {\n this.addRowDraggerToRow(gui);\n });\n return;\n }\n this.rowDragComps = this.destroyBeans(this.rowDragComps, this.beans.context);\n });\n this.addListenersForCellComps();\n }\n addListenersForCellComps() {\n this.addManagedListeners(this.rowNode, {\n rowIndexChanged: () => {\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onRowIndexChanged());\n },\n cellChanged: (event) => {\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onCellChanged(event));\n }\n });\n }\n onRowNodeDataChanged(event) {\n const fullWidthChanged = this.isFullWidth() !== !!this.isNodeFullWidthCell();\n if (fullWidthChanged) {\n this.beans.rowRenderer.redrawRow(this.rowNode);\n return;\n }\n if (this.isFullWidth()) {\n const refresh = this.refreshFullWidth();\n if (!refresh) {\n this.beans.rowRenderer.redrawRow(this.rowNode);\n }\n return;\n }\n this.getAllCellCtrls().forEach(\n (cellCtrl) => cellCtrl.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n })\n );\n this.allRowGuis.forEach((gui) => {\n this.setRowCompRowId(gui.rowComp);\n this.updateRowBusinessKey();\n this.setRowCompRowBusinessKey(gui.rowComp);\n });\n this.onRowSelected();\n this.postProcessCss();\n }\n postProcessCss() {\n this.setStylesFromGridOptions(true);\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n }\n onRowNodeHighlightChanged() {\n const highlighted = this.rowNode.highlighted;\n this.allRowGuis.forEach((gui) => {\n const aboveOn = highlighted === \"Above\";\n const belowOn = highlighted === \"Below\";\n gui.rowComp.addOrRemoveCssClass(\"ag-row-highlight-above\", aboveOn);\n gui.rowComp.addOrRemoveCssClass(\"ag-row-highlight-below\", belowOn);\n });\n }\n postProcessRowDragging() {\n const dragging = this.rowNode.dragging;\n this.allRowGuis.forEach((gui) => gui.rowComp.addOrRemoveCssClass(\"ag-row-dragging\", dragging));\n }\n onDisplayedColumnsChanged() {\n this.updateColumnLists(true);\n this.beans.rowAutoHeight?.requestCheckAutoHeight();\n }\n onVirtualColumnsChanged() {\n this.updateColumnLists(false, true);\n }\n getRowPosition() {\n return {\n rowPinned: _makeNull(this.rowNode.rowPinned),\n rowIndex: this.rowNode.rowIndex\n };\n }\n onKeyboardNavigate(keyboardEvent) {\n const groupInfo = this.findFullWidthInfoForEvent(keyboardEvent);\n if (!groupInfo) {\n return;\n }\n const { rowGui, column } = groupInfo;\n const currentFullWidthContainer = rowGui.element;\n const isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n if (!isFullWidthContainerFocused) {\n return;\n }\n const node = this.rowNode;\n const { focusSvc, navigation } = this.beans;\n const lastFocusedCell = focusSvc.getFocusedCell();\n const cellPosition = {\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n column: lastFocusedCell?.column ?? column\n };\n navigation?.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);\n keyboardEvent.preventDefault();\n }\n onTabKeyDown(keyboardEvent) {\n if (keyboardEvent.defaultPrevented || _isStopPropagationForAgGrid(keyboardEvent)) {\n return;\n }\n const currentFullWidthComp = this.allRowGuis.find(\n (c) => c.element.contains(keyboardEvent.target)\n );\n const currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n const isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n const activeEl = _getActiveDomElement(this.beans);\n let isDetailGridCellFocused = false;\n if (currentFullWidthContainer && activeEl) {\n isDetailGridCellFocused = currentFullWidthContainer.contains(activeEl) && activeEl.classList.contains(\"ag-cell\");\n }\n let nextEl = null;\n if (!isFullWidthContainerFocused && !isDetailGridCellFocused) {\n nextEl = _findNextFocusableElement(this.beans, currentFullWidthContainer, false, keyboardEvent.shiftKey);\n }\n if (this.isFullWidth() && isFullWidthContainerFocused || !nextEl) {\n this.beans.navigation?.onTabKeyDown(this, keyboardEvent);\n }\n }\n getFullWidthElement() {\n if (this.fullWidthGui) {\n return this.fullWidthGui.element;\n }\n return null;\n }\n getRowYPosition() {\n const displayedEl = this.allRowGuis.find((el) => _isVisible(el.element))?.element;\n if (displayedEl) {\n return displayedEl.getBoundingClientRect().top;\n }\n return 0;\n }\n onSuppressCellFocusChanged(suppressCellFocus) {\n const tabIndex = this.isFullWidth() && suppressCellFocus ? void 0 : -1;\n this.allRowGuis.forEach((gui) => {\n _addOrRemoveAttribute(gui.element, \"tabindex\", tabIndex);\n });\n }\n onFullWidthRowFocused(event) {\n const node = this.rowNode;\n const isFocused = !event ? false : this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;\n let element;\n if (this.fullWidthGui) {\n element = this.fullWidthGui.element;\n } else {\n const column = this.beans.colModel.getCol(event?.column);\n const pinned = column?.pinned;\n if (pinned) {\n element = pinned === \"right\" ? this.rightGui?.element : this.leftGui?.element;\n } else {\n element = this.centerGui?.element;\n }\n }\n if (!element) {\n return;\n }\n element.classList.toggle(\"ag-full-width-focus\", isFocused);\n if (isFocused && event?.forceBrowserFocus) {\n element.focus({ preventScroll: true });\n }\n }\n recreateCell(cellCtrl) {\n this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);\n this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);\n this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);\n cellCtrl.destroy();\n this.updateColumnLists();\n }\n removeCellCtrl(prev, cellCtrlToRemove) {\n const res = {\n list: [],\n map: {}\n };\n prev.list.forEach((cellCtrl) => {\n if (cellCtrl === cellCtrlToRemove) {\n return;\n }\n res.list.push(cellCtrl);\n res.map[cellCtrl.column.getInstanceId()] = cellCtrl;\n });\n return res;\n }\n onMouseEvent(eventName, mouseEvent) {\n switch (eventName) {\n case \"dblclick\":\n this.onRowDblClick(mouseEvent);\n break;\n case \"click\":\n this.onRowClick(mouseEvent);\n break;\n case \"touchstart\":\n case \"mousedown\":\n this.onRowMouseDown(mouseEvent);\n break;\n }\n }\n createRowEvent(type, domEvent) {\n const { rowNode } = this;\n return _addGridCommonParams(this.gos, {\n type,\n node: rowNode,\n data: rowNode.data,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n event: domEvent\n });\n }\n createRowEventWithSource(type, domEvent) {\n const event = this.createRowEvent(type, domEvent);\n event.source = this;\n return event;\n }\n onRowDblClick(mouseEvent) {\n if (_isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n this.beans.eventSvc.dispatchEvent(this.createRowEventWithSource(\"rowDoubleClicked\", mouseEvent));\n }\n findFullWidthInfoForEvent(event) {\n if (!event) {\n return;\n }\n const rowGui = this.findFullWidthRowGui(event.target);\n const column = this.getColumnForFullWidth(rowGui);\n if (!rowGui || !column) {\n return;\n }\n return { rowGui, column };\n }\n findFullWidthRowGui(target) {\n return this.allRowGuis.find((c) => c.element.contains(target));\n }\n getColumnForFullWidth(fullWidthRowGui) {\n const { visibleCols } = this.beans;\n switch (fullWidthRowGui?.containerType) {\n case \"center\":\n return visibleCols.centerCols[0];\n case \"left\":\n return visibleCols.leftCols[0];\n case \"right\":\n return visibleCols.rightCols[0];\n default:\n return visibleCols.allCols[0];\n }\n }\n onRowMouseDown(mouseEvent) {\n this.lastMouseDownOnDragger = _isElementChildOfClass(mouseEvent.target, \"ag-row-drag\", 3);\n if (!this.isFullWidth()) {\n return;\n }\n const node = this.rowNode;\n const { rangeSvc, focusSvc } = this.beans;\n rangeSvc?.removeAllCellRanges();\n const groupInfo = this.findFullWidthInfoForEvent(mouseEvent);\n if (!groupInfo) {\n return;\n }\n const { rowGui, column } = groupInfo;\n const element = rowGui.element;\n const target = mouseEvent.target;\n let forceBrowserFocus = mouseEvent.defaultPrevented || _isBrowserSafari();\n if (element && element.contains(target) && _isFocusableFormField(target)) {\n forceBrowserFocus = false;\n }\n focusSvc.setFocusedCell({\n rowIndex: node.rowIndex,\n column,\n rowPinned: node.rowPinned,\n forceBrowserFocus\n });\n }\n onRowClick(mouseEvent) {\n const stop = _isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;\n if (stop) {\n return;\n }\n const { eventSvc, selectionSvc } = this.beans;\n eventSvc.dispatchEvent(this.createRowEventWithSource(\"rowClicked\", mouseEvent));\n selectionSvc?.handleSelectionEvent(mouseEvent, this.rowNode, \"rowClicked\");\n }\n setupDetailRowAutoHeight(eDetailGui) {\n if (this.rowType !== \"FullWidthDetail\") {\n return;\n }\n this.beans.masterDetailSvc?.setupDetailRowAutoHeight(this, eDetailGui);\n }\n createFullWidthCompDetails(eRow, pinned) {\n const { gos, rowNode } = this;\n const params = _addGridCommonParams(gos, {\n fullWidth: true,\n data: rowNode.data,\n node: rowNode,\n value: rowNode.key,\n valueFormatted: rowNode.key,\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned,\n addRenderedRowListener: this.addEventListener.bind(this),\n // This is not on the type of ICellRendererParams\n registerRowDragger: (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) => this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange),\n setTooltip: (value, shouldDisplayTooltip) => {\n gos.assertModuleRegistered(\"Tooltip\", 3);\n this.refreshRowTooltip(value, shouldDisplayTooltip);\n }\n });\n const compFactory = this.beans.userCompFactory;\n switch (this.rowType) {\n case \"FullWidthDetail\":\n return _getFullWidthDetailCellRendererDetails(compFactory, params);\n case \"FullWidthGroup\":\n params.value = rowNode.groupValue;\n params.valueFormatted = rowNode.rowGroupColumn ? this.beans.valueSvc.formatValue(rowNode.rowGroupColumn, rowNode, params.value) : params.value;\n return _getFullWidthGroupCellRendererDetails(compFactory, params);\n case \"FullWidthLoading\":\n return _getFullWidthLoadingCellRendererDetails(compFactory, params);\n default:\n return _getFullWidthCellRendererDetails(compFactory, params);\n }\n }\n refreshRowTooltip(value, shouldDisplayTooltip) {\n if (!this.fullWidthGui) {\n return;\n }\n this.tooltipFeature = this.beans.tooltipSvc?.refreshRowTooltip(\n this.tooltipFeature,\n this,\n value,\n shouldDisplayTooltip\n );\n }\n addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value = \"\", suppressVisibilityChange) {\n const { rowDragSvc, context } = this.beans;\n if (!rowDragSvc || !this.isFullWidth()) {\n return;\n }\n const rowDragComp = rowDragSvc.createRowDragComp(\n () => value,\n this.rowNode,\n void 0,\n rowDraggerElement,\n dragStartPixels,\n suppressVisibilityChange\n );\n this.createBean(rowDragComp, context);\n this.addDestroyFunc(() => {\n this.destroyBean(rowDragComp, context);\n });\n }\n onUiLevelChanged() {\n const newLevel = calculateRowLevel(this.rowNode);\n if (this.rowLevel != newLevel) {\n const classToAdd = \"ag-row-level-\" + newLevel;\n const classToRemove = \"ag-row-level-\" + this.rowLevel;\n this.allRowGuis.forEach((gui) => {\n gui.rowComp.addOrRemoveCssClass(classToAdd, true);\n gui.rowComp.addOrRemoveCssClass(classToRemove, false);\n });\n }\n this.rowLevel = newLevel;\n }\n isFirstRowOnPage() {\n return this.rowNode.rowIndex === this.beans.pageBounds.getFirstRow();\n }\n isLastRowOnPage() {\n return this.rowNode.rowIndex === this.beans.pageBounds.getLastRow();\n }\n refreshFirstAndLastRowStyles() {\n const newFirst = this.isFirstRowOnPage();\n const newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.allRowGuis.forEach((gui) => gui.rowComp.addOrRemoveCssClass(\"ag-row-first\", newFirst));\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.allRowGuis.forEach((gui) => gui.rowComp.addOrRemoveCssClass(\"ag-row-last\", newLast));\n }\n }\n getAllCellCtrls() {\n if (this.leftCellCtrls.list.length === 0 && this.rightCellCtrls.list.length === 0) {\n return this.centerCellCtrls.list;\n }\n const res = [...this.centerCellCtrls.list, ...this.leftCellCtrls.list, ...this.rightCellCtrls.list];\n return res;\n }\n postProcessClassesFromGridOptions() {\n const cssClasses = [];\n this.beans.rowStyleSvc?.processClassesFromGridOptions(cssClasses, this.rowNode);\n if (!cssClasses.length) {\n return;\n }\n cssClasses.forEach((classStr) => {\n this.allRowGuis.forEach((c) => c.rowComp.addOrRemoveCssClass(classStr, true));\n });\n }\n postProcessRowClassRules() {\n this.beans.rowStyleSvc?.processRowClassRules(\n this.rowNode,\n (className) => {\n this.allRowGuis.forEach((gui) => gui.rowComp.addOrRemoveCssClass(className, true));\n },\n (className) => {\n this.allRowGuis.forEach((gui) => gui.rowComp.addOrRemoveCssClass(className, false));\n }\n );\n }\n setStylesFromGridOptions(updateStyles, gui) {\n if (updateStyles) {\n this.rowStyles = this.processStylesFromGridOptions();\n }\n this.forEachGui(gui, (gui2) => gui2.rowComp.setUserStyles(this.rowStyles));\n }\n getPinnedForContainer(rowContainerType) {\n if (rowContainerType === \"left\" || rowContainerType === \"right\") {\n return rowContainerType;\n }\n return null;\n }\n getInitialRowClasses(rowContainerType) {\n const pinned = this.getPinnedForContainer(rowContainerType);\n const fullWidthRow = this.isFullWidth();\n const { rowNode, beans } = this;\n const classes = [];\n classes.push(\"ag-row\");\n classes.push(this.rowFocused ? \"ag-row-focus\" : \"ag-row-no-focus\");\n if (this.fadeInAnimation[rowContainerType]) {\n classes.push(\"ag-opacity-zero\");\n }\n classes.push(rowNode.rowIndex % 2 === 0 ? \"ag-row-even\" : \"ag-row-odd\");\n if (rowNode.isRowPinned()) {\n classes.push(\"ag-row-pinned\");\n }\n if (rowNode.isSelected()) {\n classes.push(\"ag-row-selected\");\n }\n if (rowNode.footer) {\n classes.push(\"ag-row-footer\");\n }\n classes.push(\"ag-row-level-\" + this.rowLevel);\n if (rowNode.stub) {\n classes.push(\"ag-row-loading\");\n }\n if (fullWidthRow) {\n classes.push(\"ag-full-width-row\");\n }\n beans.expansionSvc?.addExpandedCss(classes, rowNode);\n if (rowNode.dragging) {\n classes.push(\"ag-row-dragging\");\n }\n const { rowStyleSvc } = beans;\n if (rowStyleSvc) {\n rowStyleSvc.processClassesFromGridOptions(classes, rowNode);\n rowStyleSvc.preProcessRowClassRules(classes, rowNode);\n }\n classes.push(this.printLayout ? \"ag-row-position-relative\" : \"ag-row-position-absolute\");\n if (this.isFirstRowOnPage()) {\n classes.push(\"ag-row-first\");\n }\n if (this.isLastRowOnPage()) {\n classes.push(\"ag-row-last\");\n }\n if (fullWidthRow) {\n if (pinned === \"left\") {\n classes.push(\"ag-cell-last-left-pinned\");\n }\n if (pinned === \"right\") {\n classes.push(\"ag-cell-first-right-pinned\");\n }\n }\n return classes;\n }\n processStylesFromGridOptions() {\n return this.beans.rowStyleSvc?.processStylesFromGridOptions(this.rowNode) ?? this.emptyStyle;\n }\n onRowSelected(gui) {\n this.beans.selectionSvc?.onRowCtrlSelected(\n this,\n (gui2) => {\n if (gui2 === this.centerGui || gui2 === this.fullWidthGui) {\n this.announceDescription();\n }\n },\n gui\n );\n }\n announceDescription() {\n this.beans.selectionSvc?.announceAriaRowSelection(this.rowNode);\n }\n addHoverFunctionality(eGui) {\n if (!this.active) {\n return;\n }\n const { element, compBean } = eGui;\n const { rowNode, beans, gos } = this;\n compBean.addManagedListeners(element, {\n mouseenter: () => rowNode.dispatchRowEvent(\"mouseEnter\"),\n mouseleave: () => rowNode.dispatchRowEvent(\"mouseLeave\")\n });\n compBean.addManagedListeners(rowNode, {\n mouseEnter: () => {\n if (!beans.dragSvc?.dragging && !gos.get(\"suppressRowHoverHighlight\")) {\n element.classList.add(\"ag-row-hover\");\n rowNode.setHovered(true);\n }\n },\n mouseLeave: () => {\n this.resetHoveredStatus(element);\n }\n });\n }\n resetHoveredStatus(el) {\n const elements = el ? [el] : this.allRowGuis.map((gui) => gui.element);\n for (const element of elements) {\n element.classList.remove(\"ag-row-hover\");\n }\n this.rowNode.setHovered(false);\n }\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n roundRowTopToBounds(rowTop) {\n const range = this.beans.ctrlsSvc.getScrollFeature().getApproximateVScollPosition();\n const minPixel = this.applyPaginationOffset(range.top, true) - 100;\n const maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n }\n forEachGui(gui, callback) {\n if (gui) {\n callback(gui);\n } else {\n this.allRowGuis.forEach(callback);\n }\n }\n onRowHeightChanged(gui) {\n if (this.rowNode.rowHeight == null) {\n return;\n }\n const rowHeight = this.rowNode.rowHeight;\n const defaultRowHeight = this.beans.environment.getDefaultRowHeight();\n const isHeightFromFunc = _isGetRowHeightFunction(this.gos);\n const heightFromFunc = isHeightFromFunc ? _getRowHeightForNode(this.beans, this.rowNode).height : void 0;\n const lineHeight = heightFromFunc ? `${Math.min(defaultRowHeight, heightFromFunc) - 2}px` : void 0;\n this.forEachGui(gui, (gui2) => {\n gui2.element.style.height = `${rowHeight}px`;\n if (lineHeight) {\n gui2.element.style.setProperty(\"--ag-line-height\", lineHeight);\n }\n });\n }\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n destroyFirstPass(suppressAnimation = false) {\n this.active = false;\n const { rowNode } = this;\n if (!suppressAnimation && _isAnimateRows(this.gos) && !rowNode.sticky) {\n const rowStillVisibleJustNotInViewport = rowNode.rowTop != null;\n if (rowStillVisibleJustNotInViewport) {\n const rowTop = this.roundRowTopToBounds(rowNode.rowTop);\n this.setRowTop(rowTop);\n } else {\n this.allRowGuis.forEach((gui) => gui.rowComp.addOrRemoveCssClass(\"ag-opacity-zero\", true));\n }\n }\n if (this.fullWidthGui?.element.contains(_getActiveDomElement(this.beans))) {\n this.beans.focusSvc.attemptToRecoverFocus();\n }\n rowNode.setHovered(false);\n const event = this.createRowEvent(\"virtualRowRemoved\");\n this.dispatchLocalEvent(event);\n this.beans.eventSvc.dispatchEvent(event);\n super.destroy();\n }\n destroySecondPass() {\n this.allRowGuis.length = 0;\n this.beans.editSvc?.stopRowEditing(this);\n const destroyCellCtrls = (ctrls) => {\n ctrls.list.forEach((c) => c.destroy());\n return { list: [], map: {} };\n };\n this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);\n this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);\n this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);\n }\n setFocusedClasses(gui) {\n this.forEachGui(gui, (gui2) => {\n gui2.rowComp.addOrRemoveCssClass(\"ag-row-focus\", this.rowFocused);\n gui2.rowComp.addOrRemoveCssClass(\"ag-row-no-focus\", !this.rowFocused);\n });\n }\n onCellFocusChanged() {\n const { focusSvc, editSvc } = this.beans;\n const rowFocused = focusSvc.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.rowFocused = rowFocused;\n this.setFocusedClasses();\n }\n if (!rowFocused && this.editing) {\n editSvc?.stopRowEditing(this, false);\n }\n }\n onPaginationChanged() {\n const currentPage = this.beans.pagination?.getCurrentPage() ?? 0;\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n this.refreshFirstAndLastRowStyles();\n }\n onTopChanged() {\n this.setRowTop(this.rowNode.rowTop);\n }\n onPaginationPixelOffsetChanged() {\n this.onTopChanged();\n }\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n applyPaginationOffset(topPx, reverse = false) {\n if (this.rowNode.isRowPinned() || this.rowNode.sticky) {\n return topPx;\n }\n const pixelOffset = this.beans.pageBounds.getPixelOffset();\n const multiplier = reverse ? 1 : -1;\n return topPx + pixelOffset * multiplier;\n }\n setRowTop(pixels) {\n if (this.printLayout) {\n return;\n }\n if (_exists(pixels)) {\n const afterPaginationPixels = this.applyPaginationOffset(pixels);\n const skipScaling = this.rowNode.isRowPinned() || this.rowNode.sticky;\n const afterScalingPixels = skipScaling ? afterPaginationPixels : this.beans.rowContainerHeight.getRealPixelPosition(afterPaginationPixels);\n const topPx = `${afterScalingPixels}px`;\n this.setRowTopStyle(topPx);\n }\n }\n // the top needs to be set into the DOM element when the element is created, not updated afterwards.\n // otherwise the transition would not work, as it would be transitioning from zero (the unset value).\n // for example, suppose a row that is outside the viewport, then user does a filter to remove other rows\n // and this row now appears in the viewport, and the row moves up (ie it was under the viewport and not rendered,\n // but now is in the viewport) then a new RowComp is created, however it should have it's position initialised\n // to below the viewport, so the row will appear to animate up. if we didn't set the initial position at creation\n // time, the row would animate down (ie from position zero).\n getInitialRowTop(rowContainerType) {\n return this.suppressRowTransform ? this.getInitialRowTopShared(rowContainerType) : void 0;\n }\n getInitialTransform(rowContainerType) {\n return this.suppressRowTransform ? void 0 : `translateY(${this.getInitialRowTopShared(rowContainerType)})`;\n }\n getInitialRowTopShared(rowContainerType) {\n if (this.printLayout) {\n return \"\";\n }\n const rowNode = this.rowNode;\n let rowTop;\n if (rowNode.sticky) {\n rowTop = rowNode.stickyRowTop;\n } else {\n const pixels = this.slideInAnimation[rowContainerType] ? this.roundRowTopToBounds(rowNode.oldRowTop) : rowNode.rowTop;\n const afterPaginationPixels = this.applyPaginationOffset(pixels);\n rowTop = rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeight.getRealPixelPosition(afterPaginationPixels);\n }\n return rowTop + \"px\";\n }\n setRowTopStyle(topPx) {\n this.allRowGuis.forEach(\n (gui) => this.suppressRowTransform ? gui.rowComp.setTop(topPx) : gui.rowComp.setTransform(`translateY(${topPx})`)\n );\n }\n getCellCtrl(column, skipColSpanSearch = false) {\n let res = null;\n this.getAllCellCtrls().forEach((cellCtrl) => {\n if (cellCtrl.column == column) {\n res = cellCtrl;\n }\n });\n if (res != null || skipColSpanSearch) {\n return res;\n }\n this.getAllCellCtrls().forEach((cellCtrl) => {\n if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {\n res = cellCtrl;\n }\n });\n return res;\n }\n onRowIndexChanged() {\n if (this.rowNode.rowIndex != null) {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n this.postProcessCss();\n }\n }\n updateRowIndexes(gui) {\n const rowIndexStr = this.rowNode.getRowIndexString();\n if (rowIndexStr === null) {\n return;\n }\n const headerRowCount = (this.beans.ctrlsSvc.getHeaderRowContainerCtrl()?.getRowCount() ?? 0) + (this.beans.filterManager?.getHeaderRowCount() ?? 0);\n const rowIsEven = this.rowNode.rowIndex % 2 === 0;\n const ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;\n this.forEachGui(gui, (c) => {\n c.rowComp.setRowIndex(rowIndexStr);\n c.rowComp.addOrRemoveCssClass(\"ag-row-even\", rowIsEven);\n c.rowComp.addOrRemoveCssClass(\"ag-row-odd\", !rowIsEven);\n _setAriaRowIndex(c.element, ariaRowIndex);\n });\n }\n};\n\n// packages/ag-grid-community/src/utils/keyboard.ts\nfunction _isEventFromPrintableCharacter(event) {\n if (event.altKey || event.ctrlKey || event.metaKey) {\n return false;\n }\n const printableCharacter = event.key?.length === 1;\n return printableCharacter;\n}\nfunction _isUserSuppressingKeyboardEvent(gos, keyboardEvent, rowNode, column, editing) {\n const colDefFunc = column ? column.getColDef().suppressKeyboardEvent : void 0;\n if (!colDefFunc) {\n return false;\n }\n const params = _addGridCommonParams(gos, {\n event: keyboardEvent,\n editing,\n column,\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef()\n });\n if (colDefFunc) {\n const colDefFuncResult = colDefFunc(params);\n if (colDefFuncResult) {\n return true;\n }\n }\n return false;\n}\n\n// packages/ag-grid-community/src/utils/selection.ts\nfunction _selectAllCells(beans) {\n const { pinnedRowModel, rowModel } = beans;\n const [isEmptyPinnedTop, isEmptyPinnedBottom] = [\n pinnedRowModel?.isEmpty(\"top\") ?? true,\n pinnedRowModel?.isEmpty(\"bottom\") ?? true\n ];\n const floatingStart = isEmptyPinnedTop ? null : \"top\";\n let floatingEnd;\n let rowEnd;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = rowModel.getRowCount() - 1;\n } else {\n floatingEnd = \"bottom\";\n rowEnd = pinnedRowModel?.getPinnedBottomRowCount() ?? 0 - 1;\n }\n const { visibleCols, rangeSvc } = beans;\n const allDisplayedColumns = visibleCols.allCols;\n if (!rangeSvc || !allDisplayedColumns?.length) {\n return;\n }\n rangeSvc.setCellRange({\n rowStartIndex: 0,\n rowStartPinned: floatingStart,\n rowEndIndex: rowEnd,\n rowEndPinned: floatingEnd\n });\n}\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/rowContainerEventsFeature.ts\nvar A_KEYCODE = 65;\nvar C_KEYCODE = 67;\nvar V_KEYCODE = 86;\nvar D_KEYCODE = 68;\nvar Z_KEYCODE = 90;\nvar Y_KEYCODE = 89;\nfunction _normaliseQwertyAzerty(keyboardEvent) {\n const { keyCode } = keyboardEvent;\n let code;\n switch (keyCode) {\n case A_KEYCODE:\n code = KeyCode.A;\n break;\n case C_KEYCODE:\n code = KeyCode.C;\n break;\n case V_KEYCODE:\n code = KeyCode.V;\n break;\n case D_KEYCODE:\n code = KeyCode.D;\n break;\n case Z_KEYCODE:\n code = KeyCode.Z;\n break;\n case Y_KEYCODE:\n code = KeyCode.Y;\n break;\n default:\n code = keyboardEvent.code;\n }\n return code;\n}\nvar RowContainerEventsFeature = class extends BeanStub {\n constructor(element) {\n super();\n this.element = element;\n }\n postConstruct() {\n this.addKeyboardListeners();\n this.addMouseListeners();\n this.beans.touchSvc?.mockRowContextMenu(this);\n }\n addKeyboardListeners() {\n const eventName = \"keydown\";\n const listener = this.processKeyboardEvent.bind(this, eventName);\n this.addManagedElementListeners(this.element, { [eventName]: listener });\n }\n addMouseListeners() {\n const mouseDownEvent = _isEventSupported(\"touchstart\") ? \"touchstart\" : \"mousedown\";\n const eventNames = [\"dblclick\", \"contextmenu\", \"mouseover\", \"mouseout\", \"click\", mouseDownEvent];\n eventNames.forEach((eventName) => {\n const listener = this.processMouseEvent.bind(this, eventName);\n this.addManagedElementListeners(this.element, { [eventName]: listener });\n });\n }\n processMouseEvent(eventName, mouseEvent) {\n if (!_isEventFromThisGrid(this.gos, mouseEvent) || _isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(mouseEvent.target);\n if (eventName === \"contextmenu\") {\n if (cellCtrl?.column) {\n cellCtrl.dispatchCellContextMenuEvent(mouseEvent);\n }\n this.beans.contextMenuSvc?.handleContextMenuMouseEvent(mouseEvent, void 0, rowCtrl, cellCtrl);\n } else {\n if (cellCtrl) {\n cellCtrl.onMouseEvent(eventName, mouseEvent);\n }\n if (rowCtrl) {\n rowCtrl.onMouseEvent(eventName, mouseEvent);\n }\n }\n }\n getControlsForEventTarget(target) {\n const { gos } = this;\n return {\n cellCtrl: _getCellCtrlForEventTarget(gos, target),\n rowCtrl: _getCtrlForEventTarget(gos, target, DOM_DATA_KEY_ROW_CTRL)\n };\n }\n processKeyboardEvent(eventName, keyboardEvent) {\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(keyboardEvent.target);\n if (keyboardEvent.defaultPrevented) {\n return;\n }\n if (cellCtrl) {\n this.processCellKeyboardEvent(cellCtrl, eventName, keyboardEvent);\n } else if (rowCtrl && rowCtrl.isFullWidth()) {\n this.processFullWidthRowKeyboardEvent(rowCtrl, eventName, keyboardEvent);\n }\n }\n processCellKeyboardEvent(cellCtrl, eventName, keyboardEvent) {\n const { rowNode, column, editing } = cellCtrl;\n const gridProcessingAllowed = !_isUserSuppressingKeyboardEvent(\n this.gos,\n keyboardEvent,\n rowNode,\n column,\n editing\n );\n if (gridProcessingAllowed) {\n if (eventName === \"keydown\") {\n const wasScrollKey = !editing && this.beans.navigation?.handlePageScrollingKey(keyboardEvent);\n if (!wasScrollKey) {\n cellCtrl.onKeyDown(keyboardEvent);\n }\n this.doGridOperations(keyboardEvent, cellCtrl.editing);\n if (_isEventFromPrintableCharacter(keyboardEvent)) {\n cellCtrl.processCharacter(keyboardEvent);\n }\n }\n }\n if (eventName === \"keydown\") {\n this.eventSvc.dispatchEvent(cellCtrl.createEvent(keyboardEvent, \"cellKeyDown\"));\n }\n }\n processFullWidthRowKeyboardEvent(rowCtrl, eventName, keyboardEvent) {\n const { rowNode } = rowCtrl;\n const { focusSvc, navigation } = this.beans;\n const focusedCell = focusSvc.getFocusedCell();\n const column = focusedCell && focusedCell.column;\n const gridProcessingAllowed = !_isUserSuppressingKeyboardEvent(this.gos, keyboardEvent, rowNode, column, false);\n if (gridProcessingAllowed) {\n const key = keyboardEvent.key;\n if (eventName === \"keydown\") {\n switch (key) {\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_DOWN:\n navigation?.handlePageScrollingKey(keyboardEvent, true);\n break;\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n if (!this.gos.get(\"embedFullWidthRows\")) {\n break;\n }\n case KeyCode.UP:\n case KeyCode.DOWN:\n rowCtrl.onKeyboardNavigate(keyboardEvent);\n break;\n case KeyCode.TAB:\n rowCtrl.onTabKeyDown(keyboardEvent);\n break;\n default:\n }\n }\n }\n if (eventName === \"keydown\") {\n this.eventSvc.dispatchEvent(rowCtrl.createRowEvent(\"cellKeyDown\", keyboardEvent));\n }\n }\n doGridOperations(keyboardEvent, editing) {\n if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n return;\n }\n if (editing) {\n return;\n }\n if (!_isEventFromThisGrid(this.gos, keyboardEvent)) {\n return;\n }\n const keyCode = _normaliseQwertyAzerty(keyboardEvent);\n const { clipboardSvc, undoRedo } = this.beans;\n if (keyCode === KeyCode.A) {\n return this.onCtrlAndA(keyboardEvent);\n }\n if (keyCode === KeyCode.C) {\n return this.onCtrlAndC(clipboardSvc, keyboardEvent);\n }\n if (keyCode === KeyCode.D) {\n return this.onCtrlAndD(clipboardSvc, keyboardEvent);\n }\n if (keyCode === KeyCode.V) {\n return this.onCtrlAndV(clipboardSvc, keyboardEvent);\n }\n if (keyCode === KeyCode.X) {\n return this.onCtrlAndX(clipboardSvc, keyboardEvent);\n }\n if (keyCode === KeyCode.Y) {\n return this.onCtrlAndY(undoRedo);\n }\n if (keyCode === KeyCode.Z) {\n return this.onCtrlAndZ(undoRedo, keyboardEvent);\n }\n }\n onCtrlAndA(event) {\n const {\n beans: { rowModel, rangeSvc, selectionSvc },\n gos\n } = this;\n if (rangeSvc && _isCellSelectionEnabled(gos) && rowModel.isRowsToRender()) {\n _selectAllCells(this.beans);\n } else if (selectionSvc) {\n selectionSvc?.selectAllRowNodes({ source: \"keyboardSelectAll\", selectAll: _getSelectAll(gos) });\n }\n event.preventDefault();\n }\n onCtrlAndC(clipboardSvc, event) {\n if (!clipboardSvc || this.gos.get(\"enableCellTextSelection\")) {\n return;\n }\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n if (cellCtrl?.editing || rowCtrl?.editing) {\n return;\n }\n event.preventDefault();\n clipboardSvc.copyToClipboard();\n }\n onCtrlAndX(clipboardSvc, event) {\n if (!clipboardSvc || this.gos.get(\"enableCellTextSelection\") || this.gos.get(\"suppressCutToClipboard\")) {\n return;\n }\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n if (cellCtrl?.editing || rowCtrl?.editing) {\n return;\n }\n event.preventDefault();\n clipboardSvc.cutToClipboard(void 0, \"ui\");\n }\n onCtrlAndV(clipboardSvc, event) {\n const { cellCtrl, rowCtrl } = this.getControlsForEventTarget(event.target);\n if (cellCtrl?.editing || rowCtrl?.editing) {\n return;\n }\n if (clipboardSvc && !this.gos.get(\"suppressClipboardPaste\")) {\n clipboardSvc.pasteFromClipboard();\n }\n }\n onCtrlAndD(clipboardSvc, event) {\n if (clipboardSvc && !this.gos.get(\"suppressClipboardPaste\")) {\n clipboardSvc.copyRangeDown();\n }\n event.preventDefault();\n }\n onCtrlAndZ(undoRedo, event) {\n if (!this.gos.get(\"undoRedoCellEditing\") || !undoRedo) {\n return;\n }\n event.preventDefault();\n if (event.shiftKey) {\n undoRedo.redo(\"ui\");\n } else {\n undoRedo.undo(\"ui\");\n }\n }\n onCtrlAndY(undoRedo) {\n undoRedo?.redo(\"ui\");\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/setHeightFeature.ts\nvar SetHeightFeature = class extends BeanStub {\n constructor(eContainer, eViewport) {\n super();\n this.eContainer = eContainer;\n this.eViewport = eViewport;\n }\n postConstruct() {\n this.addManagedEventListeners({\n rowContainerHeightChanged: this.onHeightChanged.bind(this, this.beans.rowContainerHeight)\n });\n }\n onHeightChanged(maxDivHeightScaler) {\n const height = maxDivHeightScaler.uiContainerHeight;\n const heightString = height != null ? `${height}px` : ``;\n this.eContainer.style.height = heightString;\n if (this.eViewport) {\n this.eViewport.style.height = heightString;\n }\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/rowContainerCtrl.ts\nvar getTopRowCtrls = (r) => r.topRowCtrls;\nvar getStickyTopRowCtrls = (r) => r.getStickyTopRowCtrls();\nvar getStickyBottomRowCtrls = (r) => r.getStickyBottomRowCtrls();\nvar getBottomRowCtrls = (r) => r.bottomRowCtrls;\nvar getCentreRowCtrls = (r) => r.allRowCtrls;\nvar getSpannedTopRowCtrls = (r) => r.getCtrls(\"top\");\nvar getSpannedCenterRowCtrls = (r) => r.getCtrls(\"center\");\nvar getSpannedBottomRowCtrls = (r) => r.getCtrls(\"bottom\");\nvar ContainerCssClasses = {\n center: {\n type: \"center\",\n name: \"center-cols\",\n getRowCtrls: getCentreRowCtrls,\n getSpannedRowCtrls: getSpannedCenterRowCtrls\n },\n left: {\n type: \"left\",\n name: \"pinned-left-cols\",\n pinnedType: \"left\",\n getRowCtrls: getCentreRowCtrls,\n getSpannedRowCtrls: getSpannedCenterRowCtrls\n },\n right: {\n type: \"right\",\n name: \"pinned-right-cols\",\n pinnedType: \"right\",\n getRowCtrls: getCentreRowCtrls,\n getSpannedRowCtrls: getSpannedCenterRowCtrls\n },\n fullWidth: {\n type: \"fullWidth\",\n name: \"full-width\",\n fullWidth: true,\n getRowCtrls: getCentreRowCtrls\n },\n topCenter: {\n type: \"center\",\n name: \"floating-top\",\n getRowCtrls: getTopRowCtrls,\n getSpannedRowCtrls: getSpannedTopRowCtrls\n },\n topLeft: {\n type: \"left\",\n name: \"pinned-left-floating\",\n container: \"ag-pinned-left-floating-top\",\n pinnedType: \"left\",\n getRowCtrls: getTopRowCtrls,\n getSpannedRowCtrls: getSpannedTopRowCtrls\n },\n topRight: {\n type: \"right\",\n name: \"pinned-right-floating\",\n container: \"ag-pinned-right-floating-top\",\n pinnedType: \"right\",\n getRowCtrls: getTopRowCtrls,\n getSpannedRowCtrls: getSpannedTopRowCtrls\n },\n topFullWidth: {\n type: \"fullWidth\",\n name: \"floating-top-full-width\",\n fullWidth: true,\n getRowCtrls: getTopRowCtrls\n },\n stickyTopCenter: {\n type: \"center\",\n name: \"sticky-top\",\n getRowCtrls: getStickyTopRowCtrls\n },\n stickyTopLeft: {\n type: \"left\",\n name: \"pinned-left-sticky-top\",\n container: \"ag-pinned-left-sticky-top\",\n pinnedType: \"left\",\n getRowCtrls: getStickyTopRowCtrls\n },\n stickyTopRight: {\n type: \"right\",\n name: \"pinned-right-sticky-top\",\n container: \"ag-pinned-right-sticky-top\",\n pinnedType: \"right\",\n getRowCtrls: getStickyTopRowCtrls\n },\n stickyTopFullWidth: {\n type: \"fullWidth\",\n name: \"sticky-top-full-width\",\n fullWidth: true,\n getRowCtrls: getStickyTopRowCtrls\n },\n stickyBottomCenter: {\n type: \"center\",\n name: \"sticky-bottom\",\n getRowCtrls: getStickyBottomRowCtrls\n },\n stickyBottomLeft: {\n type: \"left\",\n name: \"pinned-left-sticky-bottom\",\n container: \"ag-pinned-left-sticky-bottom\",\n pinnedType: \"left\",\n getRowCtrls: getStickyBottomRowCtrls\n },\n stickyBottomRight: {\n type: \"right\",\n name: \"pinned-right-sticky-bottom\",\n container: \"ag-pinned-right-sticky-bottom\",\n pinnedType: \"right\",\n getRowCtrls: getStickyBottomRowCtrls\n },\n stickyBottomFullWidth: {\n type: \"fullWidth\",\n name: \"sticky-bottom-full-width\",\n fullWidth: true,\n getRowCtrls: getStickyBottomRowCtrls\n },\n bottomCenter: {\n type: \"center\",\n name: \"floating-bottom\",\n getRowCtrls: getBottomRowCtrls,\n getSpannedRowCtrls: getSpannedBottomRowCtrls\n },\n bottomLeft: {\n type: \"left\",\n name: \"pinned-left-floating-bottom\",\n container: \"ag-pinned-left-floating-bottom\",\n pinnedType: \"left\",\n getRowCtrls: getBottomRowCtrls,\n getSpannedRowCtrls: getSpannedBottomRowCtrls\n },\n bottomRight: {\n type: \"right\",\n name: \"pinned-right-floating-bottom\",\n container: \"ag-pinned-right-floating-bottom\",\n pinnedType: \"right\",\n getRowCtrls: getBottomRowCtrls,\n getSpannedRowCtrls: getSpannedBottomRowCtrls\n },\n bottomFullWidth: {\n type: \"fullWidth\",\n name: \"floating-bottom-full-width\",\n fullWidth: true,\n getRowCtrls: getBottomRowCtrls\n }\n};\nfunction _getRowViewportClass(name) {\n const options = _getRowContainerOptions(name);\n return `ag-${options.name}-viewport`;\n}\nfunction _getRowContainerClass(name) {\n const options = _getRowContainerOptions(name);\n return options.container ?? `ag-${options.name}-container`;\n}\nfunction _getRowSpanContainerClass(name) {\n const options = _getRowContainerOptions(name);\n return `ag-${options.name}-spanned-cells-container`;\n}\nfunction _getRowContainerOptions(name) {\n return ContainerCssClasses[name];\n}\nvar allTopNoFW = [\"topCenter\", \"topLeft\", \"topRight\"];\nvar allBottomNoFW = [\"bottomCenter\", \"bottomLeft\", \"bottomRight\"];\nvar allMiddleNoFW = [\"center\", \"left\", \"right\"];\nvar allMiddle = [\"center\", \"left\", \"right\", \"fullWidth\"];\nvar allCenter = [\"stickyTopCenter\", \"stickyBottomCenter\", \"center\", \"topCenter\", \"bottomCenter\"];\nvar allLeft = [\"left\", \"bottomLeft\", \"topLeft\", \"stickyTopLeft\", \"stickyBottomLeft\"];\nvar allRight = [\"right\", \"bottomRight\", \"topRight\", \"stickyTopRight\", \"stickyBottomRight\"];\nvar allStickyTopNoFW = [\"stickyTopCenter\", \"stickyTopLeft\", \"stickyTopRight\"];\nvar allStickyBottomNoFW = [\"stickyBottomCenter\", \"stickyBottomLeft\", \"stickyBottomRight\"];\nvar allStickyContainers = [\n ...allStickyTopNoFW,\n \"stickyTopFullWidth\",\n ...allStickyBottomNoFW,\n \"stickyBottomFullWidth\"\n];\nvar allNoFW = [\n ...allTopNoFW,\n ...allBottomNoFW,\n ...allMiddleNoFW,\n ...allStickyTopNoFW,\n ...allStickyBottomNoFW\n];\nvar RowContainerCtrl = class extends BeanStub {\n constructor(name) {\n super();\n this.name = name;\n this.visible = true;\n // Maintaining a constant reference enables optimization in React.\n this.EMPTY_CTRLS = [];\n this.options = _getRowContainerOptions(name);\n }\n postConstruct() {\n this.enableRtl = this.gos.get(\"enableRtl\");\n this.forContainers([\"center\"], () => {\n this.viewportSizeFeature = this.createManagedBean(new ViewportSizeFeature(this));\n this.addManagedEventListeners({\n stickyTopOffsetChanged: this.onStickyTopOffsetChanged.bind(this)\n });\n });\n }\n onStickyTopOffsetChanged(event) {\n this.comp.setOffsetTop(`${event.offset}px`);\n }\n registerWithCtrlsService() {\n if (this.options.fullWidth)\n return;\n this.beans.ctrlsSvc.register(this.name, this);\n }\n forContainers(names, callback) {\n if (names.indexOf(this.name) >= 0) {\n callback();\n }\n }\n setComp(view, eContainer, eSpannedContainer, eViewport) {\n this.comp = view;\n this.eContainer = eContainer;\n this.eSpannedContainer = eSpannedContainer;\n this.eViewport = eViewport;\n this.createManagedBean(new RowContainerEventsFeature(this.eViewport ?? this.eContainer));\n this.addPreventScrollWhileDragging();\n this.listenOnDomOrder();\n const { pinnedCols, rangeSvc } = this.beans;\n const pinnedWidthChanged = () => this.onPinnedWidthChanged();\n this.forContainers(allLeft, () => {\n this.pinnedWidthFeature = this.createOptionalManagedBean(\n pinnedCols?.createPinnedWidthFeature(true, this.eContainer, this.eSpannedContainer)\n );\n this.addManagedEventListeners({ leftPinnedWidthChanged: pinnedWidthChanged });\n });\n this.forContainers(allRight, () => {\n this.pinnedWidthFeature = this.createOptionalManagedBean(\n pinnedCols?.createPinnedWidthFeature(false, this.eContainer, this.eSpannedContainer)\n );\n this.addManagedEventListeners({ rightPinnedWidthChanged: pinnedWidthChanged });\n });\n this.forContainers(\n allMiddle,\n () => this.createManagedBean(\n new SetHeightFeature(this.eContainer, this.name === \"center\" ? eViewport : void 0)\n )\n );\n if (rangeSvc) {\n this.forContainers(\n allNoFW,\n () => this.createManagedBean(rangeSvc.createDragListenerFeature(this.eContainer))\n );\n }\n this.forContainers(\n allCenter,\n () => this.createManagedBean(new CenterWidthFeature((width) => this.comp.setContainerWidth(`${width}px`)))\n );\n this.visible = this.isContainerVisible();\n this.addListeners();\n this.registerWithCtrlsService();\n }\n onScrollCallback(fn) {\n this.addManagedElementListeners(this.eViewport, { scroll: fn });\n }\n addListeners() {\n const { spannedRowRenderer, gos } = this.beans;\n this.addManagedEventListeners({\n displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this),\n displayedColumnsWidthChanged: this.onDisplayedColumnsChanged.bind(this),\n displayedRowsChanged: (params) => this.onDisplayedRowsChanged(params.afterScroll)\n });\n this.onDisplayedColumnsChanged();\n this.onDisplayedRowsChanged();\n if (spannedRowRenderer && this.options.getSpannedRowCtrls && gos.get(\"enableCellSpan\")) {\n this.addManagedListeners(spannedRowRenderer, {\n spannedRowsUpdated: () => {\n const spannedCtrls = this.options.getSpannedRowCtrls(spannedRowRenderer);\n if (!spannedCtrls) {\n return;\n }\n this.comp.setSpannedRowCtrls(spannedCtrls, false);\n }\n });\n }\n }\n listenOnDomOrder() {\n const isStickContainer = allStickyContainers.indexOf(this.name) >= 0;\n if (isStickContainer) {\n this.comp.setDomOrder(true);\n return;\n }\n const listener = () => {\n const isEnsureDomOrder = this.gos.get(\"ensureDomOrder\");\n const isPrintLayout = _isDomLayout(this.gos, \"print\");\n this.comp.setDomOrder(isEnsureDomOrder || isPrintLayout);\n };\n this.addManagedPropertyListener(\"domLayout\", listener);\n listener();\n }\n onDisplayedColumnsChanged() {\n this.forContainers([\"center\"], () => this.onHorizontalViewportChanged());\n }\n // this methods prevents the grid views from being scrolled while the dragService is being used\n // eg. the view should not scroll up and down while dragging rows using the rowDragComp.\n addPreventScrollWhileDragging() {\n const { dragSvc } = this.beans;\n if (!dragSvc) {\n return;\n }\n const preventScroll = (e) => {\n if (dragSvc.dragging) {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n };\n this.eContainer.addEventListener(\"touchmove\", preventScroll, { passive: false });\n this.addDestroyFunc(() => this.eContainer.removeEventListener(\"touchmove\", preventScroll));\n }\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged\n onHorizontalViewportChanged(afterScroll = false) {\n const scrollWidth = this.getCenterWidth();\n const scrollPosition = this.getCenterViewportScrollLeft();\n this.beans.colViewport.setScrollPosition(scrollWidth, scrollPosition, afterScroll);\n }\n hasHorizontalScrollGap() {\n return this.eContainer.clientWidth - this.eViewport.clientWidth < 0;\n }\n hasVerticalScrollGap() {\n return this.eContainer.clientHeight - this.eViewport.clientHeight < 0;\n }\n getCenterWidth() {\n return _getInnerWidth(this.eViewport);\n }\n getCenterViewportScrollLeft() {\n return _getScrollLeft(this.eViewport, this.enableRtl);\n }\n registerViewportResizeListener(listener) {\n const unsubscribeFromResize = _observeResize(this.beans, this.eViewport, listener);\n this.addDestroyFunc(() => unsubscribeFromResize());\n }\n isViewportInTheDOMTree() {\n return _isInDOM(this.eViewport);\n }\n getViewportScrollLeft() {\n return _getScrollLeft(this.eViewport, this.enableRtl);\n }\n isHorizontalScrollShowing() {\n const isAlwaysShowHorizontalScroll = this.gos.get(\"alwaysShowHorizontalScroll\");\n return isAlwaysShowHorizontalScroll || _isHorizontalScrollShowing(this.eViewport);\n }\n setHorizontalScroll(offset) {\n this.comp.setHorizontalScroll(offset);\n }\n getHScrollPosition() {\n const res = {\n left: this.eViewport.scrollLeft,\n right: this.eViewport.scrollLeft + this.eViewport.offsetWidth\n };\n return res;\n }\n setCenterViewportScrollLeft(value) {\n _setScrollLeft(this.eViewport, value, this.enableRtl);\n }\n isContainerVisible() {\n const pinned = this.options.pinnedType != null;\n return !pinned || !!this.pinnedWidthFeature && this.pinnedWidthFeature.getWidth() > 0;\n }\n onPinnedWidthChanged() {\n const visible = this.isContainerVisible();\n if (this.visible != visible) {\n this.visible = visible;\n this.onDisplayedRowsChanged();\n }\n }\n onDisplayedRowsChanged(afterScroll = false) {\n const rows = this.options.getRowCtrls(this.beans.rowRenderer);\n if (!this.visible || rows.length === 0) {\n this.comp.setRowCtrls({ rowCtrls: this.EMPTY_CTRLS });\n return;\n }\n const printLayout = _isDomLayout(this.gos, \"print\");\n const embedFullWidthRows = this.gos.get(\"embedFullWidthRows\");\n const embedFW = embedFullWidthRows || printLayout;\n const rowsThisContainer = rows.filter((rowCtrl) => {\n const fullWidthRow = rowCtrl.isFullWidth();\n const match = this.options.fullWidth ? !embedFW && fullWidthRow : embedFW || !fullWidthRow;\n return match;\n });\n this.comp.setRowCtrls({ rowCtrls: rowsThisContainer, useFlushSync: afterScroll });\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/gridBodyCtrl.ts\nvar CSS_CLASS_FORCE_VERTICAL_SCROLL = \"ag-force-vertical-scroll\";\nvar CSS_CLASS_CELL_SELECTABLE = \"ag-selectable\";\nvar CSS_CLASS_COLUMN_MOVING = \"ag-column-moving\";\nvar GridBodyCtrl = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.stickyTopHeight = 0;\n this.stickyBottomHeight = 0;\n }\n wireBeans(beans) {\n this.ctrlsSvc = beans.ctrlsSvc;\n this.colModel = beans.colModel;\n this.scrollVisibleSvc = beans.scrollVisibleSvc;\n this.pinnedRowModel = beans.pinnedRowModel;\n this.filterManager = beans.filterManager;\n this.rowGroupColsSvc = beans.rowGroupColsSvc;\n }\n setComp(comp, eGridBody, eBodyViewport, eTop, eBottom, eStickyTop, eStickyBottom) {\n this.comp = comp;\n this.eGridBody = eGridBody;\n this.eBodyViewport = eBodyViewport;\n this.eTop = eTop;\n this.eBottom = eBottom;\n this.eStickyTop = eStickyTop;\n this.eStickyBottom = eStickyBottom;\n this.eCenterColsViewport = eBodyViewport.querySelector(`.${_getRowViewportClass(\"center\")}`);\n this.eFullWidthContainer = eBodyViewport.querySelector(`.${_getRowContainerClass(\"fullWidth\")}`);\n this.eStickyTopFullWidthContainer = eStickyTop.querySelector(\n `.${_getRowContainerClass(\"stickyTopFullWidth\")}`\n );\n this.eStickyBottomFullWidthContainer = eStickyBottom.querySelector(\n `.${_getRowContainerClass(\"stickyBottomFullWidth\")}`\n );\n this.setCellTextSelection(this.gos.get(\"enableCellTextSelection\"));\n this.addManagedPropertyListener(\n \"enableCellTextSelection\",\n (props) => this.setCellTextSelection(props.currentValue)\n );\n this.createManagedBean(new LayoutFeature(this.comp));\n this.scrollFeature = this.createManagedBean(new GridBodyScrollFeature(this.eBodyViewport));\n this.beans.rowDragSvc?.setupRowDrag(this.eBodyViewport, this);\n this.setupRowAnimationCssClass();\n this.addEventListeners();\n this.addFocusListeners([eTop, eBodyViewport, eBottom, eStickyTop, eStickyBottom]);\n this.setGridRootRole();\n this.onGridColumnsChanged();\n this.addBodyViewportListener();\n this.setFloatingHeights();\n this.disableBrowserDragging();\n this.addStopEditingWhenGridLosesFocus();\n this.updateScrollingClasses();\n this.filterManager?.setupAdvFilterHeaderComp(eTop);\n this.ctrlsSvc.register(\"gridBodyCtrl\", this);\n }\n addEventListeners() {\n const setFloatingHeights = this.setFloatingHeights.bind(this);\n const setGridRootRole = this.setGridRootRole.bind(this);\n this.addManagedEventListeners({\n gridColumnsChanged: this.onGridColumnsChanged.bind(this),\n scrollVisibilityChanged: this.onScrollVisibilityChanged.bind(this),\n scrollGapChanged: this.updateScrollingClasses.bind(this),\n pinnedRowDataChanged: setFloatingHeights,\n pinnedHeightChanged: setFloatingHeights,\n headerHeightChanged: this.setStickyTopOffsetTop.bind(this),\n columnRowGroupChanged: setGridRootRole,\n columnPivotChanged: setGridRootRole\n });\n this.addManagedPropertyListener(\"treeData\", setGridRootRole);\n }\n onGridColumnsChanged() {\n const columns = this.beans.colModel.getCols();\n this.comp.setColumnCount(columns.length);\n }\n onScrollVisibilityChanged() {\n const { scrollVisibleSvc } = this;\n const visible = scrollVisibleSvc.verticalScrollShowing;\n this.setVerticalScrollPaddingVisible(visible);\n this.setStickyWidth(visible);\n this.setStickyBottomOffsetBottom();\n const scrollbarWidth = visible ? scrollVisibleSvc.getScrollbarWidth() || 0 : 0;\n const pad = _isInvisibleScrollbar() ? 16 : 0;\n const width = `calc(100% + ${scrollbarWidth + pad}px)`;\n _requestAnimationFrame(this.beans, () => this.comp.setBodyViewportWidth(width));\n this.updateScrollingClasses();\n }\n setGridRootRole() {\n const { rowGroupColsSvc, colModel } = this;\n let isTreeGrid = this.gos.get(\"treeData\");\n if (!isTreeGrid) {\n const isPivotActive = colModel.isPivotMode();\n const rowGroupColumnLen = !rowGroupColsSvc ? 0 : rowGroupColsSvc.columns.length;\n const columnsNeededForGrouping = isPivotActive ? 2 : 1;\n isTreeGrid = rowGroupColumnLen >= columnsNeededForGrouping;\n }\n this.comp.setGridRootRole(isTreeGrid ? \"treegrid\" : \"grid\");\n }\n addFocusListeners(elements) {\n elements.forEach((element) => {\n this.addManagedElementListeners(element, {\n focusin: (e) => {\n const { target } = e;\n const isFocusedElementNested = _isElementChildOfClass(target, \"ag-root\", element);\n element.classList.toggle(\"ag-has-focus\", !isFocusedElementNested);\n },\n focusout: (e) => {\n const { target, relatedTarget } = e;\n const gridContainRelatedTarget = element.contains(relatedTarget);\n const isNestedRelatedTarget = _isElementChildOfClass(\n relatedTarget,\n \"ag-root\",\n element\n );\n const isNestedTarget = _isElementChildOfClass(target, \"ag-root\", element);\n if (isNestedTarget) {\n return;\n }\n if (!gridContainRelatedTarget || isNestedRelatedTarget) {\n element.classList.remove(\"ag-has-focus\");\n }\n }\n });\n });\n }\n // used by ColumnAnimationService\n setColumnMovingCss(moving) {\n this.comp.setColumnMovingCss(CSS_CLASS_COLUMN_MOVING, moving);\n }\n setCellTextSelection(selectable = false) {\n this.comp.setCellSelectableCss(CSS_CLASS_CELL_SELECTABLE, selectable);\n }\n updateScrollingClasses() {\n const {\n eGridBody: { classList },\n scrollVisibleSvc\n } = this;\n classList.toggle(\"ag-body-vertical-content-no-gap\", !scrollVisibleSvc.verticalScrollGap);\n classList.toggle(\"ag-body-horizontal-content-no-gap\", !scrollVisibleSvc.horizontalScrollGap);\n }\n // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n disableBrowserDragging() {\n this.addManagedElementListeners(this.eGridBody, {\n dragstart: (event) => {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n }\n });\n }\n addStopEditingWhenGridLosesFocus() {\n this.beans.editSvc?.addStopEditingWhenGridLosesFocus([\n this.eBodyViewport,\n this.eBottom,\n this.eTop,\n this.eStickyTop,\n this.eStickyBottom\n ]);\n }\n updateRowCount() {\n const headerCount = (this.ctrlsSvc.getHeaderRowContainerCtrl()?.getRowCount() ?? 0) + (this.filterManager?.getHeaderRowCount() ?? 0);\n const { rowModel } = this.beans;\n const rowCount = rowModel.isLastRowIndexKnown() ? rowModel.getRowCount() : -1;\n const total = rowCount === -1 ? -1 : headerCount + rowCount;\n this.comp.setRowCount(total);\n }\n registerBodyViewportResizeListener(listener) {\n this.comp.registerBodyViewportResizeListener(listener);\n }\n setVerticalScrollPaddingVisible(visible) {\n const overflowY = visible ? \"scroll\" : \"hidden\";\n this.comp.setPinnedTopBottomOverflowY(overflowY);\n }\n isVerticalScrollShowing() {\n const show = this.gos.get(\"alwaysShowVerticalScroll\");\n const cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;\n const allowVerticalScroll = _isDomLayout(this.gos, \"normal\");\n this.comp.setAlwaysVerticalScrollClass(cssClass, show);\n return show || allowVerticalScroll && _isVerticalScrollShowing(this.eBodyViewport);\n }\n setupRowAnimationCssClass() {\n const { rowContainerHeight, environment } = this.beans;\n let initialSizeMeasurementComplete = environment.sizesMeasured;\n const updateAnimationClass = () => {\n const animateRows = initialSizeMeasurementComplete && _isAnimateRows(this.gos) && !rowContainerHeight.stretching;\n const animateRowsCssClass = animateRows ? \"ag-row-animation\" : \"ag-row-no-animation\";\n this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);\n };\n updateAnimationClass();\n this.addManagedEventListeners({ heightScaleChanged: updateAnimationClass });\n this.addManagedPropertyListener(\"animateRows\", updateAnimationClass);\n this.addManagedEventListeners({\n gridStylesChanged: () => {\n if (!initialSizeMeasurementComplete && environment.sizesMeasured) {\n initialSizeMeasurementComplete = true;\n updateAnimationClass();\n }\n }\n });\n }\n addBodyViewportListener() {\n const { popupSvc, touchSvc } = this.beans;\n const listener = this.onBodyViewportContextMenu.bind(this);\n this.addManagedElementListeners(this.eBodyViewport, { contextmenu: listener });\n touchSvc?.mockBodyContextMenu(this, listener);\n this.addManagedElementListeners(this.eBodyViewport, {\n wheel: this.onBodyViewportWheel.bind(this, popupSvc)\n });\n this.addManagedElementListeners(this.eStickyTop, { wheel: this.onStickyWheel.bind(this) });\n this.addManagedElementListeners(this.eStickyBottom, { wheel: this.onStickyWheel.bind(this) });\n this.addFullWidthContainerWheelListener();\n }\n addFullWidthContainerWheelListener() {\n this.addManagedElementListeners(this.eFullWidthContainer, {\n wheel: (e) => this.onFullWidthContainerWheel(e)\n });\n }\n onFullWidthContainerWheel(e) {\n const { deltaX, deltaY, shiftKey } = e;\n const isHorizontalScroll = shiftKey || Math.abs(deltaX) > Math.abs(deltaY);\n if (isHorizontalScroll && _isEventFromThisGrid(this.gos, e)) {\n this.scrollGridBodyToMatchEvent(e);\n }\n }\n onStickyWheel(e) {\n const { deltaX, deltaY, shiftKey } = e;\n const isHorizontalScroll = shiftKey || Math.abs(deltaX) > Math.abs(deltaY);\n const target = e.target;\n if (!isHorizontalScroll) {\n e.preventDefault();\n this.scrollVertically(deltaY);\n } else if (this.eStickyTopFullWidthContainer.contains(target) || this.eStickyBottomFullWidthContainer.contains(target)) {\n this.scrollGridBodyToMatchEvent(e);\n }\n }\n scrollGridBodyToMatchEvent(e) {\n const { deltaX, deltaY } = e;\n e.preventDefault();\n this.eCenterColsViewport.scrollBy({ left: deltaX || deltaY });\n }\n onBodyViewportContextMenu(mouseEvent, touch, touchEvent) {\n if (!mouseEvent && !touchEvent) {\n return;\n }\n if (this.gos.get(\"preventDefaultOnContextMenu\")) {\n const event = mouseEvent || touchEvent;\n event.preventDefault();\n }\n const { target } = mouseEvent || touch;\n if (target === this.eBodyViewport || target === this.ctrlsSvc.get(\"center\").eViewport) {\n this.beans.contextMenuSvc?.showContextMenu({\n mouseEvent,\n touchEvent,\n value: null,\n anchorToElement: this.eGridBody,\n source: \"ui\"\n });\n }\n }\n onBodyViewportWheel(popupSvc, e) {\n if (!this.gos.get(\"suppressScrollWhenPopupsAreOpen\")) {\n return;\n }\n if (popupSvc?.hasAnchoredPopup()) {\n e.preventDefault();\n }\n }\n // called by rowDragFeature\n scrollVertically(pixels) {\n const oldScrollPosition = this.eBodyViewport.scrollTop;\n this.scrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n }\n setFloatingHeights() {\n const { pinnedRowModel } = this;\n const floatingTopHeight = pinnedRowModel?.getPinnedTopTotalHeight() ?? 0;\n const floatingBottomHeight = pinnedRowModel?.getPinnedBottomTotalHeight() ?? 0;\n this.comp.setTopHeight(floatingTopHeight);\n this.comp.setBottomHeight(floatingBottomHeight);\n this.comp.setTopDisplay(floatingTopHeight ? \"inherit\" : \"none\");\n this.comp.setBottomDisplay(floatingBottomHeight ? \"inherit\" : \"none\");\n this.setStickyTopOffsetTop();\n this.setStickyBottomOffsetBottom();\n }\n setStickyTopHeight(height = 0) {\n this.comp.setStickyTopHeight(`${height}px`);\n this.stickyTopHeight = height;\n }\n setStickyBottomHeight(height = 0) {\n this.comp.setStickyBottomHeight(`${height}px`);\n this.stickyBottomHeight = height;\n }\n setStickyWidth(vScrollVisible) {\n if (!vScrollVisible) {\n this.comp.setStickyTopWidth(\"100%\");\n this.comp.setStickyBottomWidth(\"100%\");\n } else {\n const scrollbarWidth = this.scrollVisibleSvc.getScrollbarWidth();\n this.comp.setStickyTopWidth(`calc(100% - ${scrollbarWidth}px)`);\n this.comp.setStickyBottomWidth(`calc(100% - ${scrollbarWidth}px)`);\n }\n }\n setStickyTopOffsetTop() {\n const headerCtrl = this.ctrlsSvc.get(\"gridHeaderCtrl\");\n const headerHeight = headerCtrl.headerHeight + (this.filterManager?.getHeaderHeight() ?? 0);\n const pinnedTopHeight = this.pinnedRowModel?.getPinnedTopTotalHeight() ?? 0;\n let height = 0;\n if (headerHeight > 0) {\n height += headerHeight;\n }\n if (pinnedTopHeight > 0) {\n height += pinnedTopHeight;\n }\n if (height > 0) {\n height += 1;\n }\n this.comp.setStickyTopTop(`${height}px`);\n }\n setStickyBottomOffsetBottom() {\n const { pinnedRowModel, scrollVisibleSvc, comp } = this;\n const pinnedBottomHeight = pinnedRowModel?.getPinnedBottomTotalHeight() ?? 0;\n const hScrollShowing = scrollVisibleSvc.horizontalScrollShowing;\n const scrollbarWidth = hScrollShowing ? scrollVisibleSvc.getScrollbarWidth() || 0 : 0;\n const height = pinnedBottomHeight + scrollbarWidth;\n comp.setStickyBottomBottom(`${height}px`);\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/abstractFakeScrollComp.ts\nvar AbstractFakeScrollComp = class extends Component {\n constructor(template, direction) {\n super();\n this.direction = direction;\n this.eViewport = RefPlaceholder;\n this.eContainer = RefPlaceholder;\n this.hideTimeout = 0;\n this.setTemplate(template);\n }\n postConstruct() {\n this.addManagedEventListeners({\n scrollVisibilityChanged: this.onScrollVisibilityChanged.bind(this)\n });\n this.onScrollVisibilityChanged();\n this.addOrRemoveCssClass(\"ag-apple-scrollbar\", _isMacOsUserAgent() || _isIOSUserAgent());\n }\n destroy() {\n super.destroy();\n window.clearTimeout(this.hideTimeout);\n }\n initialiseInvisibleScrollbar() {\n if (this.invisibleScrollbar !== void 0) {\n return;\n }\n this.invisibleScrollbar = _isInvisibleScrollbar();\n if (this.invisibleScrollbar) {\n this.hideAndShowInvisibleScrollAsNeeded();\n this.addActiveListenerToggles();\n }\n }\n addActiveListenerToggles() {\n const eGui = this.getGui();\n const onActivate = () => this.addOrRemoveCssClass(\"ag-scrollbar-active\", true);\n const onDeactivate = () => this.addOrRemoveCssClass(\"ag-scrollbar-active\", false);\n this.addManagedListeners(eGui, {\n mouseenter: onActivate,\n mousedown: onActivate,\n touchstart: onActivate,\n mouseleave: onDeactivate,\n touchend: onDeactivate\n });\n }\n onScrollVisibilityChanged() {\n if (this.invisibleScrollbar === void 0) {\n this.initialiseInvisibleScrollbar();\n }\n _requestAnimationFrame(this.beans, () => this.setScrollVisible());\n }\n hideAndShowInvisibleScrollAsNeeded() {\n this.addManagedEventListeners({\n bodyScroll: (params) => {\n if (params.direction === this.direction) {\n if (this.hideTimeout) {\n window.clearTimeout(this.hideTimeout);\n this.hideTimeout = 0;\n }\n this.addOrRemoveCssClass(\"ag-scrollbar-scrolling\", true);\n }\n },\n bodyScrollEnd: () => {\n this.hideTimeout = window.setTimeout(() => {\n this.addOrRemoveCssClass(\"ag-scrollbar-scrolling\", false);\n this.hideTimeout = 0;\n }, 400);\n }\n });\n }\n attemptSettingScrollPosition(value) {\n const viewport = this.eViewport;\n _waitUntil(\n () => _isVisible(viewport),\n () => this.setScrollPosition(value),\n 100\n );\n }\n onScrollCallback(fn) {\n this.addManagedElementListeners(this.eViewport, { scroll: fn });\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/fakeHScrollComp.ts\nvar FakeHScrollElement = {\n tag: \"div\",\n cls: \"ag-body-horizontal-scroll\",\n attrs: { \"aria-hidden\": \"true\" },\n children: [\n { tag: \"div\", ref: \"eLeftSpacer\", cls: \"ag-horizontal-left-spacer\" },\n {\n tag: \"div\",\n ref: \"eViewport\",\n cls: \"ag-body-horizontal-scroll-viewport\",\n children: [{ tag: \"div\", ref: \"eContainer\", cls: \"ag-body-horizontal-scroll-container\" }]\n },\n { tag: \"div\", ref: \"eRightSpacer\", cls: \"ag-horizontal-right-spacer\" }\n ]\n};\nvar FakeHScrollComp = class extends AbstractFakeScrollComp {\n constructor() {\n super(FakeHScrollElement, \"horizontal\");\n this.eLeftSpacer = RefPlaceholder;\n this.eRightSpacer = RefPlaceholder;\n this.setScrollVisibleDebounce = 0;\n }\n wireBeans(beans) {\n this.visibleCols = beans.visibleCols;\n this.scrollVisibleSvc = beans.scrollVisibleSvc;\n }\n postConstruct() {\n super.postConstruct();\n const spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);\n this.addManagedEventListeners({\n displayedColumnsChanged: spacerWidthsListener,\n displayedColumnsWidthChanged: spacerWidthsListener,\n pinnedRowDataChanged: this.refreshCompBottom.bind(this)\n });\n this.addManagedPropertyListener(\"domLayout\", spacerWidthsListener);\n this.beans.ctrlsSvc.register(\"fakeHScrollComp\", this);\n this.createManagedBean(new CenterWidthFeature((width) => this.eContainer.style.width = `${width}px`));\n this.addManagedPropertyListeners([\"suppressHorizontalScroll\"], this.onScrollVisibilityChanged.bind(this));\n }\n destroy() {\n window.clearTimeout(this.setScrollVisibleDebounce);\n super.destroy();\n }\n initialiseInvisibleScrollbar() {\n if (this.invisibleScrollbar !== void 0) {\n return;\n }\n this.enableRtl = this.gos.get(\"enableRtl\");\n super.initialiseInvisibleScrollbar();\n if (this.invisibleScrollbar) {\n this.refreshCompBottom();\n }\n }\n refreshCompBottom() {\n if (!this.invisibleScrollbar) {\n return;\n }\n const bottomPinnedHeight = this.beans.pinnedRowModel?.getPinnedBottomTotalHeight() ?? 0;\n this.getGui().style.bottom = `${bottomPinnedHeight}px`;\n }\n onScrollVisibilityChanged() {\n super.onScrollVisibilityChanged();\n this.setFakeHScrollSpacerWidths();\n }\n setFakeHScrollSpacerWidths() {\n const vScrollShowing = this.scrollVisibleSvc.verticalScrollShowing;\n let rightSpacing = this.visibleCols.getDisplayedColumnsRightWidth();\n const scrollOnRight = !this.enableRtl && vScrollShowing;\n const scrollbarWidth = this.scrollVisibleSvc.getScrollbarWidth();\n if (scrollOnRight) {\n rightSpacing += scrollbarWidth;\n }\n _setFixedWidth(this.eRightSpacer, rightSpacing);\n this.eRightSpacer.classList.toggle(\"ag-scroller-corner\", rightSpacing <= scrollbarWidth);\n let leftSpacing = this.visibleCols.getColsLeftWidth();\n const scrollOnLeft = this.enableRtl && vScrollShowing;\n if (scrollOnLeft) {\n leftSpacing += scrollbarWidth;\n }\n _setFixedWidth(this.eLeftSpacer, leftSpacing);\n this.eLeftSpacer.classList.toggle(\"ag-scroller-corner\", leftSpacing <= scrollbarWidth);\n }\n setScrollVisible() {\n const hScrollShowing = this.scrollVisibleSvc.horizontalScrollShowing;\n const invisibleScrollbar2 = this.invisibleScrollbar;\n const isSuppressHorizontalScroll = this.gos.get(\"suppressHorizontalScroll\");\n const scrollbarWidth = hScrollShowing ? this.scrollVisibleSvc.getScrollbarWidth() || 0 : 0;\n const adjustedScrollbarWidth = scrollbarWidth === 0 && invisibleScrollbar2 ? 16 : scrollbarWidth;\n const scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;\n const apply = () => {\n this.setScrollVisibleDebounce = 0;\n this.addOrRemoveCssClass(\"ag-scrollbar-invisible\", invisibleScrollbar2);\n _setFixedHeight(this.getGui(), scrollContainerSize);\n _setFixedHeight(this.eViewport, scrollContainerSize);\n _setFixedHeight(this.eContainer, scrollContainerSize);\n this.setDisplayed(hScrollShowing, { skipAriaHidden: true });\n };\n window.clearTimeout(this.setScrollVisibleDebounce);\n if (!hScrollShowing) {\n apply();\n } else {\n this.setScrollVisibleDebounce = window.setTimeout(apply, 100);\n }\n }\n getScrollPosition() {\n return _getScrollLeft(this.eViewport, this.enableRtl);\n }\n setScrollPosition(value) {\n if (!_isVisible(this.eViewport)) {\n this.attemptSettingScrollPosition(value);\n }\n _setScrollLeft(this.eViewport, value, this.enableRtl);\n }\n};\nvar FakeHScrollSelector = {\n selector: \"AG-FAKE-HORIZONTAL-SCROLL\",\n component: FakeHScrollComp\n};\n\n// packages/ag-grid-community/src/gridBodyComp/fakeVScrollComp.ts\nvar FakeVScrollElement = {\n tag: \"div\",\n cls: \"ag-body-vertical-scroll\",\n attrs: { \"aria-hidden\": \"true\" },\n children: [\n {\n tag: \"div\",\n ref: \"eViewport\",\n cls: \"ag-body-vertical-scroll-viewport\",\n children: [{ tag: \"div\", ref: \"eContainer\", cls: \"ag-body-vertical-scroll-container\" }]\n }\n ]\n};\nvar FakeVScrollComp = class extends AbstractFakeScrollComp {\n constructor() {\n super(FakeVScrollElement, \"vertical\");\n }\n postConstruct() {\n super.postConstruct();\n this.createManagedBean(new SetHeightFeature(this.eContainer));\n const { ctrlsSvc } = this.beans;\n ctrlsSvc.register(\"fakeVScrollComp\", this);\n this.addManagedEventListeners({\n rowContainerHeightChanged: this.onRowContainerHeightChanged.bind(this, ctrlsSvc)\n });\n }\n setScrollVisible() {\n const { scrollVisibleSvc } = this.beans;\n const vScrollShowing = scrollVisibleSvc.verticalScrollShowing;\n const invisibleScrollbar2 = this.invisibleScrollbar;\n const scrollbarWidth = vScrollShowing ? scrollVisibleSvc.getScrollbarWidth() || 0 : 0;\n const adjustedScrollbarWidth = scrollbarWidth === 0 && invisibleScrollbar2 ? 16 : scrollbarWidth;\n this.addOrRemoveCssClass(\"ag-scrollbar-invisible\", invisibleScrollbar2);\n _setFixedWidth(this.getGui(), adjustedScrollbarWidth);\n _setFixedWidth(this.eViewport, adjustedScrollbarWidth);\n _setFixedWidth(this.eContainer, adjustedScrollbarWidth);\n this.setDisplayed(vScrollShowing, { skipAriaHidden: true });\n }\n onRowContainerHeightChanged(ctrlsSvc) {\n const gridBodyCtrl = ctrlsSvc.getGridBodyCtrl();\n const gridBodyViewportEl = gridBodyCtrl.eBodyViewport;\n const eViewportScrollTop = this.getScrollPosition();\n const gridBodyViewportScrollTop = gridBodyViewportEl.scrollTop;\n if (eViewportScrollTop != gridBodyViewportScrollTop) {\n this.setScrollPosition(gridBodyViewportScrollTop, true);\n }\n }\n getScrollPosition() {\n return this.eViewport.scrollTop;\n }\n setScrollPosition(value, force) {\n if (!force && !_isVisible(this.eViewport)) {\n this.attemptSettingScrollPosition(value);\n }\n this.eViewport.scrollTop = value;\n }\n};\nvar FakeVScrollSelector = {\n selector: \"AG-FAKE-VERTICAL-SCROLL\",\n component: FakeVScrollComp\n};\n\n// packages/ag-grid-community/src/headerRendering/headerUtils.ts\nfunction getHeaderRowCount(colModel) {\n return colModel.cols ? colModel.cols.treeDepth + 1 : -1;\n}\nfunction getFocusHeaderRowCount(beans) {\n return beans.ctrlsSvc.getHeaderRowContainerCtrl()?.getRowCount() ?? 0;\n}\nfunction getGroupRowsHeight(beans) {\n const heights = [];\n const headerRowContainerCtrls = beans.ctrlsSvc.getHeaderRowContainerCtrls();\n for (const headerRowContainerCtrl of headerRowContainerCtrls) {\n if (!headerRowContainerCtrl) {\n continue;\n }\n const groupRowCount = headerRowContainerCtrl.getGroupRowCount() || 0;\n for (let i = 0; i < groupRowCount; i++) {\n const headerRowCtrl = headerRowContainerCtrl.getGroupRowCtrlAtIndex(i);\n const currentHeightAtPos = heights[i];\n if (headerRowCtrl) {\n const newHeight = getColumnGroupHeaderRowHeight(beans, headerRowCtrl);\n if (currentHeightAtPos == null || newHeight > currentHeightAtPos) {\n heights[i] = newHeight;\n }\n }\n }\n }\n return heights;\n}\nfunction getColumnGroupHeaderRowHeight(beans, headerRowCtrl) {\n const defaultHeight = beans.colModel.isPivotMode() ? getPivotGroupHeaderHeight(beans) : getGroupHeaderHeight(beans);\n let maxDisplayedHeight = defaultHeight;\n const headerRowCellCtrls = headerRowCtrl.getHeaderCellCtrls();\n for (const headerCellCtrl of headerRowCellCtrls) {\n const { column } = headerCellCtrl;\n const height = column.getAutoHeaderHeight();\n if (height != null && height > maxDisplayedHeight && column.isAutoHeaderHeight()) {\n maxDisplayedHeight = height;\n }\n }\n return maxDisplayedHeight;\n}\nfunction getColumnHeaderRowHeight(beans) {\n const defaultHeight = beans.colModel.isPivotMode() ? getPivotHeaderHeight(beans) : getHeaderHeight(beans);\n let maxDisplayedHeight = defaultHeight;\n beans.colModel.forAllCols((col) => {\n const height = col.getAutoHeaderHeight();\n if (height != null && height > maxDisplayedHeight && col.isAutoHeaderHeight()) {\n maxDisplayedHeight = height;\n }\n });\n return maxDisplayedHeight;\n}\nfunction getHeaderHeight(beans) {\n return beans.gos.get(\"headerHeight\") ?? beans.environment.getDefaultHeaderHeight();\n}\nfunction getFloatingFiltersHeight(beans) {\n return beans.gos.get(\"floatingFiltersHeight\") ?? getHeaderHeight(beans);\n}\nfunction getGroupHeaderHeight(beans) {\n return beans.gos.get(\"groupHeaderHeight\") ?? getHeaderHeight(beans);\n}\nfunction getPivotHeaderHeight(beans) {\n return beans.gos.get(\"pivotHeaderHeight\") ?? getHeaderHeight(beans);\n}\nfunction getPivotGroupHeaderHeight(beans) {\n return beans.gos.get(\"pivotGroupHeaderHeight\") ?? getGroupHeaderHeight(beans);\n}\n\n// packages/ag-grid-community/src/headerRendering/gridHeaderCtrl.ts\nvar GridHeaderCtrl = class extends BeanStub {\n setComp(comp, eGui, eFocusableElement) {\n this.comp = comp;\n this.eGui = eGui;\n const { beans } = this;\n const { headerNavigation, touchSvc, ctrlsSvc } = beans;\n if (headerNavigation) {\n this.createManagedBean(\n new ManagedFocusFeature(eFocusableElement, {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n })\n );\n }\n this.addManagedEventListeners({\n columnPivotModeChanged: this.onPivotModeChanged.bind(this, beans),\n displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this, beans)\n });\n this.onPivotModeChanged(beans);\n this.setupHeaderHeight();\n const listener = this.onHeaderContextMenu.bind(this);\n this.addManagedElementListeners(this.eGui, { contextmenu: listener });\n touchSvc?.mockHeaderContextMenu(this, listener);\n ctrlsSvc.register(\"gridHeaderCtrl\", this);\n }\n setupHeaderHeight() {\n const listener = this.setHeaderHeight.bind(this);\n listener();\n this.addManagedPropertyListeners(\n [\n \"headerHeight\",\n \"pivotHeaderHeight\",\n \"groupHeaderHeight\",\n \"pivotGroupHeaderHeight\",\n \"floatingFiltersHeight\"\n ],\n listener\n );\n this.addManagedEventListeners({\n displayedColumnsChanged: listener,\n columnHeaderHeightChanged: listener,\n // add this to the animation frame to avoid a feedback loop\n columnGroupHeaderHeightChanged: () => _requestAnimationFrame(this.beans, () => listener()),\n gridStylesChanged: listener,\n advancedFilterEnabledChanged: listener\n });\n }\n setHeaderHeight() {\n const { beans } = this;\n let totalHeaderHeight = 0;\n const groupHeight = getGroupRowsHeight(beans).reduce((prev, curr) => prev + curr, 0);\n const headerHeight = getColumnHeaderRowHeight(beans);\n if (beans.filterManager?.hasFloatingFilters()) {\n totalHeaderHeight += getFloatingFiltersHeight(beans);\n }\n totalHeaderHeight += groupHeight;\n totalHeaderHeight += headerHeight;\n if (this.headerHeight === totalHeaderHeight) {\n return;\n }\n this.headerHeight = totalHeaderHeight;\n const px = `${totalHeaderHeight + 1}px`;\n this.comp.setHeightAndMinHeight(px);\n this.eventSvc.dispatchEvent({\n type: \"headerHeightChanged\"\n });\n }\n onPivotModeChanged(beans) {\n const pivotMode = beans.colModel.isPivotMode();\n this.comp.addOrRemoveCssClass(\"ag-pivot-on\", pivotMode);\n this.comp.addOrRemoveCssClass(\"ag-pivot-off\", !pivotMode);\n }\n onDisplayedColumnsChanged(beans) {\n const columns = beans.visibleCols.allCols;\n const shouldAllowOverflow = columns.some((col) => col.isSpanHeaderHeight());\n this.comp.addOrRemoveCssClass(\"ag-header-allow-overflow\", shouldAllowOverflow);\n }\n onTabKeyDown(e) {\n const isRtl = this.gos.get(\"enableRtl\");\n const backwards = e.shiftKey;\n const direction = backwards !== isRtl ? \"LEFT\" : \"RIGHT\";\n const { beans } = this;\n const { headerNavigation, focusSvc } = beans;\n if (headerNavigation.navigateHorizontally(direction, true, e) || !backwards && focusSvc.focusOverlay(false) || _focusNextGridCoreContainer(beans, backwards, true)) {\n e.preventDefault();\n }\n }\n handleKeyDown(e) {\n let direction = null;\n const { headerNavigation } = this.beans;\n switch (e.key) {\n case KeyCode.LEFT:\n direction = \"LEFT\";\n case KeyCode.RIGHT: {\n if (!_exists(direction)) {\n direction = \"RIGHT\";\n }\n if (headerNavigation.navigateHorizontally(direction, false, e)) {\n e.preventDefault();\n }\n break;\n }\n case KeyCode.UP:\n direction = \"UP\";\n case KeyCode.DOWN: {\n if (!_exists(direction)) {\n direction = \"DOWN\";\n }\n if (headerNavigation.navigateVertically(direction, null, e)) {\n e.preventDefault();\n }\n break;\n }\n default:\n return;\n }\n }\n onFocusOut(e) {\n const { relatedTarget } = e;\n const { eGui, beans } = this;\n if (!relatedTarget && eGui.contains(_getActiveDomElement(beans))) {\n return;\n }\n if (!eGui.contains(relatedTarget)) {\n beans.focusSvc.focusedHeader = null;\n }\n }\n onHeaderContextMenu(mouseEvent, touch, touchEvent) {\n const { menuSvc, ctrlsSvc } = this.beans;\n if (!mouseEvent && !touchEvent || !menuSvc?.isHeaderContextMenuEnabled()) {\n return;\n }\n const { target } = mouseEvent ?? touch;\n if (target === this.eGui || target === ctrlsSvc.getHeaderRowContainerCtrl()?.eViewport) {\n menuSvc.showHeaderContextMenu(void 0, mouseEvent, touchEvent);\n }\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/abstractCell/abstractHeaderCellComp.ts\nvar AbstractHeaderCellComp = class extends Component {\n constructor(template, ctrl) {\n super(template);\n this.ctrl = ctrl;\n }\n getCtrl() {\n return this.ctrl;\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/column/headerCellComp.ts\nvar HeaderCellElement = {\n tag: \"div\",\n cls: \"ag-header-cell\",\n role: \"columnheader\",\n children: [\n { tag: \"div\", ref: \"eResize\", cls: \"ag-header-cell-resize\", role: \"presentation\" },\n { tag: \"div\", ref: \"eHeaderCompWrapper\", cls: \"ag-header-cell-comp-wrapper\", role: \"presentation\" }\n ]\n};\nvar HeaderCellComp = class extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(HeaderCellElement, ctrl);\n this.eResize = RefPlaceholder;\n this.eHeaderCompWrapper = RefPlaceholder;\n this.headerCompVersion = 0;\n }\n postConstruct() {\n const eGui = this.getGui();\n const setAttribute = (name, value) => {\n if (value != null && value != \"\") {\n eGui.setAttribute(name, value);\n } else {\n eGui.removeAttribute(name);\n }\n };\n setAttribute(\"col-id\", this.ctrl.column.getColId());\n const compProxy = {\n setWidth: (width) => eGui.style.width = width,\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n setUserStyles: (styles) => _addStylesToElement(eGui, styles),\n setAriaSort: (sort) => sort ? _setAriaSort(eGui, sort) : _removeAriaSort(eGui),\n setUserCompDetails: (compDetails) => this.setUserCompDetails(compDetails),\n getUserCompInstance: () => this.headerComp\n };\n this.ctrl.setComp(compProxy, this.getGui(), this.eResize, this.eHeaderCompWrapper, void 0);\n const selectAllGui = this.ctrl.getSelectAllGui();\n if (selectAllGui) {\n this.eResize.insertAdjacentElement(\"afterend\", selectAllGui);\n }\n }\n destroy() {\n this.destroyHeaderComp();\n super.destroy();\n }\n destroyHeaderComp() {\n if (this.headerComp) {\n this.eHeaderCompWrapper.removeChild(this.headerCompGui);\n this.headerComp = this.destroyBean(this.headerComp);\n this.headerCompGui = void 0;\n }\n }\n setUserCompDetails(compDetails) {\n this.headerCompVersion++;\n const versionCopy = this.headerCompVersion;\n compDetails.newAgStackInstance().then((comp) => this.afterCompCreated(versionCopy, comp));\n }\n afterCompCreated(version, headerComp) {\n if (version != this.headerCompVersion || !this.isAlive()) {\n this.destroyBean(headerComp);\n return;\n }\n this.destroyHeaderComp();\n this.headerComp = headerComp;\n this.headerCompGui = headerComp.getGui();\n this.eHeaderCompWrapper.appendChild(this.headerCompGui);\n this.ctrl.setDragSource(this.getGui());\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/columnGroup/headerGroupCellComp.ts\nvar HeaderGroupCellCompElement = {\n tag: \"div\",\n cls: \"ag-header-group-cell\",\n role: \"columnheader\",\n children: [\n { tag: \"div\", ref: \"eHeaderCompWrapper\", cls: \"ag-header-cell-comp-wrapper\", role: \"presentation\" },\n { tag: \"div\", ref: \"eResize\", cls: \"ag-header-cell-resize\", role: \"presentation\" }\n ]\n};\nvar HeaderGroupCellComp = class extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(HeaderGroupCellCompElement, ctrl);\n this.eResize = RefPlaceholder;\n this.eHeaderCompWrapper = RefPlaceholder;\n }\n postConstruct() {\n const eGui = this.getGui();\n const setAttribute = (key, value) => value != void 0 ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);\n eGui.setAttribute(\"col-id\", this.ctrl.column.getUniqueId());\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n setUserStyles: (styles) => _addStylesToElement(eGui, styles),\n setHeaderWrapperHidden: (hidden) => {\n if (hidden) {\n this.eHeaderCompWrapper.style.setProperty(\"display\", \"none\");\n } else {\n this.eHeaderCompWrapper.style.removeProperty(\"display\");\n }\n },\n setHeaderWrapperMaxHeight: (value) => {\n if (value != null) {\n this.eHeaderCompWrapper.style.setProperty(\"max-height\", `${value}px`);\n } else {\n this.eHeaderCompWrapper.style.removeProperty(\"max-height\");\n }\n this.eHeaderCompWrapper.classList.toggle(\"ag-header-cell-comp-wrapper-limited-height\", value != null);\n },\n setResizableDisplayed: (displayed) => _setDisplayed(this.eResize, displayed),\n setWidth: (width) => eGui.style.width = width,\n setAriaExpanded: (expanded) => setAttribute(\"aria-expanded\", expanded),\n setUserCompDetails: (details) => this.setUserCompDetails(details),\n getUserCompInstance: () => this.headerGroupComp\n };\n this.ctrl.setComp(compProxy, eGui, this.eResize, this.eHeaderCompWrapper, void 0);\n }\n setUserCompDetails(details) {\n details.newAgStackInstance().then((comp) => this.afterHeaderCompCreated(comp));\n }\n afterHeaderCompCreated(headerGroupComp) {\n const destroyFunc = () => this.destroyBean(headerGroupComp);\n if (!this.isAlive()) {\n destroyFunc();\n return;\n }\n const eGui = this.getGui();\n const eHeaderGroupGui = headerGroupComp.getGui();\n this.eHeaderCompWrapper.appendChild(eHeaderGroupGui);\n this.addDestroyFunc(destroyFunc);\n this.headerGroupComp = headerGroupComp;\n this.ctrl.setDragSource(eGui);\n }\n addOrRemoveHeaderWrapperStyle(style, value) {\n const { eHeaderCompWrapper } = this;\n if (value) {\n eHeaderCompWrapper.style.setProperty(style, value);\n } else {\n eHeaderCompWrapper.style.removeProperty(style);\n }\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/floatingFilter/headerFilterCellComp.ts\nvar HeaderFilterCellCompElement = {\n tag: \"div\",\n cls: \"ag-header-cell ag-floating-filter\",\n role: \"gridcell\",\n children: [\n { tag: \"div\", ref: \"eFloatingFilterBody\", role: \"presentation\" },\n {\n tag: \"div\",\n ref: \"eButtonWrapper\",\n cls: \"ag-floating-filter-button ag-hidden\",\n role: \"presentation\",\n children: [\n {\n tag: \"button\",\n ref: \"eButtonShowMainFilter\",\n cls: \"ag-button ag-floating-filter-button-button\",\n attrs: { type: \"button\", tabindex: \"-1\" }\n }\n ]\n }\n ]\n};\nvar HeaderFilterCellComp = class extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(HeaderFilterCellCompElement, ctrl);\n this.eFloatingFilterBody = RefPlaceholder;\n this.eButtonWrapper = RefPlaceholder;\n this.eButtonShowMainFilter = RefPlaceholder;\n }\n postConstruct() {\n const eGui = this.getGui();\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n setUserStyles: (styles) => _addStylesToElement(eGui, styles),\n addOrRemoveBodyCssClass: (cssClassName, on) => this.eFloatingFilterBody.classList.toggle(cssClassName, on),\n setButtonWrapperDisplayed: (displayed) => _setDisplayed(this.eButtonWrapper, displayed),\n setCompDetails: (compDetails) => this.setCompDetails(compDetails),\n getFloatingFilterComp: () => this.compPromise,\n setWidth: (width) => eGui.style.width = width,\n setMenuIcon: (eIcon) => this.eButtonShowMainFilter.appendChild(eIcon)\n };\n this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody, void 0);\n }\n setCompDetails(compDetails) {\n if (!compDetails) {\n this.destroyFloatingFilterComp();\n this.compPromise = null;\n return;\n }\n this.compPromise = compDetails.newAgStackInstance();\n this.compPromise.then((comp) => this.afterCompCreated(comp));\n }\n destroy() {\n this.destroyFloatingFilterComp();\n super.destroy();\n }\n destroyFloatingFilterComp() {\n if (this.floatingFilterComp) {\n this.eFloatingFilterBody.removeChild(this.floatingFilterComp.getGui());\n this.floatingFilterComp = this.destroyBean(this.floatingFilterComp);\n }\n }\n afterCompCreated(comp) {\n if (!comp) {\n return;\n }\n if (!this.isAlive()) {\n this.destroyBean(comp);\n return;\n }\n this.destroyFloatingFilterComp();\n this.floatingFilterComp = comp;\n this.eFloatingFilterBody.appendChild(comp.getGui());\n if (comp.afterGuiAttached) {\n comp.afterGuiAttached();\n }\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/row/headerRowComp.ts\nvar HeaderRowComp = class extends Component {\n constructor(ctrl) {\n super({ tag: \"div\", cls: ctrl.headerRowClass, role: \"row\" });\n this.ctrl = ctrl;\n this.headerComps = {};\n }\n postConstruct() {\n _setAriaRowIndex(this.getGui(), this.ctrl.getAriaRowIndex());\n const compProxy = {\n setHeight: (height) => this.getGui().style.height = height,\n setTop: (top) => this.getGui().style.top = top,\n setHeaderCtrls: (ctrls, forceOrder) => this.setHeaderCtrls(ctrls, forceOrder),\n setWidth: (width) => this.getGui().style.width = width\n };\n this.ctrl.setComp(compProxy, void 0);\n }\n destroy() {\n this.setHeaderCtrls([], false);\n super.destroy();\n }\n setHeaderCtrls(ctrls, forceOrder) {\n if (!this.isAlive()) {\n return;\n }\n const oldComps = this.headerComps;\n this.headerComps = {};\n ctrls.forEach((ctrl) => {\n const id = ctrl.instanceId;\n let comp = oldComps[id];\n delete oldComps[id];\n if (comp == null) {\n comp = this.createHeaderComp(ctrl);\n this.getGui().appendChild(comp.getGui());\n }\n this.headerComps[id] = comp;\n });\n Object.values(oldComps).forEach((comp) => {\n this.getGui().removeChild(comp.getGui());\n this.destroyBean(comp);\n });\n if (forceOrder) {\n const comps = Object.values(this.headerComps);\n comps.sort(\n (a, b) => {\n const leftA = a.getCtrl().column.getLeft();\n const leftB = b.getCtrl().column.getLeft();\n return leftA - leftB;\n }\n );\n const elementsInOrder = comps.map((c) => c.getGui());\n _setDomChildOrder(this.getGui(), elementsInOrder);\n }\n }\n createHeaderComp(headerCtrl) {\n let result;\n switch (this.ctrl.type) {\n case \"group\":\n result = new HeaderGroupCellComp(headerCtrl);\n break;\n case \"filter\":\n result = new HeaderFilterCellComp(headerCtrl);\n break;\n default:\n result = new HeaderCellComp(headerCtrl);\n break;\n }\n this.createBean(result);\n result.setParentComponent(this);\n return result;\n }\n};\n\n// packages/ag-grid-community/src/rendering/features/setLeftFeature.ts\nvar SetLeftFeature = class extends BeanStub {\n constructor(columnOrGroup, eCell, beans, colsSpanning) {\n super();\n this.columnOrGroup = columnOrGroup;\n this.eCell = eCell;\n this.colsSpanning = colsSpanning;\n this.columnOrGroup = columnOrGroup;\n this.ariaEl = eCell.querySelector(\"[role=columnheader]\") || eCell;\n this.beans = beans;\n }\n setColsSpanning(colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n }\n getColumnOrGroup() {\n const { beans, colsSpanning } = this;\n if (beans.gos.get(\"enableRtl\") && colsSpanning) {\n return _last(colsSpanning);\n }\n return this.columnOrGroup;\n }\n postConstruct() {\n const onLeftChanged = this.onLeftChanged.bind(this);\n this.addManagedListeners(this.columnOrGroup, { leftChanged: onLeftChanged });\n this.setLeftFirstTime();\n this.addManagedEventListeners({ displayedColumnsWidthChanged: onLeftChanged });\n this.addManagedPropertyListener(\"domLayout\", onLeftChanged);\n }\n setLeftFirstTime() {\n const { gos, colAnimation } = this.beans;\n const suppressMoveAnimation = gos.get(\"suppressColumnMoveAnimation\");\n const oldLeftExists = _exists(this.columnOrGroup.getOldLeft());\n const animateColumnMove = colAnimation?.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n } else {\n this.onLeftChanged();\n }\n }\n animateInLeft() {\n const colOrGroup = this.getColumnOrGroup();\n const oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, colOrGroup.getOldLeft());\n const actualLeft = this.modifyLeftForPrintLayout(colOrGroup, colOrGroup.getLeft());\n this.setLeft(oldActualLeft);\n this.actualLeft = actualLeft;\n this.beans.colAnimation.executeNextVMTurn(() => {\n if (this.actualLeft === actualLeft) {\n this.setLeft(actualLeft);\n }\n });\n }\n onLeftChanged() {\n const colOrGroup = this.getColumnOrGroup();\n const left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n }\n modifyLeftForPrintLayout(colOrGroup, leftPosition) {\n const { gos, visibleCols } = this.beans;\n const printLayout = _isDomLayout(gos, \"print\");\n if (!printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === \"left\") {\n return leftPosition;\n }\n const leftWidth = visibleCols.getColsLeftWidth();\n if (colOrGroup.getPinned() === \"right\") {\n const bodyWidth = visibleCols.bodyWidth;\n return leftWidth + bodyWidth + leftPosition;\n }\n return leftWidth + leftPosition;\n }\n setLeft(value) {\n if (_exists(value)) {\n this.eCell.style.left = `${value}px`;\n }\n if (isColumnGroup2(this.columnOrGroup)) {\n const children = this.columnOrGroup.getLeafColumns();\n if (!children.length) {\n return;\n }\n if (children.length > 1) {\n _setAriaColSpan(this.ariaEl, children.length);\n }\n }\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/abstractCell/abstractHeaderCellCtrl.ts\nvar instanceIdSequence4 = 0;\nvar DOM_DATA_KEY_HEADER_CTRL = \"headerCtrl\";\nvar AbstractHeaderCellCtrl = class extends BeanStub {\n constructor(column, rowCtrl) {\n super();\n this.column = column;\n this.rowCtrl = rowCtrl;\n this.resizeToggleTimeout = 0;\n this.resizeMultiplier = 1;\n this.resizeFeature = null;\n this.lastFocusEvent = null;\n this.dragSource = null;\n this.instanceId = column.getUniqueId() + \"-\" + instanceIdSequence4++;\n }\n postConstruct() {\n const refreshTabIndex = this.refreshTabIndex.bind(this);\n this.addManagedPropertyListeners([\"suppressHeaderFocus\"], refreshTabIndex);\n this.addManagedEventListeners({\n overlayExclusiveChanged: refreshTabIndex\n });\n }\n shouldStopEventPropagation(event) {\n const { headerRowIndex, column } = this.beans.focusSvc.focusedHeader;\n const colDef = column.getDefinition();\n const colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;\n if (!_exists(colDefFunc)) {\n return false;\n }\n const params = _addGridCommonParams(this.gos, {\n colDef,\n column,\n headerRowIndex,\n event\n });\n return !!colDefFunc(params);\n }\n getWrapperHasFocus() {\n const activeEl = _getActiveDomElement(this.beans);\n return activeEl === this.eGui;\n }\n setGui(eGui, compBean) {\n this.eGui = eGui;\n this.addDomData(compBean);\n compBean.addManagedListeners(this.beans.eventSvc, {\n displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this)\n });\n compBean.addManagedElementListeners(this.eGui, {\n focus: this.onGuiFocus.bind(this)\n });\n this.onDisplayedColumnsChanged();\n this.refreshTabIndex();\n }\n refreshHeaderStyles() {\n const colDef = this.column.getDefinition();\n if (!colDef) {\n return;\n }\n const { headerStyle } = colDef;\n let styles;\n if (typeof headerStyle === \"function\") {\n const cellStyleParams = this.getHeaderClassParams();\n styles = headerStyle(cellStyleParams);\n } else {\n styles = headerStyle;\n }\n if (styles) {\n this.comp.setUserStyles(styles);\n }\n }\n onGuiFocus() {\n this.eventSvc.dispatchEvent({\n type: \"headerFocused\",\n column: this.column\n });\n }\n setupAutoHeight(params) {\n const { wrapperElement, checkMeasuringCallback, compBean } = params;\n const { beans } = this;\n const measureHeight = (timesCalled) => {\n if (!this.isAlive() || !compBean.isAlive()) {\n return;\n }\n const { paddingTop, paddingBottom, borderBottomWidth, borderTopWidth } = _getElementSize(this.eGui);\n const extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n const wrapperHeight = wrapperElement.offsetHeight;\n const autoHeight = wrapperHeight + extraHeight;\n if (timesCalled < 5) {\n const doc = _getDocument(beans);\n const notYetInDom = !doc || !doc.contains(wrapperElement);\n const possiblyNoContentYet = autoHeight == 0;\n if (notYetInDom || possiblyNoContentYet) {\n _batchCall(() => measureHeight(timesCalled + 1), \"raf\", beans);\n return;\n }\n }\n this.setColHeaderHeight(this.column, autoHeight);\n };\n let isMeasuring = false;\n let stopResizeObserver;\n const checkMeasuring = () => {\n const newValue = this.column.isAutoHeaderHeight();\n if (newValue && !isMeasuring) {\n startMeasuring();\n }\n if (!newValue && isMeasuring) {\n stopMeasuring();\n }\n };\n const startMeasuring = () => {\n isMeasuring = true;\n measureHeight(0);\n this.comp.addOrRemoveCssClass(\"ag-header-cell-auto-height\", true);\n stopResizeObserver = _observeResize(this.beans, wrapperElement, () => measureHeight(0));\n };\n const stopMeasuring = () => {\n isMeasuring = false;\n if (stopResizeObserver) {\n stopResizeObserver();\n }\n this.comp.addOrRemoveCssClass(\"ag-header-cell-auto-height\", false);\n stopResizeObserver = void 0;\n };\n checkMeasuring();\n compBean.addDestroyFunc(() => stopMeasuring());\n compBean.addManagedListeners(this.column, { widthChanged: () => isMeasuring && measureHeight(0) });\n compBean.addManagedEventListeners({\n sortChanged: () => {\n if (isMeasuring) {\n window.setTimeout(() => measureHeight(0));\n }\n }\n });\n if (checkMeasuringCallback) {\n checkMeasuringCallback(checkMeasuring);\n }\n }\n onDisplayedColumnsChanged() {\n const { comp, column, beans, eGui } = this;\n if (!comp || !column || !eGui) {\n return;\n }\n refreshFirstAndLastStyles(comp, column, beans.visibleCols);\n _setAriaColIndex(eGui, beans.visibleCols.getAriaColIndex(column));\n }\n addResizeAndMoveKeyboardListeners(compBean) {\n compBean.addManagedListeners(this.eGui, {\n keydown: this.onGuiKeyDown.bind(this),\n keyup: this.onGuiKeyUp.bind(this)\n });\n }\n refreshTabIndex() {\n const suppressHeaderFocus = _isHeaderFocusSuppressed(this.beans);\n if (this.eGui) {\n _addOrRemoveAttribute(this.eGui, \"tabindex\", suppressHeaderFocus ? null : \"-1\");\n }\n }\n onGuiKeyDown(e) {\n const activeEl = _getActiveDomElement(this.beans);\n const isLeftOrRight = e.key === KeyCode.LEFT || e.key === KeyCode.RIGHT;\n if (this.isResizing) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n if (\n // if elements within the header are focused, we don't process the event\n activeEl !== this.eGui || // if shiftKey and altKey are not pressed, it's cell navigation so we don't process the event\n !e.shiftKey && !e.altKey\n ) {\n return;\n }\n if (this.isResizing || isLeftOrRight) {\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n if (!isLeftOrRight) {\n return;\n }\n const isLeft = e.key === KeyCode.LEFT !== this.gos.get(\"enableRtl\");\n const direction = isLeft ? \"left\" : \"right\";\n if (e.altKey) {\n this.isResizing = true;\n this.resizeMultiplier += 1;\n const diff = this.getViewportAdjustedResizeDiff(e);\n this.resizeHeader(diff, e.shiftKey);\n this.resizeFeature?.toggleColumnResizing(true);\n } else {\n this.moveHeader(direction);\n }\n }\n moveHeader(hDirection) {\n this.beans.colMoves?.moveHeader(hDirection, this.eGui, this.column, this.rowCtrl.pinned, this);\n }\n getViewportAdjustedResizeDiff(e) {\n const diff = this.getResizeDiff(e);\n const { pinnedCols } = this.beans;\n return pinnedCols ? pinnedCols.getHeaderResizeDiff(diff, this.column) : diff;\n }\n getResizeDiff(e) {\n const { gos, column } = this;\n let isLeft = e.key === KeyCode.LEFT !== gos.get(\"enableRtl\");\n const pinned = column.getPinned();\n const isRtl = gos.get(\"enableRtl\");\n if (pinned) {\n if (isRtl !== (pinned === \"right\")) {\n isLeft = !isLeft;\n }\n }\n return (isLeft ? -1 : 1) * this.resizeMultiplier;\n }\n onGuiKeyUp() {\n if (!this.isResizing) {\n return;\n }\n if (this.resizeToggleTimeout) {\n window.clearTimeout(this.resizeToggleTimeout);\n this.resizeToggleTimeout = 0;\n }\n this.isResizing = false;\n this.resizeMultiplier = 1;\n this.resizeToggleTimeout = window.setTimeout(() => {\n this.resizeFeature?.toggleColumnResizing(false);\n }, 150);\n }\n handleKeyDown(e) {\n const wrapperHasFocus = this.getWrapperHasFocus();\n switch (e.key) {\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n if (wrapperHasFocus) {\n e.preventDefault();\n }\n }\n }\n addDomData(compBean) {\n const key = DOM_DATA_KEY_HEADER_CTRL;\n const { eGui, gos } = this;\n _setDomData(gos, eGui, key, this);\n compBean.addDestroyFunc(() => _setDomData(gos, eGui, key, null));\n }\n focus(event) {\n const { eGui } = this;\n if (!eGui) {\n return false;\n }\n this.lastFocusEvent = event || null;\n eGui.focus();\n return true;\n }\n focusThis() {\n this.beans.focusSvc.focusedHeader = { headerRowIndex: this.rowCtrl.rowIndex, column: this.column };\n }\n removeDragSource() {\n if (this.dragSource) {\n this.beans.dragAndDrop?.removeDragSource(this.dragSource);\n this.dragSource = null;\n }\n }\n handleContextMenuMouseEvent(mouseEvent, touchEvent, column) {\n const event = mouseEvent ?? touchEvent;\n const { menuSvc, gos } = this.beans;\n if (gos.get(\"preventDefaultOnContextMenu\")) {\n event.preventDefault();\n }\n if (menuSvc?.isHeaderContextMenuEnabled(column)) {\n menuSvc.showHeaderContextMenu(column, mouseEvent, touchEvent);\n }\n this.dispatchColumnMouseEvent(\"columnHeaderContextMenu\", column);\n }\n dispatchColumnMouseEvent(eventType, column) {\n this.eventSvc.dispatchEvent({\n type: eventType,\n column\n });\n }\n setColHeaderHeight(col, height) {\n if (!col.setAutoHeaderHeight(height)) {\n return;\n }\n const { eventSvc } = this;\n if (col.isColumn) {\n eventSvc.dispatchEvent({\n type: \"columnHeaderHeightChanged\",\n column: col,\n columns: [col],\n source: \"autosizeColumnHeaderHeight\"\n });\n } else {\n eventSvc.dispatchEvent({\n type: \"columnGroupHeaderHeightChanged\",\n columnGroup: col,\n source: \"autosizeColumnGroupHeaderHeight\"\n });\n }\n }\n clearComponent() {\n this.removeDragSource();\n this.resizeFeature = null;\n this.comp = null;\n this.eGui = null;\n }\n destroy() {\n super.destroy();\n this.column = null;\n this.lastFocusEvent = null;\n this.rowCtrl = null;\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/column/headerCellCtrl.ts\nvar HeaderCellCtrl = class extends AbstractHeaderCellCtrl {\n constructor() {\n super(...arguments);\n this.refreshFunctions = {};\n this.userHeaderClasses = /* @__PURE__ */ new Set();\n this.ariaDescriptionProperties = /* @__PURE__ */ new Map();\n }\n setComp(comp, eGui, eResize, eHeaderCompWrapper, compBeanInput) {\n this.comp = comp;\n const { rowCtrl, column, beans } = this;\n const { colResize, context, colHover, rangeSvc } = beans;\n const compBean = setupCompBean(this, context, compBeanInput);\n this.setGui(eGui, compBean);\n this.updateState();\n this.setupWidth(compBean);\n this.setupMovingCss(compBean);\n this.setupMenuClass(compBean);\n this.setupSortableClass(compBean);\n this.setupWrapTextClass();\n this.refreshSpanHeaderHeight();\n this.setupAutoHeight({\n wrapperElement: eHeaderCompWrapper,\n checkMeasuringCallback: (checkMeasuring) => this.setRefreshFunction(\"measuring\", checkMeasuring),\n compBean\n });\n this.addColumnHoverListener(compBean);\n this.setupFilterClass(compBean);\n this.setupStylesFromColDef();\n this.setupClassesFromColDef();\n this.setupTooltip();\n this.addActiveHeaderMouseListeners(compBean);\n this.setupSelectAll(compBean);\n this.setupUserComp();\n this.refreshAria();\n if (colResize) {\n this.resizeFeature = compBean.createManagedBean(\n colResize.createResizeFeature(rowCtrl.pinned, column, eResize, comp, this)\n );\n } else {\n _setDisplayed(eResize, false);\n }\n colHover?.createHoverFeature(compBean, [column], eGui);\n rangeSvc?.createRangeHighlightFeature(compBean, column, comp);\n compBean.createManagedBean(new SetLeftFeature(column, eGui, beans));\n compBean.createManagedBean(\n new ManagedFocusFeature(eGui, {\n shouldStopEventPropagation: (e) => this.shouldStopEventPropagation(e),\n onTabKeyDown: () => null,\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n })\n );\n this.addResizeAndMoveKeyboardListeners(compBean);\n compBean.addManagedPropertyListeners(\n [\"suppressMovableColumns\", \"suppressMenuHide\", \"suppressAggFuncInHeader\", \"enableAdvancedFilter\"],\n () => this.refresh()\n );\n compBean.addManagedListeners(column, { colDefChanged: () => this.refresh() });\n compBean.addManagedListeners(column, { headerHighlightChanged: this.onHeaderHighlightChanged.bind(this) });\n const listener = () => this.checkDisplayName();\n compBean.addManagedEventListeners({\n columnValueChanged: listener,\n columnRowGroupChanged: listener,\n columnPivotChanged: listener,\n headerHeightChanged: this.onHeaderHeightChanged.bind(this)\n });\n compBean.addDestroyFunc(() => {\n this.refreshFunctions = {};\n this.selectAllFeature = null;\n this.dragSourceElement = void 0;\n this.userCompDetails = null;\n this.userHeaderClasses.clear();\n this.ariaDescriptionProperties.clear();\n this.clearComponent();\n });\n }\n resizeHeader(delta, shiftKey) {\n this.beans.colResize?.resizeHeader(this.column, delta, shiftKey);\n }\n getHeaderClassParams() {\n const { column, beans } = this;\n const colDef = column.colDef;\n return _addGridCommonParams(beans.gos, {\n colDef,\n column,\n floatingFilter: false\n });\n }\n setupUserComp() {\n const compDetails = this.lookupUserCompDetails();\n if (compDetails) {\n this.setCompDetails(compDetails);\n }\n }\n setCompDetails(compDetails) {\n this.userCompDetails = compDetails;\n this.comp.setUserCompDetails(compDetails);\n }\n lookupUserCompDetails() {\n const params = this.createParams();\n const colDef = this.column.getColDef();\n return _getHeaderCompDetails(this.beans.userCompFactory, colDef, params);\n }\n createParams() {\n const { menuSvc, sortSvc, colFilter, gos } = this.beans;\n const params = _addGridCommonParams(gos, {\n column: this.column,\n displayName: this.displayName,\n enableSorting: this.column.isSortable(),\n enableMenu: this.menuEnabled,\n enableFilterButton: this.openFilterEnabled && !!menuSvc?.isHeaderFilterButtonEnabled(this.column),\n enableFilterIcon: !!colFilter && (!this.openFilterEnabled || _isLegacyMenuEnabled(this.gos)),\n showColumnMenu: (buttonElement, onClosedCallback) => {\n menuSvc?.showColumnMenu({\n column: this.column,\n buttonElement,\n positionBy: \"button\",\n onClosedCallback\n });\n },\n showColumnMenuAfterMouseClick: (mouseEvent, onClosedCallback) => {\n menuSvc?.showColumnMenu({\n column: this.column,\n mouseEvent,\n positionBy: \"mouse\",\n onClosedCallback\n });\n },\n showFilter: (buttonElement) => {\n menuSvc?.showFilterMenu({\n column: this.column,\n buttonElement,\n containerType: \"columnFilter\",\n positionBy: \"button\"\n });\n },\n progressSort: (multiSort) => {\n sortSvc?.progressSort(this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: (sort, multiSort) => {\n sortSvc?.setSortForColumn(this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n eGridHeader: this.eGui,\n setTooltip: (value, shouldDisplayTooltip) => {\n gos.assertModuleRegistered(\"Tooltip\", 3);\n this.setupTooltip(value, shouldDisplayTooltip);\n }\n });\n return params;\n }\n setupSelectAll(compBean) {\n const { selectionSvc } = this.beans;\n if (!selectionSvc) {\n return;\n }\n this.selectAllFeature = compBean.createManagedBean(selectionSvc.createSelectAllFeature(this.column));\n this.selectAllFeature.setComp(this);\n }\n getSelectAllGui() {\n return this.selectAllFeature?.getCheckboxGui();\n }\n handleKeyDown(e) {\n super.handleKeyDown(e);\n if (e.key === KeyCode.SPACE) {\n this.selectAllFeature?.onSpaceKeyDown(e);\n }\n if (e.key === KeyCode.ENTER) {\n this.onEnterKeyDown(e);\n }\n if (e.key === KeyCode.DOWN && e.altKey) {\n this.showMenuOnKeyPress(e, false);\n }\n }\n onEnterKeyDown(e) {\n if (e.ctrlKey || e.metaKey) {\n this.showMenuOnKeyPress(e, true);\n } else if (this.sortable) {\n this.beans.sortSvc?.progressSort(this.column, e.shiftKey, \"uiColumnSorted\");\n }\n }\n showMenuOnKeyPress(e, isFilterShortcut) {\n const headerComp = this.comp.getUserCompInstance();\n if (!isHeaderComp(headerComp)) {\n return;\n }\n if (headerComp.onMenuKeyboardShortcut(isFilterShortcut)) {\n e.preventDefault();\n }\n }\n onFocusIn(e) {\n if (!this.eGui.contains(e.relatedTarget)) {\n this.focusThis();\n this.announceAriaDescription();\n }\n if (_isKeyboardMode()) {\n this.setActiveHeader(true);\n }\n }\n onFocusOut(e) {\n if (this.eGui.contains(e.relatedTarget)) {\n return;\n }\n this.setActiveHeader(false);\n }\n setupTooltip(value, shouldDisplayTooltip) {\n this.tooltipFeature = this.beans.tooltipSvc?.setupHeaderTooltip(\n this.tooltipFeature,\n this,\n value,\n shouldDisplayTooltip\n );\n }\n setupStylesFromColDef() {\n this.setRefreshFunction(\"headerStyles\", this.refreshHeaderStyles.bind(this));\n this.refreshHeaderStyles();\n }\n setupClassesFromColDef() {\n const refreshHeaderClasses = () => {\n const colDef = this.column.getColDef();\n const classes = _getHeaderClassesFromColDef(colDef, this.gos, this.column, null);\n const oldClasses = this.userHeaderClasses;\n this.userHeaderClasses = new Set(classes);\n classes.forEach((c) => {\n if (oldClasses.has(c)) {\n oldClasses.delete(c);\n } else {\n this.comp.addOrRemoveCssClass(c, true);\n }\n });\n oldClasses.forEach((c) => this.comp.addOrRemoveCssClass(c, false));\n };\n this.setRefreshFunction(\"headerClasses\", refreshHeaderClasses);\n refreshHeaderClasses();\n }\n setDragSource(eSource) {\n this.dragSourceElement = eSource;\n this.removeDragSource();\n if (!eSource || !this.draggable) {\n return;\n }\n this.dragSource = this.beans.colMoves?.setDragSourceForHeader(eSource, this.column, this.displayName) ?? null;\n }\n updateState() {\n const { menuSvc } = this.beans;\n this.menuEnabled = !!menuSvc?.isColumnMenuInHeaderEnabled(this.column);\n this.openFilterEnabled = !!menuSvc?.isFilterMenuInHeaderEnabled(this.column);\n this.sortable = this.column.isSortable();\n this.displayName = this.calculateDisplayName();\n this.draggable = this.workOutDraggable();\n }\n setRefreshFunction(name, func) {\n this.refreshFunctions[name] = func;\n }\n refresh() {\n this.updateState();\n this.refreshHeaderComp();\n this.refreshAria();\n Object.values(this.refreshFunctions).forEach((f) => f());\n }\n refreshHeaderComp() {\n const newCompDetails = this.lookupUserCompDetails();\n if (!newCompDetails) {\n return;\n }\n const compInstance = this.comp.getUserCompInstance();\n const attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;\n const headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;\n if (headerCompRefreshed) {\n this.setDragSource(this.dragSourceElement);\n } else {\n this.setCompDetails(newCompDetails);\n }\n }\n attemptHeaderCompRefresh(params) {\n const headerComp = this.comp.getUserCompInstance();\n if (!headerComp) {\n return false;\n }\n if (!headerComp.refresh) {\n return false;\n }\n const res = headerComp.refresh(params);\n return res;\n }\n calculateDisplayName() {\n return this.beans.colNames.getDisplayNameForColumn(this.column, \"header\", true);\n }\n checkDisplayName() {\n if (this.displayName !== this.calculateDisplayName()) {\n this.refresh();\n }\n }\n workOutDraggable() {\n const colDef = this.column.getColDef();\n const isSuppressMovableColumns = this.gos.get(\"suppressMovableColumns\");\n const colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;\n return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;\n }\n setupWidth(compBean) {\n const listener = () => {\n const columnWidth = this.column.getActualWidth();\n this.comp.setWidth(`${columnWidth}px`);\n };\n compBean.addManagedListeners(this.column, { widthChanged: listener });\n listener();\n }\n setupMovingCss(compBean) {\n const listener = () => {\n this.comp.addOrRemoveCssClass(\"ag-header-cell-moving\", this.column.isMoving());\n };\n compBean.addManagedListeners(this.column, { movingChanged: listener });\n listener();\n }\n setupMenuClass(compBean) {\n const listener = () => {\n this.comp?.addOrRemoveCssClass(\"ag-column-menu-visible\", this.column.isMenuVisible());\n };\n compBean.addManagedListeners(this.column, { menuVisibleChanged: listener });\n listener();\n }\n setupSortableClass(compBean) {\n const updateSortableCssClass = () => {\n this.comp.addOrRemoveCssClass(\"ag-header-cell-sortable\", !!this.sortable);\n };\n updateSortableCssClass();\n this.setRefreshFunction(\"updateSortable\", updateSortableCssClass);\n compBean.addManagedEventListeners({ sortChanged: this.refreshAriaSort.bind(this) });\n }\n setupFilterClass(compBean) {\n const listener = () => {\n const isFilterActive = this.column.isFilterActive();\n this.comp.addOrRemoveCssClass(\"ag-header-cell-filtered\", isFilterActive);\n this.refreshAria();\n };\n compBean.addManagedListeners(this.column, { filterActiveChanged: listener });\n listener();\n }\n setupWrapTextClass() {\n const listener = () => {\n const wrapText = !!this.column.getColDef().wrapHeaderText;\n this.comp.addOrRemoveCssClass(\"ag-header-cell-wrap-text\", wrapText);\n };\n listener();\n this.setRefreshFunction(\"wrapText\", listener);\n }\n onHeaderHighlightChanged() {\n const highlighted = this.column.getHighlighted();\n const beforeOn = highlighted === 0 /* Before */;\n const afterOn = highlighted === 1 /* After */;\n this.comp.addOrRemoveCssClass(\"ag-header-highlight-before\", beforeOn);\n this.comp.addOrRemoveCssClass(\"ag-header-highlight-after\", afterOn);\n }\n onDisplayedColumnsChanged() {\n super.onDisplayedColumnsChanged();\n if (!this.isAlive()) {\n return;\n }\n this.onHeaderHeightChanged();\n }\n onHeaderHeightChanged() {\n this.refreshSpanHeaderHeight();\n }\n refreshSpanHeaderHeight() {\n const { eGui, column, comp, beans } = this;\n const groupHeaderHeight = getGroupRowsHeight(this.beans);\n const isZeroGroupHeight = groupHeaderHeight.reduce((total, next) => total += next, 0) === 0;\n comp.addOrRemoveCssClass(\"ag-header-parent-hidden\", isZeroGroupHeight);\n if (!column.isSpanHeaderHeight()) {\n eGui.style.removeProperty(\"top\");\n eGui.style.removeProperty(\"height\");\n comp.addOrRemoveCssClass(\"ag-header-span-height\", false);\n comp.addOrRemoveCssClass(\"ag-header-span-total\", false);\n return;\n }\n const { numberOfParents, isSpanningTotal } = this.column.getColumnGroupPaddingInfo();\n comp.addOrRemoveCssClass(\"ag-header-span-height\", numberOfParents > 0);\n const headerHeight = getColumnHeaderRowHeight(beans);\n if (numberOfParents === 0) {\n comp.addOrRemoveCssClass(\"ag-header-span-total\", false);\n eGui.style.setProperty(\"top\", `0px`);\n eGui.style.setProperty(\"height\", `${headerHeight}px`);\n return;\n }\n comp.addOrRemoveCssClass(\"ag-header-span-total\", isSpanningTotal);\n let extraHeight = 0;\n for (let i = 0; i < numberOfParents; i++) {\n extraHeight += groupHeaderHeight[groupHeaderHeight.length - 1 - i];\n }\n eGui.style.setProperty(\"top\", `${-extraHeight}px`);\n eGui.style.setProperty(\"height\", `${headerHeight + extraHeight}px`);\n }\n refreshAriaSort() {\n if (this.sortable) {\n const translate = this.getLocaleTextFunc();\n const sort = this.beans.sortSvc?.getDisplaySortForColumn(this.column) || null;\n this.comp.setAriaSort(_getAriaSortState(sort));\n this.setAriaDescriptionProperty(\"sort\", translate(\"ariaSortableColumn\", \"Press ENTER to sort\"));\n } else {\n this.comp.setAriaSort();\n this.setAriaDescriptionProperty(\"sort\", null);\n }\n }\n refreshAriaMenu() {\n if (this.menuEnabled) {\n const translate = this.getLocaleTextFunc();\n this.setAriaDescriptionProperty(\"menu\", translate(\"ariaMenuColumn\", \"Press ALT DOWN to open column menu\"));\n } else {\n this.setAriaDescriptionProperty(\"menu\", null);\n }\n }\n refreshAriaFilterButton() {\n if (this.openFilterEnabled && !_isLegacyMenuEnabled(this.gos)) {\n const translate = this.getLocaleTextFunc();\n this.setAriaDescriptionProperty(\n \"filterButton\",\n translate(\"ariaFilterColumn\", \"Press CTRL ENTER to open filter\")\n );\n } else {\n this.setAriaDescriptionProperty(\"filterButton\", null);\n }\n }\n refreshAriaFiltered() {\n const translate = this.getLocaleTextFunc();\n const isFilterActive = this.column.isFilterActive();\n if (isFilterActive) {\n this.setAriaDescriptionProperty(\"filter\", translate(\"ariaColumnFiltered\", \"Column Filtered\"));\n } else {\n this.setAriaDescriptionProperty(\"filter\", null);\n }\n }\n setAriaDescriptionProperty(property, value) {\n if (value != null) {\n this.ariaDescriptionProperties.set(property, value);\n } else {\n this.ariaDescriptionProperties.delete(property);\n }\n }\n announceAriaDescription() {\n if (!this.eGui.contains(_getActiveDomElement(this.beans))) {\n return;\n }\n const ariaDescription = Array.from(this.ariaDescriptionProperties.keys()).sort((a, b) => a === \"filter\" ? -1 : b.charCodeAt(0) - a.charCodeAt(0)).map((key) => this.ariaDescriptionProperties.get(key)).join(\". \");\n this.beans.ariaAnnounce?.announceValue(ariaDescription, \"columnHeader\");\n }\n refreshAria() {\n this.refreshAriaSort();\n this.refreshAriaMenu();\n this.refreshAriaFilterButton();\n this.refreshAriaFiltered();\n }\n addColumnHoverListener(compBean) {\n this.beans.colHover?.addHeaderColumnHoverListener(compBean, this.comp, this.column);\n }\n addActiveHeaderMouseListeners(compBean) {\n const listener = (e) => this.handleMouseOverChange(e.type === \"mouseenter\");\n const clickListener = () => {\n this.setActiveHeader(true);\n this.dispatchColumnMouseEvent(\"columnHeaderClicked\", this.column);\n };\n const contextMenuListener = (event) => this.handleContextMenuMouseEvent(event, void 0, this.column);\n compBean.addManagedListeners(this.eGui, {\n mouseenter: listener,\n mouseleave: listener,\n click: clickListener,\n contextmenu: contextMenuListener\n });\n }\n handleMouseOverChange(isMouseOver) {\n this.setActiveHeader(isMouseOver);\n this.eventSvc.dispatchEvent({\n type: isMouseOver ? \"columnHeaderMouseOver\" : \"columnHeaderMouseLeave\",\n column: this.column\n });\n }\n setActiveHeader(active) {\n this.comp.addOrRemoveCssClass(\"ag-header-active\", active);\n }\n getAnchorElementForMenu(isFilter) {\n const headerComp = this.comp.getUserCompInstance();\n if (isHeaderComp(headerComp)) {\n return headerComp.getAnchorElementForMenu(isFilter);\n }\n return this.eGui;\n }\n destroy() {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n super.destroy();\n }\n};\nfunction isHeaderComp(headerComp) {\n return typeof headerComp.getAnchorElementForMenu === \"function\" && typeof headerComp.onMenuKeyboardShortcut === \"function\";\n}\n\n// packages/ag-grid-community/src/headerRendering/row/headerRowCtrl.ts\nvar instanceIdSequence5 = 0;\nvar HeaderRowCtrl = class extends BeanStub {\n constructor(rowIndex, pinned, type) {\n super();\n this.rowIndex = rowIndex;\n this.pinned = pinned;\n this.type = type;\n this.instanceId = instanceIdSequence5++;\n this.allCtrls = [];\n const typeClass = type == \"group\" ? `ag-header-row-column-group` : type == \"filter\" ? `ag-header-row-column-filter` : `ag-header-row-column`;\n this.headerRowClass = `ag-header-row ${typeClass}`;\n }\n postConstruct() {\n this.isPrintLayout = _isDomLayout(this.gos, \"print\");\n this.isEnsureDomOrder = this.gos.get(\"ensureDomOrder\");\n }\n /** Checks that every header cell that is currently visible has been rendered.\n * Can only be false under some circumstances when using React\n */\n areCellsRendered() {\n if (!this.comp) {\n return false;\n }\n return this.allCtrls.every((ctrl) => ctrl.eGui != null);\n }\n /**\n *\n * @param comp Proxy to the actual component\n * @param initCompState Should the component be initialised with the current state of the controller. Default: true\n */\n setComp(comp, compBean, initCompState = true) {\n this.comp = comp;\n compBean = setupCompBean(this, this.beans.context, compBean);\n if (initCompState) {\n this.onRowHeightChanged();\n this.onVirtualColumnsChanged();\n }\n this.setWidth();\n this.addEventListeners(compBean);\n }\n getAriaRowIndex() {\n return this.rowIndex + 1;\n }\n addEventListeners(compBean) {\n const onHeightChanged = this.onRowHeightChanged.bind(this);\n const onDisplayedColumnsChanged = this.onDisplayedColumnsChanged.bind(this);\n compBean.addManagedEventListeners({\n columnResized: this.setWidth.bind(this),\n displayedColumnsChanged: onDisplayedColumnsChanged,\n virtualColumnsChanged: (params) => this.onVirtualColumnsChanged(params.afterScroll),\n columnGroupHeaderHeightChanged: onHeightChanged,\n columnHeaderHeightChanged: onHeightChanged,\n gridStylesChanged: onHeightChanged,\n advancedFilterEnabledChanged: onHeightChanged\n });\n compBean.addManagedPropertyListener(\"domLayout\", onDisplayedColumnsChanged);\n compBean.addManagedPropertyListener(\"ensureDomOrder\", (e) => this.isEnsureDomOrder = e.currentValue);\n compBean.addManagedPropertyListeners(\n [\n \"headerHeight\",\n \"pivotHeaderHeight\",\n \"groupHeaderHeight\",\n \"pivotGroupHeaderHeight\",\n \"floatingFiltersHeight\"\n ],\n onHeightChanged\n );\n }\n onDisplayedColumnsChanged() {\n this.isPrintLayout = _isDomLayout(this.gos, \"print\");\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.onRowHeightChanged();\n }\n setWidth() {\n const width = this.getWidthForRow();\n this.comp.setWidth(`${width}px`);\n }\n getWidthForRow() {\n const { visibleCols } = this.beans;\n if (this.isPrintLayout) {\n const pinned = this.pinned != null;\n if (pinned) {\n return 0;\n }\n return visibleCols.getContainerWidth(\"right\") + visibleCols.getContainerWidth(\"left\") + visibleCols.getContainerWidth(null);\n }\n return visibleCols.getContainerWidth(this.pinned);\n }\n onRowHeightChanged() {\n const { topOffset, rowHeight } = this.getTopAndHeight();\n this.comp.setTop(topOffset + \"px\");\n this.comp.setHeight(rowHeight + \"px\");\n }\n getTopAndHeight() {\n const { filterManager } = this.beans;\n const sizes = [];\n const groupHeadersHeight = getGroupRowsHeight(this.beans);\n const headerHeight = getColumnHeaderRowHeight(this.beans);\n sizes.push(...groupHeadersHeight);\n sizes.push(headerHeight);\n if (filterManager?.hasFloatingFilters()) {\n sizes.push(getFloatingFiltersHeight(this.beans));\n }\n let topOffset = 0;\n for (let i = 0; i < this.rowIndex; i++) {\n topOffset += sizes[i];\n }\n const rowHeight = sizes[this.rowIndex];\n return { topOffset, rowHeight };\n }\n onVirtualColumnsChanged(afterScroll = false) {\n const ctrlsToDisplay = this.getUpdatedHeaderCtrls();\n const forceOrder = this.isEnsureDomOrder || this.isPrintLayout;\n this.comp.setHeaderCtrls(ctrlsToDisplay, forceOrder, afterScroll);\n }\n /**\n * Recycles the header cell ctrls and creates new ones for the columns in the viewport\n * @returns The updated header cell ctrls\n */\n getUpdatedHeaderCtrls() {\n const oldCtrls = this.ctrlsById;\n this.ctrlsById = /* @__PURE__ */ new Map();\n const columns = this.getColumnsInViewport();\n for (const child of columns) {\n this.recycleAndCreateHeaderCtrls(child, this.ctrlsById, oldCtrls);\n }\n const isFocusedAndDisplayed = (ctrl) => {\n const { focusSvc, visibleCols } = this.beans;\n const isFocused = focusSvc.isHeaderWrapperFocused(ctrl);\n if (!isFocused) {\n return false;\n }\n const isDisplayed = visibleCols.isVisible(ctrl.column);\n return isDisplayed;\n };\n if (oldCtrls) {\n for (const [id, oldCtrl] of oldCtrls) {\n const keepCtrl = isFocusedAndDisplayed(oldCtrl);\n if (keepCtrl) {\n this.ctrlsById.set(id, oldCtrl);\n } else {\n this.destroyBean(oldCtrl);\n }\n }\n }\n this.allCtrls = Array.from(this.ctrlsById.values());\n return this.allCtrls;\n }\n /** Get the current header cell ctrls */\n getHeaderCellCtrls() {\n return this.allCtrls;\n }\n recycleAndCreateHeaderCtrls(headerColumn, currCtrls, oldCtrls) {\n if (headerColumn.isEmptyGroup()) {\n return;\n }\n const idOfChild = headerColumn.getUniqueId();\n let headerCtrl;\n if (oldCtrls) {\n headerCtrl = oldCtrls.get(idOfChild);\n oldCtrls.delete(idOfChild);\n }\n const forOldColumn = headerCtrl && headerCtrl.column != headerColumn;\n if (forOldColumn) {\n this.destroyBean(headerCtrl);\n headerCtrl = void 0;\n }\n if (headerCtrl == null) {\n switch (this.type) {\n case \"filter\": {\n headerCtrl = this.createBean(\n this.beans.registry.createDynamicBean(\n \"headerFilterCellCtrl\",\n true,\n headerColumn,\n this\n )\n );\n break;\n }\n case \"group\":\n headerCtrl = this.createBean(\n this.beans.registry.createDynamicBean(\n \"headerGroupCellCtrl\",\n true,\n headerColumn,\n this\n )\n );\n break;\n default:\n headerCtrl = this.createBean(new HeaderCellCtrl(headerColumn, this));\n break;\n }\n }\n currCtrls.set(idOfChild, headerCtrl);\n }\n getColumnsInViewport() {\n return this.isPrintLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();\n }\n getColumnsInViewportPrintLayout() {\n if (this.pinned != null) {\n return [];\n }\n let viewportColumns = [];\n const actualDepth = this.getActualDepth();\n const { colViewport } = this.beans;\n [\"left\", null, \"right\"].forEach((pinned) => {\n const items = colViewport.getHeadersToRender(pinned, actualDepth);\n viewportColumns = viewportColumns.concat(items);\n });\n return viewportColumns;\n }\n getActualDepth() {\n return this.type == \"filter\" ? this.rowIndex - 1 : this.rowIndex;\n }\n getColumnsInViewportNormalLayout() {\n return this.beans.colViewport.getHeadersToRender(this.pinned, this.getActualDepth());\n }\n focusHeader(column, event) {\n const ctrl = this.allCtrls.find((ctrl2) => ctrl2.column == column);\n if (!ctrl) {\n return false;\n }\n const focused = ctrl.focus(event);\n return focused;\n }\n destroy() {\n this.allCtrls = this.destroyBeans(this.allCtrls);\n this.ctrlsById = void 0;\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/rowContainer/headerRowContainerCtrl.ts\nvar HeaderRowContainerCtrl = class extends BeanStub {\n constructor(pinned) {\n super();\n this.pinned = pinned;\n this.hidden = false;\n this.includeFloatingFilter = false;\n this.groupsRowCtrls = [];\n }\n setComp(comp, eGui) {\n this.comp = comp;\n this.eViewport = eGui;\n const { pinnedCols, ctrlsSvc, colModel, colMoves, filterManager } = this.beans;\n this.setupCenterWidth();\n pinnedCols?.setupHeaderPinnedWidth(this);\n this.setupDragAndDrop(colMoves, this.eViewport);\n const onDisplayedColsChanged = this.onDisplayedColumnsChanged.bind(this, filterManager);\n this.addManagedEventListeners({\n gridColumnsChanged: this.onGridColumnsChanged.bind(this),\n displayedColumnsChanged: onDisplayedColsChanged,\n advancedFilterEnabledChanged: onDisplayedColsChanged\n });\n const headerType = `${typeof this.pinned === \"string\" ? this.pinned : \"center\"}Header`;\n ctrlsSvc.register(headerType, this);\n if (colModel.ready) {\n this.refresh();\n }\n }\n getAllCtrls() {\n const res = [...this.groupsRowCtrls];\n if (this.columnsRowCtrl) {\n res.push(this.columnsRowCtrl);\n }\n if (this.filtersRowCtrl) {\n res.push(this.filtersRowCtrl);\n }\n return res;\n }\n refresh(keepColumns = false) {\n const { focusSvc, colModel, filterManager } = this.beans;\n let sequence = 0;\n const focusedHeaderPosition = focusSvc.getFocusHeaderToUseAfterRefresh();\n const refreshColumnGroups = () => {\n const groupRowCount = getHeaderRowCount(colModel) - 1;\n this.groupsRowCtrls = this.destroyBeans(this.groupsRowCtrls);\n for (let i = 0; i < groupRowCount; i++) {\n const ctrl = this.createBean(new HeaderRowCtrl(sequence++, this.pinned, \"group\"));\n this.groupsRowCtrls.push(ctrl);\n }\n };\n const refreshColumns = () => {\n const rowIndex = sequence++;\n const needNewInstance = !this.hidden && (this.columnsRowCtrl == null || !keepColumns || this.columnsRowCtrl.rowIndex !== rowIndex);\n const shouldDestroyInstance = needNewInstance || this.hidden;\n if (shouldDestroyInstance) {\n this.columnsRowCtrl = this.destroyBean(this.columnsRowCtrl);\n }\n if (needNewInstance) {\n this.columnsRowCtrl = this.createBean(new HeaderRowCtrl(rowIndex, this.pinned, \"column\"));\n }\n };\n const refreshFilters = () => {\n this.includeFloatingFilter = !!filterManager?.hasFloatingFilters() && !this.hidden;\n const destroyPreviousComp = () => {\n this.filtersRowCtrl = this.destroyBean(this.filtersRowCtrl);\n };\n if (!this.includeFloatingFilter) {\n destroyPreviousComp();\n return;\n }\n const rowIndex = sequence++;\n if (this.filtersRowCtrl) {\n const rowIndexMismatch = this.filtersRowCtrl.rowIndex !== rowIndex;\n if (!keepColumns || rowIndexMismatch) {\n destroyPreviousComp();\n }\n }\n if (!this.filtersRowCtrl) {\n this.filtersRowCtrl = this.createBean(new HeaderRowCtrl(rowIndex, this.pinned, \"filter\"));\n }\n };\n refreshColumnGroups();\n refreshColumns();\n refreshFilters();\n const allCtrls = this.getAllCtrls();\n this.comp.setCtrls(allCtrls);\n this.restoreFocusOnHeader(focusSvc, focusedHeaderPosition);\n }\n getHeaderCtrlForColumn(column) {\n const findCtrl = (ctrl) => ctrl?.getHeaderCellCtrls().find((ctrl2) => ctrl2.column === column);\n if (isColumn(column)) {\n return findCtrl(this.columnsRowCtrl);\n }\n if (this.groupsRowCtrls.length === 0) {\n return;\n }\n for (let i = 0; i < this.groupsRowCtrls.length; i++) {\n const ctrl = findCtrl(this.groupsRowCtrls[i]);\n if (ctrl) {\n return ctrl;\n }\n }\n }\n getHtmlElementForColumnHeader(column) {\n return this.getHeaderCtrlForColumn(column)?.eGui ?? null;\n }\n getRowType(rowIndex) {\n return this.getAllCtrls()[rowIndex]?.type;\n }\n focusHeader(rowIndex, column, event) {\n const allCtrls = this.getAllCtrls();\n const ctrl = allCtrls[rowIndex];\n if (!ctrl) {\n return false;\n }\n return ctrl.focusHeader(column, event);\n }\n getGroupRowCount() {\n return this.groupsRowCtrls.length;\n }\n getGroupRowCtrlAtIndex(index) {\n return this.groupsRowCtrls[index];\n }\n getRowCount() {\n return this.groupsRowCtrls.length + (this.columnsRowCtrl ? 1 : 0) + (this.filtersRowCtrl ? 1 : 0);\n }\n setHorizontalScroll(offset) {\n this.comp.setViewportScrollLeft(offset);\n }\n onScrollCallback(fn) {\n this.addManagedElementListeners(this.eViewport, { scroll: fn });\n }\n destroy() {\n this.filtersRowCtrl = this.destroyBean(this.filtersRowCtrl);\n this.columnsRowCtrl = this.destroyBean(this.columnsRowCtrl);\n this.groupsRowCtrls = this.destroyBeans(this.groupsRowCtrls);\n super.destroy();\n }\n setupDragAndDrop(colMoves, dropContainer) {\n const bodyDropTarget = colMoves?.createBodyDropTarget(this.pinned, dropContainer);\n if (bodyDropTarget) {\n this.createManagedBean(bodyDropTarget);\n }\n }\n restoreFocusOnHeader(focusSvc, position) {\n if (!position) {\n return;\n }\n const { column } = position;\n if (column.getPinned() != this.pinned) {\n return;\n }\n focusSvc.focusHeaderPosition({ headerPosition: position });\n }\n // grid cols have changed - this also means the number of rows in the header can have\n // changed. so we remove all the old rows and insert new ones for a complete refresh\n onGridColumnsChanged() {\n this.refresh(true);\n }\n onDisplayedColumnsChanged(filterManager) {\n const includeFloatingFilter = !!filterManager?.hasFloatingFilters() && !this.hidden;\n if (this.includeFloatingFilter !== includeFloatingFilter) {\n this.refresh(true);\n }\n }\n setupCenterWidth() {\n if (this.pinned != null) {\n return;\n }\n this.createManagedBean(new CenterWidthFeature((width) => this.comp.setCenterWidth(`${width}px`), true));\n }\n};\n\n// packages/ag-grid-community/src/misc/menu/menuService.ts\nvar MenuService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"menuSvc\";\n }\n postConstruct() {\n const { enterpriseMenuFactory, filterMenuFactory } = this.beans;\n this.activeMenuFactory = enterpriseMenuFactory ?? filterMenuFactory;\n }\n showColumnMenu(params) {\n this.showColumnMenuCommon(this.activeMenuFactory, params, \"columnMenu\");\n }\n showFilterMenu(params) {\n const { enterpriseMenuFactory, filterMenuFactory } = this.beans;\n const menuFactory = enterpriseMenuFactory && _isLegacyMenuEnabled(this.gos) ? enterpriseMenuFactory : filterMenuFactory;\n this.showColumnMenuCommon(menuFactory, params, params.containerType, true);\n }\n showHeaderContextMenu(column, mouseEvent, touchEvent) {\n this.activeMenuFactory?.showMenuAfterContextMenuEvent(column, mouseEvent, touchEvent);\n }\n hidePopupMenu() {\n this.beans.contextMenuSvc?.hideActiveMenu();\n this.activeMenuFactory?.hideActiveMenu();\n }\n isColumnMenuInHeaderEnabled(column) {\n const { suppressHeaderMenuButton } = column.getColDef();\n return !suppressHeaderMenuButton && !!this.activeMenuFactory?.isMenuEnabled(column) && (_isLegacyMenuEnabled(this.gos) || !!this.beans.enterpriseMenuFactory);\n }\n isFilterMenuInHeaderEnabled(column) {\n return !column.getColDef().suppressHeaderFilterButton && !!this.beans.filterManager?.isFilterAllowed(column);\n }\n isHeaderContextMenuEnabled(column) {\n const colDef = column && isColumn(column) ? column.getColDef() : column?.getColGroupDef();\n return !colDef?.suppressHeaderContextMenu && this.gos.get(\"columnMenu\") === \"new\";\n }\n isHeaderMenuButtonAlwaysShowEnabled() {\n return this.isSuppressMenuHide();\n }\n isHeaderMenuButtonEnabled() {\n const menuHides = !this.isSuppressMenuHide();\n const onIpadAndMenuHides = _isIOSUserAgent() && menuHides;\n return !onIpadAndMenuHides;\n }\n isHeaderFilterButtonEnabled(column) {\n return this.isFilterMenuInHeaderEnabled(column) && !_isLegacyMenuEnabled(this.gos) && !this.isFloatingFilterButtonDisplayed(column);\n }\n isFilterMenuItemEnabled(column) {\n return !!this.beans.filterManager?.isFilterAllowed(column) && !_isLegacyMenuEnabled(this.gos) && !this.isFilterMenuInHeaderEnabled(column) && !this.isFloatingFilterButtonDisplayed(column);\n }\n isFloatingFilterButtonEnabled(column) {\n return !column.getColDef().suppressFloatingFilterButton;\n }\n isFloatingFilterButtonDisplayed(column) {\n return !!column.getColDef().floatingFilter && this.isFloatingFilterButtonEnabled(column);\n }\n isSuppressMenuHide() {\n const gos = this.gos;\n const suppressMenuHide = gos.get(\"suppressMenuHide\");\n if (_isLegacyMenuEnabled(gos)) {\n return gos.exists(\"suppressMenuHide\") ? suppressMenuHide : false;\n }\n return suppressMenuHide;\n }\n showColumnMenuCommon(menuFactory, params, containerType, filtersOnly) {\n const { positionBy, onClosedCallback } = params;\n const column = params.column;\n if (positionBy === \"button\") {\n const { buttonElement } = params;\n menuFactory?.showMenuAfterButtonClick(column, buttonElement, containerType, onClosedCallback, filtersOnly);\n } else if (positionBy === \"mouse\") {\n const { mouseEvent } = params;\n menuFactory?.showMenuAfterMouseEvent(column, mouseEvent, containerType, onClosedCallback, filtersOnly);\n } else if (column) {\n const beans = this.beans;\n const ctrlsSvc = beans.ctrlsSvc;\n ctrlsSvc.getScrollFeature().ensureColumnVisible(column, \"auto\");\n _requestAnimationFrame(beans, () => {\n const headerCellCtrl = ctrlsSvc.getHeaderRowContainerCtrl(column.getPinned())?.getHeaderCtrlForColumn(column);\n if (headerCellCtrl) {\n menuFactory?.showMenuAfterButtonClick(\n column,\n headerCellCtrl.getAnchorElementForMenu(filtersOnly),\n containerType,\n onClosedCallback,\n true\n );\n }\n });\n }\n }\n};\nfunction _setColMenuVisible(column, visible, source) {\n if (column.menuVisible !== visible) {\n column.menuVisible = visible;\n column.dispatchColEvent(\"menuVisibleChanged\", source);\n }\n}\n\n// packages/ag-grid-community/src/rendering/overlays/overlayComponent.ts\nvar OverlayComponent = class extends Component {\n constructor() {\n super();\n }\n};\n\n// packages/ag-grid-community/src/rendering/overlays/loadingOverlayComponent.ts\nvar LoadingOverlayElement = {\n tag: \"span\",\n cls: \"ag-overlay-loading-center\",\n attrs: { \"aria-live\": \"polite\", \"aria-atomic\": \"true\" }\n};\nvar LoadingOverlayComponent2 = class extends OverlayComponent {\n init() {\n const customTemplate = _makeNull(this.gos.get(\"overlayLoadingTemplate\")?.trim());\n this.setTemplate(customTemplate ?? LoadingOverlayElement);\n if (!customTemplate) {\n const localeTextFunc = this.getLocaleTextFunc();\n setTimeout(() => {\n this.getGui().textContent = localeTextFunc(\"loadingOoo\", \"Loading...\");\n });\n }\n }\n};\n\n// packages/ag-grid-community/src/rendering/overlays/noRowsOverlayComponent.ts\nvar NoRowsOverlayElement = { tag: \"span\", cls: \"ag-overlay-no-rows-center\" };\nvar NoRowsOverlayComponent2 = class extends OverlayComponent {\n init() {\n const customTemplate = _makeNull(this.gos.get(\"overlayNoRowsTemplate\")?.trim());\n this.setTemplate(customTemplate ?? NoRowsOverlayElement);\n if (!customTemplate) {\n const localeTextFunc = this.getLocaleTextFunc();\n setTimeout(() => {\n this.getGui().textContent = localeTextFunc(\"noRowsToShow\", \"No Rows To Show\");\n });\n }\n }\n};\n\n// packages/ag-grid-community/src/utils/icon.ts\nfunction _createIcon(iconName, beans, column) {\n const iconContents = _createIconNoSpan(iconName, beans, column);\n if (iconContents) {\n const { className } = iconContents;\n if (typeof className === \"string\" && className.indexOf(\"ag-icon\") > -1 || typeof className === \"object\" && className[\"ag-icon\"]) {\n return iconContents;\n }\n }\n const eResult = _createElement({ tag: \"span\" });\n eResult.appendChild(iconContents);\n return eResult;\n}\nfunction _createIconNoSpan(iconName, beans, column) {\n let userProvidedIcon = null;\n if (iconName === \"smallDown\") {\n _warn(262);\n } else if (iconName === \"smallLeft\") {\n _warn(263);\n } else if (iconName === \"smallRight\") {\n _warn(264);\n }\n const icons = column && column.getColDef().icons;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n if (beans.gos && !userProvidedIcon) {\n const optionsIcons = beans.gos.get(\"icons\");\n if (optionsIcons) {\n userProvidedIcon = optionsIcons[iconName];\n }\n }\n if (userProvidedIcon) {\n let rendererResult;\n if (typeof userProvidedIcon === \"function\") {\n rendererResult = userProvidedIcon();\n } else if (typeof userProvidedIcon === \"string\") {\n rendererResult = userProvidedIcon;\n } else {\n _warn(38, { iconName });\n return void 0;\n }\n if (typeof rendererResult === \"string\") {\n return _loadTemplate(rendererResult);\n }\n if (_isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n _warn(133, { iconName });\n return void 0;\n } else {\n const iconValue = beans.registry.getIcon(iconName);\n if (!iconValue) {\n beans.validation?.validateIcon(iconName);\n }\n return _createElement({\n tag: \"span\",\n cls: `ag-icon ag-icon-${iconValue ?? iconName}`,\n role: \"presentation\",\n attrs: { unselectable: \"on\" }\n });\n }\n}\n\n// packages/ag-grid-community/src/dragAndDrop/dragAndDropImageComponent.css-GENERATED.ts\nvar dragAndDropImageComponentCSS = (\n /*css*/\n `.ag-dnd-ghost{align-items:center;background-color:var(--ag-drag-and-drop-image-background-color);border:var(--ag-drag-and-drop-image-border);border-radius:var(--ag-border-radius);box-shadow:var(--ag-drag-and-drop-image-shadow);color:var(--ag-text-color);cursor:move;display:flex;font-weight:500;gap:var(--ag-cell-widget-spacing);height:var(--ag-header-height);overflow:hidden;padding-left:var(--ag-cell-horizontal-padding);padding-right:var(--ag-cell-horizontal-padding);text-overflow:ellipsis;transform:translateY(calc(var(--ag-spacing)*2));white-space:nowrap}`\n);\n\n// packages/ag-grid-community/src/dragAndDrop/dragAndDropImageComponent.ts\nvar DragAndDropElement = {\n tag: \"div\",\n children: [\n {\n tag: \"div\",\n ref: \"eGhost\",\n cls: \"ag-dnd-ghost ag-unselectable\",\n children: [\n { tag: \"span\", ref: \"eIcon\", cls: \"ag-dnd-ghost-icon ag-shake-left-to-right\" },\n { tag: \"div\", ref: \"eLabel\", cls: \"ag-dnd-ghost-label\" }\n ]\n }\n ]\n};\nvar DragAndDropImageComponent2 = class extends Component {\n constructor() {\n super();\n this.dragSource = null;\n this.eIcon = RefPlaceholder;\n this.eLabel = RefPlaceholder;\n this.eGhost = RefPlaceholder;\n this.registerCSS(dragAndDropImageComponentCSS);\n }\n postConstruct() {\n const create = (iconName) => _createIcon(iconName, this.beans, null);\n this.dropIconMap = {\n pinned: create(\"columnMovePin\"),\n hide: create(\"columnMoveHide\"),\n move: create(\"columnMoveMove\"),\n left: create(\"columnMoveLeft\"),\n right: create(\"columnMoveRight\"),\n group: create(\"columnMoveGroup\"),\n aggregate: create(\"columnMoveValue\"),\n pivot: create(\"columnMovePivot\"),\n notAllowed: create(\"dropNotAllowed\")\n };\n }\n init(params) {\n this.dragSource = params.dragSource;\n this.setTemplate(DragAndDropElement);\n this.beans.environment.applyThemeClasses(this.eGhost);\n }\n destroy() {\n this.dragSource = null;\n super.destroy();\n }\n setIcon(iconName, shake) {\n const { eIcon, dragSource, dropIconMap, gos } = this;\n _clearElement(eIcon);\n let eIconChild = null;\n if (!iconName) {\n iconName = dragSource?.getDefaultIconName ? dragSource.getDefaultIconName() : \"notAllowed\";\n }\n eIconChild = dropIconMap[iconName];\n eIcon.classList.toggle(\"ag-shake-left-to-right\", shake);\n if (eIconChild === dropIconMap[\"hide\"] && gos.get(\"suppressDragLeaveHidesColumns\")) {\n return;\n }\n if (eIconChild) {\n eIcon.appendChild(eIconChild);\n }\n }\n setLabel(label) {\n this.eLabel.textContent = label;\n }\n};\n\n// packages/ag-grid-community/src/widgets/agAbstractLabel.css-GENERATED.ts\nvar agAbstractLabelCSS = (\n /*css*/\n `.ag-label{white-space:nowrap}:where(.ag-ltr) .ag-label{margin-right:var(--ag-spacing)}:where(.ag-rtl) .ag-label{margin-left:var(--ag-spacing)}:where(.ag-label-align-right) .ag-label{order:1}:where(.ag-ltr) :where(.ag-label-align-right) .ag-label{margin-left:var(--ag-spacing)}:where(.ag-rtl) :where(.ag-label-align-right) .ag-label{margin-right:var(--ag-spacing)}.ag-label-align-right>*{flex:none}.ag-label-align-top{align-items:flex-start;flex-direction:column;>*{align-self:stretch}}.ag-label-ellipsis{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:where(.ag-label-align-top) .ag-label{margin-bottom:calc(var(--ag-spacing)*.5)}`\n);\n\n// packages/ag-grid-community/src/widgets/agAbstractLabel.ts\nvar AgAbstractLabel = class extends Component {\n constructor(config, template, components) {\n super(template, components);\n this.labelSeparator = \"\";\n this.labelAlignment = \"left\";\n this.disabled = false;\n this.label = \"\";\n this.config = config || {};\n this.registerCSS(agAbstractLabelCSS);\n }\n postConstruct() {\n this.addCssClass(\"ag-labeled\");\n this.eLabel.classList.add(\"ag-label\");\n const { labelSeparator, label, labelWidth, labelAlignment, disabled } = this.config;\n if (disabled != null) {\n this.setDisabled(disabled);\n }\n if (labelSeparator != null) {\n this.setLabelSeparator(labelSeparator);\n }\n if (label != null) {\n this.setLabel(label);\n }\n if (labelWidth != null) {\n this.setLabelWidth(labelWidth);\n }\n this.setLabelAlignment(labelAlignment || this.labelAlignment);\n this.refreshLabel();\n }\n refreshLabel() {\n const { label, eLabel } = this;\n _clearElement(eLabel);\n if (typeof label === \"string\") {\n eLabel.innerText = label + this.labelSeparator;\n } else if (label) {\n eLabel.appendChild(label);\n }\n if (label === \"\") {\n _setDisplayed(eLabel, false);\n _setAriaRole(eLabel, \"presentation\");\n } else {\n _setDisplayed(eLabel, true);\n _setAriaRole(eLabel, null);\n }\n }\n setLabelSeparator(labelSeparator) {\n if (this.labelSeparator === labelSeparator) {\n return this;\n }\n this.labelSeparator = labelSeparator;\n if (this.label != null) {\n this.refreshLabel();\n }\n return this;\n }\n getLabelId() {\n const eLabel = this.eLabel;\n eLabel.id = eLabel.id || `ag-${this.getCompId()}-label`;\n return eLabel.id;\n }\n getLabel() {\n return this.label;\n }\n setLabel(label) {\n if (this.label === label) {\n return this;\n }\n this.label = label;\n this.refreshLabel();\n return this;\n }\n setLabelAlignment(alignment) {\n const eGui = this.getGui();\n const eGuiClassList = eGui.classList;\n eGuiClassList.toggle(\"ag-label-align-left\", alignment === \"left\");\n eGuiClassList.toggle(\"ag-label-align-right\", alignment === \"right\");\n eGuiClassList.toggle(\"ag-label-align-top\", alignment === \"top\");\n return this;\n }\n setLabelEllipsis(hasEllipsis) {\n this.eLabel.classList.toggle(\"ag-label-ellipsis\", hasEllipsis);\n return this;\n }\n setLabelWidth(width) {\n if (this.label == null) {\n return this;\n }\n _setElementWidth(this.eLabel, width);\n return this;\n }\n setDisabled(disabled) {\n disabled = !!disabled;\n const element = this.getGui();\n _setDisabled(element, disabled);\n element.classList.toggle(\"ag-disabled\", disabled);\n this.disabled = disabled;\n return this;\n }\n isDisabled() {\n return !!this.disabled;\n }\n};\n\n// packages/ag-grid-community/src/widgets/agAbstractField.ts\nvar AgAbstractField = class extends AgAbstractLabel {\n constructor(config, template, components, className) {\n super(config, template, components);\n this.className = className;\n }\n postConstruct() {\n super.postConstruct();\n const { width, value, onValueChange } = this.config;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n if (onValueChange != null) {\n this.onValueChange(onValueChange);\n }\n if (this.className) {\n this.addCssClass(this.className);\n }\n this.refreshAriaLabelledBy();\n }\n setLabel(label) {\n super.setLabel(label);\n this.refreshAriaLabelledBy();\n return this;\n }\n refreshAriaLabelledBy() {\n const ariaEl = this.getAriaElement();\n const labelId = this.getLabelId();\n const label = this.getLabel();\n if (label == null || label == \"\" || _getAriaLabel(ariaEl) !== null) {\n _setAriaLabelledBy(ariaEl, \"\");\n } else {\n _setAriaLabelledBy(ariaEl, labelId ?? \"\");\n }\n }\n setAriaLabel(label) {\n _setAriaLabel(this.getAriaElement(), label);\n this.refreshAriaLabelledBy();\n return this;\n }\n onValueChange(callbackFn) {\n this.addManagedListeners(this, { fieldValueChanged: () => callbackFn(this.getValue()) });\n return this;\n }\n getWidth() {\n return this.getGui().clientWidth;\n }\n setWidth(width) {\n _setFixedWidth(this.getGui(), width);\n return this;\n }\n getPreviousValue() {\n return this.previousValue;\n }\n getValue() {\n return this.value;\n }\n setValue(value, silent) {\n if (this.value === value) {\n return this;\n }\n this.previousValue = this.value;\n this.value = value;\n if (!silent) {\n this.dispatchLocalEvent({ type: \"fieldValueChanged\" });\n }\n return this;\n }\n};\n\n// packages/ag-grid-community/src/widgets/agAbstractInputField.ts\nfunction buildTemplate(displayFieldTag) {\n return {\n tag: \"div\",\n role: \"presentation\",\n children: [\n { tag: \"div\", ref: \"eLabel\", cls: \"ag-input-field-label\" },\n {\n tag: \"div\",\n ref: \"eWrapper\",\n cls: \"ag-wrapper ag-input-wrapper\",\n role: \"presentation\",\n children: [{ tag: displayFieldTag, ref: \"eInput\", cls: \"ag-input-field-input\" }]\n }\n ]\n };\n}\nvar AgAbstractInputField = class extends AgAbstractField {\n constructor(config, className, inputType = \"text\", displayFieldTag = \"input\") {\n super(config, config?.template ?? buildTemplate(displayFieldTag), [], className);\n this.inputType = inputType;\n this.displayFieldTag = displayFieldTag;\n this.eLabel = RefPlaceholder;\n this.eWrapper = RefPlaceholder;\n this.eInput = RefPlaceholder;\n }\n postConstruct() {\n super.postConstruct();\n this.setInputType();\n const { eLabel, eWrapper, eInput, className } = this;\n eLabel.classList.add(`${className}-label`);\n eWrapper.classList.add(`${className}-input-wrapper`);\n eInput.classList.add(`${className}-input`);\n this.addCssClass(\"ag-input-field\");\n eInput.id = eInput.id || `ag-${this.getCompId()}-input`;\n const { inputName, inputWidth } = this.config;\n if (inputName != null) {\n this.setInputName(inputName);\n }\n if (inputWidth != null) {\n this.setInputWidth(inputWidth);\n }\n this.addInputListeners();\n this.activateTabIndex([eInput]);\n }\n addInputListeners() {\n this.addManagedElementListeners(this.eInput, { input: (e) => this.setValue(e.target.value) });\n }\n setInputType() {\n if (this.displayFieldTag === \"input\") {\n this.eInput.setAttribute(\"type\", this.inputType);\n }\n }\n getInputElement() {\n return this.eInput;\n }\n setInputWidth(width) {\n _setElementWidth(this.eWrapper, width);\n return this;\n }\n setInputName(name) {\n this.getInputElement().setAttribute(\"name\", name);\n return this;\n }\n getFocusableElement() {\n return this.eInput;\n }\n setMaxLength(length) {\n const eInput = this.eInput;\n eInput.maxLength = length;\n return this;\n }\n setInputPlaceholder(placeholder) {\n _addOrRemoveAttribute(this.eInput, \"placeholder\", placeholder);\n return this;\n }\n setInputAriaLabel(label) {\n _setAriaLabel(this.eInput, label);\n this.refreshAriaLabelledBy();\n return this;\n }\n setDisabled(disabled) {\n _setDisabled(this.eInput, disabled);\n return super.setDisabled(disabled);\n }\n setAutoComplete(value) {\n if (value === true) {\n _addOrRemoveAttribute(this.eInput, \"autocomplete\", null);\n } else {\n const autoCompleteValue = typeof value === \"string\" ? value : \"off\";\n _addOrRemoveAttribute(this.eInput, \"autocomplete\", autoCompleteValue);\n }\n return this;\n }\n};\n\n// packages/ag-grid-community/src/widgets/agCheckbox.ts\nvar AgCheckbox = class extends AgAbstractInputField {\n constructor(config, className = \"ag-checkbox\", inputType = \"checkbox\") {\n super(config, className, inputType);\n this.labelAlignment = \"right\";\n this.selected = false;\n this.readOnly = false;\n this.passive = false;\n }\n postConstruct() {\n super.postConstruct();\n const { readOnly, passive } = this.config;\n if (typeof readOnly === \"boolean\")\n this.setReadOnly(readOnly);\n if (typeof passive === \"boolean\")\n this.setPassive(passive);\n }\n addInputListeners() {\n this.addManagedElementListeners(this.eInput, { click: this.onCheckboxClick.bind(this) });\n this.addManagedElementListeners(this.eLabel, { click: this.toggle.bind(this) });\n }\n getNextValue() {\n return this.selected === void 0 ? true : !this.selected;\n }\n setPassive(passive) {\n this.passive = passive;\n }\n isReadOnly() {\n return this.readOnly;\n }\n setReadOnly(readOnly) {\n this.eWrapper.classList.toggle(\"ag-disabled\", readOnly);\n this.eInput.disabled = readOnly;\n this.readOnly = readOnly;\n }\n setDisabled(disabled) {\n this.eWrapper.classList.toggle(\"ag-disabled\", disabled);\n return super.setDisabled(disabled);\n }\n toggle() {\n if (this.eInput.disabled) {\n return;\n }\n const previousValue = this.isSelected();\n const nextValue = this.getNextValue();\n if (this.passive) {\n this.dispatchChange(nextValue, previousValue);\n } else {\n this.setValue(nextValue);\n }\n }\n getValue() {\n return this.isSelected();\n }\n setValue(value, silent) {\n this.refreshSelectedClass(value);\n this.setSelected(value, silent);\n return this;\n }\n setName(name) {\n const input = this.getInputElement();\n input.name = name;\n return this;\n }\n isSelected() {\n return this.selected;\n }\n setSelected(selected, silent) {\n if (this.isSelected() === selected) {\n return;\n }\n this.previousValue = this.isSelected();\n selected = this.selected = typeof selected === \"boolean\" ? selected : void 0;\n const eInput = this.eInput;\n eInput.checked = selected;\n eInput.indeterminate = selected === void 0;\n if (!silent) {\n this.dispatchChange(this.selected, this.previousValue);\n }\n }\n dispatchChange(selected, previousValue, event) {\n this.dispatchLocalEvent({ type: \"fieldValueChanged\", selected, previousValue, event });\n const input = this.getInputElement();\n this.eventSvc.dispatchEvent({\n type: \"checkboxChanged\",\n id: input.id,\n name: input.name,\n selected,\n previousValue\n });\n }\n onCheckboxClick(e) {\n if (this.passive || this.eInput.disabled) {\n return;\n }\n const previousValue = this.isSelected();\n const selected = this.selected = e.target.checked;\n this.refreshSelectedClass(selected);\n this.dispatchChange(selected, previousValue, e);\n }\n refreshSelectedClass(value) {\n const classList = this.eWrapper.classList;\n classList.toggle(\"ag-checked\", value === true);\n classList.toggle(\"ag-indeterminate\", value == null);\n }\n};\nvar AgCheckboxSelector = {\n selector: \"AG-CHECKBOX\",\n component: AgCheckbox\n};\n\n// packages/ag-grid-community/src/rendering/cellRenderers/checkboxCellRenderer.css-GENERATED.ts\nvar checkboxCellRendererCSS = (\n /*css*/\n `.ag-checkbox-cell{height:100%}`\n);\n\n// packages/ag-grid-community/src/rendering/cellRenderers/checkboxCellRenderer.ts\nvar CheckboxCellRendererElement = {\n tag: \"div\",\n cls: \"ag-cell-wrapper ag-checkbox-cell\",\n role: \"presentation\",\n children: [\n {\n tag: \"ag-checkbox\",\n ref: \"eCheckbox\",\n role: \"presentation\"\n }\n ]\n};\nvar CheckboxCellRenderer = class extends Component {\n constructor() {\n super(CheckboxCellRendererElement, [AgCheckboxSelector]);\n this.eCheckbox = RefPlaceholder;\n this.registerCSS(checkboxCellRendererCSS);\n }\n init(params) {\n this.refresh(params);\n const { eCheckbox, beans } = this;\n const inputEl = eCheckbox.getInputElement();\n inputEl.setAttribute(\"tabindex\", \"-1\");\n _setAriaLive(inputEl, \"polite\");\n this.addManagedListeners(inputEl, {\n click: (event) => {\n _stopPropagationForAgGrid(event);\n if (eCheckbox.isDisabled()) {\n return;\n }\n const isSelected = eCheckbox.getValue();\n this.onCheckboxChanged(isSelected);\n },\n dblclick: (event) => {\n _stopPropagationForAgGrid(event);\n }\n });\n this.addManagedElementListeners(params.eGridCell, {\n keydown: (event) => {\n if (event.key === KeyCode.SPACE && !eCheckbox.isDisabled()) {\n if (params.eGridCell === _getActiveDomElement(beans)) {\n eCheckbox.toggle();\n }\n const isSelected = eCheckbox.getValue();\n this.onCheckboxChanged(isSelected);\n event.preventDefault();\n }\n }\n });\n }\n refresh(params) {\n this.params = params;\n this.updateCheckbox(params);\n return true;\n }\n updateCheckbox(params) {\n let isSelected;\n let displayed = true;\n const { value, column, node } = params;\n if (node.group && column) {\n if (typeof value === \"boolean\") {\n isSelected = value;\n } else {\n const colId = column.getColId();\n if (colId.startsWith(GROUP_AUTO_COLUMN_ID)) {\n isSelected = value == null || value === \"\" ? void 0 : value === \"true\";\n } else if (node.aggData && node.aggData[colId] !== void 0) {\n isSelected = value ?? void 0;\n } else {\n displayed = false;\n }\n }\n } else {\n isSelected = value ?? void 0;\n }\n const { eCheckbox } = this;\n if (!displayed) {\n eCheckbox.setDisplayed(false);\n return;\n }\n eCheckbox.setValue(isSelected);\n const disabled = params.disabled ?? !column?.isCellEditable(node);\n eCheckbox.setDisabled(disabled);\n const translate = this.getLocaleTextFunc();\n const stateName = _getAriaCheckboxStateName(translate, isSelected);\n const ariaLabel = disabled ? stateName : `${translate(\"ariaToggleCellValue\", \"Press SPACE to toggle cell value\")} (${stateName})`;\n eCheckbox.setInputAriaLabel(ariaLabel);\n }\n onCheckboxChanged(isSelected) {\n const { eventSvc, params } = this;\n const { column, node, value } = params;\n const sharedEventParams = {\n column,\n colDef: column.getColDef(),\n data: node.data,\n node,\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n value\n };\n eventSvc.dispatchEvent({\n type: \"cellEditingStarted\",\n ...sharedEventParams\n });\n const valueChanged = node.setDataValue(column, isSelected, \"edit\");\n eventSvc.dispatchEvent({\n type: \"cellEditingStopped\",\n ...sharedEventParams,\n oldValue: value,\n newValue: isSelected,\n valueChanged\n });\n if (!valueChanged) {\n this.updateCheckbox(params);\n }\n }\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/abstractClientSideNodeManager.ts\nvar ROOT_NODE_ID = \"ROOT_NODE_ID\";\nvar AbstractClientSideNodeManager = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.nextId = 0;\n this.allNodesMap = {};\n this.rootNode = null;\n }\n get treeData() {\n return false;\n }\n getRowNode(id) {\n return this.allNodesMap[id];\n }\n extractRowData() {\n return this.rootNode?.allLeafChildren?.map((node) => node.data);\n }\n activate(rootNode) {\n this.rootNode = rootNode;\n rootNode.group = true;\n rootNode.level = -1;\n rootNode.id = ROOT_NODE_ID;\n rootNode.allLeafChildren = [];\n rootNode.childrenAfterGroup = [];\n rootNode.childrenAfterSort = [];\n rootNode.childrenAfterAggFilter = [];\n rootNode.childrenAfterFilter = [];\n this.updateRootSiblingArrays(rootNode);\n }\n deactivate() {\n if (this.rootNode) {\n this.allNodesMap = {};\n this.rootNode = null;\n }\n }\n destroy() {\n super.destroy();\n this.allNodesMap = {};\n this.rootNode = null;\n }\n setNewRowData(rowData) {\n const rootNode = this.rootNode;\n if (!rootNode) {\n return;\n }\n this.dispatchRowDataUpdateStartedEvent(rowData);\n rootNode.childrenAfterFilter = null;\n rootNode.childrenAfterGroup = null;\n rootNode.childrenAfterAggFilter = null;\n rootNode.childrenAfterSort = null;\n rootNode.childrenMapped = null;\n rootNode.updateHasChildren();\n this.allNodesMap = {};\n this.nextId = 0;\n this.loadNewRowData(rowData);\n this.updateRootSiblingArrays(rootNode);\n }\n updateRootSiblingArrays(rootNode) {\n const sibling = rootNode.sibling;\n if (sibling) {\n sibling.childrenAfterFilter = rootNode.childrenAfterFilter;\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n sibling.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;\n sibling.childrenAfterSort = rootNode.childrenAfterSort;\n sibling.childrenMapped = rootNode.childrenMapped;\n sibling.allLeafChildren = rootNode.allLeafChildren;\n }\n }\n loadNewRowData(rowData) {\n this.rootNode.allLeafChildren = rowData?.map((dataItem, index) => this.createRowNode(dataItem, index)) ?? [];\n }\n setImmutableRowData(params, rowData) {\n const getRowIdFunc = _getRowIdCallback(this.gos);\n const reorder = !this.gos.get(\"suppressMaintainUnsortedOrder\");\n const changedRowNodes = params.changedRowNodes;\n const processedNodes = /* @__PURE__ */ new Set();\n const rootNode = this.rootNode;\n const oldAllLeafChildren = rootNode.allLeafChildren;\n const oldAllLeafChildrenLen = oldAllLeafChildren.length;\n let nodesAdded = false;\n let nodesRemoved = false;\n let nodesUpdated = false;\n let orderChanged = false;\n for (let i = 0, prevSourceRowIndex = -1, len = rowData.length; i < len; i++) {\n const data = rowData[i];\n let node = this.getRowNode(\n getRowIdFunc({ data, level: 0 })\n );\n if (!node) {\n nodesAdded = true;\n node = this.createRowNode(data, -1);\n changedRowNodes.add(node);\n } else {\n if (reorder) {\n const sourceRowIndex = node.sourceRowIndex;\n orderChanged || (orderChanged = sourceRowIndex <= prevSourceRowIndex || // A node was moved up, so order changed\n nodesAdded);\n prevSourceRowIndex = sourceRowIndex;\n }\n if (node.data !== data) {\n nodesUpdated = true;\n node.updateData(data);\n changedRowNodes.update(node);\n }\n }\n processedNodes.add(node);\n }\n const nodesToUnselect = [];\n for (let i = 0; i < oldAllLeafChildrenLen; i++) {\n const node = oldAllLeafChildren[i];\n if (!processedNodes.has(node)) {\n nodesRemoved = true;\n if (node.isSelected()) {\n nodesToUnselect.push(node);\n }\n this.rowNodeDeleted(node);\n changedRowNodes.remove(node);\n }\n }\n if (nodesAdded || nodesRemoved || orderChanged) {\n const newAllLeafChildren = new Array(processedNodes.size);\n let writeIdx = 0;\n if (!reorder) {\n for (let i = 0; i < oldAllLeafChildrenLen; ++i) {\n const node = oldAllLeafChildren[i];\n if (processedNodes.delete(node)) {\n node.sourceRowIndex = writeIdx;\n newAllLeafChildren[writeIdx++] = node;\n }\n }\n }\n for (const node of processedNodes) {\n node.sourceRowIndex = writeIdx;\n newAllLeafChildren[writeIdx++] = node;\n }\n rootNode.allLeafChildren = newAllLeafChildren;\n const sibling = rootNode.sibling;\n if (sibling) {\n sibling.allLeafChildren = newAllLeafChildren;\n }\n params.rowNodesOrderChanged || (params.rowNodesOrderChanged = orderChanged);\n }\n if (nodesAdded || nodesRemoved || orderChanged || nodesUpdated) {\n this.deselectNodes(nodesToUnselect);\n params.rowDataUpdated = true;\n }\n }\n /** Called when a node needs to be deleted */\n rowNodeDeleted(node) {\n node.clearRowTopAndRowIndex();\n const id = node.id;\n const allNodesMap = this.allNodesMap;\n if (allNodesMap[id] === node) {\n delete allNodesMap[id];\n }\n }\n updateRowData(rowDataTran, changedRowNodes) {\n this.dispatchRowDataUpdateStartedEvent(rowDataTran.add);\n const updateRowDataResult = {\n changedRowNodes,\n rowNodeTransaction: { remove: [], update: [], add: [] },\n rowsInserted: false\n };\n const nodesToUnselect = [];\n const getRowIdFunc = _getRowIdCallback(this.gos);\n this.executeRemove(getRowIdFunc, rowDataTran, updateRowDataResult, nodesToUnselect);\n this.executeUpdate(getRowIdFunc, rowDataTran, updateRowDataResult, nodesToUnselect);\n this.executeAdd(rowDataTran, updateRowDataResult);\n this.deselectNodes(nodesToUnselect);\n return updateRowDataResult;\n }\n executeAdd(rowDataTran, result) {\n const add = rowDataTran.add;\n if (!add?.length) {\n return;\n }\n let allLeafChildren = this.rootNode.allLeafChildren;\n let addIndex = allLeafChildren.length;\n if (typeof rowDataTran.addIndex === \"number\") {\n addIndex = this.sanitizeAddIndex(rowDataTran.addIndex);\n if (addIndex > 0) {\n const getDataPath = this.gos.get(\"treeData\") && this.gos.get(\"getDataPath\");\n if (getDataPath) {\n for (let i = 0; i < allLeafChildren.length; i++) {\n const node = allLeafChildren[i];\n if (node?.rowIndex == addIndex - 1) {\n addIndex = i + 1;\n break;\n }\n }\n }\n }\n }\n const addLength = add.length;\n const changedRowNodes = result.changedRowNodes;\n const newNodes = new Array(addLength);\n for (let i = 0; i < addLength; i++) {\n const newNode = this.createRowNode(add[i], addIndex + i);\n changedRowNodes.add(newNode);\n newNodes[i] = newNode;\n }\n const rootNode = this.rootNode;\n if (addIndex < allLeafChildren.length) {\n const nodesBeforeIndex = allLeafChildren.slice(0, addIndex);\n const nodesAfterIndex = allLeafChildren.slice(addIndex, allLeafChildren.length);\n const nodesAfterIndexFirstIndex = nodesBeforeIndex.length + newNodes.length;\n for (let index = 0, length = nodesAfterIndex.length; index < length; ++index) {\n nodesAfterIndex[index].sourceRowIndex = nodesAfterIndexFirstIndex + index;\n }\n allLeafChildren = [...nodesBeforeIndex, ...newNodes, ...nodesAfterIndex];\n result.rowsInserted = true;\n } else {\n allLeafChildren = allLeafChildren.concat(newNodes);\n }\n rootNode.allLeafChildren = allLeafChildren;\n const sibling = rootNode.sibling;\n if (sibling) {\n sibling.allLeafChildren = allLeafChildren;\n }\n result.rowNodeTransaction.add = newNodes;\n }\n executeRemove(getRowIdFunc, rowDataTran, { changedRowNodes, rowNodeTransaction }, nodesToUnselect) {\n const { remove } = rowDataTran;\n if (!remove?.length) {\n return;\n }\n const rowIdsRemoved = {};\n remove.forEach((item) => {\n const rowNode = this.lookupRowNode(getRowIdFunc, item);\n if (!rowNode) {\n return;\n }\n if (rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n rowNode.clearRowTopAndRowIndex();\n rowIdsRemoved[rowNode.id] = true;\n delete this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n changedRowNodes.remove(rowNode);\n });\n const rootNode = this.rootNode;\n rootNode.allLeafChildren = rootNode.allLeafChildren?.filter((rowNode) => !rowIdsRemoved[rowNode.id]) ?? null;\n rootNode.allLeafChildren?.forEach((node, idx) => {\n node.sourceRowIndex = idx;\n });\n const sibling = rootNode.sibling;\n if (sibling) {\n sibling.allLeafChildren = rootNode.allLeafChildren;\n }\n }\n executeUpdate(getRowIdFunc, rowDataTran, { changedRowNodes, rowNodeTransaction }, nodesToUnselect) {\n const { update } = rowDataTran;\n if (!update?.length) {\n return;\n }\n update.forEach((item) => {\n const rowNode = this.lookupRowNode(getRowIdFunc, item);\n if (!rowNode) {\n return;\n }\n rowNode.updateData(item);\n if (!rowNode.selectable && rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n rowNodeTransaction.update.push(rowNode);\n changedRowNodes.update(rowNode);\n });\n }\n dispatchRowDataUpdateStartedEvent(rowData) {\n this.eventSvc.dispatchEvent({\n type: \"rowDataUpdateStarted\",\n firstRowData: rowData?.length ? rowData[0] : null\n });\n }\n deselectNodes(nodesToUnselect) {\n const source = \"rowDataChanged\";\n const selectionSvc = this.beans.selectionSvc;\n const selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n selectionSvc?.setNodesSelected({\n newValue: false,\n nodes: nodesToUnselect,\n suppressFinishActions: true,\n source\n });\n }\n selectionSvc?.updateGroupsFromChildrenSelections?.(source);\n if (selectionChanged) {\n this.eventSvc.dispatchEvent({\n type: \"selectionChanged\",\n source,\n selectedNodes: selectionSvc?.getSelectedNodes() ?? null,\n serverSideState: null\n });\n }\n }\n sanitizeAddIndex(addIndex) {\n const allChildrenCount = this.rootNode.allLeafChildren?.length ?? 0;\n if (addIndex < 0 || addIndex >= allChildrenCount || Number.isNaN(addIndex)) {\n return allChildrenCount;\n }\n return Math.ceil(addIndex);\n }\n createRowNode(data, sourceRowIndex) {\n const node = new RowNode(this.beans);\n node.parent = this.rootNode;\n node.level = 0;\n node.group = false;\n node.expanded = false;\n node.sourceRowIndex = sourceRowIndex;\n node.setDataAndId(data, String(this.nextId));\n if (this.allNodesMap[node.id]) {\n _warn(2, { nodeId: node.id });\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n }\n lookupRowNode(getRowIdFunc, data) {\n let rowNode;\n if (getRowIdFunc) {\n const id = getRowIdFunc({ data, level: 0 });\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n _error(4, { id });\n return null;\n }\n } else {\n rowNode = this.rootNode?.allLeafChildren?.find((node) => node.data === data);\n if (!rowNode) {\n _error(5, { data });\n return null;\n }\n }\n return rowNode || null;\n }\n};\n\n// packages/ag-grid-community/src/interfaces/serverSideTransaction.ts\nvar ServerSideTransactionResultStatus = /* @__PURE__ */ ((ServerSideTransactionResultStatus2) => {\n ServerSideTransactionResultStatus2[\"Applied\"] = \"Applied\";\n ServerSideTransactionResultStatus2[\"StoreNotFound\"] = \"StoreNotFound\";\n ServerSideTransactionResultStatus2[\"StoreLoading\"] = \"StoreLoading\";\n ServerSideTransactionResultStatus2[\"StoreWaitingToLoad\"] = \"StoreWaitingToLoad\";\n ServerSideTransactionResultStatus2[\"StoreLoadingFailed\"] = \"StoreLoadingFailed\";\n ServerSideTransactionResultStatus2[\"StoreWrongType\"] = \"StoreWrongType\";\n ServerSideTransactionResultStatus2[\"Cancelled\"] = \"Cancelled\";\n ServerSideTransactionResultStatus2[\"StoreNotStarted\"] = \"StoreNotStarted\";\n return ServerSideTransactionResultStatus2;\n})(ServerSideTransactionResultStatus || {});\n\n// packages/ag-grid-community/src/selection/checkboxSelectionComponent.ts\nvar CheckboxSelectionComponentElement = {\n tag: \"div\",\n cls: \"ag-selection-checkbox\",\n role: \"presentation\",\n children: [\n {\n tag: \"ag-checkbox\",\n ref: \"eCheckbox\",\n role: \"presentation\"\n }\n ]\n};\nvar CheckboxSelectionComponent = class extends Component {\n constructor() {\n super(CheckboxSelectionComponentElement, [AgCheckboxSelector]);\n this.eCheckbox = RefPlaceholder;\n }\n postConstruct() {\n this.eCheckbox.setPassive(true);\n }\n getCheckboxId() {\n return this.eCheckbox.getInputElement().id;\n }\n onDataChanged() {\n this.onSelectionChanged();\n }\n onSelectableChanged() {\n this.showOrHideSelect();\n }\n onSelectionChanged() {\n const translate = this.getLocaleTextFunc();\n const { rowNode, eCheckbox } = this;\n const state = rowNode.isSelected();\n const stateName = _getAriaCheckboxStateName(translate, state);\n const [ariaKey, ariaLabel] = rowNode.selectable ? [\"ariaRowToggleSelection\", \"Press Space to toggle row selection\"] : [\"ariaRowSelectionDisabled\", \"Row Selection is disabled for this row\"];\n const translatedLabel = translate(ariaKey, ariaLabel);\n eCheckbox.setValue(state, true);\n eCheckbox.setInputAriaLabel(`${translatedLabel} (${stateName})`);\n }\n init(params) {\n this.rowNode = params.rowNode;\n this.column = params.column;\n this.overrides = params.overrides;\n this.onSelectionChanged();\n this.addManagedListeners(this.eCheckbox.getInputElement(), {\n // we don't want double click on this icon to open a group\n dblclick: _stopPropagationForAgGrid,\n click: (event) => {\n _stopPropagationForAgGrid(event);\n this.beans.selectionSvc?.handleSelectionEvent(event, this.rowNode, \"checkboxSelected\");\n }\n });\n this.addManagedListeners(this.rowNode, {\n rowSelected: this.onSelectionChanged.bind(this),\n dataChanged: this.onDataChanged.bind(this),\n selectableChanged: this.onSelectableChanged.bind(this)\n });\n this.addManagedPropertyListener(\"rowSelection\", ({ currentValue, previousValue }) => {\n const curr = typeof currentValue === \"object\" ? _getHideDisabledCheckboxes(currentValue) : void 0;\n const prev = typeof previousValue === \"object\" ? _getHideDisabledCheckboxes(previousValue) : void 0;\n if (curr !== prev) {\n this.onSelectableChanged();\n }\n });\n const isRowSelectableFunc = _getIsRowSelectable(this.gos);\n const checkboxVisibleIsDynamic = isRowSelectableFunc || typeof this.getIsVisible() === \"function\";\n if (checkboxVisibleIsDynamic) {\n const showOrHideSelectListener = this.showOrHideSelect.bind(this);\n this.addManagedEventListeners({ displayedColumnsChanged: showOrHideSelectListener });\n this.addManagedListeners(this.rowNode, {\n dataChanged: showOrHideSelectListener,\n cellChanged: showOrHideSelectListener\n });\n this.showOrHideSelect();\n }\n this.eCheckbox.getInputElement().setAttribute(\"tabindex\", \"-1\");\n }\n showOrHideSelect() {\n const { column, rowNode, overrides, gos } = this;\n let selectable = rowNode.selectable;\n const isVisible = this.getIsVisible();\n if (selectable) {\n if (typeof isVisible === \"function\") {\n const extraParams = overrides?.callbackParams;\n if (!column) {\n selectable = isVisible({ ...extraParams, node: rowNode, data: rowNode.data });\n } else {\n const params = column.createColumnFunctionCallbackParams(rowNode);\n selectable = isVisible({ ...extraParams, ...params });\n }\n } else {\n selectable = isVisible ?? false;\n }\n }\n const so = gos.get(\"rowSelection\");\n const disableInsteadOfHide = so && typeof so !== \"string\" ? !_getHideDisabledCheckboxes(so) : column?.getColDef().showDisabledCheckboxes;\n if (disableInsteadOfHide) {\n this.eCheckbox.setDisabled(!selectable);\n this.setVisible(true);\n this.setDisplayed(true);\n return;\n }\n if (overrides?.removeHidden) {\n this.setDisplayed(selectable);\n return;\n }\n this.setVisible(selectable);\n }\n getIsVisible() {\n const overrides = this.overrides;\n if (overrides) {\n return overrides.isVisible;\n }\n const so = this.gos.get(\"rowSelection\");\n if (so && typeof so !== \"string\") {\n return _getCheckboxes(so);\n }\n return this.column?.getColDef()?.checkboxSelection;\n }\n};\n\n// packages/ag-grid-community/src/selection/rowRangeSelectionContext.ts\nvar RowRangeSelectionContext = class {\n constructor(rowModel) {\n this.rowModel = rowModel;\n /** Whether the user is currently selecting all nodes either via the header checkbox or API */\n this.selectAll = false;\n this.rootId = null;\n /**\n * Note that the \"end\" `RowNode` may come before or after the \"root\" `RowNode` in the\n * actual grid.\n */\n this.endId = null;\n this.cachedRange = [];\n }\n reset() {\n this.rootId = null;\n this.endId = null;\n this.cachedRange.length = 0;\n }\n setRoot(node) {\n this.rootId = node.id;\n this.endId = null;\n this.cachedRange.length = 0;\n }\n setEndRange(end) {\n this.endId = end.id;\n this.cachedRange.length = 0;\n }\n getRange() {\n if (this.cachedRange.length === 0) {\n const root = this.getRoot();\n const end = this.getEnd();\n if (root == null || end == null) {\n return this.cachedRange;\n }\n this.cachedRange = this.rowModel.getNodesInRangeForSelection(root, end) ?? [];\n }\n return this.cachedRange;\n }\n isInRange(node) {\n if (this.rootId === null) {\n return false;\n }\n return this.getRange().some((nodeInRange) => nodeInRange.id === node.id);\n }\n getRoot(fallback) {\n if (this.rootId) {\n return this.rowModel.getRowNode(this.rootId) ?? null;\n }\n if (fallback) {\n this.setRoot(fallback);\n return fallback;\n }\n return null;\n }\n getEnd() {\n if (this.endId) {\n return this.rowModel.getRowNode(this.endId) ?? null;\n }\n return null;\n }\n /**\n * Truncates the range to the given node (assumed to be within the current range).\n * Returns nodes that remain in the current range and those that should be removed\n *\n * @param node - Node at which to truncate the range\n * @returns Object of nodes to either keep or discard (i.e. deselect) from the range\n */\n truncate(node) {\n const range = this.getRange();\n if (range.length === 0) {\n return { keep: [], discard: [] };\n }\n const discardAfter = range[0].id === this.rootId;\n const idx = range.findIndex((rowNode) => rowNode.id === node.id);\n if (idx > -1) {\n const above = range.slice(0, idx);\n const below = range.slice(idx + 1);\n this.setEndRange(node);\n return discardAfter ? { keep: above, discard: below } : { keep: below, discard: above };\n } else {\n return { keep: range, discard: [] };\n }\n }\n /**\n * Extends the range to the given node. Returns nodes that remain in the current range\n * and those that should be removed.\n *\n * @param node - Node marking the new end of the range\n * @returns Object of nodes to either keep or discard (i.e. deselect) from the range\n */\n extend(node, groupSelectsChildren = false) {\n const root = this.getRoot();\n if (root == null) {\n const keep = this.getRange().slice();\n if (groupSelectsChildren) {\n node.depthFirstSearch((node2) => !node2.group && keep.push(node2));\n }\n keep.push(node);\n this.setRoot(node);\n return { keep, discard: [] };\n }\n const newRange = this.rowModel.getNodesInRangeForSelection(root, node);\n if (!newRange) {\n this.setRoot(node);\n return { keep: [node], discard: [] };\n }\n if (newRange.find((newRangeNode) => newRangeNode.id === this.endId)) {\n this.setEndRange(node);\n return { keep: this.getRange(), discard: [] };\n } else {\n const discard = this.getRange().slice();\n this.setEndRange(node);\n return { keep: this.getRange(), discard };\n }\n }\n};\n\n// packages/ag-grid-community/src/selection/selectAllFeature.ts\nvar SelectAllFeature = class extends BeanStub {\n constructor(column) {\n super();\n this.column = column;\n this.cbSelectAllVisible = false;\n this.processingEventFromCheckbox = false;\n }\n onSpaceKeyDown(e) {\n const checkbox = this.cbSelectAll;\n if (checkbox.isDisplayed() && !checkbox.getGui().contains(_getActiveDomElement(this.beans))) {\n e.preventDefault();\n checkbox.setValue(!checkbox.getValue());\n }\n }\n getCheckboxGui() {\n return this.cbSelectAll.getGui();\n }\n setComp(ctrl) {\n this.headerCellCtrl = ctrl;\n const cbSelectAll = this.createManagedBean(new AgCheckbox());\n this.cbSelectAll = cbSelectAll;\n cbSelectAll.addCssClass(\"ag-header-select-all\");\n _setAriaRole(cbSelectAll.getGui(), \"presentation\");\n this.showOrHideSelectAll();\n this.addManagedEventListeners({\n newColumnsLoaded: () => this.showOrHideSelectAll(),\n displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this),\n selectionChanged: this.onSelectionChanged.bind(this),\n paginationChanged: this.onSelectionChanged.bind(this),\n modelUpdated: this.onModelChanged.bind(this)\n });\n this.addManagedPropertyListener(\"rowSelection\", ({ currentValue, previousValue }) => {\n const getSelectAll = (rowSelection) => typeof rowSelection === \"string\" || !rowSelection || rowSelection.mode === \"singleRow\" ? void 0 : rowSelection.selectAll;\n if (getSelectAll(currentValue) !== getSelectAll(previousValue)) {\n this.showOrHideSelectAll();\n }\n });\n this.addManagedListeners(cbSelectAll, { fieldValueChanged: this.onCbSelectAll.bind(this) });\n cbSelectAll.getInputElement().setAttribute(\"tabindex\", \"-1\");\n this.refreshSelectAllLabel();\n }\n onDisplayedColumnsChanged(e) {\n if (!this.isAlive()) {\n return;\n }\n this.showOrHideSelectAll(e.source === \"uiColumnMoved\");\n }\n showOrHideSelectAll(fromColumnMoved = false) {\n const cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAllVisible = cbSelectAllVisible;\n this.cbSelectAll.setDisplayed(cbSelectAllVisible);\n if (cbSelectAllVisible) {\n this.checkRightRowModelType(\"selectAllCheckbox\");\n this.checkSelectionType(\"selectAllCheckbox\");\n this.updateStateOfCheckbox();\n }\n this.refreshSelectAllLabel(fromColumnMoved);\n }\n onModelChanged() {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n }\n onSelectionChanged() {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n }\n updateStateOfCheckbox() {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n const selectAllMode = this.getSelectAllMode();\n const selectionSvc = this.beans.selectionSvc;\n const cbSelectAll = this.cbSelectAll;\n const allSelected = selectionSvc.getSelectAllState(selectAllMode);\n cbSelectAll.setValue(allSelected);\n const hasNodesToSelect = selectionSvc.hasNodesToSelect(selectAllMode);\n cbSelectAll.setDisabled(!hasNodesToSelect);\n this.refreshSelectAllLabel();\n this.processingEventFromCheckbox = false;\n }\n refreshSelectAllLabel(fromColumnMoved = false) {\n const translate = this.getLocaleTextFunc();\n const { headerCellCtrl, cbSelectAll, cbSelectAllVisible } = this;\n const checked = cbSelectAll.getValue();\n const ariaStatus = checked ? translate(\"ariaChecked\", \"checked\") : translate(\"ariaUnchecked\", \"unchecked\");\n const ariaLabel = translate(\"ariaRowSelectAll\", \"Press Space to toggle all rows selection\");\n headerCellCtrl.setAriaDescriptionProperty(\n \"selectAll\",\n cbSelectAllVisible ? `${ariaLabel} (${ariaStatus})` : null\n );\n cbSelectAll.setInputAriaLabel(translate(\"ariaHeaderSelection\", \"Column with Header Selection\"));\n if (!fromColumnMoved) {\n headerCellCtrl.announceAriaDescription();\n }\n }\n checkSelectionType(feature) {\n const isMultiSelect = _isMultiRowSelection(this.gos);\n if (!isMultiSelect) {\n _warn(128, { feature });\n return false;\n }\n return true;\n }\n checkRightRowModelType(feature) {\n const { gos, rowModel } = this.beans;\n const rowModelMatches = _isClientSideRowModel(gos) || _isServerSideRowModel(gos);\n if (!rowModelMatches) {\n _warn(129, { feature, rowModel: rowModel.getType() });\n return false;\n }\n return true;\n }\n onCbSelectAll() {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n const value = this.cbSelectAll.getValue();\n const selectAll2 = this.getSelectAllMode();\n let source = \"uiSelectAll\";\n if (selectAll2 === \"currentPage\") {\n source = \"uiSelectAllCurrentPage\";\n } else if (selectAll2 === \"filtered\") {\n source = \"uiSelectAllFiltered\";\n }\n const params = { source, selectAll: selectAll2 };\n const selectionSvc = this.beans.selectionSvc;\n if (value) {\n selectionSvc.selectAllRowNodes(params);\n } else {\n selectionSvc.deselectAllRowNodes(params);\n }\n }\n /**\n * Checkbox is enabled when either the `headerCheckbox` option is enabled in the new selection API\n * or `headerCheckboxSelection` is enabled in the legacy API.\n */\n isCheckboxSelection() {\n const { column, gos, beans } = this;\n const rowSelection = gos.get(\"rowSelection\");\n const colDef = column.getColDef();\n const { headerCheckboxSelection } = colDef;\n let result = false;\n const newHeaderCheckbox = typeof rowSelection === \"object\";\n if (newHeaderCheckbox) {\n const isSelectionCol = isColumnSelectionCol(column);\n const isAutoCol = isColumnGroupAutoCol(column);\n const location = _getCheckboxLocation(rowSelection);\n if (location === \"autoGroupColumn\" && isAutoCol || isSelectionCol && beans.selectionColSvc?.isSelectionColumnEnabled()) {\n result = _getHeaderCheckbox(rowSelection);\n }\n } else {\n if (typeof headerCheckboxSelection === \"function\") {\n result = headerCheckboxSelection(_addGridCommonParams(gos, { column, colDef }));\n } else {\n result = !!headerCheckboxSelection;\n }\n }\n const featureName = newHeaderCheckbox ? \"headerCheckbox\" : \"headerCheckboxSelection\";\n return result && this.checkRightRowModelType(featureName) && this.checkSelectionType(featureName);\n }\n getSelectAllMode() {\n const selectAll2 = _getSelectAll(this.gos, false);\n if (selectAll2) {\n return selectAll2;\n }\n const { headerCheckboxSelectionCurrentPageOnly, headerCheckboxSelectionFilteredOnly } = this.column.getColDef();\n if (headerCheckboxSelectionCurrentPageOnly) {\n return \"currentPage\";\n }\n if (headerCheckboxSelectionFilteredOnly) {\n return \"filtered\";\n }\n return \"all\";\n }\n};\n\n// packages/ag-grid-community/src/selection/baseSelectionService.ts\nvar BaseSelectionService = class extends BeanStub {\n postConstruct() {\n const { gos, beans } = this;\n this.selectionCtx = new RowRangeSelectionContext(beans.rowModel);\n this.addManagedPropertyListeners([\"isRowSelectable\", \"rowSelection\"], () => {\n const callback = _getIsRowSelectable(gos);\n if (callback !== this.isRowSelectable) {\n this.isRowSelectable = callback;\n this.updateSelectable();\n }\n });\n this.isRowSelectable = _getIsRowSelectable(gos);\n }\n destroy() {\n super.destroy();\n this.selectionCtx.reset();\n }\n createCheckboxSelectionComponent() {\n return new CheckboxSelectionComponent();\n }\n createSelectAllFeature(column) {\n return new SelectAllFeature(column);\n }\n isMultiSelect() {\n return _isMultiRowSelection(this.gos);\n }\n onRowCtrlSelected(rowCtrl, hasFocusFunc, gui) {\n const selected = !!rowCtrl.rowNode.isSelected();\n rowCtrl.forEachGui(gui, (gui2) => {\n gui2.rowComp.addOrRemoveCssClass(\"ag-row-selected\", selected);\n const element = gui2.element;\n _setAriaSelected(element, selected);\n const hasFocus = element.contains(_getActiveDomElement(this.beans));\n if (hasFocus) {\n hasFocusFunc(gui2);\n }\n });\n }\n announceAriaRowSelection(rowNode) {\n if (this.isRowSelectionBlocked(rowNode)) {\n return;\n }\n const selected = rowNode.isSelected();\n if (!rowNode.selectable) {\n return;\n }\n const translate = this.getLocaleTextFunc();\n const label = translate(\n selected ? \"ariaRowDeselect\" : \"ariaRowSelect\",\n `Press SPACE to ${selected ? \"deselect\" : \"select\"} this row`\n );\n this.beans.ariaAnnounce?.announceValue(label, \"rowSelection\");\n }\n isRowSelectionBlocked(rowNode) {\n return !rowNode.selectable || !!rowNode.rowPinned || !_isRowSelection(this.gos);\n }\n updateRowSelectable(rowNode, suppressSelectionUpdate) {\n const selectable = this.isRowSelectable?.(rowNode) ?? true;\n this.setRowSelectable(rowNode, selectable, suppressSelectionUpdate);\n return selectable;\n }\n setRowSelectable(rowNode, newVal, suppressSelectionUpdate) {\n if (rowNode.selectable !== newVal) {\n rowNode.selectable = newVal;\n rowNode.dispatchRowEvent(\"selectableChanged\");\n if (suppressSelectionUpdate) {\n return;\n }\n const isGroupSelectsChildren = _getGroupSelectsDescendants(this.gos);\n if (isGroupSelectsChildren) {\n const selected = this.calculateSelectedFromChildren(rowNode);\n this.setNodesSelected({ nodes: [rowNode], newValue: selected ?? false, source: \"selectableChanged\" });\n return;\n }\n if (rowNode.isSelected() && !rowNode.selectable) {\n this.setNodesSelected({ nodes: [rowNode], newValue: false, source: \"selectableChanged\" });\n }\n }\n }\n calculateSelectedFromChildren(rowNode) {\n let atLeastOneSelected = false;\n let atLeastOneDeSelected = false;\n if (!rowNode.childrenAfterGroup?.length) {\n return rowNode.selectable ? rowNode.__selected : null;\n }\n for (let i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n const child = rowNode.childrenAfterGroup[i];\n let childState = child.isSelected();\n if (!child.selectable) {\n const selectable = this.calculateSelectedFromChildren(child);\n if (selectable === null) {\n continue;\n }\n childState = selectable;\n }\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n return void 0;\n }\n }\n if (atLeastOneSelected && atLeastOneDeSelected) {\n return void 0;\n }\n if (atLeastOneSelected) {\n return true;\n }\n if (atLeastOneDeSelected) {\n return false;\n }\n if (!rowNode.selectable) {\n return null;\n }\n return rowNode.__selected;\n }\n selectRowNode(rowNode, newValue, e, source = \"api\") {\n const selectionNotAllowed = !rowNode.selectable && newValue;\n const selectionNotChanged = rowNode.__selected === newValue;\n if (selectionNotAllowed || selectionNotChanged) {\n return false;\n }\n rowNode.__selected = newValue;\n rowNode.dispatchRowEvent(\"rowSelected\");\n const sibling = rowNode.sibling;\n if (sibling && sibling.footer && sibling.__localEventService) {\n sibling.dispatchRowEvent(\"rowSelected\");\n }\n this.eventSvc.dispatchEvent({\n ..._createGlobalRowEvent(rowNode, this.gos, \"rowSelected\"),\n event: e || null,\n source\n });\n return true;\n }\n isCellCheckboxSelection(column, rowNode) {\n const so = this.gos.get(\"rowSelection\");\n if (so && typeof so !== \"string\") {\n const checkbox = isColumnSelectionCol(column) && _getCheckboxes(so);\n return column.isColumnFunc(rowNode, checkbox);\n } else {\n return column.isColumnFunc(rowNode, column.colDef.checkboxSelection);\n }\n }\n inferNodeSelections(node, shiftKey, metaKey, source) {\n const { gos, selectionCtx } = this;\n const currentSelection = node.isSelected();\n const groupSelectsDescendants = _getGroupSelectsDescendants(gos);\n const enableClickSelection = _getEnableSelection(gos);\n const enableDeselection = _getEnableDeselection(gos);\n const isMultiSelect = this.isMultiSelect();\n const isRowClicked = source === \"rowClicked\";\n if (isRowClicked && groupSelectsDescendants && node.group)\n return null;\n if (isRowClicked && !(enableClickSelection || enableDeselection))\n return null;\n if (shiftKey && metaKey && isMultiSelect) {\n const root = selectionCtx.getRoot();\n if (!root) {\n return null;\n } else if (!root.isSelected()) {\n const partition = selectionCtx.extend(node, groupSelectsDescendants);\n return {\n select: [],\n deselect: partition.keep,\n reset: false\n };\n } else {\n const partition = selectionCtx.isInRange(node) ? selectionCtx.truncate(node) : selectionCtx.extend(node, groupSelectsDescendants);\n return {\n deselect: partition.discard,\n select: partition.keep,\n reset: false\n };\n }\n } else if (shiftKey && isMultiSelect) {\n const fallback = selectionCtx.selectAll ? this.beans.rowModel.getRow(0) : void 0;\n const root = selectionCtx.getRoot(fallback);\n const partition = selectionCtx.isInRange(node) ? selectionCtx.truncate(node) : selectionCtx.extend(node, groupSelectsDescendants);\n return {\n select: partition.keep,\n deselect: partition.discard,\n reset: selectionCtx.selectAll || !!(root && !root.isSelected())\n };\n } else if (metaKey) {\n selectionCtx.setRoot(node);\n if (isRowClicked && currentSelection && !enableDeselection) {\n return null;\n }\n return {\n node,\n newValue: !currentSelection,\n clearSelection: !isMultiSelect\n };\n } else {\n selectionCtx.setRoot(node);\n const enableSelectionWithoutKeys = _getEnableSelectionWithoutKeys(gos);\n const groupSelectsFiltered = _getGroupSelection(gos) === \"filteredDescendants\";\n const shouldClear = isRowClicked && (!enableSelectionWithoutKeys || !enableClickSelection);\n if (groupSelectsFiltered && currentSelection === void 0 && _isClientSideRowModel(gos)) {\n return {\n node,\n newValue: false,\n clearSelection: !isMultiSelect || shouldClear\n };\n }\n if (isRowClicked) {\n const newValue = currentSelection ? !enableSelectionWithoutKeys : enableClickSelection;\n const selectingWhenDisabled = newValue && !enableClickSelection;\n const deselectingWhenDisabled = !newValue && !enableDeselection;\n const wouldStateBeUnchanged = newValue === currentSelection && !shouldClear;\n if (wouldStateBeUnchanged || selectingWhenDisabled || deselectingWhenDisabled)\n return null;\n return {\n node,\n newValue,\n clearSelection: !isMultiSelect || shouldClear\n };\n }\n return {\n node,\n newValue: !currentSelection,\n clearSelection: !isMultiSelect || shouldClear\n };\n }\n }\n};\n\n// packages/ag-grid-community/src/widgets/agRadioButton.ts\nvar AgRadioButton = class extends AgCheckbox {\n constructor(config) {\n super(config, \"ag-radio-button\", \"radio\");\n }\n isSelected() {\n return this.eInput.checked;\n }\n toggle() {\n if (this.eInput.disabled) {\n return;\n }\n if (!this.isSelected()) {\n this.setValue(true);\n }\n }\n addInputListeners() {\n super.addInputListeners();\n this.addManagedEventListeners({ checkboxChanged: this.onChange.bind(this) });\n }\n /**\n * This ensures that if another radio button in the same named group is selected, we deselect this radio button.\n * By default the browser does this for you, but we are managing classes ourselves in order to ensure input\n * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,\n * not deselected, so we need to use our own event.\n */\n onChange(event) {\n const eInput = this.eInput;\n if (event.selected && event.name && eInput.name && eInput.name === event.name && event.id && eInput.id !== event.id) {\n this.setValue(false, true);\n }\n }\n};\n\n// packages/ag-grid-community/src/widgets/agToggleButton.css-GENERATED.ts\nvar agToggleButtonCSS = (\n /*css*/\n `.ag-toggle-button{flex:none;min-width:unset;width:unset}.ag-toggle-button-input-wrapper{background-color:var(--ag-toggle-button-off-background-color);border-radius:calc(var(--ag-toggle-button-height)*.5);flex:none;height:var(--ag-toggle-button-height);max-width:var(--ag-toggle-button-width);min-width:var(--ag-toggle-button-width);position:relative;transition:background-color .1s;:where(.ag-toggle-button-input){-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;display:block;height:var(--ag-toggle-button-height);margin:0;max-width:var(--ag-toggle-button-width);min-width:var(--ag-toggle-button-width);opacity:0}&:before{background-color:var(--ag-toggle-button-switch-background-color);border-radius:100%;content:\"\";display:block;height:calc(var(--ag-toggle-button-height) - var(--ag-toggle-button-switch-inset)*2);left:var(--ag-toggle-button-switch-inset);pointer-events:none;position:absolute;top:var(--ag-toggle-button-switch-inset);transition:left .1s;width:calc(var(--ag-toggle-button-height) - var(--ag-toggle-button-switch-inset)*2)}&.ag-checked{background-color:var(--ag-toggle-button-on-background-color);&:before{left:calc(100% - var(--ag-toggle-button-height) + var(--ag-toggle-button-switch-inset))}}&:focus-within{box-shadow:var(--ag-focus-shadow)}&.ag-disabled{opacity:.5}}`\n);\n\n// packages/ag-grid-community/src/widgets/agToggleButton.ts\nvar AgToggleButton = class extends AgCheckbox {\n constructor(config) {\n super(config, \"ag-toggle-button\");\n this.registerCSS(agToggleButtonCSS);\n }\n setValue(value, silent) {\n super.setValue(value, silent);\n this.addOrRemoveCssClass(\"ag-selected\", this.getValue());\n return this;\n }\n};\nvar AgToggleButtonSelector = {\n selector: \"AG-TOGGLE-BUTTON\",\n component: AgToggleButton\n};\n\n// packages/ag-grid-community/src/widgets/agInputTextField.ts\nvar AgInputTextField = class extends AgAbstractInputField {\n constructor(config, className = \"ag-text-field\", inputType = \"text\") {\n super(config, className, inputType);\n }\n postConstruct() {\n super.postConstruct();\n if (this.config.allowedCharPattern) {\n this.preventDisallowedCharacters();\n }\n }\n setValue(value, silent) {\n const eInput = this.eInput;\n if (eInput.value !== value) {\n eInput.value = _exists(value) ? value : \"\";\n }\n return super.setValue(value, silent);\n }\n /** Used to set an initial value into the input without necessarily setting `this.value` or triggering events (e.g. to set an invalid value) */\n setStartValue(value) {\n this.setValue(value, true);\n }\n preventDisallowedCharacters() {\n const pattern = new RegExp(`[${this.config.allowedCharPattern}]`);\n const preventCharacters = (event) => {\n if (!_isEventFromPrintableCharacter(event)) {\n return;\n }\n if (event.key && !pattern.test(event.key)) {\n event.preventDefault();\n }\n };\n this.addManagedListeners(this.eInput, {\n keydown: preventCharacters,\n paste: (e) => {\n const text = e.clipboardData?.getData(\"text\");\n if (text && text.split(\"\").some((c) => !pattern.test(c))) {\n e.preventDefault();\n }\n }\n });\n }\n};\nvar AgInputTextFieldSelector = {\n selector: \"AG-INPUT-TEXT-FIELD\",\n component: AgInputTextField\n};\n\n// packages/ag-grid-community/src/widgets/agInputTextArea.ts\nvar AgInputTextArea = class extends AgAbstractInputField {\n constructor(config) {\n super(config, \"ag-text-area\", null, \"textarea\");\n }\n setValue(value, silent) {\n const ret = super.setValue(value, silent);\n this.eInput.value = value;\n return ret;\n }\n setCols(cols) {\n this.eInput.cols = cols;\n return this;\n }\n setRows(rows) {\n this.eInput.rows = rows;\n return this;\n }\n};\nvar AgInputTextAreaSelector = {\n selector: \"AG-INPUT-TEXT-AREA\",\n component: AgInputTextArea\n};\n\n// packages/ag-grid-community/src/widgets/agInputNumberField.ts\nvar AgInputNumberField = class extends AgInputTextField {\n constructor(config) {\n super(config, \"ag-number-field\", \"number\");\n }\n postConstruct() {\n super.postConstruct();\n const eInput = this.eInput;\n this.addManagedListeners(eInput, {\n blur: () => {\n const floatedValue = parseFloat(eInput.value);\n const value = isNaN(floatedValue) ? \"\" : this.normalizeValue(floatedValue.toString());\n if (this.value !== value) {\n this.setValue(value);\n }\n },\n wheel: this.onWheel.bind(this)\n });\n eInput.step = \"any\";\n const { precision, min, max, step } = this.config;\n if (typeof precision === \"number\")\n this.setPrecision(precision);\n if (typeof min === \"number\")\n this.setMin(min);\n if (typeof max === \"number\")\n this.setMax(max);\n if (typeof step === \"number\")\n this.setStep(step);\n }\n onWheel(e) {\n if (_getActiveDomElement(this.beans) === this.eInput) {\n e.preventDefault();\n }\n }\n normalizeValue(value) {\n if (value === \"\") {\n return \"\";\n }\n if (this.precision != null) {\n value = this.adjustPrecision(value);\n }\n const val = parseFloat(value);\n const { min, max } = this;\n if (min != null && val < min) {\n value = min.toString();\n } else if (max != null && val > max) {\n value = max.toString();\n }\n return value;\n }\n adjustPrecision(value, isScientificNotation) {\n const precision = this.precision;\n if (precision == null) {\n return value;\n }\n if (isScientificNotation) {\n const floatString = parseFloat(value).toFixed(precision);\n return parseFloat(floatString).toString();\n }\n const parts = String(value).split(\".\");\n if (parts.length > 1) {\n if (parts[1].length <= precision) {\n return value;\n } else if (precision > 0) {\n return `${parts[0]}.${parts[1].slice(0, precision)}`;\n }\n }\n return parts[0];\n }\n setMin(min) {\n if (this.min === min) {\n return this;\n }\n this.min = min;\n _addOrRemoveAttribute(this.eInput, \"min\", min);\n return this;\n }\n setMax(max) {\n if (this.max === max) {\n return this;\n }\n this.max = max;\n _addOrRemoveAttribute(this.eInput, \"max\", max);\n return this;\n }\n setPrecision(precision) {\n this.precision = precision;\n return this;\n }\n setStep(step) {\n if (this.step === step) {\n return this;\n }\n this.step = step;\n _addOrRemoveAttribute(this.eInput, \"step\", step);\n return this;\n }\n setValue(value, silent) {\n return this.setValueOrInputValue(\n (v) => super.setValue(v, silent),\n () => this,\n value\n );\n }\n setStartValue(value) {\n return this.setValueOrInputValue(\n (v) => super.setValue(v, true),\n (v) => {\n this.eInput.value = v;\n },\n value\n );\n }\n setValueOrInputValue(setValueFunc, setInputValueOnlyFunc, value) {\n if (_exists(value)) {\n let setInputValueOnly = this.isScientificNotation(value);\n if (setInputValueOnly && this.eInput.validity.valid) {\n return setValueFunc(value);\n }\n if (!setInputValueOnly) {\n value = this.adjustPrecision(value);\n const normalizedValue = this.normalizeValue(value);\n setInputValueOnly = value != normalizedValue;\n }\n if (setInputValueOnly) {\n return setInputValueOnlyFunc(value);\n }\n }\n return setValueFunc(value);\n }\n getValue() {\n const eInput = this.eInput;\n if (!eInput.validity.valid) {\n return void 0;\n }\n const inputValue = eInput.value;\n if (this.isScientificNotation(inputValue)) {\n return this.adjustPrecision(inputValue, true);\n }\n return super.getValue();\n }\n isScientificNotation(value) {\n return typeof value === \"string\" && value.includes(\"e\");\n }\n};\nvar AgInputNumberFieldSelector = {\n selector: \"AG-INPUT-NUMBER-FIELD\",\n component: AgInputNumberField\n};\n\n// packages/ag-grid-community/src/utils/date.ts\nfunction _padStartWidthZeros(value, totalStringSize) {\n return value.toString().padStart(totalStringSize, \"0\");\n}\nfunction _serialiseDate(date, includeTime = true, separator = \"-\") {\n if (!date) {\n return null;\n }\n let serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map((part) => _padStartWidthZeros(part, 2)).join(separator);\n if (includeTime) {\n serialised += \" \" + [date.getHours(), date.getMinutes(), date.getSeconds()].map((part) => _padStartWidthZeros(part, 2)).join(\":\");\n }\n return serialised;\n}\nvar calculateOrdinal = (value) => {\n if (value > 3 && value < 21) {\n return \"th\";\n }\n const remainder = value % 10;\n switch (remainder) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n }\n return \"th\";\n};\nfunction _dateToFormattedString(date, format = \"YYYY-MM-DD\") {\n const fullYear = _padStartWidthZeros(date.getFullYear(), 4);\n const months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ];\n const days = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n const replace = {\n YYYY: () => fullYear.slice(fullYear.length - 4, fullYear.length),\n YY: () => fullYear.slice(fullYear.length - 2, fullYear.length),\n Y: () => `${date.getFullYear()}`,\n MMMM: () => months[date.getMonth()],\n MMM: () => months[date.getMonth()].slice(0, 3),\n MM: () => _padStartWidthZeros(date.getMonth() + 1, 2),\n Mo: () => `${date.getMonth() + 1}${calculateOrdinal(date.getMonth() + 1)}`,\n M: () => `${date.getMonth() + 1}`,\n Do: () => `${date.getDate()}${calculateOrdinal(date.getDate())}`,\n DD: () => _padStartWidthZeros(date.getDate(), 2),\n D: () => `${date.getDate()}`,\n dddd: () => days[date.getDay()],\n ddd: () => days[date.getDay()].slice(0, 3),\n dd: () => days[date.getDay()].slice(0, 2),\n do: () => `${date.getDay()}${calculateOrdinal(date.getDay())}`,\n d: () => `${date.getDay()}`\n };\n const regexp = new RegExp(Object.keys(replace).join(\"|\"), \"g\");\n return format.replace(regexp, (match) => {\n if (match in replace) {\n return replace[match]();\n }\n return match;\n });\n}\nfunction _parseDateTimeFromString(value) {\n if (!value) {\n return null;\n }\n const [dateStr, timeStr] = value.split(\" \");\n if (!dateStr) {\n return null;\n }\n const fields = dateStr.split(\"-\").map((f) => parseInt(f, 10));\n if (fields.filter((f) => !isNaN(f)).length !== 3) {\n return null;\n }\n const [year, month, day] = fields;\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n if (!timeStr || timeStr === \"00:00:00\") {\n return date;\n }\n const [hours, minutes, seconds] = timeStr.split(\":\").map((part) => parseInt(part, 10));\n if (hours >= 0 && hours < 24) {\n date.setHours(hours);\n }\n if (minutes >= 0 && minutes < 60) {\n date.setMinutes(minutes);\n }\n if (seconds >= 0 && seconds < 60) {\n date.setSeconds(seconds);\n }\n return date;\n}\n\n// packages/ag-grid-community/src/widgets/agInputDateField.ts\nvar AgInputDateField = class extends AgInputTextField {\n constructor(config) {\n super(config, \"ag-date-field\", \"date\");\n }\n postConstruct() {\n super.postConstruct();\n const usingSafari = _isBrowserSafari();\n this.addManagedListeners(this.eInput, {\n wheel: this.onWheel.bind(this),\n mousedown: () => {\n if (this.isDisabled() || usingSafari) {\n return;\n }\n this.eInput.focus();\n }\n });\n this.eInput.step = \"any\";\n }\n onWheel(e) {\n if (_getActiveDomElement(this.beans) === this.eInput) {\n e.preventDefault();\n }\n }\n setMin(minDate) {\n const min = minDate instanceof Date ? _serialiseDate(minDate ?? null, false) ?? void 0 : minDate;\n if (this.min === min) {\n return this;\n }\n this.min = min;\n _addOrRemoveAttribute(this.eInput, \"min\", min);\n return this;\n }\n setMax(maxDate) {\n const max = maxDate instanceof Date ? _serialiseDate(maxDate ?? null, false) ?? void 0 : maxDate;\n if (this.max === max) {\n return this;\n }\n this.max = max;\n _addOrRemoveAttribute(this.eInput, \"max\", max);\n return this;\n }\n setStep(step) {\n if (this.step === step) {\n return this;\n }\n this.step = step;\n _addOrRemoveAttribute(this.eInput, \"step\", step);\n return this;\n }\n getDate() {\n if (!this.eInput.validity.valid) {\n return void 0;\n }\n return _parseDateTimeFromString(this.getValue()) ?? void 0;\n }\n setDate(date, silent) {\n this.setValue(_serialiseDate(date ?? null, false), silent);\n }\n};\nvar AgInputDateFieldSelector = {\n selector: \"AG-INPUT-DATE-FIELD\",\n component: AgInputDateField\n};\n\n// packages/ag-grid-community/src/tooltip/tooltipStateManager.ts\nvar SHOW_QUICK_TOOLTIP_DIFF = 1e3;\nvar FADE_OUT_TOOLTIP_TIMEOUT = 1e3;\nvar INTERACTIVE_HIDE_DELAY = 100;\nvar lastTooltipHideTime;\nvar isLocked = false;\nvar TooltipStateManager = class extends BeanStub {\n constructor(tooltipCtrl, getTooltipValue) {\n super();\n this.tooltipCtrl = tooltipCtrl;\n this.getTooltipValue = getTooltipValue;\n this.interactionEnabled = false;\n this.isInteractingWithTooltip = false;\n this.state = 0 /* NOTHING */;\n // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to\n // async we could request two tooltips before the first instance returns, in which case we should\n // disregard the second instance.\n this.tooltipInstanceCount = 0;\n this.tooltipMouseTrack = false;\n }\n wireBeans(beans) {\n this.popupSvc = beans.popupSvc;\n this.userCompFactory = beans.userCompFactory;\n }\n postConstruct() {\n if (this.gos.get(\"tooltipInteraction\")) {\n this.interactionEnabled = true;\n }\n this.tooltipTrigger = this.getTooltipTrigger();\n this.tooltipMouseTrack = this.gos.get(\"tooltipMouseTrack\");\n const el = this.tooltipCtrl.getGui();\n if (this.tooltipTrigger === 0 /* HOVER */) {\n this.addManagedListeners(el, {\n mouseenter: this.onMouseEnter.bind(this),\n mouseleave: this.onMouseLeave.bind(this)\n });\n }\n if (this.tooltipTrigger === 1 /* FOCUS */) {\n this.addManagedListeners(el, {\n focusin: this.onFocusIn.bind(this),\n focusout: this.onFocusOut.bind(this)\n });\n }\n this.addManagedListeners(el, { mousemove: this.onMouseMove.bind(this) });\n if (!this.interactionEnabled) {\n this.addManagedListeners(el, {\n mousedown: this.onMouseDown.bind(this),\n keydown: this.onKeyDown.bind(this)\n });\n }\n }\n getGridOptionsTooltipDelay(delayOption) {\n const delay = this.gos.get(delayOption);\n return Math.max(200, delay);\n }\n getTooltipDelay(type) {\n if (type === \"show\") {\n return this.tooltipCtrl.getTooltipShowDelayOverride?.() ?? this.getGridOptionsTooltipDelay(\"tooltipShowDelay\");\n }\n return this.tooltipCtrl.getTooltipHideDelayOverride?.() ?? this.getGridOptionsTooltipDelay(\"tooltipHideDelay\");\n }\n destroy() {\n this.setToDoNothing();\n super.destroy();\n }\n getTooltipTrigger() {\n const trigger = this.gos.get(\"tooltipTrigger\");\n if (!trigger || trigger === \"hover\") {\n return 0 /* HOVER */;\n }\n return 1 /* FOCUS */;\n }\n onMouseEnter(e) {\n if (this.interactionEnabled && this.interactiveTooltipTimeoutId) {\n this.unlockService();\n this.startHideTimeout();\n }\n if (_isIOSUserAgent()) {\n return;\n }\n if (isLocked) {\n this.showTooltipTimeoutId = window.setTimeout(() => {\n this.prepareToShowTooltip(e);\n }, INTERACTIVE_HIDE_DELAY);\n } else {\n this.prepareToShowTooltip(e);\n }\n }\n onMouseMove(e) {\n if (this.lastMouseEvent) {\n this.lastMouseEvent = e;\n }\n if (this.tooltipMouseTrack && this.state === 2 /* SHOWING */ && this.tooltipComp) {\n this.positionTooltip();\n }\n }\n onMouseDown() {\n this.setToDoNothing();\n }\n onMouseLeave() {\n if (this.interactionEnabled) {\n this.lockService();\n } else {\n this.setToDoNothing();\n }\n }\n onFocusIn() {\n this.prepareToShowTooltip();\n }\n onFocusOut(e) {\n const relatedTarget = e.relatedTarget;\n const parentCompGui = this.tooltipCtrl.getGui();\n const tooltipGui = this.tooltipComp?.getGui();\n if (this.isInteractingWithTooltip || parentCompGui.contains(relatedTarget) || this.interactionEnabled && tooltipGui?.contains(relatedTarget)) {\n return;\n }\n this.setToDoNothing();\n }\n onKeyDown() {\n if (this.isInteractingWithTooltip) {\n this.isInteractingWithTooltip = false;\n }\n this.setToDoNothing();\n }\n prepareToShowTooltip(mouseEvent) {\n if (this.state != 0 /* NOTHING */ || isLocked) {\n return;\n }\n let delay = 0;\n if (mouseEvent) {\n delay = this.isLastTooltipHiddenRecently() ? 200 : this.getTooltipDelay(\"show\");\n }\n this.lastMouseEvent = mouseEvent || null;\n this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);\n this.state = 1 /* WAITING_TO_SHOW */;\n }\n isLastTooltipHiddenRecently() {\n const now = Date.now();\n const then = lastTooltipHideTime;\n return now - then < SHOW_QUICK_TOOLTIP_DIFF;\n }\n setToDoNothing(fromHideTooltip) {\n if (!fromHideTooltip && this.state === 2 /* SHOWING */) {\n this.hideTooltip();\n }\n if (this.onBodyScrollEventCallback) {\n this.onBodyScrollEventCallback();\n this.onBodyScrollEventCallback = void 0;\n }\n if (this.onColumnMovedEventCallback) {\n this.onColumnMovedEventCallback();\n this.onColumnMovedEventCallback = void 0;\n }\n if (this.onDocumentKeyDownCallback) {\n this.onDocumentKeyDownCallback();\n this.onDocumentKeyDownCallback = void 0;\n }\n this.clearTimeouts();\n this.state = 0 /* NOTHING */;\n this.lastMouseEvent = null;\n }\n showTooltip() {\n const value = this.getTooltipValue();\n const ctrl = this.tooltipCtrl;\n if (!_exists(value) || ctrl.shouldDisplayTooltip && !ctrl.shouldDisplayTooltip()) {\n this.setToDoNothing();\n return;\n }\n const rowNode = ctrl.getRowNode?.();\n const params = _addGridCommonParams(this.gos, {\n location: ctrl.getLocation?.() ?? \"UNKNOWN\",\n //'cell',\n colDef: ctrl.getColDef?.(),\n column: ctrl.getColumn?.(),\n rowIndex: ctrl.getRowIndex?.(),\n node: rowNode,\n data: rowNode?.data,\n value,\n valueFormatted: ctrl.getValueFormatted?.(),\n hideTooltipCallback: () => this.hideTooltip(true),\n ...ctrl.getAdditionalParams?.() ?? {}\n });\n this.state = 2 /* SHOWING */;\n this.tooltipInstanceCount++;\n const callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n const userDetails = _getTooltipCompDetails(this.userCompFactory, params);\n userDetails?.newAgStackInstance().then(callback);\n }\n hideTooltip(forceHide) {\n if (!forceHide && this.isInteractingWithTooltip) {\n return;\n }\n if (this.tooltipComp) {\n this.destroyTooltipComp();\n lastTooltipHideTime = Date.now();\n }\n this.eventSvc.dispatchEvent({\n type: \"tooltipHide\",\n parentGui: this.tooltipCtrl.getGui()\n });\n if (forceHide) {\n this.isInteractingWithTooltip = false;\n }\n this.setToDoNothing(true);\n }\n newTooltipComponentCallback(tooltipInstanceCopy, tooltipComp) {\n const compNoLongerNeeded = this.state !== 2 /* SHOWING */ || this.tooltipInstanceCount !== tooltipInstanceCopy;\n if (compNoLongerNeeded) {\n this.destroyBean(tooltipComp);\n return;\n }\n const eGui = tooltipComp.getGui();\n this.tooltipComp = tooltipComp;\n if (!eGui.classList.contains(\"ag-tooltip\")) {\n eGui.classList.add(\"ag-tooltip-custom\");\n }\n if (this.tooltipTrigger === 0 /* HOVER */) {\n eGui.classList.add(\"ag-tooltip-animate\");\n }\n if (this.interactionEnabled) {\n eGui.classList.add(\"ag-tooltip-interactive\");\n }\n const translate = this.getLocaleTextFunc();\n const addPopupRes = this.popupSvc?.addPopup({\n eChild: eGui,\n ariaLabel: translate(\"ariaLabelTooltip\", \"Tooltip\")\n });\n if (addPopupRes) {\n this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;\n }\n this.positionTooltip();\n if (this.tooltipTrigger === 1 /* FOCUS */) {\n const listener = () => this.setToDoNothing();\n [this.onBodyScrollEventCallback, this.onColumnMovedEventCallback] = this.addManagedEventListeners({\n bodyScroll: listener,\n columnMoved: listener\n });\n }\n if (this.interactionEnabled) {\n [this.tooltipMouseEnterListener, this.tooltipMouseLeaveListener] = this.addManagedElementListeners(eGui, {\n mouseenter: this.onTooltipMouseEnter.bind(this),\n mouseleave: this.onTooltipMouseLeave.bind(this)\n });\n [this.onDocumentKeyDownCallback] = this.addManagedElementListeners(_getDocument(this.beans), {\n keydown: (e) => {\n if (!eGui.contains(e?.target)) {\n this.onKeyDown();\n }\n }\n });\n if (this.tooltipTrigger === 1 /* FOCUS */) {\n [this.tooltipFocusInListener, this.tooltipFocusOutListener] = this.addManagedElementListeners(eGui, {\n focusin: this.onTooltipFocusIn.bind(this),\n focusout: this.onTooltipFocusOut.bind(this)\n });\n }\n }\n this.eventSvc.dispatchEvent({\n type: \"tooltipShow\",\n tooltipGui: eGui,\n parentGui: this.tooltipCtrl.getGui()\n });\n this.startHideTimeout();\n }\n onTooltipMouseEnter() {\n this.isInteractingWithTooltip = true;\n this.unlockService();\n }\n onTooltipMouseLeave() {\n if (this.isTooltipFocused()) {\n return;\n }\n this.isInteractingWithTooltip = false;\n this.lockService();\n }\n onTooltipFocusIn() {\n this.isInteractingWithTooltip = true;\n }\n isTooltipFocused() {\n const tooltipGui = this.tooltipComp?.getGui();\n const activeEl = _getActiveDomElement(this.beans);\n return !!tooltipGui && tooltipGui.contains(activeEl);\n }\n onTooltipFocusOut(e) {\n const parentGui = this.tooltipCtrl.getGui();\n if (this.isTooltipFocused()) {\n return;\n }\n this.isInteractingWithTooltip = false;\n if (parentGui.contains(e.relatedTarget)) {\n this.startHideTimeout();\n } else {\n this.hideTooltip();\n }\n }\n positionTooltip() {\n const params = {\n type: \"tooltip\",\n ePopup: this.tooltipComp.getGui(),\n nudgeY: 18,\n skipObserver: this.tooltipMouseTrack\n };\n if (this.lastMouseEvent) {\n this.popupSvc?.positionPopupUnderMouseEvent({\n ...params,\n mouseEvent: this.lastMouseEvent\n });\n } else {\n this.popupSvc?.positionPopupByComponent({\n ...params,\n eventSource: this.tooltipCtrl.getGui(),\n position: \"under\",\n keepWithinBounds: true,\n nudgeY: 5\n });\n }\n }\n destroyTooltipComp() {\n this.tooltipComp.getGui().classList.add(\"ag-tooltip-hiding\");\n const tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n const tooltipComp = this.tooltipComp;\n const delay = this.tooltipTrigger === 0 /* HOVER */ ? FADE_OUT_TOOLTIP_TIMEOUT : 0;\n window.setTimeout(() => {\n tooltipPopupDestroyFunc();\n this.destroyBean(tooltipComp);\n }, delay);\n this.clearTooltipListeners();\n this.tooltipPopupDestroyFunc = void 0;\n this.tooltipComp = void 0;\n }\n clearTooltipListeners() {\n [\n this.tooltipMouseEnterListener,\n this.tooltipMouseLeaveListener,\n this.tooltipFocusInListener,\n this.tooltipFocusOutListener\n ].forEach((listener) => {\n if (listener) {\n listener();\n }\n });\n this.tooltipMouseEnterListener = this.tooltipMouseLeaveListener = this.tooltipFocusInListener = this.tooltipFocusOutListener = null;\n }\n lockService() {\n isLocked = true;\n this.interactiveTooltipTimeoutId = window.setTimeout(() => {\n this.unlockService();\n this.setToDoNothing();\n }, INTERACTIVE_HIDE_DELAY);\n }\n unlockService() {\n isLocked = false;\n this.clearInteractiveTimeout();\n }\n startHideTimeout() {\n this.clearHideTimeout();\n this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.getTooltipDelay(\"hide\"));\n }\n clearShowTimeout() {\n if (!this.showTooltipTimeoutId) {\n return;\n }\n window.clearTimeout(this.showTooltipTimeoutId);\n this.showTooltipTimeoutId = void 0;\n }\n clearHideTimeout() {\n if (!this.hideTooltipTimeoutId) {\n return;\n }\n window.clearTimeout(this.hideTooltipTimeoutId);\n this.hideTooltipTimeoutId = void 0;\n }\n clearInteractiveTimeout() {\n if (!this.interactiveTooltipTimeoutId) {\n return;\n }\n window.clearTimeout(this.interactiveTooltipTimeoutId);\n this.interactiveTooltipTimeoutId = void 0;\n }\n clearTimeouts() {\n this.clearShowTimeout();\n this.clearHideTimeout();\n this.clearInteractiveTimeout();\n }\n};\n\n// packages/ag-grid-community/src/tooltip/tooltipFeature.ts\nfunction _isShowTooltipWhenTruncated(gos) {\n return gos.get(\"tooltipShowMode\") === \"whenTruncated\";\n}\nfunction _getShouldDisplayTooltip(gos, getElement) {\n return _isShowTooltipWhenTruncated(gos) ? _shouldDisplayTooltip(getElement) : void 0;\n}\nfunction _shouldDisplayTooltip(getElement) {\n return () => {\n const element = getElement();\n if (!element) {\n return true;\n }\n return element.scrollWidth > element.clientWidth;\n };\n}\nvar TooltipFeature = class extends BeanStub {\n constructor(ctrl, beans) {\n super();\n this.ctrl = ctrl;\n if (beans) {\n this.beans = beans;\n }\n }\n postConstruct() {\n this.refreshTooltip();\n }\n setBrowserTooltip(tooltip) {\n const name = \"title\";\n const eGui = this.ctrl.getGui();\n if (!eGui) {\n return;\n }\n if (tooltip != null && tooltip != \"\") {\n eGui.setAttribute(name, tooltip);\n } else {\n eGui.removeAttribute(name);\n }\n }\n updateTooltipText() {\n const { getTooltipValue } = this.ctrl;\n if (getTooltipValue) {\n this.tooltip = getTooltipValue();\n }\n }\n createTooltipFeatureIfNeeded() {\n if (this.tooltipManager == null) {\n this.tooltipManager = this.createBean(\n new TooltipStateManager(this.ctrl, () => this.tooltip),\n this.beans.context\n );\n }\n }\n setTooltipAndRefresh(tooltip) {\n this.tooltip = tooltip;\n this.refreshTooltip();\n }\n refreshTooltip() {\n this.browserTooltips = this.beans.gos.get(\"enableBrowserTooltips\");\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.setBrowserTooltip(this.tooltip);\n this.tooltipManager = this.destroyBean(this.tooltipManager, this.beans.context);\n } else {\n this.setBrowserTooltip(null);\n this.createTooltipFeatureIfNeeded();\n }\n }\n destroy() {\n this.tooltipManager = this.destroyBean(this.tooltipManager, this.beans.context);\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/widgets/agList.ts\nvar AgList = class extends Component {\n constructor(cssIdentifier = \"default\", unFocusable = false) {\n super({ tag: \"div\", cls: `ag-list ag-${cssIdentifier}-list` });\n this.cssIdentifier = cssIdentifier;\n this.unFocusable = unFocusable;\n this.activeClass = \"ag-active-item\";\n this.options = [];\n this.itemEls = [];\n }\n postConstruct() {\n const eGui = this.getGui();\n this.addManagedElementListeners(eGui, { mouseleave: () => this.clearHighlighted() });\n if (this.unFocusable) {\n return;\n }\n this.addManagedElementListeners(eGui, { keydown: this.handleKeyDown.bind(this) });\n }\n handleKeyDown(e) {\n const key = e.key;\n switch (key) {\n case KeyCode.ENTER:\n if (!this.highlightedEl) {\n this.setValue(this.getValue());\n } else {\n const pos = this.itemEls.indexOf(this.highlightedEl);\n this.setValueByIndex(pos);\n }\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n e.preventDefault();\n this.navigate(key);\n break;\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n e.preventDefault();\n this.navigateToPage(key);\n break;\n }\n }\n navigate(key) {\n const isDown = key === KeyCode.DOWN;\n let itemToHighlight;\n const { itemEls, highlightedEl } = this;\n if (!highlightedEl) {\n itemToHighlight = itemEls[isDown ? 0 : itemEls.length - 1];\n } else {\n const currentIdx = itemEls.indexOf(highlightedEl);\n let nextPos = currentIdx + (isDown ? 1 : -1);\n nextPos = Math.min(Math.max(nextPos, 0), itemEls.length - 1);\n itemToHighlight = itemEls[nextPos];\n }\n this.highlightItem(itemToHighlight);\n }\n navigateToPage(key) {\n const { itemEls, highlightedEl } = this;\n if (!highlightedEl || itemEls.length === 0) {\n return;\n }\n const currentIdx = itemEls.indexOf(highlightedEl);\n const rowCount = this.options.length - 1;\n const itemHeight = itemEls[0].clientHeight;\n const pageSize = Math.floor(this.getGui().clientHeight / itemHeight);\n let newIndex = -1;\n if (key === KeyCode.PAGE_HOME) {\n newIndex = 0;\n } else if (key === KeyCode.PAGE_END) {\n newIndex = rowCount;\n } else if (key === KeyCode.PAGE_DOWN) {\n newIndex = Math.min(currentIdx + pageSize, rowCount);\n } else if (key === KeyCode.PAGE_UP) {\n newIndex = Math.max(currentIdx - pageSize, 0);\n }\n if (newIndex === -1) {\n return;\n }\n this.highlightItem(itemEls[newIndex]);\n }\n addOptions(listOptions) {\n listOptions.forEach((listOption) => this.addOption(listOption));\n return this;\n }\n addOption(listOption) {\n const { value, text } = listOption;\n const valueToRender = text || value;\n this.options.push({ value, text: valueToRender });\n this.renderOption(value, valueToRender);\n this.updateIndices();\n return this;\n }\n clearOptions() {\n this.options = [];\n this.reset(true);\n this.itemEls.forEach((itemEl) => {\n _removeFromParent(itemEl);\n });\n this.itemEls = [];\n this.refreshAriaRole();\n }\n refreshAriaRole() {\n const eGui = this.getGui();\n _setAriaRole(eGui, this.options.length === 0 ? \"presentation\" : \"listbox\");\n }\n updateIndices() {\n const options = this.getGui().querySelectorAll(\".ag-list-item\");\n this.refreshAriaRole();\n options.forEach((option, idx) => {\n _setAriaPosInSet(option, idx + 1);\n _setAriaSetSize(option, options.length);\n });\n }\n renderOption(value, text) {\n const eDocument = _getDocument(this.beans);\n const itemEl = eDocument.createElement(\"div\");\n _setAriaRole(itemEl, \"option\");\n itemEl.classList.add(\"ag-list-item\", `ag-${this.cssIdentifier}-list-item`);\n const span = eDocument.createElement(\"span\");\n itemEl.appendChild(span);\n span.textContent = text;\n if (!this.unFocusable) {\n itemEl.tabIndex = -1;\n }\n this.itemEls.push(itemEl);\n this.addManagedListeners(itemEl, {\n mouseover: () => this.highlightItem(itemEl),\n mousedown: (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.setValue(value);\n }\n });\n this.createOptionalManagedBean(\n this.beans.registry.createDynamicBean(\"tooltipFeature\", false, {\n getTooltipValue: () => text,\n getGui: () => itemEl,\n getLocation: () => \"UNKNOWN\",\n // only show tooltips for items where the text cannot be fully displayed\n shouldDisplayTooltip: () => span.scrollWidth > span.clientWidth\n })\n );\n this.getGui().appendChild(itemEl);\n }\n setValue(value, silent) {\n if (this.value === value) {\n this.fireItemSelected();\n return this;\n }\n if (value == null) {\n this.reset(silent);\n return this;\n }\n const idx = this.options.findIndex((option) => option.value === value);\n if (idx !== -1) {\n const option = this.options[idx];\n this.value = option.value;\n this.displayValue = option.text;\n this.highlightItem(this.itemEls[idx]);\n if (!silent) {\n this.fireChangeEvent();\n }\n }\n return this;\n }\n setValueByIndex(idx) {\n return this.setValue(this.options[idx].value);\n }\n getValue() {\n return this.value;\n }\n getDisplayValue() {\n return this.displayValue;\n }\n refreshHighlighted() {\n this.clearHighlighted();\n const idx = this.options.findIndex((option) => option.value === this.value);\n if (idx !== -1) {\n this.highlightItem(this.itemEls[idx]);\n }\n }\n reset(silent) {\n this.value = null;\n this.displayValue = null;\n this.clearHighlighted();\n if (!silent) {\n this.fireChangeEvent();\n }\n }\n highlightItem(el) {\n if (!_isVisible(el)) {\n return;\n }\n this.clearHighlighted();\n this.highlightedEl = el;\n el.classList.add(this.activeClass);\n _setAriaSelected(el, true);\n const eGui = this.getGui();\n const { scrollTop, clientHeight } = eGui;\n const { offsetTop, offsetHeight } = el;\n if (offsetTop + offsetHeight > scrollTop + clientHeight || offsetTop < scrollTop) {\n el.scrollIntoView({ block: \"nearest\" });\n }\n if (!this.unFocusable) {\n el.focus();\n }\n }\n clearHighlighted() {\n const highlightedEl = this.highlightedEl;\n if (!highlightedEl || !_isVisible(highlightedEl)) {\n return;\n }\n highlightedEl.classList.remove(this.activeClass);\n _setAriaSelected(highlightedEl, false);\n this.highlightedEl = null;\n }\n fireChangeEvent() {\n this.dispatchLocalEvent({ type: \"fieldValueChanged\" });\n this.fireItemSelected();\n }\n fireItemSelected() {\n this.dispatchLocalEvent({ type: \"selectedItem\" });\n }\n};\n\n// packages/ag-grid-community/src/widgets/agPickerField.css-GENERATED.ts\nvar agPickerFieldCSS = (\n /*css*/\n `.ag-picker-field-display{flex:1 1 auto}.ag-picker-field{align-items:center;display:flex}.ag-picker-field-icon{border:0;cursor:pointer;display:flex;margin:0;padding:0}.ag-picker-field-wrapper{background-color:var(--ag-picker-button-background-color);border:var(--ag-picker-button-border);border-radius:5px;min-height:max(var(--ag-list-item-height),calc(var(--ag-spacing)*4));overflow:hidden;&:disabled{opacity:.5}&.ag-picker-has-focus,&:focus-within{background-color:var(--ag-picker-button-focus-background-color);border:var(--ag-picker-button-focus-border);box-shadow:var(--ag-focus-shadow)}}`\n);\n\n// packages/ag-grid-community/src/widgets/agPickerField.ts\nvar AgPickerFieldElement = {\n tag: \"div\",\n cls: \"ag-picker-field\",\n role: \"presentation\",\n children: [\n { tag: \"div\", ref: \"eLabel\" },\n {\n tag: \"div\",\n ref: \"eWrapper\",\n cls: \"ag-wrapper ag-picker-field-wrapper ag-picker-collapsed\",\n children: [\n { tag: \"div\", ref: \"eDisplayField\", cls: \"ag-picker-field-display\" },\n { tag: \"div\", ref: \"eIcon\", cls: \"ag-picker-field-icon\", attrs: { \"aria-hidden\": \"true\" } }\n ]\n }\n ]\n};\nvar AgPickerField = class extends AgAbstractField {\n constructor(config) {\n super(config, config?.template || AgPickerFieldElement, config?.agComponents || [], config?.className);\n this.isPickerDisplayed = false;\n this.skipClick = false;\n this.pickerGap = 4;\n this.hideCurrentPicker = null;\n this.eLabel = RefPlaceholder;\n this.eWrapper = RefPlaceholder;\n this.eDisplayField = RefPlaceholder;\n this.eIcon = RefPlaceholder;\n this.registerCSS(agPickerFieldCSS);\n this.ariaRole = config?.ariaRole;\n this.onPickerFocusIn = this.onPickerFocusIn.bind(this);\n this.onPickerFocusOut = this.onPickerFocusOut.bind(this);\n if (!config) {\n return;\n }\n const { pickerGap, maxPickerHeight, variableWidth, minPickerWidth, maxPickerWidth } = config;\n if (pickerGap != null) {\n this.pickerGap = pickerGap;\n }\n this.variableWidth = !!variableWidth;\n if (maxPickerHeight != null) {\n this.setPickerMaxHeight(maxPickerHeight);\n }\n if (minPickerWidth != null) {\n this.setPickerMinWidth(minPickerWidth);\n }\n if (maxPickerWidth != null) {\n this.setPickerMaxWidth(maxPickerWidth);\n }\n }\n postConstruct() {\n super.postConstruct();\n this.setupAria();\n const displayId = `ag-${this.getCompId()}-display`;\n this.eDisplayField.setAttribute(\"id\", displayId);\n const ariaEl = this.getAriaElement();\n this.addManagedElementListeners(ariaEl, { keydown: this.onKeyDown.bind(this) });\n this.addManagedElementListeners(this.eLabel, { mousedown: this.onLabelOrWrapperMouseDown.bind(this) });\n this.addManagedElementListeners(this.eWrapper, { mousedown: this.onLabelOrWrapperMouseDown.bind(this) });\n const { pickerIcon, inputWidth } = this.config;\n if (pickerIcon) {\n const icon = _createIconNoSpan(pickerIcon, this.beans);\n if (icon) {\n this.eIcon.appendChild(icon);\n }\n }\n if (inputWidth != null) {\n this.setInputWidth(inputWidth);\n }\n }\n setupAria() {\n const ariaEl = this.getAriaElement();\n ariaEl.setAttribute(\"tabindex\", this.gos.get(\"tabIndex\").toString());\n _setAriaExpanded(ariaEl, false);\n if (this.ariaRole) {\n _setAriaRole(ariaEl, this.ariaRole);\n }\n }\n onLabelOrWrapperMouseDown(e) {\n if (e) {\n const focusableEl = this.getFocusableElement();\n if (focusableEl !== this.eWrapper && e?.target === focusableEl) {\n return;\n }\n e.preventDefault();\n this.getFocusableElement().focus();\n }\n if (this.skipClick) {\n this.skipClick = false;\n return;\n }\n if (this.isDisabled()) {\n return;\n }\n if (this.isPickerDisplayed) {\n this.hidePicker();\n } else {\n this.showPicker();\n }\n }\n onKeyDown(e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n e.preventDefault();\n this.onLabelOrWrapperMouseDown();\n break;\n case KeyCode.ESCAPE:\n if (this.isPickerDisplayed) {\n e.preventDefault();\n e.stopPropagation();\n if (this.hideCurrentPicker) {\n this.hideCurrentPicker();\n }\n }\n break;\n }\n }\n showPicker() {\n this.isPickerDisplayed = true;\n if (!this.pickerComponent) {\n this.pickerComponent = this.createPickerComponent();\n }\n const pickerGui = this.pickerComponent.getGui();\n pickerGui.addEventListener(\"focusin\", this.onPickerFocusIn);\n pickerGui.addEventListener(\"focusout\", this.onPickerFocusOut);\n this.hideCurrentPicker = this.renderAndPositionPicker();\n this.toggleExpandedStyles(true);\n }\n renderAndPositionPicker() {\n const ePicker = this.pickerComponent.getGui();\n if (!this.gos.get(\"suppressScrollWhenPopupsAreOpen\")) {\n [this.destroyMouseWheelFunc] = this.addManagedEventListeners({\n bodyScroll: () => {\n this.hidePicker();\n }\n });\n }\n const translate = this.getLocaleTextFunc();\n const {\n config: { pickerAriaLabelKey, pickerAriaLabelValue, modalPicker = true },\n maxPickerHeight,\n minPickerWidth,\n maxPickerWidth,\n variableWidth,\n beans,\n eWrapper\n } = this;\n const popupParams = {\n modal: modalPicker,\n eChild: ePicker,\n closeOnEsc: true,\n closedCallback: () => {\n const shouldRestoreFocus = _isNothingFocused(beans);\n this.beforeHidePicker();\n if (shouldRestoreFocus && this.isAlive()) {\n this.getFocusableElement().focus();\n }\n },\n ariaLabel: translate(pickerAriaLabelKey, pickerAriaLabelValue),\n anchorToElement: eWrapper\n };\n ePicker.style.position = \"absolute\";\n const popupSvc = beans.popupSvc;\n const addPopupRes = popupSvc.addPopup(popupParams);\n if (variableWidth) {\n if (minPickerWidth) {\n ePicker.style.minWidth = minPickerWidth;\n }\n ePicker.style.width = _formatSize(_getAbsoluteWidth(eWrapper));\n if (maxPickerWidth) {\n ePicker.style.maxWidth = maxPickerWidth;\n }\n } else {\n _setElementWidth(ePicker, maxPickerWidth ?? _getAbsoluteWidth(eWrapper));\n }\n const maxHeight = maxPickerHeight ?? `${_getInnerHeight(popupSvc.getPopupParent())}px`;\n ePicker.style.setProperty(\"max-height\", maxHeight);\n this.alignPickerToComponent();\n return addPopupRes.hideFunc;\n }\n alignPickerToComponent() {\n if (!this.pickerComponent) {\n return;\n }\n const {\n pickerGap,\n config: { pickerType },\n beans: { popupSvc, gos },\n eWrapper,\n pickerComponent\n } = this;\n const alignSide = gos.get(\"enableRtl\") ? \"right\" : \"left\";\n popupSvc.positionPopupByComponent({\n type: pickerType,\n eventSource: eWrapper,\n ePopup: pickerComponent.getGui(),\n position: \"under\",\n alignSide,\n keepWithinBounds: true,\n nudgeY: pickerGap\n });\n }\n beforeHidePicker() {\n if (this.destroyMouseWheelFunc) {\n this.destroyMouseWheelFunc();\n this.destroyMouseWheelFunc = void 0;\n }\n this.toggleExpandedStyles(false);\n const pickerGui = this.pickerComponent.getGui();\n pickerGui.removeEventListener(\"focusin\", this.onPickerFocusIn);\n pickerGui.removeEventListener(\"focusout\", this.onPickerFocusOut);\n this.isPickerDisplayed = false;\n this.pickerComponent = void 0;\n this.hideCurrentPicker = null;\n }\n toggleExpandedStyles(expanded) {\n if (!this.isAlive()) {\n return;\n }\n const ariaEl = this.getAriaElement();\n _setAriaExpanded(ariaEl, expanded);\n const classList = this.eWrapper.classList;\n classList.toggle(\"ag-picker-expanded\", expanded);\n classList.toggle(\"ag-picker-collapsed\", !expanded);\n }\n onPickerFocusIn() {\n this.togglePickerHasFocus(true);\n }\n onPickerFocusOut(e) {\n if (!this.pickerComponent?.getGui().contains(e.relatedTarget)) {\n this.togglePickerHasFocus(false);\n }\n }\n togglePickerHasFocus(focused) {\n if (!this.pickerComponent) {\n return;\n }\n this.eWrapper.classList.toggle(\"ag-picker-has-focus\", focused);\n }\n hidePicker() {\n this.hideCurrentPicker?.();\n }\n setInputWidth(width) {\n _setElementWidth(this.eWrapper, width);\n return this;\n }\n getFocusableElement() {\n return this.eWrapper;\n }\n setPickerGap(gap) {\n this.pickerGap = gap;\n return this;\n }\n setPickerMinWidth(width) {\n if (typeof width === \"number\") {\n width = `${width}px`;\n }\n this.minPickerWidth = width == null ? void 0 : width;\n return this;\n }\n setPickerMaxWidth(width) {\n if (typeof width === \"number\") {\n width = `${width}px`;\n }\n this.maxPickerWidth = width == null ? void 0 : width;\n return this;\n }\n setPickerMaxHeight(height) {\n if (typeof height === \"number\") {\n height = `${height}px`;\n }\n this.maxPickerHeight = height == null ? void 0 : height;\n return this;\n }\n destroy() {\n this.hidePicker();\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/widgets/agSelect.css-GENERATED.ts\nvar agSelectCSS = (\n /*css*/\n `.ag-select{align-items:center;display:flex;&.ag-disabled{opacity:.5}}:where(.ag-select){.ag-picker-field-wrapper{cursor:default}&.ag-disabled .ag-picker-field-wrapper:focus{box-shadow:none}&:not(.ag-cell-editor,.ag-label-align-top){min-height:var(--ag-list-item-height)}.ag-picker-field-display{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ag-picker-field-icon{align-items:center;display:flex}}:where(.ag-ltr) :where(.ag-select){.ag-picker-field-wrapper{padding-left:calc(var(--ag-cell-horizontal-padding)/2);padding-right:var(--ag-spacing)}}:where(.ag-rtl) :where(.ag-select){.ag-picker-field-wrapper{padding-left:var(--ag-spacing);padding-right:calc(var(--ag-cell-horizontal-padding)/2)}}`\n);\n\n// packages/ag-grid-community/src/widgets/agSelect.ts\nvar AgSelect = class extends AgPickerField {\n constructor(config) {\n super({\n pickerAriaLabelKey: \"ariaLabelSelectField\",\n pickerAriaLabelValue: \"Select Field\",\n pickerType: \"ag-list\",\n className: \"ag-select\",\n pickerIcon: \"selectOpen\",\n ariaRole: \"combobox\",\n ...config\n });\n this.registerCSS(agSelectCSS);\n }\n postConstruct() {\n this.tooltipFeature = this.createOptionalManagedBean(\n this.beans.registry.createDynamicBean(\"tooltipFeature\", false, {\n shouldDisplayTooltip: _shouldDisplayTooltip(() => this.eDisplayField),\n getGui: () => this.getGui()\n })\n );\n super.postConstruct();\n this.createListComponent();\n this.eWrapper.tabIndex = this.gos.get(\"tabIndex\");\n const { options, value, placeholder } = this.config;\n if (options != null) {\n this.addOptions(options);\n }\n if (value != null) {\n this.setValue(value, true);\n }\n if (placeholder && value == null) {\n this.eDisplayField.textContent = placeholder;\n }\n this.addManagedElementListeners(this.eWrapper, { focusout: this.onWrapperFocusOut.bind(this) });\n }\n onWrapperFocusOut(e) {\n if (!this.eWrapper.contains(e.relatedTarget)) {\n this.hidePicker();\n }\n }\n createListComponent() {\n const listComponent = this.createBean(new AgList(\"select\", true));\n this.listComponent = listComponent;\n listComponent.setParentComponent(this);\n const eListAriaEl = listComponent.getAriaElement();\n const listId = `ag-select-list-${listComponent.getCompId()}`;\n eListAriaEl.setAttribute(\"id\", listId);\n _setAriaControls(this.getAriaElement(), eListAriaEl);\n listComponent.addManagedElementListeners(listComponent.getGui(), {\n mousedown: (e) => {\n e?.preventDefault();\n }\n });\n listComponent.addManagedListeners(listComponent, {\n selectedItem: () => {\n this.hidePicker();\n this.dispatchLocalEvent({ type: \"selectedItem\" });\n },\n fieldValueChanged: () => {\n if (!this.listComponent) {\n return;\n }\n this.setValue(this.listComponent.getValue(), false, true);\n this.hidePicker();\n }\n });\n }\n createPickerComponent() {\n return this.listComponent;\n }\n onKeyDown(e) {\n const { key } = e;\n if (key === KeyCode.TAB) {\n this.hidePicker();\n }\n switch (key) {\n case KeyCode.ENTER:\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n e.preventDefault();\n if (this.isPickerDisplayed) {\n this.listComponent?.handleKeyDown(e);\n } else {\n super.onKeyDown(e);\n }\n break;\n case KeyCode.ESCAPE:\n super.onKeyDown(e);\n break;\n case KeyCode.SPACE:\n if (this.isPickerDisplayed) {\n e.preventDefault();\n } else {\n super.onKeyDown(e);\n }\n break;\n }\n }\n showPicker() {\n const listComponent = this.listComponent;\n if (!listComponent) {\n return;\n }\n super.showPicker();\n listComponent.refreshHighlighted();\n }\n addOptions(options) {\n options.forEach((option) => this.addOption(option));\n return this;\n }\n addOption(option) {\n this.listComponent.addOption(option);\n return this;\n }\n clearOptions() {\n this.listComponent?.clearOptions();\n this.setValue(void 0, true);\n return this;\n }\n setValue(value, silent, fromPicker) {\n const {\n listComponent,\n config: { placeholder },\n eDisplayField,\n tooltipFeature\n } = this;\n if (this.value === value || !listComponent) {\n return this;\n }\n if (!fromPicker) {\n listComponent.setValue(value, true);\n }\n const newValue = listComponent.getValue();\n if (newValue === this.getValue()) {\n return this;\n }\n let displayValue = listComponent.getDisplayValue();\n if (displayValue == null && placeholder) {\n displayValue = placeholder;\n }\n eDisplayField.textContent = displayValue;\n tooltipFeature?.setTooltipAndRefresh(displayValue ?? null);\n return super.setValue(value, silent);\n }\n destroy() {\n this.listComponent = this.destroyBean(this.listComponent);\n super.destroy();\n }\n};\nvar AgSelectSelector = {\n selector: \"AG-SELECT\",\n component: AgSelect\n};\n\n// packages/ag-grid-community/src/widgets/tabGuardCtrl.ts\nvar TabGuardClassNames = {\n TAB_GUARD: \"ag-tab-guard\",\n TAB_GUARD_TOP: \"ag-tab-guard-top\",\n TAB_GUARD_BOTTOM: \"ag-tab-guard-bottom\"\n};\nvar TabGuardCtrl = class extends BeanStub {\n constructor(params) {\n super();\n this.skipTabGuardFocus = false;\n this.forcingFocusOut = false;\n // Used when `isFocusableContainer` enabled\n this.allowFocus = false;\n const {\n comp,\n eTopGuard,\n eBottomGuard,\n focusTrapActive,\n forceFocusOutWhenTabGuardsAreEmpty,\n isFocusableContainer,\n focusInnerElement,\n onFocusIn,\n onFocusOut,\n shouldStopEventPropagation,\n onTabKeyDown,\n handleKeyDown,\n isEmpty,\n eFocusableElement\n } = params;\n this.comp = comp;\n this.eTopGuard = eTopGuard;\n this.eBottomGuard = eBottomGuard;\n this.providedFocusInnerElement = focusInnerElement;\n this.eFocusableElement = eFocusableElement;\n this.focusTrapActive = !!focusTrapActive;\n this.forceFocusOutWhenTabGuardsAreEmpty = !!forceFocusOutWhenTabGuardsAreEmpty;\n this.isFocusableContainer = !!isFocusableContainer;\n this.providedFocusIn = onFocusIn;\n this.providedFocusOut = onFocusOut;\n this.providedShouldStopEventPropagation = shouldStopEventPropagation;\n this.providedOnTabKeyDown = onTabKeyDown;\n this.providedHandleKeyDown = handleKeyDown;\n this.providedIsEmpty = isEmpty;\n }\n postConstruct() {\n this.createManagedBean(\n new ManagedFocusFeature(this.eFocusableElement, {\n shouldStopEventPropagation: () => this.shouldStopEventPropagation(),\n onTabKeyDown: (e) => this.onTabKeyDown(e),\n handleKeyDown: (e) => this.handleKeyDown(e),\n onFocusIn: (e) => this.onFocusIn(e),\n onFocusOut: (e) => this.onFocusOut(e)\n })\n );\n this.activateTabGuards();\n [this.eTopGuard, this.eBottomGuard].forEach(\n (guard) => this.addManagedElementListeners(guard, { focus: this.onFocus.bind(this) })\n );\n }\n handleKeyDown(e) {\n if (this.providedHandleKeyDown) {\n this.providedHandleKeyDown(e);\n }\n }\n tabGuardsAreActive() {\n return !!this.eTopGuard && this.eTopGuard.hasAttribute(\"tabIndex\");\n }\n shouldStopEventPropagation() {\n if (this.providedShouldStopEventPropagation) {\n return this.providedShouldStopEventPropagation();\n }\n return false;\n }\n activateTabGuards() {\n if (this.forcingFocusOut) {\n return;\n }\n const tabIndex = this.gos.get(\"tabIndex\");\n this.comp.setTabIndex(tabIndex.toString());\n }\n deactivateTabGuards() {\n this.comp.setTabIndex();\n }\n onFocus(e) {\n if (this.isFocusableContainer && !this.eFocusableElement.contains(e.relatedTarget)) {\n if (!this.allowFocus) {\n this.findNextElementOutsideAndFocus(e.target === this.eBottomGuard);\n return;\n }\n }\n if (this.skipTabGuardFocus) {\n this.skipTabGuardFocus = false;\n return;\n }\n if (this.forceFocusOutWhenTabGuardsAreEmpty) {\n const isEmpty = this.providedIsEmpty ? this.providedIsEmpty() : _findFocusableElements(this.eFocusableElement, \".ag-tab-guard\").length === 0;\n if (isEmpty) {\n this.findNextElementOutsideAndFocus(e.target === this.eBottomGuard);\n return;\n }\n }\n if (this.isFocusableContainer && this.eFocusableElement.contains(e.relatedTarget)) {\n return;\n }\n const fromBottom = e.target === this.eBottomGuard;\n const hasFocusedInnerElement = this.providedFocusInnerElement ? this.providedFocusInnerElement(fromBottom) : this.focusInnerElement(fromBottom);\n if (!hasFocusedInnerElement && this.forceFocusOutWhenTabGuardsAreEmpty) {\n this.findNextElementOutsideAndFocus(e.target === this.eBottomGuard);\n }\n }\n findNextElementOutsideAndFocus(up) {\n const eDocument = _getDocument(this.beans);\n const focusableEls = _findFocusableElements(eDocument.body, null, true);\n const index = focusableEls.indexOf(up ? this.eTopGuard : this.eBottomGuard);\n if (index === -1) {\n return;\n }\n let start;\n let end;\n if (up) {\n start = 0;\n end = index;\n } else {\n start = index + 1;\n end = focusableEls.length;\n }\n const focusableRange = focusableEls.slice(start, end);\n const targetTabIndex = this.gos.get(\"tabIndex\");\n focusableRange.sort((a, b) => {\n const indexA = parseInt(a.getAttribute(\"tabindex\") || \"0\");\n const indexB = parseInt(b.getAttribute(\"tabindex\") || \"0\");\n if (indexB === targetTabIndex) {\n return 1;\n }\n if (indexA === targetTabIndex) {\n return -1;\n }\n if (indexA === 0) {\n return 1;\n }\n if (indexB === 0) {\n return -1;\n }\n return indexA - indexB;\n });\n focusableRange[up ? focusableRange.length - 1 : 0]?.focus();\n }\n onFocusIn(e) {\n if (this.focusTrapActive || this.forcingFocusOut) {\n return;\n }\n if (this.providedFocusIn) {\n this.providedFocusIn(e);\n }\n if (!this.isFocusableContainer) {\n this.deactivateTabGuards();\n }\n }\n onFocusOut(e) {\n if (this.focusTrapActive) {\n return;\n }\n if (this.providedFocusOut) {\n this.providedFocusOut(e);\n }\n if (!this.eFocusableElement.contains(e.relatedTarget)) {\n this.activateTabGuards();\n }\n }\n onTabKeyDown(e) {\n if (this.providedOnTabKeyDown) {\n this.providedOnTabKeyDown(e);\n return;\n }\n if (this.focusTrapActive) {\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n const tabGuardsAreActive = this.tabGuardsAreActive();\n if (tabGuardsAreActive) {\n this.deactivateTabGuards();\n }\n const nextRoot = this.getNextFocusableElement(e.shiftKey);\n if (tabGuardsAreActive) {\n setTimeout(() => this.activateTabGuards(), 0);\n }\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n }\n focusInnerElement(fromBottom = false) {\n const focusable = _findFocusableElements(this.eFocusableElement);\n if (this.tabGuardsAreActive()) {\n focusable.splice(0, 1);\n focusable.splice(focusable.length - 1, 1);\n }\n if (!focusable.length) {\n return false;\n }\n focusable[fromBottom ? focusable.length - 1 : 0].focus({ preventScroll: true });\n return true;\n }\n getNextFocusableElement(backwards) {\n return _findNextFocusableElement(this.beans, this.eFocusableElement, false, backwards);\n }\n forceFocusOutOfContainer(up = false) {\n if (this.forcingFocusOut) {\n return;\n }\n const tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;\n this.activateTabGuards();\n this.skipTabGuardFocus = true;\n this.forcingFocusOut = true;\n tabGuardToFocus.focus();\n window.setTimeout(() => {\n this.forcingFocusOut = false;\n this.activateTabGuards();\n });\n }\n isTabGuard(element, bottom) {\n return element === this.eTopGuard && !bottom || element === this.eBottomGuard && (bottom ?? true);\n }\n setAllowFocus(allowFocus) {\n this.allowFocus = allowFocus;\n }\n};\n\n// packages/ag-grid-community/src/widgets/tabGuardFeature.ts\nvar TabGuardFeature = class extends BeanStub {\n constructor(comp) {\n super();\n this.comp = comp;\n }\n initialiseTabGuard(params) {\n this.eTopGuard = this.createTabGuard(\"top\");\n this.eBottomGuard = this.createTabGuard(\"bottom\");\n this.eFocusableElement = this.comp.getFocusableElement();\n const { eTopGuard, eBottomGuard, eFocusableElement } = this;\n const tabGuards = [eTopGuard, eBottomGuard];\n const compProxy = {\n setTabIndex: (tabIndex) => {\n tabGuards.forEach(\n (tabGuard) => tabIndex != null ? tabGuard.setAttribute(\"tabindex\", tabIndex) : tabGuard.removeAttribute(\"tabindex\")\n );\n }\n };\n this.addTabGuards(eTopGuard, eBottomGuard);\n const {\n focusTrapActive = false,\n onFocusIn,\n onFocusOut,\n focusInnerElement,\n handleKeyDown,\n onTabKeyDown,\n shouldStopEventPropagation,\n isEmpty,\n forceFocusOutWhenTabGuardsAreEmpty,\n isFocusableContainer\n } = params;\n this.tabGuardCtrl = this.createManagedBean(\n new TabGuardCtrl({\n comp: compProxy,\n focusTrapActive,\n eTopGuard,\n eBottomGuard,\n eFocusableElement,\n onFocusIn,\n onFocusOut,\n focusInnerElement,\n handleKeyDown,\n onTabKeyDown,\n shouldStopEventPropagation,\n isEmpty,\n forceFocusOutWhenTabGuardsAreEmpty,\n isFocusableContainer\n })\n );\n }\n getTabGuardCtrl() {\n return this.tabGuardCtrl;\n }\n createTabGuard(side) {\n const tabGuard = _getDocument(this.beans).createElement(\"div\");\n const cls = side === \"top\" ? TabGuardClassNames.TAB_GUARD_TOP : TabGuardClassNames.TAB_GUARD_BOTTOM;\n tabGuard.classList.add(TabGuardClassNames.TAB_GUARD, cls);\n _setAriaRole(tabGuard, \"presentation\");\n return tabGuard;\n }\n addTabGuards(topTabGuard, bottomTabGuard) {\n const eFocusableElement = this.eFocusableElement;\n eFocusableElement.insertAdjacentElement(\"afterbegin\", topTabGuard);\n eFocusableElement.insertAdjacentElement(\"beforeend\", bottomTabGuard);\n }\n removeAllChildrenExceptTabGuards() {\n const tabGuards = [this.eTopGuard, this.eBottomGuard];\n _clearElement(this.comp.getFocusableElement());\n this.addTabGuards(...tabGuards);\n }\n forceFocusOutOfContainer(up = false) {\n this.tabGuardCtrl.forceFocusOutOfContainer(up);\n }\n appendChild(appendChild, newChild, container) {\n if (!_isNodeOrElement(newChild)) {\n newChild = newChild.getGui();\n }\n const { eBottomGuard: bottomTabGuard } = this;\n if (bottomTabGuard) {\n bottomTabGuard.insertAdjacentElement(\"beforebegin\", newChild);\n } else {\n appendChild(newChild, container);\n }\n }\n destroy() {\n const { eTopGuard, eBottomGuard } = this;\n _removeFromParent(eTopGuard);\n _removeFromParent(eBottomGuard);\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/widgets/tabGuardComp.ts\nvar TabGuardComp = class extends Component {\n initialiseTabGuard(params) {\n this.tabGuardFeature = this.createManagedBean(new TabGuardFeature(this));\n this.tabGuardFeature.initialiseTabGuard(params);\n }\n forceFocusOutOfContainer(up = false) {\n this.tabGuardFeature.forceFocusOutOfContainer(up);\n }\n appendChild(newChild, container) {\n this.tabGuardFeature.appendChild(super.appendChild.bind(this), newChild, container);\n }\n};\n\n// packages/ag-grid-community/src/widgets/popupComponent.ts\nvar PopupComponent = class extends Component {\n isPopup() {\n return true;\n }\n setParentComponent(container) {\n container.addCssClass(\"ag-has-popup\");\n super.setParentComponent(container);\n }\n destroy() {\n const parentComp = this.parentComponent;\n const hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n parentComp.getGui().classList.remove(\"ag-has-popup\");\n }\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/widgets/touchListener.ts\nvar TouchListener = class {\n constructor(eElement, preventMouseClick = false) {\n this.DOUBLE_TAP_MILLIS = 500;\n this.destroyFuncs = [];\n this.touching = false;\n this.localEventService = new LocalEventService();\n this.preventMouseClick = preventMouseClick;\n const startListener = this.onTouchStart.bind(this);\n const moveListener = this.onTouchMove.bind(this);\n const endListener = this.onTouchEnd.bind(this);\n eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n eElement.addEventListener(\"touchend\", endListener, { passive: false });\n this.destroyFuncs.push(() => {\n eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n });\n }\n getActiveTouch(touchList) {\n for (let i = 0; i < touchList.length; i++) {\n const matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n }\n addEventListener(eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n onTouchStart(touchEvent) {\n if (this.touching) {\n return;\n }\n this.touchStart = touchEvent.touches[0];\n this.touching = true;\n this.moved = false;\n const touchStartCopy = this.touchStart;\n window.setTimeout(() => {\n const touchesMatch = this.touchStart === touchStartCopy;\n if (this.touching && touchesMatch && !this.moved) {\n this.moved = true;\n const event = {\n type: \"longTap\",\n touchStart: this.touchStart,\n touchEvent\n };\n this.localEventService.dispatchEvent(event);\n }\n }, 500);\n }\n onTouchMove(touchEvent) {\n if (!this.touching) {\n return;\n }\n const touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n const eventIsFarAway = !_areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n }\n onTouchEnd(touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n const event = {\n type: \"tap\",\n touchStart: this.touchStart\n };\n this.localEventService.dispatchEvent(event);\n this.checkForDoubleTap();\n }\n if (this.preventMouseClick && touchEvent.cancelable) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n }\n checkForDoubleTap() {\n const now = Date.now();\n if (this.lastTapTime && this.lastTapTime > 0) {\n const interval = now - this.lastTapTime;\n if (interval > this.DOUBLE_TAP_MILLIS) {\n const event = {\n type: \"doubleTap\",\n touchStart: this.touchStart\n };\n this.localEventService.dispatchEvent(event);\n this.lastTapTime = null;\n } else {\n this.lastTapTime = now;\n }\n } else {\n this.lastTapTime = now;\n }\n }\n destroy() {\n this.destroyFuncs.forEach((func) => func());\n }\n};\n\n// packages/ag-grid-community/src/interfaces/IRangeService.ts\nvar CellRangeType = /* @__PURE__ */ ((CellRangeType2) => {\n CellRangeType2[CellRangeType2[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType2[CellRangeType2[\"DIMENSION\"] = 1] = \"DIMENSION\";\n return CellRangeType2;\n})(CellRangeType || {});\n\n// packages/ag-grid-community/src/vanillaFrameworkOverrides.ts\nvar VanillaFrameworkOverrides = class {\n constructor(frameworkName = \"javascript\") {\n this.frameworkName = frameworkName;\n this.renderingEngine = \"vanilla\";\n this.batchFrameworkComps = false;\n this.wrapIncoming = (callback) => callback();\n this.wrapOutgoing = (callback) => callback();\n this.baseDocLink = `${BASE_URL}/${this.frameworkName}-data-grid`;\n setValidationDocLink(this.baseDocLink);\n }\n setInterval(action, timeout) {\n return new AgPromise((resolve) => {\n resolve(window.setInterval(action, timeout));\n });\n }\n // for Vanilla JS, we just add the event to the element\n addEventListener(element, type, listener, options) {\n let eventListenerOptions = {};\n if (typeof options === \"object\") {\n eventListenerOptions = options;\n } else if (typeof options === \"boolean\") {\n eventListenerOptions = { capture: options };\n }\n if (eventListenerOptions.passive == null) {\n const passive = getPassiveStateForEvent(type);\n if (passive != null) {\n eventListenerOptions.passive = passive;\n }\n }\n element.addEventListener(type, listener, eventListenerOptions);\n }\n frameworkComponent(_) {\n return null;\n }\n isFrameworkComponent(_) {\n return false;\n }\n getDocLink(path) {\n return `${this.baseDocLink}${path ? `/${path}` : \"\"}`;\n }\n};\n\n// packages/ag-grid-community/src/api/apiUtils.ts\nfunction createGridApi(context) {\n return {\n beanName: \"gridApi\",\n bean: context.getBean(\"apiFunctionSvc\").api\n };\n}\n\n// packages/ag-grid-community/src/context/gridBeanComparator.ts\nvar orderedCoreBeans = [\n // Validate license first\n \"licenseManager\",\n // core beans only\n \"environment\",\n \"eventSvc\",\n \"gos\",\n \"paginationAutoPageSizeSvc\",\n \"apiFunctionSvc\",\n \"gridApi\",\n \"registry\",\n \"agCompUtils\",\n \"userCompFactory\",\n \"rowContainerHeight\",\n \"horizontalResizeSvc\",\n \"localeSvc\",\n \"pinnedRowModel\",\n \"dragSvc\",\n \"colGroupSvc\",\n \"visibleCols\",\n \"popupSvc\",\n \"selectionSvc\",\n \"colFilter\",\n \"quickFilter\",\n \"filterManager\",\n \"colModel\",\n \"headerNavigation\",\n \"pageBounds\",\n \"pagination\",\n \"pageBoundsListener\",\n \"rowSpanSvc\",\n \"stickyRowSvc\",\n \"rowRenderer\",\n \"expressionSvc\",\n \"alignedGridsSvc\",\n \"navigation\",\n \"valueCache\",\n \"valueSvc\",\n \"autoWidthCalc\",\n \"filterMenuFactory\",\n \"dragAndDrop\",\n \"focusSvc\",\n \"cellNavigation\",\n \"cellStyles\",\n \"scrollVisibleSvc\",\n \"sortSvc\",\n \"colHover\",\n \"colAnimation\",\n \"autoColSvc\",\n \"selectionColSvc\",\n \"changeDetectionSvc\",\n \"animationFrameSvc\",\n \"undoRedo\",\n \"colDefFactory\",\n \"rowStyleSvc\",\n \"rowNodeBlockLoader\",\n \"rowNodeSorter\",\n \"ctrlsSvc\",\n \"pinnedCols\",\n \"dataTypeSvc\",\n \"syncSvc\",\n \"overlays\",\n \"stateSvc\",\n \"expansionSvc\",\n \"apiEventSvc\",\n \"ariaAnnounce\",\n \"menuSvc\",\n \"colMoves\",\n \"colAutosize\",\n \"colFlex\",\n \"colResize\",\n \"pivotColsSvc\",\n \"valueColsSvc\",\n \"rowGroupColsSvc\",\n \"funcColsSvc\",\n \"colNames\",\n \"colViewport\",\n \"pivotResultCols\",\n \"showRowGroupCols\",\n \"validation\"\n // Have validations run last\n];\nvar beanNamePosition = Object.fromEntries(\n orderedCoreBeans.map((beanName, index) => [beanName, index])\n);\nfunction gridBeanInitComparator(bean1, bean2) {\n const index1 = (bean1.beanName ? beanNamePosition[bean1.beanName] : void 0) ?? Number.MAX_SAFE_INTEGER;\n const index2 = (bean2.beanName ? beanNamePosition[bean2.beanName] : void 0) ?? Number.MAX_SAFE_INTEGER;\n return index1 - index2;\n}\nfunction gridBeanDestroyComparator(bean1, bean2) {\n return bean1?.beanName === \"gridDestroySvc\" ? -1 : 0;\n}\n\n// packages/ag-grid-community/src/headerRendering/rowContainer/headerRowContainerComp.ts\nvar PinnedLeftElement = { tag: \"div\", cls: \"ag-pinned-left-header\", role: \"rowgroup\" };\nvar PinnedRightElement = { tag: \"div\", cls: \"ag-pinned-right-header\", role: \"rowgroup\" };\nvar CenterElement = {\n tag: \"div\",\n cls: \"ag-header-viewport\",\n role: \"presentation\",\n attrs: { tabindex: \"-1\" },\n children: [{ tag: \"div\", ref: \"eCenterContainer\", cls: \"ag-header-container\", role: \"rowgroup\" }]\n};\nvar HeaderRowContainerComp = class extends Component {\n constructor(pinned) {\n super();\n this.eCenterContainer = RefPlaceholder;\n this.headerRowComps = {};\n this.rowCompsList = [];\n this.pinned = pinned;\n }\n postConstruct() {\n this.selectAndSetTemplate();\n const compProxy = {\n setDisplayed: (displayed) => this.setDisplayed(displayed),\n setCtrls: (ctrls) => this.setCtrls(ctrls),\n // only gets called for center section\n setCenterWidth: (width) => this.eCenterContainer.style.width = width,\n setViewportScrollLeft: (left) => this.getGui().scrollLeft = left,\n // only gets called for pinned sections\n setPinnedContainerWidth: (width) => {\n const eGui = this.getGui();\n eGui.style.width = width;\n eGui.style.maxWidth = width;\n eGui.style.minWidth = width;\n }\n };\n const ctrl = this.createManagedBean(new HeaderRowContainerCtrl(this.pinned));\n ctrl.setComp(compProxy, this.getGui());\n }\n selectAndSetTemplate() {\n const pinnedLeft = this.pinned == \"left\";\n const pinnedRight = this.pinned == \"right\";\n const template = pinnedLeft ? PinnedLeftElement : pinnedRight ? PinnedRightElement : CenterElement;\n this.setTemplate(template);\n this.eRowContainer = this.eCenterContainer !== RefPlaceholder ? this.eCenterContainer : this.getGui();\n }\n destroy() {\n this.setCtrls([]);\n super.destroy();\n }\n destroyRowComp(rowComp) {\n this.destroyBean(rowComp);\n this.eRowContainer.removeChild(rowComp.getGui());\n }\n setCtrls(ctrls) {\n const oldRowComps = this.headerRowComps;\n this.headerRowComps = {};\n this.rowCompsList = [];\n let prevGui;\n const appendEnsuringDomOrder = (rowComp) => {\n const eGui = rowComp.getGui();\n const notAlreadyIn = eGui.parentElement != this.eRowContainer;\n if (notAlreadyIn) {\n this.eRowContainer.appendChild(eGui);\n }\n if (prevGui) {\n _ensureDomOrder(this.eRowContainer, eGui, prevGui);\n }\n prevGui = eGui;\n };\n ctrls.forEach((ctrl) => {\n const ctrlId = ctrl.instanceId;\n const existingComp = oldRowComps[ctrlId];\n delete oldRowComps[ctrlId];\n const rowComp = existingComp ? existingComp : this.createBean(new HeaderRowComp(ctrl));\n this.headerRowComps[ctrlId] = rowComp;\n this.rowCompsList.push(rowComp);\n appendEnsuringDomOrder(rowComp);\n });\n Object.values(oldRowComps).forEach((c) => this.destroyRowComp(c));\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/gridHeaderComp.ts\nvar GridHeaderElement = { tag: \"div\", cls: \"ag-header\", role: \"presentation\" };\nvar GridHeaderComp = class extends Component {\n constructor() {\n super(GridHeaderElement);\n }\n postConstruct() {\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.addOrRemoveCssClass(cssClassName, on),\n setHeightAndMinHeight: (height) => {\n this.getGui().style.height = height;\n this.getGui().style.minHeight = height;\n }\n };\n const ctrl = this.createManagedBean(new GridHeaderCtrl());\n ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());\n const addContainer = (container) => {\n this.createManagedBean(container);\n this.appendChild(container);\n };\n addContainer(new HeaderRowContainerComp(\"left\"));\n addContainer(new HeaderRowContainerComp(null));\n addContainer(new HeaderRowContainerComp(\"right\"));\n }\n};\nvar GridHeaderSelector = {\n selector: \"AG-HEADER-ROOT\",\n component: GridHeaderComp\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellComp.ts\nvar CellComp = class extends Component {\n constructor(beans, cellCtrl, printLayout, eRow, editingRow) {\n super();\n this.cellCtrl = cellCtrl;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n this.rendererVersion = 0;\n this.editorVersion = 0;\n this.beans = beans;\n this.column = cellCtrl.column;\n this.rowNode = cellCtrl.rowNode;\n this.eRow = eRow;\n const cellDiv = _createElement({\n tag: \"div\",\n role: cellCtrl.getCellAriaRole(),\n attrs: {\n \"comp-id\": `${this.getCompId()}`,\n \"col-id\": cellCtrl.colIdSanitised\n }\n });\n this.eCell = cellDiv;\n let wrapperDiv;\n if (cellCtrl.isCellSpanning()) {\n wrapperDiv = _createElement({\n tag: \"div\",\n cls: \"ag-spanned-cell-wrapper\",\n role: \"presentation\"\n });\n wrapperDiv.appendChild(cellDiv);\n this.setTemplateFromElement(wrapperDiv);\n } else {\n this.setTemplateFromElement(cellDiv);\n }\n this.cellCssClassManager = new CssClassManager(() => cellDiv);\n this.forceWrapper = cellCtrl.isForceWrapper();\n this.refreshWrapper(false);\n const compProxy = {\n addOrRemoveCssClass: (cssClassName, on) => this.cellCssClassManager.addOrRemoveCssClass(cssClassName, on),\n setUserStyles: (styles) => _addStylesToElement(cellDiv, styles),\n getFocusableElement: () => cellDiv,\n setIncludeSelection: (include) => this.includeSelection = include,\n setIncludeRowDrag: (include) => this.includeRowDrag = include,\n setIncludeDndSource: (include) => this.includeDndSource = include,\n setRenderDetails: (compDetails, valueToDisplay, force) => this.setRenderDetails(compDetails, valueToDisplay, force),\n setEditDetails: (compDetails, popup, position) => this.setEditDetails(compDetails, popup, position),\n getCellEditor: () => this.cellEditor || null,\n getCellRenderer: () => this.cellRenderer || null,\n getParentOfValue: () => this.getParentOfValue()\n };\n cellCtrl.setComp(compProxy, cellDiv, wrapperDiv, this.eCellWrapper, printLayout, editingRow, void 0);\n }\n getParentOfValue() {\n return this.eCellValue ?? this.eCellWrapper ?? this.eCell;\n }\n setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance) {\n const isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;\n if (isInlineEditing) {\n return;\n }\n this.firstRender = this.firstRender == null;\n const controlWrapperChanged = this.refreshWrapper(false);\n this.refreshEditStyles(false);\n if (compDetails) {\n const neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;\n const cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);\n if (!cellRendererRefreshSuccessful) {\n this.destroyRenderer();\n this.createCellRendererInstance(compDetails);\n }\n } else {\n this.destroyRenderer();\n this.insertValueWithoutCellRenderer(valueToDisplay);\n }\n }\n setEditDetails(compDetails, popup, position) {\n if (compDetails) {\n this.createCellEditorInstance(compDetails, popup, position);\n } else {\n this.destroyEditor();\n }\n }\n removeControls() {\n const context = this.beans.context;\n this.checkboxSelectionComp = context.destroyBean(this.checkboxSelectionComp);\n this.dndSourceComp = context.destroyBean(this.dndSourceComp);\n this.rowDraggingComp = context.destroyBean(this.rowDraggingComp);\n }\n // returns true if wrapper was changed\n refreshWrapper(editing) {\n const providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;\n const usingWrapper = providingControls || this.forceWrapper;\n const putWrapperIn = usingWrapper && this.eCellWrapper == null;\n if (putWrapperIn) {\n this.eCellWrapper = _createElement({ tag: \"div\", cls: \"ag-cell-wrapper\", role: \"presentation\" });\n this.eCell.appendChild(this.eCellWrapper);\n }\n const takeWrapperOut = !usingWrapper && this.eCellWrapper != null;\n if (takeWrapperOut) {\n _removeFromParent(this.eCellWrapper);\n this.eCellWrapper = void 0;\n }\n this.cellCssClassManager.addOrRemoveCssClass(\"ag-cell-value\", !usingWrapper);\n const usingCellValue = !editing && usingWrapper;\n const putCellValueIn = usingCellValue && this.eCellValue == null;\n if (putCellValueIn) {\n this.eCellValue = _createElement({ tag: \"span\", cls: \"ag-cell-value\", role: \"presentation\" });\n this.eCellWrapper.appendChild(this.eCellValue);\n }\n const takeCellValueOut = !usingCellValue && this.eCellValue != null;\n if (takeCellValueOut) {\n _removeFromParent(this.eCellValue);\n this.eCellValue = void 0;\n }\n const templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;\n if (templateChanged) {\n this.removeControls();\n }\n if (!editing && providingControls) {\n this.addControls();\n }\n return templateChanged;\n }\n addControls() {\n const { cellCtrl, eCellWrapper, eCellValue, includeRowDrag, includeDndSource, includeSelection } = this;\n const insertBefore = (comp) => {\n if (comp) {\n eCellWrapper.insertBefore(comp.getGui(), eCellValue);\n }\n };\n if (includeRowDrag && this.rowDraggingComp == null) {\n this.rowDraggingComp = cellCtrl.createRowDragComp();\n insertBefore(this.rowDraggingComp);\n }\n if (includeDndSource && this.dndSourceComp == null) {\n this.dndSourceComp = cellCtrl.createDndSource();\n insertBefore(this.dndSourceComp);\n }\n if (includeSelection && this.checkboxSelectionComp == null) {\n this.checkboxSelectionComp = cellCtrl.createSelectionCheckbox();\n insertBefore(this.checkboxSelectionComp);\n }\n }\n createCellEditorInstance(compDetails, popup, position) {\n const versionCopy = this.editorVersion;\n const cellEditorPromise = compDetails.newAgStackInstance();\n const { params } = compDetails;\n cellEditorPromise.then((c) => this.afterCellEditorCreated(versionCopy, c, params, popup, position));\n const cellEditorAsync = _missing(this.cellEditor);\n if (cellEditorAsync && params.cellStartedEdit) {\n this.cellCtrl.focusCell(true);\n }\n }\n insertValueWithoutCellRenderer(valueToDisplay) {\n const eParent = this.getParentOfValue();\n _clearElement(eParent);\n const escapedValue = valueToDisplay != null ? _escapeString(valueToDisplay, true) : null;\n if (escapedValue != null) {\n eParent.textContent = escapedValue;\n }\n }\n destroyRenderer() {\n const { context } = this.beans;\n this.cellRenderer = context.destroyBean(this.cellRenderer);\n _removeFromParent(this.cellRendererGui);\n this.cellRendererGui = null;\n this.rendererVersion++;\n }\n destroyEditor() {\n const { context } = this.beans;\n const recoverFocus = this.cellEditorPopupWrapper?.getGui().contains(_getActiveDomElement(this.beans)) || this.cellCtrl.hasBrowserFocus();\n if (recoverFocus) {\n this.eCell.focus({ preventScroll: true });\n }\n this.hideEditorPopup?.();\n this.hideEditorPopup = void 0;\n this.cellEditor = context.destroyBean(this.cellEditor);\n this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);\n _removeFromParent(this.cellEditorGui);\n this.cellEditorGui = null;\n this.editorVersion++;\n }\n refreshCellRenderer(compClassAndParams) {\n if (this.cellRenderer?.refresh == null) {\n return false;\n }\n if (this.cellRendererClass !== compClassAndParams.componentClass) {\n return false;\n }\n const result = this.cellRenderer.refresh(compClassAndParams.params);\n return result === true || result === void 0;\n }\n createCellRendererInstance(compDetails) {\n const displayComponentVersionCopy = this.rendererVersion;\n const { componentClass } = compDetails;\n const createCellRendererFunc = () => {\n const staleTask = this.rendererVersion !== displayComponentVersionCopy || !this.isAlive();\n if (staleTask) {\n return;\n }\n const componentPromise = compDetails.newAgStackInstance();\n const callback = this.afterCellRendererCreated.bind(this, displayComponentVersionCopy, componentClass);\n componentPromise?.then(callback);\n };\n const { animationFrameSvc } = this.beans;\n if (animationFrameSvc?.active && this.firstRender) {\n animationFrameSvc.createTask(\n createCellRendererFunc,\n this.rowNode.rowIndex,\n \"p2\",\n compDetails.componentFromFramework\n );\n } else {\n createCellRendererFunc();\n }\n }\n afterCellRendererCreated(cellRendererVersion, cellRendererClass, cellRenderer) {\n const staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;\n if (staleTask) {\n this.beans.context.destroyBean(cellRenderer);\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererClass = cellRendererClass;\n const cellGui = cellRenderer.getGui();\n this.cellRendererGui = cellGui;\n if (cellGui != null) {\n const eParent = this.getParentOfValue();\n _clearElement(eParent);\n eParent.appendChild(cellGui);\n }\n }\n afterCellEditorCreated(requestVersion, cellEditor, params, popup, position) {\n const staleComp = requestVersion !== this.editorVersion;\n const { context } = this.beans;\n if (staleComp) {\n context.destroyBean(cellEditor);\n return;\n }\n const editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n if (editingCancelledByUserComp) {\n context.destroyBean(cellEditor);\n this.cellCtrl.stopEditing(true);\n return;\n }\n if (!cellEditor.getGui) {\n _warn(97, { colId: this.column.getId() });\n context.destroyBean(cellEditor);\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorGui = cellEditor.getGui();\n const cellEditorInPopup = popup || cellEditor.isPopup !== void 0 && cellEditor.isPopup();\n if (cellEditorInPopup) {\n this.addPopupCellEditor(params, position);\n } else {\n this.addInCellEditor();\n }\n this.refreshEditStyles(true, cellEditorInPopup);\n cellEditor.afterGuiAttached?.();\n this.cellCtrl.cellEditorAttached();\n }\n refreshEditStyles(editing, isPopup) {\n const { cellCssClassManager } = this;\n cellCssClassManager.addOrRemoveCssClass(\"ag-cell-inline-editing\", editing && !isPopup);\n cellCssClassManager.addOrRemoveCssClass(\"ag-cell-popup-editing\", editing && !!isPopup);\n cellCssClassManager.addOrRemoveCssClass(\"ag-cell-not-inline-editing\", !editing || !!isPopup);\n this.cellCtrl.setInlineEditingCss();\n }\n addInCellEditor() {\n const { eCell } = this;\n if (eCell.contains(_getActiveDomElement(this.beans))) {\n eCell.focus();\n }\n this.destroyRenderer();\n this.refreshWrapper(true);\n _clearElement(this.getParentOfValue());\n if (this.cellEditorGui) {\n const eParent = this.getParentOfValue();\n eParent.appendChild(this.cellEditorGui);\n }\n }\n addPopupCellEditor(params, position) {\n const { gos, context, editSvc, popupSvc, localeSvc } = this.beans;\n if (gos.get(\"editType\") === \"fullRow\") {\n _warn(98);\n }\n const cellEditor = this.cellEditor;\n this.cellEditorPopupWrapper = context.createBean(editSvc.createPopupEditorWrapper(params));\n const ePopupGui = this.cellEditorPopupWrapper.getGui();\n if (this.cellEditorGui) {\n ePopupGui.appendChild(this.cellEditorGui);\n }\n const useModelPopup = gos.get(\"stopEditingWhenCellsLoseFocus\");\n const positionToUse = position != null ? position : cellEditor.getPopupPosition?.() ?? \"over\";\n const isRtl = gos.get(\"enableRtl\");\n const positionParams = {\n ePopup: ePopupGui,\n column: this.column,\n rowNode: this.rowNode,\n type: \"popupCellEditor\",\n eventSource: this.eCell,\n position: positionToUse,\n alignSide: isRtl ? \"right\" : \"left\",\n keepWithinBounds: true\n };\n const positionCallback = popupSvc.positionPopupByComponent.bind(popupSvc, positionParams);\n const translate = _getLocaleTextFunc(localeSvc);\n const addPopupRes = popupSvc.addPopup({\n modal: useModelPopup,\n eChild: ePopupGui,\n closeOnEsc: true,\n closedCallback: () => {\n this.cellCtrl.onPopupEditorClosed();\n },\n anchorToElement: this.eCell,\n positionCallback,\n ariaLabel: translate(\"ariaLabelCellEditor\", \"Cell Editor\")\n });\n if (addPopupRes) {\n this.hideEditorPopup = addPopupRes.hideFunc;\n }\n }\n detach() {\n this.eRow.removeChild(this.getGui());\n }\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n //\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n destroy() {\n this.cellCtrl.stopEditing();\n this.destroyRenderer();\n this.destroyEditor();\n this.removeControls();\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/rendering/row/rowComp.ts\nvar RowComp = class extends Component {\n constructor(ctrl, beans, containerType) {\n super();\n this.cellComps = /* @__PURE__ */ new Map();\n this.beans = beans;\n this.rowCtrl = ctrl;\n const rowDiv = _createElement({ tag: \"div\", role: \"row\", attrs: { \"comp-id\": `${this.getCompId()}` } });\n this.setInitialStyle(rowDiv, containerType);\n this.setTemplateFromElement(rowDiv);\n const style = rowDiv.style;\n this.domOrder = this.rowCtrl.getDomOrder();\n const compProxy = {\n setDomOrder: (domOrder) => this.domOrder = domOrder,\n setCellCtrls: (cellCtrls) => this.setCellCtrls(cellCtrls),\n showFullWidth: (compDetails) => this.showFullWidth(compDetails),\n getFullWidthCellRenderer: () => this.fullWidthCellRenderer,\n addOrRemoveCssClass: (name, on) => this.addOrRemoveCssClass(name, on),\n setUserStyles: (styles) => _addStylesToElement(rowDiv, styles),\n setTop: (top) => style.top = top,\n setTransform: (transform) => style.transform = transform,\n setRowIndex: (rowIndex) => rowDiv.setAttribute(\"row-index\", rowIndex),\n setRowId: (rowId) => rowDiv.setAttribute(\"row-id\", rowId),\n setRowBusinessKey: (businessKey) => rowDiv.setAttribute(\"row-business-key\", businessKey),\n refreshFullWidth: (getUpdatedParams) => this.fullWidthCellRenderer?.refresh?.(getUpdatedParams()) ?? false\n };\n ctrl.setComp(compProxy, this.getGui(), containerType, void 0);\n this.addDestroyFunc(() => {\n ctrl.unsetComp(containerType);\n });\n }\n setInitialStyle(container, containerType) {\n const transform = this.rowCtrl.getInitialTransform(containerType);\n if (transform) {\n container.style.setProperty(\"transform\", transform);\n } else {\n const top = this.rowCtrl.getInitialRowTop(containerType);\n if (top) {\n container.style.setProperty(\"top\", top);\n }\n }\n }\n showFullWidth(compDetails) {\n const callback = (cellRenderer) => {\n if (this.isAlive()) {\n const eGui = cellRenderer.getGui();\n this.getGui().appendChild(eGui);\n this.rowCtrl.setupDetailRowAutoHeight(eGui);\n this.setFullWidthRowComp(cellRenderer);\n } else {\n this.beans.context.destroyBean(cellRenderer);\n }\n };\n const res = compDetails.newAgStackInstance();\n res.then(callback);\n }\n setCellCtrls(cellCtrls) {\n const cellsToRemove = new Map(this.cellComps);\n for (const cellCtrl of cellCtrls) {\n const key = cellCtrl.instanceId;\n if (!this.cellComps.has(key)) {\n this.newCellComp(cellCtrl);\n } else {\n cellsToRemove.delete(key);\n }\n }\n this.destroyCells(cellsToRemove);\n this.ensureDomOrder(cellCtrls);\n }\n ensureDomOrder(cellCtrls) {\n if (!this.domOrder) {\n return;\n }\n const elementsInOrder = [];\n for (const cellCtrl of cellCtrls) {\n const cellComp = this.cellComps.get(cellCtrl.instanceId);\n if (cellComp) {\n elementsInOrder.push(cellComp.getGui());\n }\n }\n _setDomChildOrder(this.getGui(), elementsInOrder);\n }\n newCellComp(cellCtrl) {\n const cellComp = new CellComp(\n this.beans,\n cellCtrl,\n this.rowCtrl.printLayout,\n this.getGui(),\n this.rowCtrl.editing\n );\n this.cellComps.set(cellCtrl.instanceId, cellComp);\n this.getGui().appendChild(cellComp.getGui());\n }\n destroy() {\n super.destroy();\n this.destroyCells(this.cellComps);\n }\n setFullWidthRowComp(fullWidthRowComponent) {\n this.fullWidthCellRenderer = fullWidthRowComponent;\n this.addDestroyFunc(() => {\n this.fullWidthCellRenderer = this.beans.context.destroyBean(this.fullWidthCellRenderer);\n });\n }\n destroyCells(cellComps) {\n for (const cellComp of cellComps.values()) {\n if (!cellComp) {\n return;\n }\n const instanceId = cellComp.cellCtrl.instanceId;\n if (this.cellComps.get(instanceId) !== cellComp) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n this.cellComps.delete(instanceId);\n }\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/rowContainerComp.ts\nfunction getElementParams(name, options, beans) {\n const isCellSpanning = !!beans.gos.get(\"enableCellSpan\") && !!options.getSpannedRowCtrls;\n const eContainerElement = {\n tag: \"div\",\n ref: \"eContainer\",\n cls: _getRowContainerClass(name),\n role: \"rowgroup\"\n };\n if (options.type === \"center\" || isCellSpanning) {\n const eSpannedContainerElement = {\n tag: \"div\",\n ref: \"eSpannedContainer\",\n cls: `ag-spanning-container ${_getRowSpanContainerClass(name)}`,\n role: \"rowgroup\"\n };\n return {\n tag: \"div\",\n ref: \"eViewport\",\n cls: `ag-viewport ${_getRowViewportClass(name)}`,\n role: \"presentation\",\n children: [eContainerElement, isCellSpanning ? eSpannedContainerElement : null]\n };\n }\n return eContainerElement;\n}\nvar RowContainerComp = class extends Component {\n constructor(params) {\n super();\n this.eViewport = RefPlaceholder;\n this.eContainer = RefPlaceholder;\n this.eSpannedContainer = RefPlaceholder;\n this.rowCompsNoSpan = {};\n this.rowCompsWithSpan = {};\n this.name = params?.name;\n this.options = _getRowContainerOptions(this.name);\n }\n postConstruct() {\n this.setTemplate(getElementParams(this.name, this.options, this.beans));\n const compProxy = {\n setHorizontalScroll: (offset) => this.eViewport.scrollLeft = offset,\n setViewportHeight: (height) => this.eViewport.style.height = height,\n setRowCtrls: ({ rowCtrls }) => this.setRowCtrls(rowCtrls),\n setSpannedRowCtrls: (rowCtrls) => this.setRowCtrls(rowCtrls, true),\n setDomOrder: (domOrder) => {\n this.domOrder = domOrder;\n },\n setContainerWidth: (width) => {\n this.eContainer.style.width = width;\n if (this.eSpannedContainer) {\n this.eSpannedContainer.style.width = width;\n }\n },\n setOffsetTop: (offset) => {\n const top = `translateY(${offset})`;\n this.eContainer.style.transform = top;\n if (this.eSpannedContainer) {\n this.eSpannedContainer.style.transform = top;\n }\n }\n };\n const ctrl = this.createManagedBean(new RowContainerCtrl(this.name));\n ctrl.setComp(compProxy, this.eContainer, this.eSpannedContainer, this.eViewport);\n }\n destroy() {\n this.setRowCtrls([]);\n this.setRowCtrls([], true);\n super.destroy();\n this.lastPlacedElement = null;\n }\n setRowCtrls(rowCtrls, spanContainer) {\n const { beans, options } = this;\n const container = spanContainer ? this.eSpannedContainer : this.eContainer;\n const oldRows = spanContainer ? { ...this.rowCompsWithSpan } : { ...this.rowCompsNoSpan };\n const newComps = {};\n if (spanContainer) {\n this.rowCompsWithSpan = newComps;\n } else {\n this.rowCompsNoSpan = newComps;\n }\n this.lastPlacedElement = null;\n const orderedRows = [];\n for (const rowCtrl of rowCtrls) {\n const instanceId = rowCtrl.instanceId;\n const existingRowComp = oldRows[instanceId];\n let rowComp;\n if (existingRowComp) {\n rowComp = existingRowComp;\n delete oldRows[instanceId];\n } else {\n if (!rowCtrl.rowNode.displayed) {\n continue;\n }\n rowComp = new RowComp(rowCtrl, beans, options.type);\n }\n newComps[instanceId] = rowComp;\n orderedRows.push([rowComp, !existingRowComp]);\n }\n this.removeOldRows(Object.values(oldRows), container);\n this.addRowNodes(orderedRows, container);\n }\n addRowNodes(rows, container) {\n const { domOrder } = this;\n for (const [rowComp, isNew] of rows) {\n const eGui = rowComp.getGui();\n if (!domOrder) {\n if (isNew) {\n container.appendChild(eGui);\n }\n } else {\n this.ensureDomOrder(eGui, container);\n }\n }\n }\n removeOldRows(rowComps, container) {\n for (const oldRowComp of rowComps) {\n container.removeChild(oldRowComp.getGui());\n oldRowComp.destroy();\n }\n }\n ensureDomOrder(eRow, container) {\n _ensureDomOrder(container, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n};\nvar RowContainerSelector = {\n selector: \"AG-ROW-CONTAINER\",\n component: RowContainerComp\n};\n\n// packages/ag-grid-community/src/gridBodyComp/gridBodyComp.ts\nfunction makeRowContainers(paramsMap, names) {\n return names.map((name) => {\n const refName = `e${name[0].toUpperCase() + name.substring(1)}RowContainer`;\n paramsMap[refName] = { name };\n return {\n tag: \"ag-row-container\",\n ref: refName,\n attrs: { name }\n };\n });\n}\nfunction getGridBodyTemplate(includeOverlay) {\n const paramsMap = {};\n const elementParams = {\n tag: \"div\",\n ref: \"eGridRoot\",\n cls: \"ag-root ag-unselectable\",\n children: [\n { tag: \"ag-header-root\" },\n {\n tag: \"div\",\n ref: \"eTop\",\n cls: \"ag-floating-top\",\n role: \"presentation\",\n children: makeRowContainers(paramsMap, [\"topLeft\", \"topCenter\", \"topRight\", \"topFullWidth\"])\n },\n {\n tag: \"div\",\n ref: \"eBody\",\n cls: \"ag-body\",\n role: \"presentation\",\n children: [\n {\n tag: \"div\",\n ref: \"eBodyViewport\",\n cls: \"ag-body-viewport\",\n role: \"presentation\",\n children: makeRowContainers(paramsMap, [\"left\", \"center\", \"right\", \"fullWidth\"])\n },\n { tag: \"ag-fake-vertical-scroll\" }\n ]\n },\n {\n tag: \"div\",\n ref: \"eStickyTop\",\n cls: \"ag-sticky-top\",\n role: \"presentation\",\n children: makeRowContainers(paramsMap, [\n \"stickyTopLeft\",\n \"stickyTopCenter\",\n \"stickyTopRight\",\n \"stickyTopFullWidth\"\n ])\n },\n {\n tag: \"div\",\n ref: \"eStickyBottom\",\n cls: \"ag-sticky-bottom\",\n role: \"presentation\",\n children: makeRowContainers(paramsMap, [\n \"stickyBottomLeft\",\n \"stickyBottomCenter\",\n \"stickyBottomRight\",\n \"stickyBottomFullWidth\"\n ])\n },\n {\n tag: \"div\",\n ref: \"eBottom\",\n cls: \"ag-floating-bottom\",\n role: \"presentation\",\n children: makeRowContainers(paramsMap, [\n \"bottomLeft\",\n \"bottomCenter\",\n \"bottomRight\",\n \"bottomFullWidth\"\n ])\n },\n { tag: \"ag-fake-horizontal-scroll\" },\n includeOverlay ? { tag: \"ag-overlay-wrapper\" } : null\n ]\n };\n return { paramsMap, elementParams };\n}\nvar GridBodyComp = class extends Component {\n constructor() {\n super(...arguments);\n this.eGridRoot = RefPlaceholder;\n this.eBodyViewport = RefPlaceholder;\n this.eStickyTop = RefPlaceholder;\n this.eStickyBottom = RefPlaceholder;\n this.eTop = RefPlaceholder;\n this.eBottom = RefPlaceholder;\n this.eBody = RefPlaceholder;\n }\n postConstruct() {\n const { overlays, rangeSvc } = this.beans;\n const overlaySelector = overlays?.getOverlayWrapperSelector();\n const { paramsMap, elementParams } = getGridBodyTemplate(!!overlaySelector);\n this.setTemplate(\n elementParams,\n [\n ...overlaySelector ? [overlaySelector] : [],\n FakeHScrollSelector,\n FakeVScrollSelector,\n GridHeaderSelector,\n RowContainerSelector\n ],\n paramsMap\n );\n const setHeight = (height, element) => {\n const heightString = `${height}px`;\n element.style.minHeight = heightString;\n element.style.height = heightString;\n };\n const compProxy = {\n setRowAnimationCssOnBodyViewport: (cssClass, animate) => this.setRowAnimationCssOnBodyViewport(cssClass, animate),\n setColumnCount: (count) => _setAriaColCount(this.getGui(), count),\n setRowCount: (count) => _setAriaRowCount(this.getGui(), count),\n setTopHeight: (height) => setHeight(height, this.eTop),\n setBottomHeight: (height) => setHeight(height, this.eBottom),\n setTopDisplay: (display) => this.eTop.style.display = display,\n setBottomDisplay: (display) => this.eBottom.style.display = display,\n setStickyTopHeight: (height) => this.eStickyTop.style.height = height,\n setStickyTopTop: (top) => this.eStickyTop.style.top = top,\n setStickyTopWidth: (width) => this.eStickyTop.style.width = width,\n setStickyBottomHeight: (height) => {\n this.eStickyBottom.style.height = height;\n this.eStickyBottom.classList.toggle(\"ag-invisible\", height === \"0px\");\n },\n setStickyBottomBottom: (bottom) => this.eStickyBottom.style.bottom = bottom,\n setStickyBottomWidth: (width) => this.eStickyBottom.style.width = width,\n setColumnMovingCss: (cssClass, flag) => this.addOrRemoveCssClass(cssClass, flag),\n updateLayoutClasses: (cssClass, params) => {\n const classLists = [this.eBodyViewport.classList, this.eBody.classList];\n for (const classList of classLists) {\n classList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n classList.toggle(LayoutCssClasses.NORMAL, params.normal);\n classList.toggle(LayoutCssClasses.PRINT, params.print);\n }\n this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n },\n setAlwaysVerticalScrollClass: (cssClass, on) => this.eBodyViewport.classList.toggle(CSS_CLASS_FORCE_VERTICAL_SCROLL, on),\n registerBodyViewportResizeListener: (listener) => {\n const unsubscribeFromResize = _observeResize(this.beans, this.eBodyViewport, listener);\n this.addDestroyFunc(() => unsubscribeFromResize());\n },\n setPinnedTopBottomOverflowY: (overflow) => this.eTop.style.overflowY = this.eBottom.style.overflowY = overflow,\n setCellSelectableCss: (cssClass, selectable) => {\n [this.eTop, this.eBodyViewport, this.eBottom].forEach(\n (ct) => ct.classList.toggle(cssClass, selectable)\n );\n },\n setBodyViewportWidth: (width) => this.eBodyViewport.style.width = width,\n setGridRootRole: (role) => _setAriaRole(this.eGridRoot, role)\n };\n this.ctrl = this.createManagedBean(new GridBodyCtrl());\n this.ctrl.setComp(\n compProxy,\n this.getGui(),\n this.eBodyViewport,\n this.eTop,\n this.eBottom,\n this.eStickyTop,\n this.eStickyBottom\n );\n if (rangeSvc && _isCellSelectionEnabled(this.gos) || _isMultiRowSelection(this.gos)) {\n _setAriaMultiSelectable(this.getGui(), true);\n }\n }\n setRowAnimationCssOnBodyViewport(cssClass, animateRows) {\n const bodyViewportClassList = this.eBodyViewport.classList;\n bodyViewportClassList.toggle(\"ag-row-animation\", animateRows);\n bodyViewportClassList.toggle(\"ag-row-no-animation\", !animateRows);\n }\n};\nvar GridBodySelector = {\n selector: \"AG-GRID-BODY\",\n component: GridBodyComp\n};\n\n// packages/ag-grid-community/src/gridComp/gridCtrl.ts\nvar GridCtrl = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.additionalFocusableContainers = /* @__PURE__ */ new Set();\n }\n setComp(view, eGridDiv, eGui) {\n this.view = view;\n this.eGridHostDiv = eGridDiv;\n this.eGui = eGui;\n this.eGui.setAttribute(\"grid-id\", this.beans.context.getGridId());\n const { dragAndDrop, ctrlsSvc } = this.beans;\n dragAndDrop?.registerGridDropTarget(() => this.eGui, this);\n _stampTopLevelGridCompWithGridInstance(this.gos, eGridDiv);\n this.createManagedBean(new LayoutFeature(this.view));\n this.view.setRtlClass(this.gos.get(\"enableRtl\") ? \"ag-rtl\" : \"ag-ltr\");\n const unsubscribeFromResize = _observeResize(this.beans, this.eGridHostDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(() => unsubscribeFromResize());\n ctrlsSvc.register(\"gridCtrl\", this);\n }\n isDetailGrid() {\n const el = _findTabbableParent(this.getGui());\n return el?.getAttribute(\"row-id\")?.startsWith(\"detail\") || false;\n }\n getOptionalSelectors() {\n const beans = this.beans;\n return {\n paginationSelector: beans.pagination?.getPaginationSelector(),\n gridHeaderDropZonesSelector: beans.registry.getSelector(\"AG-GRID-HEADER-DROP-ZONES\"),\n sideBarSelector: beans.sideBar?.getSelector(),\n statusBarSelector: beans.registry?.getSelector(\"AG-STATUS-BAR\"),\n watermarkSelector: beans.licenseManager?.getWatermarkSelector()\n };\n }\n onGridSizeChanged() {\n this.eventSvc.dispatchEvent({\n type: \"gridSizeChanged\",\n clientWidth: this.eGridHostDiv.clientWidth,\n clientHeight: this.eGridHostDiv.clientHeight\n });\n }\n destroyGridUi() {\n this.view.destroyGridUi();\n }\n getGui() {\n return this.eGui;\n }\n setResizeCursor(on) {\n this.view.setCursor(on ? \"ew-resize\" : null);\n }\n disableUserSelect(on) {\n this.view.setUserSelect(on ? \"none\" : null);\n }\n focusNextInnerContainer(backwards) {\n const focusableContainers = this.getFocusableContainers();\n const { indexWithFocus, nextIndex } = this.getNextFocusableIndex(focusableContainers, backwards);\n if (nextIndex < 0 || nextIndex >= focusableContainers.length) {\n return false;\n }\n if (nextIndex === 0) {\n if (indexWithFocus > 0) {\n const { visibleCols, focusSvc } = this.beans;\n const allColumns = visibleCols.allCols;\n const lastColumn = _last(allColumns);\n if (focusSvc.focusGridView({ column: lastColumn, backwards: true })) {\n return true;\n }\n }\n return false;\n }\n return this.focusContainer(focusableContainers[nextIndex], backwards);\n }\n focusInnerElement(fromBottom) {\n const userCallbackFunction = this.gos.getCallback(\"focusGridInnerElement\");\n if (userCallbackFunction && userCallbackFunction({ fromBottom: !!fromBottom })) {\n return true;\n }\n const focusableContainers = this.getFocusableContainers();\n const { focusSvc, visibleCols } = this.beans;\n const allColumns = visibleCols.allCols;\n if (fromBottom) {\n if (focusableContainers.length > 1) {\n return this.focusContainer(_last(focusableContainers), fromBottom);\n }\n const lastColumn = _last(allColumns);\n if (focusSvc.focusGridView({ column: lastColumn, backwards: fromBottom })) {\n return true;\n }\n }\n if (this.gos.get(\"headerHeight\") === 0 || _isHeaderFocusSuppressed(this.beans)) {\n if (focusSvc.focusGridView({ column: allColumns[0], backwards: fromBottom })) {\n return true;\n }\n for (let i = 1; i < focusableContainers.length; i++) {\n if (_focusInto(focusableContainers[i].getGui(), fromBottom)) {\n return true;\n }\n }\n return false;\n }\n return focusSvc.focusFirstHeader();\n }\n forceFocusOutOfContainer(up = false) {\n this.view.forceFocusOutOfContainer(up);\n }\n addFocusableContainer(container) {\n this.additionalFocusableContainers.add(container);\n }\n removeFocusableContainer(container) {\n this.additionalFocusableContainers.delete(container);\n }\n allowFocusForNextCoreContainer(up) {\n const coreContainers = this.view.getFocusableContainers();\n const { nextIndex, indexWithFocus } = this.getNextFocusableIndex(coreContainers, up);\n if (indexWithFocus === -1 || nextIndex < 0 || nextIndex >= coreContainers.length) {\n return;\n }\n const comp = coreContainers[nextIndex];\n comp.setAllowFocus?.(true);\n setTimeout(() => {\n comp.setAllowFocus?.(false);\n });\n }\n isFocusable() {\n const beans = this.beans;\n return !_isCellFocusSuppressed(beans) || !_isHeaderFocusSuppressed(beans) || !!beans.sideBar?.comp?.isDisplayed();\n }\n getNextFocusableIndex(focusableContainers, backwards) {\n const activeEl = _getActiveDomElement(this.beans);\n const indexWithFocus = focusableContainers.findIndex((container) => container.getGui().contains(activeEl));\n const nextIndex = indexWithFocus + (backwards ? -1 : 1);\n return {\n indexWithFocus,\n nextIndex\n };\n }\n focusContainer(comp, up) {\n comp.setAllowFocus?.(true);\n const result = _focusInto(comp.getGui(), up, false, true);\n comp.setAllowFocus?.(false);\n return result;\n }\n getFocusableContainers() {\n return [...this.view.getFocusableContainers(), ...this.additionalFocusableContainers];\n }\n destroy() {\n this.additionalFocusableContainers.clear();\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/gridComp/gridComp.ts\nvar GridComp = class extends TabGuardComp {\n constructor(eGridDiv) {\n super();\n this.gridBody = RefPlaceholder;\n this.sideBar = RefPlaceholder;\n this.pagination = RefPlaceholder;\n this.rootWrapperBody = RefPlaceholder;\n this.eGridDiv = eGridDiv;\n }\n postConstruct() {\n const compProxy = {\n destroyGridUi: () => this.destroyBean(this),\n setRtlClass: (cssClass) => this.addCssClass(cssClass),\n forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),\n updateLayoutClasses: this.updateLayoutClasses.bind(this),\n getFocusableContainers: this.getFocusableContainers.bind(this),\n setUserSelect: (value) => {\n this.getGui().style.userSelect = value != null ? value : \"\";\n this.getGui().style.webkitUserSelect = value != null ? value : \"\";\n },\n setCursor: (value) => {\n this.getGui().style.cursor = value != null ? value : \"\";\n }\n };\n const ctrl = this.createManagedBean(new GridCtrl());\n const comps = ctrl.getOptionalSelectors();\n const template = this.createTemplate(comps);\n const requiredComps = [GridBodySelector, ...Object.values(comps).filter((c) => !!c)];\n this.setTemplate(template, requiredComps);\n ctrl.setComp(compProxy, this.eGridDiv, this.getGui());\n this.insertGridIntoDom();\n this.initialiseTabGuard({\n // we want to override the default behaviour to do nothing for onTabKeyDown\n onTabKeyDown: () => void 0,\n focusInnerElement: (fromBottom) => ctrl.focusInnerElement(fromBottom),\n forceFocusOutWhenTabGuardsAreEmpty: true,\n isEmpty: () => !ctrl.isFocusable()\n });\n }\n insertGridIntoDom() {\n const eGui = this.getGui();\n this.eGridDiv.appendChild(eGui);\n this.addDestroyFunc(() => {\n this.eGridDiv.removeChild(eGui);\n _logIfDebug(this.gos, \"Grid removed from DOM\");\n });\n }\n updateLayoutClasses(cssClass, params) {\n const eRootWrapperBodyClassList = this.rootWrapperBody.classList;\n const { AUTO_HEIGHT, NORMAL, PRINT } = LayoutCssClasses;\n const { autoHeight, normal, print } = params;\n eRootWrapperBodyClassList.toggle(AUTO_HEIGHT, autoHeight);\n eRootWrapperBodyClassList.toggle(NORMAL, normal);\n eRootWrapperBodyClassList.toggle(PRINT, print);\n this.addOrRemoveCssClass(AUTO_HEIGHT, autoHeight);\n this.addOrRemoveCssClass(NORMAL, normal);\n this.addOrRemoveCssClass(PRINT, print);\n }\n createTemplate(params) {\n const dropZones = params.gridHeaderDropZonesSelector ? { tag: \"ag-grid-header-drop-zones\" } : null;\n const sideBar = params.sideBarSelector ? {\n tag: \"ag-side-bar\",\n ref: \"sideBar\"\n } : null;\n const statusBar = params.statusBarSelector ? { tag: \"ag-status-bar\" } : null;\n const watermark = params.watermarkSelector ? { tag: \"ag-watermark\" } : null;\n const pagination = params.paginationSelector ? { tag: \"ag-pagination\", ref: \"pagination\" } : null;\n return {\n tag: \"div\",\n cls: \"ag-root-wrapper\",\n role: \"presentation\",\n children: [\n dropZones,\n {\n tag: \"div\",\n ref: \"rootWrapperBody\",\n cls: \"ag-root-wrapper-body\",\n role: \"presentation\",\n children: [{ tag: \"ag-grid-body\", ref: \"gridBody\" }, sideBar]\n },\n statusBar,\n pagination,\n watermark\n ]\n };\n }\n getFocusableElement() {\n return this.rootWrapperBody;\n }\n forceFocusOutOfContainer(up = false) {\n if (!up && this.pagination?.isDisplayed()) {\n this.pagination.forceFocusOutOfContainer(up);\n return;\n }\n super.forceFocusOutOfContainer(up);\n }\n getFocusableContainers() {\n const focusableContainers = [this.gridBody];\n [this.sideBar, this.pagination].forEach((comp) => {\n if (comp) {\n focusableContainers.push(comp);\n }\n });\n return focusableContainers.filter((el) => _isVisible(el.getGui()));\n }\n};\n\n// packages/ag-grid-community/src/api/gridApiFunctions.ts\nvar mod = (moduleName, input) => {\n for (const key of Object.keys(input)) {\n input[key] = moduleName;\n }\n return input;\n};\nvar gridApiFunctionsMap = {\n dispatchEvent: \"CommunityCore\",\n // this is always registered\n ...mod(\"CommunityCore\", {\n destroy: 0,\n getGridId: 0,\n getGridOption: 0,\n isDestroyed: 0,\n setGridOption: 0,\n updateGridOptions: 0\n }),\n ...mod(\"GridState\", {\n getState: 0\n }),\n ...mod(\"SharedRowSelection\", {\n setNodesSelected: 0,\n selectAll: 0,\n deselectAll: 0,\n selectAllFiltered: 0,\n deselectAllFiltered: 0,\n selectAllOnCurrentPage: 0,\n deselectAllOnCurrentPage: 0,\n getSelectedNodes: 0,\n getSelectedRows: 0\n }),\n ...mod(\"RowApi\", {\n redrawRows: 0,\n setRowNodeExpanded: 0,\n getRowNode: 0,\n addRenderedRowListener: 0,\n getRenderedNodes: 0,\n forEachNode: 0,\n getFirstDisplayedRowIndex: 0,\n getLastDisplayedRowIndex: 0,\n getDisplayedRowAtIndex: 0,\n getDisplayedRowCount: 0\n }),\n ...mod(\"ScrollApi\", {\n getVerticalPixelRange: 0,\n getHorizontalPixelRange: 0,\n ensureColumnVisible: 0,\n ensureIndexVisible: 0,\n ensureNodeVisible: 0\n }),\n ...mod(\"KeyboardNavigation\", {\n getFocusedCell: 0,\n clearFocusedCell: 0,\n setFocusedCell: 0,\n tabToNextCell: 0,\n tabToPreviousCell: 0,\n setFocusedHeader: 0\n }),\n ...mod(\"EventApi\", {\n addEventListener: 0,\n addGlobalListener: 0,\n removeEventListener: 0,\n removeGlobalListener: 0\n }),\n ...mod(\"ValueCache\", {\n expireValueCache: 0\n }),\n ...mod(\"CellApi\", {\n getCellValue: 0\n }),\n ...mod(\"SharedMenu\", {\n showColumnMenu: 0,\n hidePopupMenu: 0\n }),\n ...mod(\"Sort\", {\n onSortChanged: 0\n }),\n ...mod(\"PinnedRow\", {\n getPinnedTopRowCount: 0,\n getPinnedBottomRowCount: 0,\n getPinnedTopRow: 0,\n getPinnedBottomRow: 0\n }),\n ...mod(\"Overlay\", {\n showLoadingOverlay: 0,\n showNoRowsOverlay: 0,\n hideOverlay: 0\n }),\n ...mod(\"RenderApi\", {\n setGridAriaProperty: 0,\n refreshCells: 0,\n refreshHeader: 0,\n isAnimationFrameQueueEmpty: 0,\n flushAllAnimationFrames: 0,\n getSizesForCurrentTheme: 0,\n getCellRendererInstances: 0\n }),\n ...mod(\"HighlightChanges\", {\n flashCells: 0\n }),\n ...mod(\"RowDrag\", {\n addRowDropZone: 0,\n removeRowDropZone: 0,\n getRowDropZoneParams: 0\n }),\n ...mod(\"ColumnApi\", {\n getColumnDefs: 0,\n getColumnDef: 0,\n getDisplayNameForColumn: 0,\n getColumn: 0,\n getColumns: 0,\n applyColumnState: 0,\n getColumnState: 0,\n resetColumnState: 0,\n isPinning: 0,\n isPinningLeft: 0,\n isPinningRight: 0,\n getDisplayedColAfter: 0,\n getDisplayedColBefore: 0,\n setColumnsVisible: 0,\n setColumnsPinned: 0,\n getAllGridColumns: 0,\n getDisplayedLeftColumns: 0,\n getDisplayedCenterColumns: 0,\n getDisplayedRightColumns: 0,\n getAllDisplayedColumns: 0,\n getAllDisplayedVirtualColumns: 0\n }),\n ...mod(\"ColumnAutoSize\", {\n sizeColumnsToFit: 0,\n autoSizeColumns: 0,\n autoSizeAllColumns: 0\n }),\n ...mod(\"ColumnGroup\", {\n setColumnGroupOpened: 0,\n getColumnGroup: 0,\n getProvidedColumnGroup: 0,\n getDisplayNameForColumnGroup: 0,\n getColumnGroupState: 0,\n setColumnGroupState: 0,\n resetColumnGroupState: 0,\n getLeftDisplayedColumnGroups: 0,\n getCenterDisplayedColumnGroups: 0,\n getRightDisplayedColumnGroups: 0,\n getAllDisplayedColumnGroups: 0\n }),\n ...mod(\"ColumnMove\", {\n moveColumnByIndex: 0,\n moveColumns: 0\n }),\n ...mod(\"ColumnResize\", {\n setColumnWidths: 0\n }),\n ...mod(\"ColumnHover\", {\n isColumnHovered: 0\n }),\n ...mod(\"EditCore\", {\n getCellEditorInstances: 0,\n getEditingCells: 0,\n stopEditing: 0,\n startEditingCell: 0\n }),\n ...mod(\"UndoRedoEdit\", {\n undoCellEditing: 0,\n redoCellEditing: 0,\n getCurrentUndoSize: 0,\n getCurrentRedoSize: 0\n }),\n ...mod(\"FilterCore\", {\n isAnyFilterPresent: 0,\n onFilterChanged: 0\n }),\n ...mod(\"ColumnFilter\", {\n isColumnFilterPresent: 0,\n getColumnFilterInstance: 0,\n destroyFilter: 0,\n setFilterModel: 0,\n getFilterModel: 0,\n getColumnFilterModel: 0,\n setColumnFilterModel: 0,\n showColumnFilter: 0\n }),\n ...mod(\"QuickFilter\", {\n isQuickFilterPresent: 0,\n getQuickFilter: 0,\n resetQuickFilter: 0\n }),\n ...mod(\"Find\", {\n findGetActiveMatch: 0,\n findGetTotalMatches: 0,\n findGoTo: 0,\n findNext: 0,\n findPrevious: 0,\n findGetNumMatches: 0,\n findGetParts: 0,\n findClearActive: 0,\n findRefresh: 0\n }),\n ...mod(\"Pagination\", {\n paginationIsLastPageFound: 0,\n paginationGetPageSize: 0,\n paginationGetCurrentPage: 0,\n paginationGetTotalPages: 0,\n paginationGetRowCount: 0,\n paginationGoToNextPage: 0,\n paginationGoToPreviousPage: 0,\n paginationGoToFirstPage: 0,\n paginationGoToLastPage: 0,\n paginationGoToPage: 0\n }),\n ...mod(\"CsrmSsrmSharedApi\", {\n expandAll: 0,\n collapseAll: 0,\n onRowHeightChanged: 0\n }),\n ...mod(\"SsrmInfiniteSharedApi\", {\n setRowCount: 0,\n getCacheBlockState: 0,\n isLastRowIndexKnown: 0\n }),\n ...mod(\"ClientSideRowModelApi\", {\n onGroupExpandedOrCollapsed: 0,\n refreshClientSideRowModel: 0,\n isRowDataEmpty: 0,\n forEachLeafNode: 0,\n forEachNodeAfterFilter: 0,\n forEachNodeAfterFilterAndSort: 0,\n resetRowHeights: 0,\n applyTransaction: 0,\n applyTransactionAsync: 0,\n flushAsyncTransactions: 0,\n getBestCostNodeSelection: 0\n }),\n ...mod(\"CsvExport\", {\n getDataAsCsv: 0,\n exportDataAsCsv: 0\n }),\n ...mod(\"InfiniteRowModel\", {\n refreshInfiniteCache: 0,\n purgeInfiniteCache: 0,\n getInfiniteRowCount: 0\n }),\n ...mod(\"AdvancedFilter\", {\n getAdvancedFilterModel: 0,\n setAdvancedFilterModel: 0,\n showAdvancedFilterBuilder: 0,\n hideAdvancedFilterBuilder: 0\n }),\n ...mod(\"IntegratedCharts\", {\n getChartModels: 0,\n getChartRef: 0,\n getChartImageDataURL: 0,\n downloadChart: 0,\n openChartToolPanel: 0,\n closeChartToolPanel: 0,\n createRangeChart: 0,\n createPivotChart: 0,\n createCrossFilterChart: 0,\n updateChart: 0,\n restoreChart: 0\n }),\n ...mod(\"Clipboard\", {\n copyToClipboard: 0,\n cutToClipboard: 0,\n copySelectedRowsToClipboard: 0,\n copySelectedRangeToClipboard: 0,\n copySelectedRangeDown: 0,\n pasteFromClipboard: 0\n }),\n ...mod(\"ExcelExport\", {\n getDataAsExcel: 0,\n exportDataAsExcel: 0,\n getSheetDataForExcel: 0,\n getMultipleSheetsAsExcel: 0,\n exportMultipleSheetsAsExcel: 0\n }),\n ...mod(\"SharedMasterDetail\", {\n addDetailGridInfo: 0,\n removeDetailGridInfo: 0,\n getDetailGridInfo: 0,\n forEachDetailGridInfo: 0\n }),\n ...mod(\"ContextMenu\", {\n showContextMenu: 0\n }),\n ...mod(\"ColumnMenu\", {\n showColumnChooser: 0,\n hideColumnChooser: 0\n }),\n ...mod(\"CellSelection\", {\n getCellRanges: 0,\n addCellRange: 0,\n clearRangeSelection: 0,\n clearCellSelection: 0\n }),\n ...mod(\"SharedRowGrouping\", {\n setRowGroupColumns: 0,\n removeRowGroupColumns: 0,\n addRowGroupColumns: 0,\n getRowGroupColumns: 0,\n moveRowGroupColumn: 0\n }),\n ...mod(\"SharedAggregation\", {\n addAggFuncs: 0,\n clearAggFuncs: 0,\n setColumnAggFunc: 0\n }),\n ...mod(\"SharedPivot\", {\n isPivotMode: 0,\n getPivotResultColumn: 0,\n setValueColumns: 0,\n getValueColumns: 0,\n removeValueColumns: 0,\n addValueColumns: 0,\n setPivotColumns: 0,\n removePivotColumns: 0,\n addPivotColumns: 0,\n getPivotColumns: 0,\n setPivotResultColumns: 0,\n getPivotResultColumns: 0\n }),\n ...mod(\"ServerSideRowModelApi\", {\n getServerSideSelectionState: 0,\n setServerSideSelectionState: 0,\n applyServerSideTransaction: 0,\n applyServerSideTransactionAsync: 0,\n applyServerSideRowData: 0,\n retryServerSideLoads: 0,\n flushServerSideAsyncTransactions: 0,\n refreshServerSide: 0,\n getServerSideGroupLevelState: 0\n }),\n ...mod(\"SideBar\", {\n isSideBarVisible: 0,\n setSideBarVisible: 0,\n setSideBarPosition: 0,\n openToolPanel: 0,\n closeToolPanel: 0,\n getOpenedToolPanel: 0,\n refreshToolPanel: 0,\n isToolPanelShowing: 0,\n getToolPanelInstance: 0,\n getSideBar: 0\n }),\n ...mod(\"StatusBar\", {\n getStatusPanel: 0\n })\n};\n\n// packages/ag-grid-community/src/api/apiFunctionService.ts\nvar defaultFns = {\n isDestroyed: () => true,\n destroy() {\n },\n preConstruct() {\n },\n postConstruct() {\n },\n preWireBeans() {\n },\n wireBeans() {\n }\n};\nvar dispatchEvent = (beans, event) => beans.eventSvc.dispatchEvent(event);\nvar GridApiClass = class {\n};\nReflect.defineProperty(GridApiClass, \"name\", { value: \"GridApi\" });\nvar ApiFunctionService = class extends BeanStub {\n constructor() {\n super();\n this.beanName = \"apiFunctionSvc\";\n this.api = new GridApiClass();\n this.fns = {\n ...defaultFns,\n // dispatchEvent is used by frameworks, also used by aligned grids to identify a grid api instance\n dispatchEvent\n };\n this.preDestroyLink = \"\";\n const { api } = this;\n for (const key of Object.keys(gridApiFunctionsMap)) {\n api[key] = this.makeApi(key)[key];\n }\n }\n postConstruct() {\n this.preDestroyLink = this.beans.frameworkOverrides.getDocLink(\"grid-lifecycle/#grid-pre-destroyed\");\n }\n addFunction(functionName, func) {\n const { fns, beans } = this;\n if (fns !== defaultFns) {\n fns[functionName] = beans?.validation?.validateApiFunction(functionName, func) ?? func;\n }\n }\n makeApi(apiName) {\n return {\n [apiName]: (...args) => {\n const {\n beans,\n fns: { [apiName]: fn }\n } = this;\n return fn ? fn(beans, ...args) : this.apiNotFound(apiName);\n }\n };\n }\n apiNotFound(fnName) {\n const { beans, gos, preDestroyLink } = this;\n if (!beans) {\n _warn(26, { fnName, preDestroyLink });\n } else {\n const module = gridApiFunctionsMap[fnName];\n if (gos.assertModuleRegistered(module, `api.${fnName}`)) {\n _warn(27, { fnName, module });\n }\n }\n }\n destroy() {\n super.destroy();\n this.fns = defaultFns;\n this.beans = null;\n }\n};\n\n// packages/ag-grid-community/src/api/coreApi.ts\nfunction getGridId(beans) {\n return beans.context.getGridId();\n}\nfunction destroy(beans) {\n beans.gridDestroySvc.destroy();\n}\nfunction isDestroyed(beans) {\n return beans.gridDestroySvc.destroyCalled;\n}\nfunction getGridOption(beans, key) {\n return beans.gos.get(key);\n}\nfunction setGridOption(beans, key, value) {\n updateGridOptions(beans, { [key]: value });\n}\nfunction updateGridOptions(beans, options) {\n beans.gos.updateGridOptions({ options });\n}\n\n// packages/ag-grid-community/src/rendering/dndSourceComp.ts\nvar DndSourceElement = { tag: \"div\", cls: \"ag-drag-handle ag-row-drag\", attrs: { draggable: \"true\" } };\nvar DndSourceComp = class extends Component {\n constructor(rowNode, column, eCell) {\n super(DndSourceElement);\n this.rowNode = rowNode;\n this.column = column;\n this.eCell = eCell;\n }\n postConstruct() {\n const eGui = this.getGui();\n eGui.appendChild(_createIconNoSpan(\"rowDrag\", this.beans, null));\n this.addGuiEventListener(\"mousedown\", (e) => {\n e.stopPropagation();\n });\n this.addDragSource();\n this.checkVisibility();\n }\n addDragSource() {\n this.addGuiEventListener(\"dragstart\", this.onDragStart.bind(this));\n }\n onDragStart(dragEvent) {\n const { rowNode, column, eCell, gos } = this;\n const providedOnRowDrag = column.getColDef().dndSourceOnRowDrag;\n const dataTransfer = dragEvent.dataTransfer;\n dataTransfer.setDragImage(eCell, 0, 0);\n if (providedOnRowDrag) {\n const params = _addGridCommonParams(gos, {\n rowNode,\n dragEvent\n });\n providedOnRowDrag(params);\n } else {\n try {\n const jsonData = JSON.stringify(rowNode.data);\n dataTransfer.setData(\"application/json\", jsonData);\n dataTransfer.setData(\"text/plain\", jsonData);\n } catch (e) {\n }\n }\n }\n checkVisibility() {\n const visible = this.column.isDndSource(this.rowNode);\n this.setDisplayed(visible);\n }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/dragApi.ts\nfunction addRowDropZone(beans, params) {\n beans.rowDragSvc?.rowDragFeature?.addRowDropZone(params);\n}\nfunction removeRowDropZone(beans, params) {\n const activeDropTarget = beans.dragAndDrop?.findExternalZone(params);\n if (activeDropTarget) {\n beans.dragAndDrop?.removeDropTarget(activeDropTarget);\n }\n}\nfunction getRowDropZoneParams(beans, events) {\n return beans.rowDragSvc?.rowDragFeature?.getRowDropZone(events);\n}\n\n// packages/ag-grid-community/src/dragAndDrop/horizontalResizeService.ts\nvar HorizontalResizeService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"horizontalResizeSvc\";\n }\n addResizeBar(params) {\n const dragSource = {\n dragStartPixels: params.dragStartPixels || 0,\n eElement: params.eResizeBar,\n onDragStart: this.onDragStart.bind(this, params),\n onDragStop: this.onDragStop.bind(this, params),\n onDragging: this.onDragging.bind(this, params),\n onDragCancel: this.onDragStop.bind(this, params),\n includeTouch: true,\n stopPropagationForTouch: true\n };\n const { dragSvc } = this.beans;\n dragSvc.addDragSource(dragSource);\n const finishedWithResizeFunc = () => dragSvc.removeDragSource(dragSource);\n return finishedWithResizeFunc;\n }\n onDragStart(params, mouseEvent) {\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n const shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;\n params.onResizeStart(shiftKey);\n }\n setResizeIcons() {\n const ctrl = this.beans.ctrlsSvc.get(\"gridCtrl\");\n ctrl.setResizeCursor(true);\n ctrl.disableUserSelect(true);\n }\n onDragStop(params) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n }\n resetIcons() {\n const ctrl = this.beans.ctrlsSvc.get(\"gridCtrl\");\n ctrl.setResizeCursor(false);\n ctrl.disableUserSelect(false);\n }\n onDragging(params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/rowDragComp.ts\nvar RowDragElement = {\n tag: \"div\",\n cls: \"ag-drag-handle ag-row-drag\",\n attrs: { \"aria-hidden\": \"true\" }\n};\nvar RowDragComp = class extends Component {\n constructor(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n super();\n this.cellValueFn = cellValueFn;\n this.rowNode = rowNode;\n this.column = column;\n this.customGui = customGui;\n this.dragStartPixels = dragStartPixels;\n this.suppressVisibilityChange = suppressVisibilityChange;\n this.dragSource = null;\n }\n isCustomGui() {\n return this.customGui != null;\n }\n postConstruct() {\n const { beans, rowNode, column, gos } = this;\n if (!this.customGui) {\n this.setTemplate(RowDragElement);\n this.getGui().appendChild(_createIconNoSpan(\"rowDrag\", beans, null));\n this.addDragSource();\n } else {\n this.setDragElement(this.customGui, this.dragStartPixels);\n }\n if (!this.suppressVisibilityChange) {\n const strategy = gos.get(\"rowDragManaged\") ? new ManagedVisibilityStrategy(this, rowNode, column) : new NonManagedVisibilityStrategy(this, rowNode, column);\n this.createManagedBean(strategy, this.beans.context);\n }\n }\n setDragElement(dragElement, dragStartPixels) {\n this.setTemplateFromElement(dragElement, void 0, void 0, true);\n this.addDragSource(dragStartPixels);\n }\n getSelectedNodes() {\n const rowNode = this.rowNode;\n const isRowDragMultiRow = this.gos.get(\"rowDragMultiRow\");\n if (!isRowDragMultiRow) {\n return [rowNode];\n }\n const selection = this.beans.selectionSvc?.getSelectedNodes() ?? [];\n return selection.indexOf(rowNode) !== -1 ? selection : [rowNode];\n }\n getDragItem() {\n const { column, rowNode } = this;\n return {\n rowNode,\n rowNodes: this.getSelectedNodes(),\n columns: column ? [column] : void 0,\n defaultTextValue: this.cellValueFn()\n };\n }\n getRowDragText(column) {\n if (column) {\n const colDef = column.getColDef();\n if (colDef.rowDragText) {\n return colDef.rowDragText;\n }\n }\n return this.gos.get(\"rowDragText\");\n }\n addDragSource(dragStartPixels = 4) {\n if (this.dragSource) {\n this.removeDragSource();\n }\n const eGui = this.getGui();\n if (this.gos.get(\"enableCellTextSelection\")) {\n this.removeMouseDownListener();\n this.mouseDownListener = this.addManagedElementListeners(eGui, {\n mousedown: (e) => {\n e?.preventDefault();\n }\n })[0];\n }\n const translate = this.getLocaleTextFunc();\n this.dragSource = {\n type: 2 /* RowDrag */,\n eElement: eGui,\n dragItemName: () => {\n const dragItem = this.getDragItem();\n const dragItemCount = dragItem.rowNodes?.length || 1;\n const rowDragText = this.getRowDragText(this.column);\n if (rowDragText) {\n return rowDragText(dragItem, dragItemCount);\n }\n return dragItemCount === 1 ? this.cellValueFn() : `${dragItemCount} ${translate(\"rowDragRows\", \"rows\")}`;\n },\n getDragItem: () => this.getDragItem(),\n dragStartPixels,\n dragSourceDomDataKey: this.gos.getDomDataKey()\n };\n this.beans.dragAndDrop.addDragSource(this.dragSource, true);\n }\n destroy() {\n this.removeDragSource();\n this.removeMouseDownListener();\n super.destroy();\n }\n removeDragSource() {\n if (!this.dragSource) {\n return;\n }\n this.beans.dragAndDrop.removeDragSource(this.dragSource);\n this.dragSource = null;\n }\n removeMouseDownListener() {\n if (!this.mouseDownListener) {\n return;\n }\n this.mouseDownListener();\n this.mouseDownListener = void 0;\n }\n};\nvar VisibilityStrategy = class extends BeanStub {\n constructor(parent, rowNode, column) {\n super();\n this.parent = parent;\n this.rowNode = rowNode;\n this.column = column;\n }\n setDisplayedOrVisible(neverDisplayed) {\n const displayedOptions = { skipAriaHidden: true };\n if (neverDisplayed) {\n this.parent.setDisplayed(false, displayedOptions);\n } else {\n let shown = true;\n let isShownSometimes = false;\n const { column, rowNode, parent } = this;\n if (column) {\n shown = column.isRowDrag(rowNode) || parent.isCustomGui();\n isShownSometimes = typeof column.getColDef().rowDrag === \"function\";\n }\n if (isShownSometimes) {\n parent.setDisplayed(true, displayedOptions);\n parent.setVisible(shown, displayedOptions);\n } else {\n parent.setDisplayed(shown, displayedOptions);\n parent.setVisible(true, displayedOptions);\n }\n }\n }\n};\nvar NonManagedVisibilityStrategy = class extends VisibilityStrategy {\n postConstruct() {\n this.addManagedPropertyListener(\"suppressRowDrag\", this.onSuppressRowDrag.bind(this));\n const listener = this.workOutVisibility.bind(this);\n this.addManagedListeners(this.rowNode, {\n dataChanged: listener,\n cellChanged: listener\n });\n this.addManagedListeners(this.beans.eventSvc, { newColumnsLoaded: listener });\n this.workOutVisibility();\n }\n onSuppressRowDrag() {\n this.workOutVisibility();\n }\n workOutVisibility() {\n const neverDisplayed = this.gos.get(\"suppressRowDrag\");\n this.setDisplayedOrVisible(neverDisplayed);\n }\n};\nvar ManagedVisibilityStrategy = class extends VisibilityStrategy {\n postConstruct() {\n const listener = this.workOutVisibility.bind(this);\n this.addManagedListeners(this.beans.eventSvc, {\n sortChanged: listener,\n filterChanged: listener,\n columnRowGroupChanged: listener,\n newColumnsLoaded: listener\n });\n this.addManagedListeners(this.rowNode, {\n dataChanged: listener,\n cellChanged: listener\n });\n this.addManagedPropertyListener(\"suppressRowDrag\", this.onSuppressRowDrag.bind(this));\n this.workOutVisibility();\n }\n onSuppressRowDrag() {\n this.workOutVisibility();\n }\n workOutVisibility() {\n const { rowDragSvc, dragAndDrop, gos } = this.beans;\n const rowDragFeature = rowDragSvc.rowDragFeature;\n const shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();\n const suppressRowDrag = gos.get(\"suppressRowDrag\");\n const hasExternalDropZones = dragAndDrop.hasExternalDropZones();\n const neverDisplayed = shouldPreventRowMove && !hasExternalDropZones || suppressRowDrag;\n this.setDisplayedOrVisible(neverDisplayed);\n }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/rowDragService.ts\nvar RowDragService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowDragSvc\";\n }\n setupRowDrag(element, ctrl) {\n const rowDragFeature = ctrl.createManagedBean(new RowDragFeature(element));\n const dragAndDrop = this.beans.dragAndDrop;\n dragAndDrop.addDropTarget(rowDragFeature);\n ctrl.addDestroyFunc(() => dragAndDrop.removeDropTarget(rowDragFeature));\n this.rowDragFeature = rowDragFeature;\n }\n createRowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n return new RowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange);\n }\n createRowDragCompForRow(rowNode, element) {\n if (_isCellSelectionEnabled(this.gos)) {\n return void 0;\n }\n const translate = this.getLocaleTextFunc();\n return this.createRowDragComp(\n () => `1 ${translate(\"rowDragRow\", \"row\")}`,\n rowNode,\n void 0,\n element,\n void 0,\n true\n );\n }\n createRowDragCompForCell(rowNode, column, cellValueFn, element, dragStartPixels, suppressVisibilityChange) {\n const gos = this.gos;\n if (gos.get(\"rowDragManaged\")) {\n if (!_isClientSideRowModel(gos) || gos.get(\"pagination\")) {\n return void 0;\n }\n }\n const rowDragComp = this.createRowDragComp(\n cellValueFn,\n rowNode,\n column,\n element,\n dragStartPixels,\n suppressVisibilityChange\n );\n return rowDragComp;\n }\n};\n\n// packages/ag-grid-community/src/dragAndDrop/dragModule.ts\nvar DragModule = {\n moduleName: \"Drag\",\n version: VERSION,\n beans: [DragService]\n};\nvar DragAndDropModule = {\n moduleName: \"DragAndDrop\",\n version: VERSION,\n dynamicBeans: {\n dndSourceComp: DndSourceComp\n },\n icons: {\n // drag handle used to pick up draggable rows\n rowDrag: \"grip\"\n }\n};\nvar SharedDragAndDropModule = {\n moduleName: \"SharedDragAndDrop\",\n version: VERSION,\n beans: [DragAndDropService],\n dependsOn: [DragModule],\n userComponents: {\n agDragAndDropImage: DragAndDropImageComponent2\n },\n icons: {\n // shown on drag and drop image component icon while dragging column to the side of the grid to pin\n columnMovePin: \"pin\",\n // shown on drag and drop image component icon while dragging over part of the page that is not a drop zone\n columnMoveHide: \"eye-slash\",\n // shown on drag and drop image component icon while dragging columns to reorder\n columnMoveMove: \"arrows\",\n // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling\n columnMoveLeft: \"left\",\n // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling\n columnMoveRight: \"right\",\n // shown on drag and drop image component icon while dragging over Row Groups drop zone\n columnMoveGroup: \"group\",\n // shown on drag and drop image component icon while dragging over Values drop zone\n columnMoveValue: \"aggregation\",\n // shown on drag and drop image component icon while dragging over pivot drop zone\n columnMovePivot: \"pivot\",\n // shown on drag and drop image component icon while dragging over drop zone that doesn't support it, e.g.\n // string column over aggregation drop zone\n dropNotAllowed: \"not-allowed\",\n // drag handle used to pick up draggable rows\n rowDrag: \"grip\"\n }\n};\nvar RowDragModule = {\n moduleName: \"RowDrag\",\n version: VERSION,\n beans: [RowDragService],\n apiFunctions: {\n addRowDropZone,\n removeRowDropZone,\n getRowDropZoneParams\n },\n dependsOn: [SharedDragAndDropModule]\n};\nvar HorizontalResizeModule = {\n moduleName: \"HorizontalResize\",\n version: VERSION,\n beans: [HorizontalResizeService],\n dependsOn: [DragModule]\n};\n\n// packages/ag-grid-community/src/columnMove/column-moving.css-GENERATED.ts\nvar columnMovingCSS = (\n /*css*/\n `:where(.ag-ltr) :where(.ag-column-moving){.ag-cell,.ag-header-cell,.ag-spanned-cell-wrapper{transition:left .2s}.ag-header-group-cell{transition:left .2s,width .2s}}:where(.ag-rtl) :where(.ag-column-moving){.ag-cell,.ag-header-cell,.ag-spanned-cell-wrapper{transition:right .2s}.ag-header-group-cell{transition:right .2s,width .2s}}`\n);\n\n// packages/ag-grid-community/src/columnMove/columnAnimationService.ts\nvar ColumnAnimationService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colAnimation\";\n this.executeNextFuncs = [];\n this.executeLaterFuncs = [];\n this.active = false;\n // activeNext starts with active but it is reset earlier after the nextFuncs are cleared\n // to prevent calls made to executeNextVMTurn from queuing functions after executeNextFuncs has already been flushed,\n this.activeNext = false;\n this.suppressAnimation = false;\n this.animationThreadCount = 0;\n }\n postConstruct() {\n this.beans.ctrlsSvc.whenReady(this, (p) => this.gridBodyCtrl = p.gridBodyCtrl);\n }\n isActive() {\n return this.active && !this.suppressAnimation;\n }\n setSuppressAnimation(suppress) {\n this.suppressAnimation = suppress;\n }\n start() {\n if (this.active) {\n return;\n }\n const { gos } = this;\n if (gos.get(\"suppressColumnMoveAnimation\")) {\n return;\n }\n if (gos.get(\"enableRtl\")) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n this.activeNext = true;\n }\n finish() {\n if (!this.active) {\n return;\n }\n this.flush(\n () => this.activeNext = false,\n () => this.active = false\n );\n }\n executeNextVMTurn(func) {\n if (this.activeNext) {\n this.executeNextFuncs.push(func);\n } else {\n func();\n }\n }\n executeLaterVMTurn(func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n } else {\n func();\n }\n }\n ensureAnimationCssClassPresent() {\n this.animationThreadCount++;\n const animationThreadCountCopy = this.animationThreadCount;\n const { gridBodyCtrl } = this;\n gridBodyCtrl.setColumnMovingCss(true);\n this.executeLaterFuncs.push(() => {\n if (this.animationThreadCount === animationThreadCountCopy) {\n gridBodyCtrl.setColumnMovingCss(false);\n }\n });\n }\n flush(callbackNext, callbackLater) {\n const { executeNextFuncs, executeLaterFuncs } = this;\n if (executeNextFuncs.length === 0 && executeLaterFuncs.length === 0) {\n callbackNext();\n callbackLater();\n return;\n }\n const runFuncs = (queue) => {\n while (queue.length) {\n const func = queue.pop();\n if (func) {\n func();\n }\n }\n };\n this.beans.frameworkOverrides.wrapIncoming(() => {\n window.setTimeout(() => {\n callbackNext();\n runFuncs(executeNextFuncs);\n }, 0);\n window.setTimeout(() => {\n callbackLater();\n runFuncs(executeLaterFuncs);\n }, 200);\n });\n }\n};\n\n// packages/ag-grid-community/src/columnMove/columnMoveApi.ts\nfunction moveColumnByIndex(beans, fromIndex, toIndex) {\n beans.colMoves?.moveColumnByIndex(fromIndex, toIndex, \"api\");\n}\nfunction moveColumns(beans, columnsToMoveKeys, toIndex) {\n beans.colMoves?.moveColumns(columnsToMoveKeys, toIndex, \"api\");\n}\n\n// packages/ag-grid-community/src/columnMove/columnDrag/bodyDropPivotTarget.ts\nvar BodyDropPivotTarget = class extends BeanStub {\n constructor(pinned) {\n super();\n this.pinned = pinned;\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n }\n /** Callback for when drag enters */\n onDragEnter(draggingEvent) {\n this.clearColumnsList();\n if (this.gos.get(\"functionsReadOnly\")) {\n return;\n }\n const dragColumns = draggingEvent.dragItem.columns;\n if (!dragColumns) {\n return;\n }\n dragColumns.forEach((column) => {\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n this.columnsToAggregate.push(column);\n } else if (column.isAllowRowGroup()) {\n this.columnsToGroup.push(column);\n } else if (column.isAllowPivot()) {\n this.columnsToPivot.push(column);\n }\n });\n }\n getIconName() {\n const totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? \"pinned\" : \"move\";\n }\n return null;\n }\n /** Callback for when drag leaves */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDragLeave(draggingEvent) {\n this.clearColumnsList();\n }\n clearColumnsList() {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n }\n /** Callback for when dragging */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDragging(draggingEvent) {\n }\n /** Callback for when drag stops */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDragStop(draggingEvent) {\n const { valueColsSvc, rowGroupColsSvc, pivotColsSvc } = this.beans;\n if (this.columnsToAggregate.length > 0) {\n valueColsSvc?.addColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n rowGroupColsSvc?.addColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n pivotColsSvc?.addColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n }\n onDragCancel() {\n this.clearColumnsList();\n }\n};\n\n// packages/ag-grid-community/src/columnMove/internalColumnMoveUtils.ts\nfunction sortColsLikeCols(colsList, cols) {\n if (!cols || cols.length <= 1) {\n return;\n }\n const notAllColsPresent = cols.filter((c) => colsList.indexOf(c) < 0).length > 0;\n if (notAllColsPresent) {\n return;\n }\n cols.sort((a, b) => {\n const indexA = colsList.indexOf(a);\n const indexB = colsList.indexOf(b);\n return indexA - indexB;\n });\n}\nfunction getBestColumnMoveIndexFromXPosition(params) {\n const { isFromHeader, fromLeft, xPosition, fromEnter, fakeEvent, pinned, gos, colModel, colMoves, visibleCols } = params;\n let { allMovingColumns } = params;\n if (isFromHeader) {\n const newCols = [];\n allMovingColumns.forEach((col) => {\n let movingGroup = null;\n let parent = col.getParent();\n while (parent != null && parent.getDisplayedLeafColumns().length === 1) {\n movingGroup = parent;\n parent = parent.getParent();\n }\n if (movingGroup != null) {\n const isMarryChildren = !!movingGroup.getColGroupDef()?.marryChildren;\n const columnsToMove = isMarryChildren ? (\n // when marry children is true, we also have to move hidden\n // columns within the group, so grab them from the `providedColumnGroup`\n movingGroup.getProvidedColumnGroup().getLeafColumns()\n ) : movingGroup.getLeafColumns();\n columnsToMove.forEach((newCol) => {\n if (!newCols.includes(newCol)) {\n newCols.push(newCol);\n }\n });\n } else if (!newCols.includes(col)) {\n newCols.push(col);\n }\n });\n allMovingColumns = newCols;\n }\n const allMovingColumnsOrdered = allMovingColumns.slice();\n sortColsLikeCols(colModel.getCols(), allMovingColumnsOrdered);\n const validMoves = calculateValidMoves({\n movingCols: allMovingColumnsOrdered,\n draggingRight: fromLeft,\n xPosition,\n pinned,\n gos,\n colModel,\n visibleCols\n });\n const oldIndex = calculateOldIndex(allMovingColumnsOrdered, colModel);\n if (validMoves.length === 0) {\n return;\n }\n const firstValidMove = validMoves[0];\n let constrainDirection = oldIndex !== null && !fromEnter;\n if (isFromHeader) {\n constrainDirection = oldIndex !== null;\n }\n if (constrainDirection && !fakeEvent) {\n if (!fromLeft && firstValidMove >= oldIndex) {\n return;\n }\n if (fromLeft && firstValidMove <= oldIndex) {\n return;\n }\n }\n const displayedCols = visibleCols.allCols;\n const potentialMoves = [];\n let targetOrder = null;\n for (let i = 0; i < validMoves.length; i++) {\n const move = validMoves[i];\n const order = colMoves.getProposedColumnOrder(allMovingColumnsOrdered, move);\n if (!colMoves.doesOrderPassRules(order)) {\n continue;\n }\n const displayedOrder = order.filter((col) => displayedCols.includes(col));\n if (targetOrder === null) {\n targetOrder = displayedOrder;\n } else if (!_areEqual(displayedOrder, targetOrder)) {\n break;\n }\n const fragCount = groupFragCount(order);\n potentialMoves.push({ move, fragCount });\n }\n if (potentialMoves.length === 0) {\n return;\n }\n potentialMoves.sort((a, b) => a.fragCount - b.fragCount);\n const toIndex = potentialMoves[0].move;\n if (toIndex > colModel.getCols().length - allMovingColumns.length) {\n return;\n }\n return { columns: allMovingColumns, toIndex };\n}\nfunction attemptMoveColumns(params) {\n const { columns, toIndex } = getBestColumnMoveIndexFromXPosition(params) || {};\n const { finished, colMoves } = params;\n if (!columns || toIndex == null) {\n return null;\n }\n colMoves.moveColumns(columns, toIndex, \"uiColumnMoved\", finished);\n return finished ? null : { columns, toIndex };\n}\nfunction calculateOldIndex(movingCols, colModel) {\n const gridCols = colModel.getCols();\n const indexes = movingCols.map((col) => gridCols.indexOf(col)).sort((a, b) => a - b);\n const firstIndex = indexes[0];\n const lastIndex = _last(indexes);\n const spread = lastIndex - firstIndex;\n const gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n}\nfunction groupFragCount(columns) {\n function parents(col) {\n const result = [];\n let parent = col.getOriginalParent();\n while (parent != null) {\n result.push(parent);\n parent = parent.getOriginalParent();\n }\n return result;\n }\n let count = 0;\n for (let i = 0; i < columns.length - 1; i++) {\n let a = parents(columns[i]);\n let b = parents(columns[i + 1]);\n [a, b] = a.length > b.length ? [a, b] : [b, a];\n a.forEach((parent) => {\n if (b.indexOf(parent) === -1) {\n count++;\n }\n });\n }\n return count;\n}\nfunction getDisplayedColumns(visibleCols, type) {\n switch (type) {\n case \"left\":\n return visibleCols.leftCols;\n case \"right\":\n return visibleCols.rightCols;\n default:\n return visibleCols.centerCols;\n }\n}\nfunction calculateValidMoves(params) {\n const { movingCols, draggingRight, xPosition, pinned, gos, colModel, visibleCols } = params;\n const isMoveBlocked = gos.get(\"suppressMovableColumns\") || movingCols.some((col) => col.getColDef().suppressMovable);\n if (isMoveBlocked) {\n return [];\n }\n const allDisplayedCols = getDisplayedColumns(visibleCols, pinned);\n const allGridCols = colModel.getCols();\n const movingDisplayedCols = allDisplayedCols.filter((col) => movingCols.includes(col));\n const otherDisplayedCols = allDisplayedCols.filter((col) => !movingCols.includes(col));\n const otherGridCols = allGridCols.filter((col) => !movingCols.includes(col));\n let displayIndex = 0;\n let availableWidth = xPosition;\n if (draggingRight) {\n let widthOfMovingDisplayedCols = 0;\n movingDisplayedCols.forEach((col) => widthOfMovingDisplayedCols += col.getActualWidth());\n availableWidth -= widthOfMovingDisplayedCols;\n }\n if (availableWidth > 0) {\n for (let i = 0; i < otherDisplayedCols.length; i++) {\n const col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n if (draggingRight) {\n displayIndex++;\n }\n }\n let firstValidMove;\n if (displayIndex > 0) {\n const leftColumn = otherDisplayedCols[displayIndex - 1];\n firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n } else {\n firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n if (firstValidMove === -1) {\n firstValidMove = 0;\n }\n }\n const validMoves = [firstValidMove];\n const numberComparator = (a, b) => a - b;\n if (draggingRight) {\n let pointer = firstValidMove + 1;\n const lastIndex = allGridCols.length - 1;\n while (pointer <= lastIndex) {\n validMoves.push(pointer);\n pointer++;\n }\n validMoves.sort(numberComparator);\n } else {\n let pointer = firstValidMove;\n const lastIndex = allGridCols.length - 1;\n let displacedCol = allGridCols[pointer];\n while (pointer <= lastIndex && allDisplayedCols.indexOf(displacedCol) < 0) {\n pointer++;\n validMoves.push(pointer);\n displacedCol = allGridCols[pointer];\n }\n pointer = firstValidMove - 1;\n const firstDisplayIndex = 0;\n while (pointer >= firstDisplayIndex) {\n validMoves.push(pointer);\n pointer--;\n }\n validMoves.sort(numberComparator).reverse();\n }\n return validMoves;\n}\nfunction normaliseX(params) {\n const { pinned, fromKeyboard, gos, ctrlsSvc, useHeaderRow, skipScrollPadding } = params;\n let eViewport = ctrlsSvc.getHeaderRowContainerCtrl(pinned)?.eViewport;\n let { x } = params;\n if (!eViewport) {\n return 0;\n }\n if (fromKeyboard) {\n x -= eViewport.getBoundingClientRect().left;\n }\n if (gos.get(\"enableRtl\")) {\n if (useHeaderRow) {\n eViewport = eViewport.querySelector(\".ag-header-row\");\n }\n x = eViewport.clientWidth - x;\n }\n if (pinned == null && !skipScrollPadding) {\n x += ctrlsSvc.get(\"center\").getCenterViewportScrollLeft();\n }\n return x;\n}\nfunction setColumnsMoving(columns, isMoving) {\n for (const column of columns) {\n column.moving = isMoving;\n column.dispatchColEvent(\"movingChanged\", \"uiColumnMoved\");\n }\n}\n\n// packages/ag-grid-community/src/columnMove/columnDrag/moveColumnFeature.ts\nvar MOVE_FAIL_THRESHOLD = 7;\nvar SCROLL_MOVE_WIDTH = 100;\nvar SCROLL_GAP_NEEDED_BEFORE_MOVE = SCROLL_MOVE_WIDTH / 2;\nvar SCROLL_ACCELERATION_RATE = 5;\nvar SCROLL_TIME_INTERVAL = 100;\nvar MoveColumnFeature = class extends BeanStub {\n constructor(pinned) {\n super();\n this.pinned = pinned;\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.lastMovedInfo = null;\n this.isCenterContainer = !_exists(pinned);\n }\n postConstruct() {\n this.beans.ctrlsSvc.whenReady(this, (p) => {\n this.gridBodyCon = p.gridBodyCtrl;\n });\n }\n getIconName() {\n const { pinned, lastDraggingEvent } = this;\n const columns = lastDraggingEvent?.dragItem.columns ?? [];\n for (const col of columns) {\n const colPinned = col.getPinned();\n if (col.getColDef().lockPinned) {\n if (colPinned == pinned) {\n return \"move\";\n }\n continue;\n }\n if (colPinned === pinned || !pinned) {\n return \"move\";\n }\n if (!colPinned && pinned) {\n return \"pinned\";\n }\n }\n return \"notAllowed\";\n }\n onDragEnter(draggingEvent) {\n const dragItem = draggingEvent.dragItem;\n const columns = dragItem.columns;\n const dragCameFromToolPanel = draggingEvent.dragSource.type === 0 /* ToolPanel */;\n if (dragCameFromToolPanel) {\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n } else {\n const visibleState = dragItem.visibleState;\n const visibleColumns = (columns || []).filter((column) => visibleState[column.getId()]);\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n if (!this.gos.get(\"suppressMoveWhenColumnDragging\")) {\n this.attemptToPinColumns(columns, this.pinned);\n }\n this.onDragging(draggingEvent, true, true);\n }\n onDragging(draggingEvent = this.lastDraggingEvent, fromEnter = false, fakeEvent = false, finished = false) {\n const { gos, ctrlsSvc } = this.beans;\n const isSuppressMoveWhenDragging = gos.get(\"suppressMoveWhenColumnDragging\");\n if (finished && !isSuppressMoveWhenDragging) {\n this.finishColumnMoving();\n return;\n }\n this.lastDraggingEvent = draggingEvent;\n if (!draggingEvent || !finished && _missing(draggingEvent.hDirection)) {\n return;\n }\n const mouseX = normaliseX({\n x: draggingEvent.x,\n pinned: this.pinned,\n gos,\n ctrlsSvc\n });\n if (!fromEnter) {\n this.checkCenterForScrolling(mouseX);\n }\n if (isSuppressMoveWhenDragging) {\n this.handleColumnDragWhileSuppressingMovement(draggingEvent, fromEnter, fakeEvent, mouseX, finished);\n } else {\n this.handleColumnDragWhileAllowingMovement(draggingEvent, fromEnter, fakeEvent, mouseX, finished);\n }\n }\n onDragLeave() {\n this.ensureIntervalCleared();\n this.clearHighlighted();\n this.lastMovedInfo = null;\n }\n onDragStop() {\n this.onDragging(this.lastDraggingEvent, false, true, true);\n this.ensureIntervalCleared();\n this.lastMovedInfo = null;\n }\n onDragCancel() {\n this.clearHighlighted();\n this.ensureIntervalCleared();\n this.lastMovedInfo = null;\n }\n setColumnsVisible(columns, visible, source) {\n if (!columns) {\n return;\n }\n const allowedCols = columns.filter((c) => !c.getColDef().lockVisible);\n this.beans.colModel.setColsVisible(allowedCols, visible, source);\n }\n finishColumnMoving() {\n this.clearHighlighted();\n const lastMovedInfo = this.lastMovedInfo;\n if (!lastMovedInfo) {\n return;\n }\n const { columns, toIndex } = lastMovedInfo;\n this.beans.colMoves.moveColumns(columns, toIndex, \"uiColumnMoved\", true);\n }\n handleColumnDragWhileSuppressingMovement(draggingEvent, fromEnter, fakeEvent, mouseX, finished) {\n const allMovingColumns = this.getAllMovingColumns(draggingEvent, true);\n if (finished) {\n const isAttemptingToPin = this.isAttemptingToPin(allMovingColumns);\n if (isAttemptingToPin) {\n this.attemptToPinColumns(allMovingColumns, void 0, true);\n }\n const { fromLeft, xPosition } = this.getNormalisedXPositionInfo(allMovingColumns, isAttemptingToPin) || {};\n if (fromLeft == null || xPosition == null) {\n this.finishColumnMoving();\n return;\n }\n this.moveColumnsAfterHighlight({\n allMovingColumns,\n xPosition,\n fromEnter,\n fakeEvent,\n fromLeft\n });\n } else {\n if (!this.beans.dragAndDrop.isDropZoneWithinThisGrid(draggingEvent)) {\n return;\n }\n this.highlightHoveredColumn(allMovingColumns, mouseX);\n }\n }\n handleColumnDragWhileAllowingMovement(draggingEvent, fromEnter, fakeEvent, mouseX, finished) {\n const allMovingColumns = this.getAllMovingColumns(draggingEvent);\n const fromLeft = this.normaliseDirection(draggingEvent.hDirection) === \"right\";\n const isFromHeader = draggingEvent.dragSource.type === 1 /* HeaderCell */;\n const params = this.getMoveColumnParams({\n allMovingColumns,\n isFromHeader,\n xPosition: mouseX,\n fromLeft,\n fromEnter,\n fakeEvent\n });\n const lastMovedInfo = attemptMoveColumns({ ...params, finished });\n if (lastMovedInfo) {\n this.lastMovedInfo = lastMovedInfo;\n }\n }\n getAllMovingColumns(draggingEvent, useSplit = false) {\n const dragItem = draggingEvent.dragSource.getDragItem();\n let columns = null;\n if (useSplit) {\n columns = dragItem.columnsInSplit;\n if (!columns) {\n columns = dragItem.columns;\n }\n } else {\n columns = dragItem.columns;\n }\n const conditionCallback = (col) => col.getColDef().lockPinned ? col.getPinned() == this.pinned : true;\n if (!columns) {\n return [];\n }\n return columns.filter(conditionCallback);\n }\n getMoveColumnParams(params) {\n const { allMovingColumns, isFromHeader, xPosition, fromLeft, fromEnter, fakeEvent } = params;\n const { gos, colModel, colMoves, visibleCols } = this.beans;\n return {\n allMovingColumns,\n isFromHeader,\n fromLeft,\n xPosition,\n pinned: this.pinned,\n fromEnter,\n fakeEvent,\n gos,\n colModel,\n colMoves,\n visibleCols\n };\n }\n highlightHoveredColumn(movingColumns, mouseX) {\n const { gos, colModel } = this.beans;\n const isRtl = gos.get(\"enableRtl\");\n const consideredColumns = colModel.getCols().filter((col) => col.isVisible() && col.getPinned() === this.pinned);\n let start = null;\n let width = null;\n let targetColumn = null;\n for (const col of consideredColumns) {\n width = col.getActualWidth();\n start = this.getNormalisedColumnLeft(col, 0, isRtl);\n if (start != null) {\n const end = start + width;\n if (start <= mouseX && end >= mouseX) {\n targetColumn = col;\n break;\n }\n }\n start = null;\n width = null;\n }\n if (!targetColumn) {\n for (let i = consideredColumns.length - 1; i >= 0; i--) {\n const currentColumn = consideredColumns[i];\n const parent = consideredColumns[i].getParent();\n if (!parent) {\n targetColumn = currentColumn;\n break;\n }\n const leafDisplayedCols = parent?.getDisplayedLeafColumns();\n if (leafDisplayedCols.length) {\n targetColumn = _last(leafDisplayedCols);\n break;\n }\n }\n if (!targetColumn) {\n return;\n }\n start = this.getNormalisedColumnLeft(targetColumn, 0, isRtl);\n width = targetColumn.getActualWidth();\n } else if (movingColumns.indexOf(targetColumn) !== -1) {\n targetColumn = null;\n }\n if (this.lastHighlightedColumn?.column !== targetColumn) {\n this.clearHighlighted();\n }\n if (targetColumn == null || start == null || width == null) {\n return;\n }\n let position;\n if (mouseX - start < width / 2 !== isRtl) {\n position = 0 /* Before */;\n } else {\n position = 1 /* After */;\n }\n setColumnHighlighted(targetColumn, position);\n this.lastHighlightedColumn = { column: targetColumn, position };\n }\n getNormalisedXPositionInfo(allMovingColumns, isAttemptingToPin) {\n const { gos, visibleCols } = this.beans;\n const isRtl = gos.get(\"enableRtl\");\n const { firstMovingCol, column, position } = this.getColumnMoveAndTargetInfo(\n allMovingColumns,\n isAttemptingToPin,\n isRtl\n );\n if (!firstMovingCol || !column || position == null) {\n return;\n }\n const visibleColumns = visibleCols.allCols;\n const movingColIndex = visibleColumns.indexOf(firstMovingCol);\n const targetIndex = visibleColumns.indexOf(column);\n const isBefore = position === 0 /* Before */ !== isRtl;\n const fromLeft = movingColIndex < targetIndex || movingColIndex === targetIndex && !isBefore;\n let diff = 0;\n if (isBefore) {\n if (fromLeft) {\n diff -= 1;\n }\n } else {\n if (!fromLeft) {\n diff += 1;\n }\n }\n if (targetIndex + diff === movingColIndex) {\n return;\n }\n const targetColumn = visibleColumns[targetIndex + diff];\n if (!targetColumn) {\n return;\n }\n const xPosition = this.getNormalisedColumnLeft(targetColumn, 20, isRtl);\n return { fromLeft, xPosition };\n }\n getColumnMoveAndTargetInfo(allMovingColumns, isAttemptingToPin, isRtl) {\n const lastHighlightedColumn = this.lastHighlightedColumn || {};\n const { firstMovingCol, lastMovingCol } = findFirstAndLastMovingColumns(allMovingColumns);\n if (!firstMovingCol || !lastMovingCol || lastHighlightedColumn.column || !isAttemptingToPin) {\n return {\n firstMovingCol,\n ...lastHighlightedColumn\n };\n }\n const pinned = this.getPinDirection();\n const isLeft = pinned === \"left\";\n return {\n firstMovingCol,\n position: isLeft ? 1 /* After */ : 0 /* Before */,\n column: isLeft !== isRtl ? firstMovingCol : lastMovingCol\n };\n }\n normaliseDirection(hDirection) {\n if (this.gos.get(\"enableRtl\")) {\n switch (hDirection) {\n case \"left\":\n return \"right\";\n case \"right\":\n return \"left\";\n }\n }\n return hDirection;\n }\n getNormalisedColumnLeft(col, padding, isRtl) {\n const { gos, ctrlsSvc } = this.beans;\n const left = col.getLeft();\n if (left == null) {\n return null;\n }\n const width = col.getActualWidth();\n return normaliseX({\n x: isRtl ? left + width - padding : left + padding,\n pinned: col.getPinned(),\n useHeaderRow: isRtl,\n skipScrollPadding: true,\n gos,\n ctrlsSvc\n });\n }\n isAttemptingToPin(columns) {\n const isMovingHorizontally = this.needToMoveLeft || this.needToMoveRight;\n const isFailedMoreThanThreshold = this.failedMoveAttempts > MOVE_FAIL_THRESHOLD;\n return isMovingHorizontally && isFailedMoreThanThreshold || columns.some((col) => col.getPinned() !== this.pinned);\n }\n moveColumnsAfterHighlight(params) {\n const { allMovingColumns, xPosition, fromEnter, fakeEvent, fromLeft } = params;\n const columnMoveParams = this.getMoveColumnParams({\n allMovingColumns,\n isFromHeader: true,\n xPosition,\n fromLeft,\n fromEnter,\n fakeEvent\n });\n const { columns, toIndex } = getBestColumnMoveIndexFromXPosition(columnMoveParams) || {};\n if (columns && toIndex != null) {\n this.lastMovedInfo = {\n columns,\n toIndex\n };\n }\n this.finishColumnMoving();\n }\n clearHighlighted() {\n const { lastHighlightedColumn } = this;\n if (!lastHighlightedColumn) {\n return;\n }\n setColumnHighlighted(lastHighlightedColumn.column, null);\n this.lastHighlightedColumn = null;\n }\n checkCenterForScrolling(xAdjustedForScroll) {\n if (!this.isCenterContainer) {\n return;\n }\n const centerCtrl = this.beans.ctrlsSvc.get(\"center\");\n const firstVisiblePixel = centerCtrl.getCenterViewportScrollLeft();\n const lastVisiblePixel = firstVisiblePixel + centerCtrl.getCenterWidth();\n let needToMoveRight;\n let needToMoveLeft;\n if (this.gos.get(\"enableRtl\")) {\n needToMoveRight = xAdjustedForScroll < firstVisiblePixel + SCROLL_GAP_NEEDED_BEFORE_MOVE;\n needToMoveLeft = xAdjustedForScroll > lastVisiblePixel - SCROLL_GAP_NEEDED_BEFORE_MOVE;\n } else {\n needToMoveLeft = xAdjustedForScroll < firstVisiblePixel + SCROLL_GAP_NEEDED_BEFORE_MOVE;\n needToMoveRight = xAdjustedForScroll > lastVisiblePixel - SCROLL_GAP_NEEDED_BEFORE_MOVE;\n }\n this.needToMoveRight = needToMoveRight;\n this.needToMoveLeft = needToMoveLeft;\n if (needToMoveLeft || needToMoveRight) {\n this.ensureIntervalStarted();\n } else {\n this.ensureIntervalCleared();\n }\n }\n ensureIntervalStarted() {\n if (this.movingIntervalId) {\n return;\n }\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), SCROLL_TIME_INTERVAL);\n this.beans.dragAndDrop.getDragAndDropImageComponent()?.setIcon(this.needToMoveLeft ? \"left\" : \"right\", true);\n }\n ensureIntervalCleared() {\n if (!this.movingIntervalId) {\n return;\n }\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.failedMoveAttempts = 0;\n this.beans.dragAndDrop.getDragAndDropImageComponent()?.setIcon(this.getIconName(), false);\n }\n moveInterval() {\n let pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + this.intervalCount * SCROLL_ACCELERATION_RATE;\n if (pixelsToMove > SCROLL_MOVE_WIDTH) {\n pixelsToMove = SCROLL_MOVE_WIDTH;\n }\n let pixelsMoved = null;\n const scrollFeature = this.gridBodyCon.scrollFeature;\n if (this.needToMoveLeft) {\n pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);\n } else if (this.needToMoveRight) {\n pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n } else {\n this.failedMoveAttempts++;\n const { pinnedCols, dragAndDrop, gos } = this.beans;\n if (this.failedMoveAttempts <= MOVE_FAIL_THRESHOLD + 1 || !pinnedCols) {\n return;\n }\n dragAndDrop.getDragAndDropImageComponent()?.setIcon(\"pinned\", false);\n if (!gos.get(\"suppressMoveWhenColumnDragging\")) {\n const columns = this.lastDraggingEvent?.dragItem.columns;\n this.attemptToPinColumns(columns, void 0, true);\n }\n }\n }\n getPinDirection() {\n if (this.needToMoveLeft || this.pinned === \"left\") {\n return \"left\";\n }\n if (this.needToMoveRight || this.pinned === \"right\") {\n return \"right\";\n }\n }\n attemptToPinColumns(columns, pinned, fromMoving = false) {\n const allowedCols = (columns || []).filter((c) => !c.getColDef().lockPinned);\n if (!allowedCols.length) {\n return 0;\n }\n if (fromMoving) {\n pinned = this.getPinDirection();\n }\n const { pinnedCols, dragAndDrop } = this.beans;\n pinnedCols?.setColsPinned(allowedCols, pinned, \"uiColumnDragged\");\n if (fromMoving) {\n dragAndDrop.nudge();\n }\n return allowedCols.length;\n }\n destroy() {\n super.destroy();\n this.lastDraggingEvent = null;\n this.clearHighlighted();\n this.lastMovedInfo = null;\n }\n};\nfunction setColumnHighlighted(column, highlighted) {\n if (column.highlighted === highlighted) {\n return;\n }\n column.highlighted = highlighted;\n column.dispatchColEvent(\"headerHighlightChanged\", \"uiColumnMoved\");\n}\nfunction findFirstAndLastMovingColumns(allMovingColumns) {\n const moveLen = allMovingColumns.length;\n let firstMovingCol;\n let lastMovingCol;\n for (let i = 0; i < moveLen; i++) {\n if (!firstMovingCol) {\n const leftCol = allMovingColumns[i];\n if (leftCol.getLeft() != null) {\n firstMovingCol = leftCol;\n }\n }\n if (!lastMovingCol) {\n const rightCol = allMovingColumns[moveLen - 1 - i];\n if (rightCol.getLeft() != null) {\n lastMovingCol = rightCol;\n }\n }\n if (firstMovingCol && lastMovingCol) {\n break;\n }\n }\n return { firstMovingCol, lastMovingCol };\n}\n\n// packages/ag-grid-community/src/columnMove/columnDrag/bodyDropTarget.ts\nvar BodyDropTarget = class extends BeanStub {\n constructor(pinned, eContainer) {\n super();\n this.pinned = pinned;\n this.eContainer = eContainer;\n }\n postConstruct() {\n const { ctrlsSvc, dragAndDrop } = this.beans;\n const pinned = this.pinned;\n ctrlsSvc.whenReady(this, (p) => {\n let eSecondaryContainers;\n const eBodyViewport = p.gridBodyCtrl.eBodyViewport;\n switch (pinned) {\n case \"left\":\n eSecondaryContainers = [\n [eBodyViewport, p.left.eContainer],\n [p.bottomLeft.eContainer],\n [p.topLeft.eContainer]\n ];\n break;\n case \"right\":\n eSecondaryContainers = [\n [eBodyViewport, p.right.eContainer],\n [p.bottomRight.eContainer],\n [p.topRight.eContainer]\n ];\n break;\n default:\n eSecondaryContainers = [\n [eBodyViewport, p.center.eViewport],\n [p.bottomCenter.eViewport],\n [p.topCenter.eViewport]\n ];\n break;\n }\n this.eSecondaryContainers = eSecondaryContainers;\n });\n this.moveColumnFeature = this.createManagedBean(new MoveColumnFeature(pinned));\n this.bodyDropPivotTarget = this.createManagedBean(new BodyDropPivotTarget(pinned));\n dragAndDrop.addDropTarget(this);\n this.addDestroyFunc(() => dragAndDrop.removeDropTarget(this));\n }\n isInterestedIn(type) {\n return type === 1 /* HeaderCell */ || type === 0 /* ToolPanel */ && this.gos.get(\"allowDragFromColumnsToolPanel\");\n }\n getSecondaryContainers() {\n return this.eSecondaryContainers;\n }\n getContainer() {\n return this.eContainer;\n }\n getIconName() {\n return this.currentDropListener.getIconName();\n }\n // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n // dropped into the grid's body.\n isDropColumnInPivotMode(draggingEvent) {\n return this.beans.colModel.isPivotMode() && draggingEvent.dragSource.type === 0 /* ToolPanel */;\n }\n onDragEnter(draggingEvent) {\n this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;\n this.currentDropListener.onDragEnter(draggingEvent);\n }\n onDragLeave(params) {\n this.currentDropListener.onDragLeave(params);\n }\n onDragging(params) {\n this.currentDropListener.onDragging(params);\n }\n onDragStop(params) {\n this.currentDropListener.onDragStop(params);\n }\n onDragCancel() {\n this.currentDropListener.onDragCancel();\n }\n};\n\n// packages/ag-grid-community/src/columnMove/columnMoveService.ts\nvar ColumnMoveService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colMoves\";\n }\n moveColumnByIndex(fromIndex, toIndex, source) {\n const gridColumns = this.beans.colModel.getCols();\n if (!gridColumns) {\n return;\n }\n const column = gridColumns[fromIndex];\n this.moveColumns([column], toIndex, source);\n }\n moveColumns(columnsToMoveKeys, toIndex, source, finished = true) {\n const { colModel, colAnimation, visibleCols, eventSvc } = this.beans;\n const gridColumns = colModel.getCols();\n if (!gridColumns) {\n return;\n }\n if (toIndex > gridColumns.length - columnsToMoveKeys.length) {\n _warn(30, { toIndex });\n return;\n }\n colAnimation?.start();\n const movedColumns = colModel.getColsForKeys(columnsToMoveKeys);\n if (this.doesMovePassRules(movedColumns, toIndex)) {\n _moveInArray(colModel.getCols(), movedColumns, toIndex);\n visibleCols.refresh(source);\n eventSvc.dispatchEvent({\n type: \"columnMoved\",\n columns: movedColumns,\n column: movedColumns.length === 1 ? movedColumns[0] : null,\n toIndex,\n finished,\n source\n });\n }\n colAnimation?.finish();\n }\n doesMovePassRules(columnsToMove, toIndex) {\n const proposedColumnOrder = this.getProposedColumnOrder(columnsToMove, toIndex);\n return this.doesOrderPassRules(proposedColumnOrder);\n }\n doesOrderPassRules(gridOrder) {\n const { colModel, gos } = this.beans;\n if (!doesMovePassMarryChildren(gridOrder, colModel.getColTree())) {\n return false;\n }\n const doesMovePassLockedPositions = (proposedColumnOrder) => {\n const lockPositionToPlacement = (position) => {\n if (!position) {\n return 0 /* NONE */;\n }\n return position === \"left\" || position === true ? -1 /* LEFT */ : 1 /* RIGHT */;\n };\n const isRtl = gos.get(\"enableRtl\");\n let lastPlacement = isRtl ? 1 /* RIGHT */ : -1 /* LEFT */;\n let rulePassed = true;\n proposedColumnOrder.forEach((col) => {\n const placement = lockPositionToPlacement(col.getColDef().lockPosition);\n if (isRtl) {\n if (placement > lastPlacement) {\n rulePassed = false;\n }\n } else {\n if (placement < lastPlacement) {\n rulePassed = false;\n }\n }\n lastPlacement = placement;\n });\n return rulePassed;\n };\n if (!doesMovePassLockedPositions(gridOrder)) {\n return false;\n }\n return true;\n }\n getProposedColumnOrder(columnsToMove, toIndex) {\n const gridColumns = this.beans.colModel.getCols();\n const proposedColumnOrder = gridColumns.slice();\n _moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n return proposedColumnOrder;\n }\n createBodyDropTarget(pinned, dropContainer) {\n return new BodyDropTarget(pinned, dropContainer);\n }\n moveHeader(hDirection, eGui, column, pinned, bean) {\n const { ctrlsSvc, gos, colModel, visibleCols, focusSvc } = this.beans;\n const rect = eGui.getBoundingClientRect();\n const left = rect.left;\n const isGroup = isColumnGroup2(column);\n const width = isGroup ? rect.width : column.getActualWidth();\n const isLeft = hDirection === \"left\" !== gos.get(\"enableRtl\");\n const xPosition = normaliseX({\n x: isLeft ? left - 20 : left + width + 20,\n pinned,\n fromKeyboard: true,\n gos,\n ctrlsSvc\n });\n const headerPosition = focusSvc.focusedHeader;\n attemptMoveColumns({\n allMovingColumns: isGroup ? column.getLeafColumns() : [column],\n isFromHeader: true,\n fromLeft: hDirection === \"right\",\n xPosition,\n pinned,\n fromEnter: false,\n fakeEvent: false,\n gos,\n colModel,\n colMoves: this,\n visibleCols,\n finished: true\n });\n let targetColumn;\n if (isGroup) {\n const displayedLeafColumns = column.getDisplayedLeafColumns();\n targetColumn = isLeft ? displayedLeafColumns[0] : _last(displayedLeafColumns);\n } else {\n targetColumn = column;\n }\n ctrlsSvc.getScrollFeature().ensureColumnVisible(targetColumn, \"auto\");\n if ((!bean.isAlive() || gos.get(\"ensureDomOrder\")) && headerPosition) {\n let restoreFocusColumn;\n if (isGroup) {\n const groupId = column.getGroupId();\n const leafCols = column.getLeafColumns();\n if (!leafCols.length) {\n return;\n }\n const parent = leafCols[0].getParent();\n if (!parent) {\n return;\n }\n restoreFocusColumn = findGroupWidthId(parent, groupId);\n } else {\n restoreFocusColumn = column;\n }\n if (restoreFocusColumn) {\n focusSvc.focusHeaderPosition({\n headerPosition: {\n ...headerPosition,\n column: restoreFocusColumn\n }\n });\n }\n }\n }\n setDragSourceForHeader(eSource, column, displayName) {\n const { gos, colModel, dragAndDrop, visibleCols } = this.beans;\n let hideColumnOnExit = !gos.get(\"suppressDragLeaveHidesColumns\");\n const isGroup = isColumnGroup2(column);\n const columns = isGroup ? column.getProvidedColumnGroup().getLeafColumns() : [column];\n const getDragItem = isGroup ? () => createDragItemForGroup(column, visibleCols.allCols) : () => createDragItem(column);\n const dragSource = {\n type: 1 /* HeaderCell */,\n eElement: eSource,\n getDefaultIconName: () => hideColumnOnExit ? \"hide\" : \"notAllowed\",\n getDragItem,\n dragItemName: displayName,\n onDragStarted: () => {\n hideColumnOnExit = !gos.get(\"suppressDragLeaveHidesColumns\");\n setColumnsMoving(columns, true);\n },\n onDragStopped: () => setColumnsMoving(columns, false),\n onDragCancelled: () => setColumnsMoving(columns, false),\n onGridEnter: (dragItem) => {\n if (hideColumnOnExit) {\n const { columns: columns2 = [], visibleState } = dragItem ?? {};\n const hasVisibleState = isGroup ? (col) => !visibleState || visibleState[col.getColId()] : () => true;\n const unlockedColumns = columns2.filter(\n (col) => !col.getColDef().lockVisible && hasVisibleState(col)\n );\n colModel.setColsVisible(unlockedColumns, true, \"uiColumnMoved\");\n }\n },\n onGridExit: (dragItem) => {\n if (hideColumnOnExit) {\n const unlockedColumns = dragItem?.columns?.filter((col) => !col.getColDef().lockVisible) || [];\n colModel.setColsVisible(unlockedColumns, false, \"uiColumnMoved\");\n }\n }\n };\n dragAndDrop.addDragSource(dragSource, true);\n return dragSource;\n }\n};\nfunction findGroupWidthId(columnGroup, id) {\n while (columnGroup) {\n if (columnGroup.getGroupId() === id) {\n return columnGroup;\n }\n columnGroup = columnGroup.getParent();\n }\n return void 0;\n}\nfunction createDragItem(column) {\n const visibleState = {};\n visibleState[column.getId()] = column.isVisible();\n return {\n columns: [column],\n visibleState\n };\n}\nfunction createDragItemForGroup(columnGroup, allCols) {\n const allColumnsOriginalOrder = columnGroup.getProvidedColumnGroup().getLeafColumns();\n const visibleState = {};\n allColumnsOriginalOrder.forEach((column) => visibleState[column.getId()] = column.isVisible());\n const allColumnsCurrentOrder = [];\n allCols.forEach((column) => {\n if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n allColumnsCurrentOrder.push(column);\n _removeFromArray(allColumnsOriginalOrder, column);\n }\n });\n allColumnsOriginalOrder.forEach((column) => allColumnsCurrentOrder.push(column));\n const columnsInSplit = [];\n const columnGroupColumns = columnGroup.getLeafColumns();\n for (const col of allColumnsCurrentOrder) {\n if (columnGroupColumns.indexOf(col) !== -1) {\n columnsInSplit.push(col);\n }\n }\n return {\n columns: allColumnsCurrentOrder,\n columnsInSplit,\n visibleState\n };\n}\n\n// packages/ag-grid-community/src/columnMove/columnMoveModule.ts\nvar ColumnMoveModule = {\n moduleName: \"ColumnMove\",\n version: VERSION,\n beans: [ColumnMoveService, ColumnAnimationService],\n apiFunctions: {\n moveColumnByIndex,\n moveColumns\n },\n dependsOn: [SharedDragAndDropModule],\n css: [columnMovingCSS]\n};\n\n// packages/ag-grid-community/src/rendering/autoWidthCalculator.ts\nvar AutoWidthCalculator = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"autoWidthCalc\";\n }\n postConstruct() {\n this.beans.ctrlsSvc.whenReady(this, (p) => {\n this.centerRowContainerCtrl = p.center;\n });\n }\n // this is the trick: we create a dummy container and clone all the cells\n // into the dummy, then check the dummy's width. then destroy the dummy\n // as we don't need it any more.\n // drawback: only the cells visible on the screen are considered\n getPreferredWidthForColumn(column, skipHeader) {\n const eHeaderCell = this.getHeaderCellForColumn(column);\n if (!eHeaderCell) {\n return -1;\n }\n const elements = this.beans.rowRenderer.getAllCellsNotSpanningForColumn(column);\n if (!skipHeader) {\n elements.push(eHeaderCell);\n }\n return this.getPreferredWidthForElements(elements);\n }\n getPreferredWidthForColumnGroup(columnGroup) {\n const eHeaderCell = this.getHeaderCellForColumn(columnGroup);\n if (!eHeaderCell) {\n return -1;\n }\n return this.getPreferredWidthForElements([eHeaderCell]);\n }\n getPreferredWidthForElements(elements, extraPadding) {\n const eDummyContainer = document.createElement(\"form\");\n eDummyContainer.style.position = \"fixed\";\n const eBodyContainer = this.centerRowContainerCtrl.eContainer;\n elements.forEach((el) => this.cloneItemIntoDummy(el, eDummyContainer));\n eBodyContainer.appendChild(eDummyContainer);\n const dummyContainerWidth = eDummyContainer.offsetWidth;\n eBodyContainer.removeChild(eDummyContainer);\n extraPadding = extraPadding ?? this.gos.get(\"autoSizePadding\");\n return dummyContainerWidth + extraPadding;\n }\n getHeaderCellForColumn(column) {\n let element = null;\n this.beans.ctrlsSvc.getHeaderRowContainerCtrls().forEach((container) => {\n const res = container.getHtmlElementForColumnHeader(column);\n if (res != null) {\n element = res;\n }\n });\n return element;\n }\n cloneItemIntoDummy(eCell, eDummyContainer) {\n const eCellClone = eCell.cloneNode(true);\n eCellClone.style.width = \"\";\n eCellClone.style.position = \"static\";\n eCellClone.style.left = \"\";\n const eCloneParent = document.createElement(\"div\");\n const eCloneParentClassList = eCloneParent.classList;\n const isHeader = [\"ag-header-cell\", \"ag-header-group-cell\"].some((cls) => eCellClone.classList.contains(cls));\n if (isHeader) {\n eCloneParentClassList.add(\"ag-header\", \"ag-header-row\");\n eCloneParent.style.position = \"static\";\n } else {\n eCloneParentClassList.add(\"ag-row\");\n }\n let pointer = eCell.parentElement;\n while (pointer) {\n const isRow = [\"ag-header-row\", \"ag-row\"].some((cls) => pointer.classList.contains(cls));\n if (isRow) {\n for (let i = 0; i < pointer.classList.length; i++) {\n const item = pointer.classList[i];\n if (item != \"ag-row-position-absolute\") {\n eCloneParentClassList.add(item);\n }\n }\n break;\n }\n pointer = pointer.parentElement;\n }\n eCloneParent.appendChild(eCellClone);\n eDummyContainer.appendChild(eCloneParent);\n }\n};\n\n// packages/ag-grid-community/src/rendering/autoWidthModule.ts\nvar AutoWidthModule = {\n moduleName: \"AutoWidth\",\n version: VERSION,\n beans: [AutoWidthCalculator]\n};\n\n// packages/ag-grid-community/src/columnResize/columnResizeApi.ts\nfunction setColumnWidths(beans, columnWidths, finished = true, source = \"api\") {\n beans.colResize?.setColumnWidths(columnWidths, false, finished, source);\n}\n\n// packages/ag-grid-community/src/columnResize/groupResizeFeature.ts\nvar GroupResizeFeature = class extends BeanStub {\n constructor(comp, eResize, pinned, columnGroup) {\n super();\n this.comp = comp;\n this.eResize = eResize;\n this.pinned = pinned;\n this.columnGroup = columnGroup;\n }\n postConstruct() {\n if (!this.columnGroup.isResizable()) {\n this.comp.setResizableDisplayed(false);\n return;\n }\n const { horizontalResizeSvc, gos, colAutosize } = this.beans;\n const finishedWithResizeFunc = horizontalResizeSvc.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n if (!gos.get(\"suppressAutoSize\") && colAutosize) {\n this.addDestroyFunc(\n colAutosize.addColumnGroupResize(\n this.eResize,\n this.columnGroup,\n () => this.resizeLeafColumnsToFit(\"uiColumnResized\")\n )\n );\n }\n }\n onResizeStart(shiftKey) {\n const {\n columnsToResize,\n resizeStartWidth,\n resizeRatios,\n groupAfterColumns,\n groupAfterStartWidth,\n groupAfterRatios\n } = this.getInitialValues(shiftKey);\n this.resizeCols = columnsToResize;\n this.resizeStartWidth = resizeStartWidth;\n this.resizeRatios = resizeRatios;\n this.resizeTakeFromCols = groupAfterColumns;\n this.resizeTakeFromStartWidth = groupAfterStartWidth;\n this.resizeTakeFromRatios = groupAfterRatios;\n this.toggleColumnResizing(true);\n }\n onResizing(finished, resizeAmount, source = \"uiColumnResized\") {\n const resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n const width = this.resizeStartWidth + resizeAmountNormalised;\n this.resizeColumnsFromLocalValues(width, source, finished);\n }\n getInitialValues(shiftKey) {\n const getInitialSizeOfColumns = (columns) => columns.reduce((totalWidth, column) => totalWidth + column.getActualWidth(), 0);\n const getSizeRatiosOfColumns = (columns, initialSizeOfColumns) => columns.map((column) => column.getActualWidth() / initialSizeOfColumns);\n const columnsToResize = this.getColumnsToResize();\n const resizeStartWidth = getInitialSizeOfColumns(columnsToResize);\n const resizeRatios = getSizeRatiosOfColumns(columnsToResize, resizeStartWidth);\n const columnSizeAndRatios = {\n columnsToResize,\n resizeStartWidth,\n resizeRatios\n };\n let groupAfter = null;\n if (shiftKey) {\n groupAfter = this.beans.colGroupSvc?.getGroupAtDirection(this.columnGroup, \"After\") ?? null;\n }\n if (groupAfter) {\n const takeFromLeafCols = groupAfter.getDisplayedLeafColumns();\n const groupAfterColumns = columnSizeAndRatios.groupAfterColumns = takeFromLeafCols.filter(\n (col) => col.isResizable()\n );\n const groupAfterStartWidth = columnSizeAndRatios.groupAfterStartWidth = getInitialSizeOfColumns(groupAfterColumns);\n columnSizeAndRatios.groupAfterRatios = getSizeRatiosOfColumns(groupAfterColumns, groupAfterStartWidth);\n } else {\n columnSizeAndRatios.groupAfterColumns = void 0;\n columnSizeAndRatios.groupAfterStartWidth = void 0;\n columnSizeAndRatios.groupAfterRatios = void 0;\n }\n return columnSizeAndRatios;\n }\n resizeLeafColumnsToFit(source) {\n const preferredSize = this.beans.autoWidthCalc.getPreferredWidthForColumnGroup(this.columnGroup);\n const initialValues = this.getInitialValues();\n if (preferredSize > initialValues.resizeStartWidth) {\n this.resizeColumns(initialValues, preferredSize, source, true);\n }\n }\n resizeColumnsFromLocalValues(totalWidth, source, finished = true) {\n if (!this.resizeCols || !this.resizeRatios) {\n return;\n }\n const initialValues = {\n columnsToResize: this.resizeCols,\n resizeStartWidth: this.resizeStartWidth,\n resizeRatios: this.resizeRatios,\n groupAfterColumns: this.resizeTakeFromCols,\n groupAfterStartWidth: this.resizeTakeFromStartWidth,\n groupAfterRatios: this.resizeTakeFromRatios\n };\n this.resizeColumns(initialValues, totalWidth, source, finished);\n }\n resizeColumns(initialValues, totalWidth, source, finished = true) {\n const {\n columnsToResize,\n resizeStartWidth,\n resizeRatios,\n groupAfterColumns,\n groupAfterStartWidth,\n groupAfterRatios\n } = initialValues;\n const resizeSets = [];\n resizeSets.push({\n columns: columnsToResize,\n ratios: resizeRatios,\n width: totalWidth\n });\n if (groupAfterColumns) {\n const diff = totalWidth - resizeStartWidth;\n resizeSets.push({\n columns: groupAfterColumns,\n ratios: groupAfterRatios,\n width: groupAfterStartWidth - diff\n });\n }\n this.beans.colResize?.resizeColumnSets({\n resizeSets,\n finished,\n source\n });\n if (finished) {\n this.toggleColumnResizing(false);\n }\n }\n toggleColumnResizing(resizing) {\n this.comp.addOrRemoveCssClass(\"ag-column-resizing\", resizing);\n }\n getColumnsToResize() {\n const leafCols = this.columnGroup.getDisplayedLeafColumns();\n return leafCols.filter((col) => col.isResizable());\n }\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n normaliseDragChange(dragChange) {\n let result = dragChange;\n if (this.gos.get(\"enableRtl\")) {\n if (this.pinned !== \"left\") {\n result *= -1;\n }\n } else if (this.pinned === \"right\") {\n result *= -1;\n }\n return result;\n }\n destroy() {\n super.destroy();\n this.resizeCols = void 0;\n this.resizeRatios = void 0;\n this.resizeTakeFromCols = void 0;\n this.resizeTakeFromRatios = void 0;\n }\n};\n\n// packages/ag-grid-community/src/columnResize/resizeFeature.ts\nvar ResizeFeature = class extends BeanStub {\n constructor(pinned, column, eResize, comp, ctrl) {\n super();\n this.pinned = pinned;\n this.column = column;\n this.eResize = eResize;\n this.comp = comp;\n this.ctrl = ctrl;\n }\n postConstruct() {\n const destroyResizeFuncs = [];\n let canResize;\n let canAutosize;\n const addResize = () => {\n _setDisplayed(this.eResize, canResize);\n if (!canResize) {\n return;\n }\n const { horizontalResizeSvc, colAutosize } = this.beans;\n const finishedWithResizeFunc = horizontalResizeSvc.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n destroyResizeFuncs.push(finishedWithResizeFunc);\n if (canAutosize && colAutosize) {\n destroyResizeFuncs.push(colAutosize.addColumnAutosize(this.eResize, this.column));\n }\n };\n const removeResize = () => {\n destroyResizeFuncs.forEach((f) => f());\n destroyResizeFuncs.length = 0;\n };\n const refresh = () => {\n const resize = this.column.isResizable();\n const autoSize = !this.gos.get(\"suppressAutoSize\") && !this.column.getColDef().suppressAutoSize;\n const propertyChange = resize !== canResize || autoSize !== canAutosize;\n if (propertyChange) {\n canResize = resize;\n canAutosize = autoSize;\n removeResize();\n addResize();\n }\n };\n refresh();\n this.addDestroyFunc(removeResize);\n this.ctrl.setRefreshFunction(\"resize\", refresh);\n }\n onResizing(finished, resizeAmount) {\n const { column: key, lastResizeAmount, resizeStartWidth, beans } = this;\n const resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n const newWidth = resizeStartWidth + resizeAmountNormalised;\n const columnWidths = [{ key, newWidth }];\n const { pinnedCols, ctrlsSvc, colResize } = beans;\n if (this.column.getPinned()) {\n const leftWidth = pinnedCols?.leftWidth ?? 0;\n const rightWidth = pinnedCols?.rightWidth ?? 0;\n const bodyWidth = _getInnerWidth(ctrlsSvc.getGridBodyCtrl().eBodyViewport) - 50;\n if (leftWidth + rightWidth + (resizeAmountNormalised - lastResizeAmount) > bodyWidth) {\n return;\n }\n }\n this.lastResizeAmount = resizeAmountNormalised;\n colResize?.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, \"uiColumnResized\");\n if (finished) {\n this.toggleColumnResizing(false);\n }\n }\n onResizeStart(shiftKey) {\n this.resizeStartWidth = this.column.getActualWidth();\n this.lastResizeAmount = 0;\n this.resizeWithShiftKey = shiftKey;\n this.toggleColumnResizing(true);\n }\n toggleColumnResizing(resizing) {\n this.comp.addOrRemoveCssClass(\"ag-column-resizing\", resizing);\n }\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n normaliseResizeAmount(dragChange) {\n let result = dragChange;\n const notPinningLeft = this.pinned !== \"left\";\n const pinningRight = this.pinned === \"right\";\n if (this.gos.get(\"enableRtl\")) {\n if (notPinningLeft) {\n result *= -1;\n }\n } else {\n if (pinningRight) {\n result *= -1;\n }\n }\n return result;\n }\n};\n\n// packages/ag-grid-community/src/columnResize/columnResizeService.ts\nvar ColumnResizeService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colResize\";\n }\n setColumnWidths(columnWidths, shiftKey, finished, source) {\n const sets = [];\n const { colModel, gos, visibleCols } = this.beans;\n columnWidths.forEach((columnWidth) => {\n const col = colModel.getColDefCol(columnWidth.key) || colModel.getCol(columnWidth.key);\n if (!col) {\n return;\n }\n sets.push({\n width: columnWidth.newWidth,\n ratios: [1],\n columns: [col]\n });\n const defaultIsShift = gos.get(\"colResizeDefault\") === \"shift\";\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n const otherCol = visibleCols.getColAfter(col);\n if (!otherCol) {\n return;\n }\n const widthDiff = col.getActualWidth() - columnWidth.newWidth;\n const otherColWidth = otherCol.getActualWidth() + widthDiff;\n sets.push({\n width: otherColWidth,\n ratios: [1],\n columns: [otherCol]\n });\n }\n });\n if (sets.length === 0) {\n return;\n }\n this.resizeColumnSets({\n resizeSets: sets,\n finished,\n source\n });\n }\n // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n // be resized. this is used for example when user tries to resize a group and holds shift key,\n // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n // so that's two sets for this method.\n resizeColumnSets(params) {\n const { resizeSets, finished, source } = params;\n const passMinMaxCheck = !resizeSets || resizeSets.every((columnResizeSet) => checkMinAndMaxWidthsForSet(columnResizeSet));\n if (!passMinMaxCheck) {\n if (finished) {\n const columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n dispatchColumnResizedEvent(this.eventSvc, columns, finished, source);\n }\n return;\n }\n const changedCols = [];\n const allResizedCols = [];\n resizeSets.forEach((set) => {\n const { width, columns, ratios } = set;\n const newWidths = {};\n const finishedCols = {};\n columns.forEach((col) => allResizedCols.push(col));\n let finishedColsGrew = true;\n let loopCount = 0;\n while (finishedColsGrew) {\n loopCount++;\n if (loopCount > 1e3) {\n _error(31);\n break;\n }\n finishedColsGrew = false;\n const subsetCols = [];\n let subsetRatioTotal = 0;\n let pixelsToDistribute = width;\n columns.forEach((col, index) => {\n const thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n } else {\n subsetCols.push(col);\n const ratioThisCol = ratios[index];\n subsetRatioTotal += ratioThisCol;\n }\n });\n const ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach((col, index) => {\n const lastCol = index === subsetCols.length - 1;\n let colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n } else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n const minWidth = col.getMinWidth();\n const maxWidth = col.getMaxWidth();\n if (colNewWidth < minWidth) {\n colNewWidth = minWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n } else if (maxWidth > 0 && colNewWidth > maxWidth) {\n colNewWidth = maxWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n newWidths[col.getId()] = colNewWidth;\n });\n }\n columns.forEach((col) => {\n const newWidth = newWidths[col.getId()];\n const actualWidth = col.getActualWidth();\n if (actualWidth !== newWidth) {\n col.setActualWidth(newWidth, source);\n changedCols.push(col);\n }\n });\n });\n const atLeastOneColChanged = changedCols.length > 0;\n let flexedCols = [];\n if (atLeastOneColChanged) {\n const { colFlex, visibleCols, colViewport } = this.beans;\n flexedCols = colFlex?.refreshFlexedColumns({\n resizingCols: allResizedCols,\n skipSetLeft: true\n }) ?? [];\n visibleCols.setLeftValues(source);\n visibleCols.updateBodyWidths();\n colViewport.checkViewportColumns();\n }\n const colsForEvent = allResizedCols.concat(flexedCols);\n if (atLeastOneColChanged || finished) {\n dispatchColumnResizedEvent(this.eventSvc, colsForEvent, finished, source, flexedCols);\n }\n }\n resizeHeader(column, delta, shiftKey) {\n if (!column.isResizable()) {\n return;\n }\n const actualWidth = column.getActualWidth();\n const minWidth = column.getMinWidth();\n const maxWidth = column.getMaxWidth();\n const newWidth = Math.min(Math.max(actualWidth + delta, minWidth), maxWidth);\n this.setColumnWidths([{ key: column, newWidth }], shiftKey, true, \"uiColumnResized\");\n }\n createResizeFeature(pinned, column, eResize, comp, ctrl) {\n return new ResizeFeature(pinned, column, eResize, comp, ctrl);\n }\n createGroupResizeFeature(comp, eResize, pinned, columnGroup) {\n return new GroupResizeFeature(comp, eResize, pinned, columnGroup);\n }\n};\nfunction checkMinAndMaxWidthsForSet(columnResizeSet) {\n const { columns, width } = columnResizeSet;\n let minWidthAccumulated = 0;\n let maxWidthAccumulated = 0;\n let maxWidthActive = true;\n columns.forEach((col) => {\n const minWidth = col.getMinWidth();\n minWidthAccumulated += minWidth || 0;\n const maxWidth = col.getMaxWidth();\n if (maxWidth > 0) {\n maxWidthAccumulated += maxWidth;\n } else {\n maxWidthActive = false;\n }\n });\n const minWidthPasses = width >= minWidthAccumulated;\n const maxWidthPasses = !maxWidthActive || width <= maxWidthAccumulated;\n return minWidthPasses && maxWidthPasses;\n}\n\n// packages/ag-grid-community/src/columnResize/columnResizeModule.ts\nvar ColumnResizeModule = {\n moduleName: \"ColumnResize\",\n version: VERSION,\n beans: [ColumnResizeService],\n apiFunctions: {\n setColumnWidths\n },\n dependsOn: [HorizontalResizeModule, AutoWidthModule]\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/columnGroup/groupWidthFeature.ts\nvar GroupWidthFeature = class extends BeanStub {\n constructor(comp, columnGroup) {\n super();\n // the children can change, we keep destroy functions related to listening to the children here\n this.removeChildListenersFuncs = [];\n this.columnGroup = columnGroup;\n this.comp = comp;\n }\n postConstruct() {\n this.addListenersToChildrenColumns();\n this.addManagedListeners(this.columnGroup, {\n displayedChildrenChanged: this.onDisplayedChildrenChanged.bind(this)\n });\n this.onWidthChanged();\n this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));\n }\n addListenersToChildrenColumns() {\n this.removeListenersOnChildrenColumns();\n const widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach((column) => {\n column.__addEventListener(\"widthChanged\", widthChangedListener);\n column.__addEventListener(\"visibleChanged\", widthChangedListener);\n this.removeChildListenersFuncs.push(() => {\n column.__removeEventListener(\"widthChanged\", widthChangedListener);\n column.__removeEventListener(\"visibleChanged\", widthChangedListener);\n });\n });\n }\n removeListenersOnChildrenColumns() {\n this.removeChildListenersFuncs.forEach((func) => func());\n this.removeChildListenersFuncs = [];\n }\n onDisplayedChildrenChanged() {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n }\n onWidthChanged() {\n const columnWidth = this.columnGroup.getActualWidth();\n this.comp.setWidth(`${columnWidth}px`);\n this.comp.addOrRemoveCssClass(\"ag-hidden\", columnWidth === 0);\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/columnGroup/headerGroupCellCtrl.ts\nvar HeaderGroupCellCtrl = class extends AbstractHeaderCellCtrl {\n constructor() {\n super(...arguments);\n this.onSuppressColMoveChange = () => {\n if (!this.isAlive() || this.isSuppressMoving()) {\n this.removeDragSource();\n } else {\n if (!this.dragSource) {\n this.setDragSource(this.eGui);\n }\n }\n };\n }\n setComp(comp, eGui, eResize, eHeaderCompWrapper, compBean) {\n const { column, beans } = this;\n const { context, colNames, colHover, rangeSvc, colResize } = beans;\n this.comp = comp;\n compBean = setupCompBean(this, context, compBean);\n this.setGui(eGui, compBean);\n this.displayName = colNames.getDisplayNameForColumnGroup(column, \"header\");\n this.refreshHeaderStyles();\n this.addClasses();\n this.setupMovingCss(compBean);\n this.setupExpandable(compBean);\n this.setupTooltip();\n this.setupAutoHeight({\n wrapperElement: eHeaderCompWrapper,\n compBean\n });\n this.setupUserComp();\n this.addHeaderMouseListeners(compBean);\n this.addManagedPropertyListener(\"groupHeaderHeight\", this.refreshMaxHeaderHeight.bind(this));\n this.refreshMaxHeaderHeight();\n const pinned = this.rowCtrl.pinned;\n const leafCols = column.getProvidedColumnGroup().getLeafColumns();\n colHover?.createHoverFeature(compBean, leafCols, eGui);\n rangeSvc?.createRangeHighlightFeature(compBean, column, comp);\n compBean.createManagedBean(new SetLeftFeature(column, eGui, beans));\n compBean.createManagedBean(new GroupWidthFeature(comp, column));\n if (colResize) {\n this.resizeFeature = compBean.createManagedBean(\n colResize.createGroupResizeFeature(comp, eResize, pinned, column)\n );\n } else {\n comp.setResizableDisplayed(false);\n }\n compBean.createManagedBean(\n new ManagedFocusFeature(eGui, {\n shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n onTabKeyDown: () => void 0,\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n })\n );\n this.addHighlightListeners(compBean, leafCols);\n compBean.addManagedPropertyListener(\"suppressMovableColumns\", this.onSuppressColMoveChange);\n this.addResizeAndMoveKeyboardListeners(compBean);\n compBean.addDestroyFunc(() => this.clearComponent());\n }\n getHeaderClassParams() {\n const { column, beans } = this;\n const colDef = column.getDefinition();\n return _addGridCommonParams(beans.gos, {\n colDef,\n columnGroup: column,\n floatingFilter: false\n });\n }\n refreshMaxHeaderHeight() {\n const { gos, comp } = this;\n const groupHeaderHeight = gos.get(\"groupHeaderHeight\");\n if (groupHeaderHeight != null) {\n if (groupHeaderHeight === 0) {\n comp.setHeaderWrapperHidden(true);\n } else {\n comp.setHeaderWrapperMaxHeight(groupHeaderHeight);\n }\n } else {\n comp.setHeaderWrapperHidden(false);\n comp.setHeaderWrapperMaxHeight(null);\n }\n }\n addHighlightListeners(compBean, columns) {\n if (!this.beans.gos.get(\"suppressMoveWhenColumnDragging\")) {\n return;\n }\n for (const column of columns) {\n compBean.addManagedListeners(column, {\n headerHighlightChanged: this.onLeafColumnHighlightChanged.bind(this, column)\n });\n }\n }\n onLeafColumnHighlightChanged(column) {\n const displayedColumns = this.column.getDisplayedLeafColumns();\n const isFirst = displayedColumns[0] === column;\n const isLast = _last(displayedColumns) === column;\n if (!isFirst && !isLast) {\n return;\n }\n const highlighted = column.getHighlighted();\n const isColumnMoveAtThisLevel = !!this.rowCtrl.getHeaderCellCtrls().find((ctrl) => {\n return ctrl.column.isMoving();\n });\n let beforeOn = false;\n let afterOn = false;\n if (isColumnMoveAtThisLevel) {\n const isRtl = this.beans.gos.get(\"enableRtl\");\n const isHighlightAfter = highlighted === 1 /* After */;\n const isHighlightBefore = highlighted === 0 /* Before */;\n if (isFirst) {\n if (isRtl) {\n afterOn = isHighlightAfter;\n } else {\n beforeOn = isHighlightBefore;\n }\n }\n if (isLast) {\n if (isRtl) {\n beforeOn = isHighlightBefore;\n } else {\n afterOn = isHighlightAfter;\n }\n }\n }\n this.comp.addOrRemoveCssClass(\"ag-header-highlight-before\", beforeOn);\n this.comp.addOrRemoveCssClass(\"ag-header-highlight-after\", afterOn);\n }\n resizeHeader(delta, shiftKey) {\n const { resizeFeature } = this;\n if (!resizeFeature) {\n return;\n }\n const initialValues = resizeFeature.getInitialValues(shiftKey);\n resizeFeature.resizeColumns(initialValues, initialValues.resizeStartWidth + delta, \"uiColumnResized\", true);\n }\n resizeLeafColumnsToFit(source) {\n this.resizeFeature?.resizeLeafColumnsToFit(source);\n }\n setupUserComp() {\n const { colGroupSvc, userCompFactory, gos } = this.beans;\n const params = _addGridCommonParams(gos, {\n displayName: this.displayName,\n columnGroup: this.column,\n setExpanded: (expanded) => {\n colGroupSvc.setColumnGroupOpened(this.column.getProvidedColumnGroup(), expanded, \"gridInitializing\");\n },\n setTooltip: (value, shouldDisplayTooltip) => {\n gos.assertModuleRegistered(\"Tooltip\", 3);\n this.setupTooltip(value, shouldDisplayTooltip);\n }\n });\n const compDetails = _getHeaderGroupCompDetails(userCompFactory, params);\n if (compDetails) {\n this.comp.setUserCompDetails(compDetails);\n }\n }\n addHeaderMouseListeners(compBean) {\n const listener = (e) => this.handleMouseOverChange(e.type === \"mouseenter\");\n const clickListener = () => this.dispatchColumnMouseEvent(\"columnHeaderClicked\", this.column.getProvidedColumnGroup());\n const contextMenuListener = (event) => this.handleContextMenuMouseEvent(event, void 0, this.column.getProvidedColumnGroup());\n compBean.addManagedListeners(this.eGui, {\n mouseenter: listener,\n mouseleave: listener,\n click: clickListener,\n contextmenu: contextMenuListener\n });\n }\n handleMouseOverChange(isMouseOver) {\n this.eventSvc.dispatchEvent({\n type: isMouseOver ? \"columnHeaderMouseOver\" : \"columnHeaderMouseLeave\",\n column: this.column.getProvidedColumnGroup()\n });\n }\n setupTooltip(value, shouldDisplayTooltip) {\n this.tooltipFeature = this.beans.tooltipSvc?.setupHeaderGroupTooltip(\n this.tooltipFeature,\n this,\n value,\n shouldDisplayTooltip\n );\n }\n setupExpandable(compBean) {\n const providedColGroup = this.column.getProvidedColumnGroup();\n this.refreshExpanded();\n const listener = this.refreshExpanded.bind(this);\n compBean.addManagedListeners(providedColGroup, {\n expandedChanged: listener,\n expandableChanged: listener\n });\n }\n refreshExpanded() {\n const { column } = this;\n this.expandable = column.isExpandable();\n const expanded = column.isExpanded();\n if (this.expandable) {\n this.comp.setAriaExpanded(expanded ? \"true\" : \"false\");\n } else {\n this.comp.setAriaExpanded(void 0);\n }\n this.refreshHeaderStyles();\n }\n addClasses() {\n const { column } = this;\n const colGroupDef = column.getColGroupDef();\n const classes = _getHeaderClassesFromColDef(colGroupDef, this.gos, null, column);\n if (column.isPadding()) {\n classes.push(\"ag-header-group-cell-no-group\");\n const leafCols = column.getLeafColumns();\n if (leafCols.every((col) => col.isSpanHeaderHeight())) {\n classes.push(\"ag-header-span-height\");\n }\n } else {\n classes.push(\"ag-header-group-cell-with-group\");\n if (colGroupDef?.wrapHeaderText) {\n classes.push(\"ag-header-cell-wrap-text\");\n }\n }\n classes.forEach((c) => this.comp.addOrRemoveCssClass(c, true));\n }\n setupMovingCss(compBean) {\n const { column } = this;\n const providedColumnGroup = column.getProvidedColumnGroup();\n const leafColumns = providedColumnGroup.getLeafColumns();\n const listener = () => this.comp.addOrRemoveCssClass(\"ag-header-cell-moving\", column.isMoving());\n leafColumns.forEach((col) => {\n compBean.addManagedListeners(col, { movingChanged: listener });\n });\n listener();\n }\n onFocusIn(e) {\n if (!this.eGui.contains(e.relatedTarget)) {\n this.focusThis();\n }\n }\n handleKeyDown(e) {\n super.handleKeyDown(e);\n const wrapperHasFocus = this.getWrapperHasFocus();\n if (!this.expandable || !wrapperHasFocus) {\n return;\n }\n if (e.key === KeyCode.ENTER) {\n const column = this.column;\n const newExpandedValue = !column.isExpanded();\n this.beans.colGroupSvc.setColumnGroupOpened(\n column.getProvidedColumnGroup(),\n newExpandedValue,\n \"uiColumnExpanded\"\n );\n }\n }\n // unlike columns, this will only get called once, as we don't react on props on column groups\n // (we will always destroy and recreate this comp if something changes)\n setDragSource(eHeaderGroup) {\n if (!this.isAlive() || this.isSuppressMoving()) {\n return;\n }\n this.removeDragSource();\n if (!eHeaderGroup) {\n return;\n }\n this.dragSource = this.beans.colMoves?.setDragSourceForHeader(eHeaderGroup, this.column, this.displayName) ?? null;\n }\n isSuppressMoving() {\n return this.gos.get(\"suppressMovableColumns\") || this.column.getLeafColumns().some((column) => column.getColDef().suppressMovable || column.getColDef().lockPosition);\n }\n destroy() {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/columns/columnGroups/columnGroupApi.ts\nfunction setColumnGroupOpened(beans, group, newValue) {\n beans.colGroupSvc?.setColumnGroupOpened(group, newValue, \"api\");\n}\nfunction getColumnGroup(beans, name, instanceId) {\n return beans.colGroupSvc?.getColumnGroup(name, instanceId) ?? null;\n}\nfunction getProvidedColumnGroup(beans, name) {\n return beans.colGroupSvc?.getProvidedColGroup(name) ?? null;\n}\nfunction getDisplayNameForColumnGroup(beans, columnGroup, location) {\n return beans.colNames.getDisplayNameForColumnGroup(columnGroup, location) || \"\";\n}\nfunction getColumnGroupState(beans) {\n return beans.colGroupSvc?.getColumnGroupState() ?? [];\n}\nfunction setColumnGroupState(beans, stateItems) {\n beans.colGroupSvc?.setColumnGroupState(stateItems, \"api\");\n}\nfunction resetColumnGroupState(beans) {\n beans.colGroupSvc?.resetColumnGroupState(\"api\");\n}\nfunction getLeftDisplayedColumnGroups(beans) {\n return beans.visibleCols.treeLeft;\n}\nfunction getCenterDisplayedColumnGroups(beans) {\n return beans.visibleCols.treeCenter;\n}\nfunction getRightDisplayedColumnGroups(beans) {\n return beans.visibleCols.treeRight;\n}\nfunction getAllDisplayedColumnGroups(beans) {\n return beans.visibleCols.getAllTrees();\n}\n\n// packages/ag-grid-community/src/columns/visibleColsService.ts\nfunction _removeAllFromUnorderedArray(array, toRemove) {\n for (let i = 0; i < toRemove.length; i++) {\n const index = array.indexOf(toRemove[i]);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.pop();\n }\n }\n}\nvar VisibleColsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"visibleCols\";\n // for fast lookup, to see if a column or group is still visible\n this.colsAndGroupsMap = {};\n // leave level columns of the displayed trees\n this.leftCols = [];\n this.rightCols = [];\n this.centerCols = [];\n // all three lists above combined\n this.allCols = [];\n // used by:\n // + angularGrid -> for setting body width\n // + rowController -> setting main row widths (when inserting and resizing)\n // need to cache this\n this.bodyWidth = 0;\n this.leftWidth = 0;\n this.rightWidth = 0;\n this.isBodyWidthDirty = true;\n }\n refresh(source, skipTreeBuild = false) {\n const { colModel, colGroupSvc, colViewport } = this.beans;\n if (!skipTreeBuild) {\n this.buildTrees(colModel, colGroupSvc);\n }\n colGroupSvc?.updateOpenClosedVisibility();\n const leftCols = pickDisplayedCols(this.treeLeft);\n this.leftCols = leftCols;\n this.centerCols = pickDisplayedCols(this.treeCenter);\n const rightCols = pickDisplayedCols(this.treeRight);\n this.rightCols = rightCols;\n this.joinColsAriaOrder(colModel);\n this.joinCols();\n this.setLeftValues(source);\n this.autoHeightCols = this.allCols.filter((col) => col.isAutoHeight());\n this.beans.colFlex?.refreshFlexedColumns();\n this.updateBodyWidths();\n colViewport.checkViewportColumns(false);\n this.setFirstRightAndLastLeftPinned(colModel, leftCols, rightCols, source);\n this.eventSvc.dispatchEvent({\n type: \"displayedColumnsChanged\",\n source\n });\n }\n // after setColumnWidth or updateGroupsAndPresentedCols\n updateBodyWidths() {\n const newBodyWidth = getWidthOfColsInList(this.centerCols);\n const newLeftWidth = getWidthOfColsInList(this.leftCols);\n const newRightWidth = getWidthOfColsInList(this.rightCols);\n this.isBodyWidthDirty = this.bodyWidth !== newBodyWidth;\n const atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n if (atLeastOneChanged) {\n this.bodyWidth = newBodyWidth;\n this.leftWidth = newLeftWidth;\n this.rightWidth = newRightWidth;\n this.eventSvc.dispatchEvent({\n type: \"columnContainerWidthChanged\"\n });\n this.eventSvc.dispatchEvent({\n type: \"displayedColumnsWidthChanged\"\n });\n }\n }\n // sets the left pixel position of each column\n setLeftValues(source) {\n this.setLeftValuesOfCols(source);\n this.setLeftValuesOfGroups();\n }\n setFirstRightAndLastLeftPinned(colModel, leftCols, rightCols, source) {\n let lastLeft;\n let firstRight;\n if (this.gos.get(\"enableRtl\")) {\n lastLeft = leftCols ? leftCols[0] : null;\n firstRight = rightCols ? _last(rightCols) : null;\n } else {\n lastLeft = leftCols ? _last(leftCols) : null;\n firstRight = rightCols ? rightCols[0] : null;\n }\n colModel.getCols().forEach((col) => {\n col.setLastLeftPinned(col === lastLeft, source);\n col.setFirstRightPinned(col === firstRight, source);\n });\n }\n buildTrees(colModel, columnGroupSvc) {\n const cols = colModel.getColsToShow();\n const leftCols = cols.filter((col) => col.getPinned() == \"left\");\n const rightCols = cols.filter((col) => col.getPinned() == \"right\");\n const centerCols = cols.filter((col) => col.getPinned() != \"left\" && col.getPinned() != \"right\");\n const idCreator = new GroupInstanceIdCreator();\n const createGroups = (params) => {\n return columnGroupSvc ? columnGroupSvc.createColumnGroups(params) : params.columns;\n };\n this.treeLeft = createGroups({\n columns: leftCols,\n idCreator,\n pinned: \"left\",\n oldDisplayedGroups: this.treeLeft\n });\n this.treeRight = createGroups({\n columns: rightCols,\n idCreator,\n pinned: \"right\",\n oldDisplayedGroups: this.treeRight\n });\n this.treeCenter = createGroups({\n columns: centerCols,\n idCreator,\n pinned: null,\n oldDisplayedGroups: this.treeCenter\n });\n this.updateColsAndGroupsMap();\n }\n clear() {\n this.leftCols = [];\n this.rightCols = [];\n this.centerCols = [];\n this.allCols = [];\n this.ariaOrderColumns = [];\n }\n joinColsAriaOrder(colModel) {\n const allColumns = colModel.getCols();\n const pinnedLeft = [];\n const center = [];\n const pinnedRight = [];\n for (const col of allColumns) {\n const pinned = col.getPinned();\n if (!pinned) {\n center.push(col);\n } else if (pinned === true || pinned === \"left\") {\n pinnedLeft.push(col);\n } else {\n pinnedRight.push(col);\n }\n }\n this.ariaOrderColumns = pinnedLeft.concat(center).concat(pinnedRight);\n }\n getAriaColIndex(colOrGroup) {\n let col;\n if (isColumnGroup2(colOrGroup)) {\n col = colOrGroup.getLeafColumns()[0];\n } else {\n col = colOrGroup;\n }\n return this.ariaOrderColumns.indexOf(col) + 1;\n }\n setLeftValuesOfGroups() {\n [this.treeLeft, this.treeRight, this.treeCenter].forEach((columns) => {\n columns.forEach((column) => {\n if (isColumnGroup2(column)) {\n const columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n }\n setLeftValuesOfCols(source) {\n const { colModel } = this.beans;\n const primaryCols = colModel.getColDefCols();\n if (!primaryCols) {\n return;\n }\n const allColumns = colModel.getCols().slice(0);\n const doingRtl = this.gos.get(\"enableRtl\");\n [this.leftCols, this.rightCols, this.centerCols].forEach((columns) => {\n if (doingRtl) {\n let left = getWidthOfColsInList(columns);\n columns.forEach((column) => {\n left -= column.getActualWidth();\n column.setLeft(left, source);\n });\n } else {\n let left = 0;\n columns.forEach((column) => {\n column.setLeft(left, source);\n left += column.getActualWidth();\n });\n }\n _removeAllFromUnorderedArray(allColumns, columns);\n });\n allColumns.forEach((column) => {\n column.setLeft(null, source);\n });\n }\n joinCols() {\n if (this.gos.get(\"enableRtl\")) {\n this.allCols = this.rightCols.concat(this.centerCols).concat(this.leftCols);\n } else {\n this.allCols = this.leftCols.concat(this.centerCols).concat(this.rightCols);\n }\n }\n getAllTrees() {\n if (this.treeLeft && this.treeRight && this.treeCenter) {\n return this.treeLeft.concat(this.treeCenter).concat(this.treeRight);\n }\n return null;\n }\n // gridPanel -> ensureColumnVisible\n isColDisplayed(column) {\n return this.allCols.indexOf(column) >= 0;\n }\n getLeftColsForRow(rowNode) {\n const {\n leftCols,\n beans: { colModel }\n } = this;\n const colSpanActive = colModel.colSpanActive;\n if (!colSpanActive) {\n return leftCols;\n }\n return this.getColsForRow(rowNode, leftCols);\n }\n getRightColsForRow(rowNode) {\n const {\n rightCols,\n beans: { colModel }\n } = this;\n const colSpanActive = colModel.colSpanActive;\n if (!colSpanActive) {\n return rightCols;\n }\n return this.getColsForRow(rowNode, rightCols);\n }\n getColsForRow(rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n const result = [];\n let lastConsideredCol = null;\n for (let i = 0; i < displayedColumns.length; i++) {\n const col = displayedColumns[i];\n const maxAllowedColSpan = displayedColumns.length - i;\n const colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n const columnsToCheckFilter = [col];\n if (colSpan > 1) {\n const colsToRemove = colSpan - 1;\n for (let j = 1; j <= colsToRemove; j++) {\n columnsToCheckFilter.push(displayedColumns[i + j]);\n }\n i += colsToRemove;\n }\n let filterPasses;\n if (filterCallback) {\n filterPasses = false;\n columnsToCheckFilter.forEach((colForFilter) => {\n if (filterCallback(colForFilter)) {\n filterPasses = true;\n }\n });\n } else {\n filterPasses = true;\n }\n if (filterPasses) {\n if (result.length === 0 && lastConsideredCol) {\n const gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\n }\n return result;\n }\n getContainerWidth(pinned) {\n switch (pinned) {\n case \"left\":\n return this.leftWidth;\n case \"right\":\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n }\n getColBefore(col) {\n const allDisplayedColumns = this.allCols;\n const oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex > 0) {\n return allDisplayedColumns[oldIndex - 1];\n }\n return null;\n }\n isPinningLeft() {\n return this.leftCols.length > 0;\n }\n isPinningRight() {\n return this.rightCols.length > 0;\n }\n updateColsAndGroupsMap() {\n this.colsAndGroupsMap = {};\n const func = (child) => {\n this.colsAndGroupsMap[child.getUniqueId()] = child;\n };\n depthFirstAllColumnTreeSearch(this.treeCenter, false, func);\n depthFirstAllColumnTreeSearch(this.treeLeft, false, func);\n depthFirstAllColumnTreeSearch(this.treeRight, false, func);\n }\n isVisible(item) {\n const fromMap = this.colsAndGroupsMap[item.getUniqueId()];\n return fromMap === item;\n }\n getFirstColumn() {\n const isRtl = this.gos.get(\"enableRtl\");\n const queryOrder = [\"leftCols\", \"centerCols\", \"rightCols\"];\n if (isRtl) {\n queryOrder.reverse();\n }\n for (let i = 0; i < queryOrder.length; i++) {\n const container = this[queryOrder[i]];\n if (container.length) {\n return isRtl ? _last(container) : container[0];\n }\n }\n return null;\n }\n // used by:\n // + rowRenderer -> for navigation\n getColAfter(col) {\n const allDisplayedColumns = this.allCols;\n const oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < allDisplayedColumns.length - 1) {\n return allDisplayedColumns[oldIndex + 1];\n }\n return null;\n }\n // used by:\n // + angularGrid -> setting pinned body width\n // note: this should be cached\n getColsLeftWidth() {\n return getWidthOfColsInList(this.leftCols);\n }\n // note: this should be cached\n getDisplayedColumnsRightWidth() {\n return getWidthOfColsInList(this.rightCols);\n }\n isColAtEdge(col, edge) {\n const allColumns = this.allCols;\n if (!allColumns.length) {\n return false;\n }\n const isFirst = edge === \"first\";\n let columnToCompare;\n if (isColumnGroup2(col)) {\n const leafColumns = col.getDisplayedLeafColumns();\n if (!leafColumns.length) {\n return false;\n }\n columnToCompare = isFirst ? leafColumns[0] : _last(leafColumns);\n } else {\n columnToCompare = col;\n }\n return (isFirst ? allColumns[0] : _last(allColumns)) === columnToCompare;\n }\n};\nfunction depthFirstAllColumnTreeSearch(tree, useDisplayedChildren, callback) {\n if (!tree) {\n return;\n }\n for (let i = 0; i < tree.length; i++) {\n const child = tree[i];\n if (isColumnGroup2(child)) {\n const childTree = useDisplayedChildren ? child.getDisplayedChildren() : child.getChildren();\n depthFirstAllColumnTreeSearch(childTree, useDisplayedChildren, callback);\n }\n callback(child);\n }\n}\nfunction pickDisplayedCols(tree) {\n const res = [];\n depthFirstAllColumnTreeSearch(tree, true, (child) => {\n if (isColumn(child)) {\n res.push(child);\n }\n });\n return res;\n}\n\n// packages/ag-grid-community/src/columns/columnGroups/columnGroupService.ts\nvar ColumnGroupService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colGroupSvc\";\n }\n getColumnGroupState() {\n const columnGroupState = [];\n const gridBalancedTree = this.beans.colModel.getColTree();\n depthFirstOriginalTreeSearch(null, gridBalancedTree, (node) => {\n if (isProvidedColumnGroup(node)) {\n columnGroupState.push({\n groupId: node.getGroupId(),\n open: node.isExpanded()\n });\n }\n });\n return columnGroupState;\n }\n resetColumnGroupState(source) {\n const primaryColumnTree = this.beans.colModel.getColDefColTree();\n if (!primaryColumnTree) {\n return;\n }\n const stateItems = [];\n depthFirstOriginalTreeSearch(null, primaryColumnTree, (child) => {\n if (isProvidedColumnGroup(child)) {\n const colGroupDef = child.getColGroupDef();\n const groupState = {\n groupId: child.getGroupId(),\n open: !colGroupDef ? void 0 : colGroupDef.openByDefault\n };\n stateItems.push(groupState);\n }\n });\n this.setColumnGroupState(stateItems, source);\n }\n setColumnGroupState(stateItems, source) {\n const { colModel, colAnimation, visibleCols, eventSvc } = this.beans;\n const gridBalancedTree = colModel.getColTree();\n if (!gridBalancedTree.length) {\n return;\n }\n colAnimation?.start();\n const impactedGroups = [];\n stateItems.forEach((stateItem) => {\n const groupKey = stateItem.groupId;\n const newValue = stateItem.open;\n const providedColumnGroup = this.getProvidedColGroup(groupKey);\n if (!providedColumnGroup) {\n return;\n }\n if (providedColumnGroup.isExpanded() === newValue) {\n return;\n }\n providedColumnGroup.setExpanded(newValue);\n impactedGroups.push(providedColumnGroup);\n });\n visibleCols.refresh(source, true);\n if (impactedGroups.length) {\n eventSvc.dispatchEvent({\n type: \"columnGroupOpened\",\n columnGroup: impactedGroups.length === 1 ? impactedGroups[0] : void 0,\n columnGroups: impactedGroups\n });\n }\n colAnimation?.finish();\n }\n // called by headerRenderer - when a header is opened or closed\n setColumnGroupOpened(key, newValue, source) {\n let keyAsString;\n if (isProvidedColumnGroup(key)) {\n keyAsString = key.getId();\n } else {\n keyAsString = key || \"\";\n }\n this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n }\n getProvidedColGroup(key) {\n let res = null;\n depthFirstOriginalTreeSearch(null, this.beans.colModel.getColTree(), (node) => {\n if (isProvidedColumnGroup(node)) {\n if (node.getId() === key) {\n res = node;\n }\n }\n });\n return res;\n }\n getGroupAtDirection(columnGroup, direction) {\n const requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();\n const colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();\n const col = direction === \"After\" ? _last(colGroupLeafColumns) : colGroupLeafColumns[0];\n const getDisplayColMethod = `getCol${direction}`;\n while (true) {\n const column = this.beans.visibleCols[getDisplayColMethod](col);\n if (!column) {\n return null;\n }\n const groupPointer = this.getColGroupAtLevel(column, requiredLevel);\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n }\n getColGroupAtLevel(column, level) {\n let groupPointer = column.getParent();\n let originalGroupLevel;\n let groupPointerLevel;\n while (true) {\n const groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();\n originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();\n groupPointerLevel = groupPointer.getPaddingLevel();\n if (originalGroupLevel + groupPointerLevel <= level) {\n break;\n }\n groupPointer = groupPointer.getParent();\n }\n return groupPointer;\n }\n updateOpenClosedVisibility() {\n const allColumnGroups = this.beans.visibleCols.getAllTrees();\n depthFirstAllColumnTreeSearch(allColumnGroups, false, (child) => {\n if (isColumnGroup2(child)) {\n child.calculateDisplayedColumns();\n }\n });\n }\n // returns the group with matching colId and instanceId. If instanceId is missing,\n // matches only on the colId.\n getColumnGroup(colId, partId) {\n if (!colId) {\n return null;\n }\n if (isColumnGroup2(colId)) {\n return colId;\n }\n const allColumnGroups = this.beans.visibleCols.getAllTrees();\n const checkPartId = typeof partId === \"number\";\n let result = null;\n depthFirstAllColumnTreeSearch(allColumnGroups, false, (child) => {\n if (isColumnGroup2(child)) {\n const columnGroup = child;\n let matched;\n if (checkPartId) {\n matched = colId === columnGroup.getGroupId() && partId === columnGroup.getPartId();\n } else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n }\n createColumnGroups(params) {\n const { columns, idCreator, pinned, oldDisplayedGroups, isStandaloneStructure } = params;\n const oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n const topLevelResultCols = [];\n let groupsOrColsAtCurrentLevel = columns;\n while (groupsOrColsAtCurrentLevel.length) {\n const currentlyIterating = groupsOrColsAtCurrentLevel;\n groupsOrColsAtCurrentLevel = [];\n let lastGroupedColIdx = 0;\n const createGroupToIndex = (to) => {\n const from = lastGroupedColIdx;\n lastGroupedColIdx = to;\n const previousNode = currentlyIterating[from];\n const previousNodeProvided = isColumnGroup2(previousNode) ? previousNode.getProvidedColumnGroup() : previousNode;\n const previousNodeParent = previousNodeProvided.getOriginalParent();\n if (previousNodeParent == null) {\n for (let i = from; i < to; i++) {\n topLevelResultCols.push(currentlyIterating[i]);\n }\n return;\n }\n const newGroup = this.createColumnGroup(\n previousNodeParent,\n idCreator,\n oldColumnsMapped,\n pinned,\n isStandaloneStructure\n );\n for (let i = from; i < to; i++) {\n newGroup.addChild(currentlyIterating[i]);\n }\n groupsOrColsAtCurrentLevel.push(newGroup);\n };\n for (let i = 1; i < currentlyIterating.length; i++) {\n const thisNode = currentlyIterating[i];\n const thisNodeProvided = isColumnGroup2(thisNode) ? thisNode.getProvidedColumnGroup() : thisNode;\n const thisNodeParent = thisNodeProvided.getOriginalParent();\n const previousNode = currentlyIterating[lastGroupedColIdx];\n const previousNodeProvided = isColumnGroup2(previousNode) ? previousNode.getProvidedColumnGroup() : previousNode;\n const previousNodeParent = previousNodeProvided.getOriginalParent();\n if (thisNodeParent !== previousNodeParent) {\n createGroupToIndex(i);\n }\n }\n if (lastGroupedColIdx < currentlyIterating.length) {\n createGroupToIndex(currentlyIterating.length);\n }\n }\n if (!isStandaloneStructure) {\n this.setupParentsIntoCols(topLevelResultCols, null);\n }\n return topLevelResultCols;\n }\n createProvidedColumnGroup(primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups, source) {\n const groupId = columnKeyCreator.getUniqueKey(colGroupDef.groupId || null, null);\n const colGroupDefMerged = this.createMergedColGroupDef(colGroupDef, groupId);\n const providedGroup = new AgProvidedColumnGroup(colGroupDefMerged, groupId, false, level);\n this.createBean(providedGroup);\n const existingGroupAndIndex = this.findExistingGroup(colGroupDef, existingGroups);\n if (existingGroupAndIndex) {\n existingGroups.splice(existingGroupAndIndex.idx, 1);\n }\n const existingGroup = existingGroupAndIndex?.group;\n if (existingGroup) {\n providedGroup.setExpanded(existingGroup.isExpanded());\n }\n const children = _recursivelyCreateColumns(\n this.beans,\n colGroupDefMerged.children,\n level + 1,\n primaryColumns,\n existingColumns,\n columnKeyCreator,\n existingGroups,\n source\n );\n providedGroup.setChildren(children);\n return providedGroup;\n }\n balanceColumnTree(unbalancedTree, currentDepth, columnDepth, columnKeyCreator) {\n const result = [];\n for (let i = 0; i < unbalancedTree.length; i++) {\n const child = unbalancedTree[i];\n if (isProvidedColumnGroup(child)) {\n const originalGroup = child;\n const newChildren = this.balanceColumnTree(\n originalGroup.getChildren(),\n currentDepth + 1,\n columnDepth,\n columnKeyCreator\n );\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n } else {\n let firstPaddedGroup;\n let currentPaddedGroup;\n for (let j = columnDepth - 1; j >= currentDepth; j--) {\n const newColId = columnKeyCreator.getUniqueKey(null, null);\n const colGroupDefMerged = this.createMergedColGroupDef(null, newColId);\n const paddedGroup = new AgProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDepth);\n this.createBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n if (firstPaddedGroup && currentPaddedGroup) {\n result.push(firstPaddedGroup);\n const hasGroups = unbalancedTree.some((leaf) => isProvidedColumnGroup(leaf));\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n } else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n }\n findDepth(balancedColumnTree) {\n let depth = 0;\n let pointer = balancedColumnTree;\n while (pointer && pointer[0] && isProvidedColumnGroup(pointer[0])) {\n depth++;\n pointer = pointer[0].getChildren();\n }\n return depth;\n }\n findMaxDepth(treeChildren, depth) {\n let maxDeptThisLevel = depth;\n for (let i = 0; i < treeChildren.length; i++) {\n const abstractColumn = treeChildren[i];\n if (isProvidedColumnGroup(abstractColumn)) {\n const originalGroup = abstractColumn;\n const newDept = this.findMaxDepth(originalGroup.getChildren(), depth + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n }\n /**\n * Inserts dummy group columns in the hierarchy above auto-generated columns\n * in order to ensure auto-generated columns are leaf nodes (and therefore are\n * displayed correctly)\n */\n balanceTreeForAutoCols(autoCols, depth) {\n const tree = [];\n autoCols.forEach((col) => {\n let nextChild = col;\n for (let i = depth - 1; i >= 0; i--) {\n const autoGroup = new AgProvidedColumnGroup(null, `FAKE_PATH_${col.getId()}}_${i}`, true, i);\n this.createBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.originalParent = autoGroup;\n nextChild = autoGroup;\n }\n if (depth === 0) {\n col.originalParent = null;\n }\n tree.push(nextChild);\n });\n return tree;\n }\n createMergedColGroupDef(colGroupDef, groupId) {\n const colGroupDefMerged = {};\n const { gos, validation: validation2 } = this.beans;\n Object.assign(colGroupDefMerged, gos.get(\"defaultColGroupDef\"));\n Object.assign(colGroupDefMerged, colGroupDef);\n validation2?.validateColDef(colGroupDefMerged, groupId);\n return colGroupDefMerged;\n }\n findExistingGroup(newGroupDef, existingGroups) {\n const newHasId = newGroupDef.groupId != null;\n if (!newHasId) {\n return void 0;\n }\n for (let i = 0; i < existingGroups.length; i++) {\n const existingGroup = existingGroups[i];\n const existingDef = existingGroup.getColGroupDef();\n if (!existingDef) {\n continue;\n }\n if (existingGroup.getId() === newGroupDef.groupId) {\n return { idx: i, group: existingGroup };\n }\n }\n return void 0;\n }\n createColumnGroup(providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned, isStandaloneStructure) {\n const groupId = providedGroup.getGroupId();\n const instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n const uniqueId = createUniqueColumnGroupId(groupId, instanceId);\n let columnGroup = oldColumnsMapped[uniqueId];\n if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {\n columnGroup = null;\n }\n if (_exists(columnGroup)) {\n columnGroup.reset();\n } else {\n columnGroup = new AgColumnGroup(providedGroup, groupId, instanceId, pinned);\n if (!isStandaloneStructure) {\n this.createBean(columnGroup);\n }\n }\n return columnGroup;\n }\n // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n mapOldGroupsById(displayedGroups) {\n const result = {};\n const recursive = (columnsOrGroups) => {\n columnsOrGroups.forEach((columnOrGroup) => {\n if (isColumnGroup2(columnOrGroup)) {\n const columnGroup = columnOrGroup;\n result[columnOrGroup.getUniqueId()] = columnGroup;\n recursive(columnGroup.getChildren());\n }\n });\n };\n if (displayedGroups) {\n recursive(displayedGroups);\n }\n return result;\n }\n setupParentsIntoCols(columnsOrGroups, parent) {\n columnsOrGroups.forEach((columnsOrGroup) => {\n columnsOrGroup.parent = parent;\n if (isColumnGroup2(columnsOrGroup)) {\n const columnGroup = columnsOrGroup;\n this.setupParentsIntoCols(columnGroup.getChildren(), columnGroup);\n }\n });\n }\n};\n\n// packages/ag-grid-community/src/columns/columnGroups/columnGroupModule.ts\nvar ColumnGroupModule = {\n moduleName: \"ColumnGroup\",\n version: VERSION,\n dynamicBeans: { headerGroupCellCtrl: HeaderGroupCellCtrl },\n beans: [ColumnGroupService],\n apiFunctions: {\n getAllDisplayedColumnGroups,\n getCenterDisplayedColumnGroups,\n getColumnGroup,\n getColumnGroupState,\n getDisplayNameForColumnGroup,\n getLeftDisplayedColumnGroups,\n getProvidedColumnGroup,\n getRightDisplayedColumnGroups,\n resetColumnGroupState,\n setColumnGroupOpened,\n setColumnGroupState\n }\n};\n\n// packages/ag-grid-community/src/rendering/cellRenderers/cellRendererModule.ts\nvar CheckboxCellRendererModule = {\n moduleName: \"CheckboxCellRenderer\",\n version: VERSION,\n userComponents: {\n agCheckboxCellRenderer: CheckboxCellRenderer\n }\n};\n\n// packages/ag-grid-community/src/columns/columnApi.ts\nfunction getColumnDef(beans, key) {\n const column = beans.colModel.getColDefCol(key);\n if (column) {\n return column.getColDef();\n }\n return null;\n}\nfunction getColumnDefs(beans) {\n return beans.colModel.getColumnDefs();\n}\nfunction getDisplayNameForColumn(beans, column, location) {\n return beans.colNames.getDisplayNameForColumn(column, location) || \"\";\n}\nfunction getColumn(beans, key) {\n return beans.colModel.getColDefCol(key);\n}\nfunction getColumns(beans) {\n return beans.colModel.getColDefCols();\n}\nfunction applyColumnState(beans, params) {\n return _applyColumnState(beans, params, \"api\");\n}\nfunction getColumnState(beans) {\n return _getColumnState(beans);\n}\nfunction resetColumnState(beans) {\n _resetColumnState(beans, \"api\");\n}\nfunction isPinning(beans) {\n return beans.visibleCols.isPinningLeft() || beans.visibleCols.isPinningRight();\n}\nfunction isPinningLeft(beans) {\n return beans.visibleCols.isPinningLeft();\n}\nfunction isPinningRight(beans) {\n return beans.visibleCols.isPinningRight();\n}\nfunction getDisplayedColAfter(beans, col) {\n return beans.visibleCols.getColAfter(col);\n}\nfunction getDisplayedColBefore(beans, col) {\n return beans.visibleCols.getColBefore(col);\n}\nfunction setColumnsVisible(beans, keys, visible) {\n beans.colModel.setColsVisible(keys, visible, \"api\");\n}\nfunction setColumnsPinned(beans, keys, pinned) {\n beans.pinnedCols?.setColsPinned(keys, pinned, \"api\");\n}\nfunction getAllGridColumns(beans) {\n return beans.colModel.getCols();\n}\nfunction getDisplayedLeftColumns(beans) {\n return beans.visibleCols.leftCols;\n}\nfunction getDisplayedCenterColumns(beans) {\n return beans.visibleCols.centerCols;\n}\nfunction getDisplayedRightColumns(beans) {\n return beans.visibleCols.rightCols;\n}\nfunction getAllDisplayedColumns(beans) {\n return beans.visibleCols.allCols;\n}\nfunction getAllDisplayedVirtualColumns(beans) {\n return beans.colViewport.getViewportColumns();\n}\n\n// packages/ag-grid-community/src/columns/columnDefFactory.ts\nfunction _deepCloneDefinition(object, keysToSkip) {\n if (!object) {\n return;\n }\n const obj = object;\n const res = {};\n Object.keys(obj).forEach((key) => {\n if (keysToSkip && keysToSkip.indexOf(key) >= 0 || SKIP_JS_BUILTINS.has(key)) {\n return;\n }\n const value = obj[key];\n const sourceIsSimpleObject = typeof value === \"object\" && value !== null && value.constructor === Object;\n if (sourceIsSimpleObject) {\n res[key] = _deepCloneDefinition(value);\n } else {\n res[key] = value;\n }\n });\n return res;\n}\nvar ColumnDefFactory = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colDefFactory\";\n }\n wireBeans(beans) {\n this.rowGroupColsSvc = beans.rowGroupColsSvc;\n this.pivotColsSvc = beans.pivotColsSvc;\n }\n getColumnDefs(colDefColsList, showingPivotResult, lastOrder, colsList) {\n const cols = colDefColsList.slice();\n if (showingPivotResult) {\n cols.sort((a, b) => lastOrder.indexOf(a) - lastOrder.indexOf(b));\n } else if (lastOrder) {\n cols.sort((a, b) => colsList.indexOf(a) - colsList.indexOf(b));\n }\n const rowGroupColumns = this.rowGroupColsSvc?.columns;\n const pivotColumns = this.pivotColsSvc?.columns;\n return this.buildColumnDefs(cols, rowGroupColumns, pivotColumns);\n }\n buildColumnDefs(cols, rowGroupColumns = [], pivotColumns = []) {\n const res = [];\n const colGroupDefs = {};\n cols.forEach((col) => {\n const colDef = this.createDefFromColumn(col, rowGroupColumns, pivotColumns);\n let addToResult = true;\n let childDef = colDef;\n let pointer = col.getOriginalParent();\n let lastPointer = null;\n while (pointer) {\n let parentDef = null;\n if (pointer.isPadding()) {\n pointer = pointer.getOriginalParent();\n continue;\n }\n const existingParentDef = colGroupDefs[pointer.getGroupId()];\n if (existingParentDef) {\n existingParentDef.children.push(childDef);\n addToResult = false;\n break;\n }\n parentDef = this.createDefFromGroup(pointer);\n if (parentDef) {\n parentDef.children = [childDef];\n colGroupDefs[parentDef.groupId] = parentDef;\n childDef = parentDef;\n pointer = pointer.getOriginalParent();\n }\n if (pointer != null && lastPointer === pointer) {\n addToResult = false;\n break;\n }\n lastPointer = pointer;\n }\n if (addToResult) {\n res.push(childDef);\n }\n });\n return res;\n }\n createDefFromGroup(group) {\n const defCloned = _deepCloneDefinition(group.getColGroupDef(), [\"children\"]);\n if (defCloned) {\n defCloned.groupId = group.getGroupId();\n }\n return defCloned;\n }\n createDefFromColumn(col, rowGroupColumns, pivotColumns) {\n const colDefCloned = _deepCloneDefinition(col.getColDef());\n colDefCloned.colId = col.getColId();\n colDefCloned.width = col.getActualWidth();\n colDefCloned.rowGroup = col.isRowGroupActive();\n colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;\n colDefCloned.pivot = col.isPivotActive();\n colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;\n colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;\n colDefCloned.hide = col.isVisible() ? void 0 : true;\n colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;\n colDefCloned.sort = col.getSort() ? col.getSort() : null;\n colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;\n return colDefCloned;\n }\n};\n\n// packages/ag-grid-community/src/columns/columnFlexService.ts\nvar ColumnFlexService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colFlex\";\n }\n refreshFlexedColumns(params = {}) {\n const source = params.source ?? \"flex\";\n if (params.viewportWidth != null) {\n this.flexViewportWidth = params.viewportWidth;\n }\n const totalSpace = this.flexViewportWidth;\n if (!totalSpace) {\n return [];\n }\n const { visibleCols } = this.beans;\n const visibleCenterCols = visibleCols.centerCols;\n let flexAfterDisplayIndex = -1;\n if (params.resizingCols) {\n const allResizingCols = new Set(params.resizingCols);\n for (let i = visibleCenterCols.length - 1; i >= 0; i--) {\n if (allResizingCols.has(visibleCenterCols[i])) {\n flexAfterDisplayIndex = i;\n break;\n }\n }\n }\n let hasFlexItems = false;\n const items = visibleCenterCols.map((col, i) => {\n const flex = col.getFlex();\n const isFlex = flex != null && flex > 0 && i > flexAfterDisplayIndex;\n hasFlexItems || (hasFlexItems = isFlex);\n return {\n col,\n isFlex,\n flex: Math.max(0, flex ?? 0),\n initialSize: col.getActualWidth(),\n min: col.getMinWidth(),\n max: col.getMaxWidth(),\n targetSize: 0\n };\n });\n if (!hasFlexItems) {\n return [];\n }\n let unfrozenItemCount = items.length;\n let unfrozenFlex = items.reduce((acc, item) => acc + item.flex, 0);\n let unfrozenSpace = totalSpace;\n const freeze = (item, width) => {\n item.frozenSize = width;\n item.col.setActualWidth(width, source);\n unfrozenSpace -= width;\n unfrozenFlex -= item.flex;\n unfrozenItemCount -= 1;\n };\n const isFrozen = (item) => item.frozenSize != null;\n for (const item of items) {\n if (!item.isFlex) {\n freeze(item, item.initialSize);\n }\n }\n while (unfrozenItemCount > 0) {\n const spaceToFill = Math.round(unfrozenFlex < 1 ? unfrozenSpace * unfrozenFlex : unfrozenSpace);\n let lastUnfrozenItem;\n let actualLeft = 0;\n let idealRight = 0;\n for (const item of items) {\n if (isFrozen(item)) {\n continue;\n }\n lastUnfrozenItem = item;\n idealRight += spaceToFill * (item.flex / unfrozenFlex);\n const idealSize = idealRight - actualLeft;\n const roundedSize = Math.round(idealSize);\n item.targetSize = roundedSize;\n actualLeft += roundedSize;\n }\n if (lastUnfrozenItem) {\n lastUnfrozenItem.targetSize += spaceToFill - actualLeft;\n }\n let totalViolation = 0;\n for (const item of items) {\n if (isFrozen(item)) {\n continue;\n }\n const unclampedSize = item.targetSize;\n const clampedSize = Math.min(Math.max(unclampedSize, item.min), item.max);\n totalViolation += clampedSize - unclampedSize;\n item.violationType = clampedSize === unclampedSize ? void 0 : clampedSize < unclampedSize ? \"max\" : \"min\";\n item.targetSize = clampedSize;\n }\n const freezeType = totalViolation === 0 ? \"all\" : totalViolation > 0 ? \"min\" : \"max\";\n for (const item of items) {\n if (isFrozen(item)) {\n continue;\n }\n if (freezeType === \"all\" || item.violationType === freezeType) {\n freeze(item, item.targetSize);\n }\n }\n }\n if (!params.skipSetLeft) {\n visibleCols.setLeftValues(source);\n }\n if (params.updateBodyWidths) {\n visibleCols.updateBodyWidths();\n }\n const unconstrainedFlexColumns = items.filter((item) => item.isFlex && !item.violationType).map((item) => item.col);\n if (params.fireResizedEvent) {\n const changedColumns = items.filter((item) => item.initialSize !== item.frozenSize).map((item) => item.col);\n const flexingColumns = items.filter((item) => item.flex).map((item) => item.col);\n dispatchColumnResizedEvent(this.eventSvc, changedColumns, true, source, flexingColumns);\n }\n return unconstrainedFlexColumns;\n }\n initCol(column) {\n const { flex, initialFlex } = column.colDef;\n if (flex !== void 0) {\n column.flex = flex;\n } else if (initialFlex !== void 0) {\n column.flex = initialFlex;\n }\n }\n // this method should only be used by the colModel to\n // change flex when required by the applyColumnState method.\n setColFlex(column, flex) {\n column.flex = flex ?? null;\n column.dispatchStateUpdatedEvent(\"flex\");\n }\n};\n\n// packages/ag-grid-community/src/columns/dataTypeService.ts\nvar DataTypeService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"dataTypeSvc\";\n this.dataTypeDefinitions = {};\n this.isPendingInference = false;\n this.isColumnTypeOverrideInDataTypeDefinitions = false;\n // keep track of any column state updates whilst waiting for data types to be inferred\n this.columnStateUpdatesPendingInference = {};\n this.columnStateUpdateListenerDestroyFuncs = [];\n }\n wireBeans(beans) {\n this.colModel = beans.colModel;\n }\n postConstruct() {\n this.processDataTypeDefinitions();\n this.addManagedPropertyListener(\"dataTypeDefinitions\", (event) => {\n this.processDataTypeDefinitions();\n this.colModel.recreateColumnDefs(event);\n });\n }\n processDataTypeDefinitions() {\n const defaultDataTypes = this.getDefaultDataTypes();\n const newDataTypeDefinitions = {};\n this.dataTypeDefinitions = newDataTypeDefinitions;\n const newFormatValueFuncs = {};\n this.formatValueFuncs = newFormatValueFuncs;\n const generateFormatValueFunc = (dataTypeDefinition) => {\n return (params) => {\n const { column, node, value } = params;\n let valueFormatter = column.getColDef().valueFormatter;\n if (valueFormatter === dataTypeDefinition.groupSafeValueFormatter) {\n valueFormatter = dataTypeDefinition.valueFormatter;\n }\n return this.beans.valueSvc.formatValue(column, node, value, valueFormatter);\n };\n };\n for (const cellDataType of Object.keys(defaultDataTypes)) {\n const dataTypeDefinition = defaultDataTypes[cellDataType];\n const mergedDataTypeDefinition = {\n ...dataTypeDefinition,\n groupSafeValueFormatter: createGroupSafeValueFormatter(dataTypeDefinition, this.gos)\n };\n newDataTypeDefinitions[cellDataType] = mergedDataTypeDefinition;\n newFormatValueFuncs[cellDataType] = generateFormatValueFunc(mergedDataTypeDefinition);\n }\n const dataTypeDefinitions = this.gos.get(\"dataTypeDefinitions\") ?? {};\n const newDataTypeMatchers = {};\n this.dataTypeMatchers = newDataTypeMatchers;\n for (const cellDataType of Object.keys(dataTypeDefinitions)) {\n const dataTypeDefinition = dataTypeDefinitions[cellDataType];\n const mergedDataTypeDefinition = this.processDataTypeDefinition(\n dataTypeDefinition,\n dataTypeDefinitions,\n [cellDataType],\n defaultDataTypes\n );\n if (mergedDataTypeDefinition) {\n newDataTypeDefinitions[cellDataType] = mergedDataTypeDefinition;\n if (dataTypeDefinition.dataTypeMatcher) {\n newDataTypeMatchers[cellDataType] = dataTypeDefinition.dataTypeMatcher;\n }\n newFormatValueFuncs[cellDataType] = generateFormatValueFunc(mergedDataTypeDefinition);\n }\n }\n this.checkObjectValueHandlers(defaultDataTypes);\n [\"dateString\", \"text\", \"number\", \"boolean\", \"date\"].forEach((cellDataType) => {\n const overriddenDataTypeMatcher = newDataTypeMatchers[cellDataType];\n if (overriddenDataTypeMatcher) {\n delete newDataTypeMatchers[cellDataType];\n }\n newDataTypeMatchers[cellDataType] = overriddenDataTypeMatcher ?? defaultDataTypes[cellDataType].dataTypeMatcher;\n });\n }\n processDataTypeDefinition(dataTypeDefinition, dataTypeDefinitions, alreadyProcessedDataTypes, defaultDataTypes) {\n let mergedDataTypeDefinition;\n const extendsCellDataType = dataTypeDefinition.extendsDataType;\n if (dataTypeDefinition.columnTypes) {\n this.isColumnTypeOverrideInDataTypeDefinitions = true;\n }\n if (dataTypeDefinition.extendsDataType === dataTypeDefinition.baseDataType) {\n let baseDataTypeDefinition = defaultDataTypes[extendsCellDataType];\n const overriddenBaseDataTypeDefinition = dataTypeDefinitions[extendsCellDataType];\n if (baseDataTypeDefinition && overriddenBaseDataTypeDefinition) {\n baseDataTypeDefinition = overriddenBaseDataTypeDefinition;\n }\n if (!validateDataTypeDefinition(dataTypeDefinition, baseDataTypeDefinition, extendsCellDataType)) {\n return void 0;\n }\n mergedDataTypeDefinition = mergeDataTypeDefinitions(baseDataTypeDefinition, dataTypeDefinition);\n } else {\n if (alreadyProcessedDataTypes.includes(extendsCellDataType)) {\n _warn(44);\n return void 0;\n }\n const extendedDataTypeDefinition = dataTypeDefinitions[extendsCellDataType];\n if (!validateDataTypeDefinition(dataTypeDefinition, extendedDataTypeDefinition, extendsCellDataType)) {\n return void 0;\n }\n const mergedExtendedDataTypeDefinition = this.processDataTypeDefinition(\n extendedDataTypeDefinition,\n dataTypeDefinitions,\n [...alreadyProcessedDataTypes, extendsCellDataType],\n defaultDataTypes\n );\n if (!mergedExtendedDataTypeDefinition) {\n return void 0;\n }\n mergedDataTypeDefinition = mergeDataTypeDefinitions(mergedExtendedDataTypeDefinition, dataTypeDefinition);\n }\n return {\n ...mergedDataTypeDefinition,\n groupSafeValueFormatter: createGroupSafeValueFormatter(mergedDataTypeDefinition, this.gos)\n };\n }\n updateColDefAndGetColumnType(colDef, userColDef, colId) {\n let { cellDataType } = userColDef;\n const { field } = userColDef;\n if (cellDataType === void 0) {\n cellDataType = colDef.cellDataType;\n }\n if (cellDataType == null || cellDataType === true) {\n cellDataType = this.canInferCellDataType(colDef, userColDef) ? this.inferCellDataType(field, colId) : false;\n }\n if (!cellDataType) {\n colDef.cellDataType = false;\n return void 0;\n }\n const dataTypeDefinition = this.dataTypeDefinitions[cellDataType];\n if (!dataTypeDefinition) {\n _warn(47, { cellDataType });\n return void 0;\n }\n colDef.cellDataType = cellDataType;\n if (dataTypeDefinition.groupSafeValueFormatter) {\n colDef.valueFormatter = dataTypeDefinition.groupSafeValueFormatter;\n }\n if (dataTypeDefinition.valueParser) {\n colDef.valueParser = dataTypeDefinition.valueParser;\n }\n if (!dataTypeDefinition.suppressDefaultProperties) {\n this.setColDefPropertiesForBaseDataType(colDef, cellDataType, dataTypeDefinition, colId);\n }\n return dataTypeDefinition.columnTypes;\n }\n addColumnListeners(column) {\n if (!this.isPendingInference) {\n return;\n }\n const columnStateUpdates = this.columnStateUpdatesPendingInference[column.getColId()];\n if (!columnStateUpdates) {\n return;\n }\n const columnListener = (event) => {\n columnStateUpdates.add(event.key);\n };\n column.__addEventListener(\"columnStateUpdated\", columnListener);\n this.columnStateUpdateListenerDestroyFuncs.push(\n () => column.__removeEventListener(\"columnStateUpdated\", columnListener)\n );\n }\n canInferCellDataType(colDef, userColDef) {\n const { gos } = this;\n if (!_isClientSideRowModel(gos)) {\n return false;\n }\n const propsToCheckForInference = { cellRenderer: true, valueGetter: true, valueParser: true, refData: true };\n if (doColDefPropsPreventInference(userColDef, propsToCheckForInference)) {\n return false;\n }\n const columnTypes = userColDef.type === null ? colDef.type : userColDef.type;\n if (columnTypes) {\n const columnTypeDefs = gos.get(\"columnTypes\") ?? {};\n const hasPropsPreventingInference = convertColumnTypes(columnTypes).some((columnType) => {\n const columnTypeDef = columnTypeDefs[columnType.trim()];\n return columnTypeDef && doColDefPropsPreventInference(columnTypeDef, propsToCheckForInference);\n });\n if (hasPropsPreventingInference) {\n return false;\n }\n }\n return !doColDefPropsPreventInference(colDef, propsToCheckForInference);\n }\n inferCellDataType(field, colId) {\n if (!field) {\n return void 0;\n }\n let value;\n const initialData = this.getInitialData();\n if (initialData) {\n const fieldContainsDots = field.indexOf(\".\") >= 0 && !this.gos.get(\"suppressFieldDotNotation\");\n value = _getValueUsingField(initialData, field, fieldContainsDots);\n } else {\n this.initWaitForRowData(colId);\n }\n if (value == null) {\n return void 0;\n }\n return Object.keys(this.dataTypeMatchers).find((_cellDataType) => this.dataTypeMatchers[_cellDataType](value)) ?? \"object\";\n }\n getInitialData() {\n const rowData = this.gos.get(\"rowData\");\n if (rowData?.length) {\n return rowData[0];\n } else if (this.initialData) {\n return this.initialData;\n } else {\n const rowNodes = this.beans.rowModel.rootNode?.allLeafChildren;\n if (rowNodes?.length) {\n return rowNodes[0].data;\n }\n }\n return null;\n }\n initWaitForRowData(colId) {\n this.columnStateUpdatesPendingInference[colId] = /* @__PURE__ */ new Set();\n if (this.isPendingInference) {\n return;\n }\n this.isPendingInference = true;\n const columnTypeOverridesExist = this.isColumnTypeOverrideInDataTypeDefinitions;\n const { colAutosize, eventSvc } = this.beans;\n if (columnTypeOverridesExist && colAutosize) {\n colAutosize.shouldQueueResizeOperations = true;\n }\n const [destroyFunc] = this.addManagedEventListeners({\n rowDataUpdateStarted: (event) => {\n const { firstRowData } = event;\n if (!firstRowData) {\n return;\n }\n destroyFunc?.();\n this.isPendingInference = false;\n this.processColumnsPendingInference(firstRowData, columnTypeOverridesExist);\n this.columnStateUpdatesPendingInference = {};\n if (columnTypeOverridesExist) {\n colAutosize?.processResizeOperations();\n }\n eventSvc.dispatchEvent({\n type: \"dataTypesInferred\"\n });\n }\n });\n }\n processColumnsPendingInference(firstRowData, columnTypeOverridesExist) {\n this.initialData = firstRowData;\n const state = [];\n this.destroyColumnStateUpdateListeners();\n const newRowGroupColumnStateWithoutIndex = {};\n const newPivotColumnStateWithoutIndex = {};\n for (const colId of Object.keys(this.columnStateUpdatesPendingInference)) {\n const columnStateUpdates = this.columnStateUpdatesPendingInference[colId];\n const column = this.colModel.getCol(colId);\n if (!column) {\n return;\n }\n const oldColDef = column.getColDef();\n if (!this.resetColDefIntoCol(column, \"cellDataTypeInferred\")) {\n return;\n }\n const newColDef = column.getColDef();\n if (columnTypeOverridesExist && newColDef.type && newColDef.type !== oldColDef.type) {\n const updatedColumnState = getUpdatedColumnState(column, columnStateUpdates);\n if (updatedColumnState.rowGroup && updatedColumnState.rowGroupIndex == null) {\n newRowGroupColumnStateWithoutIndex[colId] = updatedColumnState;\n }\n if (updatedColumnState.pivot && updatedColumnState.pivotIndex == null) {\n newPivotColumnStateWithoutIndex[colId] = updatedColumnState;\n }\n state.push(updatedColumnState);\n }\n }\n if (columnTypeOverridesExist) {\n state.push(\n ...this.generateColumnStateForRowGroupAndPivotIndexes(\n newRowGroupColumnStateWithoutIndex,\n newPivotColumnStateWithoutIndex\n )\n );\n }\n if (state.length) {\n _applyColumnState(this.beans, { state }, \"cellDataTypeInferred\");\n }\n this.initialData = null;\n }\n generateColumnStateForRowGroupAndPivotIndexes(updatedRowGroupColumnState, updatedPivotColumnState) {\n const existingColumnStateUpdates = {};\n const { rowGroupColsSvc, pivotColsSvc } = this.beans;\n rowGroupColsSvc?.restoreColumnOrder(existingColumnStateUpdates, updatedRowGroupColumnState);\n pivotColsSvc?.restoreColumnOrder(existingColumnStateUpdates, updatedPivotColumnState);\n return Object.values(existingColumnStateUpdates);\n }\n resetColDefIntoCol(column, source) {\n const userColDef = column.getUserProvidedColDef();\n if (!userColDef) {\n return false;\n }\n const newColDef = _addColumnDefaultAndTypes(this.beans, userColDef, column.getColId());\n column.setColDef(newColDef, userColDef, source);\n return true;\n }\n checkObjectValueHandlers(defaultDataTypes) {\n const resolvedObjectDataTypeDefinition = this.dataTypeDefinitions.object;\n const defaultObjectDataTypeDefinition = defaultDataTypes.object;\n this.hasObjectValueParser = resolvedObjectDataTypeDefinition.valueParser !== defaultObjectDataTypeDefinition.valueParser;\n this.hasObjectValueFormatter = resolvedObjectDataTypeDefinition.valueFormatter !== defaultObjectDataTypeDefinition.valueFormatter;\n }\n getDateStringTypeDefinition(column) {\n const { dateString } = this.dataTypeDefinitions;\n if (!column) {\n return dateString;\n }\n return this.getDataTypeDefinition(column) ?? dateString;\n }\n getDateParserFunction(column) {\n return this.getDateStringTypeDefinition(column).dateParser;\n }\n getDateFormatterFunction(column) {\n return this.getDateStringTypeDefinition(column).dateFormatter;\n }\n getDataTypeDefinition(column) {\n const colDef = column.getColDef();\n if (!colDef.cellDataType) {\n return void 0;\n }\n return this.dataTypeDefinitions[colDef.cellDataType];\n }\n getBaseDataType(column) {\n return this.getDataTypeDefinition(column)?.baseDataType;\n }\n checkType(column, value) {\n if (value == null) {\n return true;\n }\n const dataTypeMatcher = this.getDataTypeDefinition(column)?.dataTypeMatcher;\n if (!dataTypeMatcher) {\n return true;\n }\n return dataTypeMatcher(value);\n }\n validateColDef(colDef) {\n const warning = (property) => _warn(48, { property });\n if (colDef.cellDataType === \"object\") {\n const { object } = this.dataTypeDefinitions;\n if (colDef.valueFormatter === object.groupSafeValueFormatter && !this.hasObjectValueFormatter) {\n warning(\"Formatter\");\n }\n if (colDef.editable && colDef.valueParser === object.valueParser && !this.hasObjectValueParser) {\n warning(\"Parser\");\n }\n }\n }\n getFormatValue(cellDataType) {\n return this.formatValueFuncs[cellDataType];\n }\n isColPendingInference(colId) {\n return this.isPendingInference && !!this.columnStateUpdatesPendingInference[colId];\n }\n setColDefPropertiesForBaseDataType(colDef, cellDataType, dataTypeDefinition, colId) {\n const formatValue = this.formatValueFuncs[cellDataType];\n switch (dataTypeDefinition.baseDataType) {\n case \"number\": {\n colDef.cellEditor = \"agNumberCellEditor\";\n break;\n }\n case \"boolean\": {\n colDef.cellEditor = \"agCheckboxCellEditor\";\n colDef.cellRenderer = \"agCheckboxCellRenderer\";\n colDef.getFindText = () => null;\n colDef.suppressKeyboardEvent = (params) => !!params.colDef.editable && params.event.key === KeyCode.SPACE;\n break;\n }\n case \"date\": {\n colDef.cellEditor = \"agDateCellEditor\";\n colDef.keyCreator = formatValue;\n break;\n }\n case \"dateString\": {\n colDef.cellEditor = \"agDateStringCellEditor\";\n colDef.keyCreator = formatValue;\n break;\n }\n case \"object\": {\n colDef.cellEditorParams = {\n useFormatter: true\n };\n colDef.comparator = (a, b) => {\n const column = this.colModel.getColDefCol(colId);\n const colDef2 = column?.getColDef();\n if (!column || !colDef2) {\n return 0;\n }\n const valA = a == null ? \"\" : formatValue({ column, node: null, value: a });\n const valB = b == null ? \"\" : formatValue({ column, node: null, value: b });\n if (valA === valB)\n return 0;\n return valA > valB ? 1 : -1;\n };\n colDef.keyCreator = formatValue;\n break;\n }\n }\n this.beans.filterManager?.setColDefPropertiesForDataType(colDef, dataTypeDefinition, formatValue);\n }\n getDefaultDataTypes() {\n const defaultDateFormatMatcher = (value) => !!value.match(\"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\");\n const translate = this.getLocaleTextFunc();\n return {\n number: {\n baseDataType: \"number\",\n // can be empty space with legacy copy\n valueParser: (params) => params.newValue?.trim?.() === \"\" ? null : Number(params.newValue),\n valueFormatter: (params) => {\n if (params.value == null) {\n return \"\";\n }\n if (typeof params.value !== \"number\" || isNaN(params.value)) {\n return translate(\"invalidNumber\", \"Invalid Number\");\n }\n return String(params.value);\n },\n dataTypeMatcher: (value) => typeof value === \"number\"\n },\n text: {\n baseDataType: \"text\",\n valueParser: (params) => params.newValue === \"\" ? null : _toStringOrNull(params.newValue),\n dataTypeMatcher: (value) => typeof value === \"string\"\n },\n boolean: {\n baseDataType: \"boolean\",\n valueParser: (params) => {\n if (params.newValue == null) {\n return params.newValue;\n }\n return params.newValue?.trim?.() === \"\" ? null : String(params.newValue).toLowerCase() === \"true\";\n },\n valueFormatter: (params) => params.value == null ? \"\" : String(params.value),\n dataTypeMatcher: (value) => typeof value === \"boolean\"\n },\n date: {\n baseDataType: \"date\",\n valueParser: (params) => _parseDateTimeFromString(params.newValue == null ? null : String(params.newValue)),\n valueFormatter: (params) => {\n if (params.value == null) {\n return \"\";\n }\n if (!(params.value instanceof Date) || isNaN(params.value.getTime())) {\n return translate(\"invalidDate\", \"Invalid Date\");\n }\n return _serialiseDate(params.value, false) ?? \"\";\n },\n dataTypeMatcher: (value) => value instanceof Date\n },\n dateString: {\n baseDataType: \"dateString\",\n dateParser: (value) => _parseDateTimeFromString(value) ?? void 0,\n dateFormatter: (value) => _serialiseDate(value ?? null, false) ?? void 0,\n valueParser: (params) => defaultDateFormatMatcher(String(params.newValue)) ? params.newValue : null,\n valueFormatter: (params) => defaultDateFormatMatcher(String(params.value)) ? params.value : \"\",\n dataTypeMatcher: (value) => typeof value === \"string\" && defaultDateFormatMatcher(value)\n },\n object: {\n baseDataType: \"object\",\n valueParser: () => null,\n valueFormatter: (params) => _toStringOrNull(params.value) ?? \"\"\n }\n };\n }\n destroyColumnStateUpdateListeners() {\n this.columnStateUpdateListenerDestroyFuncs.forEach((destroyFunc) => destroyFunc());\n this.columnStateUpdateListenerDestroyFuncs = [];\n }\n destroy() {\n this.dataTypeDefinitions = {};\n this.dataTypeMatchers = {};\n this.formatValueFuncs = {};\n this.columnStateUpdatesPendingInference = {};\n this.destroyColumnStateUpdateListeners();\n super.destroy();\n }\n};\nfunction mergeDataTypeDefinitions(parentDataTypeDefinition, childDataTypeDefinition) {\n const mergedDataTypeDefinition = {\n ...parentDataTypeDefinition,\n ...childDataTypeDefinition\n };\n if (parentDataTypeDefinition.columnTypes && childDataTypeDefinition.columnTypes && childDataTypeDefinition.appendColumnTypes) {\n mergedDataTypeDefinition.columnTypes = [\n ...convertColumnTypes(parentDataTypeDefinition.columnTypes),\n ...convertColumnTypes(childDataTypeDefinition.columnTypes)\n ];\n }\n return mergedDataTypeDefinition;\n}\nfunction validateDataTypeDefinition(dataTypeDefinition, parentDataTypeDefinition, parentCellDataType) {\n if (!parentDataTypeDefinition) {\n _warn(45, { parentCellDataType });\n return false;\n }\n if (parentDataTypeDefinition.baseDataType !== dataTypeDefinition.baseDataType) {\n _warn(46);\n return false;\n }\n return true;\n}\nfunction createGroupSafeValueFormatter(dataTypeDefinition, gos) {\n if (!dataTypeDefinition.valueFormatter) {\n return void 0;\n }\n return (params) => {\n if (params.node?.group) {\n const aggFunc = (params.colDef.pivotValueColumn ?? params.column).getAggFunc();\n if (aggFunc) {\n if (aggFunc === \"first\" || aggFunc === \"last\") {\n return dataTypeDefinition.valueFormatter(params);\n }\n if (dataTypeDefinition.baseDataType === \"number\" && aggFunc !== \"count\") {\n if (typeof params.value === \"number\") {\n return dataTypeDefinition.valueFormatter(params);\n }\n if (typeof params.value === \"object\") {\n if (!params.value) {\n return void 0;\n }\n if (\"toNumber\" in params.value) {\n return dataTypeDefinition.valueFormatter({\n ...params,\n value: params.value.toNumber()\n });\n }\n if (\"value\" in params.value) {\n return dataTypeDefinition.valueFormatter({\n ...params,\n value: params.value.value\n });\n }\n }\n }\n return void 0;\n }\n if (gos.get(\"groupDisplayType\") === \"groupRows\" && !gos.get(\"treeData\")) {\n return void 0;\n }\n } else if (gos.get(\"groupHideOpenParents\") && params.column.isRowGroupActive()) {\n if (typeof params.value === \"string\" && !dataTypeDefinition.dataTypeMatcher?.(params.value)) {\n return void 0;\n }\n }\n return dataTypeDefinition.valueFormatter(params);\n };\n}\nfunction doesColDefPropPreventInference(colDef, checkProps, prop, comparisonValue) {\n if (!checkProps[prop]) {\n return false;\n }\n const value = colDef[prop];\n if (value === null) {\n checkProps[prop] = false;\n return false;\n } else {\n return comparisonValue === void 0 ? !!value : value === comparisonValue;\n }\n}\nfunction doColDefPropsPreventInference(colDef, propsToCheckForInference) {\n return [\n [\"cellRenderer\", \"agSparklineCellRenderer\"],\n [\"valueGetter\", void 0],\n [\"valueParser\", void 0],\n [\"refData\", void 0]\n ].some(\n ([prop, comparisonValue]) => doesColDefPropPreventInference(colDef, propsToCheckForInference, prop, comparisonValue)\n );\n}\nfunction getUpdatedColumnState(column, columnStateUpdates) {\n const columnState = getColumnStateFromColDef(column);\n columnStateUpdates.forEach((key) => {\n delete columnState[key];\n if (key === \"rowGroup\") {\n delete columnState.rowGroupIndex;\n } else if (key === \"pivot\") {\n delete columnState.pivotIndex;\n }\n });\n return columnState;\n}\n\n// packages/ag-grid-community/src/columns/columnModule.ts\nvar DataTypeModule = {\n moduleName: \"DataType\",\n version: VERSION,\n beans: [DataTypeService],\n dependsOn: [CheckboxCellRendererModule]\n};\nvar ColumnFlexModule = {\n moduleName: \"ColumnFlex\",\n version: VERSION,\n beans: [ColumnFlexService]\n};\nvar ColumnApiModule = {\n moduleName: \"ColumnApi\",\n version: VERSION,\n beans: [ColumnDefFactory],\n apiFunctions: {\n getColumnDef,\n getDisplayNameForColumn,\n getColumn,\n getColumns,\n applyColumnState,\n getColumnState,\n resetColumnState,\n isPinning,\n isPinningLeft,\n isPinningRight,\n getDisplayedColAfter,\n getDisplayedColBefore,\n setColumnsVisible,\n setColumnsPinned,\n getAllGridColumns,\n getDisplayedLeftColumns,\n getDisplayedCenterColumns,\n getDisplayedRightColumns,\n getAllDisplayedColumns,\n getAllDisplayedVirtualColumns,\n getColumnDefs\n }\n};\n\n// packages/ag-grid-community/src/columns/columnNameService.ts\nfunction _camelCaseToHumanText(camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n const rex = /([a-z])([A-Z])/g;\n const rexCaps = /([A-Z]+)([A-Z])([a-z])/g;\n const words = camelCase.replace(rex, \"$1 $2\").replace(rexCaps, \"$1 $2$3\").replace(/\\./g, \" \").split(\" \");\n return words.map((word) => word.substring(0, 1).toUpperCase() + (word.length > 1 ? word.substring(1, word.length) : \"\")).join(\" \");\n}\nvar ColumnNameService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colNames\";\n }\n getDisplayNameForColumn(column, location, includeAggFunc = false) {\n if (!column) {\n return null;\n }\n const headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n const { aggColNameSvc } = this.beans;\n if (includeAggFunc && aggColNameSvc) {\n return aggColNameSvc.getHeaderName(column, headerName);\n }\n return headerName;\n }\n getDisplayNameForProvidedColumnGroup(columnGroup, providedColumnGroup, location) {\n const colGroupDef = providedColumnGroup?.getColGroupDef();\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);\n }\n return null;\n }\n getDisplayNameForColumnGroup(columnGroup, location) {\n return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);\n }\n // location is where the column is going to appear, ie who is calling us\n getHeaderName(colDef, column, columnGroup, providedColumnGroup, location) {\n const headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n const params = _addGridCommonParams(this.gos, {\n colDef,\n column,\n columnGroup,\n providedColumnGroup,\n location\n });\n if (typeof headerValueGetter === \"function\") {\n return headerValueGetter(params);\n } else if (typeof headerValueGetter === \"string\") {\n return this.beans.expressionSvc?.evaluate(headerValueGetter, params) ?? null;\n }\n return \"\";\n } else if (colDef.headerName != null) {\n return colDef.headerName;\n } else if (colDef.field) {\n return _camelCaseToHumanText(colDef.field);\n }\n return \"\";\n }\n};\n\n// packages/ag-grid-community/src/columns/columnViewportService.ts\nvar ColumnViewportService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colViewport\";\n // cols in center that are in the viewport\n this.colsWithinViewport = [];\n // same as colsWithinViewport, except we always include columns with headerAutoHeight\n this.headerColsWithinViewport = [];\n // A hash key to keep track of changes in viewport columns\n this.colsWithinViewportHash = \"\";\n // all columns & groups to be rendered, index by row.\n // used by header rows to get all items to render for that row.\n this.rowsOfHeadersToRenderLeft = {};\n this.rowsOfHeadersToRenderRight = {};\n this.rowsOfHeadersToRenderCenter = {};\n }\n wireBeans(beans) {\n this.visibleCols = beans.visibleCols;\n this.colModel = beans.colModel;\n }\n postConstruct() {\n this.suppressColumnVirtualisation = this.gos.get(\"suppressColumnVirtualisation\");\n }\n setScrollPosition(scrollWidth, scrollPosition, afterScroll = false) {\n const { visibleCols } = this;\n const bodyWidthDirty = visibleCols.isBodyWidthDirty;\n const noChange = scrollWidth === this.scrollWidth && scrollPosition === this.scrollPosition && !bodyWidthDirty;\n if (noChange) {\n return;\n }\n this.scrollWidth = scrollWidth;\n this.scrollPosition = scrollPosition;\n visibleCols.isBodyWidthDirty = true;\n if (this.gos.get(\"enableRtl\")) {\n const bodyWidth = visibleCols.bodyWidth;\n this.viewportLeft = bodyWidth - scrollPosition - scrollWidth;\n this.viewportRight = bodyWidth - scrollPosition;\n } else {\n this.viewportLeft = scrollPosition;\n this.viewportRight = scrollWidth + scrollPosition;\n }\n if (this.colModel.ready) {\n this.checkViewportColumns(afterScroll);\n }\n }\n getHeadersToRender(type, dept) {\n let result;\n switch (type) {\n case \"left\":\n result = this.rowsOfHeadersToRenderLeft[dept];\n break;\n case \"right\":\n result = this.rowsOfHeadersToRenderRight[dept];\n break;\n default:\n result = this.rowsOfHeadersToRenderCenter[dept];\n break;\n }\n return result || [];\n }\n extractViewportColumns() {\n const displayedColumnsCenter = this.visibleCols.centerCols;\n if (this.isColumnVirtualisationSuppressed()) {\n this.colsWithinViewport = displayedColumnsCenter;\n this.headerColsWithinViewport = displayedColumnsCenter;\n } else {\n this.colsWithinViewport = displayedColumnsCenter.filter(this.isColumnInRowViewport.bind(this));\n this.headerColsWithinViewport = displayedColumnsCenter.filter(this.isColumnInHeaderViewport.bind(this));\n }\n }\n isColumnVirtualisationSuppressed() {\n return this.suppressColumnVirtualisation || this.viewportRight === 0;\n }\n clear(suppressHashClear) {\n this.rowsOfHeadersToRenderLeft = {};\n this.rowsOfHeadersToRenderRight = {};\n this.rowsOfHeadersToRenderCenter = {};\n if (!suppressHashClear) {\n this.colsWithinViewportHash = \"\";\n }\n }\n isColumnInHeaderViewport(col) {\n if (col.isAutoHeaderHeight() || isAnyParentAutoHeaderHeight(col)) {\n return true;\n }\n return this.isColumnInRowViewport(col);\n }\n isColumnInRowViewport(col) {\n if (col.isAutoHeight()) {\n return true;\n }\n const columnLeft = col.getLeft() || 0;\n const columnRight = columnLeft + col.getActualWidth();\n const leftBounds = this.viewportLeft - 200;\n const rightBounds = this.viewportRight + 200;\n const columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n const columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n return !columnToMuchLeft && !columnToMuchRight;\n }\n // used by Grid API only\n getViewportColumns() {\n const { leftCols, rightCols } = this.visibleCols;\n const res = this.colsWithinViewport.concat(leftCols).concat(rightCols);\n return res;\n }\n // + rowRenderer\n // if we are not column spanning, this just returns back the virtual centre columns,\n // however if we are column spanning, then different rows can have different virtual\n // columns, so we have to work out the list for each individual row.\n getColsWithinViewport(rowNode) {\n if (!this.colModel.colSpanActive) {\n return this.colsWithinViewport;\n }\n const emptySpaceBeforeColumn = (col) => {\n const left = col.getLeft();\n return _exists(left) && left > this.viewportLeft;\n };\n const inViewportCallback = this.isColumnVirtualisationSuppressed() ? void 0 : this.isColumnInRowViewport.bind(this);\n const { visibleCols } = this;\n const displayedColumnsCenter = visibleCols.centerCols;\n return visibleCols.getColsForRow(rowNode, displayedColumnsCenter, inViewportCallback, emptySpaceBeforeColumn);\n }\n // checks what columns are currently displayed due to column virtualisation. dispatches an event\n // if the list of columns has changed.\n // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n checkViewportColumns(afterScroll = false) {\n const viewportColumnsChanged = this.extractViewport();\n if (viewportColumnsChanged) {\n this.eventSvc.dispatchEvent({\n type: \"virtualColumnsChanged\",\n afterScroll\n });\n }\n }\n calculateHeaderRows() {\n this.clear(true);\n const renderedColIds = {};\n const { leftCols, rightCols, treeLeft, treeRight, treeCenter } = this.visibleCols;\n const allRenderedCols = this.headerColsWithinViewport.concat(leftCols).concat(rightCols);\n allRenderedCols.forEach((col) => renderedColIds[col.getId()] = true);\n const testGroup = (children, result, dept) => {\n let returnValue = false;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n let addThisItem = false;\n if (isColumn(child)) {\n addThisItem = renderedColIds[child.getId()] === true;\n } else {\n const columnGroup = child;\n const displayedChildren = columnGroup.getDisplayedChildren();\n if (displayedChildren) {\n addThisItem = testGroup(displayedChildren, result, dept + 1);\n }\n }\n if (addThisItem) {\n returnValue = true;\n if (!result[dept]) {\n result[dept] = [];\n }\n result[dept].push(child);\n }\n }\n return returnValue;\n };\n testGroup(treeLeft, this.rowsOfHeadersToRenderLeft, 0);\n testGroup(treeRight, this.rowsOfHeadersToRenderRight, 0);\n testGroup(treeCenter, this.rowsOfHeadersToRenderCenter, 0);\n }\n extractViewport() {\n const hashColumn = (c) => `${c.getId()}-${c.getPinned() || \"normal\"}`;\n this.extractViewportColumns();\n const newHash = this.getViewportColumns().map(hashColumn).join(\"#\");\n const changed = this.colsWithinViewportHash !== newHash;\n if (changed) {\n this.colsWithinViewportHash = newHash;\n this.calculateHeaderRows();\n }\n return changed;\n }\n};\nfunction isAnyParentAutoHeaderHeight(col) {\n while (col) {\n if (col.isAutoHeaderHeight()) {\n return true;\n }\n col = col.getParent();\n }\n return false;\n}\n\n// packages/ag-grid-community/src/components/framework/agComponentUtils.ts\nvar AgComponentUtils = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"agCompUtils\";\n }\n adaptFunction(type, jsCompFunc) {\n if (!type.cellRenderer) {\n return null;\n }\n class Adapter {\n refresh() {\n return false;\n }\n getGui() {\n return this.eGui;\n }\n init(params) {\n const callbackResult = jsCompFunc(params);\n const type2 = typeof callbackResult;\n if (type2 === \"string\" || type2 === \"number\" || type2 === \"boolean\") {\n this.eGui = _loadTemplate(\"<span>\" + callbackResult + \"</span>\");\n return;\n }\n if (callbackResult == null) {\n this.eGui = _createElement({ tag: \"span\" });\n return;\n }\n this.eGui = callbackResult;\n }\n }\n return Adapter;\n }\n};\n\n// packages/ag-grid-community/src/components/framework/cellRendererFunctionModule.ts\nvar CellRendererFunctionModule = {\n moduleName: \"CellRendererFunction\",\n version: VERSION,\n beans: [AgComponentUtils]\n};\n\n// packages/ag-grid-community/src/components/framework/registry.ts\nvar Registry = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"registry\";\n this.agGridDefaults = {};\n this.agGridDefaultParams = {};\n this.jsComps = {};\n this.dynamicBeans = {};\n this.selectors = {};\n this.icons = {};\n }\n postConstruct() {\n const comps = this.gos.get(\"components\");\n if (comps != null) {\n for (const key of Object.keys(comps)) {\n this.jsComps[key] = comps[key];\n }\n }\n }\n registerModule(module) {\n const { icons, userComponents, dynamicBeans, selectors } = module;\n if (userComponents) {\n const registerUserComponent = (name, component, params) => {\n this.agGridDefaults[name] = component;\n if (params) {\n this.agGridDefaultParams[name] = params;\n }\n };\n for (const name of Object.keys(userComponents)) {\n const comp = userComponents[name];\n if (typeof comp === \"object\") {\n registerUserComponent(name, comp.classImp, comp.params);\n } else {\n registerUserComponent(name, comp);\n }\n }\n }\n if (dynamicBeans) {\n for (const name of Object.keys(dynamicBeans)) {\n this.dynamicBeans[name] = dynamicBeans[name];\n }\n }\n selectors?.forEach((selector) => {\n this.selectors[selector.selector] = selector;\n });\n if (icons) {\n for (const name of Object.keys(icons)) {\n this.icons[name] = icons[name];\n }\n }\n }\n getUserComponent(propertyName, name) {\n const createResult = (component, componentFromFramework, params) => ({\n componentFromFramework,\n component,\n params\n });\n const { frameworkOverrides } = this.beans;\n const registeredViaFrameworkComp = frameworkOverrides.frameworkComponent(name, this.gos.get(\"components\"));\n if (registeredViaFrameworkComp != null) {\n return createResult(registeredViaFrameworkComp, true);\n }\n const jsComponent = this.jsComps[name];\n if (jsComponent) {\n const isFwkComp = frameworkOverrides.isFrameworkComponent(jsComponent);\n return createResult(jsComponent, isFwkComp);\n }\n const defaultComponent = this.agGridDefaults[name];\n if (defaultComponent) {\n return createResult(defaultComponent, false, this.agGridDefaultParams[name]);\n }\n this.beans.validation?.missingUserComponent(propertyName, name, this.agGridDefaults, this.jsComps);\n return null;\n }\n createDynamicBean(name, mandatory, ...args) {\n const BeanClass = this.dynamicBeans[name];\n if (BeanClass == null) {\n if (mandatory) {\n throw new Error(_errMsg(256));\n }\n return void 0;\n }\n return new BeanClass(...args);\n }\n getSelector(name) {\n return this.selectors[name];\n }\n getIcon(name) {\n return this.icons[name];\n }\n};\n\n// packages/ag-grid-community/src/ctrlsService.ts\nvar NUM_CTRLS = 23;\nvar CtrlsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"ctrlsSvc\";\n this.params = {};\n this.ready = false;\n this.readyCallbacks = [];\n }\n postConstruct() {\n this.addEventListener(\n \"ready\",\n () => {\n this.updateReady();\n if (this.ready) {\n this.readyCallbacks.forEach((c) => c(this.params));\n this.readyCallbacks.length = 0;\n }\n },\n this.beans.frameworkOverrides.runWhenReadyAsync?.() ?? false\n );\n }\n updateReady() {\n const values = Object.values(this.params);\n this.ready = values.length === NUM_CTRLS && values.every((ctrl) => {\n return ctrl?.isAlive() ?? false;\n });\n }\n whenReady(caller, callback) {\n if (this.ready) {\n callback(this.params);\n } else {\n this.readyCallbacks.push(callback);\n }\n caller.addDestroyFunc(() => {\n const index = this.readyCallbacks.indexOf(callback);\n if (index >= 0) {\n this.readyCallbacks.splice(index, 1);\n }\n });\n }\n register(ctrlType, ctrl) {\n this.params[ctrlType] = ctrl;\n this.updateReady();\n if (this.ready) {\n this.dispatchLocalEvent({ type: \"ready\" });\n }\n ctrl.addDestroyFunc(() => {\n this.updateReady();\n });\n }\n get(ctrlType) {\n return this.params[ctrlType];\n }\n getGridBodyCtrl() {\n return this.params.gridBodyCtrl;\n }\n getHeaderRowContainerCtrls() {\n const { leftHeader, centerHeader, rightHeader } = this.params;\n return [leftHeader, rightHeader, centerHeader];\n }\n getHeaderRowContainerCtrl(pinned) {\n const params = this.params;\n switch (pinned) {\n case \"left\":\n return params.leftHeader;\n case \"right\":\n return params.rightHeader;\n default:\n return params.centerHeader;\n }\n }\n getScrollFeature() {\n return this.getGridBodyCtrl().scrollFeature;\n }\n};\n\n// packages/ag-grid-community/src/theming/core/core.css-GENERATED.ts\nvar coreCSS = (\n /*css*/\n `:where(.ag-root-wrapper,.ag-popup,.ag-dnd-ghost,.ag-chart),:where(.ag-root-wrapper,.ag-popup,.ag-dnd-ghost,.ag-chart) :where([class^=ag-]){box-sizing:border-box;&:after,&:before{box-sizing:border-box}&:where(div,span,label):focus-visible{box-shadow:inset var(--ag-focus-shadow);outline:none}}:where(.ag-root-wrapper,.ag-popup,.ag-dnd-ghost,.ag-chart) :where([class^=ag-]) ::-ms-clear{display:none}.ag-aria-description-container{border:0;z-index:9999;clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.ag-hidden{display:none!important}.ag-invisible{visibility:hidden!important}.ag-unselectable{-webkit-user-select:none;-moz-user-select:none;user-select:none}.ag-selectable{-webkit-user-select:text;-moz-user-select:text;user-select:text}.ag-tab-guard{display:block;height:0;position:absolute;width:0}:where(.ag-virtual-list-viewport) .ag-tab-guard{position:sticky}.ag-tab-guard-top{top:1px}.ag-tab-guard-bottom{bottom:1px}.ag-shake-left-to-right{animation-direction:alternate;animation-duration:.2s;animation-iteration-count:infinite;animation-name:ag-shake-left-to-right}@keyframes ag-shake-left-to-right{0%{padding-left:6px;padding-right:2px}to{padding-left:2px;padding-right:6px}}.ag-body-horizontal-scroll-viewport,.ag-body-vertical-scroll-viewport,.ag-body-viewport,.ag-center-cols-viewport,.ag-floating-bottom-viewport,.ag-floating-top-viewport,.ag-header-viewport,.ag-sticky-bottom-viewport,.ag-sticky-top-viewport,.ag-virtual-list-viewport{flex:1 1 auto;height:100%;min-width:0;overflow:hidden;position:relative}.ag-viewport{position:relative}.ag-spanning-container{position:absolute;top:0;z-index:1}.ag-body-viewport,.ag-center-cols-viewport,.ag-floating-bottom-viewport,.ag-floating-top-viewport,.ag-header-viewport,.ag-sticky-bottom-viewport,.ag-sticky-top-viewport{overflow-x:auto;-ms-overflow-style:none!important;scrollbar-width:none!important;&::-webkit-scrollbar{display:none!important}}.ag-body-viewport{display:flex;overflow-x:hidden;&:where(.ag-layout-normal){overflow-y:auto;-webkit-overflow-scrolling:touch}}.ag-sticky-bottom-container,.ag-sticky-top-container{min-height:1px}.ag-center-cols-viewport{min-height:100%;width:100%}.ag-body-horizontal-scroll-viewport{overflow-x:scroll}.ag-body-vertical-scroll-viewport{overflow-y:scroll}.ag-virtual-list-viewport{overflow:auto;width:100%}.ag-body-container,.ag-body-horizontal-scroll-container,.ag-body-vertical-scroll-container,.ag-center-cols-container,.ag-floating-bottom-container,.ag-floating-bottom-full-width-container,.ag-floating-top-container,.ag-full-width-container,.ag-header-container,.ag-pinned-left-cols-container,.ag-pinned-right-cols-container,.ag-sticky-bottom-container,.ag-sticky-top-container,.ag-virtual-list-container{position:relative}.ag-floating-bottom-container,.ag-floating-top-container,.ag-header-container,.ag-pinned-left-floating-bottom,.ag-pinned-left-floating-top,.ag-pinned-right-floating-bottom,.ag-pinned-right-floating-top,.ag-sticky-bottom-container,.ag-sticky-top-container{height:100%;white-space:nowrap}.ag-center-cols-container,.ag-pinned-right-cols-container{display:block}.ag-body-horizontal-scroll-container{height:100%}.ag-body-vertical-scroll-container{width:100%}.ag-floating-bottom-full-width-container,.ag-floating-top-full-width-container,.ag-full-width-container,.ag-sticky-bottom-full-width-container,.ag-sticky-top-full-width-container{pointer-events:none;position:absolute;top:0}:where(.ag-ltr) .ag-floating-bottom-full-width-container,:where(.ag-ltr) .ag-floating-top-full-width-container,:where(.ag-ltr) .ag-full-width-container,:where(.ag-ltr) .ag-sticky-bottom-full-width-container,:where(.ag-ltr) .ag-sticky-top-full-width-container{left:0}:where(.ag-rtl) .ag-floating-bottom-full-width-container,:where(.ag-rtl) .ag-floating-top-full-width-container,:where(.ag-rtl) .ag-full-width-container,:where(.ag-rtl) .ag-sticky-bottom-full-width-container,:where(.ag-rtl) .ag-sticky-top-full-width-container{right:0}.ag-full-width-container{width:100%}.ag-floating-bottom-full-width-container,.ag-floating-top-full-width-container{display:inline-block;height:100%;overflow:hidden;width:100%}.ag-virtual-list-container{overflow:hidden}.ag-body{display:flex;flex:1 1 auto;flex-direction:row!important;min-height:0;position:relative}.ag-body-horizontal-scroll,.ag-body-vertical-scroll{display:flex;min-height:0;min-width:0;position:relative;&:where(.ag-scrollbar-invisible){bottom:0;position:absolute;&:where(.ag-apple-scrollbar){opacity:0;transition:opacity .4s;visibility:hidden;&:where(.ag-scrollbar-scrolling,.ag-scrollbar-active){opacity:1;visibility:visible}}}}.ag-body-horizontal-scroll{width:100%;&:where(.ag-scrollbar-invisible){left:0;right:0}}.ag-body-vertical-scroll{height:100%;&:where(.ag-scrollbar-invisible){top:0;z-index:10}}:where(.ag-ltr) .ag-body-vertical-scroll{&:where(.ag-scrollbar-invisible){right:0}}:where(.ag-rtl) .ag-body-vertical-scroll{&:where(.ag-scrollbar-invisible){left:0}}.ag-force-vertical-scroll{overflow-y:scroll!important}.ag-horizontal-left-spacer,.ag-horizontal-right-spacer{height:100%;min-width:0;overflow-x:scroll;&:where(.ag-scroller-corner){overflow-x:hidden}}:where(.ag-row-animation) .ag-row{transition:transform .4s,top .4s,opacity .2s;&:where(.ag-after-created){transition:transform .4s,top .4s,height .4s,opacity .2s}}:where(.ag-row-no-animation) .ag-row{transition:none}.ag-row-loading{align-items:center;display:flex}.ag-row-position-absolute{position:absolute}.ag-row-position-relative{position:relative}.ag-full-width-row{overflow:hidden;pointer-events:all}.ag-row-inline-editing{z-index:1}.ag-row-dragging{z-index:2}.ag-stub-cell{align-items:center;display:flex}.ag-cell{display:inline-block;height:100%;position:absolute;white-space:nowrap;&:focus-visible{box-shadow:none}}.ag-cell-value{flex:1 1 auto}.ag-cell-value,.ag-group-value{overflow:hidden;text-overflow:ellipsis}.ag-cell-wrap-text{white-space:normal;word-break:break-word}:where(.ag-cell) .ag-icon{display:inline-block;vertical-align:middle}.ag-floating-top{border-bottom:var(--ag-pinned-row-border)}.ag-floating-bottom,.ag-floating-top{display:flex;overflow:hidden;position:relative;white-space:nowrap;width:100%}.ag-floating-bottom{border-top:var(--ag-pinned-row-border)}.ag-sticky-bottom,.ag-sticky-top{background-color:var(--ag-background-color);display:flex;height:0;overflow:hidden;position:absolute;width:100%;z-index:1}.ag-opacity-zero{opacity:0!important}.ag-cell-label-container{align-items:center;display:flex;flex-direction:row-reverse;height:100%;justify-content:space-between;width:100%}:where(.ag-right-aligned-header){.ag-cell-label-container{flex-direction:row}.ag-header-cell-text{text-align:end}}.ag-column-group-icons{display:block;>*{cursor:pointer}}:where(.ag-ltr){direction:ltr;.ag-body,.ag-body-horizontal-scroll,.ag-body-viewport,.ag-floating-bottom,.ag-floating-top,.ag-header,.ag-sticky-bottom,.ag-sticky-top{flex-direction:row}}:where(.ag-rtl){direction:rtl;text-align:right;.ag-body,.ag-body-horizontal-scroll,.ag-body-viewport,.ag-floating-bottom,.ag-floating-top,.ag-header,.ag-sticky-bottom,.ag-sticky-top{flex-direction:row-reverse}.ag-icon-contracted,.ag-icon-expanded,.ag-icon-tree-closed{display:block}}:where(.ag-rtl){.ag-icon-contracted,.ag-icon-expanded,.ag-icon-tree-closed{transform:rotate(180deg)}}:where(.ag-rtl){.ag-icon-contracted,.ag-icon-expanded,.ag-icon-tree-closed{transform:rotate(-180deg)}}.ag-measurement-container{height:0;overflow:hidden;visibility:hidden;width:0}.ag-measurement-element-border{display:inline-block;&:before{border-left:var(--ag-internal-measurement-border);content:\"\";display:block}}.ag-group{position:relative;width:100%}.ag-group-title-bar{align-items:center;display:flex;padding:var(--ag-spacing)}.ag-group-title{display:inline;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:where(.ag-group-title-bar) .ag-group-title{cursor:default}.ag-group-toolbar{align-items:center;display:flex;padding:var(--ag-spacing)}.ag-group-container{display:flex}.ag-disabled .ag-group-container{pointer-events:none}.ag-disabled-group-container,.ag-disabled-group-title-bar{opacity:.5}.ag-group-container-horizontal{flex-flow:row wrap}.ag-group-container-vertical{flex-direction:column}.ag-group-title-bar-icon{cursor:pointer;flex:none}:where(.ag-ltr) .ag-group-title-bar-icon{margin-right:var(--ag-spacing)}:where(.ag-rtl) .ag-group-title-bar-icon{margin-left:var(--ag-spacing)}:where(.ag-group-item-alignment-stretch) .ag-group-item{align-items:stretch}:where(.ag-group-item-alignment-start) .ag-group-item{align-items:flex-start}:where(.ag-group-item-alignment-end) .ag-group-item{align-items:flex-end}.ag-popup-child{top:0;z-index:5;&:where(:not(.ag-tooltip-custom)){box-shadow:var(--ag-popup-shadow)}}.ag-popup-editor{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ag-large-text-input{display:block}:where(.ag-ltr) .ag-row:not(.ag-row-level-0) .ag-pivot-leaf-group{margin-left:var(--ag-row-group-indent-size)}:where(.ag-rtl) .ag-row:not(.ag-row-level-0) .ag-pivot-leaf-group{margin-right:var(--ag-row-group-indent-size)}:where(.ag-ltr) .ag-row-group-leaf-indent{margin-left:calc(var(--ag-cell-widget-spacing) + var(--ag-icon-size))}:where(.ag-rtl) .ag-row-group-leaf-indent{margin-right:calc(var(--ag-cell-widget-spacing) + var(--ag-icon-size))}.ag-value-change-delta{padding:0 2px}.ag-value-change-delta-up{color:var(--ag-value-change-delta-up-color)}.ag-value-change-delta-down{color:var(--ag-value-change-delta-down-color)}.ag-value-change-value{background-color:transparent;border-radius:1px;padding-left:1px;padding-right:1px;transition:background-color 1s}.ag-value-change-value-highlight{background-color:var(--ag-value-change-value-highlight-background-color);transition:background-color .1s}.ag-cell-data-changed{background-color:var(--ag-value-change-value-highlight-background-color)!important}.ag-cell-data-changed-animation{background-color:transparent}.ag-cell-highlight{background-color:var(--ag-range-selection-highlight-color)!important}.ag-row,.ag-spanned-row{color:var(--ag-cell-text-color);font-family:var(--ag-cell-font-family);font-size:var(--ag-data-font-size);white-space:nowrap;--ag-internal-content-line-height:calc(min(var(--ag-row-height), var(--ag-line-height, 1000px)) - var(--ag-internal-row-border-width, 1px) - 2px)}.ag-row{background-color:var(--ag-background-color);border-bottom:var(--ag-row-border);height:var(--ag-row-height);width:100%}:where(.ag-body-vertical-content-no-gap>div>div>div,.ag-body-vertical-content-no-gap>div>div>div>div)>.ag-row-last{border-bottom-color:transparent}.ag-sticky-bottom{border-top:var(--ag-row-border);box-sizing:content-box!important}.ag-group-contracted,.ag-group-expanded{cursor:pointer}.ag-cell,.ag-full-width-row .ag-cell-wrapper.ag-row-group{border:1px solid transparent;line-height:var(--ag-internal-content-line-height);-webkit-font-smoothing:subpixel-antialiased}:where(.ag-ltr) .ag-cell{border-right:var(--ag-column-border)}:where(.ag-rtl) .ag-cell{border-left:var(--ag-column-border)}.ag-spanned-cell-wrapper{background-color:var(--ag-background-color);position:absolute}.ag-spanned-cell-wrapper>.ag-spanned-cell{display:block;position:relative}:where(.ag-ltr) :where(.ag-body-horizontal-content-no-gap) .ag-column-last{border-right-color:transparent}:where(.ag-rtl) :where(.ag-body-horizontal-content-no-gap) .ag-column-last{border-left-color:transparent}.ag-cell-wrapper{align-items:center;display:flex;>:where(:not(.ag-cell-value,.ag-group-value)){align-items:center;display:flex;height:var(--ag-internal-content-line-height)}&:where(.ag-row-group){align-items:flex-start}:where(.ag-full-width-row) &:where(.ag-row-group){align-items:center;height:100%}}:where(.ag-ltr) .ag-cell-wrapper{padding-left:calc(var(--ag-indentation-level)*var(--ag-row-group-indent-size))}:where(.ag-rtl) .ag-cell-wrapper{padding-right:calc(var(--ag-indentation-level)*var(--ag-row-group-indent-size))}:where(.ag-cell-wrap-text:not(.ag-cell-auto-height)) .ag-cell-wrapper{align-items:normal;height:100%;:where(.ag-cell-value){height:100%}}:where(.ag-ltr) .ag-row>.ag-cell-wrapper.ag-row-group{padding-left:calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size)*var(--ag-indentation-level))}:where(.ag-rtl) .ag-row>.ag-cell-wrapper.ag-row-group{padding-right:calc(var(--ag-cell-horizontal-padding) + var(--ag-row-group-indent-size)*var(--ag-indentation-level))}.ag-cell-focus:not(.ag-cell-range-selected):focus-within,.ag-cell-range-single-cell,.ag-cell-range-single-cell.ag-cell-range-handle,.ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),.ag-context-menu-open .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,.ag-full-width-row.ag-row-focus:focus .ag-cell-wrapper.ag-row-group{border:1px solid;border-color:var(--ag-range-selection-border-color);border-style:var(--ag-range-selection-border-style);outline:initial}.ag-full-width-row.ag-row-focus:focus{box-shadow:none}:where(.ag-ltr) .ag-group-contracted,:where(.ag-ltr) .ag-group-expanded,:where(.ag-ltr) .ag-row-drag,:where(.ag-ltr) .ag-selection-checkbox{margin-right:var(--ag-cell-widget-spacing)}:where(.ag-rtl) .ag-group-contracted,:where(.ag-rtl) .ag-group-expanded,:where(.ag-rtl) .ag-row-drag,:where(.ag-rtl) .ag-selection-checkbox{margin-left:var(--ag-cell-widget-spacing)}:where(.ag-ltr) .ag-group-child-count{margin-left:3px}:where(.ag-rtl) .ag-group-child-count{margin-right:3px}.ag-row-highlight-above:after,.ag-row-highlight-below:after{background-color:var(--ag-range-selection-border-color);content:\"\";height:1px;position:absolute;width:calc(100% - 1px)}:where(.ag-ltr) .ag-row-highlight-above:after,:where(.ag-ltr) .ag-row-highlight-below:after{left:1px}:where(.ag-rtl) .ag-row-highlight-above:after,:where(.ag-rtl) .ag-row-highlight-below:after{right:1px}.ag-row-highlight-above:after{top:0}.ag-row-highlight-below:after{bottom:0}.ag-row-odd{background-color:var(--ag-odd-row-background-color)}.ag-row-selected:before{background-color:var(--ag-selected-row-background-color);content:\"\";display:block;inset:0;pointer-events:none;position:absolute}.ag-row-hover.ag-full-width-row.ag-row-group:before,.ag-row-hover:not(.ag-full-width-row):before{background-color:var(--ag-row-hover-color);content:\"\";display:block;inset:0;pointer-events:none;position:absolute}.ag-row-hover.ag-row-selected:before{background-color:var(--ag-row-hover-color);background-image:linear-gradient(var(--ag-selected-row-background-color),var(--ag-selected-row-background-color))}.ag-row.ag-full-width-row.ag-row-group>*{position:relative}.ag-column-hover{background-color:var(--ag-column-hover-color)}.ag-header-range-highlight{background-color:var(--ag-range-header-highlight-color)}.ag-right-aligned-cell{font-variant-numeric:tabular-nums}:where(.ag-ltr) .ag-right-aligned-cell{text-align:right}:where(.ag-rtl) .ag-right-aligned-cell{text-align:left}.ag-right-aligned-cell .ag-cell-value,.ag-right-aligned-cell .ag-group-value{margin-left:auto}:where(.ag-ltr) .ag-cell:not(.ag-cell-inline-editing),:where(.ag-ltr) .ag-full-width-row .ag-cell-wrapper.ag-row-group{padding-left:calc(var(--ag-cell-horizontal-padding) - 1px + var(--ag-row-group-indent-size)*var(--ag-indentation-level));padding-right:calc(var(--ag-cell-horizontal-padding) - 1px)}:where(.ag-rtl) .ag-cell:not(.ag-cell-inline-editing),:where(.ag-rtl) .ag-full-width-row .ag-cell-wrapper.ag-row-group{padding-left:calc(var(--ag-cell-horizontal-padding) - 1px);padding-right:calc(var(--ag-cell-horizontal-padding) - 1px + var(--ag-row-group-indent-size)*var(--ag-indentation-level))}.ag-row>.ag-cell-wrapper{padding-left:calc(var(--ag-cell-horizontal-padding) - 1px);padding-right:calc(var(--ag-cell-horizontal-padding) - 1px)}.ag-row-dragging{cursor:move;opacity:.5}.ag-details-row{background-color:var(--ag-background-color);padding:calc(var(--ag-spacing)*3.75)}.ag-layout-auto-height,.ag-layout-print{.ag-center-cols-container,.ag-center-cols-viewport{min-height:150px}}.ag-overlay-loading-wrapper{background-color:var(--ag-modal-overlay-background-color)}.ag-skeleton-container{align-content:center;height:100%;width:100%}.ag-skeleton-effect{animation:ag-skeleton-loading 1.5s ease-in-out .5s infinite;background-color:var(--ag-row-loading-skeleton-effect-color);border-radius:.25rem;height:1em;width:100%}:where(.ag-ltr) .ag-right-aligned-cell .ag-skeleton-effect{margin-left:auto}:where(.ag-rtl) .ag-right-aligned-cell .ag-skeleton-effect{margin-right:auto}@keyframes ag-skeleton-loading{0%{opacity:1}50%{opacity:.4}to{opacity:1}}.ag-loading{align-items:center;display:flex;height:100%}:where(.ag-ltr) .ag-loading{padding-left:var(--ag-cell-horizontal-padding)}:where(.ag-rtl) .ag-loading{padding-right:var(--ag-cell-horizontal-padding)}:where(.ag-ltr) .ag-loading-icon{padding-right:var(--ag-cell-widget-spacing)}:where(.ag-rtl) .ag-loading-icon{padding-left:var(--ag-cell-widget-spacing)}.ag-icon-loading{animation-duration:1s;animation-iteration-count:infinite;animation-name:spin;animation-timing-function:linear}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ag-input-wrapper,.ag-picker-field-wrapper{align-items:center;display:flex;flex:1 1 auto;line-height:normal;position:relative}.ag-input-field{align-items:center;display:flex;flex-direction:row}.ag-input-field-input:where(:not([type=checkbox],[type=radio])){flex:1 1 auto;min-width:0;width:100%}.ag-header{background-color:var(--ag-header-background-color);border-bottom:var(--ag-header-row-border);color:var(--ag-header-text-color);display:flex;font-family:var(--ag-header-font-family);font-size:var(--ag-header-font-size);font-weight:var(--ag-header-font-weight);overflow:hidden;white-space:nowrap;width:100%}.ag-header-row{height:var(--ag-header-height);position:absolute}.ag-floating-filter-button-button,.ag-header-cell-filter-button,.ag-header-cell-menu-button,.ag-header-expand-icon,.ag-panel-title-bar-button,:where(.ag-header-cell-sortable) .ag-header-cell-label{cursor:pointer}:where(.ag-ltr) .ag-header-expand-icon{margin-left:4px}:where(.ag-rtl) .ag-header-expand-icon{margin-right:4px}.ag-header-row:where(:not(:first-child)){:where(.ag-header-cell:not(.ag-header-span-height.ag-header-span-total,.ag-header-parent-hidden),.ag-header-group-cell.ag-header-group-cell-with-group){border-top:var(--ag-header-row-border)}}.ag-header-row:where(:not(.ag-header-row-column-group)){overflow:hidden}:where(.ag-header.ag-header-allow-overflow) .ag-header-row{overflow:visible}.ag-header-cell{display:inline-flex;overflow:hidden}.ag-header-group-cell{contain:paint;display:flex}.ag-header-cell,.ag-header-group-cell{align-items:center;gap:var(--ag-cell-widget-spacing);height:100%;padding:0 var(--ag-cell-horizontal-padding);position:absolute}@property --ag-internal-moving-color{syntax:\"<color>\";inherits:false;initial-value:transparent}@property --ag-internal-hover-color{syntax:\"<color>\";inherits:false;initial-value:transparent}.ag-header-cell:where(:not(.ag-floating-filter)),.ag-header-group-cell{&:before{background-image:linear-gradient(var(--ag-internal-hover-color),var(--ag-internal-hover-color)),linear-gradient(var(--ag-internal-moving-color),var(--ag-internal-moving-color));content:\"\";inset:0;position:absolute;--ag-internal-moving-color:transparent;--ag-internal-hover-color:transparent;transition:--ag-internal-moving-color var(--ag-header-cell-background-transition-duration),--ag-internal-hover-color var(--ag-header-cell-background-transition-duration)}&:where(:hover):before{--ag-internal-hover-color:var(--ag-header-cell-hover-background-color)}&:where(.ag-header-cell-moving):before{--ag-internal-moving-color:var(--ag-header-cell-moving-background-color);--ag-internal-hover-color:var(--ag-header-cell-hover-background-color)}}:where(.ag-header-cell:not(.ag-floating-filter) *,.ag-header-group-cell *){position:relative;z-index:1}.ag-header-cell-menu-button:where(:not(.ag-header-menu-always-show)){opacity:0;transition:opacity .2s}.ag-header-cell-filter-button,:where(.ag-header-cell.ag-header-active) .ag-header-cell-menu-button{opacity:1}.ag-header-cell-label,.ag-header-group-cell-label{align-items:center;align-self:stretch;display:flex;flex:1 1 auto;overflow:hidden;padding:5px 0}:where(.ag-ltr) .ag-sort-indicator-icon{padding-left:var(--ag-spacing)}:where(.ag-rtl) .ag-sort-indicator-icon{padding-right:var(--ag-spacing)}.ag-header-cell-label{text-overflow:ellipsis}.ag-header-group-cell-label.ag-sticky-label{flex:none;max-width:100%;overflow:visible;position:sticky}:where(.ag-ltr) .ag-header-group-cell-label.ag-sticky-label{left:var(--ag-cell-horizontal-padding)}:where(.ag-rtl) .ag-header-group-cell-label.ag-sticky-label{right:var(--ag-cell-horizontal-padding)}.ag-header-cell-text,.ag-header-group-text{overflow:hidden;text-overflow:ellipsis}.ag-header-cell-text{word-break:break-word}.ag-header-cell-comp-wrapper{width:100%}:where(.ag-header-group-cell) .ag-header-cell-comp-wrapper{display:flex}:where(.ag-header-cell:not(.ag-header-cell-auto-height)) .ag-header-cell-comp-wrapper{align-items:center;display:flex;height:100%}.ag-header-cell-wrap-text .ag-header-cell-comp-wrapper{white-space:normal}.ag-header-cell-comp-wrapper-limited-height>*{overflow:hidden}:where(.ag-right-aligned-header) .ag-header-cell-label{flex-direction:row-reverse}:where(.ag-ltr) :where(.ag-header-cell:not(.ag-right-aligned-header)){.ag-header-label-icon,.ag-header-menu-icon{margin-left:var(--ag-spacing)}}:where(.ag-rtl) :where(.ag-header-cell:not(.ag-right-aligned-header)){.ag-header-label-icon,.ag-header-menu-icon{margin-right:var(--ag-spacing)}}:where(.ag-ltr) :where(.ag-header-cell.ag-right-aligned-header){.ag-header-label-icon,.ag-header-menu-icon{margin-right:var(--ag-spacing)}}:where(.ag-rtl) :where(.ag-header-cell.ag-right-aligned-header){.ag-header-label-icon,.ag-header-menu-icon{margin-left:var(--ag-spacing)}}.ag-header-cell:after,.ag-header-group-cell:where(:not(.ag-header-span-height.ag-header-group-cell-no-group)):after{content:\"\";height:var(--ag-header-column-border-height);position:absolute;top:calc(50% - var(--ag-header-column-border-height)*.5);z-index:1}:where(.ag-ltr) .ag-header-cell:after,:where(.ag-ltr) .ag-header-group-cell:where(:not(.ag-header-span-height.ag-header-group-cell-no-group)):after{border-right:var(--ag-header-column-border);right:0}:where(.ag-rtl) .ag-header-cell:after,:where(.ag-rtl) .ag-header-group-cell:where(:not(.ag-header-span-height.ag-header-group-cell-no-group)):after{border-left:var(--ag-header-column-border);left:0}.ag-header-highlight-after:after,.ag-header-highlight-before:after{background-color:var(--ag-accent-color);content:\"\";height:100%;position:absolute;width:1px}:where(.ag-ltr) .ag-header-highlight-before:after{left:0}:where(.ag-rtl) .ag-header-highlight-before:after{right:0}:where(.ag-ltr) .ag-header-highlight-after:after{right:0;:where(.ag-pinned-left-header) &{right:1px}}:where(.ag-rtl) .ag-header-highlight-after:after{left:0;:where(.ag-pinned-left-header) &{left:1px}}.ag-header-cell-resize{align-items:center;cursor:ew-resize;display:flex;height:100%;position:absolute;top:0;width:8px;z-index:2;&:after{background-color:var(--ag-header-column-resize-handle-color);content:\"\";height:var(--ag-header-column-resize-handle-height);position:absolute;top:calc(50% - var(--ag-header-column-resize-handle-height)*.5);width:var(--ag-header-column-resize-handle-width);z-index:1}}:where(.ag-ltr) .ag-header-cell-resize{right:-3px;&:after{left:calc(50% - var(--ag-header-column-resize-handle-width))}}:where(.ag-rtl) .ag-header-cell-resize{left:-3px;&:after{right:calc(50% - var(--ag-header-column-resize-handle-width))}}:where(.ag-header-cell.ag-header-span-height) .ag-header-cell-resize:after{height:calc(100% - var(--ag-spacing)*4);top:calc(var(--ag-spacing)*2)}.ag-header-group-cell-no-group:where(.ag-header-span-height){display:none}.ag-sort-indicator-container{display:flex;gap:var(--ag-spacing)}.ag-layout-print{&.ag-body{display:block;height:unset}&.ag-root-wrapper{display:inline-block}.ag-body-horizontal-scroll,.ag-body-vertical-scroll{display:none}&.ag-force-vertical-scroll{overflow-y:visible!important}}@media print{.ag-root-wrapper.ag-layout-print{display:table;.ag-body-horizontal-scroll-viewport,.ag-body-viewport,.ag-center-cols-container,.ag-center-cols-viewport,.ag-root,.ag-root-wrapper-body,.ag-virtual-list-viewport{display:block!important;height:auto!important;overflow:hidden!important}.ag-cell,.ag-row{-moz-column-break-inside:avoid;break-inside:avoid}}}ag-grid,ag-grid-angular{display:block}.ag-chart,.ag-dnd-ghost,.ag-popup,.ag-root-wrapper{cursor:default;line-height:normal;white-space:normal;-webkit-font-smoothing:antialiased;background-color:var(--ag-background-color);color:var(--ag-text-color);color-scheme:var(--ag-browser-color-scheme);font-family:var(--ag-font-family);font-size:var(--ag-font-size);--ag-indentation-level:0}.ag-root-wrapper{border:var(--ag-wrapper-border);border-radius:var(--ag-wrapper-border-radius);display:flex;flex-direction:column;overflow:hidden;position:relative;&.ag-layout-normal{height:100%}}.ag-root-wrapper-body{display:flex;flex-direction:row;&.ag-layout-normal{flex:1 1 auto;height:0;min-height:0}}.ag-root{display:flex;flex-direction:column;position:relative;&.ag-layout-auto-height,&.ag-layout-normal{flex:1 1 auto;overflow:hidden;width:0}&.ag-layout-normal{height:100%}}.ag-drag-handle{color:var(--ag-drag-handle-color);cursor:grab}.ag-list-item,.ag-virtual-list-item{height:var(--ag-list-item-height)}.ag-virtual-list-item{position:absolute;width:100%}.ag-select-list{background-color:var(--ag-picker-list-background-color);border:var(--ag-picker-list-border);border-radius:var(--ag-border-radius);box-shadow:var(--ag-dropdown-shadow);overflow:hidden auto}.ag-list-item{align-items:center;display:flex;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;&.ag-active-item{background-color:var(--ag-row-hover-color)}}.ag-select-list-item{cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;:where(span){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}:where(.ag-ltr) .ag-select-list-item{padding-left:calc(var(--ag-cell-horizontal-padding)/2)}:where(.ag-rtl) .ag-select-list-item{padding-right:calc(var(--ag-cell-horizontal-padding)/2)}.ag-list-item-hovered:after{background-color:var(--ag-accent-color);content:\"\";height:1px;left:0;position:absolute;right:0}.ag-item-highlight-top:after{top:0}.ag-item-highlight-bottom:after{bottom:0}:where(.ag-icon):before{align-items:center;background-color:currentcolor;color:inherit;content:\"\";display:flex;font-family:inherit;font-size:var(--ag-icon-size);font-style:normal;font-variant:normal;height:var(--ag-icon-size);justify-content:center;line-height:var(--ag-icon-size);-webkit-mask-size:contain;mask-size:contain;text-transform:none;width:var(--ag-icon-size)}.ag-icon{background-position:50%;background-repeat:no-repeat;background-size:contain;color:var(--ag-icon-color);display:block;height:var(--ag-icon-size);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--ag-icon-size)}.ag-column-select-column-group-readonly,.ag-column-select-column-readonly,.ag-disabled,[disabled]{.ag-icon{opacity:.5}&.ag-icon-grip{opacity:.35}}.ag-column-select-column-readonly{&.ag-icon-grip,.ag-icon-grip{opacity:.35}}.ag-chart-menu-icon,.ag-chart-settings-next,.ag-chart-settings-prev,.ag-column-group-icons,.ag-column-select-header-icon,.ag-filter-toolpanel-expand,.ag-floating-filter-button-button,.ag-group-title-bar-icon,.ag-header-cell-filter-button,.ag-header-cell-menu-button,.ag-header-expand-icon,.ag-panel-title-bar-button,.ag-panel-title-bar-button-icon,.ag-set-filter-group-icons,:where(.ag-group-contracted) .ag-icon,:where(.ag-group-expanded) .ag-icon{background-color:var(--ag-icon-button-background-color);border-radius:var(--ag-icon-button-border-radius);box-shadow:0 0 0 var(--ag-icon-button-background-spread) var(--ag-icon-button-background-color);color:var(--ag-icon-button-color);&:hover{background-color:var(--ag-icon-button-hover-background-color);box-shadow:0 0 0 var(--ag-icon-button-background-spread) var(--ag-icon-button-hover-background-color);color:var(--ag-icon-button-hover-color)}}.ag-filter-active{background-image:linear-gradient(var(--ag-icon-button-active-background-color),var(--ag-icon-button-active-background-color));border-radius:1px;outline:solid var(--ag-icon-button-background-spread) var(--ag-icon-button-active-background-color);position:relative;&:after{background-color:var(--ag-accent-color);border-radius:50%;content:\"\";height:6px;position:absolute;top:-1px;width:6px}:where(.ag-icon-filter){clip-path:path(\"M8,0C8,4.415 11.585,8 16,8L16,16L0,16L0,0L8,0Z\");color:var(--ag-icon-button-active-color)}}:where(.ag-ltr) .ag-filter-active{&:after{right:-1px}}:where(.ag-rtl) .ag-filter-active{&:after{left:-1px}}.ag-menu{background-color:var(--ag-menu-background-color);border:var(--ag-menu-border);border-radius:var(--ag-border-radius);box-shadow:var(--ag-menu-shadow);color:var(--ag-menu-text-color);max-height:100%;overflow-y:auto}.ag-menu,.ag-resizer{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ag-resizer{pointer-events:none;z-index:1}:where(.ag-resizer){&.ag-resizer-topLeft{cursor:nwse-resize;height:5px;left:0;top:0;width:5px}&.ag-resizer-top{cursor:ns-resize;height:5px;left:5px;right:5px;top:0}&.ag-resizer-topRight{cursor:nesw-resize;height:5px;right:0;top:0;width:5px}&.ag-resizer-right{bottom:5px;cursor:ew-resize;right:0;top:5px;width:5px}&.ag-resizer-bottomRight{bottom:0;cursor:nwse-resize;height:5px;right:0;width:5px}&.ag-resizer-bottom{bottom:0;cursor:ns-resize;height:5px;left:5px;right:5px}&.ag-resizer-bottomLeft{bottom:0;cursor:nesw-resize;height:5px;left:0;width:5px}&.ag-resizer-left{bottom:5px;cursor:ew-resize;left:0;top:5px;width:5px}}`\n);\n\n// packages/ag-grid-community/src/theming/inject.ts\nvar IS_SSR = typeof window !== \"object\" || !window?.document?.fonts?.forEach;\nvar injectionsByContainer = /* @__PURE__ */ new WeakMap();\nvar _injectGlobalCSS = (css, styleContainer, debugId, layer, priority, nonce) => {\n if (IS_SSR)\n return;\n if (FORCE_LEGACY_THEMES)\n return;\n if (layer) {\n css = `@layer ${CSS.escape(layer)} { ${css} }`;\n }\n let injections = injectionsByContainer.get(styleContainer);\n if (!injections) {\n injections = [];\n injectionsByContainer.set(styleContainer, injections);\n }\n if (injections.find((i) => i.css === css))\n return;\n const el = document.createElement(\"style\");\n if (nonce) {\n el.setAttribute(\"nonce\", nonce);\n }\n el.dataset.agGlobalCss = debugId;\n el.textContent = css;\n const newInjection = { css, el, priority };\n let insertAfter;\n for (const injection of injections) {\n if (injection.priority > priority)\n break;\n insertAfter = injection;\n }\n if (insertAfter) {\n insertAfter.el.insertAdjacentElement(\"afterend\", el);\n const index = injections.indexOf(insertAfter);\n injections.splice(index + 1, 0, newInjection);\n } else {\n styleContainer.insertBefore(el, styleContainer.querySelector(\":not(title, meta)\"));\n injections.push(newInjection);\n }\n};\nvar _injectCoreAndModuleCSS = (styleContainer, layer, nonce) => {\n _injectGlobalCSS(coreCSS, styleContainer, \"core\", layer, 0, nonce);\n Array.from(_getAllRegisteredModules()).sort((a, b) => a.moduleName.localeCompare(b.moduleName)).forEach(\n (module) => module.css?.forEach(\n (css) => _injectGlobalCSS(css, styleContainer, `module-${module.moduleName}`, layer, 0, nonce)\n )\n );\n};\nvar gridsUsingThemingAPI = /* @__PURE__ */ new Set();\nvar _registerGridUsingThemingAPI = (environment) => {\n gridsUsingThemingAPI.add(environment);\n};\nvar _unregisterGridUsingThemingAPI = (environment) => {\n gridsUsingThemingAPI.delete(environment);\n if (gridsUsingThemingAPI.size === 0) {\n injectionsByContainer = /* @__PURE__ */ new WeakMap();\n for (const style of document.head.querySelectorAll(\"style[data-ag-global-css]\")) {\n style.remove();\n }\n }\n};\n\n// packages/ag-grid-community/src/theming/Part.ts\nvar createPart = (args) => {\n return new PartImpl(args);\n};\nvar defaultModeName = \"$default\";\nvar partCounter = 0;\nvar PartImpl = class {\n constructor({ feature, params, modeParams = {}, css, cssImports }) {\n this.feature = feature;\n this.css = css;\n this.cssImports = cssImports;\n this.modeParams = {\n // NOTE: it's important that default is defined first, putting it\n // first in iteration order, because when merging params the default\n // params override any prior modal params, so modal params in this\n // part need to come after default params to prevent them from being\n // immediately overridden.\n [defaultModeName]: {\n ...modeParams[defaultModeName] ?? {},\n ...params ?? {}\n },\n ...modeParams\n };\n }\n use(styleContainer, layer, nonce) {\n let inject = this._inject;\n if (inject == null) {\n let { css } = this;\n if (css) {\n const className = `ag-theme-${this.feature ?? \"part\"}-${++partCounter}`;\n if (typeof css === \"function\")\n css = css();\n css = `:where(.${className}) {\n${css}\n}\n`;\n for (const cssImport of this.cssImports ?? []) {\n css = `@import url(${JSON.stringify(cssImport)});\n${css}`;\n }\n inject = { css, class: className };\n } else {\n inject = false;\n }\n this._inject = inject;\n }\n if (inject && styleContainer) {\n _injectGlobalCSS(inject.css, styleContainer, inject.class, layer, 1, nonce);\n }\n return inject ? inject.class : false;\n }\n};\n\n// packages/ag-grid-community/src/theming/theme-utils.ts\nvar kebabCase = (str) => str.replace(/[A-Z]/g, (m) => `-${m}`).toLowerCase();\nvar paramToVariableName = (paramName) => `--ag-${kebabCase(paramName)}`;\nvar paramToVariableExpression = (paramName) => `var(${paramToVariableName(paramName)})`;\nvar clamp = (value, min, max) => Math.max(min, Math.min(max, value));\nvar memoize = (fn) => {\n const values = /* @__PURE__ */ new Map();\n return (a) => {\n const key = a;\n if (!values.has(key)) {\n values.set(key, fn(a));\n }\n return values.get(key);\n };\n};\nvar accentMix = (mix) => ({ ref: \"accentColor\", mix });\nvar foregroundMix = (mix) => ({ ref: \"foregroundColor\", mix });\nvar foregroundBackgroundMix = (mix) => ({\n ref: \"foregroundColor\",\n mix,\n onto: \"backgroundColor\"\n});\nvar foregroundHeaderBackgroundMix = (mix) => ({\n ref: \"foregroundColor\",\n mix,\n onto: \"headerBackgroundColor\"\n});\nvar backgroundColor = { ref: \"backgroundColor\" };\nvar foregroundColor = { ref: \"foregroundColor\" };\nvar accentColor = { ref: \"accentColor\" };\n\n// packages/ag-grid-community/src/theming/core/core-css.ts\nvar defaultLightColorSchemeParams = {\n backgroundColor: \"#fff\",\n foregroundColor: \"#181d1f\",\n borderColor: foregroundMix(0.15),\n chromeBackgroundColor: foregroundBackgroundMix(0.02),\n browserColorScheme: \"light\"\n};\nvar coreDefaults = {\n ...defaultLightColorSchemeParams,\n textColor: foregroundColor,\n accentColor: \"#2196f3\",\n invalidColor: \"#e02525\",\n wrapperBorder: true,\n rowBorder: true,\n headerRowBorder: true,\n footerRowBorder: {\n ref: \"rowBorder\"\n },\n columnBorder: {\n style: \"solid\",\n width: 1,\n color: \"transparent\"\n },\n headerColumnBorder: false,\n headerColumnBorderHeight: \"100%\",\n pinnedColumnBorder: true,\n pinnedRowBorder: true,\n sidePanelBorder: true,\n sideBarPanelWidth: 250,\n sideBarBackgroundColor: {\n ref: \"chromeBackgroundColor\"\n },\n sideButtonBarBackgroundColor: {\n ref: \"sideBarBackgroundColor\"\n },\n sideButtonBarTopPadding: 0,\n sideButtonSelectedUnderlineWidth: 2,\n sideButtonSelectedUnderlineColor: \"transparent\",\n sideButtonSelectedUnderlineTransitionDuration: 0,\n sideButtonBackgroundColor: \"transparent\",\n sideButtonTextColor: { ref: \"textColor\" },\n sideButtonHoverBackgroundColor: { ref: \"sideButtonBackgroundColor\" },\n sideButtonHoverTextColor: { ref: \"sideButtonTextColor\" },\n sideButtonSelectedBackgroundColor: backgroundColor,\n sideButtonSelectedTextColor: { ref: \"sideButtonTextColor\" },\n sideButtonBorder: \"solid 1px transparent\",\n sideButtonSelectedBorder: true,\n sideButtonLeftPadding: { ref: \"spacing\" },\n sideButtonRightPadding: { ref: \"spacing\" },\n sideButtonVerticalPadding: { calc: \"spacing * 3\" },\n fontFamily: [\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 headerBackgroundColor: {\n ref: \"chromeBackgroundColor\"\n },\n headerFontFamily: {\n ref: \"fontFamily\"\n },\n cellFontFamily: {\n ref: \"fontFamily\"\n },\n headerFontWeight: 500,\n headerFontSize: {\n ref: \"fontSize\"\n },\n dataFontSize: {\n ref: \"fontSize\"\n },\n headerTextColor: {\n ref: \"textColor\"\n },\n headerCellHoverBackgroundColor: \"transparent\",\n headerCellMovingBackgroundColor: { ref: \"headerCellHoverBackgroundColor\" },\n headerCellBackgroundTransitionDuration: \"0.2s\",\n cellTextColor: {\n ref: \"textColor\"\n },\n subtleTextColor: {\n ref: \"textColor\",\n mix: 0.5\n },\n rangeSelectionBorderStyle: \"solid\",\n rangeSelectionBorderColor: accentColor,\n rangeSelectionBackgroundColor: accentMix(0.2),\n rangeSelectionChartBackgroundColor: \"#0058FF1A\",\n rangeSelectionChartCategoryBackgroundColor: \"#00FF841A\",\n rangeSelectionHighlightColor: accentMix(0.5),\n rangeHeaderHighlightColor: foregroundHeaderBackgroundMix(0.08),\n rowNumbersSelectedColor: accentMix(0.5),\n rowHoverColor: accentMix(0.08),\n columnHoverColor: accentMix(0.05),\n selectedRowBackgroundColor: accentMix(0.12),\n modalOverlayBackgroundColor: {\n ref: \"backgroundColor\",\n mix: 0.66\n },\n oddRowBackgroundColor: backgroundColor,\n borderRadius: 4,\n wrapperBorderRadius: 8,\n cellHorizontalPadding: {\n calc: \"spacing * 2 * cellHorizontalPaddingScale\"\n },\n cellWidgetSpacing: {\n calc: \"spacing * 1.5\"\n },\n cellHorizontalPaddingScale: 1,\n rowGroupIndentSize: {\n calc: \"cellWidgetSpacing + iconSize\"\n },\n valueChangeDeltaUpColor: \"#43a047\",\n valueChangeDeltaDownColor: \"#e53935\",\n valueChangeValueHighlightBackgroundColor: \"#16a08580\",\n spacing: 8,\n fontSize: 14,\n rowHeight: {\n calc: \"max(iconSize, dataFontSize) + spacing * 3.25 * rowVerticalPaddingScale\"\n },\n rowVerticalPaddingScale: 1,\n headerHeight: {\n calc: \"max(iconSize, dataFontSize) + spacing * 4 * headerVerticalPaddingScale\"\n },\n headerVerticalPaddingScale: 1,\n popupShadow: \"0 0 16px #00000026\",\n cardShadow: \"0 1px 4px 1px #00000018\",\n dropdownShadow: { ref: \"cardShadow\" },\n dragAndDropImageBackgroundColor: backgroundColor,\n dragAndDropImageBorder: true,\n dragAndDropImageShadow: {\n ref: \"popupShadow\"\n },\n dragHandleColor: foregroundMix(0.7),\n focusShadow: {\n spread: 3,\n color: accentMix(0.5)\n },\n headerColumnResizeHandleHeight: \"30%\",\n headerColumnResizeHandleWidth: 2,\n headerColumnResizeHandleColor: {\n ref: \"borderColor\"\n },\n widgetContainerHorizontalPadding: {\n calc: \"spacing * 1.5\"\n },\n widgetContainerVerticalPadding: {\n calc: \"spacing * 1.5\"\n },\n widgetHorizontalSpacing: {\n calc: \"spacing * 1.5\"\n },\n widgetVerticalSpacing: {\n ref: \"spacing\"\n },\n listItemHeight: {\n calc: \"max(iconSize, dataFontSize) + widgetVerticalSpacing\"\n },\n iconSize: 16,\n iconColor: \"inherit\",\n iconButtonColor: { ref: \"iconColor\" },\n iconButtonBackgroundColor: \"transparent\",\n iconButtonBackgroundSpread: 4,\n iconButtonBorderRadius: 1,\n iconButtonHoverColor: { ref: \"iconButtonColor\" },\n iconButtonHoverBackgroundColor: foregroundMix(0.1),\n iconButtonActiveColor: accentColor,\n iconButtonActiveBackgroundColor: accentMix(0.28),\n iconButtonActiveIndicatorColor: accentColor,\n toggleButtonWidth: 28,\n toggleButtonHeight: 18,\n toggleButtonOnBackgroundColor: accentColor,\n toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.3),\n toggleButtonSwitchBackgroundColor: backgroundColor,\n toggleButtonSwitchInset: 2,\n menuBorder: {\n color: foregroundMix(0.2)\n },\n menuBackgroundColor: foregroundBackgroundMix(0.03),\n menuTextColor: foregroundBackgroundMix(0.95),\n menuShadow: {\n ref: \"popupShadow\"\n },\n menuSeparatorColor: {\n ref: \"borderColor\"\n },\n setFilterIndentSize: {\n ref: \"iconSize\"\n },\n chartMenuPanelWidth: 260,\n chartMenuLabelColor: foregroundMix(0.8),\n dialogShadow: {\n ref: \"popupShadow\"\n },\n cellEditingBorder: {\n color: accentColor\n },\n cellEditingShadow: { ref: \"cardShadow\" },\n dialogBorder: {\n color: foregroundMix(0.2)\n },\n panelBackgroundColor: backgroundColor,\n panelTitleBarBackgroundColor: {\n ref: \"headerBackgroundColor\"\n },\n panelTitleBarIconColor: {\n ref: \"headerTextColor\"\n },\n panelTitleBarTextColor: {\n ref: \"headerTextColor\"\n },\n panelTitleBarFontWeight: {\n ref: \"headerFontWeight\"\n },\n panelTitleBarBorder: true,\n columnSelectIndentSize: {\n ref: \"iconSize\"\n },\n toolPanelSeparatorBorder: true,\n tooltipBackgroundColor: {\n ref: \"chromeBackgroundColor\"\n },\n tooltipTextColor: {\n ref: \"textColor\"\n },\n tooltipBorder: true,\n columnDropCellBackgroundColor: foregroundMix(0.07),\n columnDropCellTextColor: {\n ref: \"textColor\"\n },\n columnDropCellDragHandleColor: {\n ref: \"textColor\"\n },\n columnDropCellBorder: {\n color: foregroundMix(0.13)\n },\n selectCellBackgroundColor: foregroundMix(0.07),\n selectCellBorder: {\n color: foregroundMix(0.13)\n },\n advancedFilterBuilderButtonBarBorder: true,\n advancedFilterBuilderIndentSize: {\n calc: \"spacing * 2 + iconSize\"\n },\n advancedFilterBuilderJoinPillColor: \"#f08e8d\",\n advancedFilterBuilderColumnPillColor: \"#a6e194\",\n advancedFilterBuilderOptionPillColor: \"#f3c08b\",\n advancedFilterBuilderValuePillColor: \"#85c0e4\",\n findMatchColor: foregroundColor,\n findMatchBackgroundColor: \"#ffff00\",\n findActiveMatchColor: foregroundColor,\n findActiveMatchBackgroundColor: \"#ffa500\",\n filterToolPanelGroupIndent: {\n ref: \"spacing\"\n },\n rowLoadingSkeletonEffectColor: foregroundMix(0.15),\n statusBarLabelColor: foregroundColor,\n statusBarLabelFontWeight: 500,\n statusBarValueColor: foregroundColor,\n statusBarValueFontWeight: 500\n};\n\n// packages/ag-grid-community/src/theming/parts/button-style/button-style-base.css-GENERATED.ts\nvar buttonStyleBaseCSS = (\n /*css*/\n `:where(.ag-button){background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0;text-indent:inherit;text-shadow:inherit;text-transform:inherit;word-spacing:inherit;&:disabled{cursor:default}&:focus-visible{box-shadow:var(--ag-focus-shadow);outline:none}}.ag-standard-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--ag-button-background-color);border:var(--ag-button-border);border-radius:var(--ag-button-border-radius);color:var(--ag-button-text-color);cursor:pointer;font-weight:var(--ag-button-font-weight);padding:var(--ag-button-vertical-padding) var(--ag-button-horizontal-padding);&:hover{background-color:var(--ag-button-hover-background-color);border:var(--ag-button-hover-border);color:var(--ag-button-hover-text-color)}&:active{background-color:var(--ag-button-active-background-color);border:var(--ag-button-active-border);color:var(--ag-button-active-text-color)}&:disabled{background-color:var(--ag-button-disabled-background-color);border:var(--ag-button-disabled-border);color:var(--ag-button-disabled-text-color)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/button-style/button-styles.ts\nvar baseParams = {\n buttonTextColor: \"inherit\",\n buttonFontWeight: \"normal\",\n buttonBackgroundColor: \"transparent\",\n buttonBorder: false,\n buttonBorderRadius: { ref: \"borderRadius\" },\n buttonHorizontalPadding: { calc: \"spacing * 2\" },\n buttonVerticalPadding: { ref: \"spacing\" },\n buttonHoverTextColor: { ref: \"buttonTextColor\" },\n buttonHoverBackgroundColor: { ref: \"buttonBackgroundColor\" },\n buttonHoverBorder: { ref: \"buttonBorder\" },\n buttonActiveTextColor: { ref: \"buttonHoverTextColor\" },\n buttonActiveBackgroundColor: { ref: \"buttonHoverBackgroundColor\" },\n buttonActiveBorder: { ref: \"buttonHoverBorder\" },\n buttonDisabledTextColor: { ref: \"inputDisabledTextColor\" },\n buttonDisabledBackgroundColor: { ref: \"inputDisabledBackgroundColor\" },\n buttonDisabledBorder: { ref: \"inputDisabledBorder\" }\n};\nvar makeButtonStyleBaseTreeShakeable = () => createPart({\n feature: \"buttonStyle\",\n params: baseParams,\n css: buttonStyleBaseCSS\n});\nvar buttonStyleBase = /* @__PURE__ */ makeButtonStyleBaseTreeShakeable();\nvar makeButtonStyleQuartzTreeShakeable = () => createPart({\n feature: \"buttonStyle\",\n params: {\n ...baseParams,\n buttonBackgroundColor: backgroundColor,\n buttonBorder: true,\n buttonHoverBackgroundColor: { ref: \"rowHoverColor\" },\n buttonActiveBorder: { color: accentColor }\n },\n css: buttonStyleBaseCSS\n});\nvar buttonStyleQuartz = /* @__PURE__ */ makeButtonStyleQuartzTreeShakeable();\nvar makeButtonStyleAlpineTreeShakeable = () => createPart({\n feature: \"buttonStyle\",\n params: {\n ...baseParams,\n buttonBackgroundColor: backgroundColor,\n buttonBorder: { color: accentColor },\n buttonFontWeight: 600,\n buttonTextColor: accentColor,\n buttonHoverBackgroundColor: { ref: \"rowHoverColor\" },\n buttonActiveBackgroundColor: accentColor,\n buttonActiveTextColor: backgroundColor\n },\n css: buttonStyleBaseCSS\n});\nvar buttonStyleAlpine = /* @__PURE__ */ makeButtonStyleAlpineTreeShakeable();\nvar makeButtonStyleBalhamTreeShakeable = () => createPart({\n feature: \"buttonStyle\",\n params: {\n ...baseParams,\n buttonBorder: { color: foregroundColor, width: 2, style: \"outset\" },\n buttonActiveBorder: { color: foregroundColor, width: 2, style: \"inset\" },\n buttonBackgroundColor: foregroundBackgroundMix(0.07),\n buttonHoverBackgroundColor: backgroundColor,\n buttonVerticalPadding: { calc: \"spacing * 0.5\" }\n },\n css: buttonStyleBaseCSS\n});\nvar buttonStyleBalham = /* @__PURE__ */ makeButtonStyleBalhamTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/column-drop-style/column-drop-style-bordered.css-GENERATED.ts\nvar columnDropStyleBorderedCSS = (\n /*css*/\n `.ag-column-drop-vertical-empty-message{align-items:center;border:1px dashed;border-color:var(--ag-border-color);display:flex;inset:0;justify-content:center;margin:calc(var(--ag-spacing)*1.5) calc(var(--ag-spacing)*2);overflow:hidden;padding:calc(var(--ag-spacing)*2);position:absolute}`\n);\n\n// packages/ag-grid-community/src/theming/parts/column-drop-style/column-drop-style-plain.css-GENERATED.ts\nvar columnDropStylePlainCSS = (\n /*css*/\n `.ag-column-drop-vertical-empty-message{color:var(--ag-subtle-text-color);font-size:calc(var(--ag-font-size) - 1px);font-weight:600;padding-top:var(--ag-spacing)}:where(.ag-ltr) .ag-column-drop-vertical-empty-message{padding-left:calc(var(--ag-icon-size) + var(--ag-spacing) + var(--ag-widget-horizontal-spacing));padding-right:var(--ag-spacing)}:where(.ag-rtl) .ag-column-drop-vertical-empty-message{padding-left:var(--ag-spacing);padding-right:calc(var(--ag-icon-size) + var(--ag-spacing) + var(--ag-widget-horizontal-spacing))}`\n);\n\n// packages/ag-grid-community/src/theming/parts/column-drop-style/column-drop-styles.ts\nvar makeColumnDropStyleBorderedTreeShakeable = () => {\n return createPart({\n feature: \"columnDropStyle\",\n css: columnDropStyleBorderedCSS\n });\n};\nvar columnDropStyleBordered = /* @__PURE__ */ makeColumnDropStyleBorderedTreeShakeable();\nvar makeColumnDropStylePlainTreeShakeable = () => {\n return createPart({\n feature: \"columnDropStyle\",\n css: columnDropStylePlainCSS\n });\n};\nvar columnDropStylePlain = /* @__PURE__ */ makeColumnDropStylePlainTreeShakeable();\n\n// packages/ag-grid-community/src/theming/theme-types.ts\nvar paramTypes = [\n \"colorScheme\",\n \"color\",\n \"length\",\n \"scale\",\n \"borderStyle\",\n \"border\",\n \"shadow\",\n \"image\",\n \"fontFamily\",\n \"fontWeight\",\n \"duration\"\n];\nvar getParamType = memoize((param) => {\n param = param.toLowerCase();\n return paramTypes.find((type) => param.endsWith(type.toLowerCase())) ?? \"length\";\n});\nvar literalToCSS = (value) => {\n if (typeof value === \"object\" && value?.ref)\n return paramToVariableExpression(value.ref);\n if (typeof value === \"string\")\n return value;\n if (typeof value === \"number\")\n return String(value);\n return false;\n};\nvar colorValueToCss = (value) => {\n if (typeof value === \"string\")\n return value;\n if (value && \"ref\" in value) {\n const colorExpr = paramToVariableExpression(value.ref);\n if (value.mix == null) {\n return colorExpr;\n }\n const backgroundExpr = value.onto ? paramToVariableExpression(value.onto) : \"transparent\";\n return `color-mix(in srgb, ${backgroundExpr}, ${colorExpr} ${clamp(value.mix * 100, 0, 100)}%)`;\n }\n return false;\n};\nvar colorSchemeValueToCss = literalToCSS;\nvar lengthValueToCss = (value) => {\n if (typeof value === \"string\")\n return value;\n if (typeof value === \"number\")\n return `${value}px`;\n if (value && \"calc\" in value) {\n const valueWithSpaces = value.calc.replace(/ ?[*/+] ?/g, \" $& \");\n return `calc(${valueWithSpaces.replace(/-?\\b[a-z][a-z0-9]*\\b(?![-(])/gi, (p) => p[0] === \"-\" ? p : ` ${paramToVariableExpression(p)} `)})`;\n }\n if (value && \"ref\" in value)\n return paramToVariableExpression(value.ref);\n return false;\n};\nvar scaleValueToCss = literalToCSS;\nvar borderValueToCss = (value, param) => {\n if (typeof value === \"string\")\n return value;\n if (value === true)\n return \"solid 1px var(--ag-border-color)\";\n if (value === false)\n return param === \"columnBorder\" ? \"solid 1px transparent\" : \"none\";\n if (value && \"ref\" in value)\n return paramToVariableExpression(value.ref);\n return borderStyleValueToCss(value.style ?? \"solid\") + \" \" + lengthValueToCss(value.width ?? 1) + \" \" + colorValueToCss(value.color ?? { ref: \"borderColor\" });\n};\nvar shadowValueToCss = (value) => {\n if (typeof value === \"string\")\n return value;\n if (value === false)\n return \"none\";\n if (value && \"ref\" in value)\n return paramToVariableExpression(value.ref);\n return [\n lengthValueToCss(value.offsetX ?? 0),\n lengthValueToCss(value.offsetY ?? 0),\n lengthValueToCss(value.radius ?? 0),\n lengthValueToCss(value.spread ?? 0),\n colorValueToCss(value.color ?? { ref: \"foregroundColor\" })\n ].join(\" \");\n};\nvar borderStyleValueToCss = literalToCSS;\nvar fontFamilyValueToCss = (value) => {\n if (typeof value === \"string\")\n return value.includes(\",\") ? value : quoteUnsafeChars(value);\n if (value && \"googleFont\" in value)\n return fontFamilyValueToCss(value.googleFont);\n if (value && \"ref\" in value)\n return paramToVariableExpression(value.ref);\n if (Array.isArray(value)) {\n return value.map((font) => {\n if (typeof font === \"object\" && \"googleFont\" in font) {\n font = font.googleFont;\n }\n return quoteUnsafeChars(font);\n }).join(\", \");\n }\n return false;\n};\nvar quoteUnsafeChars = (font) => (\n // don't quote var() expressions or quote safe identifier names, so that\n // people can specify fonts like sans-serif which are keywords not strings,\n // or var(--my-var)\n /^[\\w-]+$|\\w\\(/.test(font) ? font : JSON.stringify(font)\n);\nvar fontWeightValueToCss = literalToCSS;\nvar imageValueToCss = (value) => {\n if (typeof value === \"string\")\n return value;\n if (value && \"url\" in value)\n return `url(${JSON.stringify(value.url)})`;\n if (value && \"svg\" in value)\n return imageValueToCss({ url: `data:image/svg+xml,${encodeURIComponent(value.svg)}` });\n if (value && \"ref\" in value)\n return paramToVariableExpression(value.ref);\n return false;\n};\nvar durationValueToCss = (value, param) => {\n if (typeof value === \"string\")\n return value;\n if (typeof value === \"number\") {\n if (value >= 10) {\n _error(104, { value, param });\n }\n return `${value}s`;\n }\n if (value && \"ref\" in value)\n return paramToVariableExpression(value.ref);\n return false;\n};\nvar paramValidators = {\n color: colorValueToCss,\n colorScheme: colorSchemeValueToCss,\n length: lengthValueToCss,\n scale: scaleValueToCss,\n border: borderValueToCss,\n borderStyle: borderStyleValueToCss,\n shadow: shadowValueToCss,\n image: imageValueToCss,\n fontFamily: fontFamilyValueToCss,\n fontWeight: fontWeightValueToCss,\n duration: durationValueToCss\n};\nvar paramValueToCss = (param, value) => {\n const type = getParamType(param);\n return paramValidators[type](value, param);\n};\n\n// packages/ag-grid-community/src/theming/Theme.ts\nvar FORCE_LEGACY_THEMES = false;\nvar _asThemeImpl = (theme) => {\n if (!(theme instanceof ThemeImpl)) {\n throw new Error(\"theme is not an object created by createTheme\");\n }\n return theme;\n};\nvar createTheme = () => new ThemeImpl().withPart(buttonStyleQuartz).withPart(columnDropStyleBordered);\nvar ThemeImpl = class _ThemeImpl {\n constructor(parts = []) {\n this.parts = parts;\n }\n withPart(part) {\n if (typeof part === \"function\")\n part = part();\n if (!(part instanceof PartImpl)) {\n _logPreInitErr(259, { part }, \"Invalid part\");\n return this;\n }\n return new _ThemeImpl([...this.parts, part]);\n }\n withoutPart(feature) {\n return this.withPart(createPart({ feature }));\n }\n withParams(params, mode = defaultModeName) {\n return this.withPart(\n createPart({\n modeParams: { [mode]: params }\n })\n );\n }\n /**\n * Called by a grid instance when it starts using the theme. This installs\n * the theme's parts into document head, or the shadow DOM if the provided\n * container is within a shadow root.\n */\n _startUse({ styleContainer, cssLayer, nonce, loadThemeGoogleFonts }) {\n if (IS_SSR)\n return;\n if (FORCE_LEGACY_THEMES)\n return;\n uninstallLegacyCSS();\n _injectCoreAndModuleCSS(styleContainer, cssLayer, nonce);\n const googleFontsUsed = getGoogleFontsUsed(this);\n if (googleFontsUsed.length > 0) {\n for (const googleFont of googleFontsUsed) {\n if (loadThemeGoogleFonts) {\n loadGoogleFont(googleFont, nonce);\n }\n }\n }\n for (const part of this.parts) {\n part.use(styleContainer, cssLayer, nonce);\n }\n }\n /**\n * Return CSS that that applies the params of this theme to elements with\n * the provided class name\n */\n _getCssClass() {\n if (FORCE_LEGACY_THEMES)\n return \"ag-theme-quartz\";\n return this._cssClassCache ?? (this._cssClassCache = deduplicatePartsByFeature(this.parts).map((part) => part.use(void 0, void 0, void 0)).filter(Boolean).join(\" \"));\n }\n _getModeParams() {\n let paramsCache = this._paramsCache;\n if (!paramsCache) {\n const mergedModeParams = {\n // NOTE: defining the default mode here is important, it ensures\n // that the default mode is first in iteration order, which puts\n // it first in outputted CSS, allowing other modes to override it\n [defaultModeName]: { ...coreDefaults }\n };\n for (const part of deduplicatePartsByFeature(this.parts)) {\n for (const partMode of Object.keys(part.modeParams)) {\n const partParams = part.modeParams[partMode];\n if (partParams) {\n const mergedParams = mergedModeParams[partMode] ?? (mergedModeParams[partMode] = {});\n const partParamNames = /* @__PURE__ */ new Set();\n for (const partParamName of Object.keys(partParams)) {\n const partParamValue = partParams[partParamName];\n if (partParamValue !== void 0) {\n mergedParams[partParamName] = partParamValue;\n partParamNames.add(partParamName);\n }\n }\n if (partMode === defaultModeName) {\n for (const mergedMode of Object.keys(mergedModeParams)) {\n const mergedParams2 = mergedModeParams[mergedMode];\n if (mergedMode !== defaultModeName) {\n for (const partParamName of partParamNames) {\n delete mergedParams2[partParamName];\n }\n }\n }\n }\n }\n }\n }\n this._paramsCache = paramsCache = mergedModeParams;\n }\n return paramsCache;\n }\n /**\n * Return the CSS chunk that is inserted into the grid DOM, and will\n * therefore be removed automatically when the grid is destroyed or it\n * starts to use a new theme.\n *\n * @param className a unique class name on the grid wrapper used to scope the returned CSS to the grid instance\n */\n _getPerGridCss(className) {\n const selectorPlaceholder = \"##SELECTOR##\";\n let innerParamsCss = this._paramsCssCache;\n if (!innerParamsCss) {\n let variablesCss = \"\";\n let inheritanceCss = \"\";\n const modeParams = this._getModeParams();\n for (const mode of Object.keys(modeParams)) {\n const params = modeParams[mode];\n if (mode !== defaultModeName) {\n const escapedMode = typeof CSS === \"object\" ? CSS.escape(mode) : mode;\n const wrapPrefix = `:where([data-ag-theme-mode=\"${escapedMode}\"]) & {\n`;\n variablesCss += wrapPrefix;\n inheritanceCss += wrapPrefix;\n }\n for (const key of Object.keys(params).sort()) {\n const value = params[key];\n const cssValue = paramValueToCss(key, value);\n if (cssValue === false) {\n _error(107, { key, value });\n } else {\n const cssName = paramToVariableName(key);\n const inheritedName = cssName.replace(\"--ag-\", \"--ag-inherited-\");\n variablesCss += `\t${cssName}: var(${inheritedName}, ${cssValue});\n`;\n inheritanceCss += `\t${inheritedName}: var(${cssName});\n`;\n }\n }\n if (mode !== defaultModeName) {\n variablesCss += \"}\\n\";\n inheritanceCss += \"}\\n\";\n }\n }\n let css = `${selectorPlaceholder} {\n${variablesCss}}\n`;\n css += `:has(> ${selectorPlaceholder}):not(${selectorPlaceholder}) {\n${inheritanceCss}}\n`;\n this._paramsCssCache = innerParamsCss = css;\n }\n return innerParamsCss.replaceAll(selectorPlaceholder, `:where(.${className})`);\n }\n};\nvar deduplicatePartsByFeature = (parts) => {\n const lastPartByFeature = /* @__PURE__ */ new Map();\n for (const part of parts) {\n lastPartByFeature.set(part.feature, part);\n }\n const result = [];\n for (const part of parts) {\n if (!part.feature || lastPartByFeature.get(part.feature) === part) {\n result.push(part);\n }\n }\n return result;\n};\nvar getGoogleFontsUsed = (theme) => {\n const googleFontsUsed = /* @__PURE__ */ new Set();\n const visitParamValue = (paramValue) => {\n if (Array.isArray(paramValue)) {\n paramValue.forEach(visitParamValue);\n } else {\n const googleFont = paramValue?.googleFont;\n if (typeof googleFont === \"string\") {\n googleFontsUsed.add(googleFont);\n }\n }\n };\n const allModeValues = Object.values(theme._getModeParams());\n const allValues = allModeValues.flatMap((mv) => Object.values(mv));\n allValues.forEach(visitParamValue);\n return Array.from(googleFontsUsed).sort();\n};\nvar uninstalledLegacyCSS = false;\nvar uninstallLegacyCSS = () => {\n if (uninstalledLegacyCSS)\n return;\n uninstalledLegacyCSS = true;\n for (const style of Array.from(document.head.querySelectorAll('style[data-ag-scope=\"legacy\"]'))) {\n style.remove();\n }\n};\nvar googleFontsLoaded = /* @__PURE__ */ new Set();\nvar loadGoogleFont = async (font, nonce) => {\n googleFontsLoaded.add(font);\n const css = `@import url('https://${googleFontsDomain}/css2?family=${encodeURIComponent(font)}:wght@100;200;300;400;500;600;700;800;900&display=swap');\n`;\n _injectGlobalCSS(css, document.head, `googleFont:${font}`, void 0, 0, nonce);\n};\nvar googleFontsDomain = \"fonts.googleapis.com\";\n\n// packages/ag-grid-community/src/theming/parts/checkbox-style/checkbox-style-default.css-GENERATED.ts\nvar checkboxStyleDefaultCSS = (\n /*css*/\n `.ag-checkbox-input-wrapper,.ag-radio-button-input-wrapper{background-color:var(--ag-checkbox-unchecked-background-color);border:solid var(--ag-checkbox-border-width) var(--ag-checkbox-unchecked-border-color);flex:none;height:var(--ag-icon-size);position:relative;width:var(--ag-icon-size);:where(input){-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;display:block;height:var(--ag-icon-size);margin:0;opacity:0;width:var(--ag-icon-size)}&:after{content:\"\";display:block;inset:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;pointer-events:none;position:absolute}&:where(.ag-checked){background-color:var(--ag-checkbox-checked-background-color);border-color:var(--ag-checkbox-checked-border-color);&:after{background-color:var(--ag-checkbox-checked-shape-color)}}&:where(:focus-within,:active){box-shadow:var(--ag-focus-shadow)}&:where(.ag-disabled){filter:grayscale();opacity:.5}}.ag-checkbox-input-wrapper{border-radius:var(--ag-checkbox-border-radius);&:where(.ag-checked):after{-webkit-mask-image:var(--ag-checkbox-checked-shape-image);mask-image:var(--ag-checkbox-checked-shape-image)}&:where(.ag-indeterminate){background-color:var(--ag-checkbox-indeterminate-background-color);border-color:var(--ag-checkbox-indeterminate-border-color);&:after{background-color:var(--ag-checkbox-indeterminate-shape-color);-webkit-mask-image:var(--ag-checkbox-indeterminate-shape-image);mask-image:var(--ag-checkbox-indeterminate-shape-image)}}}.ag-radio-button-input-wrapper{border-radius:100%;&:where(.ag-checked):after{-webkit-mask-image:var(--ag-radio-checked-shape-image);mask-image:var(--ag-radio-checked-shape-image)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/checkbox-style/checkbox-styles.ts\nvar makeCheckboxStyleDefaultTreeShakeable = () => createPart({\n feature: \"checkboxStyle\",\n params: {\n checkboxBorderWidth: 1,\n checkboxBorderRadius: {\n ref: \"borderRadius\"\n },\n checkboxUncheckedBackgroundColor: backgroundColor,\n checkboxUncheckedBorderColor: foregroundBackgroundMix(0.3),\n checkboxCheckedBackgroundColor: accentColor,\n checkboxCheckedBorderColor: { ref: \"checkboxCheckedBackgroundColor\" },\n checkboxCheckedShapeImage: {\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"7\" fill=\"none\"><path stroke=\"#000\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.75\" d=\"M1 3.5 3.5 6l5-5\"/></svg>'\n },\n checkboxCheckedShapeColor: backgroundColor,\n checkboxIndeterminateBackgroundColor: foregroundBackgroundMix(0.3),\n checkboxIndeterminateBorderColor: { ref: \"checkboxIndeterminateBackgroundColor\" },\n checkboxIndeterminateShapeImage: {\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"10\" height=\"2\" fill=\"none\"><rect width=\"10\" height=\"2\" fill=\"#000\" rx=\"1\"/></svg>'\n },\n checkboxIndeterminateShapeColor: backgroundColor,\n radioCheckedShapeImage: {\n svg: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"6\" height=\"6\" fill=\"none\"><circle cx=\"3\" cy=\"3\" r=\"3\" fill=\"#000\"/></svg>'\n }\n },\n css: checkboxStyleDefaultCSS\n});\nvar checkboxStyleDefault = /* @__PURE__ */ makeCheckboxStyleDefaultTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/color-scheme/color-schemes.ts\nvar makeColorSchemeLightTreeShakeable = () => createPart({\n feature: \"colorScheme\",\n params: defaultLightColorSchemeParams\n});\nvar colorSchemeLight = /* @__PURE__ */ makeColorSchemeLightTreeShakeable();\nvar makeColorSchemeLightWarmTreeShakeable = () => createPart({\n feature: \"colorScheme\",\n params: {\n ...defaultLightColorSchemeParams,\n foregroundColor: \"#000000de\",\n borderColor: \"#60300026\",\n chromeBackgroundColor: \"#60300005\"\n }\n});\nvar colorSchemeLightWarm = /* @__PURE__ */ makeColorSchemeLightWarmTreeShakeable();\nvar makeColorSchemeLightColdTreeShakeable = () => createPart({\n feature: \"colorScheme\",\n params: {\n ...defaultLightColorSchemeParams,\n foregroundColor: \"#000\",\n chromeBackgroundColor: \"#f3f8f8\"\n }\n});\nvar colorSchemeLightCold = /* @__PURE__ */ makeColorSchemeLightColdTreeShakeable();\nvar darkParams = () => ({\n ...defaultLightColorSchemeParams,\n backgroundColor: \"hsl(217, 0%, 17%)\",\n foregroundColor: \"#FFF\",\n chromeBackgroundColor: foregroundBackgroundMix(0.05),\n rowHoverColor: accentMix(0.15),\n selectedRowBackgroundColor: accentMix(0.2),\n menuBackgroundColor: foregroundBackgroundMix(0.1),\n browserColorScheme: \"dark\",\n popupShadow: \"0 0px 20px #000A\",\n cardShadow: \"0 1px 4px 1px #000A\",\n advancedFilterBuilderJoinPillColor: \"#7a3a37\",\n advancedFilterBuilderColumnPillColor: \"#355f2d\",\n advancedFilterBuilderOptionPillColor: \"#5a3168\",\n advancedFilterBuilderValuePillColor: \"#374c86\",\n findMatchColor: backgroundColor,\n findActiveMatchColor: backgroundColor,\n checkboxUncheckedBorderColor: foregroundBackgroundMix(0.4),\n toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.4)\n});\nvar makeColorSchemeDarkTreeShakeable = () => createPart({\n feature: \"colorScheme\",\n params: darkParams()\n});\nvar colorSchemeDark = /* @__PURE__ */ makeColorSchemeDarkTreeShakeable();\nvar makeColorSchemeDarkWarmTreeShakeable = () => createPart({\n feature: \"colorScheme\",\n params: {\n backgroundColor: \"hsl(29, 10%, 17%)\",\n foregroundColor: \"#FFF\",\n browserColorScheme: \"dark\"\n }\n});\nvar darkBlueParams = () => ({\n ...darkParams(),\n backgroundColor: \"#1f2836\"\n});\nvar colorSchemeDarkWarm = /* @__PURE__ */ makeColorSchemeDarkWarmTreeShakeable();\nvar makeColorSchemeDarkBlueTreeShakeable = () => createPart({\n feature: \"colorScheme\",\n params: darkBlueParams()\n});\nvar colorSchemeDarkBlue = /* @__PURE__ */ makeColorSchemeDarkBlueTreeShakeable();\nvar makeColorSchemeVariableTreeShakeable = () => createPart({\n feature: \"colorScheme\",\n params: defaultLightColorSchemeParams,\n modeParams: {\n light: defaultLightColorSchemeParams,\n dark: darkParams(),\n \"dark-blue\": darkBlueParams()\n }\n});\nvar colorSchemeVariable = /* @__PURE__ */ makeColorSchemeVariableTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/icon-set/balham/icon-set-balham.css-GENERATED.ts\nvar iconSetBalhamCSS = (\n /*css*/\n `.ag-icon-aggregation:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eaggregation%3C/title%3E%3Cpath d='M25.128 2.002c2.56.096 4.772 2.292 4.87 4.87a712 712 0 0 1 0 18.256c-.096 2.56-2.292 4.772-4.87 4.87a712 712 0 0 1-18.256 0c-2.558-.096-4.772-2.29-4.87-4.87a712 712 0 0 1 0-18.256c.096-2.56 2.292-4.772 4.87-4.87a712 712 0 0 1 18.256 0M7.006 4c-1.57.02-2.946 1.348-3.004 2.922-.078 6.078-.23 12.16.002 18.234.094 1.484 1.354 2.746 2.84 2.84 6.1.232 12.212.232 18.312 0 1.48-.094 2.746-1.35 2.84-2.84.232-6.1.232-12.212 0-18.312-.094-1.48-1.35-2.746-2.84-2.84C19.11 3.774 13.056 4 7.006 4M22 12h-2v-2h-8v.092c.056 1.352 3.426 2.598 4.472 4.404.682 1.174.438 2.754-.572 3.72C14.29 19.618 12 20.924 12 22h8v-2h2v4H10c0-1.586-.098-3.304 1.016-4.314 1.904-1.632 4.89-3.108 3.54-4.42-1.918-1.68-4.464-2.936-4.554-5.12L10 8h12z'/%3E%3C/svg%3E\")}.ag-icon-arrows:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Earrows%3C/title%3E%3Cpath d='m6.414 17 2.294 2.292-1.416 1.416L2.586 16l4.706-4.708 1.416 1.416L6.414 15H15V6.414l-2.292 2.294-1.416-1.416L16 2.586l4.708 4.706-1.416 1.416L17 6.414V15h8.586l-2.294-2.292 1.416-1.416L29.414 16l-4.706 4.708-1.416-1.416L25.586 17H17v8.586l2.292-2.294 1.416 1.416L16 29.414l-4.708-4.706 1.416-1.416L15 25.586V17z'/%3E%3C/svg%3E\")}.ag-icon-asc:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Easc%3C/title%3E%3Cpath d='m15 10.621-4.292 4.294-1.416-1.416L16 6.793l6.708 6.706-1.416 1.416L17 10.621v14.586h-2z'/%3E%3C/svg%3E\")}.ag-icon-cancel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecancel%3C/title%3E%3Cpath d='M16 4C9.378 4 4 9.378 4 16s5.378 12 12 12 12-5.378 12-12S22.622 4 16 4m0 2c5.52 0 10 4.48 10 10s-4.48 10-10 10S6 21.52 6 16 10.48 6 16 6m0 8.586 5.292-5.294 1.416 1.416L17.414 16l5.294 5.292-1.416 1.416L16 17.414l-5.292 5.294-1.416-1.416L14.586 16l-5.294-5.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-chart:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Echart%3C/title%3E%3Cpath d='M6.667 12.267h4v13.067h-4zm7.466-5.6h3.733v18.667h-3.733zM21.6 17.333h3.733v8H21.6z'/%3E%3C/svg%3E\")}.ag-icon-color-picker:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecolor-picker%3C/title%3E%3Cpath d='M23.907 17.587 10.574 4.254l-1.88 1.88 3.173 3.173-8.28 8.28 10.16 10.16zm-16.547 0 6.387-6.387 6.387 6.387H7.361zm18.387 2s-2.667 2.893-2.667 4.667c0 1.467 1.2 2.667 2.667 2.667s2.667-1.2 2.667-2.667c0-1.773-2.667-4.667-2.667-4.667'/%3E%3C/svg%3E\")}.ag-icon-columns:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecolumns%3C/title%3E%3Cpath d='M14 25h-2V7h2zm6 0h-2V7h2zm6 0h-2V7h2zM8 25H6V7h2z'/%3E%3C/svg%3E\")}.ag-icon-contracted:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Econtracted%3C/title%3E%3Cpath d='m21.061 16-8.706 8.708-1.416-1.416L18.233 16l-7.294-7.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-copy:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecopy%3C/title%3E%3Cpath d='M21.929 27.999h-7.828a5.09 5.09 0 0 1-5.086-5.086v-9.812a5.087 5.087 0 0 1 5.086-5.086h7.828a5.09 5.09 0 0 1 5.086 5.086v9.812a5.087 5.087 0 0 1-5.086 5.086m.16-17.984h-8.088a2.94 2.94 0 0 0-2.938 2.938v10.132a2.94 2.94 0 0 0 2.938 2.938h8.088a2.94 2.94 0 0 0 2.936-2.938V12.953a2.94 2.94 0 0 0-2.936-2.938M7.041 26.013h-2.05a4 4 0 0 1-.006-.228V9.065a5.07 5.07 0 0 1 5.064-5.064h12.812q.069 0 .134.002v2.012H9.915a2.876 2.876 0 0 0-2.874 2.874z'/%3E%3C/svg%3E\")}.ag-icon-cross:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='4 4 24 24'%3E%3Ctitle%3Ecross%3C/title%3E%3Cpath d='m16 14.586 5.292-5.294 1.416 1.416L17.414 16l5.294 5.292-1.416 1.416L16 17.414l-5.292 5.294-1.416-1.416L14.586 16l-5.294-5.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-csv:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='M.688-.226a.2.2 0 0 1-.017.074.28.28 0 0 1-.145.14.412.412 0 0 1-.234.013.28.28 0 0 1-.202-.168.468.468 0 0 1-.04-.19q0-.086.025-.155a.319.319 0 0 1 .182-.191.4.4 0 0 1 .134-.025q.087 0 .155.035a.3.3 0 0 1 .104.085.17.17 0 0 1 .036.097.06.06 0 0 1-.018.044.06.06 0 0 1-.042.019.06.06 0 0 1-.042-.013.2.2 0 0 1-.031-.046.2.2 0 0 0-.066-.079.16.16 0 0 0-.095-.027.17.17 0 0 0-.142.068.3.3 0 0 0-.053.193.4.4 0 0 0 .023.139.2.2 0 0 0 .067.083.2.2 0 0 0 .1.027q.063 0 .106-.031a.2.2 0 0 0 .065-.091.2.2 0 0 1 .023-.046q.014-.018.044-.018a.06.06 0 0 1 .044.018.06.06 0 0 1 .019.045' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 7.122 25.977)'/%3E%3Cpath d='M.622-.215a.2.2 0 0 1-.033.117.23.23 0 0 1-.098.081.4.4 0 0 1-.153.029.34.34 0 0 1-.175-.04.23.23 0 0 1-.079-.077.17.17 0 0 1-.031-.093q0-.027.019-.045a.06.06 0 0 1 .046-.019.06.06 0 0 1 .039.014.1.1 0 0 1 .027.044.3.3 0 0 0 .03.057q.015.023.044.038.03.015.076.015.065 0 .105-.03a.09.09 0 0 0 .04-.075.08.08 0 0 0-.022-.058.14.14 0 0 0-.056-.034 1 1 0 0 0-.092-.025.7.7 0 0 1-.129-.042.2.2 0 0 1-.083-.066.17.17 0 0 1-.03-.104q0-.058.032-.105a.2.2 0 0 1 .093-.07.4.4 0 0 1 .144-.025q.066 0 .114.016a.3.3 0 0 1 .08.044.2.2 0 0 1 .046.057q.015.03.015.058a.07.07 0 0 1-.018.046.06.06 0 0 1-.046.021q-.025 0-.038-.012a.2.2 0 0 1-.028-.041.2.2 0 0 0-.047-.063Q.387-.625.326-.625a.15.15 0 0 0-.09.025q-.035.024-.035.059 0 .021.012.037a.1.1 0 0 0 .032.027.4.4 0 0 0 .111.036q.06.015.11.031.048.018.083.042a.2.2 0 0 1 .054.062.2.2 0 0 1 .019.091' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 13.339 25.977)'/%3E%3Cpath d='m.184-.633.162.48.163-.483q.013-.038.019-.053a.062.062 0 0 1 .061-.039q.018 0 .034.009a.1.1 0 0 1 .025.025q.009.015.009.031L.654-.64l-.007.025-.009.024-.173.468-.019.051a.2.2 0 0 1-.021.042.1.1 0 0 1-.033.03.1.1 0 0 1-.049.012.1.1 0 0 1-.05-.011A.1.1 0 0 1 .26-.03a.2.2 0 0 1-.021-.042L.22-.123.05-.587.041-.612.033-.638.03-.662q0-.025.02-.046a.07.07 0 0 1 .05-.02q.037 0 .053.023.015.023.031.072' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 18.94 25.977)'/%3E%3C/svg%3E\")}.ag-icon-cut:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M14.703 15.096 6.215 4.719a1 1 0 1 1 1.548-1.267l13.058 15.965A5.001 5.001 0 0 1 28 23.916a5 5 0 0 1-4.999 4.999 5 5 0 0 1-4.999-4.999 4.98 4.98 0 0 1 1.23-3.283l-3.238-3.958-3.272 4.001a4.98 4.98 0 0 1 1.265 3.323 5 5 0 0 1-4.999 4.999 5 5 0 0 1-4.999-4.999 5 5 0 0 1 7.13-4.522zM8.991 20.8a3.1 3.1 0 0 0-3.1 3.1c0 1.711 1.389 3.1 3.1 3.1s3.1-1.389 3.1-3.1-1.389-3.1-3.1-3.1M23 20.8a3.1 3.1 0 0 0-3.1 3.1c0 1.711 1.389 3.1 3.1 3.1s3.1-1.389 3.1-3.1-1.389-3.1-3.1-3.1m-5.723-8.852 1.292 1.579 7.205-8.808a1 1 0 0 0-1.548-1.267z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-desc:before,.ag-icon-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Edesc%3C/title%3E%3Cpath d='m17 21.379 4.292-4.294 1.416 1.416L16 25.207l-6.708-6.706 1.416-1.416L15 21.379V6.793h2z'/%3E%3C/svg%3E\")}.ag-icon-excel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='m.052-.139.16-.234-.135-.208a.4.4 0 0 1-.028-.052.1.1 0 0 1-.01-.042.05.05 0 0 1 .018-.037.07.07 0 0 1 .045-.016q.03 0 .047.018a1 1 0 0 1 .047.066l.107.174.115-.174.024-.038.019-.026.021-.015a.1.1 0 0 1 .027-.005.06.06 0 0 1 .044.016.05.05 0 0 1 .018.039q0 .033-.038.089l-.141.211.152.234a.3.3 0 0 1 .03.051.1.1 0 0 1 .009.038.1.1 0 0 1-.008.031.1.1 0 0 1-.024.023.1.1 0 0 1-.034.008.1.1 0 0 1-.035-.008.1.1 0 0 1-.023-.022L.427-.067.301-.265l-.134.204-.022.034-.016.019a.1.1 0 0 1-.022.015.1.1 0 0 1-.03.005.06.06 0 0 1-.044-.016.06.06 0 0 1-.017-.047q0-.036.036-.088' style='fill-rule:nonzero' transform='matrix(17.82892 0 0 16.50777 10.371 25.928)'/%3E%3C/svg%3E\")}.ag-icon-expanded:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eexpanded%3C/title%3E%3Cpath d='M21.061 8.708 13.767 16l7.294 7.292-1.416 1.416L10.939 16l8.706-8.708z'/%3E%3C/svg%3E\")}.ag-icon-eye-slash:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye-slash%3C/title%3E%3Cpath d='M9.304 7.89a15.2 15.2 0 0 1 6.404-1.638c.294-.002.292-.002.584 0 5.956.174 11.328 4.088 13.62 9.748 0 0-1.318 3.178-3.224 5.174a13.6 13.6 0 0 1-2.226 1.874L26.414 25 25 26.414l-2.336-2.336C17.866 26.396 11.776 26.15 7.36 22.96a14.9 14.9 0 0 1-4.168-4.612c-.41-.71-.694-1.336-1.104-2.348 0 0 .898-2.218 2.002-3.718a14.6 14.6 0 0 1 3.442-3.334L5.586 7 7 5.586zm-.3 2.528c-2.038 1.344-3.708 3.246-4.724 5.508L4.248 16c2.46 5.762 9.622 9.064 15.63 7.15q.688-.219 1.342-.516l-.912-.912a6.96 6.96 0 0 1-4.19 1.394c-3.862 0-7-3.136-7-7 0-1.57.52-3.022 1.394-4.19zm14.032 11.204a13.25 13.25 0 0 0 4.684-5.548l.032-.074c-1.984-4.646-6.834-7.798-12.006-7.748-1.712.05-3.386.458-4.922 1.158l1.102 1.102a6.97 6.97 0 0 1 4.192-1.396 7.003 7.003 0 0 1 5.606 11.192zm-11.09-8.262a5.003 5.003 0 0 0 6.928 6.928zm8.342 5.514a5.002 5.002 0 0 0-6.928-6.928z'/%3E%3C/svg%3E\")}.ag-icon-eye:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye%3C/title%3E%3Cpath d='M16.292 6.32c5.956.174 11.328 4.086 13.62 9.746 0 0-1.318 3.18-3.224 5.176-4.862 5.088-13.534 5.97-19.328 1.784a14.9 14.9 0 0 1-4.168-4.612c-.41-.71-.694-1.336-1.104-2.348 0 0 .898-2.216 2.002-3.716 2.678-3.64 7.03-5.896 11.618-6.03.294-.004.292-.004.584 0m-.546 2c-4.896.142-9.458 3.202-11.466 7.672l-.032.074c2.46 5.762 9.622 9.066 15.63 7.152 3.458-1.102 6.342-3.738 7.842-7.076l.032-.076C25.768 11.42 20.918 8.27 15.746 8.32m.254.946c3.754 0 6.8 3.048 6.8 6.8 0 3.754-3.046 6.8-6.8 6.8s-6.8-3.046-6.8-6.8c0-3.752 3.046-6.8 6.8-6.8m5 6.768V16c0-2.76-2.24-5-5-5s-5 2.24-5 5v.066c0 2.76 2.24 5 5 5s5-2.24 5-5z'/%3E%3C/svg%3E\")}.ag-icon-filter:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Efilter%3C/title%3E%3Cpath d='M26 8.184c-.066 2.658-4.058 5.154-6.742 7.974a1.05 1.05 0 0 0-.258.682v3.66L13 25c0-2.74.066-5.482-.002-8.222a1.05 1.05 0 0 0-.256-.62C10.026 13.304 6.06 10.61 6 8.184V6h20zM8 8c0 .304.06.612.258.842 2.716 2.854 6.682 5.548 6.742 7.974V21l2-1.5v-2.684c.066-2.658 4.058-5.154 6.742-7.974.198-.23.258-.538.258-.842z'/%3E%3C/svg%3E\")}.ag-icon-first:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Efirst%3C/title%3E%3Cpath d='M24.354 8.708 17.06 16l7.294 7.292-1.416 1.416L14.232 16l8.706-8.708zM9.646 8v16h-2V8z'/%3E%3C/svg%3E\")}.ag-icon-group:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Egroup%3C/title%3E%3Cpath d='M25.128 2.002c2.56.096 4.772 2.292 4.87 4.87a712 712 0 0 1 0 18.256c-.096 2.56-2.292 4.772-4.87 4.87a712 712 0 0 1-18.256 0c-2.558-.096-4.772-2.29-4.87-4.87a712 712 0 0 1 0-18.256c.096-2.56 2.292-4.772 4.87-4.87a712 712 0 0 1 18.256 0M7.006 4c-1.57.02-2.946 1.348-3.004 2.922-.078 6.078-.23 12.16.002 18.234.094 1.484 1.354 2.746 2.84 2.84 6.1.232 12.212.232 18.312 0 1.48-.094 2.746-1.35 2.84-2.84.232-6.1.232-12.212 0-18.312-.094-1.48-1.35-2.746-2.84-2.84C19.11 3.774 13.056 4 7.006 4M14 21h-4v-2h4zm12 0H16v-2h10zm-12-4h-4v-2h4zm12 0H16v-2h10zm-16-4H6v-2h4zm16 0H12v-2h14z'/%3E%3C/svg%3E\")}.ag-icon-last:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Elast%3C/title%3E%3Cpath d='m17.768 16-8.706 8.708-1.416-1.416L14.94 16 7.646 8.708l1.416-1.416zm6.586 8h-2V8h2z'/%3E%3C/svg%3E\")}.ag-icon-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eleft%3C/title%3E%3Cpath d='m17.621 11-2 2h12.586v6H15.621l2 2-4.414 4.414L3.793 16l9.414-9.414zm-11 5 6.586 6.586L14.793 21l-4-4h15.414v-2H10.793l4-4-1.586-1.586z'/%3E%3C/svg%3E\")}.ag-icon-linked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Elinked%3C/title%3E%3Cpath d='M17.138 13.418a1.03 1.03 0 0 0-.298.658s.125.096.226.178c1.372 1.114 2.033 3.039 1.582 4.796a4.7 4.7 0 0 1-1.205 2.123c-1.145 1.151-2.296 2.294-3.445 3.441-1.241 1.232-3.185 1.691-4.864 1.105-1.546-.54-2.756-1.938-3.048-3.572-.267-1.496.246-3.108 1.319-4.186l.578-.578-.03-.092a10.5 10.5 0 0 1-.452-2.3v-.005c-.776.775-1.621 1.489-2.275 2.396-1.817 2.522-1.643 6.323.706 8.669 1.813 1.811 4.708 2.462 7.171 1.517a6.75 6.75 0 0 0 2.336-1.518l3.427-3.424c1.939-1.954 2.533-5.126 1.294-7.674a6.8 6.8 0 0 0-2.071-2.481l-.003-.002zM21.265 4a6.8 6.8 0 0 0-4.734 1.964l-3.427 3.424c-1.961 1.977-2.52 5.092-1.32 7.619a6.8 6.8 0 0 0 2.098 2.537l.003.002c.32-.32.643-.637.96-.96.167-.172.27-.401.286-.64l-.204-.167c-1.603-1.287-2.215-3.68-1.316-5.616a4.7 4.7 0 0 1 .918-1.32c1.145-1.151 2.296-2.294 3.445-3.441 1.239-1.23 3.178-1.694 4.864-1.105 1.83.639 3.16 2.498 3.12 4.493a4.8 4.8 0 0 1-1.391 3.265l-.578.578.03.092c.235.743.387 1.519.452 2.3v.005c.732-.731 1.521-1.406 2.162-2.244 1.192-1.559 1.643-3.651 1.204-5.575a6.8 6.8 0 0 0-3.98-4.703 6.8 6.8 0 0 0-2.529-.506h-.061z'/%3E%3C/svg%3E\")}.ag-icon-loading:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eloading%3C/title%3E%3Cpath d='M17 29h-2v-8h2zm-3.586-9L7 26.414 5.586 25 12 18.586zm13 5L25 26.414 18.586 20 20 18.586zM29 17h-8v-2h8zm-18 0H3v-2h8zm2.414-5L12 13.414 5.586 7 7 5.586zm13-5L20 13.414 18.586 12 25 5.586zM17 11h-2V3h2z'/%3E%3C/svg%3E\")}.ag-icon-maximize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='3 3 26 26'%3E%3Ctitle%3Emaximize%3C/title%3E%3Cpath d='m7.54 17.4.1 6.98 6.96.1-2.24-2.24L16 18.6 13.4 16l-3.64 3.64zm16.92-2.8-.1-6.98-6.96-.1 2.24 2.24L16 13.4l2.6 2.6 3.64-3.64z'/%3E%3C/svg%3E\")}.ag-icon-menu:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Emenu%3C/title%3E%3Cpath d='M26 23H6v-2h20zm0-6H6v-2h20zm0-6H6V9h20z'/%3E%3C/svg%3E\")}.ag-icon-menu-alt:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none'%3E%3Cpath fill='%23000' d='M16 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0-7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4'/%3E%3C/svg%3E\")}.ag-icon-minimize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='3 3 26 26'%3E%3Ctitle%3Eminimize%3C/title%3E%3Cpath d='m14.8 24.26-.1-6.96-6.96-.1 2.24 2.24-3.64 3.64 2.6 2.6 3.64-3.64zm2.4-16.52.1 6.96 6.96.1-2.24-2.24 3.64-3.64-2.6-2.6-3.64 3.64z'/%3E%3C/svg%3E\")}.ag-icon-minus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.515 7.515c-4.683 4.682-4.683 12.288 0 16.97 4.682 4.683 12.288 4.683 16.97 0 4.683-4.682 4.683-12.288 0-16.97-4.682-4.683-12.288-4.683-16.97 0m1.414 1.414c3.903-3.903 10.239-3.903 14.142 0s3.903 10.239 0 14.142-10.239 3.903-14.142 0-3.903-10.239 0-14.142m-1.414 6.07h16.97v2.002H7.515z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-next:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enext%3C/title%3E%3Cpath d='m21.061 16-8.706 8.708-1.416-1.416L18.233 16l-7.294-7.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-none:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enone%3C/title%3E%3Cpath d='m10.044 21.258 4.478-4.198L16 18.444 9 25l-7-6.556 1.478-1.384 4.478 4.198V7h2.088zm14 3.742h-2.088V10.742l-4.478 4.198L16 13.556 23 7q3.5 3.28 7 6.556l-1.478 1.384-4.478-4.198z'/%3E%3C/svg%3E\")}.ag-icon-not-allowed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enot-allowed%3C/title%3E%3Cpath d='M16.186 3.646c8.188.154 14.898 9.796 11.17 17.78-3.298 7.066-13.932 9.374-19.848 3.87-3.9-3.632-5.076-9.896-2.684-14.708 2.082-4.19 6.588-6.974 11.362-6.942m-.298 1.998c-6.922.132-12.578 8.308-9.33 15.052 3.342 6.934 15.246 7.646 18.932 0 3.076-6.386-1.988-15.1-9.602-15.052m7.596 6.422c2.864 5.33-1.744 13.186-8.306 12.536a8.6 8.6 0 0 1-3.232-.998l-1.266-.706L22.778 10.8q.351.633.706 1.266m-9.422 10.276c3.296 1.028 7.246-1.006 8.216-4.418a6.6 6.6 0 0 0-.056-3.742zm2.104-14.696a8.8 8.8 0 0 1 3.936 1.038l1.266.706L9.27 21.488c-3.018-5.41-.99-13.37 6.318-13.834q.289-.01.578-.008m-.31 2c-4.06.154-7.23 4.614-6.03 8.46l8.16-8.16a6.8 6.8 0 0 0-2.13-.3'/%3E%3C/svg%3E\")}.ag-icon-paste:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epaste%3C/title%3E%3Cpath d='M20 6.5c0-1-1-3-4-3s-4 2-4 3H8c-2.21 0-4 1.79-4 4v14c0 2.21 1.79 4 4 4h16c2.21 0 4-1.79 4-4v-14c0-2.21-1.79-4-4-4zm-4 .546c.734 0 1.334.572 1.334 1.272S16.734 9.59 16 9.59s-1.334-.572-1.334-1.272.6-1.272 1.334-1.272M24 26.5H8a2 2 0 0 1-2-2v-14a2 2 0 0 1 2-2h2v4h12v-4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2'/%3E%3C/svg%3E\")}.ag-icon-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epin%3C/title%3E%3Cpath d='m10.78 19.777-4.668-4.666s.032-1 .67-1.87c1.366-1.86 4.052-1.96 6.056-1.572l3.158-3.108c-.7-2.342 3.352-5.046 3.352-5.046l9.166 9.168q-.334.447-.67.894c-1.074 1.426-2.538 2.63-4.272 2.338l-3.32 3.218c.046.344.042.03.118 1.152.144 2.13-.64 4.324-2.632 5.34l-.746.364-4.798-4.798-7.292 7.294-1.416-1.416zm8.24-13.672c-.688.568-1.416 1.45-1.024 2.072l.49.722-4.986 4.988c-1.988-.506-4.346-.636-5.156.614l9.02 9.032q.14-.099.272-.21c1.226-1.08.764-3.04.498-4.9l4.79-4.79s1.47.938 2.936-.776l-6.79-6.79q-.026.019-.05.038'/%3E%3C/svg%3E\")}.ag-icon-pivot:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epivot%3C/title%3E%3Cpath d='M25.128 2.002c2.56.096 4.772 2.292 4.87 4.87a712 712 0 0 1 0 18.256c-.096 2.56-2.292 4.772-4.87 4.87a712 712 0 0 1-18.256 0c-2.558-.096-4.772-2.29-4.87-4.87a712 712 0 0 1 0-18.256c.096-2.56 2.292-4.772 4.87-4.87a712 712 0 0 1 18.256 0m2.966 7.954H9.892v18.136c5.086.13 10.18.098 15.264-.096 1.48-.094 2.746-1.35 2.84-2.84.192-5.064.226-10.134.098-15.2M3.968 24.1q.015.528.036 1.056c.094 1.484 1.354 2.746 2.84 2.84l1.012.036V24.1zM22 15.414l-.292.294-1.416-1.416L23 11.586l2.708 2.706-1.416 1.416-.292-.294v3.592c-.032 2.604-2.246 4.892-4.872 4.992L15.414 24l.294.292-1.416 1.416L11.586 23l2.706-2.708 1.416 1.416-.322.32c3.372.03 6.578-.164 6.614-3.034zM3.88 18.038c.002 1.346.012 2.694.038 4.04h3.938v-4.04zm.05-6.062a681 681 0 0 0-.044 4.042h3.97v-4.042zm5.962-7.99Q8.449 3.999 7.006 4c-1.57.02-2.946 1.348-3.004 2.922q-.02 1.517-.042 3.034h3.896v-2.02h2.036zm14.244-.016v3.966h3.898q-.017-.546-.038-1.092c-.094-1.48-1.35-2.746-2.84-2.84q-.51-.019-1.02-.034m-8.14-.054q-2.035.022-4.07.048v3.972h4.07zm6.106.008c-1.358-.022-2.714-.026-4.07-.022v4.034h4.07z'/%3E%3C/svg%3E\")}.ag-icon-plus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.515 7.515c-4.683 4.682-4.683 12.288 0 16.97 4.682 4.683 12.288 4.683 16.97 0 4.683-4.682 4.683-12.288 0-16.97-4.682-4.683-12.288-4.683-16.97 0m1.414 1.414c3.903-3.903 10.239-3.903 14.142 0s3.903 10.239 0 14.142-10.239 3.903-14.142 0-3.903-10.239 0-14.142M15 15l-.001-7.485h2.002L17 15l7.485-.001v2.002L17 17l.001 7.485h-2.002L15 17l-7.485.001v-2.002z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-previous:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eprevious%3C/title%3E%3Cpath d='M21.061 8.708 13.767 16l7.294 7.292-1.416 1.416L10.939 16l8.706-8.708z'/%3E%3C/svg%3E\")}.ag-icon-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eright%3C/title%3E%3Cpath d='m28.207 16-9.414 9.414L14.379 21l2-2H3.793v-6h12.586l-2-2 4.414-4.414zm-11-5 4 4H5.793v2h15.414l-4 4 1.586 1.586L25.379 16l-6.586-6.586z'/%3E%3C/svg%3E\")}.ag-icon-save:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esave%3C/title%3E%3Cpath d='M25.333 16v9.333H6.666V16H3.999v9.333C3.999 26.8 5.199 28 6.666 28h18.667C26.8 28 28 26.8 28 25.333V16zm-8 .893 3.453-3.44 1.88 1.88L15.999 22l-6.667-6.667 1.88-1.88 3.453 3.44V4h2.667v12.893z'/%3E%3C/svg%3E\")}.ag-icon-small-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-down%3C/title%3E%3Cpath d='M24.708 12.355 16 21.061l-8.708-8.706 1.416-1.416L16 18.233l7.292-7.294z'/%3E%3C/svg%3E\")}.ag-icon-small-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-left%3C/title%3E%3Cpath d='M21.061 8.708 13.767 16l7.294 7.292-1.416 1.416L10.939 16l8.706-8.708z'/%3E%3C/svg%3E\")}.ag-icon-small-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-right%3C/title%3E%3Cpath d='m21.061 16-8.706 8.708-1.416-1.416L18.233 16l-7.294-7.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-small-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-up%3C/title%3E%3Cpath d='m24.708 19.645-1.416 1.416L16 13.767l-7.292 7.294-1.416-1.416L16 10.939z'/%3E%3C/svg%3E\")}.ag-icon-tick:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etick%3C/title%3E%3Cpath d='M24.708 10.855 13 22.561l-5.708-5.706 1.416-1.416L13 19.733 23.292 9.439z'/%3E%3C/svg%3E\")}.ag-icon-tree-closed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-closed%3C/title%3E%3Cpath d='m21.061 16-8.706 8.708-1.416-1.416L18.233 16l-7.294-7.292 1.416-1.416z'/%3E%3C/svg%3E\")}.ag-icon-tree-indeterminate:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-indeterminate%3C/title%3E%3Cpath d='M6 15h20v2H6z'/%3E%3C/svg%3E\")}.ag-icon-tree-open:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-open%3C/title%3E%3Cpath d='M24.708 12.355 16 21.061l-8.708-8.706 1.416-1.416L16 18.233l7.292-7.294z'/%3E%3C/svg%3E\")}.ag-icon-unlinked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eunlinked%3C/title%3E%3Cpath d='M5.35 3.999a.2.2 0 0 0-.14.058c-.388.38-.768.768-1.152 1.152a.21.21 0 0 0-.002.288c7.459 7.506 14.965 14.965 22.447 22.447a.21.21 0 0 0 .288.002q.576-.574 1.151-1.151a.21.21 0 0 0 .002-.288C20.484 19.002 12.979 11.542 5.497 4.06a.2.2 0 0 0-.146-.061zm.611 12.548c-1.933 1.939-2.538 5.119-1.289 7.688a6.79 6.79 0 0 0 4.891 3.672 6.82 6.82 0 0 0 5.893-1.866l1.984-1.984-1.438-1.438-1.986 1.986c-1.486 1.476-3.993 1.81-5.834.629a4.73 4.73 0 0 1-2.024-2.853 4.76 4.76 0 0 1 1.241-4.393l1.986-1.986-1.438-1.438-1.984 1.984zM21.273 3.999a6.78 6.78 0 0 0-4.727 1.963l-1.984 1.984L16 9.384l1.985-1.985a4.74 4.74 0 0 1 2.776-1.338c1.974-.224 4.045.926 4.845 2.834.712 1.699.329 3.778-1.004 5.12L22.616 16l1.439 1.438q1-1 2-2c2.012-2.031 2.557-5.368 1.112-7.982-1.144-2.07-3.432-3.441-5.834-3.459h-.061z'/%3E%3C/svg%3E\")}.ag-icon-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Easc%3C/title%3E%3Cpath d='m15 10.621-4.292 4.294-1.416-1.416L16 6.793l6.708 6.706-1.416 1.416L17 10.621v14.586h-2z'/%3E%3C/svg%3E\")}.ag-icon-grip:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Egrip%3C/title%3E%3Cpath d='M8 24H6v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zM8 18H6v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zM8 12H6V8h2zm6 0h-2V8h2zm6 0h-2V8h2zm6 0h-2V8h2z'/%3E%3C/svg%3E\")}.ag-icon-settings:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M30 8h-4.1c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2v2h14.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30zm-9 4c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3M2 24h4.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30v-2H15.9c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2zm9-4c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3'/%3E%3C/svg%3E\")}`\n);\n\n// packages/ag-grid-community/src/theming/parts/icon-set/balham/icon-set-balham.ts\nvar iconSetBalham = /* @__PURE__ */ createPart({\n feature: \"iconSet\",\n css: iconSetBalhamCSS\n});\n\n// packages/ag-grid-community/src/theming/parts/icon-set/alpine/icon-set-alpine.css-GENERATED.ts\nvar iconSetAlpineCSS = (\n /*css*/\n `.ag-icon-aggregation:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M24 6H8v2l8 8-8 8v2h16v-2H11l8-8-8-8h13z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-arrows:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.515 11.171 2.687 16l4.828 4.829-1.414 1.414L-.142 16l6.243-6.243zm16.97 0 1.414-1.414L32.142 16l-6.243 6.243-1.414-1.414L29.313 16zM16.028 13.2l2.829 2.828-2.829 2.829-2.828-2.829zm-4.857 11.285L16 29.313l4.829-4.828 1.414 1.414L16 32.142l-6.243-6.243zm0-16.97L9.757 6.101 16-.142l6.243 6.243-1.414 1.414L16 2.687z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-asc:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m5.333 16 1.88 1.88 7.453-7.44v16.227h2.667V10.44l7.44 7.453L26.666 16 15.999 5.333 5.332 16z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-cancel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M16 2.667A13.32 13.32 0 0 0 2.667 16c0 7.373 5.96 13.333 13.333 13.333S29.333 23.373 29.333 16 23.373 2.667 16 2.667m6.667 18.12-1.88 1.88L16 17.88l-4.787 4.787-1.88-1.88L14.12 16l-4.787-4.787 1.88-1.88L16 14.12l4.787-4.787 1.88 1.88L17.88 16z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-chart:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Echart%3C/title%3E%3Cg fill='%23000' fill-rule='nonzero'%3E%3Cpath d='M14 7h4v18h-4zM8 17h4v8H8zM20 13h4v12h-4z'/%3E%3C/g%3E%3C/svg%3E\")}.ag-icon-color-picker:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M23.907 17.587 10.574 4.254l-1.88 1.88 3.173 3.173-8.28 8.28 10.16 10.16zm-16.547 0 6.387-6.387 6.387 6.387zm18.387 2s-2.667 2.893-2.667 4.667c0 1.467 1.2 2.667 2.667 2.667s2.667-1.2 2.667-2.667c0-1.773-2.667-4.667-2.667-4.667' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-columns:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M26 25H6V7h20zM12 11H8v12h4zm6 0h-4v12h4zm6 12V11h-4v12z' style='fill-rule:nonzero' transform='translate(0 -1)'/%3E%3C/svg%3E\")}.ag-icon-contracted:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m12 6 10 10-10 10-2-2 8-8-8-8z'/%3E%3C/svg%3E\")}.ag-icon-copy:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M22 1.333H6A2.675 2.675 0 0 0 3.333 4v18.667H6V4h16zm4 5.334H11.333a2.675 2.675 0 0 0-2.667 2.667v18.667c0 1.467 1.2 2.667 2.667 2.667H26c1.467 0 2.667-1.2 2.667-2.667V9.334c0-1.467-1.2-2.667-2.667-2.667M26 28H11.333V9.333H26z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-cross:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M15.984 13.894 27.05 2.828l2.122 2.122-11.066 11.066 11.066 11.066-2.122 2.12-11.066-11.066L4.918 29.202l-2.12-2.12 11.066-11.066L2.798 4.95l2.12-2.122z'/%3E%3C/svg%3E\")}.ag-icon-csv:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='M.688-.226a.2.2 0 0 1-.017.074.28.28 0 0 1-.145.14.412.412 0 0 1-.234.013.28.28 0 0 1-.202-.168.468.468 0 0 1-.04-.19q0-.086.025-.155a.319.319 0 0 1 .182-.191.4.4 0 0 1 .134-.025q.087 0 .155.035a.3.3 0 0 1 .104.085.17.17 0 0 1 .036.097.06.06 0 0 1-.018.044.06.06 0 0 1-.042.019.06.06 0 0 1-.042-.013.2.2 0 0 1-.031-.046.2.2 0 0 0-.066-.079.16.16 0 0 0-.095-.027.17.17 0 0 0-.142.068.3.3 0 0 0-.053.193.4.4 0 0 0 .023.139.2.2 0 0 0 .067.083.2.2 0 0 0 .1.027q.063 0 .106-.031a.2.2 0 0 0 .065-.091.2.2 0 0 1 .023-.046q.014-.018.044-.018a.06.06 0 0 1 .044.018.06.06 0 0 1 .019.045' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 7.122 25.977)'/%3E%3Cpath d='M.622-.215a.2.2 0 0 1-.033.117.23.23 0 0 1-.098.081.4.4 0 0 1-.153.029.34.34 0 0 1-.175-.04.23.23 0 0 1-.079-.077.17.17 0 0 1-.031-.093q0-.027.019-.045a.06.06 0 0 1 .046-.019.06.06 0 0 1 .039.014.1.1 0 0 1 .027.044.3.3 0 0 0 .03.057q.015.023.044.038.03.015.076.015.065 0 .105-.03a.09.09 0 0 0 .04-.075.08.08 0 0 0-.022-.058.14.14 0 0 0-.056-.034 1 1 0 0 0-.092-.025.7.7 0 0 1-.129-.042.2.2 0 0 1-.083-.066.17.17 0 0 1-.03-.104q0-.058.032-.105a.2.2 0 0 1 .093-.07.4.4 0 0 1 .144-.025q.066 0 .114.016a.3.3 0 0 1 .08.044.2.2 0 0 1 .046.057q.015.03.015.058a.07.07 0 0 1-.018.046.06.06 0 0 1-.046.021q-.025 0-.038-.012a.2.2 0 0 1-.028-.041.2.2 0 0 0-.047-.063Q.387-.625.326-.625a.15.15 0 0 0-.09.025q-.035.024-.035.059 0 .021.012.037a.1.1 0 0 0 .032.027.4.4 0 0 0 .111.036q.06.015.11.031.048.018.083.042a.2.2 0 0 1 .054.062.2.2 0 0 1 .019.091' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 13.339 25.977)'/%3E%3Cpath d='m.184-.633.162.48.163-.483q.013-.038.019-.053a.062.062 0 0 1 .061-.039q.018 0 .034.009a.1.1 0 0 1 .025.025q.009.015.009.031L.654-.64l-.007.025-.009.024-.173.468-.019.051a.2.2 0 0 1-.021.042.1.1 0 0 1-.033.03.1.1 0 0 1-.049.012.1.1 0 0 1-.05-.011A.1.1 0 0 1 .26-.03a.2.2 0 0 1-.021-.042L.22-.123.05-.587.041-.612.033-.638.03-.662q0-.025.02-.046a.07.07 0 0 1 .05-.02q.037 0 .053.023.015.023.031.072' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 18.94 25.977)'/%3E%3C/svg%3E\")}.ag-icon-cut:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M13.775 15.198 3.835 2.945a1.501 1.501 0 0 1 2.33-1.89l14.997 18.488A6.003 6.003 0 0 1 29.657 25c0 3.311-2.688 6-6 6s-6-2.689-6-6c0-1.335.437-2.569 1.176-3.566l-3.127-3.855-3.001 3.7A5.97 5.97 0 0 1 14 25c0 3.311-2.689 6-6 6s-6-2.689-6-6a6.003 6.003 0 0 1 8.315-5.536zm9.882 6.702a3.1 3.1 0 0 0-3.1 3.1c0 1.711 1.389 3.1 3.1 3.1s3.1-1.389 3.1-3.1-1.389-3.1-3.1-3.1M8 21.95a3.05 3.05 0 1 0 .001 6.101A3.05 3.05 0 0 0 8 21.95m9.63-11.505 1.932 2.381 8.015-9.881a1.5 1.5 0 0 0-2.329-1.89z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-desc:before,.ag-icon-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m26.667 16-1.88-1.88-7.453 7.44V5.333h-2.667V21.56l-7.44-7.453L5.334 16l10.667 10.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-excel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='m.052-.139.16-.234-.135-.208a.4.4 0 0 1-.028-.052.1.1 0 0 1-.01-.042.05.05 0 0 1 .018-.037.07.07 0 0 1 .045-.016q.03 0 .047.018a1 1 0 0 1 .047.066l.107.174.115-.174.024-.038.019-.026.021-.015a.1.1 0 0 1 .027-.005.06.06 0 0 1 .044.016.05.05 0 0 1 .018.039q0 .033-.038.089l-.141.211.152.234a.3.3 0 0 1 .03.051.1.1 0 0 1 .009.038.1.1 0 0 1-.008.031.1.1 0 0 1-.024.023.1.1 0 0 1-.034.008.1.1 0 0 1-.035-.008.1.1 0 0 1-.023-.022L.427-.067.301-.265l-.134.204-.022.034-.016.019a.1.1 0 0 1-.022.015.1.1 0 0 1-.03.005.06.06 0 0 1-.044-.016.06.06 0 0 1-.017-.047q0-.036.036-.088' style='fill-rule:nonzero' transform='matrix(17.82892 0 0 16.50777 10.371 25.928)'/%3E%3C/svg%3E\")}.ag-icon-expanded:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M20 26 10 16 20 6l2 2-8 8 8 8z'/%3E%3C/svg%3E\")}.ag-icon-eye-slash:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye-slash%3C/title%3E%3Cpath fill='%23000' fill-rule='nonzero' d='M8.95 10.364 7 8.414 8.414 7l2.32 2.32A13.2 13.2 0 0 1 16.5 8c5.608 0 10.542 3.515 12.381 8.667L29 17l-.119.333a13 13 0 0 1-4.255 5.879l1.466 1.466-1.414 1.414-1.754-1.753A13.2 13.2 0 0 1 16.5 26c-5.608 0-10.542-3.515-12.381-8.667L4 17l.119-.333a13 13 0 0 1 4.83-6.303m1.445 1.445A11.02 11.02 0 0 0 6.148 17c1.646 4.177 5.728 7 10.352 7 1.76 0 3.441-.409 4.94-1.146l-1.878-1.878A5.06 5.06 0 0 1 16.5 22c-2.789 0-5.05-2.239-5.05-5 0-1.158.398-2.223 1.065-3.07zm1.855-.974 1.794 1.795A5.07 5.07 0 0 1 16.5 12c2.789 0 5.05 2.239 5.05 5 0 .9-.24 1.745-.661 2.474l2.305 2.306A11 11 0 0 0 26.852 17c-1.646-4.177-5.728-7-10.352-7-1.495 0-2.933.295-4.25.835'/%3E%3C/svg%3E\")}.ag-icon-eye:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M16.5 23c4.624 0 8.706-2.823 10.352-7-1.646-4.177-5.728-7-10.352-7s-8.706 2.823-10.352 7c1.646 4.177 5.728 7 10.352 7M4.119 15.667C5.958 10.515 10.892 7 16.5 7s10.542 3.515 12.381 8.667L29 16l-.119.333C27.042 21.485 22.108 25 16.5 25S5.958 21.485 4.119 16.333L4 16zM16.5 21c2.789 0 5.049-2.239 5.049-5s-2.26-5-5.049-5-5.049 2.239-5.049 5 2.26 5 5.049 5' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-filter:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m28 8-8 8v5l-6 6V16L6 8V6h22zM9 8l7 7v7l2-2v-5l7-7z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-first:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M24.273 22.12 18.153 16l6.12-6.12L22.393 8l-8 8 8 8zM7.727 8h2.667v16H7.727z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-group:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M14 7v1H9V7zm0-3v1H5.001V4zm-7 7H5v-1h2zm0-3H5V7h2zM3 5H1V4h2zm11 5v1H9v-1zm-7 4H5v-1h2zm7-1v1H9v-1z' style='fill-rule:nonzero' transform='matrix(2 0 0 2 0 -2)'/%3E%3C/svg%3E\")}.ag-icon-last:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m7.727 9.88 6.12 6.12-6.12 6.12L9.607 24l8-8-8-8zM21.607 8h2.667v16h-2.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M26.667 14.667H10.44l7.453-7.453L16 5.334 5.333 16.001 16 26.668l1.88-1.88-7.44-7.453h16.227z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-linked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M5.2 16a4.136 4.136 0 0 1 4.133-4.133h5.333V9.334H9.333a6.67 6.67 0 0 0-6.667 6.667 6.67 6.67 0 0 0 6.667 6.667h5.333v-2.533H9.333A4.136 4.136 0 0 1 5.2 16.002zm5.467 1.333h10.667v-2.667H10.667zm12-8h-5.333v2.533h5.333a4.136 4.136 0 0 1 4.133 4.133 4.136 4.136 0 0 1-4.133 4.133h-5.333v2.533h5.333a6.67 6.67 0 0 0 6.667-6.667 6.67 6.67 0 0 0-6.667-6.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-loading:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M17 29h-2v-8h2zm-3.586-9L7 26.414 5.586 25 12 18.586zm13 5L25 26.414 18.586 20 20 18.586zM29 17h-8v-2h8zm-18 0H3v-2h8zm2.414-5L12 13.414 5.586 7 7 5.586zm13-5L20 13.414 18.586 12 25 5.586zM17 11h-2V3h2z' style='fill-rule:nonzero' transform='translate(-3.692 -3.692)scale(1.23077)'/%3E%3C/svg%3E\")}.ag-icon-maximize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M14 30H2V18h2.828v7.05l8.254-8.252 2.12 2.12-8.252 8.254H14zm4-28h12v12h-2.828V6.95l-8.254 8.252-2.12-2.12 8.252-8.254H18z'/%3E%3C/svg%3E\")}.ag-icon-menu:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M20 13H0v-2h20zm0-6H0V5h20zm0-6H0v-2h20z' style='fill-rule:nonzero' transform='translate(6 9)'/%3E%3C/svg%3E\")}.ag-icon-menu-alt:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M16 19a3 3 0 1 0 0-6 3 3 0 0 0 0 6M16 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6M16 27a3 3 0 1 0 0-6 3 3 0 0 0 0 6'/%3E%3C/svg%3E\")}.ag-icon-minimize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M2 18h12v12h-2.828v-7.05l-8.254 8.252-2.12-2.12 8.252-8.254H2zm28-4H18V2h2.828v7.05L29.082.798l2.12 2.12-8.252 8.254H30z'/%3E%3C/svg%3E\")}.ag-icon-minus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6.572 6.572a13.32 13.32 0 0 0 0 18.856 13.32 13.32 0 0 0 18.856 0 13.32 13.32 0 0 0 0-18.856 13.32 13.32 0 0 0-18.856 0m17.527 8.099v2.658H7.901v-2.658z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-next:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M10.94 6 9.06 7.88 17.167 16 9.06 24.12 10.94 26l10-10z' style='fill-rule:nonzero' transform='translate(1)'/%3E%3C/svg%3E\")}.ag-icon-none:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enone%3C/title%3E%3Cg fill='%23000' fill-rule='nonzero'%3E%3Cpath d='M23.708 14.645 16 6.939l-7.708 7.706 1.416 1.416L16 9.767l6.292 6.294zM23.708 20.355 16 28.061l-7.708-7.706 1.416-1.416L16 25.233l6.292-6.294z'/%3E%3C/g%3E%3C/svg%3E\")}.ag-icon-not-allowed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M16 2.667C8.64 2.667 2.667 8.64 2.667 16S8.64 29.333 16 29.333 29.333 23.36 29.333 16 23.36 2.667 16 2.667M5.333 16c0-5.893 4.773-10.667 10.667-10.667 2.467 0 4.733.84 6.533 2.253L7.586 22.533A10.54 10.54 0 0 1 5.333 16M16 26.667c-2.467 0-4.733-.84-6.533-2.253L24.414 9.467A10.54 10.54 0 0 1 26.667 16c0 5.893-4.773 10.667-10.667 10.667' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-paste:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M25.334 4H19.76C19.2 2.453 17.733 1.333 16 1.333S12.8 2.453 12.24 4H6.667A2.675 2.675 0 0 0 4 6.667V28c0 1.467 1.2 2.667 2.667 2.667h18.667c1.467 0 2.667-1.2 2.667-2.667V6.667C28.001 5.2 26.801 4 25.334 4M16 4c.733 0 1.333.6 1.333 1.333s-.6 1.333-1.333 1.333-1.333-.6-1.333-1.333S15.267 4 16 4m9.333 24H6.666V6.667h2.667v4h13.333v-4h2.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m10.78 19.777-4.668-4.666s.032-1 .67-1.87c1.366-1.86 4.052-1.96 6.056-1.572l3.158-3.108c-.7-2.342 3.352-5.046 3.352-5.046l9.166 9.168q-.334.447-.67.894c-1.074 1.426-2.538 2.63-4.272 2.338l-3.32 3.218c.046.344.042.03.118 1.152.144 2.13-.64 4.324-2.632 5.34l-.746.364-4.798-4.798-7.292 7.294-1.416-1.416zm8.24-13.672c-.688.568-1.416 1.45-1.024 2.072l.49.722-4.986 4.988c-1.988-.506-4.346-.636-5.156.614l9.02 9.032q.14-.099.272-.21c1.226-1.08.764-3.04.498-4.9l4.79-4.79s1.47.938 2.936-.776l-6.79-6.79q-.026.019-.05.038' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-pivot:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M25.128 2.002c2.56.096 4.772 2.292 4.87 4.87a712 712 0 0 1 0 18.256c-.096 2.56-2.292 4.772-4.87 4.87a712 712 0 0 1-18.256 0c-2.558-.096-4.772-2.29-4.87-4.87a712 712 0 0 1 0-18.256c.096-2.56 2.292-4.772 4.87-4.87a712 712 0 0 1 18.256 0m2.966 7.954H9.892v18.136c5.086.13 10.18.098 15.264-.096 1.48-.094 2.746-1.35 2.84-2.84.192-5.064.226-10.134.098-15.2M3.968 24.1q.015.528.036 1.056c.094 1.484 1.354 2.746 2.84 2.84l1.012.036V24.1zM22 15.414l-.292.294-1.416-1.416L23 11.586l2.708 2.706-1.416 1.416-.292-.294v3.592c-.032 2.604-2.246 4.892-4.872 4.992L15.414 24l.294.292-1.416 1.416L11.586 23l2.706-2.708 1.416 1.416-.322.32c3.372.03 6.578-.164 6.614-3.034zM3.88 18.038c.002 1.346.012 2.694.038 4.04h3.938v-4.04zm.05-6.062a681 681 0 0 0-.044 4.042h3.97v-4.042zm5.962-7.99Q8.449 3.999 7.006 4c-1.57.02-2.946 1.348-3.004 2.922q-.02 1.517-.042 3.034h3.896v-2.02h2.036zm14.244-.016v3.966h3.898q-.017-.546-.038-1.092c-.094-1.48-1.35-2.746-2.84-2.84q-.51-.019-1.02-.034m-8.14-.054q-2.035.022-4.07.048v3.972h4.07zm6.106.008a213 213 0 0 0-4.07-.022v4.034h4.07z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-plus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6.572 6.572a13.32 13.32 0 0 0 0 18.856 13.32 13.32 0 0 0 18.856 0 13.32 13.32 0 0 0 0-18.856 13.32 13.32 0 0 0-18.856 0m17.527 8.099v2.658h-6.77v6.77h-2.658v-6.77h-6.77v-2.658h6.77v-6.77h2.658v6.77z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-previous:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M21.94 7.88 20.06 6l-10 10 10 10 1.88-1.88L13.833 16z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m16 5.333-1.88 1.88 7.44 7.453H5.333v2.667H21.56l-7.44 7.453 1.88 1.88 10.667-10.667L16 5.332z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-save:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M15.708 2.355 8 10.061.292 2.355 1.708.939 8 7.233 14.292.939z' style='fill-rule:nonzero' transform='translate(8 14)'/%3E%3Cpath d='M5 26h22v2H5zM15 4h2v18h-2z'/%3E%3C/svg%3E\")}.ag-icon-small-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.334 10.667 16 21.334l8.667-10.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-small-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M21.333 7.334 10.666 16l10.667 8.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-small-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M10.667 24.666 21.334 16 10.667 7.333z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-small-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M7.334 21.333 16 10.666l8.667 10.667z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-tick:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M11.586 22.96 27.718 6.828 29.84 8.95 11.586 27.202 2.4 18.016l2.12-2.122z'/%3E%3C/svg%3E\")}.ag-icon-tree-closed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m11.94 6-1.88 1.88L18.167 16l-8.107 8.12L11.94 26l10-10z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-tree-indeterminate:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6 13.5h20v3H6z'/%3E%3C/svg%3E\")}.ag-icon-tree-open:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M24.12 9.06 16 17.167 7.88 9.06 6 10.94l10 10 10-10z' style='fill-rule:nonzero' transform='translate(0 1)'/%3E%3C/svg%3E\")}.ag-icon-unlinked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M22.667 9.333h-5.333v2.533h5.333a4.136 4.136 0 0 1 4.133 4.133c0 1.907-1.307 3.507-3.08 3.973l1.947 1.947c2.173-1.107 3.667-3.32 3.667-5.92a6.67 6.67 0 0 0-6.667-6.667zm-1.334 5.334h-2.92l2.667 2.667h.253zM2.667 5.693 6.814 9.84A6.65 6.65 0 0 0 2.667 16a6.67 6.67 0 0 0 6.667 6.667h5.333v-2.533H9.334a4.136 4.136 0 0 1-4.133-4.133c0-2.12 1.613-3.867 3.68-4.093l2.76 2.76h-.973v2.667h3.64l3.027 3.027v2.307h2.307l5.347 5.333 1.68-1.68L4.362 4.002 2.669 5.695z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m5.333 16 1.88 1.88 7.453-7.44v16.227h2.667V10.44l7.44 7.453L26.666 16 15.999 5.333 5.332 16z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-grip:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M8 24H6v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zM8 18H6v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zm6 0h-2v-4h2zM8 12H6V8h2zm6 0h-2V8h2zm6 0h-2V8h2zm6 0h-2V8h2z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-settings:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M30 8h-4.1c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2v2h14.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30zm-9 4c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3M2 24h4.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30v-2H15.9c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2zm9-4c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3'/%3E%3C/svg%3E\")}`\n);\n\n// packages/ag-grid-community/src/theming/parts/icon-set/alpine/icon-set-alpine.ts\nvar iconSetAlpine = /* @__PURE__ */ createPart({\n feature: \"iconSet\",\n css: iconSetAlpineCSS\n});\n\n// packages/ag-grid-community/src/theming/parts/icon-set/material/icon-set-material.css-GENERATED.ts\nvar iconSetMaterialCSS = (\n /*css*/\n `.ag-icon-aggregation:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eaggregation%3C/title%3E%3Cpath d='M24 5.333H8V8l8.667 8L8 24v2.667h16v-4h-9.333L21.334 16l-6.667-6.667H24z'/%3E%3C/svg%3E\")}.ag-icon-arrows:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Earrows%3C/title%3E%3Cpath d='M13.333 11.556h5.333V8h3.556L16 1.778 9.778 8h3.556zm-1.777 1.777H8V9.777l-6.222 6.222L8 22.221v-3.556h3.556zM30.222 16 24 9.778v3.556h-3.556v5.333H24v3.556l6.222-6.222zm-11.555 4.444h-5.333V24H9.778L16 30.222 22.222 24h-3.556z'/%3E%3C/svg%3E\")}.ag-icon-asc:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Easc%3C/title%3E%3Cpath d='m5.333 16 1.88 1.88 7.453-7.44v16.227h2.667V10.44l7.44 7.453L26.666 16 15.999 5.333z'/%3E%3C/svg%3E\")}.ag-icon-cancel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecancel%3C/title%3E%3Cpath d='M16 2.667C8.627 2.667 2.667 8.627 2.667 16S8.627 29.333 16 29.333 29.333 23.373 29.333 16 23.373 2.667 16 2.667m6.667 18.12-1.88 1.88L16 17.88l-4.787 4.787-1.88-1.88L14.12 16l-4.787-4.787 1.88-1.88L16 14.12l4.787-4.787 1.88 1.88L17.88 16z'/%3E%3C/svg%3E\")}.ag-icon-chart:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Echart%3C/title%3E%3Cpath d='M6.667 12.267h4v13.067h-4zm7.466-5.6h3.733v18.667h-3.733zM21.6 17.333h3.733v8H21.6z'/%3E%3C/svg%3E\")}.ag-icon-color-picker:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecolor-picker%3C/title%3E%3Cpath d='M23.907 17.587 10.574 4.254l-1.88 1.88 3.173 3.173-8.28 8.28 10.16 10.16zm-16.547 0 6.387-6.387 6.387 6.387H7.361zm18.387 2s-2.667 2.893-2.667 4.667c0 1.467 1.2 2.667 2.667 2.667s2.667-1.2 2.667-2.667c0-1.773-2.667-4.667-2.667-4.667'/%3E%3C/svg%3E\")}.ag-icon-columns:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecolumns%3C/title%3E%3Cpath d='M5.333 10.667h5.333V5.334H5.333zm8 16h5.333v-5.333h-5.333zm-8 0h5.333v-5.333H5.333zm0-8h5.333v-5.333H5.333zm8 0h5.333v-5.333h-5.333zm8-13.334v5.333h5.333V5.333zm-8 5.334h5.333V5.334h-5.333zm8 8h5.333v-5.333h-5.333zm0 8h5.333v-5.333h-5.333z'/%3E%3C/svg%3E\")}.ag-icon-contracted:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Econtracted%3C/title%3E%3Cpath d='m12.94 8-1.88 1.88L17.167 16l-6.107 6.12L12.94 24l8-8z'/%3E%3C/svg%3E\")}.ag-icon-copy:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecopy%3C/title%3E%3Cpath d='M22 1.333H6A2.675 2.675 0 0 0 3.333 4v18.667H6V4h16zm4 5.334H11.333a2.675 2.675 0 0 0-2.667 2.667v18.667c0 1.467 1.2 2.667 2.667 2.667H26c1.467 0 2.667-1.2 2.667-2.667V9.334c0-1.467-1.2-2.667-2.667-2.667M26 28H11.333V9.333H26z'/%3E%3C/svg%3E\")}.ag-icon-cross:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Ecross%3C/title%3E%3Cpath d='m25.333 8.547-1.88-1.88L16 14.12 8.547 6.667l-1.88 1.88L14.12 16l-7.453 7.453 1.88 1.88L16 17.88l7.453 7.453 1.88-1.88L17.88 16z'/%3E%3C/svg%3E\")}.ag-icon-csv:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='M.688-.226a.2.2 0 0 1-.017.074.28.28 0 0 1-.145.14.412.412 0 0 1-.234.013.28.28 0 0 1-.202-.168.468.468 0 0 1-.04-.19q0-.086.025-.155a.319.319 0 0 1 .182-.191.4.4 0 0 1 .134-.025q.087 0 .155.035a.3.3 0 0 1 .104.085.17.17 0 0 1 .036.097.06.06 0 0 1-.018.044.06.06 0 0 1-.042.019.06.06 0 0 1-.042-.013.2.2 0 0 1-.031-.046.2.2 0 0 0-.066-.079.16.16 0 0 0-.095-.027.17.17 0 0 0-.142.068.3.3 0 0 0-.053.193.4.4 0 0 0 .023.139.2.2 0 0 0 .067.083.2.2 0 0 0 .1.027q.063 0 .106-.031a.2.2 0 0 0 .065-.091.2.2 0 0 1 .023-.046q.014-.018.044-.018a.06.06 0 0 1 .044.018.06.06 0 0 1 .019.045' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 7.122 25.977)'/%3E%3Cpath d='M.622-.215a.2.2 0 0 1-.033.117.23.23 0 0 1-.098.081.4.4 0 0 1-.153.029.34.34 0 0 1-.175-.04.23.23 0 0 1-.079-.077.17.17 0 0 1-.031-.093q0-.027.019-.045a.06.06 0 0 1 .046-.019.06.06 0 0 1 .039.014.1.1 0 0 1 .027.044.3.3 0 0 0 .03.057q.015.023.044.038.03.015.076.015.065 0 .105-.03a.09.09 0 0 0 .04-.075.08.08 0 0 0-.022-.058.14.14 0 0 0-.056-.034 1 1 0 0 0-.092-.025.7.7 0 0 1-.129-.042.2.2 0 0 1-.083-.066.17.17 0 0 1-.03-.104q0-.058.032-.105a.2.2 0 0 1 .093-.07.4.4 0 0 1 .144-.025q.066 0 .114.016a.3.3 0 0 1 .08.044.2.2 0 0 1 .046.057q.015.03.015.058a.07.07 0 0 1-.018.046.06.06 0 0 1-.046.021q-.025 0-.038-.012a.2.2 0 0 1-.028-.041.2.2 0 0 0-.047-.063Q.387-.625.326-.625a.15.15 0 0 0-.09.025q-.035.024-.035.059 0 .021.012.037a.1.1 0 0 0 .032.027.4.4 0 0 0 .111.036q.06.015.11.031.048.018.083.042a.2.2 0 0 1 .054.062.2.2 0 0 1 .019.091' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 13.339 25.977)'/%3E%3Cpath d='m.184-.633.162.48.163-.483q.013-.038.019-.053a.062.062 0 0 1 .061-.039q.018 0 .034.009a.1.1 0 0 1 .025.025q.009.015.009.031L.654-.64l-.007.025-.009.024-.173.468-.019.051a.2.2 0 0 1-.021.042.1.1 0 0 1-.033.03.1.1 0 0 1-.049.012.1.1 0 0 1-.05-.011A.1.1 0 0 1 .26-.03a.2.2 0 0 1-.021-.042L.22-.123.05-.587.041-.612.033-.638.03-.662q0-.025.02-.046a.07.07 0 0 1 .05-.02q.037 0 .053.023.015.023.031.072' style='fill-rule:nonzero' transform='matrix(8.39799 0 0 12.455 18.94 25.977)'/%3E%3C/svg%3E\")}.ag-icon-cut:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='m19 3-6 6 2 2 7-7V3m-10 9.5a.503.503 0 0 1-.5-.5c0-.274.226-.5.5-.5s.5.226.5.5-.226.5-.5.5M6 20c-1.097 0-2-.903-2-2a2 2 0 0 1 2-2c1.097 0 2 .903 2 2a2 2 0 0 1-2 2M6 8c-1.097 0-2-.903-2-2a2 2 0 0 1 2-2c1.097 0 2 .903 2 2a2 2 0 0 1-2 2m3.64-.36c.23-.5.36-1.05.36-1.64 0-2.194-1.806-4-4-4S2 3.806 2 6s1.806 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.194 0-4 1.806-4 4s1.806 4 4 4 4-1.806 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1z' style='fill-rule:nonzero' transform='translate(4 4)'/%3E%3C/svg%3E\")}.ag-icon-desc:before,.ag-icon-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Edesc%3C/title%3E%3Cpath d='m26.667 16-1.88-1.88-7.453 7.44V5.333h-2.667V21.56l-7.44-7.453L5.334 16l10.667 10.667L26.668 16z'/%3E%3C/svg%3E\")}.ag-icon-excel:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M384 131.9c-7.753-8.433-110.425-128.473-114.9-133L48-.1C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48zm-35.9 2.1H257V27.9zM30 479V27h200l1 105c0 13.3-1.3 29 12 29h111l1 318z' style='fill-rule:nonzero' transform='matrix(.06285 0 0 .06285 3.934 -.054)'/%3E%3Cpath d='m.052-.139.16-.234-.135-.208a.4.4 0 0 1-.028-.052.1.1 0 0 1-.01-.042.05.05 0 0 1 .018-.037.07.07 0 0 1 .045-.016q.03 0 .047.018a1 1 0 0 1 .047.066l.107.174.115-.174.024-.038.019-.026.021-.015a.1.1 0 0 1 .027-.005.06.06 0 0 1 .044.016.05.05 0 0 1 .018.039q0 .033-.038.089l-.141.211.152.234a.3.3 0 0 1 .03.051.1.1 0 0 1 .009.038.1.1 0 0 1-.008.031.1.1 0 0 1-.024.023.1.1 0 0 1-.034.008.1.1 0 0 1-.035-.008.1.1 0 0 1-.023-.022L.427-.067.301-.265l-.134.204-.022.034-.016.019a.1.1 0 0 1-.022.015.1.1 0 0 1-.03.005.06.06 0 0 1-.044-.016.06.06 0 0 1-.017-.047q0-.036.036-.088' style='fill-rule:nonzero' transform='matrix(17.82892 0 0 16.50777 10.371 25.928)'/%3E%3C/svg%3E\")}.ag-icon-expanded:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eexpanded%3C/title%3E%3Cpath d='M20.94 9.88 19.06 8l-8 8 8 8 1.88-1.88L14.833 16z'/%3E%3C/svg%3E\")}.ag-icon-eye-slash:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye-slash%3C/title%3E%3Cpath d='M21.106 15.088A5.19 5.19 0 0 0 16 10.814a5.17 5.17 0 0 0-3.668 1.522L9.866 9.868a12.2 12.2 0 0 1 6.133-1.646c5.186 0 9.614 3.225 11.408 7.778a12.34 12.34 0 0 1-5.276 6.133l-2.468-2.466a5.17 5.17 0 0 0 1.449-2.802h-2.123c-.148.508-.42.964-.782 1.33l-1.33-1.33h-2.514l2.196 2.196q-.272.049-.56.05a3.11 3.11 0 0 1-2.99-2.245h-2.123a5.19 5.19 0 0 0 7.3 3.836l2.247 2.247a12.2 12.2 0 0 1-4.434.828c-5.186 0-9.614-3.225-11.408-7.778a12.3 12.3 0 0 1 3.781-5.111l2.924 2.924a5.1 5.1 0 0 0-.404 1.275h4.206l-1.296-1.296a3.1 3.1 0 0 1 2.196-.903c1.404 0 2.587.924 2.976 2.199h2.13z'/%3E%3C/svg%3E\")}.ag-icon-eye:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eeye%3C/title%3E%3Cpath d='M16 8.222c-5.186 0-9.614 3.225-11.408 7.778 1.794 4.553 6.222 7.778 11.408 7.778S25.614 20.553 27.408 16C25.614 11.447 21.186 8.222 16 8.222m0 12.964c-2.862 0-5.186-2.324-5.186-5.186s2.324-5.186 5.186-5.186 5.186 2.324 5.186 5.186-2.324 5.186-5.186 5.186m0-8.297c-1.721 0-3.111 1.39-3.111 3.111s1.39 3.111 3.111 3.111 3.111-1.39 3.111-3.111-1.39-3.111-3.111-3.111'/%3E%3C/svg%3E\")}.ag-icon-filter:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Efilter%3C/title%3E%3Cpath d='M13.333 24h5.333v-2.667h-5.333zM4 8v2.667h24V8zm4 9.333h16v-2.667H8z'/%3E%3C/svg%3E\")}.ag-icon-first:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Efirst%3C/title%3E%3Cpath d='M24.273 22.12 18.153 16l6.12-6.12L22.393 8l-8 8 8 8zM7.727 8h2.667v16H7.727z'/%3E%3C/svg%3E\")}.ag-icon-group:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Egroup%3C/title%3E%3Cpath d='M18.667 21.333h8.889A3.555 3.555 0 0 1 24 24.889h-5.333zm8.888-7.111v3.556h-8.889v-3.556zM24 7.111a3.555 3.555 0 0 1 3.556 3.556h-16V7.111zm-8.889 17.778h-3.556v-3.556h3.556zm0-7.111h-3.556v-3.556h3.556zM8 10.667H4.444A3.555 3.555 0 0 1 8 7.111z'/%3E%3C/svg%3E\")}.ag-icon-last:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Elast%3C/title%3E%3Cpath d='m7.727 9.88 6.12 6.12-6.12 6.12L9.607 24l8-8-8-8zM21.607 8h2.667v16h-2.667z'/%3E%3C/svg%3E\")}.ag-icon-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eleft%3C/title%3E%3Cpath d='M26.667 14.667H10.44l7.453-7.453L16 5.334 5.333 16.001 16 26.668l1.88-1.88-7.44-7.453h16.227v-2.667z'/%3E%3C/svg%3E\")}.ag-icon-linked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Elinked%3C/title%3E%3Cpath d='M5.2 16a4.136 4.136 0 0 1 4.133-4.133h5.333V9.334H9.333c-3.68 0-6.667 2.987-6.667 6.667s2.987 6.667 6.667 6.667h5.333v-2.533H9.333A4.136 4.136 0 0 1 5.2 16.002zm5.467 1.333h10.667v-2.667H10.667zm12-8h-5.333v2.533h5.333c2.28 0 4.133 1.853 4.133 4.133s-1.853 4.133-4.133 4.133h-5.333v2.533h5.333c3.68 0 6.667-2.987 6.667-6.667s-2.987-6.667-6.667-6.667z'/%3E%3C/svg%3E\")}.ag-icon-loading:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eloading%3C/title%3E%3Cpath d='m17.778 11.708 3.25-3.251 2.516 2.516-3.251 3.25h4.597v3.556h-4.597l3.251 3.25-2.516 2.516-3.25-3.251v4.597h-3.556v-4.597l-3.25 3.251-2.516-2.516 3.251-3.25H7.11v-3.556h4.597l-3.251-3.25 2.516-2.516 3.25 3.251V7.111h3.556zm-3.251 7.847h2.944l2.084-2.084v-2.944l-2.084-2.084h-2.944l-2.084 2.084v2.944z'/%3E%3C/svg%3E\")}.ag-icon-maximize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Emaximize%3C/title%3E%3Cpath d='M4 4h24v2.667H4z'/%3E%3C/svg%3E\")}.ag-icon-menu:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Emenu%3C/title%3E%3Cpath d='M4 24h24v-2.667H4zm0-6.667h24v-2.667H4zM4 8v2.667h24V8z'/%3E%3C/svg%3E\")}.ag-icon-menu-alt:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M16 26.667a2.57 2.57 0 0 1-1.883-.784A2.57 2.57 0 0 1 13.333 24q0-1.1.784-1.883A2.57 2.57 0 0 1 16 21.333q1.1 0 1.883.784.784.783.784 1.883t-.784 1.883a2.57 2.57 0 0 1-1.883.784m0-8a2.57 2.57 0 0 1-1.883-.784A2.57 2.57 0 0 1 13.333 16q0-1.1.784-1.883A2.57 2.57 0 0 1 16 13.333q1.1 0 1.883.784.784.783.784 1.883t-.784 1.883a2.57 2.57 0 0 1-1.883.784m0-8a2.57 2.57 0 0 1-1.883-.784A2.57 2.57 0 0 1 13.333 8q0-1.1.784-1.883A2.57 2.57 0 0 1 16 5.333q1.1 0 1.883.784.784.783.784 1.883t-.784 1.883a2.57 2.57 0 0 1-1.883.784'/%3E%3C/svg%3E\")}.ag-icon-minimize:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eminimize%3C/title%3E%3Cpath d='M8 25.333h16V28H8z'/%3E%3C/svg%3E\")}.ag-icon-minus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6.572 6.572a13.32 13.32 0 0 0 0 18.856 13.32 13.32 0 0 0 18.856 0 13.32 13.32 0 0 0 0-18.856 13.32 13.32 0 0 0-18.856 0m17.527 8.099v2.658H7.901v-2.658z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-next:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enext%3C/title%3E%3Cpath d='m12.94 8-1.88 1.88L17.167 16l-6.107 6.12L12.94 24l8-8z'/%3E%3C/svg%3E\")}.ag-icon-none:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enone%3C/title%3E%3Cpath d='M4 24h16v-2.667H4zM4 8v2.667h24V8zm0 9.333h24v-2.667H4z'/%3E%3C/svg%3E\")}.ag-icon-not-allowed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Enot-allowed%3C/title%3E%3Cpath d='M16 2.667C8.64 2.667 2.667 8.64 2.667 16S8.64 29.333 16 29.333 29.333 23.36 29.333 16 23.36 2.667 16 2.667M5.333 16c0-5.893 4.773-10.667 10.667-10.667 2.467 0 4.733.84 6.533 2.253L7.586 22.533A10.54 10.54 0 0 1 5.333 16M16 26.667c-2.467 0-4.733-.84-6.533-2.253L24.414 9.467A10.54 10.54 0 0 1 26.667 16c0 5.893-4.773 10.667-10.667 10.667'/%3E%3C/svg%3E\")}.ag-icon-paste:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epaste%3C/title%3E%3Cpath d='M25.333 4H19.76C19.2 2.453 17.733 1.333 16 1.333S12.8 2.453 12.24 4H6.667A2.675 2.675 0 0 0 4 6.667V28c0 1.467 1.2 2.667 2.667 2.667h18.667c1.467 0 2.667-1.2 2.667-2.667V6.667C28.001 5.2 26.801 4 25.334 4zM16 4c.733 0 1.333.6 1.333 1.333s-.6 1.333-1.333 1.333-1.333-.6-1.333-1.333S15.267 4 16 4m9.333 24H6.666V6.667h2.667v4h13.333v-4h2.667z'/%3E%3C/svg%3E\")}.ag-icon-pin:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epin%3C/title%3E%3Cpath d='m11.106 22.093-4.444 4.444-1.259-1.259 4.444-4.444zm5.872-16.63 9.618 9.62-.962.962-.962-.962-7.694 3.847 1.924 1.924-2.74 2.74-7.696-7.696 2.741-2.74 1.924 1.925 3.847-7.696-.962-.962z'/%3E%3C/svg%3E\")}.ag-icon-pivot:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Epivot%3C/title%3E%3Cpath d='M26.667 30.223H5.334a3.556 3.556 0 0 1-3.556-3.556V5.334a3.556 3.556 0 0 1 3.556-3.556h21.333a3.556 3.556 0 0 1 3.556 3.556v21.333a3.556 3.556 0 0 1-3.556 3.556m-16-8.89H5.334v5.333h5.333zm16-7.11H12.444v12.444h14.223zm-9.15 6.85-2.039 2.037 2.039 2.039-1.257 1.257-3.295-3.296 3.295-3.295q.63.628 1.257 1.257zm-6.85-6.85H5.334v5.333h5.333zm15.74 3.816-1.257 1.256-2.039-2.037-2.037 2.037-1.257-1.256 3.295-3.296zM10.667 5.333H5.334v5.333h5.333zm8.889 0h-7.112v5.333h7.112zm7.111 0h-5.333v5.333h5.333z'/%3E%3C/svg%3E\")}.ag-icon-plus:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 32 32'%3E%3Cpath d='M6.572 6.572a13.32 13.32 0 0 0 0 18.856 13.32 13.32 0 0 0 18.856 0 13.32 13.32 0 0 0 0-18.856 13.32 13.32 0 0 0-18.856 0m17.527 8.099v2.658h-6.77v6.77h-2.658v-6.77h-6.77v-2.658h6.77v-6.77h2.658v6.77z' style='fill-rule:nonzero'/%3E%3C/svg%3E\")}.ag-icon-previous:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eprevious%3C/title%3E%3Cpath d='M20.94 9.88 19.06 8l-8 8 8 8 1.88-1.88L14.833 16z'/%3E%3C/svg%3E\")}.ag-icon-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eright%3C/title%3E%3Cpath d='m16 5.333-1.88 1.88 7.44 7.453H5.333v2.667H21.56l-7.44 7.453 1.88 1.88 10.667-10.667L16 5.332z'/%3E%3C/svg%3E\")}.ag-icon-save:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esave%3C/title%3E%3Cpath d='M25.333 16v9.333H6.666V16H3.999v9.333C3.999 26.8 5.199 28 6.666 28h18.667C26.8 28 28 26.8 28 25.333V16zm-8 .893 3.453-3.44 1.88 1.88L15.999 22l-6.667-6.667 1.88-1.88 3.453 3.44V4h2.667v12.893z'/%3E%3C/svg%3E\")}.ag-icon-small-down:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-down%3C/title%3E%3Cpath d='M9.333 12.667 16 19.334l6.667-6.667H9.334z'/%3E%3C/svg%3E\")}.ag-icon-small-left:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-left%3C/title%3E%3Cpath d='M19.333 9.333 12.666 16l6.667 6.667V9.334z'/%3E%3C/svg%3E\")}.ag-icon-small-right:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-right%3C/title%3E%3Cpath d='M12.667 22.667 19.334 16l-6.667-6.667v13.333z'/%3E%3C/svg%3E\")}.ag-icon-small-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Esmall-up%3C/title%3E%3Cpath d='M9.333 19.333 16 12.666l6.667 6.667H9.334z'/%3E%3C/svg%3E\")}.ag-icon-tick:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etick%3C/title%3E%3Cpath d='m11.727 21.167-5.56-5.56-1.893 1.88 7.453 7.453 16-16-1.88-1.88z'/%3E%3C/svg%3E\")}.ag-icon-tree-closed:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-closed%3C/title%3E%3Cpath d='m12.94 8-1.88 1.88L17.167 16l-6.107 6.12L12.94 24l8-8z'/%3E%3C/svg%3E\")}.ag-icon-tree-indeterminate:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-indeterminate%3C/title%3E%3Cpath d='M6.667 14.667h18.667v2.667H6.667z'/%3E%3C/svg%3E\")}.ag-icon-tree-open:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Etree-open%3C/title%3E%3Cpath d='M22.12 11.06 16 17.167 9.88 11.06 8 12.94l8 8 8-8z'/%3E%3C/svg%3E\")}.ag-icon-unlinked:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Eunlinked%3C/title%3E%3Cpath d='M22.667 9.333h-5.333v2.533h5.333a4.136 4.136 0 0 1 4.133 4.133c0 1.907-1.307 3.507-3.08 3.973l1.947 1.947c2.173-1.107 3.667-3.32 3.667-5.92a6.67 6.67 0 0 0-6.667-6.667zm-1.334 5.334h-2.92l2.667 2.667h.253zM2.667 5.693 6.814 9.84A6.65 6.65 0 0 0 2.667 16a6.67 6.67 0 0 0 6.667 6.667h5.333v-2.533H9.334a4.136 4.136 0 0 1-4.133-4.133c0-2.12 1.613-3.867 3.68-4.093l2.76 2.76h-.973v2.667h3.64l3.027 3.027v2.307h2.307l5.347 5.333 1.68-1.68L4.362 4.002 2.669 5.695z'/%3E%3C/svg%3E\")}.ag-icon-up:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Easc%3C/title%3E%3Cpath d='m5.333 16 1.88 1.88 7.453-7.44v16.227h2.667V10.44l7.44 7.453L26.666 16 15.999 5.333z'/%3E%3C/svg%3E\")}.ag-icon-grip:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ctitle%3Egrip%3C/title%3E%3Cpath d='M26.667 12H5.334v2.667h21.333zM5.333 20h21.333v-2.667H5.333z'/%3E%3C/svg%3E\")}.ag-icon-settings:before{mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' fill='none' viewBox='0 0 32 32'%3E%3Cpath fill='%23000' d='M30 8h-4.1c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2v2h14.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30zm-9 4c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3M2 24h4.1c.5 2.3 2.5 4 4.9 4s4.4-1.7 4.9-4H30v-2H15.9c-.5-2.3-2.5-4-4.9-4s-4.4 1.7-4.9 4H2zm9-4c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3'/%3E%3C/svg%3E\")}`\n);\n\n// packages/ag-grid-community/src/theming/parts/icon-set/material/icon-set-material.ts\nvar iconSetMaterial = /* @__PURE__ */ createPart({\n feature: \"iconSet\",\n css: iconSetMaterialCSS\n});\n\n// packages/ag-grid-community/src/theming/parts/icon-set/overrides/icon-overrides.ts\nvar iconOverrides = (args) => {\n const cssParts = [];\n if (args.type === \"image\") {\n const { icons, mask } = args;\n for (const key of Object.keys(icons)) {\n const imageCssValue = imageValueToCss(icons[key]);\n if (mask) {\n cssParts.push(`.ag-icon-${key}::before { mask-image: ${imageCssValue}; }`);\n } else {\n cssParts.push(`.ag-icon-${key}::before { background-image: ${imageCssValue}; ${unsetMaskIcon} }`);\n }\n }\n }\n if (args.type === \"font\") {\n const { family, weight, color, icons } = args;\n let properties = unsetMaskIcon;\n if (family) {\n properties += ` font-family: ${fontFamilyValueToCss(family)};`;\n }\n if (weight) {\n properties += ` font-weight: ${fontWeightValueToCss(weight)};`;\n }\n if (color) {\n properties += ` color: ${colorValueToCss(color)};`;\n }\n for (const key of Object.keys(icons)) {\n cssParts.push(`.ag-icon-${key}::before { content: ${JSON.stringify(icons[key])}; ${properties} }`);\n }\n }\n return createPart({\n css: cssParts.join(\";\\n\"),\n cssImports: args.cssImports\n });\n};\nvar unsetMaskIcon = `background-color: unset; mask-image: unset; -webkit-mask-image: unset;`;\n\n// packages/ag-grid-community/src/theming/parts/icon-set/quartz/quartz-icon-data.ts\nvar iconNameToSvgFragment = {\n aggregation: '<path d=\"M18 7V4H6l6 8-6 8h12v-3\"/>',\n arrows: '<polyline points=\"5 9 2 12 5 15\"/><polyline points=\"9 5 12 2 15 5\"/><polyline points=\"15 19 12 22 9 19\"/><polyline points=\"19 9 22 12 19 15\"/><line x1=\"2\" x2=\"22\" y1=\"12\" y2=\"12\"/><line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"22\"/>',\n asc: '<path d=\"m5 12 7-7 7 7\"/><path d=\"M12 19V5\"/>',\n cancel: '<path d=\"m18 6-12 12\"/><path d=\"m6 6 12 12\"/>',\n chart: '<line x1=\"18\" x2=\"18\" y1=\"20\" y2=\"10\"/><line x1=\"12\" x2=\"12\" y1=\"20\" y2=\"4\"/><line x1=\"6\" x2=\"6\" y1=\"20\" y2=\"14\"/>',\n \"color-picker\": '<path d=\"m19 11-8-8-8.6 8.6a2 2 0 0 0 0 2.8l5.2 5.2c.8.8 2 .8 2.8 0L19 11Z\"/><path d=\"m5 2 5 5\"/><path d=\"M2 13h15\"/><path d=\"M22 20a2 2 0 1 1-4 0c0-1.6 1.7-2.4 2-4 .3 1.6 2 2.4 2 4Z\"/>',\n columns: '<path d=\"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\"/>',\n contracted: '<path d=\"m9 18 6-6-6-6\"/>',\n copy: '<rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>',\n cross: '<path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>',\n csv: '<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/><polyline points=\"14 2 14 8 20 8\"/><path d=\"M8 13h2\"/><path d=\"M8 17h2\"/><path d=\"M14 13h2\"/><path d=\"M14 17h2\"/>',\n cut: '<circle cx=\"6\" cy=\"6\" r=\"3\"/><path d=\"M8.12 8.12 12 12\"/><path d=\"M20 4 8.12 15.88\"/><circle cx=\"6\" cy=\"18\" r=\"3\"/><path d=\"M14.8 14.8 20 20\"/>',\n desc: '<path d=\"M12 5v14\"/><path d=\"m19 12-7 7-7-7\"/>',\n down: '<path d=\"M12 5v14\"/><path d=\"m19 12-7 7-7-7\"/>',\n excel: '<path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"/><polyline points=\"14 2 14 8 20 8\"/><path d=\"M8 13h2\"/><path d=\"M8 17h2\"/><path d=\"M14 13h2\"/><path d=\"M14 17h2\"/>',\n expanded: '<path d=\"m15 18-6-6 6-6\"/>',\n \"eye-slash\": '<path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\"/><path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\"/><path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\"/><line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\"/>',\n eye: '<path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>',\n filter: '<path d=\"M3 6h18\"/><path d=\"M7 12h10\"/><path d=\"M10 18h4\"/>',\n first: '<path d=\"m17 18-6-6 6-6\"/><path d=\"M7 6v12\"/>',\n group: '<path d=\"M16 12H3\"/><path d=\"M16 18H3\"/><path d=\"M10 6H3\"/><path d=\"M21 18V8a2 2 0 0 0-2-2h-5\"/><path d=\"m16 8-2-2 2-2\"/>',\n last: '<path d=\"m7 18 6-6-6-6\"/><path d=\"M17 6v12\"/>',\n left: '<path d=\"m12 19-7-7 7-7\"/><path d=\"M19 12H5\"/>',\n linked: '<path d=\"M9 17H7A5 5 0 0 1 7 7h2\"/><path d=\"M15 7h2a5 5 0 1 1 0 10h-2\"/><line x1=\"8\" x2=\"16\" y1=\"12\" y2=\"12\"/>',\n loading: '<line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"6\"/><line x1=\"12\" x2=\"12\" y1=\"18\" y2=\"22\"/><line x1=\"4.93\" x2=\"7.76\" y1=\"4.93\" y2=\"7.76\"/><line x1=\"16.24\" x2=\"19.07\" y1=\"16.24\" y2=\"19.07\"/><line x1=\"2\" x2=\"6\" y1=\"12\" y2=\"12\"/><line x1=\"18\" x2=\"22\" y1=\"12\" y2=\"12\"/><line x1=\"4.93\" x2=\"7.76\" y1=\"19.07\" y2=\"16.24\"/><line x1=\"16.24\" x2=\"19.07\" y1=\"7.76\" y2=\"4.93\"/>',\n maximize: '<polyline points=\"15 3 21 3 21 9\"/><polyline points=\"9 21 3 21 3 15\"/><line x1=\"21\" x2=\"14\" y1=\"3\" y2=\"10\"/><line x1=\"3\" x2=\"10\" y1=\"21\" y2=\"14\"/>',\n menu: '<line x1=\"4\" x2=\"20\" y1=\"12\" y2=\"12\"/><line x1=\"4\" x2=\"20\" y1=\"6\" y2=\"6\"/><line x1=\"4\" x2=\"20\" y1=\"18\" y2=\"18\"/>',\n \"menu-alt\": '<circle cx=\"12\" cy=\"5\" r=\"0.75\" fill=\"#D9D9D9\"/><circle cx=\"12\" cy=\"12\" r=\"0.75\" fill=\"#D9D9D9\"/><circle cx=\"12\" cy=\"19\" r=\"0.75\" fill=\"#D9D9D9\"/>',\n minimize: '<polyline points=\"4 14 10 14 10 20\"/><polyline points=\"20 10 14 10 14 4\"/><line x1=\"14\" x2=\"21\" y1=\"10\" y2=\"3\"/><line x1=\"3\" x2=\"10\" y1=\"21\" y2=\"14\"/>',\n minus: '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M8 12h8\"/>',\n next: '<path d=\"m9 18 6-6-6-6\"/>',\n none: '<path d=\"m7 15 5 5 5-5\"/><path d=\"m7 9 5-5 5 5\"/>',\n \"not-allowed\": '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m4.9 4.9 14.2 14.2\"/>',\n paste: '<path d=\"M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z\"/><path d=\"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10\"/><path d=\"m17 10 4 4-4 4\"/>',\n pin: '<line x1=\"12\" x2=\"12\" y1=\"17\" y2=\"22\"/><path d=\"M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z\"/>',\n pivot: '<path d=\"M15 3v18\"/><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"/><path d=\"M21 9H3\"/><path d=\"M21 15H3\"/>',\n plus: '<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M8 12h8\"/><path d=\"M12 8v8\"/>',\n previous: '<path d=\"m15 18-6-6 6-6\"/>',\n right: '<path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/>',\n save: '<path d=\"M12 17V3\"/><path d=\"m6 11 6 6 6-6\"/><path d=\"M19 21H5\"/>',\n \"small-left\": '<path d=\"m15 18-6-6 6-6\"/>',\n \"small-right\": '<path d=\"m9 18 6-6-6-6\"/>',\n tick: '<path d=\"M20 6 9 17l-5-5\"/>',\n \"tree-closed\": '<path d=\"m9 18 6-6-6-6\"/>',\n \"tree-indeterminate\": '<path d=\"M5 12h14\"/>',\n \"tree-open\": '<path d=\"m6 9 6 6 6-6\"/>',\n unlinked: '<path d=\"M9 17H7A5 5 0 0 1 7 7\"/><path d=\"M15 7h2a5 5 0 0 1 4 8\"/><line x1=\"8\" x2=\"12\" y1=\"12\" y2=\"12\"/><line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\"/>',\n up: '<path d=\"m5 12 7-7 7 7\"/><path d=\"M12 19V5\"/>',\n grip: '<circle cx=\"5\" cy=\"8\" r=\"0.5\"/><circle cx=\"12\" cy=\"8\" r=\"0.5\"/><circle cx=\"19\" cy=\"8\" r=\"0.5\"/><circle cx=\"5\" cy=\"16\" r=\"0.5\"/><circle cx=\"12\" cy=\"16\" r=\"0.5\"/><circle cx=\"19\" cy=\"16\" r=\"0.5\"/><g stroke=\"none\" fill=\"currentColor\"><circle cx=\"5\" cy=\"8\" r=\"1\"/><circle cx=\"12\" cy=\"8\" r=\"1\"/><circle cx=\"19\" cy=\"8\" r=\"1\"/><circle cx=\"5\" cy=\"16\" r=\"1\"/><circle cx=\"12\" cy=\"16\" r=\"1\"/><circle cx=\"19\" cy=\"16\" r=\"1\"/></g>',\n settings: '<path d=\"M20 7h-9\"/><path d=\"M14 17H5\"/><circle cx=\"17\" cy=\"17\" r=\"3\"/><circle cx=\"7\" cy=\"7\" r=\"3\"/>'\n};\nvar iconNameToFullSvg = {\n \"small-down\": '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ag-icon\" fill=\"black\" stroke=\"none\" viewBox=\"0 0 32 32\"><path d=\"M7.334 10.667 16 21.334l8.667-10.667H7.334Z\"/></svg>',\n \"small-up\": '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ag-icon\" fill=\"black\" stroke=\"none\" viewBox=\"0 0 32 32\"><path d=\"M7.334 21.333 16 10.666l8.667 10.667H7.334Z\"/></svg>'\n};\nvar getQuartzIconsCss = (args = {}) => {\n let result = \"\";\n for (const iconName of [...Object.keys(iconNameToSvgFragment), ...Object.keys(iconNameToFullSvg)]) {\n const iconSvg = quartzIconSvg(iconName, args.strokeWidth);\n result += `.ag-icon-${iconName}::before { mask-image: url('data:image/svg+xml,${encodeURIComponent(iconSvg)}'); }\n`;\n }\n return result;\n};\nvar quartzIconSvg = (name, strokeWidth = 1.5) => {\n const fullSVG = iconNameToFullSvg[name];\n if (fullSVG)\n return fullSVG;\n const svgFragment = iconNameToSvgFragment[name];\n if (!svgFragment)\n throw new Error(`Missing icon data for ${name}`);\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"ag-icon\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke=\"black\" stroke-width=\"${strokeWidth}\" viewBox=\"0 0 24 24\"><style>* { vector-effect: non-scaling-stroke; }</style>` + svgFragment + \"</svg>\";\n};\n\n// packages/ag-grid-community/src/theming/parts/icon-set/quartz/icon-set-quartz.ts\nvar iconSetQuartz = (args = {}) => {\n return createPart({\n feature: \"iconSet\",\n css: () => getQuartzIconsCss(args)\n });\n};\nvar iconSetQuartzLight = /* @__PURE__ */ iconSetQuartz({ strokeWidth: 1 });\nvar iconSetQuartzRegular = /* @__PURE__ */ iconSetQuartz();\nvar iconSetQuartzBold = /* @__PURE__ */ iconSetQuartz({ strokeWidth: 2 });\n\n// packages/ag-grid-community/src/theming/parts/input-style/input-style-base.css-GENERATED.ts\nvar inputStyleBaseCSS = (\n /*css*/\n `:where(.ag-input-field-input[type=number]:not(.ag-number-field-input-stepper)){-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;&::-webkit-inner-spin-button,&::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}}:where(input.ag-input-field-input:not([type]),input.ag-input-field-input[type=text],input.ag-input-field-input[type=number],input.ag-input-field-input[type=tel],input.ag-input-field-input[type=date],input.ag-input-field-input[type=datetime-local],textarea.ag-input-field-input){background-color:var(--ag-input-background-color);border:var(--ag-input-border);border-radius:var(--ag-input-border-radius);color:var(--ag-input-text-color);font-family:inherit;font-size:inherit;line-height:inherit;margin:0;min-height:var(--ag-input-height);padding:0;&:where(:disabled){background-color:var(--ag-input-disabled-background-color);border:var(--ag-input-disabled-border);color:var(--ag-input-disabled-text-color)}&:where(:focus){background-color:var(--ag-input-focus-background-color);border:var(--ag-input-focus-border);box-shadow:var(--ag-input-focus-shadow);color:var(--ag-input-focus-text-color);outline:none}&:where(:invalid){background-color:var(--ag-input-invalid-background-color);border:var(--ag-input-invalid-border);color:var(--ag-input-invalid-text-color)}&:where(.invalid){background-color:var(--ag-input-invalid-background-color);border:var(--ag-input-invalid-border);color:var(--ag-input-invalid-text-color)}&::-moz-placeholder{color:var(--ag-input-placeholder-text-color)}&::placeholder{color:var(--ag-input-placeholder-text-color)}}:where(.ag-ltr) :where(input.ag-input-field-input:not([type]),input.ag-input-field-input[type=text],input.ag-input-field-input[type=number],input.ag-input-field-input[type=tel],input.ag-input-field-input[type=date],input.ag-input-field-input[type=datetime-local],textarea.ag-input-field-input){padding-left:var(--ag-input-padding-start)}:where(.ag-rtl) :where(input.ag-input-field-input:not([type]),input.ag-input-field-input[type=text],input.ag-input-field-input[type=number],input.ag-input-field-input[type=tel],input.ag-input-field-input[type=date],input.ag-input-field-input[type=datetime-local],textarea.ag-input-field-input){padding-right:var(--ag-input-padding-start)}:where(.ag-column-select-header-filter-wrapper,.ag-filter-toolpanel-search,.ag-mini-filter,.ag-filter-filter){.ag-input-wrapper:before{background-color:currentcolor;color:var(--ag-input-icon-color);content:\"\";display:block;height:12px;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNNS4zIDlhMy43IDMuNyAwIDEgMCAwLTcuNSAzLjcgMy43IDAgMCAwIDAgNy41Wk0xMC41IDEwLjUgOC4zIDguMiIvPjwvc3ZnPg==\");mask-image:url(\"data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNNS4zIDlhMy43IDMuNyAwIDEgMCAwLTcuNSAzLjcgMy43IDAgMCAwIDAgNy41Wk0xMC41IDEwLjUgOC4zIDguMiIvPjwvc3ZnPg==\");-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;opacity:.5;position:absolute;width:12px}}:where(.ag-ltr) :where(.ag-column-select-header-filter-wrapper,.ag-filter-toolpanel-search,.ag-mini-filter,.ag-filter-filter){.ag-input-wrapper:before{margin-left:var(--ag-spacing)}.ag-number-field-input,.ag-text-field-input{padding-left:calc(var(--ag-spacing)*1.5 + 12px)}}:where(.ag-rtl) :where(.ag-column-select-header-filter-wrapper,.ag-filter-toolpanel-search,.ag-mini-filter,.ag-filter-filter){.ag-input-wrapper:before{margin-right:var(--ag-spacing)}.ag-number-field-input,.ag-text-field-input{padding-right:calc(var(--ag-spacing)*1.5 + 12px)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/input-style/input-style-bordered.css-GENERATED.ts\nvar inputStyleBorderedCSS = (\n /*css*/\n `:where(input.ag-input-field-input:not([type]),input.ag-input-field-input[type=text],input.ag-input-field-input[type=number],input.ag-input-field-input[type=tel],input.ag-input-field-input[type=date],input.ag-input-field-input[type=datetime-local],textarea.ag-input-field-input){&:focus{box-shadow:var(--ag-focus-shadow)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/input-style/input-style-underlined.css-GENERATED.ts\nvar inputStyleUnderlinedCSS = (\n /*css*/\n `:where(input.ag-input-field-input:not([type]),input.ag-input-field-input[type=text],input.ag-input-field-input[type=number],input.ag-input-field-input[type=tel],input.ag-input-field-input[type=date],input.ag-input-field-input[type=datetime-local],textarea.ag-input-field-input){border-left:none;border-right:none;border-top:none}`\n);\n\n// packages/ag-grid-community/src/theming/parts/input-style/input-styles.ts\nvar baseParams2 = {\n inputBackgroundColor: \"transparent\",\n inputBorder: false,\n inputBorderRadius: 0,\n inputTextColor: {\n ref: \"textColor\"\n },\n inputPlaceholderTextColor: {\n ref: \"inputTextColor\",\n mix: 0.5\n },\n inputPaddingStart: 0,\n inputHeight: {\n calc: \"max(iconSize, fontSize) + spacing * 2\"\n },\n inputFocusBackgroundColor: {\n ref: \"inputBackgroundColor\"\n },\n inputFocusBorder: {\n ref: \"inputBorder\"\n },\n inputFocusShadow: \"none\",\n inputFocusTextColor: {\n ref: \"inputTextColor\"\n },\n inputDisabledBackgroundColor: {\n ref: \"inputBackgroundColor\"\n },\n inputDisabledBorder: {\n ref: \"inputBorder\"\n },\n inputDisabledTextColor: {\n ref: \"inputTextColor\"\n },\n inputInvalidBackgroundColor: {\n ref: \"inputBackgroundColor\"\n },\n inputInvalidBorder: {\n ref: \"inputBorder\"\n },\n inputInvalidTextColor: {\n ref: \"inputTextColor\"\n },\n inputIconColor: {\n ref: \"inputTextColor\"\n },\n pickerButtonBorder: false,\n pickerButtonFocusBorder: { ref: \"inputFocusBorder\" },\n pickerButtonBackgroundColor: { ref: \"backgroundColor\" },\n pickerButtonFocusBackgroundColor: { ref: \"backgroundColor\" },\n pickerListBorder: false,\n pickerListBackgroundColor: { ref: \"backgroundColor\" }\n};\nvar makeInputStyleBaseTreeShakeable = () => createPart({\n feature: \"inputStyle\",\n params: baseParams2,\n css: inputStyleBaseCSS\n});\nvar inputStyleBase = /* @__PURE__ */ makeInputStyleBaseTreeShakeable();\nvar makeInputStyleBorderedTreeShakeable = () => createPart({\n feature: \"inputStyle\",\n params: {\n ...baseParams2,\n inputBackgroundColor: backgroundColor,\n inputBorder: true,\n inputBorderRadius: {\n ref: \"borderRadius\"\n },\n inputPaddingStart: {\n ref: \"spacing\"\n },\n inputFocusBorder: {\n color: accentColor\n },\n inputFocusShadow: {\n ref: \"focusShadow\"\n },\n inputDisabledBackgroundColor: foregroundBackgroundMix(0.06),\n inputDisabledTextColor: {\n ref: \"textColor\",\n mix: 0.5\n },\n inputInvalidBorder: {\n color: { ref: \"invalidColor\" }\n },\n pickerButtonBorder: true,\n pickerListBorder: true\n },\n css: () => inputStyleBaseCSS + inputStyleBorderedCSS\n});\nvar inputStyleBordered = /* @__PURE__ */ makeInputStyleBorderedTreeShakeable();\nvar makeInputStyleUnderlinedTreeShakeable = () => createPart({\n feature: \"inputStyle\",\n params: {\n ...baseParams2,\n inputBackgroundColor: \"transparent\",\n inputBorder: {\n width: 2,\n color: foregroundMix(0.3)\n },\n inputPaddingStart: {\n ref: \"spacing\"\n },\n inputFocusBorder: \"solid 2px var(--ag-accent-color)\",\n inputDisabledTextColor: {\n ref: \"textColor\",\n mix: 0.5\n },\n inputDisabledBorder: \"solid 1px var(--ag-border-color)\",\n inputInvalidBorder: {\n width: 2,\n color: {\n ref: \"invalidColor\",\n mix: 0.3\n }\n }\n },\n css: () => inputStyleBaseCSS + inputStyleUnderlinedCSS\n});\nvar inputStyleUnderlined = /* @__PURE__ */ makeInputStyleUnderlinedTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/tab-style/tab-style-base.css-GENERATED.ts\nvar tabStyleBaseCSS = (\n /*css*/\n `.ag-tabs-header{background-color:var(--ag-tab-bar-background-color);border-bottom:var(--ag-tab-bar-border);display:flex;flex:1;gap:var(--ag-tab-spacing);padding:var(--ag-tab-bar-top-padding) var(--ag-tab-bar-horizontal-padding) 0}.ag-tabs-header-wrapper{display:flex}.ag-tabs-close-button-wrapper{align-items:center;border:0;display:flex;padding:var(--ag-spacing)}:where(.ag-ltr) .ag-tabs-close-button-wrapper{border-right:1px solid var(--ag-border-color)}:where(.ag-rtl) .ag-tabs-close-button-wrapper{border-left:1px solid var(--ag-border-color)}.ag-tabs-close-button{background-color:unset;border:0;cursor:pointer;padding:0}.ag-tab{align-items:center;background-color:var(--ag-tab-background-color);border-left:var(--ag-tab-selected-border-width) solid transparent;border-right:var(--ag-tab-selected-border-width) solid transparent;color:var(--ag-tab-text-color);cursor:pointer;display:flex;flex:1;justify-content:center;padding:var(--ag-tab-top-padding) var(--ag-tab-horizontal-padding) var(--ag-tab-bottom-padding);position:relative;&:hover{background-color:var(--ag-tab-hover-background-color);color:var(--ag-tab-hover-text-color)}&.ag-tab-selected{background-color:var(--ag-tab-selected-background-color);color:var(--ag-tab-selected-text-color)}&:after{background-color:var(--ag-tab-selected-underline-color);bottom:0;content:\"\";display:block;height:var(--ag-tab-selected-underline-width);left:0;opacity:0;position:absolute;right:0;transition:opacity var(--ag-tab-selected-underline-transition-duration)}&.ag-tab-selected:after{opacity:1}}:where(.ag-ltr) .ag-tab{&.ag-tab-selected{&:where(:not(:first-of-type)){border-left-color:var(--ag-tab-selected-border-color)}&:where(:not(:last-of-type)){border-right-color:var(--ag-tab-selected-border-color)}}}:where(.ag-rtl) .ag-tab{&.ag-tab-selected{&:where(:not(:first-of-type)){border-right-color:var(--ag-tab-selected-border-color)}&:where(:not(:last-of-type)){border-left-color:var(--ag-tab-selected-border-color)}}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/tab-style/tab-style-rolodex.css-GENERATED.ts\nvar tabStyleRolodexCSS = (\n /*css*/\n `.ag-tab{border-left:var(--ag-tab-selected-border-width) solid transparent;border-right:var(--ag-tab-selected-border-width) solid transparent;border-top:var(--ag-tab-selected-border-width) solid transparent;flex:none;&.ag-tab-selected{border-left-color:var(--ag-tab-selected-border-color);border-right-color:var(--ag-tab-selected-border-color);border-top-color:var(--ag-tab-selected-border-color);margin-bottom:-1px;padding-bottom:calc(var(--ag-tab-bottom-padding) + 1px)}}`\n);\n\n// packages/ag-grid-community/src/theming/parts/tab-style/tab-styles.ts\nvar baseParams3 = {\n tabBarBackgroundColor: \"transparent\",\n tabBarHorizontalPadding: 0,\n tabBarTopPadding: 0,\n tabBackgroundColor: \"transparent\",\n tabTextColor: {\n ref: \"textColor\"\n },\n tabHorizontalPadding: {\n ref: \"spacing\"\n },\n tabTopPadding: {\n ref: \"spacing\"\n },\n tabBottomPadding: {\n ref: \"spacing\"\n },\n tabSpacing: \"0\",\n tabHoverBackgroundColor: {\n ref: \"tabBackgroundColor\"\n },\n tabHoverTextColor: {\n ref: \"tabTextColor\"\n },\n tabSelectedBackgroundColor: {\n ref: \"tabBackgroundColor\"\n },\n tabSelectedTextColor: {\n ref: \"tabTextColor\"\n },\n tabSelectedBorderWidth: 1,\n tabSelectedBorderColor: \"transparent\",\n tabSelectedUnderlineColor: \"transparent\",\n tabSelectedUnderlineWidth: 0,\n tabSelectedUnderlineTransitionDuration: 0,\n tabBarBorder: false\n};\nvar makeTabStyleBaseTreeShakeable = () => createPart({\n feature: \"tabStyle\",\n params: baseParams3,\n css: tabStyleBaseCSS\n});\nvar tabStyleBase = /* @__PURE__ */ makeTabStyleBaseTreeShakeable();\nvar makeTabStyleQuartzTreeShakeable = () => createPart({\n feature: \"tabStyle\",\n params: {\n ...baseParams3,\n tabBarBorder: true,\n tabBarBackgroundColor: foregroundMix(0.05),\n tabTextColor: {\n ref: \"textColor\",\n mix: 0.7\n },\n tabSelectedTextColor: {\n ref: \"textColor\"\n },\n tabHoverTextColor: {\n ref: \"textColor\"\n },\n tabSelectedBorderColor: {\n ref: \"borderColor\"\n },\n tabSelectedBackgroundColor: backgroundColor\n },\n css: tabStyleBaseCSS\n});\nvar tabStyleQuartz = /* @__PURE__ */ makeTabStyleQuartzTreeShakeable();\nvar makeTabStyleMaterialTreeShakeable = () => createPart({\n feature: \"tabStyle\",\n params: {\n ...baseParams3,\n tabBarBackgroundColor: {\n ref: \"chromeBackgroundColor\"\n },\n tabSelectedUnderlineColor: {\n ref: \"primaryColor\"\n },\n tabSelectedUnderlineWidth: 2,\n tabSelectedUnderlineTransitionDuration: 0\n },\n css: tabStyleBaseCSS\n});\nvar tabStyleMaterial = /* @__PURE__ */ makeTabStyleMaterialTreeShakeable();\nvar makeTabStyleAlpineTreeShakeable = () => createPart({\n feature: \"tabStyle\",\n params: {\n ...baseParams3,\n tabBarBorder: true,\n tabBarBackgroundColor: {\n ref: \"chromeBackgroundColor\"\n },\n tabHoverTextColor: accentColor,\n tabSelectedTextColor: accentColor,\n tabSelectedUnderlineColor: accentColor,\n tabSelectedUnderlineWidth: 2,\n tabSelectedUnderlineTransitionDuration: \"0.3s\"\n },\n css: tabStyleBaseCSS\n});\nvar tabStyleAlpine = /* @__PURE__ */ makeTabStyleAlpineTreeShakeable();\nvar makeTabStyleRolodexTreeShakeable = () => createPart({\n feature: \"tabStyle\",\n params: {\n ...baseParams3,\n tabBarBackgroundColor: {\n ref: \"chromeBackgroundColor\"\n },\n tabBarHorizontalPadding: {\n ref: \"spacing\"\n },\n tabBarTopPadding: {\n ref: \"spacing\"\n },\n tabBarBorder: true,\n tabHorizontalPadding: { calc: \"spacing * 2\" },\n tabTopPadding: {\n ref: \"spacing\"\n },\n tabBottomPadding: {\n ref: \"spacing\"\n },\n tabSpacing: {\n ref: \"spacing\"\n },\n tabSelectedBorderColor: {\n ref: \"borderColor\"\n },\n tabSelectedBackgroundColor: backgroundColor\n },\n css: () => tabStyleBaseCSS + tabStyleRolodexCSS\n});\nvar tabStyleRolodex = /* @__PURE__ */ makeTabStyleRolodexTreeShakeable();\n\n// packages/ag-grid-community/src/theming/parts/theme/material-adjustments.css-GENERATED.ts\nvar materialAdjustmentsCSS = (\n /*css*/\n `.ag-dnd-ghost,.ag-filter-toolpanel-header,.ag-filter-toolpanel-search,.ag-header-row,.ag-multi-filter-group-title-bar,.ag-panel-title-bar-title,.ag-status-bar{color:var(--ag-header-text-color);font-size:calc(var(--ag-font-size) - 1px);font-weight:600}.ag-column-drop-horizontal{background-color:color-mix(in srgb,var(--ag-background-color),var(--ag-foreground-color) 8%)}.ag-cell.ag-cell-inline-editing{background-color:var(--ag-background-color);background-image:linear-gradient(0deg,var(--ag-input-background-color),var(--ag-input-background-color));border:var(--ag-input-border)!important;border-width:1px!important;height:calc(var(--ag-row-height) + var(--ag-spacing)*3);padding:var(--ag-spacing);:where(.ag-row-last:not(.ag-row-first)) &{bottom:0}:where(.ag-has-focus) &{border:var(--ag-input-focus-border)!important;border-width:1px!important}}.ag-advanced-filter-builder-button,.ag-standard-button{text-transform:uppercase}.ag-status-bar{border:1px solid var(--ag-border-color)}.ag-list-item-hovered:after{background-color:var(--ag-primary-color)}.ag-pill-button:hover{color:var(--ag-primary-color)}.ag-header-highlight-after:after,.ag-header-highlight-before:after{background-color:var(--ag-primary-color)}`\n);\n\n// packages/ag-grid-community/src/theming/parts/theme/themes.ts\nvar makeThemeQuartzTreeShakeable = () => createTheme().withPart(checkboxStyleDefault).withPart(colorSchemeVariable).withPart(iconSetQuartzRegular).withPart(tabStyleQuartz).withPart(inputStyleBordered).withPart(columnDropStyleBordered).withParams({\n fontFamily: [\n { googleFont: \"IBM Plex Sans\" },\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n \"Segoe UI\",\n \"Roboto\",\n \"Oxygen-Sans\",\n \"Ubuntu\"\n ]\n});\nvar themeQuartz = /* @__PURE__ */ makeThemeQuartzTreeShakeable();\nvar makeThemeAlpineTreeShakeable = () => createTheme().withPart(buttonStyleAlpine).withPart(checkboxStyleDefault).withPart(colorSchemeVariable).withPart(iconSetAlpine).withPart(tabStyleAlpine).withPart(inputStyleBordered).withPart(columnDropStyleBordered).withParams({\n accentColor: \"#2196f3\",\n selectedRowBackgroundColor: accentMix(0.3),\n inputFocusBorder: {\n color: accentMix(0.4)\n },\n focusShadow: { radius: 2, spread: 1.6, color: accentMix(0.4) },\n iconButtonHoverBackgroundColor: \"transparent\",\n iconButtonActiveBackgroundColor: \"transparent\",\n checkboxUncheckedBorderColor: foregroundBackgroundMix(0.45),\n checkboxIndeterminateBackgroundColor: foregroundBackgroundMix(0.45),\n checkboxIndeterminateBorderColor: foregroundBackgroundMix(0.45),\n checkboxBorderWidth: 2,\n checkboxBorderRadius: 2,\n fontSize: 13,\n dataFontSize: 14,\n headerFontWeight: 700,\n borderRadius: 3,\n wrapperBorderRadius: 3,\n tabSelectedUnderlineColor: accentColor,\n tabSelectedBorderWidth: 0,\n tabSelectedUnderlineTransitionDuration: 0.3,\n sideButtonSelectedUnderlineColor: accentColor,\n sideButtonSelectedUnderlineWidth: 2,\n sideButtonSelectedUnderlineTransitionDuration: 0.3,\n sideButtonBorder: false,\n sideButtonSelectedBorder: false,\n sideButtonBarTopPadding: { calc: \"spacing * 3\" },\n sideButtonSelectedBackgroundColor: \"transparent\",\n sideButtonHoverTextColor: accentColor,\n iconButtonHoverColor: accentColor,\n toggleButtonWidth: 28,\n toggleButtonHeight: 18,\n toggleButtonSwitchInset: 1,\n toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.45)\n});\nvar themeAlpine = /* @__PURE__ */ makeThemeAlpineTreeShakeable();\nvar makeThemeBalhamTreeShakeable = () => createTheme().withPart(buttonStyleBalham).withPart(checkboxStyleDefault).withPart(colorSchemeVariable).withPart(iconSetBalham).withPart(tabStyleRolodex).withPart(inputStyleBordered).withPart(columnDropStylePlain).withParams({\n accentColor: \"#0091ea\",\n borderColor: foregroundMix(0.2),\n spacing: 4,\n widgetVerticalSpacing: { calc: \"max(8px, spacing)\" },\n borderRadius: 2,\n wrapperBorderRadius: 2,\n headerColumnResizeHandleColor: \"transparent\",\n headerColumnBorder: true,\n headerColumnBorderHeight: \"50%\",\n oddRowBackgroundColor: {\n ref: \"chromeBackgroundColor\",\n mix: 0.5\n },\n checkboxBorderRadius: 2,\n checkboxBorderWidth: 1,\n checkboxUncheckedBackgroundColor: backgroundColor,\n checkboxUncheckedBorderColor: foregroundBackgroundMix(0.5),\n checkboxCheckedBackgroundColor: backgroundColor,\n checkboxCheckedBorderColor: accentColor,\n checkboxCheckedShapeColor: accentColor,\n checkboxIndeterminateBackgroundColor: backgroundColor,\n checkboxIndeterminateBorderColor: foregroundBackgroundMix(0.5),\n checkboxIndeterminateShapeColor: foregroundBackgroundMix(0.5),\n focusShadow: { radius: 2, spread: 1, color: accentColor },\n headerTextColor: foregroundMix(0.6),\n iconButtonHoverBackgroundColor: \"transparent\",\n iconButtonActiveBackgroundColor: \"transparent\",\n fontSize: 12,\n tabSelectedBackgroundColor: backgroundColor,\n headerFontWeight: \"bold\",\n toggleButtonWidth: 32,\n toggleButtonHeight: 16,\n toggleButtonSwitchInset: 1,\n toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.5),\n sideButtonBorder: true,\n sideButtonBarTopPadding: { calc: \"spacing * 4\" },\n popupShadow: \"5px 5px 10px rgba(0, 0, 0, 0.3)\",\n statusBarLabelColor: foregroundMix(0.54),\n statusBarLabelFontWeight: 600,\n statusBarValueFontWeight: 600,\n panelTitleBarIconColor: foregroundColor\n});\nvar themeBalham = /* @__PURE__ */ makeThemeBalhamTreeShakeable();\nvar makeStyleMaterialTreeShakeable = () => {\n const sharedParams = {\n tabSelectedUnderlineColor: { ref: \"primaryColor\" },\n sideButtonSelectedUnderlineColor: { ref: \"primaryColor\" },\n buttonTextColor: { ref: \"primaryColor\" },\n rangeSelectionBackgroundColor: {\n ref: \"primaryColor\",\n mix: 0.2\n },\n rangeSelectionBorderColor: {\n ref: \"primaryColor\"\n },\n rangeSelectionHighlightColor: {\n ref: \"primaryColor\",\n mix: 0.5\n },\n rangeHeaderHighlightColor: {\n ref: \"foregroundColor\",\n mix: 0.08\n },\n rowNumbersSelectedColor: {\n ref: \"primaryColor\",\n mix: 0.5\n },\n inputFocusBorder: {\n width: 2,\n color: { ref: \"primaryColor\" }\n },\n pickerButtonFocusBorder: {\n width: 1,\n color: { ref: \"primaryColor\" }\n },\n cellEditingBorder: {\n color: { ref: \"primaryColor\" }\n },\n menuBackgroundColor: { ref: \"backgroundColor\" },\n sideButtonBarBackgroundColor: backgroundColor,\n sideButtonSelectedBackgroundColor: \"transparent\",\n sideButtonBarTopPadding: { calc: \"spacing * 4\" },\n headerColumnResizeHandleColor: \"none\",\n headerBackgroundColor: {\n ref: \"backgroundColor\"\n },\n rowHoverColor: foregroundMix(0.08),\n columnHoverColor: foregroundMix(0.08),\n headerCellHoverBackgroundColor: foregroundMix(0.05),\n statusBarLabelColor: foregroundMix(0.63),\n statusBarLabelFontWeight: 600,\n statusBarValueFontWeight: 600,\n valueChangeValueHighlightBackgroundColor: \"#00acc1\",\n panelTitleBarIconColor: foregroundColor,\n advancedFilterBuilderButtonBarBorder: false\n };\n const lightParams = {\n ...sharedParams,\n primaryColor: \"#3f51b5\",\n foregroundColor: \"#000D\",\n headerTextColor: \"#0008\",\n accentColor: \"#ff4081\",\n checkboxUncheckedBorderColor: foregroundColor,\n checkboxIndeterminateBackgroundColor: foregroundColor,\n toggleButtonOffBackgroundColor: foregroundColor,\n selectedRowBackgroundColor: \"rgba(33, 150, 243, 0.3)\"\n };\n const darkParams2 = {\n ...sharedParams,\n primaryColor: \"#3f51b5\",\n foregroundColor: \"#fffD\",\n headerTextColor: \"#fff8\",\n accentColor: \"#bb86fc\",\n checkboxUncheckedBorderColor: foregroundBackgroundMix(0.5),\n checkboxIndeterminateBackgroundColor: foregroundBackgroundMix(0.5),\n toggleButtonOffBackgroundColor: foregroundBackgroundMix(0.5),\n selectedRowBackgroundColor: \"#bb86fc33\"\n };\n return createPart({\n feature: \"styleMaterial\",\n css: materialAdjustmentsCSS,\n params: lightParams,\n modeParams: {\n light: lightParams,\n dark: darkParams2,\n \"dark-blue\": darkParams2\n }\n });\n};\nvar styleMaterial = /* @__PURE__ */ makeStyleMaterialTreeShakeable();\nvar makeThemeMaterialTreeShakeable = () => /* @__PURE__ */ createTheme().withPart(buttonStyleBase).withPart(checkboxStyleDefault).withPart(colorSchemeVariable).withPart(iconSetMaterial).withPart(tabStyleMaterial).withPart(inputStyleUnderlined).withPart(columnDropStylePlain).withPart(styleMaterial).withParams({\n rowHeight: {\n calc: \"max(iconSize, dataFontSize) + spacing * 3.75 * rowVerticalPaddingScale\"\n },\n headerHeight: {\n calc: \"max(iconSize, dataFontSize) + spacing * 4.75 * headerVerticalPaddingScale\"\n },\n widgetVerticalSpacing: {\n calc: \"spacing * 1.75\"\n },\n cellHorizontalPadding: { calc: \"spacing * 3\" },\n buttonHorizontalPadding: { ref: \"spacing\" },\n widgetContainerHorizontalPadding: { calc: \"spacing * 1.5\" },\n widgetContainerVerticalPadding: { calc: \"spacing * 2\" },\n fontSize: 13,\n iconSize: 18,\n borderRadius: 0,\n wrapperBorderRadius: 0,\n wrapperBorder: false,\n menuBorder: false,\n dialogBorder: false,\n panelTitleBarBorder: false,\n tabSelectedBorderWidth: 0,\n tabSelectedUnderlineTransitionDuration: 0.3,\n sidePanelBorder: false,\n sideButtonSelectedBorder: false,\n sideButtonSelectedUnderlineWidth: 2,\n sideButtonSelectedUnderlineTransitionDuration: 0.3,\n sideButtonBorder: false,\n buttonBorder: false,\n buttonDisabledBorder: false,\n focusShadow: {\n spread: 4,\n color: foregroundMix(0.16)\n },\n fontFamily: [\n { googleFont: \"Roboto\" },\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n \"Segoe UI\",\n \"Oxygen-Sans\",\n \"Ubuntu\",\n \"Cantarell\",\n \"Helvetica Neue\",\n \"sans-serif\"\n ],\n inputHeight: {\n calc: \"max(iconSize, fontSize) + spacing * 3\"\n },\n pickerButtonBorder: {\n width: 1,\n color: \"transparent\"\n },\n headerFontWeight: 600,\n checkboxBorderWidth: 2,\n checkboxBorderRadius: 2,\n toggleButtonWidth: 34,\n toggleButtonSwitchInset: 1,\n cardShadow: \"0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)\",\n popupShadow: \"5px 5px 10px rgba(0, 0, 0, 0.3)\"\n});\nvar themeMaterial = /* @__PURE__ */ makeThemeMaterialTreeShakeable();\n\n// packages/ag-grid-community/src/environment.ts\nvar CELL_HORIZONTAL_PADDING = {\n cssName: \"--ag-cell-horizontal-padding\",\n changeKey: \"cellHorizontalPaddingChanged\",\n defaultValue: 16\n};\nvar INDENTATION_LEVEL = {\n cssName: \"--ag-indentation-level\",\n changeKey: \"indentationLevelChanged\",\n defaultValue: 0,\n noWarn: true,\n cacheDefault: true\n};\nvar ROW_GROUP_INDENT_SIZE = {\n cssName: \"--ag-row-group-indent-size\",\n changeKey: \"rowGroupIndentSizeChanged\",\n defaultValue: 0\n};\nvar ROW_HEIGHT = {\n cssName: \"--ag-row-height\",\n changeKey: \"rowHeightChanged\",\n defaultValue: 42\n};\nvar HEADER_HEIGHT = {\n cssName: \"--ag-header-height\",\n changeKey: \"headerHeightChanged\",\n defaultValue: 48\n};\nvar LIST_ITEM_HEIGHT = {\n cssName: \"--ag-list-item-height\",\n changeKey: \"listItemHeightChanged\",\n defaultValue: 24\n};\nvar ROW_BORDER_WIDTH = {\n cssName: \"--ag-row-border\",\n changeKey: \"rowBorderWidthChanged\",\n defaultValue: 1,\n border: true\n};\nvar paramsId = 0;\nvar Environment = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"environment\";\n this.sizeEls = /* @__PURE__ */ new Map();\n this.lastKnownValues = /* @__PURE__ */ new Map();\n this.sizesMeasured = false;\n this.paramsClass = `ag-theme-params-${++paramsId}`;\n this.globalCSS = [];\n }\n wireBeans(beans) {\n const { eGridDiv, gridOptions } = beans;\n this.eGridDiv = eGridDiv;\n this.eStyleContainer = gridOptions.themeStyleContainer ?? (eGridDiv.getRootNode() === document ? document.head : eGridDiv);\n this.cssLayer = gridOptions.themeCssLayer;\n this.styleNonce = gridOptions.styleNonce;\n }\n postConstruct() {\n this.addManagedPropertyListener(\"theme\", () => this.handleThemeGridOptionChange());\n this.handleThemeGridOptionChange();\n this.addManagedPropertyListener(\"rowHeight\", () => this.refreshRowHeightVariable());\n this.getSizeEl(ROW_HEIGHT);\n this.getSizeEl(HEADER_HEIGHT);\n this.getSizeEl(LIST_ITEM_HEIGHT);\n this.getSizeEl(ROW_BORDER_WIDTH);\n this.refreshRowBorderWidthVariable();\n this.addDestroyFunc(() => _unregisterGridUsingThemingAPI(this));\n this.mutationObserver = new MutationObserver(() => {\n this.fireGridStylesChangedEvent(\"themeChanged\");\n });\n this.addDestroyFunc(() => this.mutationObserver.disconnect());\n }\n getDefaultRowHeight() {\n return this.getCSSVariablePixelValue(ROW_HEIGHT);\n }\n getDefaultHeaderHeight() {\n return this.getCSSVariablePixelValue(HEADER_HEIGHT);\n }\n getDefaultCellHorizontalPadding() {\n return this.getCSSVariablePixelValue(CELL_HORIZONTAL_PADDING);\n }\n getDefaultIndentation() {\n return this.getCSSVariablePixelValue(INDENTATION_LEVEL);\n }\n getDefaultRowGroupIndentSize() {\n return this.getCSSVariablePixelValue(ROW_GROUP_INDENT_SIZE);\n }\n getCellPaddingLeft() {\n const cellHorizontalPadding = this.getDefaultCellHorizontalPadding();\n const indentationLevel = this.getDefaultIndentation();\n const rowGroupIndentSize = this.getDefaultRowGroupIndentSize();\n return cellHorizontalPadding - 1 + rowGroupIndentSize * indentationLevel;\n }\n getCellPaddingRight() {\n return this.getDefaultCellHorizontalPadding() - 1;\n }\n getCellPadding() {\n return this.getCellPaddingLeft() + this.getCellPaddingRight();\n }\n getDefaultColumnMinWidth() {\n return Math.min(36, this.getDefaultRowHeight());\n }\n getDefaultListItemHeight() {\n return this.getCSSVariablePixelValue(LIST_ITEM_HEIGHT);\n }\n getRowBorderWidth() {\n return this.getCSSVariablePixelValue(ROW_BORDER_WIDTH);\n }\n applyThemeClasses(el) {\n const { gridTheme } = this;\n let themeClass = \"\";\n if (gridTheme) {\n themeClass = `${this.paramsClass} ${gridTheme._getCssClass()}`;\n } else {\n this.mutationObserver.disconnect();\n let node = this.eGridDiv;\n while (node) {\n let isThemeEl = false;\n for (const className of Array.from(node.classList)) {\n if (className.startsWith(\"ag-theme-\")) {\n isThemeEl = true;\n themeClass = themeClass ? `${themeClass} ${className}` : className;\n }\n }\n if (isThemeEl) {\n this.mutationObserver.observe(node, {\n attributes: true,\n attributeFilter: [\"class\"]\n });\n }\n node = node.parentElement;\n }\n }\n for (const className of Array.from(el.classList)) {\n if (className.startsWith(\"ag-theme-\")) {\n el.classList.remove(className);\n }\n }\n if (themeClass) {\n const oldClass = el.className;\n el.className = oldClass + (oldClass ? \" \" : \"\") + themeClass;\n }\n }\n refreshRowHeightVariable() {\n const { eGridDiv } = this;\n const oldRowHeight = eGridDiv.style.getPropertyValue(\"--ag-line-height\").trim();\n const height = this.gos.get(\"rowHeight\");\n if (height == null || isNaN(height) || !isFinite(height)) {\n if (oldRowHeight !== null) {\n eGridDiv.style.setProperty(\"--ag-line-height\", null);\n }\n return -1;\n }\n const newRowHeight = `${height}px`;\n if (oldRowHeight != newRowHeight) {\n eGridDiv.style.setProperty(\"--ag-line-height\", newRowHeight);\n return height;\n }\n return oldRowHeight != \"\" ? parseFloat(oldRowHeight) : -1;\n }\n addGlobalCSS(css, debugId) {\n if (this.gridTheme) {\n _injectGlobalCSS(css, this.eStyleContainer, debugId, this.cssLayer, 0, this.styleNonce);\n } else {\n this.globalCSS.push([css, debugId]);\n }\n }\n getCSSVariablePixelValue(variable) {\n const cached = this.lastKnownValues.get(variable);\n if (cached != null) {\n return cached;\n }\n const measurement = this.measureSizeEl(variable);\n if (measurement === \"detached\" || measurement === \"no-styles\") {\n if (variable.cacheDefault) {\n this.lastKnownValues.set(variable, variable.defaultValue);\n }\n return variable.defaultValue;\n }\n this.lastKnownValues.set(variable, measurement);\n return measurement;\n }\n measureSizeEl(variable) {\n const sizeEl = this.getSizeEl(variable);\n if (sizeEl.offsetParent == null) {\n return \"detached\";\n }\n const newSize = sizeEl.offsetWidth;\n if (newSize === NO_VALUE_SENTINEL)\n return \"no-styles\";\n this.sizesMeasured = true;\n return newSize;\n }\n getMeasurementContainer() {\n let container = this.eMeasurementContainer;\n if (!container) {\n container = this.eMeasurementContainer = _createElement({ tag: \"div\", cls: \"ag-measurement-container\" });\n this.eGridDiv.appendChild(container);\n }\n return container;\n }\n getSizeEl(variable) {\n let sizeEl = this.sizeEls.get(variable);\n if (sizeEl) {\n return sizeEl;\n }\n const container = this.getMeasurementContainer();\n sizeEl = _createElement({ tag: \"div\" });\n const { border, noWarn } = variable;\n if (border) {\n sizeEl.className = \"ag-measurement-element-border\";\n sizeEl.style.setProperty(\n \"--ag-internal-measurement-border\",\n `var(${variable.cssName}, solid ${NO_VALUE_SENTINEL}px)`\n );\n } else {\n sizeEl.style.width = `var(${variable.cssName}, ${NO_VALUE_SENTINEL}px)`;\n }\n container.appendChild(sizeEl);\n this.sizeEls.set(variable, sizeEl);\n let lastMeasurement = this.measureSizeEl(variable);\n if (lastMeasurement === \"no-styles\" && !noWarn) {\n _warn(9, { variable });\n }\n const unsubscribe = _observeResize(this.beans, sizeEl, () => {\n const newMeasurement = this.measureSizeEl(variable);\n if (newMeasurement === \"detached\" || newMeasurement === \"no-styles\") {\n return;\n }\n this.lastKnownValues.set(variable, newMeasurement);\n if (newMeasurement !== lastMeasurement) {\n lastMeasurement = newMeasurement;\n this.fireGridStylesChangedEvent(variable.changeKey);\n }\n });\n this.addDestroyFunc(() => unsubscribe());\n return sizeEl;\n }\n fireGridStylesChangedEvent(change) {\n if (change === \"rowBorderWidthChanged\") {\n this.refreshRowBorderWidthVariable();\n }\n this.eventSvc.dispatchEvent({\n type: \"gridStylesChanged\",\n [change]: true\n });\n }\n refreshRowBorderWidthVariable() {\n const width = this.getCSSVariablePixelValue(ROW_BORDER_WIDTH);\n this.eGridDiv.style.setProperty(\"--ag-internal-row-border-width\", `${width}px`);\n }\n handleThemeGridOptionChange() {\n const { gos, eGridDiv, globalCSS, gridTheme: oldGridTheme } = this;\n const themeGridOption = gos.get(\"theme\");\n let newGridTheme;\n if (themeGridOption === \"legacy\") {\n newGridTheme = void 0;\n } else {\n const themeOrDefault = themeGridOption ?? themeQuartz;\n if (themeOrDefault instanceof ThemeImpl) {\n newGridTheme = themeOrDefault;\n } else {\n _error(240, { theme: themeOrDefault });\n }\n }\n if (newGridTheme !== oldGridTheme) {\n if (newGridTheme) {\n _registerGridUsingThemingAPI(this);\n _injectCoreAndModuleCSS(this.eStyleContainer, this.cssLayer, this.styleNonce);\n for (const [css, debugId] of globalCSS) {\n _injectGlobalCSS(css, this.eStyleContainer, debugId, this.cssLayer, 0, this.styleNonce);\n }\n globalCSS.length = 0;\n }\n this.gridTheme = newGridTheme;\n newGridTheme?._startUse({\n loadThemeGoogleFonts: gos.get(\"loadThemeGoogleFonts\"),\n styleContainer: this.eStyleContainer,\n cssLayer: this.cssLayer,\n nonce: this.styleNonce\n });\n let eParamsStyle = this.eParamsStyle;\n if (!eParamsStyle) {\n eParamsStyle = this.eParamsStyle = _createElement({ tag: \"style\" });\n const styleNonce = this.gos.get(\"styleNonce\");\n if (styleNonce) {\n eParamsStyle.setAttribute(\"nonce\", styleNonce);\n }\n eGridDiv.appendChild(eParamsStyle);\n }\n if (!IS_SSR) {\n eParamsStyle.textContent = newGridTheme?._getPerGridCss(this.paramsClass) || \"\";\n }\n this.applyThemeClasses(eGridDiv);\n this.fireGridStylesChangedEvent(\"themeChanged\");\n }\n if (newGridTheme && getComputedStyle(this.getMeasurementContainer()).getPropertyValue(\"--ag-legacy-styles-loaded\")) {\n if (themeGridOption) {\n _error(106);\n } else {\n _error(239);\n }\n }\n }\n};\nvar NO_VALUE_SENTINEL = 15538;\n\n// packages/ag-grid-community/src/eventService.ts\nvar EventService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"eventSvc\";\n this.globalEventService = new LocalEventService();\n }\n postConstruct() {\n const { globalListener, globalSyncListener } = this.beans;\n if (globalListener) {\n this.addGlobalListener(globalListener, true);\n }\n if (globalSyncListener) {\n this.addGlobalListener(globalSyncListener, false);\n }\n }\n addEventListener(eventType, listener, async) {\n this.globalEventService.addEventListener(eventType, listener, async);\n }\n removeEventListener(eventType, listener, async) {\n this.globalEventService.removeEventListener(eventType, listener, async);\n }\n addGlobalListener(listener, async = false) {\n this.globalEventService.addGlobalListener(listener, async);\n }\n removeGlobalListener(listener, async = false) {\n this.globalEventService.removeGlobalListener(listener, async);\n }\n /** @deprecated DO NOT FIRE LOCAL EVENTS OFF THE EVENT SERVICE */\n dispatchLocalEvent() {\n }\n dispatchEvent(event) {\n this.globalEventService.dispatchEvent(_addGridCommonParams(this.gos, event));\n }\n dispatchEventOnce(event) {\n this.globalEventService.dispatchEventOnce(_addGridCommonParams(this.gos, event));\n }\n};\n\n// packages/ag-grid-community/src/navigation/headerNavigationService.ts\nfunction isAnyChildSpanningHeaderHeight(columnGroup) {\n if (!columnGroup) {\n return false;\n }\n return columnGroup.getLeafColumns().some((col) => col.isSpanHeaderHeight());\n}\nfunction getHeaderIndexToFocus(column, currentIndex) {\n let nextColumn;\n if (isColumnGroup2(column) && isAnyChildSpanningHeaderHeight(column) && column.isPadding()) {\n const targetColumn = column;\n nextColumn = targetColumn.getLeafColumns()[0];\n let col = nextColumn;\n while (col !== targetColumn) {\n currentIndex++;\n col = col.getParent();\n }\n }\n return {\n column: nextColumn || column,\n headerRowIndex: currentIndex\n };\n}\nvar HeaderNavigationService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"headerNavigation\";\n this.currentHeaderRowWithoutSpan = -1;\n }\n postConstruct() {\n const beans = this.beans;\n beans.ctrlsSvc.whenReady(this, (p) => {\n this.gridBodyCon = p.gridBodyCtrl;\n });\n const eDocument = _getDocument(beans);\n this.addManagedElementListeners(eDocument, {\n mousedown: () => {\n this.currentHeaderRowWithoutSpan = -1;\n }\n });\n }\n getHeaderPositionForColumn(colKey, floatingFilter) {\n let column;\n const { colModel, colGroupSvc, ctrlsSvc } = this.beans;\n if (typeof colKey === \"string\") {\n column = colModel.getCol(colKey);\n if (!column) {\n column = colGroupSvc?.getColumnGroup(colKey) ?? null;\n }\n } else {\n column = colKey;\n }\n if (!column) {\n return null;\n }\n const centerHeaderContainer = ctrlsSvc.getHeaderRowContainerCtrl();\n const allCtrls = centerHeaderContainer?.getAllCtrls();\n const isFloatingFilterVisible = _last(allCtrls || []).type === \"filter\";\n const headerRowCount = getFocusHeaderRowCount(this.beans) - 1;\n let row = -1;\n let col = column;\n while (col) {\n row++;\n col = col.getParent();\n }\n let headerRowIndex = row;\n if (floatingFilter && isFloatingFilterVisible && headerRowIndex === headerRowCount - 1) {\n headerRowIndex++;\n }\n return headerRowIndex === -1 ? null : {\n headerRowIndex,\n column\n };\n }\n /*\n * This method navigates grid header vertically\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n navigateVertically(direction, fromHeader, event) {\n const focusSvc = this.beans.focusSvc;\n if (!fromHeader) {\n fromHeader = focusSvc.focusedHeader;\n }\n if (!fromHeader) {\n return false;\n }\n const { headerRowIndex } = fromHeader;\n const column = fromHeader.column;\n const rowLen = getFocusHeaderRowCount(this.beans);\n const isUp = direction === \"UP\";\n const currentRowType = this.getHeaderRowType(headerRowIndex);\n let {\n headerRowIndex: nextRow,\n column: nextFocusColumn,\n headerRowIndexWithoutSpan\n } = isUp ? getColumnVisibleParent(currentRowType, column, headerRowIndex) : getColumnVisibleChild(currentRowType, column, headerRowIndex);\n let skipColumn = false;\n if (nextRow < 0) {\n nextRow = 0;\n nextFocusColumn = column;\n skipColumn = true;\n }\n if (nextRow >= rowLen) {\n nextRow = -1;\n this.currentHeaderRowWithoutSpan = -1;\n } else if (headerRowIndexWithoutSpan !== void 0) {\n this.currentHeaderRowWithoutSpan = headerRowIndexWithoutSpan;\n }\n if (!skipColumn && !nextFocusColumn) {\n return false;\n }\n return focusSvc.focusHeaderPosition({\n headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },\n allowUserOverride: true,\n event\n });\n }\n /*\n * This method navigates grid header horizontally\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n navigateHorizontally(direction, fromTab = false, event) {\n const { focusSvc, gos } = this.beans;\n const focusedHeader = focusSvc.focusedHeader;\n let nextHeader;\n let normalisedDirection;\n if (this.currentHeaderRowWithoutSpan !== -1) {\n focusedHeader.headerRowIndex = this.currentHeaderRowWithoutSpan;\n } else {\n this.currentHeaderRowWithoutSpan = focusedHeader.headerRowIndex;\n }\n if (direction === \"LEFT\" !== gos.get(\"enableRtl\")) {\n normalisedDirection = \"Before\";\n nextHeader = this.findHeader(focusedHeader, normalisedDirection);\n } else {\n normalisedDirection = \"After\";\n nextHeader = this.findHeader(focusedHeader, normalisedDirection);\n }\n const userFunc = gos.getCallback(\"tabToNextHeader\");\n if (fromTab && userFunc) {\n const wasFocusedFromUserFunc = focusSvc.focusHeaderPositionFromUserFunc({\n userFunc,\n headerPosition: nextHeader,\n direction: normalisedDirection\n });\n if (wasFocusedFromUserFunc) {\n const { headerRowIndex } = focusSvc.focusedHeader || {};\n if (headerRowIndex != null && headerRowIndex != focusedHeader.headerRowIndex) {\n this.currentHeaderRowWithoutSpan = headerRowIndex;\n }\n }\n return wasFocusedFromUserFunc;\n }\n if (nextHeader || !fromTab) {\n return focusSvc.focusHeaderPosition({\n headerPosition: nextHeader,\n direction: normalisedDirection,\n fromTab,\n allowUserOverride: true,\n event\n });\n }\n return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);\n }\n focusNextHeaderRow(focusedHeader, direction, event) {\n const currentIndex = focusedHeader.headerRowIndex;\n let nextPosition = null;\n let nextRowIndex;\n const beans = this.beans;\n if (direction === \"Before\") {\n if (currentIndex > 0) {\n nextRowIndex = currentIndex - 1;\n this.currentHeaderRowWithoutSpan -= 1;\n nextPosition = this.findColAtEdgeForHeaderRow(nextRowIndex, \"end\");\n }\n } else {\n nextRowIndex = currentIndex + 1;\n if (this.currentHeaderRowWithoutSpan < getFocusHeaderRowCount(beans)) {\n this.currentHeaderRowWithoutSpan += 1;\n } else {\n this.currentHeaderRowWithoutSpan = -1;\n }\n nextPosition = this.findColAtEdgeForHeaderRow(nextRowIndex, \"start\");\n }\n if (!nextPosition) {\n return false;\n }\n const { column, headerRowIndex } = getHeaderIndexToFocus(\n nextPosition.column,\n nextPosition?.headerRowIndex\n );\n return beans.focusSvc.focusHeaderPosition({\n headerPosition: { column, headerRowIndex },\n direction,\n fromTab: true,\n allowUserOverride: true,\n event\n });\n }\n scrollToColumn(column, direction = \"After\") {\n if (column.getPinned()) {\n return;\n }\n let columnToScrollTo;\n if (isColumnGroup2(column)) {\n const columns = column.getDisplayedLeafColumns();\n columnToScrollTo = direction === \"Before\" ? _last(columns) : columns[0];\n } else {\n columnToScrollTo = column;\n }\n this.gridBodyCon.scrollFeature.ensureColumnVisible(columnToScrollTo);\n }\n findHeader(focusedHeader, direction) {\n let nextColumn;\n let getColMethod;\n const { colGroupSvc, visibleCols } = this.beans;\n if (isColumnGroup2(focusedHeader.column)) {\n nextColumn = colGroupSvc?.getGroupAtDirection(focusedHeader.column, direction) ?? void 0;\n } else {\n getColMethod = `getCol${direction}`;\n nextColumn = visibleCols[getColMethod](focusedHeader.column);\n }\n if (!nextColumn) {\n return;\n }\n const { headerRowIndex } = focusedHeader;\n if (this.getHeaderRowType(headerRowIndex) !== \"filter\") {\n const columnsInPath = [nextColumn];\n while (nextColumn.getParent()) {\n nextColumn = nextColumn.getParent();\n columnsInPath.push(nextColumn);\n }\n nextColumn = columnsInPath[Math.max(0, columnsInPath.length - 1 - headerRowIndex)];\n }\n const { column, headerRowIndex: indexToFocus } = getHeaderIndexToFocus(nextColumn, headerRowIndex);\n return {\n column,\n headerRowIndex: indexToFocus\n };\n }\n getHeaderRowType(rowIndex) {\n const centerHeaderContainer = this.beans.ctrlsSvc.getHeaderRowContainerCtrl();\n if (centerHeaderContainer) {\n return centerHeaderContainer.getRowType(rowIndex);\n }\n }\n findColAtEdgeForHeaderRow(level, position) {\n const { visibleCols, ctrlsSvc, colGroupSvc } = this.beans;\n const displayedColumns = visibleCols.allCols;\n const column = displayedColumns[position === \"start\" ? 0 : displayedColumns.length - 1];\n if (!column) {\n return;\n }\n const childContainer = ctrlsSvc.getHeaderRowContainerCtrl(column.getPinned());\n const type = childContainer?.getRowType(level);\n if (type == \"group\") {\n const columnGroup = colGroupSvc?.getColGroupAtLevel(column, level);\n return {\n headerRowIndex: level,\n column: columnGroup\n };\n }\n return {\n // if type==null, means the header level didn't exist\n headerRowIndex: type == null ? -1 : level,\n column\n };\n }\n};\nfunction getColumnVisibleParent(currentRowType, currentColumn, currentIndex) {\n const isFloatingFilter = currentRowType === \"filter\";\n const isColumn2 = currentRowType === \"column\";\n let nextFocusColumn = isFloatingFilter ? currentColumn : currentColumn.getParent();\n let nextRow = currentIndex - 1;\n let headerRowIndexWithoutSpan = nextRow;\n if (isColumn2 && isAnyChildSpanningHeaderHeight(currentColumn.getParent())) {\n while (nextFocusColumn && nextFocusColumn.isPadding()) {\n nextFocusColumn = nextFocusColumn.getParent();\n nextRow--;\n }\n headerRowIndexWithoutSpan = nextRow;\n if (nextRow < 0) {\n nextFocusColumn = currentColumn;\n nextRow = currentIndex;\n headerRowIndexWithoutSpan = void 0;\n }\n }\n return { column: nextFocusColumn, headerRowIndex: nextRow, headerRowIndexWithoutSpan };\n}\nfunction getColumnVisibleChild(currentRowType, column, currentIndex, direction = \"After\") {\n let nextFocusColumn = column;\n let nextRow = currentIndex + 1;\n const headerRowIndexWithoutSpan = nextRow;\n if (currentRowType === \"group\") {\n const leafColumns = column.getDisplayedLeafColumns();\n const leafColumn = direction === \"After\" ? leafColumns[0] : _last(leafColumns);\n const columnsInTheWay = [];\n let currentColumn = leafColumn;\n while (currentColumn.getParent() !== column) {\n currentColumn = currentColumn.getParent();\n columnsInTheWay.push(currentColumn);\n }\n nextFocusColumn = leafColumn;\n if (leafColumn.isSpanHeaderHeight()) {\n for (let i = columnsInTheWay.length - 1; i >= 0; i--) {\n const colToFocus = columnsInTheWay[i];\n if (!colToFocus.isPadding()) {\n nextFocusColumn = colToFocus;\n break;\n }\n nextRow++;\n }\n } else {\n nextFocusColumn = _last(columnsInTheWay);\n if (!nextFocusColumn) {\n nextFocusColumn = leafColumn;\n }\n }\n }\n return { column: nextFocusColumn, headerRowIndex: nextRow, headerRowIndexWithoutSpan };\n}\n\n// packages/ag-grid-community/src/focusService.ts\nvar FocusService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"focusSvc\";\n /** If a cell was destroyed that previously had focus, focus needs restored when the cell reappears */\n this.focusFallbackTimeout = null;\n this.needsFocusRestored = false;\n }\n wireBeans(beans) {\n this.colModel = beans.colModel;\n this.visibleCols = beans.visibleCols;\n this.rowRenderer = beans.rowRenderer;\n this.navigation = beans.navigation;\n this.filterManager = beans.filterManager;\n this.overlays = beans.overlays;\n }\n postConstruct() {\n const clearFocusedCellListener = this.clearFocusedCell.bind(this);\n this.addManagedEventListeners({\n columnPivotModeChanged: clearFocusedCellListener,\n newColumnsLoaded: this.onColumnEverythingChanged.bind(this),\n columnGroupOpened: clearFocusedCellListener,\n columnRowGroupChanged: clearFocusedCellListener\n });\n this.addDestroyFunc(_registerKeyboardFocusEvents(this.beans));\n }\n attemptToRecoverFocus() {\n this.needsFocusRestored = true;\n if (this.focusFallbackTimeout != null) {\n clearTimeout(this.focusFallbackTimeout);\n }\n this.focusFallbackTimeout = window.setTimeout(this.setFocusRecovered.bind(this), 100);\n }\n setFocusRecovered() {\n this.needsFocusRestored = false;\n if (this.focusFallbackTimeout != null) {\n clearTimeout(this.focusFallbackTimeout);\n this.focusFallbackTimeout = null;\n }\n }\n /**\n * Specifies whether to take focus, as grid either already has focus, or lost it due\n * to a destroyed cell\n * @returns true if the grid should re-take focus, otherwise false\n */\n shouldTakeFocus() {\n if (this.gos.get(\"suppressFocusAfterRefresh\")) {\n this.setFocusRecovered();\n return false;\n }\n if (this.needsFocusRestored) {\n this.setFocusRecovered();\n return true;\n }\n return this.doesRowOrCellHaveBrowserFocus();\n }\n onColumnEverythingChanged() {\n if (!this.focusedCell) {\n return;\n }\n const col = this.focusedCell.column;\n const colFromColumnModel = this.colModel.getCol(col.getId());\n if (col !== colFromColumnModel) {\n this.clearFocusedCell();\n }\n }\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n getFocusCellToUseAfterRefresh() {\n if (this.gos.get(\"suppressFocusAfterRefresh\") || !this.focusedCell) {\n return null;\n }\n if (!this.doesRowOrCellHaveBrowserFocus()) {\n return null;\n }\n return this.focusedCell;\n }\n getFocusHeaderToUseAfterRefresh() {\n if (this.gos.get(\"suppressFocusAfterRefresh\") || !this.focusedHeader) {\n return null;\n }\n if (!this.isDomDataPresentInHierarchy(_getActiveDomElement(this.beans), DOM_DATA_KEY_HEADER_CTRL)) {\n return null;\n }\n return this.focusedHeader;\n }\n /**\n * Check for both cells and rows, as a row might be destroyed and the dom data removed before the cell if the\n * row is animating out.\n */\n doesRowOrCellHaveBrowserFocus() {\n const activeElement = _getActiveDomElement(this.beans);\n if (this.isDomDataPresentInHierarchy(activeElement, DOM_DATA_KEY_CELL_CTRL)) {\n return true;\n }\n return this.isDomDataPresentInHierarchy(activeElement, DOM_DATA_KEY_ROW_CTRL);\n }\n isDomDataPresentInHierarchy(eBrowserCell, key) {\n let ePointer = eBrowserCell;\n while (ePointer) {\n const data = _getDomData(this.gos, ePointer, key);\n if (data) {\n return true;\n }\n ePointer = ePointer.parentNode;\n }\n return false;\n }\n getFocusedCell() {\n return this.focusedCell;\n }\n getFocusEventParams(focusedCellPosition) {\n const { rowIndex, rowPinned, column } = focusedCellPosition;\n const params = {\n rowIndex,\n rowPinned,\n column,\n isFullWidthCell: false\n };\n const rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex, rowPinned });\n if (rowCtrl) {\n params.isFullWidthCell = rowCtrl.isFullWidth();\n }\n return params;\n }\n clearFocusedCell() {\n if (this.focusedCell == null) {\n return;\n }\n const focusEventParams = this.getFocusEventParams(this.focusedCell);\n this.focusedCell = null;\n this.eventSvc.dispatchEvent({\n type: \"cellFocusCleared\",\n ...focusEventParams\n });\n }\n setFocusedCell(params) {\n this.setFocusRecovered();\n const { column, rowIndex, rowPinned, forceBrowserFocus = false, preventScrollOnBrowserFocus = false } = params;\n const gridColumn = this.colModel.getCol(column);\n if (!gridColumn) {\n this.focusedCell = null;\n return;\n }\n this.focusedCell = {\n rowIndex,\n rowPinned: _makeNull(rowPinned),\n column: gridColumn\n };\n this.eventSvc.dispatchEvent({\n type: \"cellFocused\",\n ...this.getFocusEventParams(this.focusedCell),\n forceBrowserFocus,\n preventScrollOnBrowserFocus\n });\n }\n isCellFocused(cellPosition) {\n if (this.focusedCell == null) {\n return false;\n }\n return _areCellsEqual(cellPosition, this.focusedCell);\n }\n isHeaderWrapperFocused(headerCtrl) {\n if (this.focusedHeader == null) {\n return false;\n }\n const {\n column,\n rowCtrl: { rowIndex: headerRowIndex, pinned }\n } = headerCtrl;\n const { column: focusedColumn, headerRowIndex: focusedHeaderRowIndex } = this.focusedHeader;\n return column === focusedColumn && headerRowIndex === focusedHeaderRowIndex && pinned == focusedColumn.getPinned();\n }\n focusHeaderPosition(params) {\n this.setFocusRecovered();\n if (_isHeaderFocusSuppressed(this.beans)) {\n return false;\n }\n const { direction, fromTab, allowUserOverride, event, fromCell, rowWithoutSpanValue } = params;\n let { headerPosition } = params;\n if (fromCell && this.filterManager?.isAdvFilterHeaderActive()) {\n return this.focusAdvancedFilter(headerPosition);\n }\n if (allowUserOverride) {\n const currentPosition = this.focusedHeader;\n const headerRowCount = getFocusHeaderRowCount(this.beans);\n if (fromTab) {\n const userFunc = this.gos.getCallback(\"tabToNextHeader\");\n if (userFunc) {\n headerPosition = this.getHeaderPositionFromUserFunc({\n userFunc,\n direction,\n currentPosition,\n headerPosition,\n headerRowCount\n });\n }\n } else {\n const userFunc = this.gos.getCallback(\"navigateToNextHeader\");\n if (userFunc && event) {\n const params2 = {\n key: event.key,\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount,\n event\n };\n headerPosition = userFunc(params2);\n }\n }\n }\n if (!headerPosition) {\n return false;\n }\n return this.focusProvidedHeaderPosition({\n headerPosition,\n direction,\n event,\n fromCell,\n rowWithoutSpanValue\n });\n }\n focusHeaderPositionFromUserFunc(params) {\n if (_isHeaderFocusSuppressed(this.beans)) {\n return false;\n }\n const { userFunc, headerPosition, direction, event } = params;\n const currentPosition = this.focusedHeader;\n const headerRowCount = getFocusHeaderRowCount(this.beans);\n const newHeaderPosition = this.getHeaderPositionFromUserFunc({\n userFunc,\n direction,\n currentPosition,\n headerPosition,\n headerRowCount\n });\n return !!newHeaderPosition && this.focusProvidedHeaderPosition({\n headerPosition: newHeaderPosition,\n direction,\n event\n });\n }\n getHeaderPositionFromUserFunc(params) {\n const { userFunc, direction, currentPosition, headerPosition, headerRowCount } = params;\n const userFuncParams = {\n backwards: direction === \"Before\",\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount\n };\n const userResult = userFunc(userFuncParams);\n if (userResult === true) {\n return currentPosition;\n }\n if (userResult === false) {\n return null;\n }\n return userResult;\n }\n focusProvidedHeaderPosition(params) {\n const { headerPosition, direction, fromCell, rowWithoutSpanValue, event } = params;\n const { column, headerRowIndex } = headerPosition;\n const { filterManager, ctrlsSvc, headerNavigation } = this.beans;\n if (headerRowIndex === -1) {\n if (filterManager?.isAdvFilterHeaderActive()) {\n return this.focusAdvancedFilter(headerPosition);\n }\n return this.focusGridView({ column, event });\n }\n headerNavigation?.scrollToColumn(column, direction);\n const headerRowContainerCtrl = ctrlsSvc.getHeaderRowContainerCtrl(column.getPinned());\n const focusSuccess = headerRowContainerCtrl?.focusHeader(headerPosition.headerRowIndex, column, event) || false;\n if (headerNavigation && focusSuccess && (rowWithoutSpanValue != null || fromCell)) {\n headerNavigation.currentHeaderRowWithoutSpan = rowWithoutSpanValue ?? -1;\n }\n return focusSuccess;\n }\n focusFirstHeader() {\n if (this.overlays?.isExclusive() && this.focusOverlay()) {\n return true;\n }\n let firstColumn = this.visibleCols.allCols[0];\n if (!firstColumn) {\n return false;\n }\n const { colGroupSvc } = this.beans;\n if (colGroupSvc && firstColumn.getParent()) {\n firstColumn = colGroupSvc.getColGroupAtLevel(firstColumn, 0);\n }\n const headerPosition = getHeaderIndexToFocus(firstColumn, 0);\n return this.focusHeaderPosition({\n headerPosition,\n rowWithoutSpanValue: 0\n });\n }\n focusLastHeader(event) {\n if (this.overlays?.isExclusive() && this.focusOverlay(true)) {\n return true;\n }\n const headerRowIndex = getFocusHeaderRowCount(this.beans) - 1;\n const column = _last(this.visibleCols.allCols);\n return this.focusHeaderPosition({\n headerPosition: { headerRowIndex, column },\n rowWithoutSpanValue: -1,\n event\n });\n }\n focusPreviousFromFirstCell(event) {\n if (this.filterManager?.isAdvFilterHeaderActive()) {\n return this.focusAdvancedFilter(null);\n }\n return this.focusLastHeader(event);\n }\n isAnyCellFocused() {\n return !!this.focusedCell;\n }\n isRowFocused(rowIndex, rowPinnedType) {\n if (this.focusedCell == null) {\n return false;\n }\n return this.focusedCell.rowIndex === rowIndex && this.focusedCell.rowPinned === _makeNull(rowPinnedType);\n }\n focusOverlay(backwards) {\n const overlayGui = this.overlays?.isVisible() && this.overlays.eWrapper?.getGui();\n return !!overlayGui && _focusInto(overlayGui, backwards);\n }\n focusGridView(params) {\n const { backwards = false, canFocusOverlay = true, event } = params;\n if (this.overlays?.isExclusive()) {\n return canFocusOverlay && this.focusOverlay(backwards);\n }\n if (_isCellFocusSuppressed(this.beans)) {\n if (backwards) {\n if (!_isHeaderFocusSuppressed(this.beans)) {\n return this.focusLastHeader();\n }\n }\n if (canFocusOverlay && this.focusOverlay(backwards)) {\n return true;\n }\n if (backwards) {\n return false;\n }\n return _focusNextGridCoreContainer(this.beans, backwards);\n }\n const nextRow = backwards ? _getLastRow(this.beans) : _getFirstRow(this.beans);\n if (nextRow) {\n const column = params.column ?? this.focusedHeader?.column;\n const { rowIndex, rowPinned } = nextRow;\n const rowNode = _getRowNode(this.beans, nextRow);\n if (!column || !rowNode || rowIndex == null) {\n return false;\n }\n if (column.isSuppressNavigable(rowNode)) {\n const isRtl = this.gos.get(\"enableRtl\");\n let key;\n if (!event || event.key === KeyCode.TAB) {\n key = isRtl ? KeyCode.LEFT : KeyCode.RIGHT;\n } else {\n key = event.key;\n }\n this.beans.navigation?.navigateToNextCell(\n null,\n key,\n { rowIndex, column, rowPinned: rowPinned || null },\n true\n );\n return true;\n }\n this.navigation?.ensureCellVisible({ rowIndex, column, rowPinned });\n if (backwards) {\n const rowCtrl = this.rowRenderer.getRowByPosition(nextRow);\n if (rowCtrl?.isFullWidth() && this.navigation?.tryToFocusFullWidthRow(nextRow, backwards)) {\n return true;\n }\n }\n this.setFocusedCell({\n rowIndex,\n column,\n rowPinned: _makeNull(rowPinned),\n forceBrowserFocus: true\n });\n this.beans.rangeSvc?.setRangeToCell({ rowIndex, rowPinned, column });\n return true;\n }\n if (canFocusOverlay && this.focusOverlay(backwards)) {\n return true;\n }\n if (backwards && this.focusLastHeader()) {\n return true;\n }\n return false;\n }\n focusAdvancedFilter(position) {\n this.advFilterFocusColumn = position?.column;\n return this.beans.advancedFilter?.getCtrl().focusHeaderComp() ?? false;\n }\n focusNextFromAdvancedFilter(backwards, forceFirstColumn) {\n const column = (forceFirstColumn ? void 0 : this.advFilterFocusColumn) ?? this.visibleCols.allCols?.[0];\n if (backwards) {\n return this.focusHeaderPosition({\n headerPosition: {\n column,\n headerRowIndex: getFocusHeaderRowCount(this.beans) - 1\n }\n });\n } else {\n return this.focusGridView({ column });\n }\n }\n clearAdvancedFilterColumn() {\n this.advFilterFocusColumn = void 0;\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/scrollVisibleService.ts\nvar ScrollVisibleService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"scrollVisibleSvc\";\n }\n wireBeans(beans) {\n this.ctrlsSvc = beans.ctrlsSvc;\n this.colAnimation = beans.colAnimation;\n }\n postConstruct() {\n this.getScrollbarWidth();\n this.addManagedEventListeners({\n displayedColumnsChanged: this.updateScrollVisible.bind(this),\n displayedColumnsWidthChanged: this.updateScrollVisible.bind(this)\n });\n }\n updateScrollVisible() {\n const { colAnimation } = this;\n if (colAnimation?.isActive()) {\n colAnimation.executeLaterVMTurn(() => {\n colAnimation.executeLaterVMTurn(() => this.updateScrollVisibleImpl());\n });\n } else {\n this.updateScrollVisibleImpl();\n }\n }\n updateScrollVisibleImpl() {\n const centerRowCtrl = this.ctrlsSvc.get(\"center\");\n if (!centerRowCtrl || this.colAnimation?.isActive()) {\n return;\n }\n const params = {\n horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),\n verticalScrollShowing: this.verticalScrollShowing\n };\n this.setScrollsVisible(params);\n this.updateScrollGap();\n }\n updateScrollGap() {\n const centerRowCtrl = this.ctrlsSvc.get(\"center\");\n const horizontalGap = centerRowCtrl.hasHorizontalScrollGap();\n const verticalGap = centerRowCtrl.hasVerticalScrollGap();\n const atLeastOneDifferent = this.horizontalScrollGap !== horizontalGap || this.verticalScrollGap !== verticalGap;\n if (atLeastOneDifferent) {\n this.horizontalScrollGap = horizontalGap;\n this.verticalScrollGap = verticalGap;\n this.eventSvc.dispatchEvent({\n type: \"scrollGapChanged\"\n });\n }\n }\n setScrollsVisible(params) {\n const atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing || this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n this.eventSvc.dispatchEvent({\n type: \"scrollVisibilityChanged\"\n });\n }\n }\n // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n // allow the user to provide the scroll width before we work it out.\n getScrollbarWidth() {\n if (this.scrollbarWidth == null) {\n const gridOptionsScrollbarWidth = this.gos.get(\"scrollbarWidth\");\n const useGridOptions = typeof gridOptionsScrollbarWidth === \"number\" && gridOptionsScrollbarWidth >= 0;\n const scrollbarWidth = useGridOptions ? gridOptionsScrollbarWidth : _getScrollbarWidth();\n if (scrollbarWidth != null) {\n this.scrollbarWidth = scrollbarWidth;\n this.eventSvc.dispatchEvent({\n type: \"scrollbarWidthChanged\"\n });\n }\n }\n return this.scrollbarWidth;\n }\n};\n\n// packages/ag-grid-community/src/gridDestroyService.ts\nvar GridDestroyService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"gridDestroySvc\";\n this.destroyCalled = false;\n }\n destroy() {\n if (this.destroyCalled) {\n return;\n }\n const { stateSvc, ctrlsSvc, context } = this.beans;\n this.eventSvc.dispatchEvent({\n type: \"gridPreDestroyed\",\n state: stateSvc?.getState() ?? {}\n });\n this.destroyCalled = true;\n ctrlsSvc.get(\"gridCtrl\")?.destroyGridUi();\n context.destroy();\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/events.ts\nvar ALWAYS_SYNC_GLOBAL_EVENTS = /* @__PURE__ */ new Set([\"gridPreDestroyed\", \"fillStart\", \"pasteStart\"]);\n\n// packages/ag-grid-community/src/gridOptionsDefault.ts\nvar GRID_OPTION_DEFAULTS = {\n suppressContextMenu: false,\n preventDefaultOnContextMenu: false,\n allowContextMenuWithControlKey: false,\n suppressMenuHide: true,\n enableBrowserTooltips: false,\n tooltipTrigger: \"hover\",\n tooltipShowDelay: 2e3,\n tooltipHideDelay: 1e4,\n tooltipMouseTrack: false,\n tooltipShowMode: \"standard\",\n tooltipInteraction: false,\n copyHeadersToClipboard: false,\n copyGroupHeadersToClipboard: false,\n clipboardDelimiter: \"\t\",\n suppressCopyRowsToClipboard: false,\n suppressCopySingleCellRanges: false,\n suppressLastEmptyLineOnPaste: false,\n suppressClipboardPaste: false,\n suppressClipboardApi: false,\n suppressCutToClipboard: false,\n maintainColumnOrder: false,\n enableStrictPivotColumnOrder: false,\n suppressFieldDotNotation: false,\n allowDragFromColumnsToolPanel: false,\n suppressMovableColumns: false,\n suppressColumnMoveAnimation: false,\n suppressMoveWhenColumnDragging: false,\n suppressDragLeaveHidesColumns: false,\n suppressRowGroupHidesColumns: false,\n suppressAutoSize: false,\n autoSizePadding: 20,\n skipHeaderOnAutoSize: false,\n singleClickEdit: false,\n suppressClickEdit: false,\n readOnlyEdit: false,\n stopEditingWhenCellsLoseFocus: false,\n enterNavigatesVertically: false,\n enterNavigatesVerticallyAfterEdit: false,\n enableCellEditingOnBackspace: false,\n undoRedoCellEditing: false,\n undoRedoCellEditingLimit: 10,\n suppressCsvExport: false,\n suppressExcelExport: false,\n cacheQuickFilter: false,\n includeHiddenColumnsInQuickFilter: false,\n excludeChildrenWhenTreeDataFiltering: false,\n enableAdvancedFilter: false,\n includeHiddenColumnsInAdvancedFilter: false,\n enableCharts: false,\n masterDetail: false,\n keepDetailRows: false,\n keepDetailRowsCount: 10,\n detailRowAutoHeight: false,\n tabIndex: 0,\n rowBuffer: 10,\n valueCache: false,\n valueCacheNeverExpires: false,\n enableCellExpressions: false,\n suppressTouch: false,\n suppressFocusAfterRefresh: false,\n suppressBrowserResizeObserver: false,\n suppressPropertyNamesCheck: false,\n suppressChangeDetection: false,\n debug: false,\n suppressLoadingOverlay: false,\n suppressNoRowsOverlay: false,\n pagination: false,\n paginationPageSize: 100,\n paginationPageSizeSelector: true,\n paginationAutoPageSize: false,\n paginateChildRows: false,\n suppressPaginationPanel: false,\n pivotMode: false,\n pivotPanelShow: \"never\",\n pivotDefaultExpanded: 0,\n pivotSuppressAutoColumn: false,\n suppressExpandablePivotGroups: false,\n functionsReadOnly: false,\n suppressAggFuncInHeader: false,\n alwaysAggregateAtRootLevel: false,\n aggregateOnlyChangedColumns: false,\n suppressAggFilteredOnly: false,\n removePivotHeaderRowWhenSingleValueColumn: false,\n animateRows: true,\n cellFlashDuration: 500,\n cellFadeDuration: 1e3,\n allowShowChangeAfterFilter: false,\n domLayout: \"normal\",\n ensureDomOrder: false,\n enableRtl: false,\n suppressColumnVirtualisation: false,\n suppressMaxRenderedRowRestriction: false,\n suppressRowVirtualisation: false,\n rowDragManaged: false,\n suppressRowDrag: false,\n suppressMoveWhenRowDragging: false,\n rowDragEntireRow: false,\n rowDragMultiRow: false,\n embedFullWidthRows: false,\n groupDisplayType: \"singleColumn\",\n groupDefaultExpanded: 0,\n groupMaintainOrder: false,\n groupSelectsChildren: false,\n groupSuppressBlankHeader: false,\n groupSelectsFiltered: false,\n showOpenedGroup: false,\n groupRemoveSingleChildren: false,\n groupRemoveLowestSingleChildren: false,\n groupHideOpenParents: false,\n groupAllowUnbalanced: false,\n rowGroupPanelShow: \"never\",\n suppressMakeColumnVisibleAfterUnGroup: false,\n treeData: false,\n rowGroupPanelSuppressSort: false,\n suppressGroupRowsSticky: false,\n rowModelType: \"clientSide\",\n asyncTransactionWaitMillis: 50,\n suppressModelUpdateAfterUpdateTransaction: false,\n cacheOverflowSize: 1,\n infiniteInitialRowCount: 1,\n serverSideInitialRowCount: 1,\n cacheBlockSize: 100,\n maxBlocksInCache: -1,\n maxConcurrentDatasourceRequests: 2,\n blockLoadDebounceMillis: 0,\n purgeClosedRowNodes: false,\n serverSideSortAllLevels: false,\n serverSideOnlyRefreshFilteredGroups: false,\n serverSidePivotResultFieldSeparator: \"_\",\n viewportRowModelPageSize: 5,\n viewportRowModelBufferSize: 5,\n alwaysShowHorizontalScroll: false,\n alwaysShowVerticalScroll: false,\n debounceVerticalScrollbar: false,\n suppressHorizontalScroll: false,\n suppressScrollOnNewData: false,\n suppressScrollWhenPopupsAreOpen: false,\n suppressAnimationFrame: false,\n suppressMiddleClickScrolls: false,\n suppressPreventDefaultOnMouseWheel: false,\n rowMultiSelectWithClick: false,\n suppressRowDeselection: false,\n suppressRowClickSelection: false,\n suppressCellFocus: false,\n suppressHeaderFocus: false,\n suppressMultiRangeSelection: false,\n enableCellTextSelection: false,\n enableRangeSelection: false,\n enableRangeHandle: false,\n enableFillHandle: false,\n fillHandleDirection: \"xy\",\n suppressClearOnFillReduction: false,\n accentedSort: false,\n unSortIcon: false,\n suppressMultiSort: false,\n alwaysMultiSort: false,\n suppressMaintainUnsortedOrder: false,\n suppressRowHoverHighlight: false,\n suppressRowTransform: false,\n columnHoverHighlight: false,\n deltaSort: false,\n enableGroupEdit: false,\n groupLockGroupColumns: 0,\n serverSideEnableClientSideSort: false,\n suppressServerSideFullWidthLoadingRow: false,\n pivotMaxGeneratedColumns: -1,\n columnMenu: \"new\",\n reactiveCustomComponents: true,\n suppressSetFilterByDefault: false,\n rowNumbers: false\n};\n\n// packages/ag-grid-community/src/gridOptionsService.ts\nvar changeSetId = 0;\nvar gridInstanceSequence = 0;\nvar GridOptionsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"gos\";\n this.domDataKey = \"__AG_\" + Math.random().toString();\n /** This is only used for the main DOM element */\n this.gridInstanceId = gridInstanceSequence++;\n this.propEventSvc = new LocalEventService();\n // responsible for calling the onXXX functions on gridOptions\n // It forces events defined in GridOptionsService.alwaysSyncGlobalEvents to be fired synchronously.\n // This is required for events such as GridPreDestroyed.\n // Other events can be fired asynchronously or synchronously depending on config.\n this.globalEventHandlerFactory = (restrictToSyncOnly) => {\n return (eventName, event) => {\n if (!this.isAlive()) {\n return;\n }\n const alwaysSync = ALWAYS_SYNC_GLOBAL_EVENTS.has(eventName);\n if (alwaysSync && !restrictToSyncOnly || !alwaysSync && restrictToSyncOnly) {\n return;\n }\n const eventHandlerName = _getCallbackForEvent(eventName);\n const eventHandler = this.gridOptions[eventHandlerName];\n if (typeof eventHandler === \"function\") {\n this.beans.frameworkOverrides.wrapOutgoing(() => {\n eventHandler(event);\n });\n }\n };\n };\n }\n wireBeans(beans) {\n this.gridOptions = beans.gridOptions;\n this.validation = beans.validation;\n this.api = beans.gridApi;\n this.gridId = beans.context.getGridId();\n }\n // This is quicker then having code call gridOptionsService.get('context')\n get gridOptionsContext() {\n return this.gridOptions[\"context\"];\n }\n postConstruct() {\n this.eventSvc.addGlobalListener(this.globalEventHandlerFactory().bind(this), true);\n this.eventSvc.addGlobalListener(this.globalEventHandlerFactory(true).bind(this), false);\n this.propEventSvc.setFrameworkOverrides(this.beans.frameworkOverrides);\n this.addManagedEventListeners({\n gridOptionsChanged: ({ options }) => {\n this.updateGridOptions({ options, force: true, source: \"gridOptionsUpdated\" });\n }\n });\n }\n /**\n * Get the raw value of the GridOptions property provided.\n * @param property\n */\n get(property) {\n return this.gridOptions[property] ?? GRID_OPTION_DEFAULTS[property];\n }\n /**\n * Get the GridOption callback but wrapped so that the common params of api and context are automatically applied to the params.\n * @param property GridOption callback properties based on the fact that this property has a callback with params extending AgGridCommon\n */\n getCallback(property) {\n return this.mergeGridCommonParams(this.gridOptions[property]);\n }\n /**\n * Returns `true` if a value has been specified for this GridOption.\n * @param property GridOption property\n */\n exists(property) {\n return _exists(this.gridOptions[property]);\n }\n /**\n * Wrap the user callback and attach the api and context to the params object on the way through.\n * @param callback User provided callback\n * @returns Wrapped callback where the params object not require api and context\n */\n mergeGridCommonParams(callback) {\n if (callback) {\n const wrapped = (callbackParams) => {\n return callback(this.addGridCommonParams(callbackParams));\n };\n return wrapped;\n }\n return callback;\n }\n updateGridOptions({\n options,\n force,\n source = \"api\"\n }) {\n const changeSet = { id: changeSetId++, properties: [] };\n const events = [];\n const { gridOptions, validation: validation2 } = this;\n for (const key of Object.keys(options)) {\n const value = options[key];\n validation2?.warnOnInitialPropertyUpdate(source, key);\n const shouldForce = force || typeof value === \"object\" && source === \"api\";\n const previousValue = gridOptions[key];\n if (shouldForce || previousValue !== value) {\n gridOptions[key] = value;\n const event = {\n type: key,\n currentValue: value,\n previousValue,\n changeSet,\n source\n };\n events.push(event);\n }\n }\n validation2?.processGridOptions(this.gridOptions);\n changeSet.properties = events.map((event) => event.type);\n events.forEach((event) => {\n _logIfDebug(this, `Updated property ${event.type} from`, event.previousValue, ` to `, event.currentValue);\n this.propEventSvc.dispatchEvent(event);\n });\n }\n addPropertyEventListener(key, listener) {\n this.propEventSvc.addEventListener(key, listener);\n }\n removePropertyEventListener(key, listener) {\n this.propEventSvc.removeEventListener(key, listener);\n }\n getDomDataKey() {\n return this.domDataKey;\n }\n /** Prefer _addGridCommonParams from gridOptionsUtils for bundle size savings */\n addGridCommonParams(params) {\n params.api = this.api;\n params.context = this.gridOptionsContext;\n return params;\n }\n assertModuleRegistered(moduleName, reasonOrId) {\n const registered = Array.isArray(moduleName) ? moduleName.some((modName) => this.isModuleRegistered(modName)) : this.isModuleRegistered(moduleName);\n if (!registered) {\n _error(200, {\n ...this.getModuleErrorParams(),\n moduleName,\n reasonOrId\n });\n }\n return registered;\n }\n getModuleErrorParams() {\n return {\n gridId: this.gridId,\n gridScoped: _areModulesGridScoped(),\n rowModelType: this.get(\"rowModelType\"),\n isUmd: _isUmd()\n };\n }\n isModuleRegistered(moduleName) {\n return _isModuleRegistered(moduleName, this.gridId, this.get(\"rowModelType\"));\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/column/headerComp.ts\nfunction getHeaderCompElementParams(includeSortIndicator) {\n const hiddenAttrs = { \"aria-hidden\": \"true\" };\n return {\n tag: \"div\",\n cls: \"ag-cell-label-container\",\n role: \"presentation\",\n children: [\n {\n tag: \"span\",\n ref: \"eMenu\",\n cls: \"ag-header-icon ag-header-cell-menu-button\",\n attrs: hiddenAttrs\n },\n {\n tag: \"span\",\n ref: \"eFilterButton\",\n cls: \"ag-header-icon ag-header-cell-filter-button\",\n attrs: hiddenAttrs\n },\n {\n tag: \"div\",\n ref: \"eLabel\",\n cls: \"ag-header-cell-label\",\n role: \"presentation\",\n children: [\n { tag: \"span\", ref: \"eText\", cls: \"ag-header-cell-text\" },\n {\n tag: \"span\",\n ref: \"eFilter\",\n cls: \"ag-header-icon ag-header-label-icon ag-filter-icon\",\n attrs: hiddenAttrs\n },\n includeSortIndicator ? { tag: \"ag-sort-indicator\", ref: \"eSortIndicator\" } : null\n ]\n }\n ]\n };\n}\nvar HeaderCompElement = getHeaderCompElementParams(true);\nvar HeaderCompElementNoSort = getHeaderCompElementParams(false);\nvar HeaderComp = class extends Component {\n constructor() {\n super(...arguments);\n this.eFilter = RefPlaceholder;\n this.eFilterButton = RefPlaceholder;\n this.eSortIndicator = RefPlaceholder;\n this.eMenu = RefPlaceholder;\n this.eLabel = RefPlaceholder;\n this.eText = RefPlaceholder;\n /**\n * Selectors for custom headers templates\n */\n this.eSortOrder = RefPlaceholder;\n this.eSortAsc = RefPlaceholder;\n this.eSortDesc = RefPlaceholder;\n this.eSortMixed = RefPlaceholder;\n this.eSortNone = RefPlaceholder;\n this.isLoadingInnerComponent = false;\n }\n refresh(params) {\n const oldParams = this.params;\n this.params = params;\n if (this.workOutTemplate(params, !!this.beans?.sortSvc) != this.currentTemplate || this.workOutShowMenu() != this.currentShowMenu || params.enableSorting != this.currentSort || this.currentSuppressMenuHide != null && this.shouldSuppressMenuHide() != this.currentSuppressMenuHide || oldParams.enableFilterButton != params.enableFilterButton || oldParams.enableFilterIcon != params.enableFilterIcon) {\n return false;\n }\n if (this.innerHeaderComponent) {\n const mergedParams = { ...params };\n _mergeDeep(mergedParams, params.innerHeaderComponentParams);\n this.innerHeaderComponent.refresh?.(mergedParams);\n } else {\n this.setDisplayName(params);\n }\n return true;\n }\n workOutTemplate(params, isSorting) {\n const paramsTemplate = params.template;\n if (paramsTemplate) {\n return paramsTemplate?.trim ? paramsTemplate.trim() : paramsTemplate;\n } else {\n return isSorting ? HeaderCompElement : HeaderCompElementNoSort;\n }\n }\n init(params) {\n this.params = params;\n const { sortSvc, touchSvc, rowNumbersSvc, userCompFactory } = this.beans;\n const sortComp = sortSvc?.getSortIndicatorSelector();\n this.currentTemplate = this.workOutTemplate(params, !!sortComp);\n this.setTemplate(this.currentTemplate, sortComp ? [sortComp] : void 0);\n touchSvc?.setupForHeader(this);\n this.setMenu();\n this.setupSort();\n rowNumbersSvc?.setupForHeader(this);\n this.setupFilterIcon();\n this.setupFilterButton();\n this.workOutInnerHeaderComponent(userCompFactory, params);\n this.setDisplayName(params);\n }\n workOutInnerHeaderComponent(userCompFactory, params) {\n const userCompDetails = _getInnerHeaderCompDetails(userCompFactory, params, params);\n if (!userCompDetails) {\n return;\n }\n this.isLoadingInnerComponent = true;\n userCompDetails.newAgStackInstance().then((comp) => {\n this.isLoadingInnerComponent = false;\n if (!comp) {\n return;\n }\n if (this.isAlive()) {\n this.innerHeaderComponent = comp;\n this.eText.appendChild(comp.getGui());\n } else {\n this.destroyBean(comp);\n }\n });\n }\n setDisplayName(params) {\n const { displayName } = params;\n const oldDisplayName = this.currentDisplayName;\n this.currentDisplayName = displayName;\n if (oldDisplayName === displayName || this.innerHeaderComponent || this.isLoadingInnerComponent) {\n return;\n }\n const displayNameSanitised = _escapeString(displayName, true);\n this.eText.textContent = displayNameSanitised;\n }\n addInIcon(iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n const eIcon = _createIconNoSpan(iconName, this.beans, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n }\n workOutShowMenu() {\n return this.params.enableMenu && !!this.beans.menuSvc?.isHeaderMenuButtonEnabled();\n }\n shouldSuppressMenuHide() {\n return !!this.beans.menuSvc?.isHeaderMenuButtonAlwaysShowEnabled();\n }\n setMenu() {\n if (!this.eMenu) {\n return;\n }\n this.currentShowMenu = this.workOutShowMenu();\n if (!this.currentShowMenu) {\n _removeFromParent(this.eMenu);\n this.eMenu = void 0;\n return;\n }\n const { gos, eMenu, params } = this;\n const isLegacyMenu = _isLegacyMenuEnabled(gos);\n this.addInIcon(isLegacyMenu ? \"menu\" : \"menuAlt\", eMenu, params.column);\n eMenu.classList.toggle(\"ag-header-menu-icon\", !isLegacyMenu);\n const currentSuppressMenuHide = this.shouldSuppressMenuHide();\n this.currentSuppressMenuHide = currentSuppressMenuHide;\n this.addManagedElementListeners(eMenu, { click: () => this.showColumnMenu(this.eMenu) });\n this.toggleMenuAlwaysShow(currentSuppressMenuHide);\n }\n toggleMenuAlwaysShow(alwaysShow) {\n this.eMenu?.classList.toggle(\"ag-header-menu-always-show\", alwaysShow);\n }\n showColumnMenu(element) {\n const { currentSuppressMenuHide, params } = this;\n if (!currentSuppressMenuHide) {\n this.toggleMenuAlwaysShow(true);\n }\n params.showColumnMenu(element, () => {\n if (!currentSuppressMenuHide) {\n this.toggleMenuAlwaysShow(false);\n }\n });\n }\n onMenuKeyboardShortcut(isFilterShortcut) {\n const { params, gos, beans, eMenu, eFilterButton } = this;\n const column = params.column;\n const isLegacyMenuEnabled = _isLegacyMenuEnabled(gos);\n if (isFilterShortcut && !isLegacyMenuEnabled) {\n if (beans.menuSvc?.isFilterMenuInHeaderEnabled(column)) {\n params.showFilter(eFilterButton ?? eMenu ?? this.getGui());\n return true;\n }\n } else if (params.enableMenu) {\n this.showColumnMenu(eMenu ?? eFilterButton ?? this.getGui());\n return true;\n }\n return false;\n }\n setupSort() {\n const { sortSvc } = this.beans;\n if (!sortSvc) {\n return;\n }\n const { enableSorting, column } = this.params;\n this.currentSort = enableSorting;\n if (!this.eSortIndicator) {\n this.eSortIndicator = this.createBean(sortSvc.createSortIndicator(true));\n const { eSortIndicator, eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone } = this;\n eSortIndicator.attachCustomElements(eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone);\n }\n this.eSortIndicator.setupSort(column);\n if (!this.currentSort) {\n return;\n }\n sortSvc.setupHeader(this, column, this.eLabel);\n }\n setupFilterIcon() {\n const { eFilter, params } = this;\n if (!eFilter) {\n return;\n }\n this.configureFilter(params.enableFilterIcon, eFilter, this.onFilterChangedIcon.bind(this), \"filterActive\");\n }\n setupFilterButton() {\n const { eFilterButton, params } = this;\n if (!eFilterButton) {\n return;\n }\n const configured = this.configureFilter(\n params.enableFilterButton,\n eFilterButton,\n this.onFilterChangedButton.bind(this),\n \"filter\"\n );\n if (configured) {\n this.addManagedElementListeners(eFilterButton, {\n click: () => params.showFilter(eFilterButton)\n });\n } else {\n this.eFilterButton = void 0;\n }\n }\n configureFilter(enabled, element, filterChangedCallback, icon) {\n if (!enabled) {\n _removeFromParent(element);\n return false;\n }\n const column = this.params.column;\n this.addInIcon(icon, element, column);\n this.addManagedListeners(column, { filterChanged: filterChangedCallback });\n filterChangedCallback();\n return true;\n }\n onFilterChangedIcon() {\n const filterPresent = this.params.column.isFilterActive();\n _setDisplayed(this.eFilter, filterPresent, { skipAriaHidden: true });\n }\n onFilterChangedButton() {\n const filterPresent = this.params.column.isFilterActive();\n this.eFilterButton.classList.toggle(\"ag-filter-active\", filterPresent);\n }\n getAnchorElementForMenu(isFilter) {\n const { eFilterButton, eMenu } = this;\n if (isFilter) {\n return eFilterButton ?? eMenu ?? this.getGui();\n }\n return eMenu ?? eFilterButton ?? this.getGui();\n }\n destroy() {\n super.destroy();\n if (this.innerHeaderComponent) {\n this.destroyBean(this.innerHeaderComponent);\n this.innerHeaderComponent = void 0;\n }\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/columnGroup/headerGroupComp.ts\nvar HeaderGroupCompElement = {\n tag: \"div\",\n cls: \"ag-header-group-cell-label\",\n role: \"presentation\",\n children: [\n { tag: \"span\", ref: \"agLabel\", cls: \"ag-header-group-text\", role: \"presentation\" },\n { tag: \"span\", ref: \"agOpened\", cls: `ag-header-icon ag-header-expand-icon ag-header-expand-icon-expanded` },\n { tag: \"span\", ref: \"agClosed\", cls: `ag-header-icon ag-header-expand-icon ag-header-expand-icon-collapsed` }\n ]\n};\nvar HeaderGroupComp = class extends Component {\n constructor() {\n super(HeaderGroupCompElement);\n this.agOpened = RefPlaceholder;\n this.agClosed = RefPlaceholder;\n this.agLabel = RefPlaceholder;\n this.isLoadingInnerComponent = false;\n }\n init(params) {\n const { userCompFactory } = this.beans;\n this.params = params;\n this.checkWarnings();\n this.workOutInnerHeaderGroupComponent(userCompFactory, params);\n this.setupLabel(params);\n this.addGroupExpandIcon(params);\n this.setupExpandIcons();\n }\n checkWarnings() {\n const paramsAny = this.params;\n if (paramsAny.template) {\n _warn(89);\n }\n }\n workOutInnerHeaderGroupComponent(userCompFactory, params) {\n const userCompDetails = _getInnerHeaderGroupCompDetails(userCompFactory, params, params);\n if (!userCompDetails) {\n return;\n }\n this.isLoadingInnerComponent = true;\n userCompDetails.newAgStackInstance().then((comp) => {\n this.isLoadingInnerComponent = false;\n if (!comp) {\n return;\n }\n if (this.isAlive()) {\n this.innerHeaderGroupComponent = comp;\n this.agLabel.appendChild(comp.getGui());\n } else {\n this.destroyBean(comp);\n }\n });\n }\n setupExpandIcons() {\n const {\n agOpened,\n agClosed,\n params: { columnGroup },\n beans\n } = this;\n this.addInIcon(\"columnGroupOpened\", agOpened);\n this.addInIcon(\"columnGroupClosed\", agClosed);\n const expandAction = (event) => {\n if (_isStopPropagationForAgGrid(event)) {\n return;\n }\n const newExpandedValue = !columnGroup.isExpanded();\n beans.colGroupSvc.setColumnGroupOpened(\n columnGroup.getProvidedColumnGroup(),\n newExpandedValue,\n \"uiColumnExpanded\"\n );\n };\n this.addTouchAndClickListeners(beans, agClosed, expandAction);\n this.addTouchAndClickListeners(beans, agOpened, expandAction);\n const stopPropagationAction = (event) => {\n _stopPropagationForAgGrid(event);\n };\n this.addManagedElementListeners(agClosed, { dblclick: stopPropagationAction });\n this.addManagedElementListeners(agOpened, { dblclick: stopPropagationAction });\n this.addManagedElementListeners(this.getGui(), { dblclick: expandAction });\n this.updateIconVisibility();\n const providedColumnGroup = columnGroup.getProvidedColumnGroup();\n const updateIcon = this.updateIconVisibility.bind(this);\n this.addManagedListeners(providedColumnGroup, {\n expandedChanged: updateIcon,\n expandableChanged: updateIcon\n });\n }\n addTouchAndClickListeners(beans, eElement, action) {\n beans.touchSvc?.setupForHeaderGroup(this, eElement, action);\n this.addManagedElementListeners(eElement, { click: action });\n }\n updateIconVisibility() {\n const {\n agOpened,\n agClosed,\n params: { columnGroup }\n } = this;\n if (columnGroup.isExpandable()) {\n const expanded = columnGroup.isExpanded();\n _setDisplayed(agOpened, expanded);\n _setDisplayed(agClosed, !expanded);\n } else {\n _setDisplayed(agOpened, false);\n _setDisplayed(agClosed, false);\n }\n }\n addInIcon(iconName, element) {\n const eIcon = _createIconNoSpan(iconName, this.beans, null);\n if (eIcon) {\n element.appendChild(eIcon);\n }\n }\n addGroupExpandIcon(params) {\n if (!params.columnGroup.isExpandable()) {\n const { agOpened, agClosed } = this;\n _setDisplayed(agOpened, false);\n _setDisplayed(agClosed, false);\n return;\n }\n }\n setupLabel(params) {\n const { displayName, columnGroup } = params;\n const hasInnerComponent = this.innerHeaderGroupComponent || this.isLoadingInnerComponent;\n if (_exists(displayName) && !hasInnerComponent) {\n const displayNameSanitised = _escapeString(displayName, true);\n this.agLabel.textContent = displayNameSanitised;\n }\n this.addOrRemoveCssClass(\"ag-sticky-label\", !columnGroup.getColGroupDef()?.suppressStickyLabel);\n }\n destroy() {\n super.destroy();\n if (this.innerHeaderGroupComponent) {\n this.destroyBean(this.innerHeaderGroupComponent);\n this.innerHeaderGroupComponent = void 0;\n }\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/headerModule.ts\nvar ColumnHeaderCompModule = {\n moduleName: \"ColumnHeaderComp\",\n version: VERSION,\n userComponents: {\n agColumnHeader: HeaderComp\n },\n icons: {\n // button to launch legacy column menu\n menu: \"menu\",\n // button to launch new enterprise column menu\n menuAlt: \"menu-alt\"\n }\n};\nvar ColumnGroupHeaderCompModule = {\n moduleName: \"ColumnGroupHeaderComp\",\n version: VERSION,\n userComponents: {\n agColumnGroupHeader: HeaderGroupComp\n },\n icons: {\n // header column group shown when expanded (click to contract)\n columnGroupOpened: \"expanded\",\n // header column group shown when contracted (click to expand)\n columnGroupClosed: \"contracted\"\n }\n};\n\n// packages/ag-grid-community/src/misc/animationFrameService.ts\nvar AnimationFrameService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"animationFrameSvc\";\n // p1 and p2 are create tasks are to do with row and cell creation.\n // for them we want to execute according to row order, so we use\n // TaskItem so we know what index the item is for.\n this.p1 = { list: [], sorted: false };\n // eg drawing back-ground of rows\n this.p2 = { list: [], sorted: false };\n // eg cell renderers, adding hover functionality\n this.f1 = { list: [], sorted: false };\n // eg framework cell renderers\n // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n // important.\n this.destroyTasks = [];\n this.ticking = false;\n // we need to know direction of scroll, to build up rows in the direction of\n // the scroll. eg if user scrolls down, we extend the rows by building down.\n this.scrollGoingDown = true;\n this.lastScrollTop = 0;\n this.taskCount = 0;\n }\n setScrollTop(scrollTop) {\n this.scrollGoingDown = scrollTop >= this.lastScrollTop;\n if (scrollTop === 0) {\n this.scrollGoingDown = true;\n }\n this.lastScrollTop = scrollTop;\n }\n postConstruct() {\n this.active = !this.gos.get(\"suppressAnimationFrame\");\n this.batchFrameworkComps = this.beans.frameworkOverrides.batchFrameworkComps;\n }\n // this method is for our AG Grid sanity only - if animation frames are turned off,\n // then no place in the code should be looking to add any work to be done in animation\n // frames. this stops bugs - where some code is asking for a frame to be executed\n // when it should not.\n verify() {\n if (this.active === false) {\n _warn(92);\n }\n }\n createTask(task, index, list, isFramework) {\n this.verify();\n let taskList = list;\n if (isFramework && this.batchFrameworkComps) {\n taskList = \"f1\";\n }\n const taskItem = { task, index, createOrder: ++this.taskCount };\n this.addTaskToList(this[taskList], taskItem);\n this.schedule();\n }\n addTaskToList(taskList, task) {\n taskList.list.push(task);\n taskList.sorted = false;\n }\n sortTaskList(taskList) {\n if (taskList.sorted) {\n return;\n }\n const sortDirection = this.scrollGoingDown ? 1 : -1;\n taskList.list.sort(\n (a, b) => a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder\n );\n taskList.sorted = true;\n }\n addDestroyTask(task) {\n this.verify();\n this.destroyTasks.push(task);\n this.schedule();\n }\n executeFrame(millis) {\n const { p1, p2, f1, destroyTasks, beans } = this;\n const { ctrlsSvc, frameworkOverrides } = beans;\n const p1Tasks = p1.list;\n const p2Tasks = p2.list;\n const f1Tasks = f1.list;\n const frameStart = Date.now();\n let duration = 0;\n const noMaxMillis = millis <= 0;\n const scrollFeature = ctrlsSvc.getScrollFeature();\n while (noMaxMillis || duration < millis) {\n const gridBodyDidSomething = scrollFeature.scrollGridIfNeeded();\n if (!gridBodyDidSomething) {\n let task;\n if (p1Tasks.length) {\n this.sortTaskList(p1);\n task = p1Tasks.pop().task;\n } else if (p2Tasks.length) {\n this.sortTaskList(p2);\n task = p2Tasks.pop().task;\n } else if (f1Tasks.length) {\n frameworkOverrides.wrapOutgoing(() => {\n while (noMaxMillis || duration < millis) {\n const gridBodyDidSomething2 = scrollFeature.scrollGridIfNeeded();\n if (!gridBodyDidSomething2) {\n if (f1Tasks.length) {\n this.sortTaskList(f1);\n task = f1Tasks.pop().task;\n task();\n } else {\n break;\n }\n } else {\n break;\n }\n duration = Date.now() - frameStart;\n }\n });\n task = () => {\n };\n } else if (destroyTasks.length) {\n task = destroyTasks.pop();\n } else {\n break;\n }\n task();\n }\n duration = Date.now() - frameStart;\n }\n if (p1Tasks.length || p2Tasks.length || f1Tasks.length || destroyTasks.length) {\n this.requestFrame();\n } else {\n this.ticking = false;\n }\n }\n flushAllFrames() {\n if (!this.active) {\n return;\n }\n this.executeFrame(-1);\n }\n schedule() {\n if (!this.active) {\n return;\n }\n if (!this.ticking) {\n this.ticking = true;\n this.requestFrame();\n }\n }\n requestFrame() {\n const callback = this.executeFrame.bind(this, 60);\n _requestAnimationFrame(this.beans, callback);\n }\n isQueueEmpty() {\n return !this.ticking;\n }\n};\n\n// packages/ag-grid-community/src/misc/animationFrameModule.ts\nvar AnimationFrameModule = {\n moduleName: \"AnimationFrame\",\n version: VERSION,\n beans: [AnimationFrameService]\n};\n\n// packages/ag-grid-community/src/misc/touchService.ts\nvar TouchService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"touchSvc\";\n }\n mockBodyContextMenu(ctrl, listener) {\n this.mockContextMenu(ctrl, ctrl.eBodyViewport, listener);\n }\n mockHeaderContextMenu(ctrl, listener) {\n this.mockContextMenu(ctrl, ctrl.eGui, listener);\n }\n mockRowContextMenu(ctrl) {\n if (!_isIOSUserAgent()) {\n return;\n }\n const listener = (mouseListener, touch, touchEvent) => {\n const { rowCtrl, cellCtrl } = ctrl.getControlsForEventTarget(touchEvent?.target ?? null);\n if (cellCtrl?.column) {\n cellCtrl.dispatchCellContextMenuEvent(touchEvent ?? null);\n }\n this.beans.contextMenuSvc?.handleContextMenuMouseEvent(void 0, touchEvent, rowCtrl, cellCtrl);\n };\n this.mockContextMenu(ctrl, ctrl.element, listener);\n }\n handleCellDoubleClick(ctrl, mouseEvent) {\n const isDoubleClickOnIPad = () => {\n if (!_isIOSUserAgent() || _isEventSupported(\"dblclick\")) {\n return false;\n }\n const nowMillis = Date.now();\n const res = nowMillis - ctrl.lastIPadMouseClickEvent < 200;\n ctrl.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n if (isDoubleClickOnIPad()) {\n ctrl.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault();\n return true;\n }\n return false;\n }\n setupForHeader(comp) {\n const { gos, sortSvc } = this.beans;\n if (gos.get(\"suppressTouch\")) {\n return;\n }\n const { params, eMenu, eFilterButton } = comp;\n const touchListener = new TouchListener(comp.getGui(), true);\n const suppressMenuHide = comp.shouldSuppressMenuHide();\n const tapMenuButton = suppressMenuHide && _exists(eMenu);\n const menuTouchListener = tapMenuButton ? new TouchListener(eMenu, true) : touchListener;\n if (params.enableMenu) {\n const eventType = tapMenuButton ? \"tap\" : \"longTap\";\n const showMenuFn = (event) => params.showColumnMenuAfterMouseClick(event.touchStart);\n comp.addManagedListeners(menuTouchListener, { [eventType]: showMenuFn });\n }\n if (params.enableSorting) {\n const tapListener = (event) => {\n const target = event.touchStart.target;\n if (suppressMenuHide && (eMenu?.contains(target) || eFilterButton?.contains(target))) {\n return;\n }\n sortSvc?.progressSort(params.column, false, \"uiColumnSorted\");\n };\n comp.addManagedListeners(touchListener, { tap: tapListener });\n }\n if (params.enableFilterButton && eFilterButton) {\n const filterButtonTouchListener = new TouchListener(eFilterButton, true);\n comp.addManagedListeners(filterButtonTouchListener, {\n tap: () => params.showFilter(eFilterButton)\n });\n comp.addDestroyFunc(() => filterButtonTouchListener.destroy());\n }\n comp.addDestroyFunc(() => touchListener.destroy());\n if (tapMenuButton) {\n comp.addDestroyFunc(() => menuTouchListener.destroy());\n }\n }\n setupForHeaderGroup(comp, eElement, action) {\n const touchListener = new TouchListener(eElement, true);\n comp.addManagedListeners(touchListener, { tap: action });\n comp.addDestroyFunc(() => touchListener.destroy());\n }\n mockContextMenu(ctrl, element, listener) {\n if (!_isIOSUserAgent()) {\n return;\n }\n const touchListener = new TouchListener(element);\n const longTapListener = (event) => {\n if (!_isEventFromThisGrid(this.gos, event.touchEvent)) {\n return;\n }\n listener(void 0, event.touchStart, event.touchEvent);\n };\n ctrl.addManagedListeners(touchListener, { longTap: longTapListener });\n ctrl.addDestroyFunc(() => touchListener.destroy());\n }\n};\n\n// packages/ag-grid-community/src/misc/touchModule.ts\nvar TouchModule = {\n moduleName: \"Touch\",\n version: VERSION,\n beans: [TouchService]\n};\n\n// packages/ag-grid-community/src/navigation/cellNavigationService.ts\nvar CellNavigationService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"cellNavigation\";\n }\n wireBeans(beans) {\n this.rowSpanSvc = beans.rowSpanSvc;\n }\n // returns null if no cell to focus on, ie at the end of the grid\n getNextCellToFocus(key, focusedCell, ctrlPressed = false) {\n if (ctrlPressed) {\n return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);\n }\n return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);\n }\n getNextCellToFocusWithCtrlPressed(key, focusedCell) {\n const upKey = key === KeyCode.UP;\n const downKey = key === KeyCode.DOWN;\n const leftKey = key === KeyCode.LEFT;\n let column;\n let rowIndex;\n const { pageBounds, gos, visibleCols } = this.beans;\n if (upKey || downKey) {\n rowIndex = upKey ? pageBounds.getFirstRow() : pageBounds.getLastRow();\n column = focusedCell.column;\n } else {\n const isRtl = gos.get(\"enableRtl\");\n rowIndex = focusedCell.rowIndex;\n const allColumns = leftKey !== isRtl ? visibleCols.allCols : [...visibleCols.allCols].reverse();\n column = allColumns.find(\n (col) => this.isCellGoodToFocusOn({\n rowIndex,\n rowPinned: null,\n column: col\n })\n );\n }\n return column ? {\n rowIndex,\n rowPinned: null,\n column\n } : null;\n }\n getNextCellToFocusWithoutCtrlPressed(key, focusedCell) {\n let pointer = focusedCell;\n let finished = false;\n while (!finished) {\n switch (key) {\n case KeyCode.UP:\n pointer = this.getCellAbove(pointer);\n break;\n case KeyCode.DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case KeyCode.RIGHT:\n pointer = this.gos.get(\"enableRtl\") ? this.getCellToLeft(pointer) : this.getCellToRight(pointer);\n break;\n case KeyCode.LEFT:\n pointer = this.gos.get(\"enableRtl\") ? this.getCellToRight(pointer) : this.getCellToLeft(pointer);\n break;\n default:\n pointer = null;\n _warn(8, { key });\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n } else {\n finished = true;\n }\n }\n return pointer;\n }\n isCellGoodToFocusOn(gridCell) {\n const column = gridCell.column;\n let rowNode;\n const { pinnedRowModel, rowModel } = this.beans;\n switch (gridCell.rowPinned) {\n case \"top\":\n rowNode = pinnedRowModel?.getPinnedTopRow(gridCell.rowIndex);\n break;\n case \"bottom\":\n rowNode = pinnedRowModel?.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = rowModel.getRow(gridCell.rowIndex);\n break;\n }\n if (!rowNode) {\n return false;\n }\n const suppressNavigable = this.isSuppressNavigable(column, rowNode);\n return !suppressNavigable;\n }\n getCellToLeft(lastCell) {\n if (!lastCell) {\n return null;\n }\n const colToLeft = this.beans.visibleCols.getColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n rowPinned: lastCell.rowPinned\n };\n }\n getCellToRight(lastCell) {\n if (!lastCell) {\n return null;\n }\n const colToRight = this.beans.visibleCols.getColAfter(lastCell.column);\n if (!colToRight) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n rowPinned: lastCell.rowPinned\n };\n }\n getCellBelow(lastCell) {\n if (!lastCell) {\n return null;\n }\n const adjustedLastCell = this.rowSpanSvc?.getCellEnd(lastCell) ?? lastCell;\n const rowBelow = _getRowBelow(this.beans, adjustedLastCell);\n if (rowBelow) {\n return {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n rowPinned: rowBelow.rowPinned\n };\n }\n return null;\n }\n getCellAbove(lastCell) {\n if (!lastCell) {\n return null;\n }\n const adjustedLastCell = this.rowSpanSvc?.getCellStart(lastCell) ?? lastCell;\n const rowAbove = _getRowAbove(this.beans, {\n rowIndex: adjustedLastCell.rowIndex,\n rowPinned: adjustedLastCell.rowPinned\n });\n if (rowAbove) {\n return {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n rowPinned: rowAbove.rowPinned\n };\n }\n return null;\n }\n getNextTabbedCell(gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n return this.getNextTabbedCellForwards(gridCell);\n }\n getNextTabbedCellForwards(gridCell) {\n const { visibleCols, pagination } = this.beans;\n const displayedColumns = visibleCols.allCols;\n let newRowIndex = gridCell.rowIndex;\n let newFloating = gridCell.rowPinned;\n let newColumn = visibleCols.getColAfter(gridCell.column);\n if (!newColumn) {\n newColumn = displayedColumns[0];\n const rowBelow = _getRowBelow(this.beans, gridCell);\n if (_missing(rowBelow)) {\n return null;\n }\n if (!rowBelow.rowPinned && !(pagination?.isRowInPage(rowBelow.rowIndex) ?? true)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n }\n getNextTabbedCellBackwards(gridCell) {\n const { beans } = this;\n const { visibleCols, pagination } = beans;\n const displayedColumns = visibleCols.allCols;\n let newRowIndex = gridCell.rowIndex;\n let newFloating = gridCell.rowPinned;\n let newColumn = visibleCols.getColBefore(gridCell.column);\n if (!newColumn) {\n newColumn = _last(displayedColumns);\n const rowAbove = _getRowAbove(beans, { rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n if (_missing(rowAbove)) {\n return null;\n }\n if (!rowAbove.rowPinned && !(pagination?.isRowInPage(rowAbove.rowIndex) ?? true)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n }\n isSuppressNavigable(column, rowNode) {\n const { suppressNavigable } = column.colDef;\n if (typeof suppressNavigable === \"boolean\") {\n return suppressNavigable;\n }\n if (typeof suppressNavigable === \"function\") {\n const params = column.createColumnFunctionCallbackParams(rowNode);\n const userFunc = suppressNavigable;\n return userFunc(params);\n }\n return false;\n }\n};\n\n// packages/ag-grid-community/src/navigation/navigationApi.ts\nfunction getFocusedCell(beans) {\n return beans.focusSvc.getFocusedCell();\n}\nfunction clearFocusedCell(beans) {\n return beans.focusSvc.clearFocusedCell();\n}\nfunction setFocusedCell(beans, rowIndex, colKey, rowPinned) {\n beans.focusSvc.setFocusedCell({ rowIndex, column: colKey, rowPinned, forceBrowserFocus: true });\n}\nfunction tabToNextCell(beans, event) {\n return beans.navigation?.tabToNextCell(false, event) ?? false;\n}\nfunction tabToPreviousCell(beans, event) {\n return beans.navigation?.tabToNextCell(true, event) ?? false;\n}\nfunction setFocusedHeader(beans, colKey, floatingFilter = false) {\n const headerPosition = beans.headerNavigation?.getHeaderPositionForColumn(colKey, floatingFilter);\n if (!headerPosition) {\n return;\n }\n beans.focusSvc.focusHeaderPosition({ headerPosition });\n}\n\n// packages/ag-grid-community/src/navigation/navigationService.ts\nvar NavigationService = class extends BeanStub {\n constructor() {\n super();\n this.beanName = \"navigation\";\n this.onPageDown = _throttle(this.onPageDown, 100);\n this.onPageUp = _throttle(this.onPageUp, 100);\n }\n postConstruct() {\n this.beans.ctrlsSvc.whenReady(this, (p) => {\n this.gridBodyCon = p.gridBodyCtrl;\n });\n }\n handlePageScrollingKey(event, fromFullWidth = false) {\n const key = event.key;\n const alt = event.altKey;\n const ctrl = event.ctrlKey || event.metaKey;\n const rangeServiceShouldHandleShift = !!this.beans.rangeSvc && event.shiftKey;\n const currentCell = _getCellPositionForEvent(this.gos, event);\n let processed = false;\n switch (key) {\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n if (!ctrl && !alt) {\n this.onHomeOrEndKey(key);\n processed = true;\n }\n break;\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (!currentCell) {\n return false;\n }\n if (ctrl && !alt && !rangeServiceShouldHandleShift) {\n this.onCtrlUpDownLeftRight(key, currentCell);\n processed = true;\n }\n break;\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n if (!ctrl && !alt) {\n processed = this.handlePageUpDown(key, currentCell, fromFullWidth);\n }\n break;\n }\n if (processed) {\n event.preventDefault();\n }\n return processed;\n }\n handlePageUpDown(key, currentCell, fromFullWidth) {\n if (fromFullWidth) {\n currentCell = this.beans.focusSvc.getFocusedCell();\n }\n if (!currentCell) {\n return false;\n }\n if (key === KeyCode.PAGE_UP) {\n this.onPageUp(currentCell);\n } else {\n this.onPageDown(currentCell);\n }\n return true;\n }\n navigateTo(navigateParams) {\n const { scrollIndex, scrollType, scrollColumn, focusIndex, focusColumn } = navigateParams;\n const { scrollFeature } = this.gridBodyCon;\n if (_exists(scrollColumn) && !scrollColumn.isPinned()) {\n scrollFeature.ensureColumnVisible(scrollColumn);\n }\n if (_exists(scrollIndex)) {\n scrollFeature.ensureIndexVisible(scrollIndex, scrollType);\n }\n if (!navigateParams.isAsync) {\n scrollFeature.ensureIndexVisible(focusIndex);\n }\n const { focusSvc, rangeSvc } = this.beans;\n focusSvc.setFocusedCell({\n rowIndex: focusIndex,\n column: focusColumn,\n rowPinned: null,\n forceBrowserFocus: true\n });\n rangeSvc?.setRangeToCell({ rowIndex: focusIndex, rowPinned: null, column: focusColumn });\n }\n // this method is throttled, see the `constructor`\n onPageDown(gridCell) {\n const beans = this.beans;\n const scrollPosition = getVScroll(beans);\n const pixelsInOnePage = this.getViewportHeight();\n const { pageBounds, rowModel, rowAutoHeight } = beans;\n const pagingPixelOffset = pageBounds.getPixelOffset();\n const currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n const currentPageBottomRow = rowModel.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n if (rowAutoHeight?.active) {\n this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);\n } else {\n this.navigateToNextPage(gridCell, currentPageBottomRow);\n }\n }\n // this method is throttled, see the `constructor`\n onPageUp(gridCell) {\n const beans = this.beans;\n const scrollPosition = getVScroll(beans);\n const { pageBounds, rowModel, rowAutoHeight } = beans;\n const pagingPixelOffset = pageBounds.getPixelOffset();\n const currentPageTopPixel = scrollPosition.top;\n const currentPageTopRow = rowModel.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n if (rowAutoHeight?.active) {\n this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);\n } else {\n this.navigateToNextPage(gridCell, currentPageTopRow, true);\n }\n }\n navigateToNextPage(gridCell, scrollIndex, up = false) {\n const { pageBounds, rowModel } = this.beans;\n const pixelsInOnePage = this.getViewportHeight();\n const firstRow = pageBounds.getFirstRow();\n const lastRow = pageBounds.getLastRow();\n const pagingPixelOffset = pageBounds.getPixelOffset();\n const currentRowNode = rowModel.getRow(gridCell.rowIndex);\n const rowPixelDiff = up ? (\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n currentRowNode?.rowHeight - pixelsInOnePage - pagingPixelOffset\n ) : pixelsInOnePage - pagingPixelOffset;\n const nextCellPixel = currentRowNode?.rowTop + rowPixelDiff;\n let focusIndex = rowModel.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n if (focusIndex === gridCell.rowIndex) {\n const diff = up ? -1 : 1;\n scrollIndex = focusIndex = gridCell.rowIndex + diff;\n }\n let scrollType;\n if (up) {\n scrollType = \"bottom\";\n if (focusIndex < firstRow) {\n focusIndex = firstRow;\n }\n if (scrollIndex < firstRow) {\n scrollIndex = firstRow;\n }\n } else {\n scrollType = \"top\";\n if (focusIndex > lastRow) {\n focusIndex = lastRow;\n }\n if (scrollIndex > lastRow) {\n scrollIndex = lastRow;\n }\n }\n if (this.isRowTallerThanView(rowModel.getRow(focusIndex))) {\n scrollIndex = focusIndex;\n scrollType = \"top\";\n }\n this.navigateTo({\n scrollIndex,\n scrollType,\n scrollColumn: null,\n focusIndex,\n focusColumn: gridCell.column\n });\n }\n navigateToNextPageWithAutoHeight(gridCell, scrollIndex, up = false) {\n this.navigateTo({\n scrollIndex,\n scrollType: up ? \"bottom\" : \"top\",\n scrollColumn: null,\n focusIndex: scrollIndex,\n focusColumn: gridCell.column\n });\n setTimeout(() => {\n const focusIndex = this.getNextFocusIndexForAutoHeight(gridCell, up);\n this.navigateTo({\n scrollIndex,\n scrollType: up ? \"bottom\" : \"top\",\n scrollColumn: null,\n focusIndex,\n focusColumn: gridCell.column,\n isAsync: true\n });\n }, 50);\n }\n getNextFocusIndexForAutoHeight(gridCell, up = false) {\n const step = up ? -1 : 1;\n const pixelsInOnePage = this.getViewportHeight();\n const { pageBounds, rowModel } = this.beans;\n const lastRowIndex = pageBounds.getLastRow();\n let pixelSum = 0;\n let currentIndex = gridCell.rowIndex;\n while (currentIndex >= 0 && currentIndex <= lastRowIndex) {\n const currentCell = rowModel.getRow(currentIndex);\n if (currentCell) {\n const currentCellHeight = currentCell.rowHeight ?? 0;\n if (pixelSum + currentCellHeight > pixelsInOnePage) {\n break;\n }\n pixelSum += currentCellHeight;\n }\n currentIndex += step;\n }\n return Math.max(0, Math.min(currentIndex, lastRowIndex));\n }\n getViewportHeight() {\n const beans = this.beans;\n const scrollPosition = getVScroll(beans);\n const scrollbarWidth = this.beans.scrollVisibleSvc.getScrollbarWidth();\n let pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (beans.ctrlsSvc.get(\"center\").isHorizontalScrollShowing()) {\n pixelsInOnePage -= scrollbarWidth;\n }\n return pixelsInOnePage;\n }\n isRowTallerThanView(rowNode) {\n if (!rowNode) {\n return false;\n }\n const rowHeight = rowNode.rowHeight;\n if (typeof rowHeight !== \"number\") {\n return false;\n }\n return rowHeight > this.getViewportHeight();\n }\n onCtrlUpDownLeftRight(key, gridCell) {\n const cellToFocus = this.beans.cellNavigation.getNextCellToFocus(key, gridCell, true);\n const { rowIndex } = cellToFocus;\n const column = cellToFocus.column;\n this.navigateTo({\n scrollIndex: rowIndex,\n scrollType: null,\n scrollColumn: column,\n focusIndex: rowIndex,\n focusColumn: column\n });\n }\n // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n // same cell into view (which means either scroll all the way up, or all the way down).\n onHomeOrEndKey(key) {\n const homeKey = key === KeyCode.PAGE_HOME;\n const { visibleCols, pageBounds, rowModel } = this.beans;\n const allColumns = visibleCols.allCols;\n const scrollIndex = homeKey ? pageBounds.getFirstRow() : pageBounds.getLastRow();\n const rowNode = rowModel.getRow(scrollIndex);\n if (!rowNode) {\n return;\n }\n const columnToSelect = (homeKey ? allColumns : [...allColumns].reverse()).find(\n (col) => !col.isSuppressNavigable(rowNode)\n );\n if (!columnToSelect) {\n return;\n }\n this.navigateTo({\n scrollIndex,\n scrollType: null,\n scrollColumn: columnToSelect,\n focusIndex: scrollIndex,\n focusColumn: columnToSelect\n });\n }\n // result of keyboard event\n onTabKeyDown(previous, keyboardEvent) {\n const backwards = keyboardEvent.shiftKey;\n const movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);\n const beans = this.beans;\n const { ctrlsSvc, pageBounds, focusSvc, gos } = beans;\n if (movedToNextCell !== false) {\n if (movedToNextCell) {\n keyboardEvent.preventDefault();\n } else if (movedToNextCell === null) {\n ctrlsSvc.get(\"gridCtrl\").allowFocusForNextCoreContainer(backwards);\n }\n return;\n }\n if (backwards) {\n const { rowIndex, rowPinned } = previous.getRowPosition();\n const firstRow = rowPinned ? rowIndex === 0 : rowIndex === pageBounds.getFirstRow();\n if (firstRow) {\n if (gos.get(\"headerHeight\") === 0 || _isHeaderFocusSuppressed(beans)) {\n _focusNextGridCoreContainer(beans, true, true);\n } else {\n keyboardEvent.preventDefault();\n focusSvc.focusPreviousFromFirstCell(keyboardEvent);\n }\n }\n } else {\n if (previous instanceof CellCtrl) {\n previous.focusCell(true);\n }\n if (!backwards && focusSvc.focusOverlay(false) || _focusNextGridCoreContainer(beans, backwards)) {\n keyboardEvent.preventDefault();\n }\n }\n }\n // comes from API\n tabToNextCell(backwards, event) {\n const beans = this.beans;\n const { focusSvc, rowRenderer } = beans;\n const focusedCell = focusSvc.getFocusedCell();\n if (!focusedCell) {\n return false;\n }\n let cellOrRow = _getCellByPosition(beans, focusedCell);\n if (!cellOrRow) {\n cellOrRow = rowRenderer.getRowByPosition(focusedCell);\n if (!cellOrRow || !cellOrRow.isFullWidth()) {\n return false;\n }\n }\n return !!this.tabToNextCellCommon(cellOrRow, backwards, event);\n }\n tabToNextCellCommon(previous, backwards, event) {\n let editing = previous.editing;\n if (!editing && previous instanceof CellCtrl) {\n const cell = previous;\n const row = cell.rowCtrl;\n if (row) {\n editing = row.editing;\n }\n }\n let res;\n if (editing) {\n if (this.gos.get(\"editType\") === \"fullRow\") {\n res = this.moveToNextEditingRow(previous, backwards, event);\n } else {\n res = this.moveToNextEditingCell(previous, backwards, event);\n }\n } else {\n res = this.moveToNextCellNotEditing(previous, backwards, event);\n }\n if (res === null) {\n return res;\n }\n return res || !!this.beans.focusSvc.focusedHeader;\n }\n // returns null if no navigation should be performed\n moveToNextEditingCell(previousCell, backwards, event = null) {\n const previousPos = previousCell.cellPosition;\n previousCell.eGui.focus();\n previousCell.stopEditing();\n const nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell === false) {\n return null;\n }\n if (nextCell == null) {\n return false;\n }\n this.beans.editSvc?.startEditing(nextCell, null, true, event);\n nextCell.focusCell(false);\n return true;\n }\n // returns null if no navigation should be performed\n moveToNextEditingRow(previousCell, backwards, event = null) {\n const previousPos = previousCell.cellPosition;\n const nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell === false) {\n return null;\n }\n if (nextCell == null) {\n return false;\n }\n const nextPos = nextCell.cellPosition;\n const previousEditable = this.isCellEditable(previousPos);\n const nextEditable = this.isCellEditable(nextPos);\n const rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;\n const { editSvc, rowEditSvc } = this.beans;\n if (previousEditable) {\n editSvc?.setFocusOutOnEditor(previousCell);\n }\n if (!rowsMatch) {\n const pRow = previousCell.rowCtrl;\n editSvc?.stopRowEditing(pRow);\n const nRow = nextCell.rowCtrl;\n rowEditSvc?.startEditing(nRow, void 0, void 0, event);\n }\n if (nextEditable) {\n editSvc?.setFocusInOnEditor(nextCell);\n nextCell.focusCell();\n } else {\n nextCell.focusCell(true);\n }\n return true;\n }\n // returns null if no navigation should be performed\n moveToNextCellNotEditing(previousCell, backwards, event) {\n const displayedColumns = this.beans.visibleCols.allCols;\n let cellPos;\n if (previousCell instanceof RowCtrl) {\n cellPos = {\n ...previousCell.getRowPosition(),\n column: backwards ? displayedColumns[0] : _last(displayedColumns)\n };\n if (this.gos.get(\"embedFullWidthRows\") && event) {\n const focusedContainer = previousCell.findFullWidthInfoForEvent(event);\n if (focusedContainer) {\n cellPos.column = focusedContainer.column;\n }\n }\n } else {\n cellPos = previousCell.getFocusedCellPosition();\n }\n const nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);\n if (nextCell === false) {\n return null;\n }\n if (nextCell instanceof CellCtrl) {\n nextCell.focusCell(true);\n } else if (nextCell) {\n return this.tryToFocusFullWidthRow(nextCell, backwards);\n }\n return _exists(nextCell);\n }\n /**\n * called by the cell, when tab is pressed while editing.\n * @return: RenderedCell when navigation successful, false if navigation should not be performed, otherwise null\n */\n findNextCellToFocusOn(previousPosition, backwards, startEditing) {\n let nextPosition = previousPosition;\n const beans = this.beans;\n const { cellNavigation, gos, focusSvc, rowRenderer, rangeSvc } = beans;\n while (true) {\n if (previousPosition !== nextPosition) {\n previousPosition = nextPosition;\n }\n if (!backwards) {\n nextPosition = this.getLastCellOfColSpan(nextPosition);\n }\n nextPosition = cellNavigation.getNextTabbedCell(nextPosition, backwards);\n const userFunc = gos.getCallback(\"tabToNextCell\");\n if (_exists(userFunc)) {\n const params = {\n backwards,\n editing: startEditing,\n previousCellPosition: previousPosition,\n nextCellPosition: nextPosition ? nextPosition : null\n };\n const userResult = userFunc(params);\n if (userResult === true) {\n nextPosition = previousPosition;\n } else if (userResult === false) {\n return false;\n } else {\n nextPosition = {\n rowIndex: userResult.rowIndex,\n column: userResult.column,\n rowPinned: userResult.rowPinned\n };\n }\n }\n if (!nextPosition) {\n return null;\n }\n if (nextPosition.rowIndex < 0) {\n const headerLen = getFocusHeaderRowCount(beans);\n focusSvc.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: headerLen + nextPosition.rowIndex,\n column: nextPosition.column\n },\n fromCell: true\n });\n return null;\n }\n const fullRowEdit = gos.get(\"editType\") === \"fullRow\";\n if (startEditing && !fullRowEdit) {\n const cellIsEditable = this.isCellEditable(nextPosition);\n if (!cellIsEditable) {\n continue;\n }\n }\n this.ensureCellVisible(nextPosition);\n const nextCell = _getCellByPosition(beans, nextPosition);\n if (!nextCell) {\n const row = rowRenderer.getRowByPosition(nextPosition);\n if (!row || !row.isFullWidth() || startEditing) {\n continue;\n }\n return { ...row.getRowPosition(), column: nextPosition?.column };\n }\n if (cellNavigation.isSuppressNavigable(nextCell.column, nextCell.rowNode)) {\n continue;\n }\n nextCell.setFocusedCellPosition(nextPosition);\n rangeSvc?.setRangeToCell(nextPosition);\n return nextCell;\n }\n }\n isCellEditable(cell) {\n const rowNode = this.lookupRowNodeForCell(cell);\n if (rowNode) {\n return cell.column.isCellEditable(rowNode);\n }\n return false;\n }\n lookupRowNodeForCell({ rowIndex, rowPinned }) {\n const { pinnedRowModel, rowModel } = this.beans;\n if (rowPinned === \"top\") {\n return pinnedRowModel?.getPinnedTopRow(rowIndex);\n }\n if (rowPinned === \"bottom\") {\n return pinnedRowModel?.getPinnedBottomRow(rowIndex);\n }\n return rowModel.getRow(rowIndex);\n }\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n navigateToNextCell(event, key, currentCell, allowUserOverride) {\n let nextCell = currentCell;\n let hitEdgeOfGrid = false;\n const beans = this.beans;\n const { cellNavigation, focusSvc, gos } = beans;\n while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {\n if (gos.get(\"enableRtl\")) {\n if (key === KeyCode.LEFT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n } else if (key === KeyCode.RIGHT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n nextCell = cellNavigation.getNextCellToFocus(key, nextCell);\n hitEdgeOfGrid = _missing(nextCell);\n }\n if (hitEdgeOfGrid && event && event.key === KeyCode.UP) {\n nextCell = {\n rowIndex: -1,\n rowPinned: null,\n column: currentCell.column\n };\n }\n if (allowUserOverride) {\n const userFunc = gos.getCallback(\"navigateToNextCell\");\n if (_exists(userFunc)) {\n const params = {\n key,\n previousCellPosition: currentCell,\n nextCellPosition: nextCell ? nextCell : null,\n event\n };\n const userCell = userFunc(params);\n if (_exists(userCell)) {\n nextCell = {\n rowPinned: userCell.rowPinned,\n rowIndex: userCell.rowIndex,\n column: userCell.column\n };\n } else {\n nextCell = null;\n }\n }\n }\n if (!nextCell) {\n return;\n }\n if (nextCell.rowIndex < 0) {\n const headerLen = getFocusHeaderRowCount(beans);\n focusSvc.focusHeaderPosition({\n headerPosition: { headerRowIndex: headerLen + nextCell.rowIndex, column: currentCell.column },\n event: event || void 0,\n fromCell: true\n });\n return;\n }\n const normalisedPosition = this.getNormalisedPosition(nextCell);\n if (normalisedPosition) {\n this.focusPosition(normalisedPosition);\n } else {\n this.tryToFocusFullWidthRow(nextCell);\n }\n }\n getNormalisedPosition(cellPosition) {\n const isSpannedCell = !!this.beans.spannedRowRenderer?.getCellByPosition(cellPosition);\n if (isSpannedCell) {\n return cellPosition;\n }\n this.ensureCellVisible(cellPosition);\n const cellCtrl = _getCellByPosition(this.beans, cellPosition);\n if (!cellCtrl) {\n return null;\n }\n cellPosition = cellCtrl.getFocusedCellPosition();\n this.ensureCellVisible(cellPosition);\n return cellPosition;\n }\n tryToFocusFullWidthRow(position, backwards) {\n const { visibleCols, rowRenderer, focusSvc, eventSvc } = this.beans;\n const displayedColumns = visibleCols.allCols;\n const rowComp = rowRenderer.getRowByPosition(position);\n if (!rowComp || !rowComp.isFullWidth()) {\n return false;\n }\n const currentCellFocused = focusSvc.getFocusedCell();\n const cellPosition = {\n rowIndex: position.rowIndex,\n rowPinned: position.rowPinned,\n column: position.column || (backwards ? _last(displayedColumns) : displayedColumns[0])\n };\n this.focusPosition(cellPosition);\n const fromBelow = backwards == null ? currentCellFocused != null && _isRowBefore(cellPosition, currentCellFocused) : backwards;\n eventSvc.dispatchEvent({\n type: \"fullWidthRowFocused\",\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned,\n column: cellPosition.column,\n isFullWidthCell: true,\n fromBelow\n });\n return true;\n }\n focusPosition(cellPosition) {\n const { focusSvc, rangeSvc } = this.beans;\n focusSvc.setFocusedCell({\n rowIndex: cellPosition.rowIndex,\n column: cellPosition.column,\n rowPinned: cellPosition.rowPinned,\n forceBrowserFocus: true\n });\n rangeSvc?.setRangeToCell(cellPosition);\n }\n isValidNavigateCell(cell) {\n const rowNode = _getRowNode(this.beans, cell);\n return !!rowNode;\n }\n getLastCellOfColSpan(cell) {\n const cellCtrl = _getCellByPosition(this.beans, cell);\n if (!cellCtrl) {\n return cell;\n }\n const colSpanningList = cellCtrl.getColSpanningList();\n if (colSpanningList.length === 1) {\n return cell;\n }\n return {\n rowIndex: cell.rowIndex,\n column: _last(colSpanningList),\n rowPinned: cell.rowPinned\n };\n }\n ensureCellVisible(gridCell) {\n const isGroupStickyEnabled = _isGroupRowsSticky(this.gos);\n const rowNode = this.beans.rowModel.getRow(gridCell.rowIndex);\n const skipScrollToRow = isGroupStickyEnabled && rowNode?.sticky;\n const { scrollFeature } = this.gridBodyCon;\n if (!skipScrollToRow && _missing(gridCell.rowPinned)) {\n scrollFeature.ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n scrollFeature.ensureColumnVisible(gridCell.column);\n }\n }\n};\nfunction getVScroll(beans) {\n return beans.ctrlsSvc.getScrollFeature().getVScrollPosition();\n}\n\n// packages/ag-grid-community/src/navigation/navigationModule.ts\nvar KeyboardNavigationModule = {\n moduleName: \"KeyboardNavigation\",\n version: VERSION,\n beans: [NavigationService, CellNavigationService, HeaderNavigationService],\n apiFunctions: {\n getFocusedCell,\n clearFocusedCell,\n setFocusedCell,\n setFocusedHeader,\n tabToNextCell,\n tabToPreviousCell\n }\n};\n\n// packages/ag-grid-community/src/pagination/pageBoundsListener.ts\nvar PageBoundsListener = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"pageBoundsListener\";\n }\n postConstruct() {\n this.addManagedEventListeners({\n modelUpdated: this.onModelUpdated.bind(this),\n recalculateRowBounds: this.calculatePages.bind(this)\n });\n this.onModelUpdated();\n }\n onModelUpdated(modelUpdatedEvent) {\n this.calculatePages();\n this.eventSvc.dispatchEvent({\n type: \"paginationChanged\",\n animate: modelUpdatedEvent?.animate ?? false,\n newData: modelUpdatedEvent?.newData ?? false,\n newPage: modelUpdatedEvent?.newPage ?? false,\n newPageSize: modelUpdatedEvent?.newPageSize ?? false,\n keepRenderedRows: modelUpdatedEvent?.keepRenderedRows ?? false\n });\n }\n calculatePages() {\n const { pageBounds, pagination, rowModel } = this.beans;\n if (pagination) {\n pagination.calculatePages();\n } else {\n pageBounds.calculateBounds(0, rowModel.getRowCount() - 1);\n }\n }\n};\n\n// packages/ag-grid-community/src/pagination/pageBoundsService.ts\nvar PageBoundsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"pageBounds\";\n this.pixelOffset = 0;\n }\n getFirstRow() {\n return this.topRowBounds?.rowIndex ?? -1;\n }\n getLastRow() {\n return this.bottomRowBounds?.rowIndex ?? -1;\n }\n getCurrentPageHeight() {\n const { topRowBounds, bottomRowBounds } = this;\n if (!topRowBounds || !bottomRowBounds) {\n return 0;\n }\n return Math.max(bottomRowBounds.rowTop + bottomRowBounds.rowHeight - topRowBounds.rowTop, 0);\n }\n getCurrentPagePixelRange() {\n const { topRowBounds, bottomRowBounds } = this;\n const pageFirstPixel = topRowBounds?.rowTop ?? 0;\n const pageLastPixel = bottomRowBounds ? bottomRowBounds.rowTop + bottomRowBounds.rowHeight : 0;\n return { pageFirstPixel, pageLastPixel };\n }\n calculateBounds(topDisplayedRowIndex, bottomDisplayedRowIndex) {\n const { rowModel } = this.beans;\n const topRowBounds = rowModel.getRowBounds(topDisplayedRowIndex);\n if (topRowBounds) {\n topRowBounds.rowIndex = topDisplayedRowIndex;\n }\n this.topRowBounds = topRowBounds;\n const bottomRowBounds = rowModel.getRowBounds(bottomDisplayedRowIndex);\n if (bottomRowBounds) {\n bottomRowBounds.rowIndex = bottomDisplayedRowIndex;\n }\n this.bottomRowBounds = bottomRowBounds;\n this.calculatePixelOffset();\n }\n getPixelOffset() {\n return this.pixelOffset;\n }\n calculatePixelOffset() {\n const value = this.topRowBounds?.rowTop ?? 0;\n if (this.pixelOffset === value) {\n return;\n }\n this.pixelOffset = value;\n this.eventSvc.dispatchEvent({ type: \"paginationPixelOffsetChanged\" });\n }\n};\n\n// packages/ag-grid-community/src/pinnedColumns/pinnedColumnModule.css-GENERATED.ts\nvar pinnedColumnModuleCSS = (\n /*css*/\n `.ag-pinned-left-floating-bottom,.ag-pinned-left-floating-top,.ag-pinned-right-floating-bottom,.ag-pinned-right-floating-top{min-width:0;overflow:hidden;position:relative}.ag-pinned-left-sticky-top,.ag-pinned-right-sticky-top{height:100%;overflow:hidden;position:relative}.ag-sticky-bottom-full-width-container,.ag-sticky-top-full-width-container{height:100%;overflow:hidden;width:100%}.ag-pinned-left-header,.ag-pinned-right-header{display:inline-block;height:100%;overflow:hidden;position:relative}.ag-body-horizontal-scroll:not(.ag-scrollbar-invisible){.ag-horizontal-left-spacer:not(.ag-scroller-corner){border-right:var(--ag-pinned-column-border)}.ag-horizontal-right-spacer:not(.ag-scroller-corner){border-left:var(--ag-pinned-column-border)}}.ag-pinned-right-header{border-left:var(--ag-pinned-column-border)}.ag-pinned-left-header{border-right:var(--ag-pinned-column-border)}.ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left,.ag-cell-range-single-cell,.ag-cell-focus:not(.ag-cell-range-selected):focus-within){border-left:var(--ag-pinned-column-border)}.ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right,.ag-cell-range-single-cell,.ag-cell-focus:not(.ag-cell-range-selected):focus-within){border-right:var(--ag-pinned-column-border)}.ag-pinned-left-header .ag-header-cell-resize:after{left:calc(50% - var(--ag-header-column-resize-handle-width))}.ag-pinned-right-header .ag-header-cell-resize:after{left:50%}.ag-pinned-left-header .ag-header-cell-resize{right:-3px}.ag-pinned-right-header .ag-header-cell-resize{left:-3px}`\n);\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/setPinnedWidthFeature.ts\nvar SetPinnedWidthFeature = class extends BeanStub {\n constructor(isLeft, elements) {\n super();\n this.isLeft = isLeft;\n this.elements = elements;\n this.getWidth = isLeft ? () => this.beans.pinnedCols.leftWidth : () => this.beans.pinnedCols.rightWidth;\n }\n postConstruct() {\n this.addManagedEventListeners({\n [`${this.isLeft ? \"left\" : \"right\"}PinnedWidthChanged`]: this.onPinnedWidthChanged.bind(this)\n });\n }\n onPinnedWidthChanged() {\n const width = this.getWidth();\n const displayed = width > 0;\n for (const element of this.elements) {\n if (element) {\n _setDisplayed(element, displayed);\n _setFixedWidth(element, width);\n }\n }\n }\n};\n\n// packages/ag-grid-community/src/pinnedColumns/pinnedColumnService.ts\nvar PinnedColumnService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"pinnedCols\";\n }\n postConstruct() {\n this.beans.ctrlsSvc.whenReady(this, (p) => {\n this.gridBodyCtrl = p.gridBodyCtrl;\n });\n const listener = this.checkContainerWidths.bind(this);\n this.addManagedEventListeners({\n displayedColumnsChanged: listener,\n displayedColumnsWidthChanged: listener\n });\n this.addManagedPropertyListener(\"domLayout\", listener);\n }\n checkContainerWidths() {\n const { gos, visibleCols, eventSvc } = this.beans;\n const printLayout = _isDomLayout(gos, \"print\");\n const newLeftWidth = printLayout ? 0 : visibleCols.getColsLeftWidth();\n const newRightWidth = printLayout ? 0 : visibleCols.getDisplayedColumnsRightWidth();\n if (newLeftWidth != this.leftWidth) {\n this.leftWidth = newLeftWidth;\n eventSvc.dispatchEvent({ type: \"leftPinnedWidthChanged\" });\n }\n if (newRightWidth != this.rightWidth) {\n this.rightWidth = newRightWidth;\n eventSvc.dispatchEvent({ type: \"rightPinnedWidthChanged\" });\n }\n }\n keepPinnedColumnsNarrowerThanViewport() {\n const eBodyViewport = this.gridBodyCtrl.eBodyViewport;\n const bodyWidth = _getInnerWidth(eBodyViewport);\n if (bodyWidth <= 50) {\n return;\n }\n const processedColumnsToRemove = this.getPinnedColumnsOverflowingViewport(bodyWidth - 50);\n const processUnpinnedColumns = this.gos.getCallback(\"processUnpinnedColumns\");\n const { columns, hasLockedPinned } = processedColumnsToRemove;\n let columnsToRemove = columns;\n if (!columnsToRemove.length && !hasLockedPinned) {\n return;\n }\n if (processUnpinnedColumns) {\n const params = {\n columns: columnsToRemove,\n viewportWidth: bodyWidth\n };\n columnsToRemove = processUnpinnedColumns(params);\n }\n if (!columnsToRemove || !columnsToRemove.length) {\n return;\n }\n columnsToRemove = columnsToRemove.filter((col) => !isRowNumberCol(col));\n this.setColsPinned(columnsToRemove, null, \"viewportSizeFeature\");\n }\n createPinnedWidthFeature(isLeft, ...elements) {\n return new SetPinnedWidthFeature(isLeft, elements);\n }\n setColsPinned(keys, pinned, source) {\n const { colModel, colAnimation, visibleCols, gos } = this.beans;\n if (!colModel.cols) {\n return;\n }\n if (!keys?.length) {\n return;\n }\n if (_isDomLayout(gos, \"print\")) {\n _warn(37);\n return;\n }\n colAnimation?.start();\n let actualPinned;\n if (pinned === true || pinned === \"left\") {\n actualPinned = \"left\";\n } else if (pinned === \"right\") {\n actualPinned = \"right\";\n } else {\n actualPinned = null;\n }\n const updatedCols = [];\n keys.forEach((key) => {\n if (!key) {\n return;\n }\n const column = colModel.getCol(key);\n if (!column) {\n return;\n }\n if (column.getPinned() !== actualPinned) {\n this.setColPinned(column, actualPinned);\n updatedCols.push(column);\n }\n });\n if (updatedCols.length) {\n visibleCols.refresh(source);\n dispatchColumnPinnedEvent(this.eventSvc, updatedCols, source);\n }\n colAnimation?.finish();\n }\n initCol(column) {\n const { pinned, initialPinned } = column.colDef;\n if (pinned !== void 0) {\n this.setColPinned(column, pinned);\n } else {\n this.setColPinned(column, initialPinned);\n }\n }\n setColPinned(column, pinned) {\n if (pinned === true || pinned === \"left\") {\n column.pinned = \"left\";\n } else if (pinned === \"right\") {\n column.pinned = \"right\";\n } else {\n column.pinned = null;\n }\n column.dispatchStateUpdatedEvent(\"pinned\");\n }\n setupHeaderPinnedWidth(ctrl) {\n const { scrollVisibleSvc } = this.beans;\n if (ctrl.pinned == null) {\n return;\n }\n const pinningLeft = ctrl.pinned === \"left\";\n const pinningRight = ctrl.pinned === \"right\";\n ctrl.hidden = true;\n const listener = () => {\n const width = pinningLeft ? this.leftWidth : this.rightWidth;\n if (width == null) {\n return;\n }\n const hidden = width == 0;\n const hiddenChanged = ctrl.hidden !== hidden;\n const isRtl = this.gos.get(\"enableRtl\");\n const scrollbarWidth = scrollVisibleSvc.getScrollbarWidth();\n const addPaddingForScrollbar = scrollVisibleSvc.verticalScrollShowing && (isRtl && pinningLeft || !isRtl && pinningRight);\n const widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;\n ctrl.comp.setPinnedContainerWidth(`${widthWithPadding}px`);\n ctrl.comp.setDisplayed(!hidden);\n if (hiddenChanged) {\n ctrl.hidden = hidden;\n ctrl.refresh();\n }\n };\n ctrl.addManagedEventListeners({\n leftPinnedWidthChanged: listener,\n rightPinnedWidthChanged: listener,\n scrollVisibilityChanged: listener,\n scrollbarWidthChanged: listener\n });\n }\n getHeaderResizeDiff(diff, column) {\n const pinned = column.getPinned();\n if (pinned) {\n const { leftWidth, rightWidth } = this;\n const bodyWidth = _getInnerWidth(this.beans.ctrlsSvc.getGridBodyCtrl().eBodyViewport) - 50;\n if (leftWidth + rightWidth + diff > bodyWidth) {\n if (bodyWidth > leftWidth + rightWidth) {\n diff = bodyWidth - leftWidth - rightWidth;\n } else {\n return 0;\n }\n }\n }\n return diff;\n }\n getPinnedColumnsOverflowingViewport(viewportWidth) {\n const pinnedRightWidth = this.rightWidth ?? 0;\n const pinnedLeftWidth = this.leftWidth ?? 0;\n const totalPinnedWidth = pinnedRightWidth + pinnedLeftWidth;\n let hasLockedPinned = false;\n if (totalPinnedWidth < viewportWidth) {\n return { columns: [], hasLockedPinned };\n }\n const { visibleCols } = this.beans;\n const pinnedLeftColumns = [...visibleCols.leftCols];\n const pinnedRightColumns = [...visibleCols.rightCols];\n let indexRight = 0;\n let indexLeft = 0;\n const totalWidthRemoved = 0;\n const columnsToRemove = [];\n let spaceNecessary = totalPinnedWidth - totalWidthRemoved - viewportWidth;\n while ((indexLeft < pinnedLeftColumns.length || indexRight < pinnedRightColumns.length) && spaceNecessary > 0) {\n if (indexRight < pinnedRightColumns.length) {\n const currentColumn = pinnedRightColumns[indexRight++];\n if (currentColumn.colDef.lockPinned) {\n hasLockedPinned = true;\n continue;\n }\n spaceNecessary -= currentColumn.getActualWidth();\n columnsToRemove.push(currentColumn);\n }\n if (indexLeft < pinnedLeftColumns.length && spaceNecessary > 0) {\n const currentColumn = pinnedLeftColumns[indexLeft++];\n if (currentColumn.colDef.lockPinned) {\n hasLockedPinned = true;\n continue;\n }\n spaceNecessary -= currentColumn.getActualWidth();\n columnsToRemove.push(currentColumn);\n }\n }\n return { columns: columnsToRemove, hasLockedPinned };\n }\n};\n\n// packages/ag-grid-community/src/pinnedColumns/pinnedColumnModule.ts\nvar PinnedColumnModule = {\n moduleName: \"PinnedColumn\",\n version: VERSION,\n beans: [PinnedColumnService],\n css: [pinnedColumnModuleCSS]\n};\n\n// packages/ag-grid-community/src/rendering/ariaAnnouncementService.ts\nvar AriaAnnouncementService = class extends BeanStub {\n constructor() {\n super();\n this.beanName = \"ariaAnnounce\";\n this.descriptionContainer = null;\n this.pendingAnnouncements = /* @__PURE__ */ new Map();\n this.lastAnnouncement = \"\";\n this.updateAnnouncement = _debounce(this, this.updateAnnouncement.bind(this), 200);\n }\n postConstruct() {\n const beans = this.beans;\n const eDocument = _getDocument(beans);\n const div = this.descriptionContainer = eDocument.createElement(\"div\");\n div.classList.add(\"ag-aria-description-container\");\n _setAriaLive(div, \"polite\");\n _setAriaRelevant(div, \"additions text\");\n _setAriaAtomic(div, true);\n beans.eGridDiv.appendChild(div);\n }\n /**\n * @param key used for debouncing calls\n */\n announceValue(value, key) {\n this.pendingAnnouncements.set(key, value);\n this.updateAnnouncement();\n }\n updateAnnouncement() {\n if (!this.descriptionContainer) {\n return;\n }\n const value = Array.from(this.pendingAnnouncements.values()).join(\". \");\n this.pendingAnnouncements.clear();\n this.descriptionContainer.textContent = \"\";\n setTimeout(() => {\n if (this.isAlive() && this.descriptionContainer) {\n let valueToAnnounce = value;\n if (this.lastAnnouncement === valueToAnnounce) {\n valueToAnnounce = `${valueToAnnounce}.`;\n }\n this.lastAnnouncement = valueToAnnounce;\n this.descriptionContainer.textContent = valueToAnnounce;\n }\n }, 50);\n }\n destroy() {\n super.destroy();\n const { descriptionContainer } = this;\n if (descriptionContainer) {\n _clearElement(descriptionContainer);\n descriptionContainer.parentElement?.removeChild(descriptionContainer);\n }\n this.descriptionContainer = null;\n this.pendingAnnouncements.clear();\n }\n};\n\n// packages/ag-grid-community/src/rendering/ariaModule.ts\nvar AriaModule = {\n moduleName: \"Aria\",\n version: VERSION,\n beans: [AriaAnnouncementService]\n};\n\n// packages/ag-grid-community/src/rendering/overlays/overlayApi.ts\nfunction showLoadingOverlay(beans) {\n beans.overlays?.showLoadingOverlay();\n}\nfunction showNoRowsOverlay(beans) {\n beans.overlays?.showNoRowsOverlay();\n}\nfunction hideOverlay(beans) {\n beans.overlays?.hideOverlay();\n}\n\n// packages/ag-grid-community/src/rendering/overlays/overlayWrapperComponent.css-GENERATED.ts\nvar overlayWrapperComponentCSS = (\n /*css*/\n `.ag-overlay{inset:0;pointer-events:none;position:absolute;z-index:2}.ag-overlay-panel,.ag-overlay-wrapper{display:flex;height:100%;width:100%}.ag-overlay-wrapper{align-items:center;flex:none;justify-content:center;text-align:center}.ag-overlay-loading-wrapper{pointer-events:all}.ag-overlay-loading-center{background:var(--ag-background-color);border:1px solid var(--ag-border-color);border-radius:var(--ag-border-radius);box-shadow:var(--ag-popup-shadow);padding:var(--ag-spacing)}`\n);\n\n// packages/ag-grid-community/src/rendering/overlays/overlayWrapperComponent.ts\nvar OverlayWrapperElement = {\n tag: \"div\",\n cls: \"ag-overlay\",\n role: \"presentation\",\n children: [\n {\n tag: \"div\",\n cls: \"ag-overlay-panel\",\n role: \"presentation\",\n children: [{ tag: \"div\", ref: \"eOverlayWrapper\", cls: \"ag-overlay-wrapper\", role: \"presentation\" }]\n }\n ]\n};\nvar OverlayWrapperComponent = class extends Component {\n constructor() {\n super(OverlayWrapperElement);\n this.eOverlayWrapper = RefPlaceholder;\n this.activePromise = null;\n this.activeOverlay = null;\n this.updateListenerDestroyFunc = null;\n this.activeCssClass = null;\n this.elToFocusAfter = null;\n this.registerCSS(overlayWrapperComponentCSS);\n }\n handleKeyDown(e) {\n if (e.key !== KeyCode.TAB || e.defaultPrevented || _isStopPropagationForAgGrid(e)) {\n return;\n }\n const beans = this.beans;\n const nextEl = _findNextFocusableElement(beans, this.eOverlayWrapper, false, e.shiftKey);\n if (nextEl) {\n return;\n }\n let isFocused = false;\n if (e.shiftKey) {\n isFocused = beans.focusSvc.focusGridView({\n column: _last(beans.visibleCols.allCols),\n backwards: true,\n canFocusOverlay: false\n });\n } else {\n isFocused = _focusNextGridCoreContainer(beans, false);\n }\n if (isFocused) {\n e.preventDefault();\n }\n }\n updateLayoutClasses(cssClass, params) {\n const overlayWrapperClassList = this.eOverlayWrapper.classList;\n const { AUTO_HEIGHT, NORMAL, PRINT } = LayoutCssClasses;\n overlayWrapperClassList.toggle(AUTO_HEIGHT, params.autoHeight);\n overlayWrapperClassList.toggle(NORMAL, params.normal);\n overlayWrapperClassList.toggle(PRINT, params.print);\n }\n postConstruct() {\n this.createManagedBean(new LayoutFeature(this));\n this.setDisplayed(false, { skipAriaHidden: true });\n this.beans.overlays.setOverlayWrapperComp(this);\n this.addManagedElementListeners(this.getFocusableElement(), { keydown: this.handleKeyDown.bind(this) });\n }\n setWrapperTypeClass(overlayWrapperCssClass) {\n const overlayWrapperClassList = this.eOverlayWrapper.classList;\n if (this.activeCssClass) {\n overlayWrapperClassList.toggle(this.activeCssClass, false);\n }\n this.activeCssClass = overlayWrapperCssClass;\n overlayWrapperClassList.toggle(overlayWrapperCssClass, true);\n }\n showOverlay(overlayComponentPromise, overlayWrapperCssClass, exclusive, gridOption) {\n this.setWrapperTypeClass(overlayWrapperCssClass);\n this.destroyActiveOverlay();\n this.elToFocusAfter = null;\n this.activePromise = overlayComponentPromise;\n if (!overlayComponentPromise) {\n return;\n }\n this.setDisplayed(true, { skipAriaHidden: true });\n if (exclusive && this.isGridFocused()) {\n const activeElement = _getActiveDomElement(this.beans);\n if (activeElement && !_isNothingFocused(this.beans)) {\n this.elToFocusAfter = activeElement;\n }\n }\n overlayComponentPromise.then((comp) => {\n if (this.activePromise !== overlayComponentPromise) {\n if (this.activeOverlay !== comp) {\n this.destroyBean(comp);\n comp = null;\n }\n return;\n }\n this.activePromise = null;\n if (!comp) {\n return;\n }\n if (this.activeOverlay !== comp) {\n this.eOverlayWrapper.appendChild(comp.getGui());\n this.activeOverlay = comp;\n if (gridOption) {\n const component = comp;\n this.updateListenerDestroyFunc = this.addManagedPropertyListener(gridOption, ({ currentValue }) => {\n component.refresh?.(_addGridCommonParams(this.gos, { ...currentValue ?? {} }));\n });\n }\n }\n if (exclusive && this.isGridFocused()) {\n _focusInto(this.eOverlayWrapper);\n }\n });\n }\n updateOverlayWrapperPaddingTop(padding) {\n this.eOverlayWrapper.style.setProperty(\"padding-top\", `${padding}px`);\n }\n destroyActiveOverlay() {\n this.activePromise = null;\n const activeOverlay = this.activeOverlay;\n if (!activeOverlay) {\n return;\n }\n let elementToFocus = this.elToFocusAfter;\n this.activeOverlay = null;\n this.elToFocusAfter = null;\n if (elementToFocus && !this.isGridFocused()) {\n elementToFocus = null;\n }\n const updateListenerDestroyFunc = this.updateListenerDestroyFunc;\n if (updateListenerDestroyFunc) {\n updateListenerDestroyFunc();\n this.updateListenerDestroyFunc = null;\n }\n this.destroyBean(activeOverlay);\n _clearElement(this.eOverlayWrapper);\n elementToFocus?.focus?.({ preventScroll: true });\n }\n hideOverlay() {\n this.destroyActiveOverlay();\n this.setDisplayed(false, { skipAriaHidden: true });\n }\n isGridFocused() {\n const activeEl = _getActiveDomElement(this.beans);\n return !!activeEl && this.beans.eGridDiv.contains(activeEl);\n }\n destroy() {\n this.elToFocusAfter = null;\n this.destroyActiveOverlay();\n this.beans.overlays.setOverlayWrapperComp(void 0);\n super.destroy();\n }\n};\nvar OverlayWrapperSelector = {\n selector: \"AG-OVERLAY-WRAPPER\",\n component: OverlayWrapperComponent\n};\n\n// packages/ag-grid-community/src/rendering/overlays/overlayService.ts\nvar OverlayService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"overlays\";\n this.state = 0 /* Hidden */;\n this.showInitialOverlay = true;\n this.wrapperPadding = 0;\n }\n postConstruct() {\n this.isClientSide = _isClientSideRowModel(this.gos);\n this.isServerSide = !this.isClientSide && _isServerSideRowModel(this.gos);\n const updateOverlayVisibility = () => this.updateOverlayVisibility();\n this.addManagedEventListeners({\n newColumnsLoaded: updateOverlayVisibility,\n rowDataUpdated: updateOverlayVisibility,\n gridSizeChanged: this.refreshWrapperPadding.bind(this),\n rowCountReady: () => {\n this.showInitialOverlay = false;\n this.updateOverlayVisibility();\n }\n });\n this.addManagedPropertyListener(\"loading\", updateOverlayVisibility);\n }\n setOverlayWrapperComp(overlayWrapperComp) {\n this.eWrapper = overlayWrapperComp;\n this.updateOverlayVisibility();\n }\n /** Returns true if the overlay is visible. */\n isVisible() {\n return this.state !== 0 /* Hidden */ && !!this.eWrapper;\n }\n /** Returns true if the overlay is visible and is exclusive (popup over the grid) */\n isExclusive() {\n return this.state === 1 /* Loading */ && !!this.eWrapper;\n }\n showLoadingOverlay() {\n this.showInitialOverlay = false;\n const gos = this.gos;\n const loading = gos.get(\"loading\");\n if (!loading && (loading !== void 0 || gos.get(\"suppressLoadingOverlay\"))) {\n return;\n }\n this.doShowLoadingOverlay();\n }\n showNoRowsOverlay() {\n this.showInitialOverlay = false;\n const gos = this.gos;\n if (gos.get(\"loading\") || gos.get(\"suppressNoRowsOverlay\")) {\n return;\n }\n this.doShowNoRowsOverlay();\n }\n hideOverlay() {\n this.showInitialOverlay = false;\n if (this.gos.get(\"loading\")) {\n _warn(99);\n return;\n }\n this.doHideOverlay();\n }\n getOverlayWrapperSelector() {\n return OverlayWrapperSelector;\n }\n getOverlayWrapperCompClass() {\n return OverlayWrapperComponent;\n }\n updateOverlayVisibility() {\n if (!this.eWrapper) {\n this.state = 0 /* Hidden */;\n return;\n }\n const {\n state,\n isClientSide,\n isServerSide,\n beans: { gos, colModel, rowModel }\n } = this;\n let loading = this.gos.get(\"loading\");\n if (loading !== void 0) {\n this.showInitialOverlay = false;\n }\n if (this.showInitialOverlay && loading === void 0 && !gos.get(\"suppressLoadingOverlay\")) {\n loading = !gos.get(\"columnDefs\") || !colModel.ready || !gos.get(\"rowData\") && isClientSide;\n }\n if (loading) {\n if (state !== 1 /* Loading */) {\n this.doShowLoadingOverlay();\n }\n } else {\n this.showInitialOverlay = false;\n if (isClientSide && rowModel.isEmpty() && !gos.get(\"suppressNoRowsOverlay\")) {\n if (state !== 2 /* NoRows */) {\n this.doShowNoRowsOverlay();\n }\n } else if (state === 1 /* Loading */ || !isServerSide && state !== 0 /* Hidden */) {\n this.doHideOverlay();\n }\n }\n }\n doShowLoadingOverlay() {\n if (!this.eWrapper) {\n return;\n }\n this.state = 1 /* Loading */;\n this.showOverlay(\n _getLoadingOverlayCompDetails(this.beans.userCompFactory, _addGridCommonParams(this.gos, {})),\n \"ag-overlay-loading-wrapper\",\n \"loadingOverlayComponentParams\"\n );\n this.updateExclusive();\n }\n doShowNoRowsOverlay() {\n if (!this.eWrapper) {\n return;\n }\n this.state = 2 /* NoRows */;\n this.showOverlay(\n _getNoRowsOverlayCompDetails(this.beans.userCompFactory, _addGridCommonParams(this.gos, {})),\n \"ag-overlay-no-rows-wrapper\",\n \"noRowsOverlayComponentParams\"\n );\n this.updateExclusive();\n }\n doHideOverlay() {\n if (!this.eWrapper) {\n return;\n }\n this.state = 0 /* Hidden */;\n this.eWrapper.hideOverlay();\n this.updateExclusive();\n }\n showOverlay(compDetails, wrapperCssClass, gridOption) {\n const promise = compDetails?.newAgStackInstance() ?? null;\n this.eWrapper?.showOverlay(promise, wrapperCssClass, this.isExclusive(), gridOption);\n this.refreshWrapperPadding();\n }\n updateExclusive() {\n const wasExclusive = this.exclusive;\n this.exclusive = this.isExclusive();\n if (this.exclusive !== wasExclusive) {\n this.eventSvc.dispatchEvent({\n type: \"overlayExclusiveChanged\"\n });\n }\n }\n refreshWrapperPadding() {\n const eWrapper = this.eWrapper;\n if (!eWrapper) {\n return;\n }\n let newPadding = 0;\n if (this.state === 2 /* NoRows */) {\n const headerCtrl = this.beans.ctrlsSvc.get(\"gridHeaderCtrl\");\n const headerHeight = headerCtrl?.headerHeight || 0;\n newPadding = headerHeight;\n } else if (this.wrapperPadding !== 0) {\n newPadding = 0;\n }\n if (this.wrapperPadding === newPadding) {\n return;\n }\n this.wrapperPadding = newPadding;\n eWrapper.updateOverlayWrapperPaddingTop(newPadding);\n }\n};\n\n// packages/ag-grid-community/src/rendering/overlays/overlayModule.ts\nvar OverlayModule = {\n moduleName: \"Overlay\",\n version: VERSION,\n userComponents: {\n agLoadingOverlay: LoadingOverlayComponent2,\n agNoRowsOverlay: NoRowsOverlayComponent2\n },\n apiFunctions: {\n showLoadingOverlay,\n showNoRowsOverlay,\n hideOverlay\n },\n beans: [OverlayService]\n};\n\n// packages/ag-grid-community/src/rendering/rowContainerHeightService.ts\nvar RowContainerHeightService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowContainerHeight\";\n // the scrollY position\n this.scrollY = 0;\n // how tall the body is\n this.uiBodyHeight = 0;\n }\n postConstruct() {\n this.addManagedEventListeners({ bodyHeightChanged: this.updateOffset.bind(this) });\n this.maxDivHeight = _getMaxDivHeight();\n _logIfDebug(this.gos, \"RowContainerHeightService - maxDivHeight = \" + this.maxDivHeight);\n }\n updateOffset() {\n if (!this.stretching) {\n return;\n }\n const newScrollY = this.beans.ctrlsSvc.getScrollFeature().getVScrollPosition().top;\n const newBodyHeight = this.getUiBodyHeight();\n const atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n }\n calculateOffset() {\n this.setUiContainerHeight(this.maxDivHeight);\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n const scrollPercent = this.scrollY / this.maxScrollY;\n const divStretchOffset = scrollPercent * this.pixelsToShave;\n _logIfDebug(\n this.gos,\n `RowContainerHeightService - Div Stretch Offset = ${divStretchOffset} (${this.pixelsToShave} * ${scrollPercent})`\n );\n this.setDivStretchOffset(divStretchOffset);\n }\n setUiContainerHeight(height) {\n if (height !== this.uiContainerHeight) {\n this.uiContainerHeight = height;\n this.eventSvc.dispatchEvent({ type: \"rowContainerHeightChanged\" });\n }\n }\n clearOffset() {\n this.setUiContainerHeight(this.modelHeight);\n this.pixelsToShave = 0;\n this.setDivStretchOffset(0);\n }\n setDivStretchOffset(newOffset) {\n const newOffsetFloor = typeof newOffset === \"number\" ? Math.floor(newOffset) : null;\n if (this.divStretchOffset === newOffsetFloor) {\n return;\n }\n this.divStretchOffset = newOffsetFloor;\n this.eventSvc.dispatchEvent({ type: \"heightScaleChanged\" });\n }\n setModelHeight(modelHeight) {\n this.modelHeight = modelHeight;\n this.stretching = modelHeight != null && // null happens when in print layout\n this.maxDivHeight > 0 && modelHeight > this.maxDivHeight;\n if (this.stretching) {\n this.calculateOffset();\n } else {\n this.clearOffset();\n }\n }\n getRealPixelPosition(modelPixel) {\n return modelPixel - this.divStretchOffset;\n }\n getUiBodyHeight() {\n const pos = this.beans.ctrlsSvc.getScrollFeature().getVScrollPosition();\n return pos.bottom - pos.top;\n }\n getScrollPositionForPixel(rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n const modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n const scrollPercent = rowTop / modelMaxScroll;\n const scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n }\n};\n\n// packages/ag-grid-community/src/rendering/rowRenderer.ts\nvar ROW_ANIMATION_TIMEOUT = 400;\nvar RowRenderer = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowRenderer\";\n this.destroyFuncsForColumnListeners = [];\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n this.rowCtrlsByRowIndex = {};\n this.zombieRowCtrls = {};\n this.allRowCtrls = [];\n this.topRowCtrls = [];\n this.bottomRowCtrls = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n this.refreshInProgress = false;\n this.dataFirstRenderedFired = false;\n this.setupRangeSelectionListeners = () => {\n const onCellSelectionChanged = () => {\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onCellSelectionChanged());\n };\n const onColumnMovedPinnedVisible = () => {\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.updateRangeBordersIfRangeCount());\n };\n const addCellSelectionListeners = () => {\n this.eventSvc.addEventListener(\"cellSelectionChanged\", onCellSelectionChanged);\n this.eventSvc.addEventListener(\"columnMoved\", onColumnMovedPinnedVisible);\n this.eventSvc.addEventListener(\"columnPinned\", onColumnMovedPinnedVisible);\n this.eventSvc.addEventListener(\"columnVisible\", onColumnMovedPinnedVisible);\n };\n const removeCellSelectionListeners = () => {\n this.eventSvc.removeEventListener(\"cellSelectionChanged\", onCellSelectionChanged);\n this.eventSvc.removeEventListener(\"columnMoved\", onColumnMovedPinnedVisible);\n this.eventSvc.removeEventListener(\"columnPinned\", onColumnMovedPinnedVisible);\n this.eventSvc.removeEventListener(\"columnVisible\", onColumnMovedPinnedVisible);\n };\n this.addDestroyFunc(() => removeCellSelectionListeners());\n this.addManagedPropertyListeners([\"enableRangeSelection\", \"cellSelection\"], () => {\n const isEnabled = _isCellSelectionEnabled(this.gos);\n if (isEnabled) {\n addCellSelectionListeners();\n } else {\n removeCellSelectionListeners();\n }\n });\n const cellSelectionEnabled = _isCellSelectionEnabled(this.gos);\n if (cellSelectionEnabled) {\n addCellSelectionListeners();\n }\n };\n }\n wireBeans(beans) {\n this.pageBounds = beans.pageBounds;\n this.colModel = beans.colModel;\n this.pinnedRowModel = beans.pinnedRowModel;\n this.rowModel = beans.rowModel;\n this.focusSvc = beans.focusSvc;\n this.rowContainerHeight = beans.rowContainerHeight;\n this.ctrlsSvc = beans.ctrlsSvc;\n }\n postConstruct() {\n this.ctrlsSvc.whenReady(this, (p) => {\n this.gridBodyCtrl = p.gridBodyCtrl;\n this.initialise();\n });\n }\n initialise() {\n this.addManagedEventListeners({\n paginationChanged: this.onPageLoaded.bind(this),\n pinnedRowDataChanged: this.onPinnedRowDataChanged.bind(this),\n displayedColumnsChanged: this.onDisplayedColumnsChanged.bind(this),\n bodyScroll: this.onBodyScroll.bind(this),\n bodyHeightChanged: this.redraw.bind(this, {})\n });\n this.addManagedPropertyListeners([\"domLayout\", \"embedFullWidthRows\"], () => this.onDomLayoutChanged());\n this.addManagedPropertyListeners([\"suppressMaxRenderedRowRestriction\", \"rowBuffer\"], () => this.redraw());\n this.addManagedPropertyListener(\"suppressCellFocus\", (e) => this.onSuppressCellFocusChanged(e.currentValue));\n this.addManagedPropertyListeners(\n [\n \"groupSuppressBlankHeader\",\n \"getBusinessKeyForNode\",\n \"fullWidthCellRenderer\",\n \"fullWidthCellRendererParams\",\n \"suppressStickyTotalRow\",\n \"groupRowRenderer\",\n \"groupRowRendererParams\",\n // maybe only needs to refresh FW rows...\n \"loadingCellRenderer\",\n \"loadingCellRendererParams\",\n \"detailCellRenderer\",\n \"detailCellRendererParams\",\n \"enableRangeSelection\",\n \"enableCellTextSelection\"\n ],\n () => this.redrawRows()\n );\n this.addManagedPropertyListener(\"cellSelection\", ({ currentValue, previousValue }) => {\n if (!previousValue && currentValue || previousValue && !currentValue) {\n this.redrawRows();\n }\n });\n const { stickyRowSvc, gos, showRowGroupCols } = this.beans;\n if (showRowGroupCols) {\n this.addManagedPropertyListener(\"showOpenedGroup\", () => {\n const columns = showRowGroupCols.getShowRowGroupCols();\n if (columns.length) {\n this.refreshCells({ columns, force: true });\n }\n });\n }\n if (stickyRowSvc) {\n this.stickyRowFeature = stickyRowSvc.createStickyRowFeature(\n this,\n this.createRowCon.bind(this),\n this.destroyRowCtrls.bind(this)\n );\n } else {\n const gridBodyCtrl = this.gridBodyCtrl;\n gridBodyCtrl.setStickyTopHeight(0);\n gridBodyCtrl.setStickyBottomHeight(0);\n }\n this.registerCellEventListeners();\n this.initialiseCache();\n this.printLayout = _isDomLayout(gos, \"print\");\n this.embedFullWidthRows = this.printLayout || gos.get(\"embedFullWidthRows\");\n this.redrawAfterModelUpdate();\n }\n initialiseCache() {\n if (this.gos.get(\"keepDetailRows\")) {\n const countProp = this.getKeepDetailRowsCount();\n const count = countProp != null ? countProp : 3;\n this.cachedRowCtrls = new RowCtrlCache(count);\n }\n }\n getKeepDetailRowsCount() {\n return this.gos.get(\"keepDetailRowsCount\");\n }\n getStickyTopRowCtrls() {\n return this.stickyRowFeature?.stickyTopRowCtrls ?? [];\n }\n getStickyBottomRowCtrls() {\n return this.stickyRowFeature?.stickyBottomRowCtrls ?? [];\n }\n updateAllRowCtrls() {\n const liveList = Object.values(this.rowCtrlsByRowIndex);\n const zombieList = Object.values(this.zombieRowCtrls);\n const cachedList = this.cachedRowCtrls?.getEntries() ?? [];\n if (zombieList.length > 0 || cachedList.length > 0) {\n this.allRowCtrls = [...liveList, ...zombieList, ...cachedList];\n } else {\n this.allRowCtrls = liveList;\n }\n }\n isCellRendered(rowIndex, column) {\n const allRowCtrls = this.getAllRowCtrls();\n for (const rowCtrl of allRowCtrls) {\n if (rowCtrl.rowNode.rowPinned || rowCtrl.rowNode.rowIndex !== rowIndex) {\n continue;\n }\n if (rowCtrl.isFullWidth() || !column) {\n return true;\n }\n if (rowCtrl.getCellCtrl(column)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Notifies all row and cell controls of any change in focused cell.\n * @param event cell focused event\n */\n onCellFocusChanged(event) {\n if (event && event.rowIndex != null && !event.rowPinned) {\n const col = this.beans.colModel.getCol(event.column) ?? void 0;\n if (!this.isCellRendered(event.rowIndex, col)) {\n this.redrawAfterModelUpdate();\n }\n }\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onCellFocused(event));\n this.getFullWidthRowCtrls().forEach((rowCtrl) => rowCtrl.onFullWidthRowFocused(event));\n }\n onSuppressCellFocusChanged(suppressCellFocus) {\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onSuppressCellFocusChanged(suppressCellFocus));\n this.getFullWidthRowCtrls().forEach((rowCtrl) => rowCtrl.onSuppressCellFocusChanged(suppressCellFocus));\n }\n // in a clean design, each cell would register for each of these events. however when scrolling, all the cells\n // registering and de-registering for events is a performance bottleneck. so we register here once and inform\n // all active cells.\n registerCellEventListeners() {\n this.addManagedEventListeners({\n cellFocused: (event) => {\n this.onCellFocusChanged(event);\n },\n cellFocusCleared: () => this.onCellFocusChanged(),\n flashCells: (event) => {\n const { cellFlashSvc } = this.beans;\n if (cellFlashSvc) {\n this.getAllCellCtrls().forEach((cellCtrl) => cellFlashSvc.onFlashCells(cellCtrl, event));\n }\n },\n columnHoverChanged: () => {\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onColumnHover());\n },\n displayedColumnsChanged: () => {\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onDisplayedColumnsChanged());\n },\n displayedColumnsWidthChanged: () => {\n if (this.printLayout) {\n this.getAllCellCtrls().forEach((cellCtrl) => cellCtrl.onLeftChanged());\n }\n }\n });\n this.setupRangeSelectionListeners();\n this.refreshListenersToColumnsForCellComps();\n this.addManagedEventListeners({\n gridColumnsChanged: this.refreshListenersToColumnsForCellComps.bind(this)\n });\n this.addDestroyFunc(this.removeGridColumnListeners.bind(this));\n }\n // executes all functions in destroyFuncsForColumnListeners and then clears the list\n removeGridColumnListeners() {\n this.destroyFuncsForColumnListeners.forEach((func) => func());\n this.destroyFuncsForColumnListeners.length = 0;\n }\n // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.\n // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to\n // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here\n // once instead.\n refreshListenersToColumnsForCellComps() {\n this.removeGridColumnListeners();\n const cols = this.colModel.getCols();\n cols.forEach((col) => {\n const forEachCellWithThisCol = (callback) => {\n this.getAllCellCtrls().forEach((cellCtrl) => {\n if (cellCtrl.column === col) {\n callback(cellCtrl);\n }\n });\n };\n const leftChangedListener = () => {\n forEachCellWithThisCol((cellCtrl) => cellCtrl.onLeftChanged());\n };\n const widthChangedListener = () => {\n forEachCellWithThisCol((cellCtrl) => cellCtrl.onWidthChanged());\n };\n const firstRightPinnedChangedListener = () => {\n forEachCellWithThisCol((cellCtrl) => cellCtrl.onFirstRightPinnedChanged());\n };\n const lastLeftPinnedChangedListener = () => {\n forEachCellWithThisCol((cellCtrl) => cellCtrl.onLastLeftPinnedChanged());\n };\n const colDefChangedListener = () => {\n forEachCellWithThisCol((cellCtrl) => cellCtrl.onColDefChanged());\n };\n col.__addEventListener(\"leftChanged\", leftChangedListener);\n col.__addEventListener(\"widthChanged\", widthChangedListener);\n col.__addEventListener(\"firstRightPinnedChanged\", firstRightPinnedChangedListener);\n col.__addEventListener(\"lastLeftPinnedChanged\", lastLeftPinnedChangedListener);\n col.__addEventListener(\"colDefChanged\", colDefChangedListener);\n this.destroyFuncsForColumnListeners.push(() => {\n col.__removeEventListener(\"leftChanged\", leftChangedListener);\n col.__removeEventListener(\"widthChanged\", widthChangedListener);\n col.__removeEventListener(\"firstRightPinnedChanged\", firstRightPinnedChangedListener);\n col.__removeEventListener(\"lastLeftPinnedChanged\", lastLeftPinnedChangedListener);\n col.__removeEventListener(\"colDefChanged\", colDefChangedListener);\n });\n });\n }\n onDomLayoutChanged() {\n const printLayout = _isDomLayout(this.gos, \"print\");\n const embedFullWidthRows = printLayout || this.gos.get(\"embedFullWidthRows\");\n const destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate({ domLayoutChanged: true });\n }\n }\n // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n datasourceChanged() {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n const rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n }\n onPageLoaded(event) {\n const params = {\n recycleRows: event.keepRenderedRows,\n animate: event.animate,\n newData: event.newData,\n newPage: event.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n }\n /**\n * @param column AgColumn\n * @returns An array with HTMLElement for every cell of the column passed as param.\n * If the cell is spanning across multiple columns, it only returns the html element\n * if the column passed is the first column of the span (used for auto width calculation).\n */\n getAllCellsNotSpanningForColumn(column) {\n const res = [];\n this.getAllRowCtrls().forEach((rowCtrl) => {\n const eCell = rowCtrl.getCellCtrl(column, true)?.eGui;\n if (eCell) {\n res.push(eCell);\n }\n });\n return res;\n }\n refreshFloatingRowComps() {\n this.refreshFloatingRows(this.topRowCtrls, \"top\");\n this.refreshFloatingRows(this.bottomRowCtrls, \"bottom\");\n }\n /**\n * Determines which row controllers need to be destroyed and re-created vs which ones can\n * be re-used.\n *\n * This is operation is to pinned/floating rows as `this.recycleRows` is to normal/body rows.\n *\n * All `RowCtrl` instances in `rowCtrls` that don't correspond to `RowNode` instances in `rowNodes` are destroyed.\n * All `RowNode` instances in `rowNodes` that don't correspond to `RowCtrl` instances in `rowCtrls` are created.\n * All instances in `rowCtrls` must be in the same order as their corresponding nodes in `rowNodes`.\n *\n * @param rowCtrls The list of existing row controllers\n * @param rowNodes The canonical list of row nodes that should have associated controllers\n */\n refreshFloatingRows(rowCtrls, floating) {\n const { pinnedRowModel, beans, printLayout } = this;\n const rowCtrlMap = Object.fromEntries(rowCtrls.map((ctrl) => [ctrl.rowNode.id, ctrl]));\n pinnedRowModel?.forEachPinnedRow(floating, (node, i) => {\n const rowCtrl = rowCtrls[i];\n const rowCtrlDoesNotExist = rowCtrl && pinnedRowModel.getPinnedRowById(rowCtrl.rowNode.id, floating) === void 0;\n if (rowCtrlDoesNotExist) {\n rowCtrl.destroyFirstPass();\n rowCtrl.destroySecondPass();\n }\n if (node.id in rowCtrlMap) {\n rowCtrls[i] = rowCtrlMap[node.id];\n delete rowCtrlMap[node.id];\n } else {\n rowCtrls[i] = new RowCtrl(node, beans, false, false, printLayout);\n }\n });\n const rowNodeCount = (floating === \"top\" ? pinnedRowModel?.getPinnedTopRowCount() : pinnedRowModel?.getPinnedBottomRowCount()) ?? 0;\n rowCtrls.length = rowNodeCount;\n }\n onPinnedRowDataChanged() {\n const params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n }\n redrawRow(rowNode, suppressEvent = false) {\n if (rowNode.sticky) {\n this.stickyRowFeature?.refreshStickyNode(rowNode);\n } else if (this.cachedRowCtrls?.has(rowNode)) {\n this.cachedRowCtrls.removeRow(rowNode);\n return;\n } else {\n const destroyAndRecreateCtrl = (dataStruct) => {\n const ctrl = dataStruct[rowNode.rowIndex];\n if (!ctrl) {\n return;\n }\n if (ctrl.rowNode !== rowNode) {\n return;\n }\n ctrl.destroyFirstPass();\n ctrl.destroySecondPass();\n dataStruct[rowNode.rowIndex] = this.createRowCon(rowNode, false, false);\n };\n switch (rowNode.rowPinned) {\n case \"top\":\n destroyAndRecreateCtrl(this.topRowCtrls);\n break;\n case \"bottom\":\n destroyAndRecreateCtrl(this.bottomRowCtrls);\n break;\n default:\n destroyAndRecreateCtrl(this.rowCtrlsByRowIndex);\n this.updateAllRowCtrls();\n }\n }\n if (!suppressEvent) {\n this.dispatchDisplayedRowsChanged(false);\n }\n }\n redrawRows(rowNodes) {\n const partialRefresh = rowNodes != null;\n if (partialRefresh) {\n rowNodes?.forEach((node) => this.redrawRow(node, true));\n this.dispatchDisplayedRowsChanged(false);\n return;\n }\n this.redrawAfterModelUpdate();\n }\n // gets called from:\n // +) initialisation (in registerGridComp) params = null\n // +) onDomLayoutChanged, params = null\n // +) onPageLoaded, recycleRows, animate, newData, newPage from event, onlyBody=true\n // +) onPinnedRowDataChanged, recycleRows = true\n // +) redrawRows (from Grid API), recycleRows = true/false\n redrawAfterModelUpdate(params = {}) {\n this.getLockOnRefresh();\n const focusedCell = this.beans.focusSvc?.getFocusCellToUseAfterRefresh();\n this.updateContainerHeights();\n this.scrollToTopIfNewData(params);\n const recycleRows = !params.domLayoutChanged && !!params.recycleRows;\n const animate = params.animate && _isAnimateRows(this.gos);\n const rowsToRecycle = recycleRows ? this.getRowsToRecycle() : null;\n if (!recycleRows) {\n this.removeAllRowComps();\n }\n this.workOutFirstAndLastRowsToRender();\n const { stickyRowFeature } = this;\n if (stickyRowFeature) {\n stickyRowFeature.checkStickyRows();\n const extraHeight = stickyRowFeature.extraTopHeight + stickyRowFeature.extraBottomHeight;\n if (extraHeight) {\n this.updateContainerHeights(extraHeight);\n }\n }\n this.recycleRows(rowsToRecycle, animate);\n this.gridBodyCtrl.updateRowCount();\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.dispatchDisplayedRowsChanged();\n if (focusedCell != null) {\n this.restoreFocusedCell(focusedCell);\n }\n this.releaseLockOnRefresh();\n }\n scrollToTopIfNewData(params) {\n const scrollToTop = params.newData || params.newPage;\n const suppressScrollToTop = this.gos.get(\"suppressScrollOnNewData\");\n if (scrollToTop && !suppressScrollToTop) {\n this.gridBodyCtrl.scrollFeature.scrollToTop();\n this.stickyRowFeature?.resetOffsets();\n }\n }\n updateContainerHeights(additionalHeight = 0) {\n const { rowContainerHeight } = this;\n if (this.printLayout) {\n rowContainerHeight.setModelHeight(null);\n return;\n }\n let containerHeight = this.pageBounds.getCurrentPageHeight();\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n rowContainerHeight.setModelHeight(containerHeight + additionalHeight);\n }\n getLockOnRefresh() {\n if (this.refreshInProgress) {\n throw new Error(_errMsg(252));\n }\n this.refreshInProgress = true;\n this.beans.frameworkOverrides.getLockOnRefresh?.();\n }\n releaseLockOnRefresh() {\n this.refreshInProgress = false;\n this.beans.frameworkOverrides.releaseLockOnRefresh?.();\n }\n isRefreshInProgress() {\n return this.refreshInProgress;\n }\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n restoreFocusedCell(cellPosition) {\n if (!cellPosition) {\n return;\n }\n const focusSvc = this.beans.focusSvc;\n const cellToFocus = this.findPositionToFocus(cellPosition);\n if (!cellToFocus) {\n focusSvc.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: getFocusHeaderRowCount(this.beans) - 1,\n column: cellPosition.column\n }\n });\n return;\n }\n if (cellPosition.rowIndex !== cellToFocus.rowIndex || cellPosition.rowPinned != cellToFocus.rowPinned) {\n focusSvc.setFocusedCell({\n ...cellToFocus,\n preventScrollOnBrowserFocus: true,\n forceBrowserFocus: true\n });\n return;\n }\n if (!focusSvc.doesRowOrCellHaveBrowserFocus()) {\n this.onCellFocusChanged(\n _addGridCommonParams(this.gos, {\n ...cellToFocus,\n forceBrowserFocus: true,\n preventScrollOnBrowserFocus: true,\n type: \"cellFocused\"\n })\n );\n }\n }\n findPositionToFocus(cellPosition) {\n const { pagination, pageBounds } = this.beans;\n let rowPosition = cellPosition;\n if (rowPosition.rowPinned == null && pagination && pageBounds && !pagination.isRowInPage(rowPosition.rowIndex)) {\n rowPosition = { rowPinned: null, rowIndex: pageBounds.getFirstRow() };\n }\n while (rowPosition) {\n if (rowPosition.rowPinned == null && pageBounds) {\n if (rowPosition.rowIndex < pageBounds.getFirstRow()) {\n rowPosition = _getRowAbove(this.beans, { rowPinned: null, rowIndex: 0 });\n if (!rowPosition) {\n return null;\n }\n } else if (rowPosition.rowIndex > pageBounds.getLastRow()) {\n rowPosition = { rowPinned: null, rowIndex: pageBounds.getLastRow() };\n }\n }\n const row = this.getRowByPosition(rowPosition);\n if (row?.isAlive()) {\n return { ...row.getRowPosition(), column: cellPosition.column };\n }\n rowPosition = _getRowAbove(this.beans, rowPosition);\n }\n return null;\n }\n getAllCellCtrls() {\n const res = [];\n const rowCtrls = this.getAllRowCtrls();\n const rowCtrlsLength = rowCtrls.length;\n for (let i = 0; i < rowCtrlsLength; i++) {\n const cellCtrls = rowCtrls[i].getAllCellCtrls();\n const cellCtrlsLength = cellCtrls.length;\n for (let j = 0; j < cellCtrlsLength; j++) {\n res.push(cellCtrls[j]);\n }\n }\n return res;\n }\n getAllRowCtrls() {\n const { spannedRowRenderer } = this.beans;\n const stickyTopRowCtrls = this.getStickyTopRowCtrls();\n const stickyBottomRowCtrls = this.getStickyBottomRowCtrls();\n const res = [\n ...this.topRowCtrls,\n ...this.bottomRowCtrls,\n ...stickyTopRowCtrls,\n ...stickyBottomRowCtrls,\n ...spannedRowRenderer?.getCtrls(\"top\") ?? [],\n ...spannedRowRenderer?.getCtrls(\"bottom\") ?? [],\n ...spannedRowRenderer?.getCtrls(\"center\") ?? [],\n ...Object.values(this.rowCtrlsByRowIndex)\n ];\n return res;\n }\n addRenderedRowListener(eventName, rowIndex, callback) {\n const rowComp = this.rowCtrlsByRowIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n }\n refreshCells(params = {}) {\n const refreshCellParams = {\n forceRefresh: params.force,\n newData: false,\n suppressFlash: params.suppressFlash\n };\n for (const cellCtrl of this.getCellCtrls(params.rowNodes, params.columns)) {\n cellCtrl.refreshOrDestroyCell(refreshCellParams);\n }\n this.refreshFullWidth(params.rowNodes);\n }\n refreshFullWidth(rowNodes) {\n if (!rowNodes) {\n return;\n }\n let rowRedrawn = false;\n for (const rowCtrl of this.getRowCtrls(rowNodes)) {\n if (!rowCtrl.isFullWidth()) {\n continue;\n }\n const refreshed = rowCtrl.refreshFullWidth();\n if (!refreshed) {\n rowRedrawn = true;\n this.redrawRow(rowCtrl.rowNode, true);\n }\n }\n if (rowRedrawn) {\n this.dispatchDisplayedRowsChanged(false);\n }\n }\n /**\n * @param rowNodes if provided, returns the RowCtrls for the provided rowNodes. otherwise returns all RowCtrls.\n */\n getRowCtrls(rowNodes) {\n const rowIdsMap = mapRowNodes(rowNodes);\n const allRowCtrls = this.getAllRowCtrls();\n if (!rowNodes || !rowIdsMap) {\n return allRowCtrls;\n }\n return allRowCtrls.filter((rowCtrl) => {\n const rowNode = rowCtrl.rowNode;\n return isRowInMap(rowNode, rowIdsMap);\n });\n }\n // returns CellCtrl's that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so 4 CellCtrl's returned.\n getCellCtrls(rowNodes, columns) {\n let colIdsMap;\n if (_exists(columns)) {\n colIdsMap = {};\n columns.forEach((colKey) => {\n const column = this.colModel.getCol(colKey);\n if (_exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n const res = [];\n this.getRowCtrls(rowNodes).forEach((rowCtrl) => {\n rowCtrl.getAllCellCtrls().forEach((cellCtrl) => {\n const colId = cellCtrl.column.getId();\n const excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n res.push(cellCtrl);\n });\n });\n return res;\n }\n destroy() {\n this.removeAllRowComps(true);\n super.destroy();\n }\n removeAllRowComps(suppressAnimation = false) {\n const rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove, suppressAnimation);\n this.stickyRowFeature?.destroyStickyCtrls();\n }\n getRowsToRecycle() {\n const stubNodeIndexes = [];\n for (const index of Object.keys(this.rowCtrlsByRowIndex)) {\n const rowCtrl = this.rowCtrlsByRowIndex[index];\n const stubNode = rowCtrl.rowNode.id == null;\n if (stubNode) {\n stubNodeIndexes.push(index);\n }\n }\n this.removeRowCtrls(stubNodeIndexes);\n const ctrlsByIdMap = {};\n for (const rowCtrl of Object.values(this.rowCtrlsByRowIndex)) {\n const rowNode = rowCtrl.rowNode;\n ctrlsByIdMap[rowNode.id] = rowCtrl;\n }\n this.rowCtrlsByRowIndex = {};\n return ctrlsByIdMap;\n }\n // takes array of row indexes\n removeRowCtrls(rowsToRemove, suppressAnimation = false) {\n rowsToRemove.forEach((indexToRemove) => {\n const rowCtrl = this.rowCtrlsByRowIndex[indexToRemove];\n if (rowCtrl) {\n rowCtrl.destroyFirstPass(suppressAnimation);\n rowCtrl.destroySecondPass();\n }\n delete this.rowCtrlsByRowIndex[indexToRemove];\n });\n }\n onBodyScroll(e) {\n if (e.direction !== \"vertical\") {\n return;\n }\n this.redraw({ afterScroll: true });\n }\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n redraw(params = {}) {\n const { focusSvc, animationFrameSvc } = this.beans;\n const { afterScroll } = params;\n let cellFocused;\n const stickyRowFeature = this.stickyRowFeature;\n if (stickyRowFeature) {\n cellFocused = focusSvc?.getFocusCellToUseAfterRefresh() || void 0;\n }\n const oldFirstRow = this.firstRenderedRow;\n const oldLastRow = this.lastRenderedRow;\n this.workOutFirstAndLastRowsToRender();\n let hasStickyRowChanges = false;\n if (stickyRowFeature) {\n hasStickyRowChanges = stickyRowFeature.checkStickyRows();\n const extraHeight = stickyRowFeature.extraTopHeight + stickyRowFeature.extraBottomHeight;\n if (extraHeight) {\n this.updateContainerHeights(extraHeight);\n }\n }\n const rangeChanged = this.firstRenderedRow !== oldFirstRow || this.lastRenderedRow !== oldLastRow;\n if (afterScroll && !hasStickyRowChanges && !rangeChanged) {\n return;\n }\n this.getLockOnRefresh();\n this.recycleRows(null, false, afterScroll);\n this.releaseLockOnRefresh();\n this.dispatchDisplayedRowsChanged(afterScroll && !hasStickyRowChanges);\n if (cellFocused != null) {\n const newFocusedCell = focusSvc?.getFocusCellToUseAfterRefresh();\n if (cellFocused != null && newFocusedCell == null) {\n animationFrameSvc?.flushAllFrames();\n this.restoreFocusedCell(cellFocused);\n }\n }\n }\n removeRowCompsNotToDraw(indexesToDraw, suppressAnimation) {\n const indexesToDrawMap = {};\n indexesToDraw.forEach((index) => indexesToDrawMap[index] = true);\n const existingIndexes = Object.keys(this.rowCtrlsByRowIndex);\n const indexesNotToDraw = existingIndexes.filter((index) => !indexesToDrawMap[index]);\n this.removeRowCtrls(indexesNotToDraw, suppressAnimation);\n }\n calculateIndexesToDraw(rowsToRecycle) {\n const indexesToDraw = [];\n for (let i = this.firstRenderedRow; i <= this.lastRenderedRow; i++) {\n indexesToDraw.push(i);\n }\n const pagination = this.beans.pagination;\n const focusedRow = this.beans.focusSvc?.getFocusedCell()?.rowIndex;\n if (focusedRow != null && (focusedRow < this.firstRenderedRow || focusedRow > this.lastRenderedRow) && (!pagination || pagination.isRowInPage(focusedRow))) {\n indexesToDraw.push(focusedRow);\n }\n const checkRowToDraw = (rowComp) => {\n const index = rowComp.rowNode.rowIndex;\n if (index == null || index === focusedRow) {\n return;\n }\n if (index < this.firstRenderedRow || index > this.lastRenderedRow) {\n if (this.doNotUnVirtualiseRow(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n };\n for (const rowCtrl of Object.values(this.rowCtrlsByRowIndex)) {\n checkRowToDraw(rowCtrl);\n }\n if (rowsToRecycle) {\n for (const rowCtrl of Object.values(rowsToRecycle)) {\n checkRowToDraw(rowCtrl);\n }\n }\n indexesToDraw.sort((a, b) => a - b);\n const ret = [];\n for (let i = 0; i < indexesToDraw.length; i++) {\n const currRow = indexesToDraw[i];\n const rowNode = this.rowModel.getRow(currRow);\n if (rowNode && !rowNode.sticky) {\n ret.push(currRow);\n }\n }\n return ret;\n }\n recycleRows(rowsToRecycle, animate = false, afterScroll = false) {\n const indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);\n if (this.printLayout || afterScroll) {\n animate = false;\n }\n this.removeRowCompsNotToDraw(indexesToDraw, !animate);\n const rowCtrls = [];\n indexesToDraw.forEach((rowIndex) => {\n const rowCtrl = this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);\n if (_exists(rowCtrl)) {\n rowCtrls.push(rowCtrl);\n }\n });\n if (rowsToRecycle) {\n const { animationFrameSvc } = this.beans;\n const useAnimationFrame = animationFrameSvc?.active && afterScroll && !this.printLayout;\n if (useAnimationFrame) {\n animationFrameSvc.addDestroyTask(() => {\n this.destroyRowCtrls(rowsToRecycle, animate);\n this.updateAllRowCtrls();\n this.dispatchDisplayedRowsChanged();\n });\n } else {\n this.destroyRowCtrls(rowsToRecycle, animate);\n }\n }\n this.updateAllRowCtrls();\n }\n dispatchDisplayedRowsChanged(afterScroll = false) {\n this.eventSvc.dispatchEvent({\n type: \"displayedRowsChanged\",\n afterScroll\n });\n }\n onDisplayedColumnsChanged() {\n const { visibleCols } = this.beans;\n const pinningLeft = visibleCols.isPinningLeft();\n const pinningRight = visibleCols.isPinningRight();\n const atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.embedFullWidthRows) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n }\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n redrawFullWidthEmbeddedRows() {\n const rowsToRemove = [];\n this.getFullWidthRowCtrls().forEach((fullWidthCtrl) => {\n const rowIndex = fullWidthCtrl.rowNode.rowIndex;\n rowsToRemove.push(rowIndex.toString());\n });\n this.refreshFloatingRowComps();\n this.removeRowCtrls(rowsToRemove);\n this.redraw({ afterScroll: true });\n }\n getFullWidthRowCtrls(rowNodes) {\n const rowNodesMap = mapRowNodes(rowNodes);\n return this.getAllRowCtrls().filter((rowCtrl) => {\n if (!rowCtrl.isFullWidth()) {\n return false;\n }\n const rowNode = rowCtrl.rowNode;\n if (rowNodesMap != null && !isRowInMap(rowNode, rowNodesMap)) {\n return false;\n }\n return true;\n });\n }\n createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll) {\n let rowNode;\n let rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n if (!rowCtrl) {\n rowNode = this.rowModel.getRow(rowIndex);\n if (_exists(rowNode) && _exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowCtrl = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n const creatingNewRowCtrl = !rowCtrl;\n if (creatingNewRowCtrl) {\n if (!rowNode) {\n rowNode = this.rowModel.getRow(rowIndex);\n }\n if (_exists(rowNode)) {\n rowCtrl = this.createRowCon(rowNode, animate, afterScroll);\n } else {\n return;\n }\n }\n if (rowNode) {\n rowNode.alreadyRendered = true;\n }\n this.rowCtrlsByRowIndex[rowIndex] = rowCtrl;\n return rowCtrl;\n }\n destroyRowCtrls(rowCtrlsMap, animate) {\n const executeInAWhileFuncs = [];\n if (rowCtrlsMap) {\n for (const rowCtrl of Object.values(rowCtrlsMap)) {\n if (!rowCtrl) {\n continue;\n }\n if (this.cachedRowCtrls && rowCtrl.isCacheable()) {\n this.cachedRowCtrls.addRow(rowCtrl);\n continue;\n }\n rowCtrl.destroyFirstPass(!animate);\n if (animate) {\n const instanceId = rowCtrl.instanceId;\n this.zombieRowCtrls[instanceId] = rowCtrl;\n executeInAWhileFuncs.push(() => {\n rowCtrl.destroySecondPass();\n delete this.zombieRowCtrls[instanceId];\n });\n } else {\n rowCtrl.destroySecondPass();\n }\n }\n }\n if (animate) {\n executeInAWhileFuncs.push(() => {\n this.updateAllRowCtrls();\n this.dispatchDisplayedRowsChanged();\n });\n window.setTimeout(() => executeInAWhileFuncs.forEach((func) => func()), ROW_ANIMATION_TIMEOUT);\n }\n }\n getRowBuffer() {\n return this.gos.get(\"rowBuffer\");\n }\n getRowBufferInPixels() {\n const rowsToBuffer = this.getRowBuffer();\n const defaultRowHeight = _getRowHeightAsNumber(this.beans);\n return rowsToBuffer * defaultRowHeight;\n }\n workOutFirstAndLastRowsToRender() {\n const { rowContainerHeight, pageBounds, rowModel } = this;\n rowContainerHeight.updateOffset();\n let newFirst;\n let newLast;\n if (!rowModel.isRowsToRender()) {\n newFirst = 0;\n newLast = -1;\n } else if (this.printLayout) {\n this.beans.environment.refreshRowHeightVariable();\n newFirst = pageBounds.getFirstRow();\n newLast = pageBounds.getLastRow();\n } else {\n const bufferPixels = this.getRowBufferInPixels();\n const scrollFeature = this.ctrlsSvc.getScrollFeature();\n const suppressRowVirtualisation = this.gos.get(\"suppressRowVirtualisation\");\n let rowHeightsChanged = false;\n let firstPixel;\n let lastPixel;\n do {\n const paginationOffset = pageBounds.getPixelOffset();\n const { pageFirstPixel, pageLastPixel } = pageBounds.getCurrentPagePixelRange();\n const divStretchOffset = rowContainerHeight.divStretchOffset;\n const bodyVRange = scrollFeature.getVScrollPosition();\n const bodyTopPixel = bodyVRange.top;\n const bodyBottomPixel = bodyVRange.bottom;\n if (suppressRowVirtualisation) {\n firstPixel = pageFirstPixel + divStretchOffset;\n lastPixel = pageLastPixel + divStretchOffset;\n } else {\n firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;\n lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;\n }\n this.firstVisibleVPixel = Math.max(bodyTopPixel + paginationOffset, pageFirstPixel) + divStretchOffset;\n this.lastVisibleVPixel = Math.min(bodyBottomPixel + paginationOffset, pageLastPixel) + divStretchOffset;\n rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n } while (rowHeightsChanged);\n let firstRowIndex = rowModel.getRowIndexAtPixel(firstPixel);\n let lastRowIndex = rowModel.getRowIndexAtPixel(lastPixel);\n const pageFirstRow = pageBounds.getFirstRow();\n const pageLastRow = pageBounds.getLastRow();\n if (firstRowIndex < pageFirstRow) {\n firstRowIndex = pageFirstRow;\n }\n if (lastRowIndex > pageLastRow) {\n lastRowIndex = pageLastRow;\n }\n newFirst = firstRowIndex;\n newLast = lastRowIndex;\n }\n const rowLayoutNormal = _isDomLayout(this.gos, \"normal\");\n const suppressRowCountRestriction = this.gos.get(\"suppressMaxRenderedRowRestriction\");\n const rowBufferMaxSize = Math.max(this.getRowBuffer(), 500);\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > rowBufferMaxSize) {\n newLast = newFirst + rowBufferMaxSize;\n }\n }\n const firstDiffers = newFirst !== this.firstRenderedRow;\n const lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n this.eventSvc.dispatchEvent({\n type: \"viewportChanged\",\n firstRow: newFirst,\n lastRow: newLast\n });\n }\n }\n /**\n * This event will only be fired once, and is queued until after the browser next renders.\n * This allows us to fire an event during the start of the render cycle, when we first see data being rendered\n * but not execute the event until all of the data has finished being rendered to the dom.\n */\n dispatchFirstDataRenderedEvent() {\n if (this.dataFirstRenderedFired) {\n return;\n }\n this.dataFirstRenderedFired = true;\n _requestAnimationFrame(this.beans, () => {\n this.beans.eventSvc.dispatchEvent({\n type: \"firstDataRendered\",\n firstRow: this.firstRenderedRow,\n lastRow: this.lastRenderedRow\n });\n });\n }\n ensureAllRowsInRangeHaveHeightsCalculated(topPixel, bottomPixel) {\n const pinnedRowHeightsChanged = this.pinnedRowModel?.ensureRowHeightsValid();\n const stickyHeightsChanged = this.stickyRowFeature?.ensureRowHeightsValid();\n const { pageBounds, rowModel } = this;\n const rowModelHeightsChanged = rowModel.ensureRowHeightsValid(\n topPixel,\n bottomPixel,\n pageBounds.getFirstRow(),\n pageBounds.getLastRow()\n );\n if (rowModelHeightsChanged || stickyHeightsChanged) {\n this.eventSvc.dispatchEvent({\n type: \"recalculateRowBounds\"\n });\n }\n if (stickyHeightsChanged || rowModelHeightsChanged || pinnedRowHeightsChanged) {\n this.updateContainerHeights();\n return true;\n }\n return false;\n }\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n // c) if detail record of master detail, as users complained that the context of detail rows\n // was getting lost when detail row out of view. eg user expands to show detail row,\n // then manipulates the detail panel (eg sorts the detail grid), then context is lost\n // after detail panel is scrolled out of / into view.\n doNotUnVirtualiseRow(rowCtrl) {\n const REMOVE_ROW = false;\n const KEEP_ROW = true;\n const rowNode = rowCtrl.rowNode;\n const rowHasFocus = this.focusSvc.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n const rowIsEditing = rowCtrl.editing;\n const rowIsDetail = rowNode.detail;\n const mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n const rowNodePresent = this.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n }\n isRowPresent(rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n return this.beans.pagination?.isRowInPage(rowNode.rowIndex) ?? true;\n }\n createRowCon(rowNode, animate, afterScroll) {\n const rowCtrlFromCache = this.cachedRowCtrls?.getRow(rowNode) ?? null;\n if (rowCtrlFromCache) {\n return rowCtrlFromCache;\n }\n const useAnimationFrameForCreate = afterScroll && !this.printLayout && !!this.beans.animationFrameSvc?.active;\n const res = new RowCtrl(rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);\n return res;\n }\n getRenderedNodes() {\n const viewportRows = Object.values(this.rowCtrlsByRowIndex).map((rowCtrl) => rowCtrl.rowNode);\n const stickyTopRows = this.getStickyTopRowCtrls().map((rowCtrl) => rowCtrl.rowNode);\n const stickyBottomRows = this.getStickyBottomRowCtrls().map((rowCtrl) => rowCtrl.rowNode);\n return [...stickyTopRows, ...viewportRows, ...stickyBottomRows];\n }\n getRowByPosition(rowPosition) {\n let rowCtrl;\n const { rowIndex } = rowPosition;\n switch (rowPosition.rowPinned) {\n case \"top\":\n rowCtrl = this.topRowCtrls[rowIndex];\n break;\n case \"bottom\":\n rowCtrl = this.bottomRowCtrls[rowIndex];\n break;\n default:\n rowCtrl = this.rowCtrlsByRowIndex[rowIndex];\n if (!rowCtrl) {\n rowCtrl = this.getStickyTopRowCtrls().find((ctrl) => ctrl.rowNode.rowIndex === rowIndex) || null;\n if (!rowCtrl) {\n rowCtrl = this.getStickyBottomRowCtrls().find((ctrl) => ctrl.rowNode.rowIndex === rowIndex) || null;\n }\n }\n break;\n }\n return rowCtrl;\n }\n // returns true if any row between startIndex and endIndex is rendered. used by\n // SSRM or IRM, as they don't want to purge visible blocks from cache.\n isRangeInRenderedViewport(startIndex, endIndex) {\n const parentClosed = startIndex == null || endIndex == null;\n if (parentClosed) {\n return false;\n }\n const blockAfterViewport = startIndex > this.lastRenderedRow;\n const blockBeforeViewport = endIndex < this.firstRenderedRow;\n const blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;\n return blockInsideViewport;\n }\n};\nvar RowCtrlCache = class {\n constructor(maxCount) {\n // map for fast access\n this.entriesMap = {};\n // list for keeping order\n this.entriesList = [];\n this.maxCount = maxCount;\n }\n addRow(rowCtrl) {\n this.entriesMap[rowCtrl.rowNode.id] = rowCtrl;\n this.entriesList.push(rowCtrl);\n rowCtrl.setCached(true);\n if (this.entriesList.length > this.maxCount) {\n const rowCtrlToDestroy = this.entriesList[0];\n rowCtrlToDestroy.destroyFirstPass();\n rowCtrlToDestroy.destroySecondPass();\n this.removeFromCache(rowCtrlToDestroy);\n }\n }\n getRow(rowNode) {\n if (rowNode == null || rowNode.id == null) {\n return null;\n }\n const res = this.entriesMap[rowNode.id];\n if (!res) {\n return null;\n }\n this.removeFromCache(res);\n res.setCached(false);\n const rowNodeMismatch = res.rowNode != rowNode;\n return rowNodeMismatch ? null : res;\n }\n has(rowNode) {\n return this.entriesMap[rowNode.id] != null;\n }\n removeRow(rowNode) {\n const rowNodeId = rowNode.id;\n const ctrl = this.entriesMap[rowNodeId];\n delete this.entriesMap[rowNodeId];\n _removeFromArray(this.entriesList, ctrl);\n }\n removeFromCache(rowCtrl) {\n const rowNodeId = rowCtrl.rowNode.id;\n delete this.entriesMap[rowNodeId];\n _removeFromArray(this.entriesList, rowCtrl);\n }\n getEntries() {\n return this.entriesList;\n }\n};\nfunction mapRowNodes(rowNodes) {\n if (!rowNodes) {\n return;\n }\n const res = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach((rowNode) => {\n const id = rowNode.id;\n switch (rowNode.rowPinned) {\n case \"top\":\n res.top[id] = rowNode;\n break;\n case \"bottom\":\n res.bottom[id] = rowNode;\n break;\n default:\n res.normal[id] = rowNode;\n break;\n }\n });\n return res;\n}\nfunction isRowInMap(rowNode, rowIdsMap) {\n const id = rowNode.id;\n const floating = rowNode.rowPinned;\n switch (floating) {\n case \"top\":\n return rowIdsMap.top[id] != null;\n case \"bottom\":\n return rowIdsMap.bottom[id] != null;\n default:\n return rowIdsMap.normal[id] != null;\n }\n}\n\n// packages/ag-grid-community/src/sort/rowNodeSorter.ts\nvar RowNodeSorter = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowNodeSorter\";\n }\n postConstruct() {\n const { gos } = this;\n this.isAccentedSort = gos.get(\"accentedSort\");\n this.primaryColumnsSortGroups = _isColumnsSortingCoupledToGroup(gos);\n this.addManagedPropertyListener(\n \"accentedSort\",\n (propChange) => this.isAccentedSort = propChange.currentValue\n );\n this.addManagedPropertyListener(\n \"autoGroupColumnDef\",\n () => this.primaryColumnsSortGroups = _isColumnsSortingCoupledToGroup(gos)\n );\n }\n doFullSort(rowNodes, sortOptions) {\n const sortedRowNodes = rowNodes.map((rowNode, currentPos) => ({\n currentPos,\n rowNode\n }));\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes.map((item) => item.rowNode);\n }\n compareRowNodes(sortOptions, sortedNodeA, sortedNodeB) {\n const nodeA = sortedNodeA.rowNode;\n const nodeB = sortedNodeB.rowNode;\n for (let i = 0, len = sortOptions.length; i < len; i++) {\n const sortOption = sortOptions[i];\n const isDescending = sortOption.sort === \"desc\";\n const valueA = this.getValue(nodeA, sortOption.column);\n const valueB = this.getValue(nodeB, sortOption.column);\n let comparatorResult;\n const providedComparator = this.getComparator(sortOption, nodeA);\n if (providedComparator) {\n comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isDescending);\n } else {\n comparatorResult = _defaultComparator(valueA, valueB, this.isAccentedSort);\n }\n const validResult = !isNaN(comparatorResult);\n if (validResult && comparatorResult !== 0) {\n return sortOption.sort === \"asc\" ? comparatorResult : comparatorResult * -1;\n }\n }\n return sortedNodeA.currentPos - sortedNodeB.currentPos;\n }\n getComparator(sortOption, rowNode) {\n const column = sortOption.column;\n const comparatorOnCol = column.getColDef().comparator;\n if (comparatorOnCol != null) {\n return comparatorOnCol;\n }\n if (!column.getColDef().showRowGroup) {\n return;\n }\n const groupLeafField = !rowNode.group && column.getColDef().field;\n if (!groupLeafField) {\n return;\n }\n const primaryColumn = this.beans.colModel.getColDefCol(groupLeafField);\n if (!primaryColumn) {\n return;\n }\n return primaryColumn.getColDef().comparator;\n }\n getValue(node, column) {\n const { valueSvc, colModel, showRowGroupCols, gos } = this.beans;\n if (!this.primaryColumnsSortGroups) {\n return valueSvc.getValue(column, node, false);\n }\n const isNodeGroupedAtLevel = node.rowGroupColumn === column;\n if (isNodeGroupedAtLevel) {\n const isGroupRows = _isGroupUseEntireRow(gos, colModel.isPivotActive());\n if (isGroupRows) {\n const leafChild = node.allLeafChildren?.[0];\n if (leafChild) {\n return valueSvc.getValue(column, leafChild, false);\n }\n return void 0;\n }\n const displayCol = showRowGroupCols?.getShowRowGroupCol(column.getId());\n if (!displayCol) {\n return void 0;\n }\n return node.groupData?.[displayCol.getId()];\n }\n if (node.group && column.getColDef().showRowGroup) {\n return void 0;\n }\n return valueSvc.getValue(column, node, false);\n }\n};\n\n// packages/ag-grid-community/src/sort/sortApi.ts\nfunction onSortChanged(beans) {\n beans.sortSvc?.onSortChanged(\"api\");\n}\n\n// packages/ag-grid-community/src/sort/sortIndicatorComp.ts\nvar makeIconParams = (dataRefSuffix, classSuffix) => ({\n tag: \"span\",\n ref: `eSort${dataRefSuffix}`,\n cls: `ag-sort-indicator-icon ag-sort-${classSuffix} ag-hidden`,\n attrs: { \"aria-hidden\": \"true\" }\n});\nvar SortIndicatorElement = {\n tag: \"span\",\n cls: \"ag-sort-indicator-container\",\n children: [\n makeIconParams(\"Order\", \"order\"),\n makeIconParams(\"Asc\", \"ascending-icon\"),\n makeIconParams(\"Desc\", \"descending-icon\"),\n makeIconParams(\"Mixed\", \"mixed-icon\"),\n makeIconParams(\"None\", \"none-icon\")\n ]\n};\nvar SortIndicatorComp = class extends Component {\n constructor(skipTemplate) {\n super();\n this.eSortOrder = RefPlaceholder;\n this.eSortAsc = RefPlaceholder;\n this.eSortDesc = RefPlaceholder;\n this.eSortMixed = RefPlaceholder;\n this.eSortNone = RefPlaceholder;\n if (!skipTemplate) {\n this.setTemplate(SortIndicatorElement);\n }\n }\n attachCustomElements(eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone) {\n this.eSortOrder = eSortOrder;\n this.eSortAsc = eSortAsc;\n this.eSortDesc = eSortDesc;\n this.eSortMixed = eSortMixed;\n this.eSortNone = eSortNone;\n }\n setupSort(column, suppressOrder = false) {\n this.column = column;\n this.suppressOrder = suppressOrder;\n this.setupMultiSortIndicator();\n if (!column.isSortable() && !column.getColDef().showRowGroup) {\n return;\n }\n this.addInIcon(\"sortAscending\", this.eSortAsc, column);\n this.addInIcon(\"sortDescending\", this.eSortDesc, column);\n this.addInIcon(\"sortUnSort\", this.eSortNone, column);\n const updateIcons = this.updateIcons.bind(this);\n const sortUpdated = this.onSortChanged.bind(this);\n this.addManagedPropertyListener(\"unSortIcon\", updateIcons);\n this.addManagedEventListeners({\n newColumnsLoaded: updateIcons,\n // Watch global events, as row group columns can effect their display column.\n sortChanged: sortUpdated,\n // when grouping changes so can sort indexes and icons\n columnRowGroupChanged: sortUpdated\n });\n this.onSortChanged();\n }\n addInIcon(iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n const eIcon = _createIconNoSpan(iconName, this.beans, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n }\n onSortChanged() {\n this.updateIcons();\n if (!this.suppressOrder) {\n this.updateSortOrder();\n }\n }\n updateIcons() {\n const { eSortAsc, eSortDesc, eSortNone, column, gos, beans } = this;\n const sortDirection = beans.sortSvc.getDisplaySortForColumn(column);\n if (eSortAsc) {\n const isAscending = sortDirection === \"asc\";\n _setDisplayed(eSortAsc, isAscending, { skipAriaHidden: true });\n }\n if (eSortDesc) {\n const isDescending = sortDirection === \"desc\";\n _setDisplayed(eSortDesc, isDescending, { skipAriaHidden: true });\n }\n if (eSortNone) {\n const alwaysHideNoSort = !column.getColDef().unSortIcon && !gos.get(\"unSortIcon\");\n const isNone = sortDirection === null || sortDirection === void 0;\n _setDisplayed(eSortNone, !alwaysHideNoSort && isNone, { skipAriaHidden: true });\n }\n }\n setupMultiSortIndicator() {\n const { eSortMixed, column, gos } = this;\n this.addInIcon(\"sortUnSort\", eSortMixed, column);\n const isColumnShowingRowGroup = column.getColDef().showRowGroup;\n const areGroupsCoupled = _isColumnsSortingCoupledToGroup(gos);\n if (areGroupsCoupled && isColumnShowingRowGroup) {\n this.addManagedEventListeners({\n // Watch global events, as row group columns can effect their display column.\n sortChanged: this.updateMultiSortIndicator.bind(this),\n // when grouping changes so can sort indexes and icons\n columnRowGroupChanged: this.updateMultiSortIndicator.bind(this)\n });\n this.updateMultiSortIndicator();\n }\n }\n updateMultiSortIndicator() {\n const { eSortMixed, beans, column } = this;\n if (eSortMixed) {\n const isMixedSort = beans.sortSvc.getDisplaySortForColumn(column) === \"mixed\";\n _setDisplayed(eSortMixed, isMixedSort, { skipAriaHidden: true });\n }\n }\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n updateSortOrder() {\n const {\n eSortOrder,\n column,\n beans: { sortSvc }\n } = this;\n if (!eSortOrder) {\n return;\n }\n const allColumnsWithSorting = sortSvc.getColumnsWithSortingOrdered();\n const indexThisCol = sortSvc.getDisplaySortIndexForColumn(column) ?? -1;\n const moreThanOneColSorting = allColumnsWithSorting.some(\n (col) => sortSvc.getDisplaySortIndexForColumn(col) ?? -1 >= 1\n );\n const showIndex = indexThisCol >= 0 && moreThanOneColSorting;\n _setDisplayed(eSortOrder, showIndex, { skipAriaHidden: true });\n if (indexThisCol >= 0) {\n eSortOrder.textContent = (indexThisCol + 1).toString();\n } else {\n _clearElement(eSortOrder);\n }\n }\n};\nvar SortIndicatorSelector = {\n selector: \"AG-SORT-INDICATOR\",\n component: SortIndicatorComp\n};\n\n// packages/ag-grid-community/src/sort/sortService.ts\nvar DEFAULT_SORTING_ORDER = [\"asc\", \"desc\", null];\nvar SortService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"sortSvc\";\n }\n progressSort(column, multiSort, source) {\n const nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n }\n progressSortFromEvent(column, event) {\n const sortUsingCtrl = this.gos.get(\"multiSortKey\") === \"ctrl\";\n const multiSort = sortUsingCtrl ? event.ctrlKey || event.metaKey : event.shiftKey;\n this.progressSort(column, multiSort, \"uiColumnSorted\");\n }\n setSortForColumn(column, sort, multiSort, source) {\n if (sort !== \"asc\" && sort !== \"desc\") {\n sort = null;\n }\n const { gos, showRowGroupCols } = this.beans;\n const isColumnsSortingCoupledToGroup = _isColumnsSortingCoupledToGroup(gos);\n let columnsToUpdate = [column];\n if (isColumnsSortingCoupledToGroup) {\n if (column.getColDef().showRowGroup) {\n const rowGroupColumns = showRowGroupCols?.getSourceColumnsForGroupColumn?.(column);\n const sortableRowGroupColumns = rowGroupColumns?.filter((col) => col.isSortable());\n if (sortableRowGroupColumns) {\n columnsToUpdate = [column, ...sortableRowGroupColumns];\n }\n }\n }\n columnsToUpdate.forEach((col) => this.setColSort(col, sort, source));\n const doingMultiSort = (multiSort || gos.get(\"alwaysMultiSort\")) && !gos.get(\"suppressMultiSort\");\n const updatedColumns = [];\n if (!doingMultiSort) {\n const clearedColumns = this.clearSortBarTheseColumns(columnsToUpdate, source);\n updatedColumns.push(...clearedColumns);\n }\n this.updateSortIndex(column);\n updatedColumns.push(...columnsToUpdate);\n this.dispatchSortChangedEvents(source, updatedColumns);\n }\n updateSortIndex(lastColToChange) {\n const { gos, colModel, showRowGroupCols } = this.beans;\n const isCoupled = _isColumnsSortingCoupledToGroup(gos);\n const groupParent = showRowGroupCols?.getShowRowGroupCol(lastColToChange.getId());\n const lastSortIndexCol = isCoupled ? groupParent || lastColToChange : lastColToChange;\n const allSortedCols = this.getColumnsWithSortingOrdered();\n colModel.forAllCols((col) => this.setColSortIndex(col, null));\n const allSortedColsWithoutChangesOrGroups = allSortedCols.filter((col) => {\n if (isCoupled && col.getColDef().showRowGroup) {\n return false;\n }\n return col !== lastSortIndexCol;\n });\n const sortedColsWithIndices = lastSortIndexCol.getSort() ? [...allSortedColsWithoutChangesOrGroups, lastSortIndexCol] : allSortedColsWithoutChangesOrGroups;\n sortedColsWithIndices.forEach((col, idx) => this.setColSortIndex(col, idx));\n }\n // gets called by API, so if data changes, use can call this, which will end up\n // working out the sort order again of the rows.\n onSortChanged(source, columns) {\n this.dispatchSortChangedEvents(source, columns);\n }\n isSortActive() {\n let isSorting = false;\n this.beans.colModel.forAllCols((col) => {\n if (col.getSort()) {\n isSorting = true;\n }\n });\n return isSorting;\n }\n dispatchSortChangedEvents(source, columns) {\n const event = {\n type: \"sortChanged\",\n source\n };\n if (columns) {\n event.columns = columns;\n }\n this.eventSvc.dispatchEvent(event);\n }\n clearSortBarTheseColumns(columnsToSkip, source) {\n const clearedColumns = [];\n this.beans.colModel.forAllCols((columnToClear) => {\n if (!columnsToSkip.includes(columnToClear)) {\n if (columnToClear.getSort()) {\n clearedColumns.push(columnToClear);\n }\n this.setColSort(columnToClear, void 0, source);\n }\n });\n return clearedColumns;\n }\n getNextSortDirection(column) {\n const sortingOrder = column.getColDef().sortingOrder ?? this.gos.get(\"sortingOrder\") ?? DEFAULT_SORTING_ORDER;\n const currentIndex = sortingOrder.indexOf(column.getSort());\n const notInArray = currentIndex < 0;\n const lastItemInArray = currentIndex == sortingOrder.length - 1;\n return notInArray || lastItemInArray ? sortingOrder[0] : sortingOrder[currentIndex + 1];\n }\n /**\n * @returns a map of sort indexes for every sorted column, if groups sort primaries then they will have equivalent indices\n */\n getIndexedSortMap() {\n const { gos, colModel, showRowGroupCols, rowGroupColsSvc } = this.beans;\n let allSortedCols = [];\n colModel.forAllCols((col) => {\n if (col.getSort()) {\n allSortedCols.push(col);\n }\n });\n if (colModel.isPivotMode()) {\n const isSortingLinked = _isColumnsSortingCoupledToGroup(gos);\n allSortedCols = allSortedCols.filter((col) => {\n const isAggregated = !!col.getAggFunc();\n const isSecondary = !col.isPrimary();\n const isGroup = isSortingLinked ? showRowGroupCols?.getShowRowGroupCol(col.getId()) : col.getColDef().showRowGroup;\n return isAggregated || isSecondary || isGroup;\n });\n }\n const sortedRowGroupCols = rowGroupColsSvc?.columns.filter((col) => !!col.getSort()) ?? [];\n const allColsIndexes = {};\n allSortedCols.forEach((col, index) => allColsIndexes[col.getId()] = index);\n allSortedCols.sort((a, b) => {\n const iA = a.getSortIndex();\n const iB = b.getSortIndex();\n if (iA != null && iB != null) {\n return iA - iB;\n } else if (iA == null && iB == null) {\n const posA = allColsIndexes[a.getId()];\n const posB = allColsIndexes[b.getId()];\n return posA > posB ? 1 : -1;\n } else if (iB == null) {\n return -1;\n } else {\n return 1;\n }\n });\n const isSortLinked = _isColumnsSortingCoupledToGroup(gos) && !!sortedRowGroupCols.length;\n if (isSortLinked) {\n allSortedCols = [\n ...new Set(\n // if linked sorting, replace all columns with the display group column for index purposes, and ensure uniqueness\n allSortedCols.map((col) => showRowGroupCols?.getShowRowGroupCol(col.getId()) ?? col)\n )\n ];\n }\n const indexMap = /* @__PURE__ */ new Map();\n allSortedCols.forEach((col, idx) => indexMap.set(col, idx));\n if (isSortLinked) {\n sortedRowGroupCols.forEach((col) => {\n const groupDisplayCol = showRowGroupCols.getShowRowGroupCol(col.getId());\n indexMap.set(col, indexMap.get(groupDisplayCol));\n });\n }\n return indexMap;\n }\n getColumnsWithSortingOrdered() {\n return [...this.getIndexedSortMap().entries()].sort(([, idx1], [, idx2]) => idx1 - idx2).map(([col]) => col);\n }\n // used by server side row models, to sent sort to server\n getSortModel() {\n return this.getColumnsWithSortingOrdered().filter((column) => column.getSort()).map((column) => ({\n sort: column.getSort(),\n colId: column.getId()\n }));\n }\n getSortOptions() {\n return this.getColumnsWithSortingOrdered().filter((column) => column.getSort()).map((column) => ({\n sort: column.getSort(),\n column\n }));\n }\n canColumnDisplayMixedSort(column) {\n const isColumnSortCouplingActive = _isColumnsSortingCoupledToGroup(this.gos);\n const isGroupDisplayColumn = !!column.getColDef().showRowGroup;\n return isColumnSortCouplingActive && isGroupDisplayColumn;\n }\n getDisplaySortForColumn(column) {\n const linkedColumns = this.beans.showRowGroupCols?.getSourceColumnsForGroupColumn(column);\n if (!this.canColumnDisplayMixedSort(column) || !linkedColumns?.length) {\n return column.getSort();\n }\n const columnHasUniqueData = column.getColDef().field != null || !!column.getColDef().valueGetter;\n const sortableColumns = columnHasUniqueData ? [column, ...linkedColumns] : linkedColumns;\n const firstSort = sortableColumns[0].getSort();\n const allMatch = sortableColumns.every((col) => col.getSort() == firstSort);\n if (!allMatch) {\n return \"mixed\";\n }\n return firstSort;\n }\n getDisplaySortIndexForColumn(column) {\n return this.getIndexedSortMap().get(column);\n }\n setupHeader(comp, column, clickElement) {\n let lastMovingChanged = 0;\n comp.addManagedListeners(column, {\n movingChanged: () => {\n lastMovingChanged = Date.now();\n }\n });\n if (clickElement) {\n comp.addManagedElementListeners(clickElement, {\n click: (event) => {\n const moving = column.isMoving();\n const nowTime = Date.now();\n const movedRecently = nowTime - lastMovingChanged < 50;\n const columnMoving = moving || movedRecently;\n if (!columnMoving) {\n this.progressSortFromEvent(column, event);\n }\n }\n });\n }\n const onSortingChanged = () => {\n const sort = column.getSort();\n comp.addOrRemoveCssClass(\"ag-header-cell-sorted-asc\", sort === \"asc\");\n comp.addOrRemoveCssClass(\"ag-header-cell-sorted-desc\", sort === \"desc\");\n comp.addOrRemoveCssClass(\"ag-header-cell-sorted-none\", !sort);\n if (column.getColDef().showRowGroup) {\n const sourceColumns = this.beans.showRowGroupCols?.getSourceColumnsForGroupColumn(column);\n const sortDirectionsMatch = sourceColumns?.every(\n (sourceCol) => column.getSort() == sourceCol.getSort()\n );\n const isMultiSorting = !sortDirectionsMatch;\n comp.addOrRemoveCssClass(\"ag-header-cell-sorted-mixed\", isMultiSorting);\n }\n };\n comp.addManagedEventListeners({\n sortChanged: onSortingChanged,\n columnRowGroupChanged: onSortingChanged\n });\n }\n initCol(column) {\n const { sort, initialSort, sortIndex, initialSortIndex } = column.colDef;\n if (sort !== void 0) {\n if (sort === \"asc\" || sort === \"desc\") {\n column.sort = sort;\n }\n } else {\n if (initialSort === \"asc\" || initialSort === \"desc\") {\n column.sort = initialSort;\n }\n }\n if (sortIndex !== void 0) {\n if (sortIndex !== null) {\n column.sortIndex = sortIndex;\n }\n } else {\n if (initialSortIndex !== null) {\n column.sortIndex = initialSortIndex;\n }\n }\n }\n updateColSort(column, sort, source) {\n if (sort !== void 0) {\n if (sort === \"desc\" || sort === \"asc\") {\n this.setColSort(column, sort, source);\n } else {\n this.setColSort(column, void 0, source);\n }\n }\n }\n setColSort(column, sort, source) {\n if (column.sort !== sort) {\n column.sort = sort;\n column.dispatchColEvent(\"sortChanged\", source);\n }\n column.dispatchStateUpdatedEvent(\"sort\");\n }\n setColSortIndex(column, sortOrder) {\n column.sortIndex = sortOrder;\n column.dispatchStateUpdatedEvent(\"sortIndex\");\n }\n createSortIndicator(skipTemplate) {\n return new SortIndicatorComp(skipTemplate);\n }\n getSortIndicatorSelector() {\n return SortIndicatorSelector;\n }\n};\n\n// packages/ag-grid-community/src/sort/sortModule.ts\nvar SortModule = {\n moduleName: \"Sort\",\n version: VERSION,\n beans: [SortService, RowNodeSorter],\n apiFunctions: {\n onSortChanged\n },\n userComponents: {\n agSortIndicator: SortIndicatorComp\n },\n icons: {\n // show on column header when column is sorted ascending\n sortAscending: \"asc\",\n // show on column header when column is sorted descending\n sortDescending: \"desc\",\n // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n sortUnSort: \"none\"\n }\n};\n\n// packages/ag-grid-community/src/syncService.ts\nvar SyncService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"syncSvc\";\n this.waitingForColumns = false;\n }\n postConstruct() {\n this.addManagedPropertyListener(\"columnDefs\", (event) => this.setColumnDefs(event));\n }\n start() {\n this.beans.ctrlsSvc.whenReady(this, () => {\n const columnDefs = this.gos.get(\"columnDefs\");\n if (columnDefs) {\n this.setColumnsAndData(columnDefs);\n } else {\n this.waitingForColumns = true;\n }\n this.gridReady();\n });\n }\n setColumnsAndData(columnDefs) {\n const { colModel, rowModel } = this.beans;\n colModel.setColumnDefs(columnDefs ?? [], \"gridInitializing\");\n rowModel.start();\n }\n gridReady() {\n const { eventSvc, gos } = this;\n eventSvc.dispatchEvent({\n type: \"gridReady\"\n });\n _logIfDebug(gos, `initialised successfully, enterprise = ${gos.isModuleRegistered(\"EnterpriseCore\")}`);\n }\n setColumnDefs(event) {\n const columnDefs = this.gos.get(\"columnDefs\");\n if (!columnDefs) {\n return;\n }\n if (this.waitingForColumns) {\n this.waitingForColumns = false;\n this.setColumnsAndData(columnDefs);\n return;\n }\n this.beans.colModel.setColumnDefs(columnDefs, _convertColumnEventSourceType(event.source));\n }\n};\n\n// packages/ag-grid-community/src/valueService/cellApi.ts\nfunction expireValueCache(beans) {\n beans.valueCache?.expire();\n}\nfunction getCellValue(beans, params) {\n const { colKey, rowNode, useFormatter } = params;\n const column = beans.colModel.getColDefCol(colKey) ?? beans.colModel.getCol(colKey);\n if (_missing(column)) {\n return null;\n }\n const value = beans.valueSvc.getValueForDisplay(column, rowNode);\n if (useFormatter) {\n const formattedValue = beans.valueSvc.formatValue(column, rowNode, value);\n return formattedValue ?? _escapeString(value, true);\n }\n return value;\n}\n\n// packages/ag-grid-community/src/utils/changedPath.ts\nvar ChangedPath = class {\n constructor(keepingColumns, rootNode) {\n // whether changed path is active of not. it is active when a) doing\n // a transaction update or b) doing change detection. if we are doing\n // a CSRM refresh for other reasons (after sort or filter, or user calling\n // setRowData() without delta mode) then we are not active. we are also\n // marked as not active if secondary columns change in pivot (as this impacts\n // aggregations).\n // can be set inactive by:\n // a) ClientSideRowModel, if no transactions or\n // b) PivotService, if secondary columns changed\n this.active = true;\n // for each node in the change path, we also store which columns need\n // to be re-aggregated.\n this.nodeIdsToColumns = {};\n // for quick lookup, all items in the change path are mapped by nodeId\n this.mapToItems = {};\n this.keepingColumns = keepingColumns;\n this.pathRoot = {\n rowNode: rootNode,\n children: null\n };\n this.mapToItems[rootNode.id] = this.pathRoot;\n }\n depthFirstSearchChangedPath(pathItem, callback) {\n const { rowNode, children } = pathItem;\n if (children) {\n for (let i = 0; i < children.length; ++i) {\n this.depthFirstSearchChangedPath(children[i], callback);\n }\n }\n callback(rowNode);\n }\n depthFirstSearchEverything(rowNode, callback, traverseEverything) {\n const childrenAfterGroup = rowNode.childrenAfterGroup;\n if (childrenAfterGroup) {\n for (let i = 0, len = childrenAfterGroup.length; i < len; ++i) {\n const childNode = childrenAfterGroup[i];\n if (childNode.childrenAfterGroup) {\n this.depthFirstSearchEverything(childNode, callback, traverseEverything);\n } else if (traverseEverything) {\n callback(childNode);\n }\n }\n }\n callback(rowNode);\n }\n // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback\n // will be called for child nodes in addition to parent nodes.\n forEachChangedNodeDepthFirst(callback, traverseLeafNodes = false, includeUnchangedNodes = false) {\n if (this.active && !includeUnchangedNodes) {\n this.depthFirstSearchChangedPath(this.pathRoot, callback);\n } else {\n this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);\n }\n }\n executeFromRootNode(callback) {\n callback(this.pathRoot.rowNode);\n }\n createPathItems(rowNode) {\n let pointer = rowNode;\n let newEntryCount = 0;\n while (!this.mapToItems[pointer.id]) {\n const newEntry = {\n rowNode: pointer,\n children: null\n };\n this.mapToItems[pointer.id] = newEntry;\n newEntryCount++;\n pointer = pointer.parent;\n }\n return newEntryCount;\n }\n populateColumnsMap(rowNode, columns) {\n if (!this.keepingColumns || !columns) {\n return;\n }\n let pointer = rowNode;\n while (pointer) {\n if (!this.nodeIdsToColumns[pointer.id]) {\n this.nodeIdsToColumns[pointer.id] = {};\n }\n columns.forEach((col) => this.nodeIdsToColumns[pointer.id][col.getId()] = true);\n pointer = pointer.parent;\n }\n }\n linkPathItems(rowNode, newEntryCount) {\n let pointer = rowNode;\n for (let i = 0; i < newEntryCount; i++) {\n const thisItem = this.mapToItems[pointer.id];\n const parentItem = this.mapToItems[pointer.parent.id];\n if (!parentItem.children) {\n parentItem.children = [];\n }\n parentItem.children.push(thisItem);\n pointer = pointer.parent;\n }\n }\n // called by\n // 1) change detection (provides cols) and\n // 2) groupStage if doing transaction update (doesn't provide cols)\n addParentNode(rowNode, columns) {\n if (!rowNode || rowNode.isRowPinned()) {\n return;\n }\n const newEntryCount = this.createPathItems(rowNode);\n this.linkPathItems(rowNode, newEntryCount);\n this.populateColumnsMap(rowNode, columns);\n }\n canSkip(rowNode) {\n return this.active && !this.mapToItems[rowNode.id];\n }\n getValueColumnsForNode(rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return valueColumns;\n }\n const colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n const result = valueColumns.filter((col) => colsForThisNode[col.getId()]);\n return result;\n }\n getNotValueColumnsForNode(rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return null;\n }\n const colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n const result = valueColumns.filter((col) => !colsForThisNode[col.getId()]);\n return result;\n }\n};\n\n// packages/ag-grid-community/src/valueService/changeDetectionService.ts\nvar SOURCE_PASTE = \"paste\";\nvar ChangeDetectionService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"changeDetectionSvc\";\n this.clientSideRowModel = null;\n }\n postConstruct() {\n const { gos, rowModel } = this.beans;\n if (_isClientSideRowModel(gos, rowModel)) {\n this.clientSideRowModel = rowModel;\n }\n this.addManagedEventListeners({ cellValueChanged: this.onCellValueChanged.bind(this) });\n }\n onCellValueChanged(event) {\n const { gos, rowRenderer } = this.beans;\n if (event.source === SOURCE_PASTE || gos.get(\"suppressChangeDetection\")) {\n return;\n }\n const rowNode = event.node;\n const nodesToRefresh = [rowNode];\n const clientSideRowModel = this.clientSideRowModel;\n const rootNode = clientSideRowModel?.rootNode;\n if (rootNode && !rowNode.isRowPinned()) {\n const onlyChangedColumns = gos.get(\"aggregateOnlyChangedColumns\");\n const changedPath = new ChangedPath(onlyChangedColumns, rootNode);\n changedPath.addParentNode(rowNode.parent, [event.column]);\n clientSideRowModel.doAggregate(changedPath);\n changedPath.forEachChangedNodeDepthFirst((rowNode2) => {\n nodesToRefresh.push(rowNode2);\n if (rowNode2.sibling) {\n nodesToRefresh.push(rowNode2.sibling);\n }\n });\n }\n rowRenderer.refreshCells({ rowNodes: nodesToRefresh });\n }\n};\n\n// packages/ag-grid-community/src/valueService/expressionService.ts\nvar ExpressionService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"expressionSvc\";\n this.cache = {};\n }\n evaluate(expression, params) {\n if (typeof expression === \"string\") {\n return this.evaluateExpression(expression, params);\n } else {\n _error(15, { expression });\n }\n }\n evaluateExpression(expression, params) {\n try {\n const javaScriptFunction = this.createExpressionFunction(expression);\n const result = javaScriptFunction(\n params.value,\n params.context,\n params.oldValue,\n params.newValue,\n params.value,\n params.node,\n params.data,\n params.colDef,\n params.rowIndex,\n params.api,\n params.getValue,\n params.column,\n params.columnGroup\n );\n return result;\n } catch (e) {\n _error(16, { expression, params, e });\n return null;\n }\n }\n createExpressionFunction(expression) {\n const expressionToFunctionCache = this.cache;\n if (expressionToFunctionCache[expression]) {\n return expressionToFunctionCache[expression];\n }\n const functionBody = this.createFunctionBody(expression);\n const theFunction = new Function(\n \"x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, getValue, column, columnGroup\",\n functionBody\n );\n expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n }\n createFunctionBody(expression) {\n if (expression.indexOf(\"return\") >= 0) {\n return expression;\n } else {\n return \"return \" + expression + \";\";\n }\n }\n};\n\n// packages/ag-grid-community/src/valueService/valueCache.ts\nvar ValueCache = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"valueCache\";\n this.cacheVersion = 0;\n }\n postConstruct() {\n const gos = this.gos;\n this.active = gos.get(\"valueCache\");\n this.neverExpires = gos.get(\"valueCacheNeverExpires\");\n }\n onDataChanged() {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n }\n expire() {\n this.cacheVersion++;\n }\n setValue(rowNode, colId, value) {\n if (this.active) {\n const cacheVersion = this.cacheVersion;\n if (rowNode.__cacheVersion !== cacheVersion) {\n rowNode.__cacheVersion = cacheVersion;\n rowNode.__cacheData = {};\n }\n rowNode.__cacheData[colId] = value;\n }\n }\n getValue(rowNode, colId) {\n if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n return void 0;\n }\n return rowNode.__cacheData[colId];\n }\n};\n\n// packages/ag-grid-community/src/valueService/valueModule.ts\nvar ValueCacheModule = {\n moduleName: \"ValueCache\",\n version: VERSION,\n beans: [ValueCache],\n apiFunctions: {\n expireValueCache\n }\n};\nvar ExpressionModule = {\n moduleName: \"Expression\",\n version: VERSION,\n beans: [ExpressionService]\n};\nvar ChangeDetectionModule = {\n moduleName: \"ChangeDetection\",\n version: VERSION,\n beans: [ChangeDetectionService]\n};\nvar CellApiModule = {\n moduleName: \"CellApi\",\n version: VERSION,\n apiFunctions: {\n getCellValue\n }\n};\n\n// packages/ag-grid-community/src/valueService/valueService.ts\nvar ValueService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"valueSvc\";\n this.initialised = false;\n this.isSsrm = false;\n }\n wireBeans(beans) {\n this.expressionSvc = beans.expressionSvc;\n this.colModel = beans.colModel;\n this.valueCache = beans.valueCache;\n this.dataTypeSvc = beans.dataTypeSvc;\n }\n postConstruct() {\n if (!this.initialised) {\n this.init();\n }\n }\n init() {\n this.executeValueGetter = this.valueCache ? this.executeValueGetterWithValueCache.bind(this) : this.executeValueGetterWithoutValueCache.bind(this);\n this.isSsrm = _isServerSideRowModel(this.gos);\n this.cellExpressions = this.gos.get(\"enableCellExpressions\");\n this.isTreeData = this.gos.get(\"treeData\");\n this.initialised = true;\n const listener = (event) => this.callColumnCellValueChangedHandler(event);\n this.eventSvc.addEventListener(\"cellValueChanged\", listener, true);\n this.addDestroyFunc(() => this.eventSvc.removeEventListener(\"cellValueChanged\", listener, true));\n this.addManagedPropertyListener(\"treeData\", (propChange) => this.isTreeData = propChange.currentValue);\n }\n /**\n * Use this function to get a displayable cell value.\n *\n * The values from this function are not used for sorting, filtering, or aggregation purposes.\n *\n * Handles: groupHideOpenParents, showOpenedGroup and groupSuppressBlankHeader behaviours\n */\n getValueForDisplay(column, node) {\n const rowGroupColId = column.getColDef().showRowGroup;\n if (rowGroupColId != null) {\n if (typeof rowGroupColId === \"string\") {\n const hideOpenParentsNode = this.getDisplayedNode(node, column, true);\n if (hideOpenParentsNode) {\n return this.getValue(column, hideOpenParentsNode);\n }\n }\n const value = this.getValue(column, node);\n if (value == null) {\n const displayedNode = this.getDisplayedNode(node, column);\n if (displayedNode) {\n return this.getValue(column, displayedNode);\n }\n }\n return value;\n }\n const isPivotLeaf = node.leafGroup && this.colModel.isPivotMode();\n const isOpenedGroup = node.group && node.expanded && !node.footer && !isPivotLeaf;\n const groupShowsAggData = this.gos.get(\"groupSuppressBlankHeader\") || !node.sibling;\n const ignoreAggData = isOpenedGroup && !groupShowsAggData;\n return this.getValue(column, node, ignoreAggData);\n }\n getValue(column, rowNode, ignoreAggData = false) {\n if (!this.initialised) {\n this.init();\n }\n if (!rowNode) {\n return;\n }\n const colDef = column.getColDef();\n const field = colDef.field;\n const colId = column.getColId();\n const data = rowNode.data;\n let result;\n const rowGroupColId = colDef.showRowGroup;\n if (typeof rowGroupColId === \"string\") {\n const colRowGroupIndex = this.beans.rowGroupColsSvc?.getColumnIndex(rowGroupColId) ?? -1;\n if (colRowGroupIndex > rowNode.level) {\n return null;\n }\n }\n const groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== void 0;\n const aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== void 0;\n const ignoreSsrmAggData = this.isSsrm && ignoreAggData && !!column.getColDef().aggFunc;\n const ssrmFooterGroupCol = this.isSsrm && rowNode.footer && rowNode.field && (column.getColDef().showRowGroup === true || column.getColDef().showRowGroup === rowNode.field);\n if (this.isTreeData && aggDataExists) {\n result = rowNode.aggData[colId];\n } else if (this.isTreeData && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n } else if (this.isTreeData && field && data) {\n result = _getValueUsingField(data, field, column.isFieldContainsDots());\n } else if (groupDataExists) {\n result = rowNode.groupData[colId];\n } else if (aggDataExists) {\n result = rowNode.aggData[colId];\n } else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n } else if (ssrmFooterGroupCol) {\n result = _getValueUsingField(data, rowNode.field, column.isFieldContainsDots());\n } else if (field && data && !ignoreSsrmAggData) {\n result = _getValueUsingField(data, field, column.isFieldContainsDots());\n }\n if (this.cellExpressions && typeof result === \"string\" && result.indexOf(\"=\") === 0) {\n const cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n return result;\n }\n parseValue(column, rowNode, newValue, oldValue) {\n const colDef = column.getColDef();\n const valueParser = colDef.valueParser;\n if (_exists(valueParser)) {\n const params = _addGridCommonParams(this.gos, {\n node: rowNode,\n data: rowNode?.data,\n oldValue,\n newValue,\n colDef,\n column\n });\n if (typeof valueParser === \"function\") {\n return valueParser(params);\n }\n return this.expressionSvc?.evaluate(valueParser, params);\n }\n return newValue;\n }\n getDeleteValue(column, rowNode) {\n if (_exists(column.getColDef().valueParser)) {\n return this.parseValue(column, rowNode, \"\", this.getValueForDisplay(column, rowNode)) ?? null;\n }\n return null;\n }\n formatValue(column, node, value, suppliedFormatter, useFormatterFromColumn = true) {\n let result = null;\n let formatter;\n const colDef = column.getColDef();\n if (suppliedFormatter) {\n formatter = suppliedFormatter;\n } else if (useFormatterFromColumn) {\n formatter = colDef.valueFormatter;\n }\n if (formatter) {\n const params = _addGridCommonParams(this.gos, {\n value,\n node,\n data: node ? node.data : null,\n colDef,\n column\n });\n if (typeof formatter === \"function\") {\n result = formatter(params);\n } else {\n result = this.expressionSvc ? this.expressionSvc.evaluate(formatter, params) : null;\n }\n } else if (colDef.refData) {\n return colDef.refData[value] || \"\";\n }\n if (result == null && Array.isArray(value)) {\n result = value.join(\", \");\n }\n return result;\n }\n /**\n * Checks if the node has a value to inherit from the parent node for display in the given column\n *\n * This is used when [groupHideOpenParents] or [showOpenedGroup] are enabled\n *\n * @param node node to check for preferential nodes to display\n * @param column column to get the displayed node for\n * @returns a parent node of node to display the value from, or undefined if no value will be inherited\n */\n getDisplayedNode(node, column, onlyHideOpenParents = false) {\n const gos = this.gos;\n const isGroupHideOpenParents = gos.get(\"groupHideOpenParents\");\n const isShowOpenedGroupValue = gos.get(\"showOpenedGroup\") && !onlyHideOpenParents;\n if (!isGroupHideOpenParents && !isShowOpenedGroupValue) {\n return void 0;\n }\n const showRowGroup = column.colDef.showRowGroup;\n if (showRowGroup === true) {\n if (node.group) {\n return void 0;\n }\n return node.parent ?? void 0;\n }\n let pointer = node;\n while (pointer && pointer.rowGroupColumn?.getId() != showRowGroup) {\n const isFirstChild = pointer === pointer.parent?.childrenAfterSort?.[0];\n if (!isShowOpenedGroupValue && !isFirstChild) {\n return void 0;\n }\n pointer = pointer.parent;\n }\n if (pointer === node) {\n return void 0;\n }\n return pointer ?? void 0;\n }\n /**\n * Sets the value of a GridCell\n * @param rowNode The `RowNode` to be updated\n * @param colKey The `Column` to be updated\n * @param newValue The new value to be set\n * @param eventSource The event source\n * @returns `True` if the value has been updated, otherwise`False`.\n */\n setValue(rowNode, colKey, newValue, eventSource) {\n const column = this.colModel.getColDefCol(colKey);\n if (!rowNode || !column) {\n return false;\n }\n if (_missing(rowNode.data)) {\n rowNode.data = {};\n }\n const { field, valueSetter } = column.getColDef();\n if (_missing(field) && _missing(valueSetter)) {\n _warn(17);\n return false;\n }\n if (this.dataTypeSvc && !this.dataTypeSvc.checkType(column, newValue)) {\n _warn(135);\n return false;\n }\n const params = _addGridCommonParams(this.gos, {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue,\n colDef: column.getColDef(),\n column\n });\n params.newValue = newValue;\n let valueWasDifferent;\n if (_exists(valueSetter)) {\n if (typeof valueSetter === \"function\") {\n valueWasDifferent = valueSetter(params);\n } else {\n valueWasDifferent = this.expressionSvc?.evaluate(valueSetter, params);\n }\n } else {\n valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());\n }\n if (valueWasDifferent === void 0) {\n valueWasDifferent = true;\n }\n if (!valueWasDifferent) {\n return false;\n }\n rowNode.resetQuickFilterAggregateText();\n this.valueCache?.onDataChanged();\n const savedValue = this.getValue(column, rowNode);\n this.eventSvc.dispatchEvent({\n type: \"cellValueChanged\",\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n colDef: params.colDef,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: savedValue,\n value: savedValue,\n source: eventSource\n });\n return true;\n }\n callColumnCellValueChangedHandler(event) {\n const onCellValueChanged = event.colDef.onCellValueChanged;\n if (typeof onCellValueChanged === \"function\") {\n this.beans.frameworkOverrides.wrapOutgoing(() => {\n onCellValueChanged({\n node: event.node,\n data: event.data,\n oldValue: event.oldValue,\n newValue: event.newValue,\n colDef: event.colDef,\n column: event.column,\n api: event.api,\n context: event.context\n });\n });\n }\n }\n setValueUsingField(data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n let valuesAreSame = false;\n if (!isFieldContainsDots) {\n valuesAreSame = data[field] === newValue;\n if (!valuesAreSame) {\n data[field] = newValue;\n }\n } else {\n const fieldPieces = field.split(\".\");\n let currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n const fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n valuesAreSame = currentObject[fieldPiece] === newValue;\n if (!valuesAreSame) {\n currentObject[fieldPiece] = newValue;\n }\n } else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n }\n executeValueGetterWithValueCache(valueGetter, data, column, rowNode) {\n const colId = column.getColId();\n const valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== void 0) {\n return valueFromCache;\n }\n const result = this.executeValueGetterWithoutValueCache(valueGetter, data, column, rowNode);\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n }\n executeValueGetterWithoutValueCache(valueGetter, data, column, rowNode) {\n const params = _addGridCommonParams(this.gos, {\n data,\n node: rowNode,\n column,\n colDef: column.getColDef(),\n getValue: this.getValueCallback.bind(this, rowNode)\n });\n let result;\n if (typeof valueGetter === \"function\") {\n result = valueGetter(params);\n } else {\n result = this.expressionSvc?.evaluate(valueGetter, params);\n }\n return result;\n }\n getValueCallback(node, field) {\n const otherColumn = this.colModel.getColDefCol(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n return null;\n }\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n getKeyForNode(col, rowNode) {\n const value = this.getValue(col, rowNode);\n const keyCreator = col.getColDef().keyCreator;\n let result = value;\n if (keyCreator) {\n const keyParams = _addGridCommonParams(this.gos, {\n value,\n colDef: col.getColDef(),\n column: col,\n node: rowNode,\n data: rowNode.data\n });\n result = keyCreator(keyParams);\n }\n if (typeof result === \"string\" || result == null) {\n return result;\n }\n result = String(result);\n if (result === \"[object Object]\") {\n _warn(121);\n }\n return result;\n }\n};\n\n// packages/ag-grid-community/src/gridCoreModule.ts\nvar CommunityCoreModule = {\n moduleName: \"CommunityCore\",\n version: VERSION,\n beans: [\n GridDestroyService,\n ApiFunctionService,\n Registry,\n UserComponentFactory,\n RowContainerHeightService,\n VisibleColsService,\n EventService,\n GridOptionsService,\n ColumnModel,\n PageBoundsService,\n PageBoundsListener,\n RowRenderer,\n ValueService,\n FocusService,\n Environment,\n ScrollVisibleService,\n CtrlsService,\n SyncService,\n ColumnNameService,\n ColumnViewportService\n ],\n icons: {\n // icon on select dropdowns (select cell editor, charts tool panels)\n selectOpen: \"small-down\",\n /** @deprecated v33 */\n smallDown: \"small-down\",\n /** @deprecated v33 */\n colorPicker: \"color-picker\",\n /** @deprecated v33 */\n smallUp: \"small-up\",\n /** @deprecated v33 */\n checkboxChecked: \"small-up\",\n /** @deprecated v33 */\n checkboxIndeterminate: \"checkbox-indeterminate\",\n /** @deprecated v33 */\n checkboxUnchecked: \"checkbox-unchecked\",\n /** @deprecated v33 */\n radioButtonOn: \"radio-button-on\",\n /** @deprecated v33 */\n radioButtonOff: \"radio-button-off\",\n /** @deprecated v33 */\n smallLeft: \"small-left\",\n /** @deprecated v33 */\n smallRight: \"small-right\"\n },\n apiFunctions: {\n getGridId,\n destroy,\n isDestroyed,\n getGridOption,\n setGridOption,\n updateGridOptions\n },\n dependsOn: [\n DataTypeModule,\n ColumnMoveModule,\n ColumnResizeModule,\n SortModule,\n ColumnHeaderCompModule,\n ColumnGroupModule,\n ColumnGroupHeaderCompModule,\n OverlayModule,\n ChangeDetectionModule,\n AnimationFrameModule,\n KeyboardNavigationModule,\n PinnedColumnModule,\n AriaModule,\n TouchModule,\n CellRendererFunctionModule,\n ColumnFlexModule,\n ExpressionModule\n ]\n};\n\n// packages/ag-grid-community/src/grid.ts\nvar _GlobalGridOptions = class _GlobalGridOptions {\n /**\n * @param providedOptions\n * @returns Shallow copy of the provided options with global options merged in.\n */\n static applyGlobalGridOptions(providedOptions) {\n if (!_GlobalGridOptions.gridOptions) {\n return { ...providedOptions };\n }\n let mergedGridOps = {};\n _mergeDeep(mergedGridOps, _GlobalGridOptions.gridOptions, true, true);\n if (_GlobalGridOptions.mergeStrategy === \"deep\") {\n _mergeDeep(mergedGridOps, providedOptions, true, true);\n } else {\n mergedGridOps = { ...mergedGridOps, ...providedOptions };\n }\n if (_GlobalGridOptions.gridOptions.context) {\n mergedGridOps.context = _GlobalGridOptions.gridOptions.context;\n }\n if (providedOptions.context) {\n if (_GlobalGridOptions.mergeStrategy === \"deep\" && mergedGridOps.context) {\n _mergeDeep(providedOptions.context, mergedGridOps.context, true, true);\n }\n mergedGridOps.context = providedOptions.context;\n }\n return mergedGridOps;\n }\n};\n_GlobalGridOptions.gridOptions = void 0;\n_GlobalGridOptions.mergeStrategy = \"shallow\";\nvar GlobalGridOptions = _GlobalGridOptions;\nfunction provideGlobalGridOptions(gridOptions, mergeStrategy = \"shallow\") {\n GlobalGridOptions.gridOptions = gridOptions;\n GlobalGridOptions.mergeStrategy = mergeStrategy;\n}\nfunction _getGlobalGridOption(gridOption) {\n return GlobalGridOptions.gridOptions?.[gridOption];\n}\nfunction createGrid(eGridDiv, gridOptions, params) {\n if (!gridOptions) {\n _error(11);\n return {};\n }\n const gridParams = params;\n let destroyCallback;\n if (!gridParams?.setThemeOnGridDiv) {\n const newGridDiv = _createElement({ tag: \"div\" });\n newGridDiv.style.height = \"100%\";\n eGridDiv.appendChild(newGridDiv);\n eGridDiv = newGridDiv;\n destroyCallback = () => eGridDiv.remove();\n }\n const api = new GridCoreCreator().create(\n eGridDiv,\n gridOptions,\n (context) => {\n const gridComp = new GridComp(eGridDiv);\n context.createBean(gridComp);\n },\n void 0,\n params,\n destroyCallback\n );\n return api;\n}\nvar nextGridId = 1;\nvar GridCoreCreator = class {\n create(eGridDiv, providedOptions, createUi, acceptChanges, params, destroyCallback) {\n const gridOptions = GlobalGridOptions.applyGlobalGridOptions(providedOptions);\n const gridId = gridOptions.gridId ?? String(nextGridId++);\n const rowModelType = gridOptions.rowModelType ?? \"clientSide\";\n const registeredModules = this.getRegisteredModules(params, gridId, rowModelType);\n const beanClasses = this.createBeansList(rowModelType, registeredModules, gridId);\n const providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);\n if (!beanClasses) {\n return void 0;\n }\n const contextParams = {\n providedBeanInstances,\n beanClasses,\n gridId,\n beanInitComparator: gridBeanInitComparator,\n beanDestroyComparator: gridBeanDestroyComparator,\n derivedBeans: [createGridApi],\n destroyCallback\n };\n const context = new Context(contextParams);\n this.registerModuleFeatures(context, registeredModules);\n createUi(context);\n context.getBean(\"syncSvc\").start();\n if (acceptChanges) {\n acceptChanges(context);\n }\n return context.getBean(\"gridApi\");\n }\n getRegisteredModules(params, gridId, rowModelType) {\n _registerModule(CommunityCoreModule, void 0);\n params?.modules?.forEach((m) => _registerModule(m, gridId));\n return _getRegisteredModules(gridId, rowModelType);\n }\n registerModuleFeatures(context, registeredModules) {\n const registry = context.getBean(\"registry\");\n const apiFunctionSvc = context.getBean(\"apiFunctionSvc\");\n registeredModules.forEach((module) => {\n registry.registerModule(module);\n const apiFunctions = module.apiFunctions;\n if (apiFunctions) {\n const names = Object.keys(apiFunctions);\n names.forEach((name) => {\n apiFunctionSvc?.addFunction(name, apiFunctions[name]);\n });\n }\n });\n }\n createProvidedBeans(eGridDiv, gridOptions, params) {\n let frameworkOverrides = params ? params.frameworkOverrides : null;\n if (_missing(frameworkOverrides)) {\n frameworkOverrides = new VanillaFrameworkOverrides();\n }\n const seed = {\n gridOptions,\n eGridDiv,\n globalListener: params ? params.globalListener : null,\n globalSyncListener: params ? params.globalSyncListener : null,\n frameworkOverrides\n };\n if (params && params.providedBeanInstances) {\n Object.assign(seed, params.providedBeanInstances);\n }\n return seed;\n }\n createBeansList(rowModelType, registeredModules, gridId) {\n const rowModelModuleNames = {\n clientSide: \"ClientSideRowModel\",\n infinite: \"InfiniteRowModel\",\n serverSide: \"ServerSideRowModel\",\n viewport: \"ViewportRowModel\"\n };\n const rowModuleModelName = rowModelModuleNames[rowModelType];\n if (!rowModuleModelName) {\n _logPreInitErr(201, { rowModelType }, `Unknown rowModelType ${rowModelType}.`);\n return;\n }\n if (!_isModuleRegistered(rowModuleModelName, gridId, rowModelType)) {\n _logPreInitErr(\n 200,\n {\n reasonOrId: `rowModelType = '${rowModelType}'`,\n moduleName: rowModuleModelName,\n gridScoped: _areModulesGridScoped(),\n gridId,\n rowModelType\n },\n `Missing module ${rowModuleModelName}Module for rowModelType ${rowModelType}. \nIf upgrading from before v33, see ${baseDocLink}/upgrading-to-ag-grid-33/#changes-to-modules/`\n );\n return;\n }\n const beans = /* @__PURE__ */ new Set();\n registeredModules.forEach((module) => module.beans?.forEach((bean) => beans.add(bean)));\n return Array.from(beans);\n }\n};\n\n// packages/ag-grid-community/src/api/rowModelApiUtils.ts\nfunction _getClientSideRowModel(beans) {\n const rowModel = beans.rowModel;\n return rowModel.getType() === \"clientSide\" ? rowModel : void 0;\n}\nfunction _getInfiniteRowModel(beans) {\n const rowModel = beans.rowModel;\n return rowModel.getType() === \"infinite\" ? rowModel : void 0;\n}\nfunction _getServerSideRowModel(beans) {\n const rowModel = beans.rowModel;\n return rowModel.getType() === \"serverSide\" ? rowModel : void 0;\n}\n\n// packages/ag-grid-community/src/eventTypes.ts\nvar _PUBLIC_EVENTS = [\n \"columnEverythingChanged\",\n \"newColumnsLoaded\",\n \"columnPivotModeChanged\",\n \"pivotMaxColumnsExceeded\",\n \"columnRowGroupChanged\",\n \"expandOrCollapseAll\",\n \"columnPivotChanged\",\n \"gridColumnsChanged\",\n \"columnValueChanged\",\n \"columnMoved\",\n \"columnVisible\",\n \"columnPinned\",\n \"columnGroupOpened\",\n \"columnResized\",\n \"displayedColumnsChanged\",\n \"virtualColumnsChanged\",\n \"columnHeaderMouseOver\",\n \"columnHeaderMouseLeave\",\n \"columnHeaderClicked\",\n \"columnHeaderContextMenu\",\n \"asyncTransactionsFlushed\",\n \"rowGroupOpened\",\n \"rowDataUpdated\",\n \"pinnedRowDataChanged\",\n \"rangeSelectionChanged\",\n \"cellSelectionChanged\",\n \"chartCreated\",\n \"chartRangeSelectionChanged\",\n \"chartOptionsChanged\",\n \"chartDestroyed\",\n \"toolPanelVisibleChanged\",\n \"toolPanelSizeChanged\",\n \"modelUpdated\",\n \"cutStart\",\n \"cutEnd\",\n \"pasteStart\",\n \"pasteEnd\",\n \"fillStart\",\n \"fillEnd\",\n \"cellSelectionDeleteStart\",\n \"cellSelectionDeleteEnd\",\n \"rangeDeleteStart\",\n \"rangeDeleteEnd\",\n \"undoStarted\",\n \"undoEnded\",\n \"redoStarted\",\n \"redoEnded\",\n \"cellClicked\",\n \"cellDoubleClicked\",\n \"cellMouseDown\",\n \"cellContextMenu\",\n \"cellValueChanged\",\n \"cellEditRequest\",\n \"rowValueChanged\",\n \"headerFocused\",\n \"cellFocused\",\n \"rowSelected\",\n \"selectionChanged\",\n \"tooltipShow\",\n \"tooltipHide\",\n \"cellKeyDown\",\n \"cellMouseOver\",\n \"cellMouseOut\",\n \"filterChanged\",\n \"filterModified\",\n \"filterOpened\",\n \"advancedFilterBuilderVisibleChanged\",\n \"sortChanged\",\n \"virtualRowRemoved\",\n \"rowClicked\",\n \"rowDoubleClicked\",\n \"gridReady\",\n \"gridPreDestroyed\",\n \"gridSizeChanged\",\n \"viewportChanged\",\n \"firstDataRendered\",\n \"dragStarted\",\n \"dragStopped\",\n \"dragCancelled\",\n \"rowEditingStarted\",\n \"rowEditingStopped\",\n \"cellEditingStarted\",\n \"cellEditingStopped\",\n \"bodyScroll\",\n \"bodyScrollEnd\",\n \"paginationChanged\",\n \"componentStateChanged\",\n \"storeRefreshed\",\n \"stateUpdated\",\n \"columnMenuVisibleChanged\",\n \"contextMenuVisibleChanged\",\n \"rowDragEnter\",\n \"rowDragMove\",\n \"rowDragLeave\",\n \"rowDragEnd\",\n \"rowDragCancel\",\n \"findChanged\"\n];\nvar _INTERNAL_EVENTS = [\n \"scrollbarWidthChanged\",\n \"keyShortcutChangedCellStart\",\n \"keyShortcutChangedCellEnd\",\n \"pinnedHeightChanged\",\n \"cellFocusCleared\",\n \"fullWidthRowFocused\",\n \"checkboxChanged\",\n \"heightScaleChanged\",\n \"suppressMovableColumns\",\n \"suppressMenuHide\",\n \"suppressFieldDotNotation\",\n \"columnPanelItemDragStart\",\n \"columnPanelItemDragEnd\",\n \"bodyHeightChanged\",\n \"columnContainerWidthChanged\",\n \"displayedColumnsWidthChanged\",\n \"scrollVisibilityChanged\",\n \"scrollGapChanged\",\n \"columnHoverChanged\",\n \"flashCells\",\n \"paginationPixelOffsetChanged\",\n \"displayedRowsChanged\",\n \"leftPinnedWidthChanged\",\n \"rightPinnedWidthChanged\",\n \"rowContainerHeightChanged\",\n \"headerHeightChanged\",\n \"columnGroupHeaderHeightChanged\",\n \"columnHeaderHeightChanged\",\n \"gridStylesChanged\",\n \"storeUpdated\",\n \"filterDestroyed\",\n \"rowDataUpdateStarted\",\n \"rowCountReady\",\n \"advancedFilterEnabledChanged\",\n \"dataTypesInferred\",\n \"fieldValueChanged\",\n \"fieldPickerValueSelected\",\n \"richSelectListRowSelected\",\n \"sideBarUpdated\",\n \"alignedGridScroll\",\n \"alignedGridColumn\",\n \"gridOptionsChanged\",\n \"chartTitleEdit\",\n \"recalculateRowBounds\",\n \"stickyTopOffsetChanged\",\n \"overlayExclusiveChanged\",\n \"beforeRefreshModel\",\n \"rowNodeDataChanged\"\n];\nvar _ALL_EVENTS = [..._PUBLIC_EVENTS, ..._INTERNAL_EVENTS];\n\n// packages/ag-grid-community/src/misc/locale/localeService.ts\nvar LocaleService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"localeSvc\";\n }\n getLocaleTextFunc() {\n const gos = this.gos;\n const getLocaleText = gos.getCallback(\"getLocaleText\");\n if (getLocaleText) {\n return (key, defaultValue, variableValues) => {\n const params = {\n key,\n defaultValue,\n variableValues\n };\n return getLocaleText(params);\n };\n }\n const localeText = gos.get(\"localeText\");\n return (key, defaultValue, variableValues) => {\n let localisedText = localeText && localeText[key];\n if (localisedText && variableValues && variableValues.length) {\n let found = 0;\n while (true) {\n if (found >= variableValues.length) {\n break;\n }\n const idx = localisedText.indexOf(\"${variable}\");\n if (idx === -1) {\n break;\n }\n localisedText = localisedText.replace(\"${variable}\", variableValues[found++]);\n }\n }\n return localisedText ?? defaultValue;\n };\n }\n};\n\n// packages/ag-grid-community/src/propertyKeys.ts\nvar STRING_GRID_OPTIONS = [\n \"overlayLoadingTemplate\",\n \"overlayNoRowsTemplate\",\n \"gridId\",\n \"quickFilterText\",\n \"rowModelType\",\n \"editType\",\n \"domLayout\",\n \"clipboardDelimiter\",\n \"rowGroupPanelShow\",\n \"multiSortKey\",\n \"pivotColumnGroupTotals\",\n \"pivotRowTotals\",\n \"pivotPanelShow\",\n \"fillHandleDirection\",\n \"groupDisplayType\",\n \"treeDataDisplayType\",\n \"treeDataChildrenField\",\n \"treeDataParentIdField\",\n \"colResizeDefault\",\n \"tooltipTrigger\",\n \"serverSidePivotResultFieldSeparator\",\n \"columnMenu\",\n \"tooltipShowMode\",\n \"grandTotalRow\",\n \"themeCssLayer\",\n \"findSearchValue\",\n \"styleNonce\"\n];\nvar OBJECT_GRID_OPTIONS = [\n \"components\",\n \"rowStyle\",\n \"context\",\n \"autoGroupColumnDef\",\n \"localeText\",\n \"icons\",\n \"datasource\",\n \"dragAndDropImageComponentParams\",\n \"serverSideDatasource\",\n \"viewportDatasource\",\n \"groupRowRendererParams\",\n \"aggFuncs\",\n \"fullWidthCellRendererParams\",\n \"defaultColGroupDef\",\n \"defaultColDef\",\n \"defaultCsvExportParams\",\n \"defaultExcelExportParams\",\n \"columnTypes\",\n \"rowClassRules\",\n \"detailCellRendererParams\",\n \"loadingCellRendererParams\",\n \"loadingOverlayComponentParams\",\n \"noRowsOverlayComponentParams\",\n \"popupParent\",\n \"themeStyleContainer\",\n \"statusBar\",\n \"chartThemeOverrides\",\n \"customChartThemes\",\n \"chartToolPanelsDef\",\n \"dataTypeDefinitions\",\n \"advancedFilterParent\",\n \"advancedFilterBuilderParams\",\n \"initialState\",\n \"autoSizeStrategy\",\n \"selectionColumnDef\",\n \"findOptions\"\n];\nvar ARRAY_GRID_OPTIONS = [\n \"sortingOrder\",\n \"alignedGrids\",\n \"rowData\",\n \"columnDefs\",\n \"excelStyles\",\n \"pinnedTopRowData\",\n \"pinnedBottomRowData\",\n \"chartThemes\",\n \"rowClass\",\n \"paginationPageSizeSelector\"\n];\nvar _NUMBER_GRID_OPTIONS = [\n \"rowHeight\",\n \"detailRowHeight\",\n \"rowBuffer\",\n \"headerHeight\",\n \"groupHeaderHeight\",\n \"groupLockGroupColumns\",\n \"floatingFiltersHeight\",\n \"pivotHeaderHeight\",\n \"pivotGroupHeaderHeight\",\n \"groupDefaultExpanded\",\n \"pivotDefaultExpanded\",\n \"viewportRowModelPageSize\",\n \"viewportRowModelBufferSize\",\n \"autoSizePadding\",\n \"maxBlocksInCache\",\n \"maxConcurrentDatasourceRequests\",\n \"tooltipShowDelay\",\n \"tooltipHideDelay\",\n \"cacheOverflowSize\",\n \"paginationPageSize\",\n \"cacheBlockSize\",\n \"infiniteInitialRowCount\",\n \"serverSideInitialRowCount\",\n \"scrollbarWidth\",\n \"asyncTransactionWaitMillis\",\n \"blockLoadDebounceMillis\",\n \"keepDetailRowsCount\",\n \"undoRedoCellEditingLimit\",\n \"cellFlashDuration\",\n \"cellFadeDuration\",\n \"tabIndex\",\n \"pivotMaxGeneratedColumns\"\n];\nvar OTHER_GRID_OPTIONS = [\"theme\", \"rowSelection\"];\nvar _BOOLEAN_MIXED_GRID_OPTIONS = [\n \"cellSelection\",\n \"sideBar\",\n \"rowNumbers\",\n \"suppressGroupChangesColumnVisibility\",\n \"groupAggFiltering\",\n \"suppressStickyTotalRow\",\n \"groupHideParentOfSingleChild\"\n];\nvar _BOOLEAN_GRID_OPTIONS = [\n \"loadThemeGoogleFonts\",\n \"suppressMakeColumnVisibleAfterUnGroup\",\n \"suppressRowClickSelection\",\n \"suppressCellFocus\",\n \"suppressHeaderFocus\",\n \"suppressHorizontalScroll\",\n \"groupSelectsChildren\",\n \"alwaysShowHorizontalScroll\",\n \"alwaysShowVerticalScroll\",\n \"debug\",\n \"enableBrowserTooltips\",\n \"enableCellExpressions\",\n \"groupSuppressBlankHeader\",\n \"suppressMenuHide\",\n \"suppressRowDeselection\",\n \"unSortIcon\",\n \"suppressMultiSort\",\n \"alwaysMultiSort\",\n \"singleClickEdit\",\n \"suppressLoadingOverlay\",\n \"suppressNoRowsOverlay\",\n \"suppressAutoSize\",\n \"skipHeaderOnAutoSize\",\n \"suppressColumnMoveAnimation\",\n \"suppressMoveWhenColumnDragging\",\n \"suppressMovableColumns\",\n \"suppressFieldDotNotation\",\n \"enableRangeSelection\",\n \"enableRangeHandle\",\n \"enableFillHandle\",\n \"suppressClearOnFillReduction\",\n \"deltaSort\",\n \"suppressTouch\",\n \"allowContextMenuWithControlKey\",\n \"suppressContextMenu\",\n \"suppressDragLeaveHidesColumns\",\n \"suppressRowGroupHidesColumns\",\n \"suppressMiddleClickScrolls\",\n \"suppressPreventDefaultOnMouseWheel\",\n \"suppressCopyRowsToClipboard\",\n \"copyHeadersToClipboard\",\n \"copyGroupHeadersToClipboard\",\n \"pivotMode\",\n \"suppressAggFuncInHeader\",\n \"suppressColumnVirtualisation\",\n \"alwaysAggregateAtRootLevel\",\n \"suppressFocusAfterRefresh\",\n \"functionsReadOnly\",\n \"animateRows\",\n \"groupSelectsFiltered\",\n \"groupRemoveSingleChildren\",\n \"groupRemoveLowestSingleChildren\",\n \"enableRtl\",\n \"enableCellSpan\",\n \"suppressClickEdit\",\n \"rowDragEntireRow\",\n \"rowDragManaged\",\n \"suppressRowDrag\",\n \"suppressMoveWhenRowDragging\",\n \"rowDragMultiRow\",\n \"enableGroupEdit\",\n \"embedFullWidthRows\",\n \"suppressPaginationPanel\",\n \"groupHideOpenParents\",\n \"groupAllowUnbalanced\",\n \"pagination\",\n \"paginationAutoPageSize\",\n \"suppressScrollOnNewData\",\n \"suppressScrollWhenPopupsAreOpen\",\n \"purgeClosedRowNodes\",\n \"cacheQuickFilter\",\n \"includeHiddenColumnsInQuickFilter\",\n \"ensureDomOrder\",\n \"accentedSort\",\n \"suppressChangeDetection\",\n \"valueCache\",\n \"valueCacheNeverExpires\",\n \"aggregateOnlyChangedColumns\",\n \"suppressAnimationFrame\",\n \"suppressExcelExport\",\n \"suppressCsvExport\",\n \"includeHiddenColumnsInAdvancedFilter\",\n \"suppressMultiRangeSelection\",\n \"enterNavigatesVerticallyAfterEdit\",\n \"enterNavigatesVertically\",\n \"suppressPropertyNamesCheck\",\n \"rowMultiSelectWithClick\",\n \"suppressRowHoverHighlight\",\n \"suppressRowTransform\",\n \"suppressClipboardPaste\",\n \"suppressLastEmptyLineOnPaste\",\n \"enableCharts\",\n \"suppressMaintainUnsortedOrder\",\n \"enableCellTextSelection\",\n \"suppressBrowserResizeObserver\",\n \"suppressMaxRenderedRowRestriction\",\n \"excludeChildrenWhenTreeDataFiltering\",\n \"tooltipMouseTrack\",\n \"tooltipInteraction\",\n \"keepDetailRows\",\n \"paginateChildRows\",\n \"preventDefaultOnContextMenu\",\n \"undoRedoCellEditing\",\n \"allowDragFromColumnsToolPanel\",\n \"pivotSuppressAutoColumn\",\n \"suppressExpandablePivotGroups\",\n \"debounceVerticalScrollbar\",\n \"detailRowAutoHeight\",\n \"serverSideSortAllLevels\",\n \"serverSideEnableClientSideSort\",\n \"serverSideOnlyRefreshFilteredGroups\",\n \"suppressAggFilteredOnly\",\n \"showOpenedGroup\",\n \"suppressClipboardApi\",\n \"suppressModelUpdateAfterUpdateTransaction\",\n \"stopEditingWhenCellsLoseFocus\",\n \"groupMaintainOrder\",\n \"columnHoverHighlight\",\n \"readOnlyEdit\",\n \"suppressRowVirtualisation\",\n \"enableCellEditingOnBackspace\",\n \"resetRowDataOnUpdate\",\n \"removePivotHeaderRowWhenSingleValueColumn\",\n \"suppressCopySingleCellRanges\",\n \"suppressGroupRowsSticky\",\n \"suppressCutToClipboard\",\n \"rowGroupPanelSuppressSort\",\n \"allowShowChangeAfterFilter\",\n \"enableAdvancedFilter\",\n \"masterDetail\",\n \"treeData\",\n \"reactiveCustomComponents\",\n \"applyQuickFilterBeforePivotOrAgg\",\n \"suppressServerSideFullWidthLoadingRow\",\n \"suppressAdvancedFilterEval\",\n \"loading\",\n \"maintainColumnOrder\",\n \"enableStrictPivotColumnOrder\",\n \"suppressSetFilterByDefault\"\n];\nvar _FUNCTION_GRID_OPTIONS = [\n \"doesExternalFilterPass\",\n \"processPivotResultColDef\",\n \"processPivotResultColGroupDef\",\n \"getBusinessKeyForNode\",\n \"isRowSelectable\",\n \"rowDragText\",\n \"groupRowRenderer\",\n \"dragAndDropImageComponent\",\n \"fullWidthCellRenderer\",\n \"loadingCellRenderer\",\n \"loadingOverlayComponent\",\n \"noRowsOverlayComponent\",\n \"detailCellRenderer\",\n \"quickFilterParser\",\n \"quickFilterMatcher\",\n \"getLocaleText\",\n \"isExternalFilterPresent\",\n \"getRowHeight\",\n \"getRowClass\",\n \"getRowStyle\",\n \"getContextMenuItems\",\n \"getMainMenuItems\",\n \"processRowPostCreate\",\n \"processCellForClipboard\",\n \"getGroupRowAgg\",\n \"isFullWidthRow\",\n \"sendToClipboard\",\n \"focusGridInnerElement\",\n \"navigateToNextHeader\",\n \"tabToNextHeader\",\n \"navigateToNextCell\",\n \"tabToNextCell\",\n \"processCellFromClipboard\",\n \"getDocument\",\n \"postProcessPopup\",\n \"getChildCount\",\n \"getDataPath\",\n \"isRowMaster\",\n \"postSortRows\",\n \"processHeaderForClipboard\",\n \"processUnpinnedColumns\",\n \"processGroupHeaderForClipboard\",\n \"paginationNumberFormatter\",\n \"processDataFromClipboard\",\n \"getServerSideGroupKey\",\n \"isServerSideGroup\",\n \"createChartContainer\",\n \"getChartToolbarItems\",\n \"fillOperation\",\n \"isApplyServerSideTransaction\",\n \"getServerSideGroupLevelParams\",\n \"isServerSideGroupOpenByDefault\",\n \"isGroupOpenByDefault\",\n \"initialGroupOrderComparator\",\n \"loadingCellRendererSelector\",\n \"getRowId\",\n \"chartMenuItems\",\n \"groupTotalRow\",\n \"alwaysPassFilter\"\n];\nvar _ALL_GRID_OPTIONS = [\n ...ARRAY_GRID_OPTIONS,\n ...OBJECT_GRID_OPTIONS,\n ...STRING_GRID_OPTIONS,\n ..._NUMBER_GRID_OPTIONS,\n ..._FUNCTION_GRID_OPTIONS,\n ..._BOOLEAN_GRID_OPTIONS,\n ..._BOOLEAN_MIXED_GRID_OPTIONS,\n ...OTHER_GRID_OPTIONS\n];\n\n// packages/ag-grid-community/src/components/framework/frameworkComponentWrapper.ts\nvar BaseComponentWrapper = class {\n wrap(OriginalConstructor, mandatoryMethods, optionalMethods, componentType) {\n const wrapper = this.createWrapper(OriginalConstructor, componentType);\n mandatoryMethods?.forEach((methodName) => {\n this.createMethod(wrapper, methodName, true);\n });\n optionalMethods?.forEach((methodName) => {\n this.createMethod(wrapper, methodName, false);\n });\n return wrapper;\n }\n createMethod(wrapper, methodName, mandatory) {\n wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n }\n createMethodProxy(wrapper, methodName, mandatory) {\n return function() {\n if (wrapper.hasMethod(methodName)) {\n return wrapper.callMethod(methodName, arguments);\n }\n if (mandatory) {\n _warn(49, { methodName });\n }\n return null;\n };\n }\n};\n\n// packages/ag-grid-community/src/tooltip/tooltipComponent.ts\nvar TooltipComponentElement = { tag: \"div\", cls: \"ag-tooltip\" };\nvar TooltipComponent2 = class extends PopupComponent {\n constructor() {\n super(TooltipComponentElement);\n }\n // will need to type params\n init(params) {\n const { value } = params;\n this.getGui().textContent = _escapeString(value, true);\n }\n};\n\n// packages/ag-grid-community/src/utils/fuzzyMatch.ts\nfunction _fuzzySuggestions(params) {\n const { inputValue, allSuggestions, hideIrrelevant, filterByPercentageOfBestMatch } = params;\n let thisSuggestions = allSuggestions.map((text, idx) => ({\n value: text,\n relevance: hybridFuzzySearch(inputValue, text),\n idx\n }));\n thisSuggestions.sort((a, b) => b.relevance - a.relevance);\n if (hideIrrelevant) {\n thisSuggestions = thisSuggestions.filter((suggestion) => suggestion.relevance !== 0);\n }\n if (thisSuggestions.length > 0 && filterByPercentageOfBestMatch && filterByPercentageOfBestMatch > 0) {\n const bestMatch = thisSuggestions[0].relevance;\n const limit = bestMatch * filterByPercentageOfBestMatch;\n thisSuggestions = thisSuggestions.filter((suggestion) => limit - suggestion.relevance < 0);\n }\n const values = [];\n const indices = [];\n for (const suggestion of thisSuggestions) {\n values.push(suggestion.value);\n indices.push(suggestion.idx);\n }\n return { values, indices };\n}\nfunction hybridFuzzySearch(str1, str2) {\n if (str1 === str2) {\n return 1e3;\n }\n const len1 = str1.length;\n const len2 = str2.length;\n if (len1 === 0 || len2 === 0) {\n return 0;\n }\n const str1Lower = str1.toLocaleLowerCase();\n const str2Lower = str2.toLocaleLowerCase();\n const str2PositionInStr1 = str2Lower.indexOf(str1Lower);\n if (str2PositionInStr1 !== -1) {\n return 980 - str2PositionInStr1 * 2;\n }\n const commonChars = [...str1Lower].filter((char) => str2Lower.includes(char));\n if (commonChars.length === 0) {\n return 0;\n }\n let previousRow = Array.from({ length: len2 + 1 }, (_, i) => i);\n for (let i = 0; i < len1; i++) {\n const currentRow = [i + 1];\n for (let j = 0; j < len2; j++) {\n const insertions = previousRow[j + 1] + 1;\n const deletions = currentRow[j] + 1;\n let substitutions = previousRow[j] + (str1[i] !== str2[j] ? 1 : 0);\n if (len2 > 10 && j > len2 / 2) {\n substitutions += 1;\n }\n if (i > 0 && j > 0 && str1[i - 1] === str2[j - 1]) {\n substitutions -= 4;\n }\n currentRow.push(Math.min(insertions, deletions, substitutions));\n }\n previousRow = currentRow;\n }\n const distance = Math.round(previousRow[len2]);\n const score = Math.max(1, 1e3 - distance * 30);\n return Math.max(1, score);\n}\n\n// packages/ag-grid-community/src/utils/number.ts\nfunction _formatNumberCommas(value, getLocaleTextFunc) {\n if (typeof value !== \"number\") {\n return \"\";\n }\n const localeTextFunc = getLocaleTextFunc();\n const thousandSeparator = localeTextFunc(\"thousandSeparator\", \",\");\n const decimalSeparator = localeTextFunc(\"decimalSeparator\", \".\");\n return value.toString().replace(\".\", decimalSeparator).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, `$1${thousandSeparator}`);\n}\n\n// packages/ag-grid-community/src/export/baseCreator.ts\nvar BaseCreator = class extends BeanStub {\n getFileName(fileName) {\n const extension = this.getDefaultFileExtension();\n if (fileName == null || !fileName.length) {\n fileName = this.getDefaultFileName();\n }\n return fileName.indexOf(\".\") === -1 ? `${fileName}.${extension}` : fileName;\n }\n getData(params) {\n const serializingSession = this.createSerializingSession(params);\n return this.beans.gridSerializer.serialize(serializingSession, params);\n }\n getDefaultFileName() {\n return `export.${this.getDefaultFileExtension()}`;\n }\n};\n\n// packages/ag-grid-community/src/export/baseGridSerializingSession.ts\nvar BaseGridSerializingSession = class {\n constructor(config) {\n this.groupColumns = [];\n const {\n colModel,\n rowGroupColsSvc,\n colNames,\n valueSvc,\n gos,\n processCellCallback,\n processHeaderCallback,\n processGroupHeaderCallback,\n processRowGroupCallback\n } = config;\n this.colModel = colModel;\n this.rowGroupColsSvc = rowGroupColsSvc;\n this.colNames = colNames;\n this.valueSvc = valueSvc;\n this.gos = gos;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.processGroupHeaderCallback = processGroupHeaderCallback;\n this.processRowGroupCallback = processRowGroupCallback;\n }\n prepare(columnsToExport) {\n this.groupColumns = columnsToExport.filter((col) => !!col.getColDef().showRowGroup);\n }\n extractHeaderValue(column) {\n const value = this.getHeaderName(this.processHeaderCallback, column);\n return value ?? \"\";\n }\n extractRowCellValue(column, index, accumulatedRowIndex, type, node) {\n const hideOpenParents = this.gos.get(\"groupHideOpenParents\");\n const value = (!hideOpenParents || node.footer) && this.shouldRenderGroupSummaryCell(node, column, index) ? this.createValueForGroupNode(column, node) : this.valueSvc.getValueForDisplay(column, node);\n const processedValue = this.processCell({\n accumulatedRowIndex,\n rowNode: node,\n column,\n value,\n processCellCallback: this.processCellCallback,\n type\n });\n return processedValue;\n }\n shouldRenderGroupSummaryCell(node, column, currentColumnIndex) {\n const isGroupNode = node.group && !this.gos.get(\"treeData\");\n if (!isGroupNode) {\n return false;\n }\n const currentColumnGroupIndex = this.groupColumns.indexOf(column);\n if (currentColumnGroupIndex !== -1) {\n if (node.groupData?.[column.getId()] !== void 0) {\n return true;\n }\n if (_isServerSideRowModel(this.gos) && node.group) {\n return true;\n }\n if (node.footer && node.level === -1) {\n const colDef = column.getColDef();\n const isFullWidth = colDef == null || colDef.showRowGroup === true;\n return isFullWidth || colDef.showRowGroup === this.rowGroupColsSvc?.columns[0].getId();\n }\n }\n const isGroupUseEntireRow = _isGroupUseEntireRow(this.gos, this.colModel.isPivotMode());\n return currentColumnIndex === 0 && isGroupUseEntireRow;\n }\n getHeaderName(callback, column) {\n if (callback) {\n return callback(_addGridCommonParams(this.gos, { column }));\n }\n return this.colNames.getDisplayNameForColumn(column, \"csv\", true);\n }\n createValueForGroupNode(column, node) {\n if (this.processRowGroupCallback) {\n return this.processRowGroupCallback(_addGridCommonParams(this.gos, { column, node }));\n }\n const isTreeData = this.gos.get(\"treeData\");\n const getValueFromNode = (node2) => {\n if (isTreeData) {\n return node2.key;\n }\n const value = node2.groupData?.[column.getId()];\n if (!value || !node2.rowGroupColumn || node2.rowGroupColumn.getColDef().useValueFormatterForExport === false) {\n return value;\n }\n return this.valueSvc.formatValue(node2.rowGroupColumn, node2, value) ?? value;\n };\n const isFooter = node.footer;\n const keys = [getValueFromNode(node)];\n if (!_isGroupMultiAutoColumn(this.gos)) {\n while (node.parent) {\n node = node.parent;\n keys.push(getValueFromNode(node));\n }\n }\n const groupValue = keys.reverse().join(\" -> \");\n return isFooter ? `Total ${groupValue}` : groupValue;\n }\n processCell(params) {\n const { accumulatedRowIndex, rowNode, column, value, processCellCallback, type } = params;\n if (processCellCallback) {\n return {\n value: processCellCallback(\n _addGridCommonParams(this.gos, {\n accumulatedRowIndex,\n column,\n node: rowNode,\n value,\n type,\n parseValue: (valueToParse) => this.valueSvc.parseValue(\n column,\n rowNode,\n valueToParse,\n this.valueSvc.getValue(column, rowNode)\n ),\n formatValue: (valueToFormat) => this.valueSvc.formatValue(column, rowNode, valueToFormat) ?? valueToFormat\n })\n ) ?? \"\"\n };\n }\n if (column.getColDef().useValueFormatterForExport !== false) {\n return {\n value: value ?? \"\",\n valueFormatted: this.valueSvc.formatValue(column, rowNode, value)\n };\n }\n return { value: value ?? \"\" };\n }\n};\n\n// packages/ag-grid-community/src/export/downloader.ts\nfunction _downloadFile(fileName, content) {\n const win = document.defaultView || window;\n if (!win) {\n _warn(52);\n return;\n }\n const element = document.createElement(\"a\");\n const url = win.URL.createObjectURL(content);\n element.setAttribute(\"href\", url);\n element.setAttribute(\"download\", fileName);\n element.style.display = \"none\";\n document.body.appendChild(element);\n element.dispatchEvent(\n new MouseEvent(\"click\", {\n bubbles: false,\n cancelable: true,\n view: win\n })\n );\n document.body.removeChild(element);\n win.setTimeout(() => {\n win.URL.revokeObjectURL(url);\n }, 0);\n}\n\n// packages/ag-grid-community/src/gridOptionsInitial.ts\nvar INITIAL_GRID_OPTION_KEYS = {\n enableBrowserTooltips: true,\n tooltipTrigger: true,\n tooltipMouseTrack: true,\n tooltipShowMode: true,\n tooltipInteraction: true,\n defaultColGroupDef: true,\n suppressAutoSize: true,\n skipHeaderOnAutoSize: true,\n autoSizeStrategy: true,\n components: true,\n stopEditingWhenCellsLoseFocus: true,\n undoRedoCellEditing: true,\n undoRedoCellEditingLimit: true,\n excelStyles: true,\n cacheQuickFilter: true,\n customChartThemes: true,\n chartThemeOverrides: true,\n chartToolPanelsDef: true,\n loadingCellRendererSelector: true,\n localeText: true,\n keepDetailRows: true,\n keepDetailRowsCount: true,\n detailRowHeight: true,\n detailRowAutoHeight: true,\n tabIndex: true,\n valueCache: true,\n valueCacheNeverExpires: true,\n enableCellExpressions: true,\n suppressTouch: true,\n suppressBrowserResizeObserver: true,\n suppressPropertyNamesCheck: true,\n debug: true,\n dragAndDropImageComponent: true,\n loadingOverlayComponent: true,\n suppressLoadingOverlay: true,\n noRowsOverlayComponent: true,\n paginationPageSizeSelector: true,\n paginateChildRows: true,\n pivotPanelShow: true,\n pivotSuppressAutoColumn: true,\n suppressExpandablePivotGroups: true,\n aggFuncs: true,\n allowShowChangeAfterFilter: true,\n ensureDomOrder: true,\n enableRtl: true,\n suppressColumnVirtualisation: true,\n suppressMaxRenderedRowRestriction: true,\n suppressRowVirtualisation: true,\n rowDragText: true,\n groupLockGroupColumns: true,\n suppressGroupRowsSticky: true,\n rowModelType: true,\n cacheOverflowSize: true,\n infiniteInitialRowCount: true,\n serverSideInitialRowCount: true,\n maxBlocksInCache: true,\n maxConcurrentDatasourceRequests: true,\n blockLoadDebounceMillis: true,\n serverSideOnlyRefreshFilteredGroups: true,\n serverSidePivotResultFieldSeparator: true,\n viewportRowModelPageSize: true,\n viewportRowModelBufferSize: true,\n debounceVerticalScrollbar: true,\n suppressAnimationFrame: true,\n suppressPreventDefaultOnMouseWheel: true,\n scrollbarWidth: true,\n icons: true,\n suppressRowTransform: true,\n gridId: true,\n enableGroupEdit: true,\n initialState: true,\n processUnpinnedColumns: true,\n createChartContainer: true,\n getLocaleText: true,\n getRowId: true,\n reactiveCustomComponents: true,\n columnMenu: true,\n suppressSetFilterByDefault: true,\n getDataPath: true,\n enableCellSpan: true\n};\n\n// packages/ag-grid-community/src/validation/apiFunctionValidator.ts\nvar clientSide = \"clientSide\";\nvar serverSide = \"serverSide\";\nvar infinite = \"infinite\";\nvar functionRowModels = {\n onGroupExpandedOrCollapsed: [clientSide],\n refreshClientSideRowModel: [clientSide],\n isRowDataEmpty: [clientSide],\n forEachLeafNode: [clientSide],\n forEachNodeAfterFilter: [clientSide],\n forEachNodeAfterFilterAndSort: [clientSide],\n resetRowHeights: [clientSide],\n applyTransaction: [clientSide],\n applyTransactionAsync: [clientSide],\n flushAsyncTransactions: [clientSide],\n getBestCostNodeSelection: [clientSide],\n getServerSideSelectionState: [serverSide],\n setServerSideSelectionState: [serverSide],\n applyServerSideTransaction: [serverSide],\n applyServerSideTransactionAsync: [serverSide],\n applyServerSideRowData: [serverSide],\n retryServerSideLoads: [serverSide],\n flushServerSideAsyncTransactions: [serverSide],\n refreshServerSide: [serverSide],\n getServerSideGroupLevelState: [serverSide],\n refreshInfiniteCache: [infinite],\n purgeInfiniteCache: [infinite],\n getInfiniteRowCount: [infinite],\n isLastRowIndexKnown: [infinite, serverSide],\n expandAll: [clientSide, serverSide],\n collapseAll: [clientSide, serverSide],\n onRowHeightChanged: [clientSide, serverSide],\n setRowCount: [infinite, serverSide],\n getCacheBlockState: [infinite, serverSide]\n};\nvar deprecatedFunctions = {\n showLoadingOverlay: {\n version: \"v32\",\n message: '`showLoadingOverlay` is deprecated. Use the grid option \"loading\"=true instead or setGridOption(\"loading\", true).'\n },\n clearRangeSelection: {\n version: \"v32.2\",\n message: \"Use `clearCellSelection` instead.\"\n },\n getInfiniteRowCount: {\n version: \"v32.2\",\n old: \"getInfiniteRowCount()\",\n new: \"getDisplayedRowCount()\"\n },\n selectAllFiltered: {\n version: \"v33\",\n old: \"selectAllFiltered()\",\n new: 'selectAll(\"filtered\")'\n },\n deselectAllFiltered: {\n version: \"v33\",\n old: \"deselectAllFiltered()\",\n new: 'deselectAll(\"filtered\")'\n },\n selectAllOnCurrentPage: {\n version: \"v33\",\n old: \"selectAllOnCurrentPage()\",\n new: 'selectAll(\"currentPage\")'\n },\n deselectAllOnCurrentPage: {\n version: \"v33\",\n old: \"deselectAllOnCurrentPage()\",\n new: 'deselectAll(\"currentPage\")'\n }\n};\nfunction validateApiFunction(functionName, apiFunction, beans) {\n const deprecation = deprecatedFunctions[functionName];\n if (deprecation) {\n const { version, new: replacement, old, message } = deprecation;\n const apiMethod = old ?? functionName;\n return (...args) => {\n const replacementMessage = replacement ? `Please use ${replacement} instead. ` : \"\";\n _warnOnce(`Since ${version} api.${apiMethod} is deprecated. ${replacementMessage}${message ?? \"\"}`);\n return apiFunction.apply(apiFunction, args);\n };\n }\n const rowModels = functionRowModels[functionName];\n if (rowModels) {\n return (...args) => {\n const rowModel = beans.rowModel.getType();\n if (!rowModels.includes(rowModel)) {\n _errorOnce(\n `api.${functionName} can only be called when gridOptions.rowModelType is ${rowModels.join(\" or \")}`\n );\n return void 0;\n }\n return apiFunction.apply(apiFunction, args);\n };\n }\n return apiFunction;\n}\n\n// packages/ag-grid-community/src/validation/enterpriseModuleNames.ts\nvar ENTERPRISE_MODULE_NAMES = {\n AdvancedFilter: 1,\n AllEnterprise: 1,\n CellSelection: 1,\n Clipboard: 1,\n ColumnMenu: 1,\n ColumnsToolPanel: 1,\n ContextMenu: 1,\n ExcelExport: 1,\n FiltersToolPanel: 1,\n Find: 1,\n GridCharts: 1,\n IntegratedCharts: 1,\n GroupFilter: 1,\n MasterDetail: 1,\n Menu: 1,\n MultiFilter: 1,\n Pivot: 1,\n RangeSelection: 1,\n RichSelect: 1,\n RowNumbers: 1,\n RowGrouping: 1,\n RowGroupingPanel: 1,\n ServerSideRowModelApi: 1,\n ServerSideRowModel: 1,\n SetFilter: 1,\n SideBar: 1,\n Sparklines: 1,\n StatusBar: 1,\n TreeData: 1,\n ViewportRowModel: 1\n};\n\n// packages/ag-grid-community/src/validation/resolvableModuleNames.ts\nvar ALL_COLUMN_FILTERS = [\n \"TextFilter\",\n \"NumberFilter\",\n \"DateFilter\",\n \"SetFilter\",\n \"MultiFilter\",\n \"GroupFilter\",\n \"CustomFilter\"\n];\nvar RESOLVABLE_MODULE_NAMES = {\n EditCore: [\n \"TextEditor\",\n \"NumberEditor\",\n \"DateEditor\",\n \"CheckboxEditor\",\n \"LargeTextEditor\",\n \"SelectEditor\",\n \"RichSelect\",\n \"CustomEditor\"\n ],\n CheckboxCellRenderer: [\"AllCommunity\"],\n ClientSideRowModelHierarchy: [\"RowGrouping\", \"Pivot\", \"TreeData\"],\n ColumnFilter: ALL_COLUMN_FILTERS,\n ColumnGroupHeaderComp: [\"AllCommunity\"],\n ColumnGroup: [\"AllCommunity\"],\n ColumnHeaderComp: [\"AllCommunity\"],\n ColumnMove: [\"AllCommunity\"],\n ColumnResize: [\"AllCommunity\"],\n CommunityCore: [\"AllCommunity\"],\n CsrmSsrmSharedApi: [\"ClientSideRowModelApi\", \"ServerSideRowModelApi\"],\n EnterpriseCore: [\"AllEnterprise\"],\n FilterCore: [...ALL_COLUMN_FILTERS, \"QuickFilter\", \"ExternalFilter\", \"AdvancedFilter\"],\n GroupCellRenderer: [\"RowGrouping\", \"Pivot\", \"TreeData\", \"MasterDetail\", \"ServerSideRowModel\"],\n KeyboardNavigation: [\"AllCommunity\"],\n LoadingCellRenderer: [\"ServerSideRowModel\"],\n MenuCore: [\"ColumnMenu\", \"ContextMenu\"],\n MenuItem: [\"ColumnMenu\", \"ContextMenu\", \"MultiFilter\", \"IntegratedCharts\", \"ColumnsToolPanel\"],\n Overlay: [\"AllCommunity\"],\n PinnedColumn: [\"AllCommunity\"],\n SharedAggregation: [\"RowGrouping\", \"Pivot\", \"TreeData\", \"ServerSideRowModel\"],\n SharedDragAndDrop: [\"AllCommunity\"],\n SharedMasterDetail: [\"MasterDetail\", \"ServerSideRowModel\"],\n SharedMenu: [...ALL_COLUMN_FILTERS, \"ColumnMenu\", \"ContextMenu\"],\n SharedPivot: [\"Pivot\", \"ServerSideRowModel\"],\n SharedRowGrouping: [\"RowGrouping\", \"ServerSideRowModel\"],\n SharedRowSelection: [\"RowSelection\", \"ServerSideRowModel\"],\n SkeletonCellRenderer: [\"ServerSideRowModel\"],\n Sort: [\"AllCommunity\"],\n SsrmInfiniteSharedApi: [\"InfiniteRowModel\", \"ServerSideRowModelApi\"],\n SharedTreeData: [\"TreeData\", \"ServerSideRowModel\"]\n};\nvar MODULES_FOR_ROW_MODELS = {\n InfiniteRowModel: \"infinite\",\n ClientSideRowModelApi: \"clientSide\",\n ClientSideRowModel: \"clientSide\",\n ServerSideRowModelApi: \"serverSide\",\n ServerSideRowModel: \"serverSide\",\n ViewportRowModel: \"viewport\"\n};\nfunction resolveModuleNames(moduleName, rowModelType) {\n const resolvedModuleNames = [];\n (Array.isArray(moduleName) ? moduleName : [moduleName]).forEach((modName) => {\n const resolved = RESOLVABLE_MODULE_NAMES[modName];\n if (resolved) {\n resolved.forEach((resolvedModName) => {\n const rowModelForModule = MODULES_FOR_ROW_MODELS[resolvedModName];\n if (!rowModelForModule || rowModelForModule === rowModelType) {\n resolvedModuleNames.push(resolvedModName);\n }\n });\n } else {\n resolvedModuleNames.push(modName);\n }\n });\n return resolvedModuleNames;\n}\n\n// packages/ag-grid-community/src/validation/rules/userCompValidations.ts\nvar USER_COMP_MODULES = {\n agSetColumnFilter: \"SetFilter\",\n agSetColumnFloatingFilter: \"SetFilter\",\n agMultiColumnFilter: \"MultiFilter\",\n agMultiColumnFloatingFilter: \"MultiFilter\",\n agGroupColumnFilter: \"GroupFilter\",\n agGroupColumnFloatingFilter: \"GroupFilter\",\n agGroupCellRenderer: \"GroupCellRenderer\",\n agGroupRowRenderer: \"GroupCellRenderer\",\n agRichSelect: \"RichSelect\",\n agRichSelectCellEditor: \"RichSelect\",\n agDetailCellRenderer: \"SharedMasterDetail\",\n agSparklineCellRenderer: \"Sparklines\",\n agDragAndDropImage: \"SharedDragAndDrop\",\n agColumnHeader: \"ColumnHeaderComp\",\n agColumnGroupHeader: \"ColumnGroupHeaderComp\",\n agSortIndicator: \"Sort\",\n agAnimateShowChangeCellRenderer: \"HighlightChanges\",\n agAnimateSlideCellRenderer: \"HighlightChanges\",\n agLoadingCellRenderer: \"LoadingCellRenderer\",\n agSkeletonCellRenderer: \"SkeletonCellRenderer\",\n agCheckboxCellRenderer: \"CheckboxCellRenderer\",\n agLoadingOverlay: \"Overlay\",\n agNoRowsOverlay: \"Overlay\",\n agTooltipComponent: \"Tooltip\",\n agReadOnlyFloatingFilter: \"CustomFilter\",\n agTextColumnFilter: \"TextFilter\",\n agNumberColumnFilter: \"NumberFilter\",\n agDateColumnFilter: \"DateFilter\",\n agDateInput: \"DateFilter\",\n agTextColumnFloatingFilter: \"TextFilter\",\n agNumberColumnFloatingFilter: \"NumberFilter\",\n agDateColumnFloatingFilter: \"DateFilter\",\n agCellEditor: \"TextEditor\",\n agSelectCellEditor: \"SelectEditor\",\n agTextCellEditor: \"TextEditor\",\n agNumberCellEditor: \"NumberEditor\",\n agDateCellEditor: \"DateEditor\",\n agDateStringCellEditor: \"DateEditor\",\n agCheckboxCellEditor: \"CheckboxEditor\",\n agLargeTextCellEditor: \"LargeTextEditor\",\n agMenuItem: \"MenuItem\",\n agColumnsToolPanel: \"ColumnsToolPanel\",\n agFiltersToolPanel: \"FiltersToolPanel\",\n agAggregationComponent: \"StatusBar\",\n agSelectedRowCountComponent: \"StatusBar\",\n agTotalRowCountComponent: \"StatusBar\",\n agFilteredRowCountComponent: \"StatusBar\",\n agTotalAndFilteredRowCountComponent: \"StatusBar\",\n agFindCellRenderer: \"Find\"\n};\n\n// packages/ag-grid-community/src/validation/errorMessages/errorText.ts\nvar moduleImportMsg = (moduleNames) => {\n const imports = moduleNames.map(\n (moduleName) => `import { ${convertToUserModuleName(moduleName)} } from '${ENTERPRISE_MODULE_NAMES[moduleName] ? \"ag-grid-enterprise\" : \"ag-grid-community\"}';`\n );\n const includeCharts = moduleNames.some((m) => m === \"IntegratedCharts\" || m === \"Sparklines\");\n if (includeCharts) {\n const chartImport = `import { AgChartsEnterpriseModule } from 'ag-charts-enterprise';`;\n imports.push(chartImport);\n }\n return `import { ModuleRegistry } from 'ag-grid-community'; \n${imports.join(\" \\n\")} \n\nModuleRegistry.registerModules([ ${moduleNames.map((m) => convertToUserModuleName(m, true)).join(\", \")} ]); \n\nFor more info see: ${baseDocLink}/modules/`;\n};\nfunction convertToUserModuleName(moduleName, inModuleRegistration = false) {\n if (inModuleRegistration && (moduleName === \"IntegratedCharts\" || moduleName === \"Sparklines\")) {\n return `${moduleName}Module.with(AgChartsEnterpriseModule)`;\n }\n return `${moduleName}Module`;\n}\nfunction umdMissingModule(reasonOrId, moduleNames) {\n const chartModules = moduleNames.filter((m) => m === \"IntegratedCharts\" || m === \"Sparklines\");\n let message = \"\";\n const agChartsDynamic = globalThis?.agCharts;\n if (!agChartsDynamic && chartModules.length > 0) {\n message = `Unable to use ${reasonOrId} as either the ag-charts-community or ag-charts-enterprise script needs to be included alongside ag-grid-enterprise.\n`;\n } else if (moduleNames.some((m) => ENTERPRISE_MODULE_NAMES[m])) {\n message = message + `Unable to use ${reasonOrId} as that requires the ag-grid-enterprise script to be included.\n`;\n }\n return message;\n}\nvar missingModule = ({\n reasonOrId,\n moduleName,\n gridScoped,\n gridId,\n rowModelType,\n additionalText,\n isUmd: isUmd2\n}) => {\n const resolvedModuleNames = resolveModuleNames(moduleName, rowModelType);\n const reason = typeof reasonOrId === \"string\" ? reasonOrId : MISSING_MODULE_REASONS[reasonOrId];\n if (isUmd2) {\n return umdMissingModule(reason, resolvedModuleNames);\n }\n const chartModules = resolvedModuleNames.filter((m) => m === \"IntegratedCharts\" || m === \"Sparklines\");\n const chartImportRequired = chartModules.length > 0 ? `${chartModules.map((m) => convertToUserModuleName(m)).join()} must be initialised with an AG Charts module. One of 'AgChartsCommunityModule' / 'AgChartsEnterpriseModule'.` : \"\";\n const explanation = `Unable to use ${reason} as ${resolvedModuleNames.length > 1 ? \"one of \" + resolvedModuleNames.map((m) => convertToUserModuleName(m)).join(\", \") : convertToUserModuleName(resolvedModuleNames[0])} is not registered${gridScoped ? \" for gridId: \" + gridId : \"\"}. ${chartImportRequired} Check if you have registered the module:\n`;\n return `${explanation}\n${moduleImportMsg(resolvedModuleNames)}` + (additionalText ? ` \n\n${additionalText}` : \"\");\n};\nvar missingChartsWithModule = (gridModule) => {\n return `${gridModule} must be initialised with an AG Charts module. One of 'AgChartsCommunityModule' / 'AgChartsEnterpriseModule'.\n\nimport { AgChartsEnterpriseModule } from 'ag-charts-enterprise';\nimport { ModuleRegistry } from 'ag-grid-community';\nimport { ${gridModule} } from 'ag-grid-enterprise';\n \nModuleRegistry.registerModules([${gridModule}.with(AgChartsEnterpriseModule)]);\n `;\n};\nvar clipboardApiError = (method) => `AG Grid: Unable to use the Clipboard API (navigator.clipboard.${method}()). The reason why it could not be used has been logged in the previous line. For this reason the grid has defaulted to using a workaround which doesn't perform as well. Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API.`;\nvar AG_GRID_ERRORS = {\n 1: () => \"`rowData` must be an array\",\n 2: ({ nodeId }) => `Duplicate node id '${nodeId}' detected from getRowId callback, this could cause issues in your grid.`,\n 3: () => \"Calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.\",\n 4: ({ id }) => `Could not find row id=${id}, data item was not found for this id`,\n 5: ({ data }) => [\n `Could not find data item as object was not found.`,\n data,\n \" Consider using getRowId to help the Grid find matching row data\"\n ],\n 6: () => `'groupHideOpenParents' only works when specifying specific columns for 'colDef.showRowGroup'`,\n 7: () => \"Pivoting is not supported with aligned grids as it may produce different columns in each grid.\",\n 8: ({ key }) => `Unknown key for navigation ${key}`,\n 9: ({ variable }) => `No value for ${variable?.cssName}. This usually means that the grid has been initialised before styles have been loaded. The default value of ${variable?.defaultValue} will be used and updated when styles load.`,\n 10: ({ eventType }) => `As of v33, the '${eventType}' event is deprecated. Use the global 'modelUpdated' event to determine when row children have changed.`,\n 11: () => \"No gridOptions provided to createGrid\",\n 12: ({ colKey }) => [\"column \", colKey, \" not found\"],\n 13: () => \"Could not find rowIndex, this means tasks are being executed on a rowNode that has been removed from the grid.\",\n 14: ({ groupPrefix }) => `Row IDs cannot start with ${groupPrefix}, this is a reserved prefix for AG Grid's row grouping feature.`,\n 15: ({ expression }) => [\"value should be either a string or a function\", expression],\n 16: ({ expression, params, e }) => [\n \"Processing of the expression failed\",\n \"Expression = \",\n expression,\n \"Params = \",\n params,\n \"Exception = \",\n e\n ],\n 17: () => \"you need either field or valueSetter set on colDef for editing to work\",\n 18: () => `alignedGrids contains an undefined option.`,\n 19: () => `alignedGrids - No api found on the linked grid.`,\n 20: () => `You may want to configure via a callback to avoid setup race conditions:\n \"alignedGrids: () => [linkedGrid]\"`,\n 21: () => \"pivoting is not supported with aligned grids. You can only use one of these features at a time in a grid.\",\n 22: ({ key }) => `${key} is an initial property and cannot be updated.`,\n 23: () => \"The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.\",\n 24: () => \"row height must be a number if not using standard row model\",\n 25: ({ id }) => [`The getRowId callback must return a string. The ID `, id, ` is being cast to a string.`],\n 26: ({ fnName, preDestroyLink }) => {\n return `Grid API function ${fnName}() cannot be called as the grid has been destroyed.\n Either clear local references to the grid api, when it is destroyed, or check gridApi.isDestroyed() to avoid calling methods against a destroyed grid.\n To run logic when the grid is about to be destroyed use the gridPreDestroy event. See: ${preDestroyLink}`;\n },\n 27: ({ fnName, module }) => `API function '${fnName}' not registered to module '${module}'`,\n 28: () => \"setRowCount cannot be used while using row grouping.\",\n 29: () => \"tried to call sizeColumnsToFit() but the grid is coming back with zero width, maybe the grid is not visible yet on the screen?\",\n 30: ({ toIndex }) => [\n \"tried to insert columns in invalid location, toIndex = \",\n toIndex,\n \"remember that you should not count the moving columns when calculating the new index\"\n ],\n 31: () => \"infinite loop in resizeColumnSets\",\n 32: () => \"applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.\",\n 33: () => \"stateItem.aggFunc must be a string. if using your own aggregation functions, register the functions first before using them in get/set state. This is because it is intended for the column state to be stored and retrieved as simple JSON.\",\n 34: ({ key }) => `the column type '${key}' is a default column type and cannot be overridden.`,\n 35: () => `Column type definitions 'columnTypes' with a 'type' attribute are not supported because a column type cannot refer to another column type. Only column definitions 'columnDefs' can use the 'type' attribute to refer to a column type.`,\n 36: ({ t }) => \"colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\",\n 37: () => `Changing the column pinning status is not allowed with domLayout='print'`,\n 38: ({ iconName }) => `provided icon '${iconName}' needs to be a string or a function`,\n 39: () => \"Applying column order broke a group where columns should be married together. Applying new order has been discarded.\",\n 40: ({ e, method }) => `${e}\n${clipboardApiError(method)}`,\n 41: () => \"Browser did not allow document.execCommand('copy'). Ensure 'api.copySelectedRowsToClipboard() is invoked via a user event, i.e. button click, otherwise the browser will prevent it for security reasons.\",\n 42: () => \"Browser does not support document.execCommand('copy') for clipboard operations\",\n 43: ({ iconName }) => `As of v33, icon '${iconName}' is deprecated. Use the icon CSS name instead.`,\n 44: () => 'Data type definition hierarchies (via the \"extendsDataType\" property) cannot contain circular references.',\n 45: ({ parentCellDataType }) => `The data type definition ${parentCellDataType} does not exist.`,\n 46: () => 'The \"baseDataType\" property of a data type definition must match that of its parent.',\n 47: ({ cellDataType }) => `Missing data type definition - \"${cellDataType}\"`,\n 48: ({ property }) => `Cell data type is \"object\" but no Value ${property} has been provided. Please either provide an object data type definition with a Value ${property}, or set \"colDef.value${property}\"`,\n 49: ({ methodName }) => `Framework component is missing the method ${methodName}()`,\n 50: ({ compName }) => `Could not find component ${compName}, did you forget to configure this component?`,\n 51: () => `Export cancelled. Export is not allowed as per your configuration.`,\n 52: () => \"There is no `window` associated with the current `document`\",\n 53: () => `unknown value type during csv conversion`,\n 54: () => \"Could not find document body, it is needed for drag and drop and context menu.\",\n 55: () => \"addRowDropZone - A container target needs to be provided\",\n 56: () => \"addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.\",\n 57: () => \"unable to show popup filter, filter instantiation failed\",\n 58: () => \"no values found for select cellEditor\",\n 59: () => \"cannot select pinned rows\",\n 60: () => \"cannot select node until it has finished loading\",\n 61: () => \"since version v32.2.0, rowNode.isFullWidthCell() has been deprecated. Instead check `rowNode.detail` followed by the user provided `isFullWidthRow` grid option.\",\n 62: ({ colId }) => `setFilterModel() - no column found for colId: ${colId}`,\n 63: ({ colId }) => `setFilterModel() - unable to fully apply model, filtering disabled for colId: ${colId}`,\n 64: ({ colId }) => `setFilterModel() - unable to fully apply model, unable to create filter for colId: ${colId}`,\n 65: () => \"filter missing setModel method, which is needed for setFilterModel\",\n 66: () => \"filter API missing getModel method, which is needed for getFilterModel\",\n 67: () => \"Filter is missing isFilterActive() method\",\n 68: () => \"Column Filter API methods have been disabled as Advanced Filters are enabled.\",\n 69: ({ guiFromFilter }) => `getGui method from filter returned ${guiFromFilter}; it should be a DOM element.`,\n 70: ({ newFilter }) => `Grid option quickFilterText only supports string inputs, received: ${typeof newFilter}`,\n 71: () => \"debounceMs is ignored when apply button is present\",\n 72: ({ keys }) => [`ignoring FilterOptionDef as it doesn't contain one of `, keys],\n 73: () => `invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'`,\n 74: () => \"no filter options for filter\",\n 75: () => \"Unknown button type specified\",\n 76: ({ filterModelType }) => [\n 'Unexpected type of filter \"',\n filterModelType,\n '\", it looks like the filter was configured with incorrect Filter Options'\n ],\n 77: () => `Filter model is missing 'conditions'`,\n 78: () => 'Filter Model contains more conditions than \"filterParams.maxNumConditions\". Additional conditions have been ignored.',\n 79: () => '\"filterParams.maxNumConditions\" must be greater than or equal to zero.',\n 80: () => '\"filterParams.numAlwaysVisibleConditions\" must be greater than or equal to zero.',\n 81: () => '\"filterParams.numAlwaysVisibleConditions\" cannot be greater than \"filterParams.maxNumConditions\".',\n 82: ({ param }) => `DateFilter ${param} is not a number`,\n 83: () => `DateFilter minValidYear should be <= maxValidYear`,\n 84: () => `DateFilter minValidDate should be <= maxValidDate`,\n 85: () => \"DateFilter should not have both minValidDate and minValidYear parameters set at the same time! minValidYear will be ignored.\",\n 86: () => \"DateFilter should not have both maxValidDate and maxValidYear parameters set at the same time! maxValidYear will be ignored.\",\n 87: () => \"DateFilter parameter minValidDate should always be lower than or equal to parameter maxValidDate.\",\n 88: ({ index }) => `Invalid row index for ensureIndexVisible: ${index}`,\n 89: () => `A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)`,\n 90: () => `datasource is missing getRows method`,\n 91: () => \"Filter is missing method doesFilterPass\",\n 92: () => `AnimationFrameService called but animation frames are off`,\n 93: () => \"cannot add multiple ranges when `cellSelection.suppressMultiRanges = true`\",\n 94: ({\n paginationPageSizeOption,\n pageSizeSet,\n pageSizesSet,\n pageSizeOptions\n }) => `'paginationPageSize=${paginationPageSizeOption}'${pageSizeSet ? \"\" : \" (default value)\"}, but ${paginationPageSizeOption} is not included in${pageSizesSet ? \"\" : \" the default\"} paginationPageSizeSelector=[${pageSizeOptions?.join(\", \")}].`,\n 95: ({\n paginationPageSizeOption,\n paginationPageSizeSelector: paginationPageSizeSelector2\n }) => `Either set '${paginationPageSizeSelector2}' to an array that includes ${paginationPageSizeOption} or to 'false' to disable the page size selector.`,\n 96: ({ id, data }) => [\n \"Duplicate ID\",\n id,\n \"found for pinned row with data\",\n data,\n \"When `getRowId` is defined, it must return unique IDs for all pinned rows. Use the `rowPinned` parameter.\"\n ],\n 97: ({ colId }) => `cellEditor for column ${colId} is missing getGui() method`,\n 98: () => \"popup cellEditor does not work with fullRowEdit - you cannot use them both - either turn off fullRowEdit, or stop using popup editors.\",\n 99: () => \"Since v32, `api.hideOverlay()` does not hide the loading overlay when `loading=true`. Set `loading=false` instead.\",\n 100: ({ rowModelType }) => `selectAll only available when rowModelType='clientSide', ie not ${rowModelType}`,\n 101: ({\n propertyName,\n componentName,\n agGridDefaults,\n jsComps\n }) => {\n const textOutput = [];\n const validComponents = [\n // Don't include the old names / internals in potential suggestions\n ...Object.keys(agGridDefaults ?? []).filter(\n (k) => ![\"agCellEditor\", \"agGroupRowRenderer\", \"agSortIndicator\"].includes(k)\n ),\n ...Object.keys(jsComps ?? [])\n ];\n const suggestions = _fuzzySuggestions({\n inputValue: componentName,\n allSuggestions: validComponents,\n hideIrrelevant: true,\n filterByPercentageOfBestMatch: 0.8\n }).values;\n textOutput.push(\n `Could not find '${componentName}' component. It was configured as \"${propertyName}: '${componentName}'\" but it wasn't found in the list of registered components.\n`\n );\n if (suggestions.length > 0) {\n textOutput.push(` Did you mean: [${suggestions.slice(0, 3)}]?\n`);\n }\n textOutput.push(`If using a custom component check it has been registered correctly.`);\n return textOutput;\n },\n 102: () => \"selectAll: 'filtered' only works when gridOptions.rowModelType='clientSide'\",\n 103: () => \"Invalid selection state. When using client-side row model, the state must conform to `string[]`.\",\n 104: ({ value, param }) => `Numeric value ${value} passed to ${param} param will be interpreted as ${value} seconds. If this is intentional use \"${value}s\" to silence this warning.`,\n 105: ({ e }) => [`chart rendering failed`, e],\n 106: () => `Theming API and Legacy Themes are both used in the same page. A Theming API theme has been provided to the 'theme' grid option, but the file (ag-grid.css) is also included and will cause styling issues. Remove ag-grid.css from the page. See the migration guide: ${baseDocLink}/theming-migration/`,\n 107: ({ key, value }) => `Invalid value for theme param ${key} - ${value}`,\n 108: ({ e }) => [\"chart update failed\", e],\n 109: ({ aggFuncOrString }) => `unrecognised aggregation function ${aggFuncOrString}`,\n 110: () => \"groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup\",\n 111: () => \"Invalid selection state. When `groupSelects` is enabled, the state must conform to `IServerSideGroupSelectionState`.\",\n 113: () => \"Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values\",\n 114: ({ component }) => `Could not find component with name of ${component}. Is it in Vue.components?`,\n // 115: () => 'The provided selection state should be an object.' as const,\n 116: () => \"Invalid selection state. The state must conform to `IServerSideSelectionState`.\",\n 117: () => \"selectAll must be of boolean type.\",\n 118: () => \"Infinite scrolling must be enabled in order to set the row count.\",\n 119: () => \"Unable to instantiate filter\",\n 120: () => \"MultiFloatingFilterComp expects MultiFilter as its parent\",\n 121: () => \"a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (see AG Grid docs) or b) to toString() on the object to return a key\",\n 122: () => \"could not find the document, document is empty\",\n 123: () => \"Advanced Filter is only supported with the Client-Side Row Model or Server-Side Row Model.\",\n 124: () => \"No active charts to update.\",\n 125: ({ chartId }) => `Unable to update chart. No active chart found with ID: ${chartId}.`,\n 126: () => \"unable to restore chart as no chart model is provided\",\n 127: ({ allRange }) => `unable to create chart as ${allRange ? \"there are no columns in the grid\" : \"no range is selected\"}.`,\n 128: ({ feature }) => `${feature} is only available if using 'multiRow' selection mode.`,\n 129: ({ feature, rowModel }) => `${feature} is only available if using 'clientSide' or 'serverSide' rowModelType, you are using ${rowModel}.`,\n 130: () => 'cannot multi select unless selection mode is \"multiRow\"',\n // 131: () => 'cannot range select while selecting multiple rows' as const,\n 132: () => \"Row selection features are not available unless `rowSelection` is enabled.\",\n 133: ({ iconName }) => `icon '${iconName}' function should return back a string or a dom object`,\n 134: ({ iconName }) => `Did not find icon '${iconName}'`,\n 135: () => `Data type of the new value does not match the cell data type of the column`,\n 136: () => `Unable to update chart as the 'type' is missing. It must be either 'rangeChartUpdate', 'pivotChartUpdate', or 'crossFilterChartUpdate'.`,\n 137: ({ type, currentChartType }) => `Unable to update chart as a '${type}' update type is not permitted on a ${currentChartType}.`,\n 138: ({ chartType }) => `invalid chart type supplied: ${chartType}`,\n 139: ({ customThemeName }) => `a custom chart theme with the name ${customThemeName} has been supplied but not added to the 'chartThemes' list`,\n 140: ({ name }) => `no stock theme exists with the name '${name}' and no custom chart theme with that name was supplied to 'customChartThemes'`,\n 141: () => \"cross filtering with row grouping is not supported.\",\n 142: () => \"cross filtering is only supported in the client side row model.\",\n 143: ({ panel }) => `'${panel}' is not a valid Chart Tool Panel name`,\n 144: ({ type }) => `Invalid charts data panel group name supplied: '${type}'`,\n 145: ({ group }) => `As of v32, only one charts customize panel group can be expanded at a time. '${group}' will not be expanded.`,\n 146: ({ comp }) => `Unable to instantiate component '${comp}' as its module hasn't been loaded. Add 'ValidationModule' to see which module is required.`,\n 147: ({ group }) => `Invalid charts customize panel group name supplied: '${group}'`,\n 148: ({ group }) => `invalid chartGroupsDef config '${group}'`,\n 149: ({ group, chartType }) => `invalid chartGroupsDef config '${group}.${chartType}'`,\n 150: () => `'seriesChartTypes' are required when the 'customCombo' chart type is specified.`,\n 151: ({ chartType }) => `invalid chartType '${chartType}' supplied in 'seriesChartTypes', converting to 'line' instead.`,\n 152: ({ colId }) => `no 'seriesChartType' found for colId = '${colId}', defaulting to 'line'.`,\n 153: ({ chartDataType }) => `unexpected chartDataType value '${chartDataType}' supplied, instead use 'category', 'series' or 'excluded'`,\n 154: ({ colId }) => `cross filtering requires a 'agSetColumnFilter' or 'agMultiColumnFilter' to be defined on the column with id: ${colId}`,\n 155: ({ option }) => `'${option}' is not a valid Chart Toolbar Option`,\n 156: ({ panel }) => `Invalid panel in chartToolPanelsDef.panels: '${panel}'`,\n 157: ({ unrecognisedGroupIds }) => [\"unable to find group(s) for supplied groupIds:\", unrecognisedGroupIds],\n 158: () => \"can not expand a column item that does not represent a column group header\",\n 159: () => \"Invalid params supplied to createExcelFileForExcel() - `ExcelExportParams.data` is empty.\",\n 160: () => `Export cancelled. Export is not allowed as per your configuration.`,\n 161: () => \"The Excel Exporter is currently on Multi Sheet mode. End that operation by calling 'api.getMultipleSheetAsExcel()' or 'api.exportMultipleSheetsAsExcel()'\",\n 162: ({ id, dataType }) => `Unrecognized data type for excel export [${id}.dataType=${dataType}]`,\n 163: ({ featureName }) => `Excel table export does not work with ${featureName}. The exported Excel file will not contain any Excel tables.\n Please turn off ${featureName} to enable Excel table exports.`,\n 164: () => \"Unable to add data table to Excel sheet: A table already exists.\",\n 165: () => \"Unable to add data table to Excel sheet: Missing required parameters.\",\n 166: ({ unrecognisedGroupIds }) => [\"unable to find groups for these supplied groupIds:\", unrecognisedGroupIds],\n 167: ({ unrecognisedColIds }) => [\"unable to find columns for these supplied colIds:\", unrecognisedColIds],\n 168: () => \"detailCellRendererParams.template should be function or string\",\n 169: () => 'Reference to eDetailGrid was missing from the details template. Please add data-ref=\"eDetailGrid\" to the template.',\n 170: ({ providedStrategy }) => `invalid cellRendererParams.refreshStrategy = ${providedStrategy} supplied, defaulting to refreshStrategy = 'rows'.`,\n 171: () => \"could not find detail grid options for master detail, please set gridOptions.detailCellRendererParams.detailGridOptions\",\n 172: () => \"could not find getDetailRowData for master / detail, please set gridOptions.detailCellRendererParams.getDetailRowData\",\n 173: ({ group }) => `invalid chartGroupsDef config '${group}'`,\n 174: ({ group, chartType }) => `invalid chartGroupsDef config '${group}.${chartType}'`,\n 175: ({ menuTabName, itemsToConsider }) => [\n `Trying to render an invalid menu item '${menuTabName}'. Check that your 'menuTabs' contains one of `,\n itemsToConsider\n ],\n 176: ({ key }) => `unknown menu item type ${key}`,\n 177: () => `valid values for cellSelection.handle.direction are 'x', 'y' and 'xy'. Default to 'xy'.`,\n 178: ({ colId }) => `column ${colId} is not visible`,\n 179: () => \"totalValueGetter should be either a function or a string (expression)\",\n 180: () => \"agRichSelectCellEditor requires cellEditorParams.values to be set\",\n 181: () => \"agRichSelectCellEditor cannot have `multiSelect` and `allowTyping` set to `true`. AllowTyping has been turned off.\",\n 182: () => 'you cannot mix groupDisplayType = \"multipleColumns\" with treeData, only one column can be used to display groups when doing tree data',\n 183: () => \"Group Column Filter only works on group columns. Please use a different filter.\",\n 184: ({ parentGroupData, childNodeData }) => [`duplicate group keys for row data, keys should be unique`, [parentGroupData, childNodeData]],\n 185: ({ data }) => [`getDataPath() should not return an empty path`, [data]],\n 186: ({\n rowId,\n rowData,\n duplicateRowsData\n }) => [\n `duplicate group keys for row data, keys should be unique`,\n rowId,\n rowData,\n ...duplicateRowsData ?? []\n ],\n 187: ({ rowId, firstData, secondData }) => [\n `Duplicate node id ${rowId}. Row IDs are provided via the getRowId() callback. Please modify the getRowId() callback code to provide unique row id values.`,\n \"first instance\",\n firstData,\n \"second instance\",\n secondData\n ],\n 188: () => `getRowId callback must be provided for Server Side Row Model selection to work correctly.`,\n 189: ({ startRow }) => `invalid value ${startRow} for startRow, the value should be >= 0`,\n 190: ({ rowGroupId, data }) => [\n `null and undefined values are not allowed for server side row model keys`,\n rowGroupId ? `column = ${rowGroupId}` : ``,\n `data is `,\n data\n ],\n // 191: () => `cannot multi select unless selection mode is 'multiRow'` as const,\n // 192: () => `cannot use range selection when multi selecting rows` as const,\n // 193: () => \"cannot multi select unless selection mode is 'multiRow'\" as const,\n 194: ({ method }) => `calling gridApi.${method}() is only possible when using rowModelType=\\`clientSide\\`.`,\n 195: ({ justCurrentPage }) => `selecting just ${justCurrentPage ? \"current page\" : \"filtered\"} only works when gridOptions.rowModelType='clientSide'`,\n 196: ({ key }) => `Provided ids must be of string type. Invalid id provided: ${key}`,\n 197: () => \"`toggledNodes` must be an array of string ids.\",\n // 198: () => `cannot multi select unless selection mode is 'multiRow'` as const,\n 199: () => `getSelectedNodes and getSelectedRows functions cannot be used with select all functionality with the server-side row model. Use \\`api.getServerSideSelectionState()\\` instead.`,\n 200: missingModule,\n 201: ({ rowModelType }) => `Could not find row model for rowModelType = ${rowModelType}`,\n 202: () => `\\`getSelectedNodes\\` and \\`getSelectedRows\\` functions cannot be used with \\`groupSelectsChildren\\` and the server-side row model. Use \\`api.getServerSideSelectionState()\\` instead.`,\n 203: () => \"Server Side Row Model does not support Dynamic Row Height and Cache Purging. Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.\",\n 204: () => \"Server Side Row Model does not support Auto Row Height and Cache Purging. Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.\",\n 205: ({ duplicateIdText }) => `Unable to display rows as duplicate row ids (${duplicateIdText}) were returned by the getRowId callback. Please modify the getRowId callback to provide unique ids.`,\n 206: () => \"getRowId callback must be implemented for transactions to work. Transaction was ignored.\",\n 207: () => 'The Set Filter Parameter \"defaultToNothingSelected\" value was ignored because it does not work when \"excelMode\" is used.',\n 208: () => `Set Filter Value Formatter must return string values. Please ensure the Set Filter Value Formatter returns string values for complex objects.`,\n 209: () => `Set Filter Key Creator is returning null for provided values and provided values are primitives. Please provide complex objects. See ${baseDocLink}/filter-set-filter-list/#filter-value-types`,\n 210: () => \"Set Filter has a Key Creator, but provided values are primitives. Did you mean to provide complex objects?\",\n 211: () => \"property treeList=true for Set Filter params, but you did not provide a treeListPathGetter or values of type Date.\",\n 212: () => `please review all your toolPanel components, it seems like at least one of them doesn't have an id`,\n 213: () => \"Advanced Filter does not work with Filters Tool Panel. Filters Tool Panel has been disabled.\",\n 214: ({ key }) => `unable to lookup Tool Panel as invalid key supplied: ${key}`,\n 215: ({ key, defaultByKey }) => `the key ${key} is not a valid key for specifying a tool panel, valid keys are: ${Object.keys(defaultByKey ?? {}).join(\",\")}`,\n 216: ({ name }) => `Missing component for '${name}'`,\n 217: ({ invalidColIds }) => [\"unable to find grid columns for the supplied colDef(s):\", invalidColIds],\n 218: ({ property, defaultOffset }) => `${property} must be a number, the value you provided is not a valid number. Using the default of ${defaultOffset}px.`,\n 219: ({ property }) => `Property ${property} does not exist on the target object.`,\n 220: ({ lineDash }) => `'${lineDash}' is not a valid 'lineDash' option.`,\n 221: () => `agAggregationComponent should only be used with the client and server side row model.`,\n 222: () => `agFilteredRowCountComponent should only be used with the client side row model.`,\n 223: () => `agSelectedRowCountComponent should only be used with the client and server side row model.`,\n 224: () => `agTotalAndFilteredRowCountComponent should only be used with the client side row model.`,\n 225: () => \"agTotalRowCountComponent should only be used with the client side row model.\",\n 226: () => \"viewport is missing init method.\",\n 227: () => \"menu item icon must be DOM node or string\",\n 228: ({ menuItemOrString }) => `unrecognised menu item ${menuItemOrString}`,\n 229: ({ index }) => [\"invalid row index for ensureIndexVisible: \", index],\n 230: () => \"detailCellRendererParams.template is not supported by AG Grid React. To change the template, provide a Custom Detail Cell Renderer. See https://www.ag-grid.com/react-data-grid/master-detail-custom-detail/\",\n // @deprecated v32 mark for removal as part of v32 deprecated features\n 231: () => \"As of v32, using custom components with `reactiveCustomComponents = false` is deprecated.\",\n 232: () => \"Using both rowData and v-model. rowData will be ignored.\",\n 233: ({ methodName }) => `Framework component is missing the method ${methodName}()`,\n 234: () => 'Group Column Filter does not work with the colDef property \"field\". This property will be ignored.',\n 235: () => 'Group Column Filter does not work with the colDef property \"filterValueGetter\". This property will be ignored.',\n 236: () => 'Group Column Filter does not work with the colDef property \"filterParams\". This property will be ignored.',\n 237: () => \"Group Column Filter does not work with Tree Data enabled. Please disable Tree Data, or use a different filter.\",\n 238: () => \"setRowCount can only accept a positive row count.\",\n 239: () => 'Theming API and CSS File Themes are both used in the same page. In v33 we released the Theming API as the new default method of styling the grid. See the migration docs https://www.ag-grid.com/react-data-grid/theming-migration/. Because no value was provided to the `theme` grid option it defaulted to themeQuartz. But the file (ag-grid.css) is also included and will cause styling issues. Either pass the string \"legacy\" to the theme grid option to use v32 style themes, or remove ag-grid.css from the page to use Theming API.',\n 240: ({ theme }) => `theme grid option must be a Theming API theme object or the string \"legacy\", received: ${theme}`,\n // 241: () => `cannot select multiple rows when rowSelection.mode is set to 'singleRow'` as const,\n // 242: () => 'cannot select multiple rows when using rangeSelect' as const,\n 243: () => \"Failed to deserialize state - each provided state object must be an object.\",\n 244: () => \"Failed to deserialize state - `selectAllChildren` must be a boolean value or undefined.\",\n 245: () => \"Failed to deserialize state - `toggledNodes` must be an array.\",\n 246: () => \"Failed to deserialize state - Every `toggledNode` requires an associated string id.\",\n 247: () => `Row selection state could not be parsed due to invalid data. Ensure all child state has toggledNodes or does not conform with the parent rule. \nPlease rebuild the selection state and reapply it.`,\n 248: () => \"SetFloatingFilter expects SetFilter as its parent\",\n 249: () => \"Must supply a Value Formatter in Set Filter params when using a Key Creator\",\n 250: () => \"Must supply a Key Creator in Set Filter params when `treeList = true` on a group column, and Tree Data or Row Grouping is enabled.\",\n 251: ({ chartType }) => `AG Grid: Unable to create chart as an invalid chartType = '${chartType}' was supplied.`,\n 252: () => \"cannot get grid to draw rows when it is in the middle of drawing rows. \\nYour code probably called a grid API method while the grid was in the render stage. \\nTo overcome this, put the API call into a timeout, e.g. instead of api.redrawRows(), call setTimeout(function() { api.redrawRows(); }, 0). \\nTo see what part of your code that caused the refresh check this stacktrace.\",\n 253: ({ version }) => [\"Illegal version string: \", version],\n 254: () => \"Cannot create chart: no chart themes available.\",\n 255: ({ point }) => `Lone surrogate U+${point?.toString(16).toUpperCase()} is not a scalar value`,\n 256: () => \"Unable to initialise. See validation error, or load ValidationModule if missing.\",\n 257: () => missingChartsWithModule(\"IntegratedChartsModule\"),\n 258: () => missingChartsWithModule(\"SparklinesModule\"),\n 259: ({ part }) => `the argument to theme.withPart must be a Theming API part object, received: ${part}`,\n 260: ({\n propName,\n compName,\n gridScoped,\n gridId,\n rowModelType\n }) => missingModule({\n reasonOrId: `AG Grid '${propName}' component: ${compName}`,\n moduleName: USER_COMP_MODULES[compName],\n gridId,\n gridScoped,\n rowModelType\n }),\n 261: () => \"As of v33, `column.isHovered()` is deprecated. Use `api.isColumnHovered(column)` instead.\",\n 262: () => 'As of v33, icon key \"smallDown\" is deprecated. Use \"advancedFilterBuilderSelect\" for Advanced Filter Builder dropdown, \"selectOpen\" for Select cell editor and dropdowns (e.g. Integrated Charts menu), \"richSelectOpen\" for Rich Select cell editor.',\n 263: () => 'As of v33, icon key \"smallLeft\" is deprecated. Use \"panelDelimiterRtl\" for Row Group Panel / Pivot Panel, \"subMenuOpenRtl\" for sub-menus.',\n 264: () => 'As of v33, icon key \"smallRight\" is deprecated. Use \"panelDelimiter\" for Row Group Panel / Pivot Panel, \"subMenuOpen\" for sub-menus.',\n 265: ({ colId }) => `Unable to infer chart data type for column '${colId}' if first data entry is null. Please specify \"chartDataType\", or a \"cellDataType\" in the column definition. For more information, see ${baseDocLink}/integrated-charts-range-chart#coldefchartdatatype .`,\n 266: () => 'As of v33.1, using \"keyCreator\" with the Rich Select Editor has been deprecated. It now requires the \"formatValue\" callback to convert complex data to strings.',\n 267: () => \"Detail grids can not use a different theme to the master grid, the `theme` detail grid option will be ignored.\",\n 268: () => \"Transactions aren't supported with tree data when using treeDataChildrenField\",\n 269: () => \"When `masterSelects: 'detail'`, detail grids must be configured with multi-row selection\",\n 270: ({ id, parentId }) => `Cycle detected for row with id='${id}' and parent id='${parentId}'. Resetting the parent for row with id='${id}' and showing it as a root-level node.`,\n 271: ({ id, parentId }) => `Parent row not found for row with id='${id}' and parent id='${parentId}'. Showing row with id='${id}' as a root-level node.`\n};\nfunction getError(errorId, args) {\n const msgOrFunc = AG_GRID_ERRORS[errorId];\n if (!msgOrFunc) {\n return [`Missing error text for error id ${errorId}!`];\n }\n const errorBody = msgOrFunc(args);\n const errorLink = getErrorLink(errorId, args);\n const errorSuffix = `\nSee ${errorLink}`;\n return Array.isArray(errorBody) ? errorBody.concat(errorSuffix) : [errorBody, errorSuffix];\n}\nvar MISSING_MODULE_REASONS = {\n 1: \"Charting Aggregation\",\n 2: \"pivotResultFields\",\n 3: \"setTooltip\"\n};\n\n// packages/ag-grid-community/src/validation/rules/colDefValidations.ts\nvar COLUMN_DEFINITION_DEPRECATIONS = () => ({\n checkboxSelection: { version: \"32.2\", message: \"Use `rowSelection.checkboxes` in `GridOptions` instead.\" },\n headerCheckboxSelection: {\n version: \"32.2\",\n message: \"Use `rowSelection.headerCheckbox = true` in `GridOptions` instead.\"\n },\n headerCheckboxSelectionFilteredOnly: {\n version: \"32.2\",\n message: 'Use `rowSelection.selectAll = \"filtered\"` in `GridOptions` instead.'\n },\n headerCheckboxSelectionCurrentPageOnly: {\n version: \"32.2\",\n message: 'Use `rowSelection.selectAll = \"currentPage\"` in `GridOptions` instead.'\n },\n showDisabledCheckboxes: {\n version: \"32.2\",\n message: \"Use `rowSelection.hideDisabledCheckboxes = true` in `GridOptions` instead.\"\n }\n});\nvar COLUMN_DEFINITION_VALIDATIONS = () => ({\n aggFunc: { module: \"SharedAggregation\" },\n autoHeight: {\n supportedRowModels: [\"clientSide\", \"serverSide\"],\n module: \"RowAutoHeight\"\n },\n cellClass: { module: \"CellStyle\" },\n cellClassRules: { module: \"CellStyle\" },\n cellEditor: ({ cellEditor, editable }) => {\n if (!editable) {\n return null;\n }\n if (typeof cellEditor === \"string\") {\n const module = USER_COMP_MODULES[cellEditor];\n if (module) {\n return { module };\n }\n }\n return { module: \"CustomEditor\" };\n },\n cellRenderer: ({ cellRenderer }) => {\n if (typeof cellRenderer !== \"string\") {\n return null;\n }\n const module = USER_COMP_MODULES[cellRenderer];\n if (module) {\n return { module };\n }\n return null;\n },\n cellRendererParams: {\n validate: (colDef) => {\n const groupColumn = colDef.rowGroup != null || colDef.rowGroupIndex != null || colDef.cellRenderer === \"agGroupCellRenderer\";\n if (groupColumn && \"checkbox\" in colDef.cellRendererParams) {\n return 'Since v33.0, `cellRendererParams.checkbox` has been deprecated. Use `rowSelection.checkboxLocation = \"autoGroupColumn\"` instead.';\n }\n return null;\n }\n },\n cellStyle: { module: \"CellStyle\" },\n children: () => COL_DEF_VALIDATORS(),\n columnChooserParams: {\n module: \"ColumnMenu\"\n },\n contextMenuItems: { module: \"ContextMenu\" },\n dndSource: { module: \"DragAndDrop\" },\n dndSourceOnRowDrag: { module: \"DragAndDrop\" },\n editable: ({ editable, cellEditor }) => {\n if (editable && !cellEditor) {\n return {\n module: \"TextEditor\"\n };\n }\n return null;\n },\n enableCellChangeFlash: { module: \"HighlightChanges\" },\n enablePivot: { module: \"SharedPivot\" },\n enableRowGroup: { module: \"SharedRowGrouping\" },\n enableValue: { module: \"SharedAggregation\" },\n filter: ({ filter }) => {\n if (filter && typeof filter !== \"string\" && typeof filter !== \"boolean\") {\n return { module: \"CustomFilter\" };\n }\n if (typeof filter === \"string\") {\n const module = USER_COMP_MODULES[filter];\n if (module) {\n return { module };\n }\n }\n return { module: \"ColumnFilter\" };\n },\n floatingFilter: { module: \"ColumnFilter\" },\n headerCheckboxSelection: {\n supportedRowModels: [\"clientSide\", \"serverSide\"],\n validate: (_options, { rowSelection }) => rowSelection === \"multiple\" ? null : \"headerCheckboxSelection is only supported with rowSelection=multiple\"\n },\n headerCheckboxSelectionCurrentPageOnly: {\n supportedRowModels: [\"clientSide\"],\n validate: (_options, { rowSelection }) => rowSelection === \"multiple\" ? null : \"headerCheckboxSelectionCurrentPageOnly is only supported with rowSelection=multiple\"\n },\n headerCheckboxSelectionFilteredOnly: {\n supportedRowModels: [\"clientSide\"],\n validate: (_options, { rowSelection }) => rowSelection === \"multiple\" ? null : \"headerCheckboxSelectionFilteredOnly is only supported with rowSelection=multiple\"\n },\n headerTooltip: { module: \"Tooltip\" },\n headerValueGetter: {\n validate: (_options) => {\n const headerValueGetter = _options.headerValueGetter;\n if (typeof headerValueGetter === \"function\" || typeof headerValueGetter === \"string\") {\n return null;\n }\n return \"headerValueGetter must be a function or a valid string expression\";\n }\n },\n icons: {\n validate: ({ icons }) => {\n if (icons) {\n if (icons[\"smallDown\"]) {\n return _errMsg(262);\n }\n if (icons[\"smallLeft\"]) {\n return _errMsg(263);\n }\n if (icons[\"smallRight\"]) {\n return _errMsg(264);\n }\n }\n return null;\n }\n },\n mainMenuItems: { module: \"ColumnMenu\" },\n menuTabs: (options) => {\n const enterpriseMenuTabs = [\"columnsMenuTab\", \"generalMenuTab\"];\n if (options.menuTabs?.some((tab) => enterpriseMenuTabs.includes(tab))) {\n return {\n module: \"ColumnMenu\"\n };\n }\n return null;\n },\n pivot: { module: \"SharedPivot\" },\n pivotIndex: { module: \"SharedPivot\" },\n rowDrag: { module: \"RowDrag\" },\n rowGroup: { module: \"SharedRowGrouping\" },\n rowGroupIndex: { module: \"SharedRowGrouping\" },\n sortingOrder: {\n validate: (_options) => {\n const sortingOrder = _options.sortingOrder;\n if (Array.isArray(sortingOrder) && sortingOrder.length > 0) {\n const invalidItems = sortingOrder.filter((a) => !DEFAULT_SORTING_ORDER.includes(a));\n if (invalidItems.length > 0) {\n return `sortingOrder must be an array with elements from [${DEFAULT_SORTING_ORDER.map(toStringWithNullUndefined).join()}], currently it includes [${invalidItems.map(toStringWithNullUndefined).join()}]`;\n }\n } else if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n return `sortingOrder must be an array with at least one element, currently it's ${sortingOrder}`;\n }\n return null;\n }\n },\n tooltipField: { module: \"Tooltip\" },\n tooltipValueGetter: { module: \"Tooltip\" },\n type: {\n validate: (_options) => {\n const type = _options.type;\n if (type instanceof Array) {\n const invalidArray = type.some((a) => typeof a !== \"string\");\n if (invalidArray) {\n return \"if colDef.type is supplied an array it should be of type 'string[]'\";\n }\n return null;\n }\n if (typeof type === \"string\") {\n return null;\n }\n return \"colDef.type should be of type 'string' | 'string[]'\";\n }\n },\n rowSpan: {\n validate: (_options, { suppressRowTransform }) => {\n if (!suppressRowTransform) {\n return \"colDef.rowSpan requires suppressRowTransform to be enabled.\";\n }\n return null;\n }\n },\n spanRows: {\n module: \"CellSpan\",\n dependencies: {\n editable: { required: [false, void 0] },\n rowDrag: { required: [false, void 0] },\n colSpan: { required: [false, void 0] },\n rowSpan: { required: [false, void 0] }\n },\n validate: (_options, {\n rowSelection,\n cellSelection,\n suppressRowTransform,\n enableCellSpan,\n rowDragEntireRow,\n enableCellTextSelection\n }) => {\n if (typeof rowSelection === \"object\") {\n if (rowSelection?.mode === \"singleRow\" && rowSelection?.enableClickSelection) {\n return \"colDef.spanRows is not supported with rowSelection.clickSelection\";\n }\n }\n if (cellSelection) {\n return \"colDef.spanRows is not supported with cellSelection.\";\n }\n if (suppressRowTransform) {\n return \"colDef.spanRows is not supported with suppressRowTransform.\";\n }\n if (!enableCellSpan) {\n return \"colDef.spanRows requires enableCellSpan to be enabled.\";\n }\n if (rowDragEntireRow) {\n return \"colDef.spanRows is not supported with rowDragEntireRow.\";\n }\n if (enableCellTextSelection) {\n return \"colDef.spanRows is not supported with enableCellTextSelection.\";\n }\n return null;\n }\n }\n});\nvar colDefPropertyMap = {\n headerName: void 0,\n columnGroupShow: void 0,\n headerStyle: void 0,\n headerClass: void 0,\n toolPanelClass: void 0,\n headerValueGetter: void 0,\n pivotKeys: void 0,\n groupId: void 0,\n colId: void 0,\n sort: void 0,\n initialSort: void 0,\n field: void 0,\n type: void 0,\n cellDataType: void 0,\n tooltipComponent: void 0,\n tooltipField: void 0,\n headerTooltip: void 0,\n cellClass: void 0,\n showRowGroup: void 0,\n filter: void 0,\n initialAggFunc: void 0,\n defaultAggFunc: void 0,\n aggFunc: void 0,\n pinned: void 0,\n initialPinned: void 0,\n chartDataType: void 0,\n cellAriaRole: void 0,\n cellEditorPopupPosition: void 0,\n headerGroupComponent: void 0,\n headerGroupComponentParams: void 0,\n cellStyle: void 0,\n cellRenderer: void 0,\n cellRendererParams: void 0,\n cellEditor: void 0,\n cellEditorParams: void 0,\n filterParams: void 0,\n pivotValueColumn: void 0,\n headerComponent: void 0,\n headerComponentParams: void 0,\n floatingFilterComponent: void 0,\n floatingFilterComponentParams: void 0,\n tooltipComponentParams: void 0,\n refData: void 0,\n columnChooserParams: void 0,\n children: void 0,\n sortingOrder: void 0,\n allowedAggFuncs: void 0,\n menuTabs: void 0,\n pivotTotalColumnIds: void 0,\n cellClassRules: void 0,\n icons: void 0,\n sortIndex: void 0,\n initialSortIndex: void 0,\n flex: void 0,\n initialFlex: void 0,\n width: void 0,\n initialWidth: void 0,\n minWidth: void 0,\n maxWidth: void 0,\n rowGroupIndex: void 0,\n initialRowGroupIndex: void 0,\n pivotIndex: void 0,\n initialPivotIndex: void 0,\n suppressColumnsToolPanel: void 0,\n suppressFiltersToolPanel: void 0,\n openByDefault: void 0,\n marryChildren: void 0,\n suppressStickyLabel: void 0,\n hide: void 0,\n initialHide: void 0,\n rowGroup: void 0,\n initialRowGroup: void 0,\n pivot: void 0,\n initialPivot: void 0,\n checkboxSelection: void 0,\n showDisabledCheckboxes: void 0,\n headerCheckboxSelection: void 0,\n headerCheckboxSelectionFilteredOnly: void 0,\n headerCheckboxSelectionCurrentPageOnly: void 0,\n suppressHeaderMenuButton: void 0,\n suppressMovable: void 0,\n lockPosition: void 0,\n lockVisible: void 0,\n lockPinned: void 0,\n unSortIcon: void 0,\n suppressSizeToFit: void 0,\n suppressAutoSize: void 0,\n enableRowGroup: void 0,\n enablePivot: void 0,\n enableValue: void 0,\n editable: void 0,\n suppressPaste: void 0,\n suppressNavigable: void 0,\n enableCellChangeFlash: void 0,\n rowDrag: void 0,\n dndSource: void 0,\n autoHeight: void 0,\n wrapText: void 0,\n sortable: void 0,\n resizable: void 0,\n singleClickEdit: void 0,\n floatingFilter: void 0,\n cellEditorPopup: void 0,\n suppressFillHandle: void 0,\n wrapHeaderText: void 0,\n autoHeaderHeight: void 0,\n dndSourceOnRowDrag: void 0,\n valueGetter: void 0,\n valueSetter: void 0,\n filterValueGetter: void 0,\n keyCreator: void 0,\n valueFormatter: void 0,\n valueParser: void 0,\n comparator: void 0,\n equals: void 0,\n pivotComparator: void 0,\n suppressKeyboardEvent: void 0,\n suppressHeaderKeyboardEvent: void 0,\n colSpan: void 0,\n rowSpan: void 0,\n spanRows: void 0,\n getQuickFilterText: void 0,\n onCellValueChanged: void 0,\n onCellClicked: void 0,\n onCellDoubleClicked: void 0,\n onCellContextMenu: void 0,\n rowDragText: void 0,\n tooltipValueGetter: void 0,\n cellRendererSelector: void 0,\n cellEditorSelector: void 0,\n suppressSpanHeaderHeight: void 0,\n useValueFormatterForExport: void 0,\n useValueParserForImport: void 0,\n mainMenuItems: void 0,\n contextMenuItems: void 0,\n suppressFloatingFilterButton: void 0,\n suppressHeaderFilterButton: void 0,\n suppressHeaderContextMenu: void 0,\n loadingCellRenderer: void 0,\n loadingCellRendererParams: void 0,\n loadingCellRendererSelector: void 0,\n context: void 0,\n dateComponent: void 0,\n dateComponentParams: void 0,\n getFindText: void 0\n};\nvar ALL_PROPERTIES = () => Object.keys(colDefPropertyMap);\nvar COL_DEF_VALIDATORS = () => ({\n objectName: \"colDef\",\n allProperties: ALL_PROPERTIES(),\n docsUrl: \"column-properties/\",\n deprecations: COLUMN_DEFINITION_DEPRECATIONS(),\n validations: COLUMN_DEFINITION_VALIDATIONS()\n});\n\n// packages/ag-grid-community/src/validation/rules/gridOptionsValidations.ts\nvar GRID_OPTION_DEPRECATIONS = () => ({\n suppressLoadingOverlay: { version: \"32\", message: \"Use `loading`=false instead.\" },\n enableFillHandle: { version: \"32.2\", message: \"Use `cellSelection.handle` instead.\" },\n enableRangeHandle: { version: \"32.2\", message: \"Use `cellSelection.handle` instead.\" },\n enableRangeSelection: { version: \"32.2\", message: \"Use `cellSelection = true` instead.\" },\n suppressMultiRangeSelection: {\n version: \"32.2\",\n message: \"Use `cellSelection.suppressMultiRanges` instead.\"\n },\n suppressClearOnFillReduction: {\n version: \"32.2\",\n message: \"Use `cellSelection.handle.suppressClearOnFillReduction` instead.\"\n },\n fillHandleDirection: { version: \"32.2\", message: \"Use `cellSelection.handle.direction` instead.\" },\n fillOperation: { version: \"32.2\", message: \"Use `cellSelection.handle.setFillValue` instead.\" },\n suppressRowClickSelection: {\n version: \"32.2\",\n message: \"Use `rowSelection.enableClickSelection` instead.\"\n },\n suppressRowDeselection: { version: \"32.2\", message: \"Use `rowSelection.enableClickSelection` instead.\" },\n rowMultiSelectWithClick: {\n version: \"32.2\",\n message: \"Use `rowSelection.enableSelectionWithoutKeys` instead.\"\n },\n groupSelectsChildren: {\n version: \"32.2\",\n message: 'Use `rowSelection.groupSelects = \"descendants\"` instead.'\n },\n groupSelectsFiltered: {\n version: \"32.2\",\n message: 'Use `rowSelection.groupSelects = \"filteredDescendants\"` instead.'\n },\n isRowSelectable: { version: \"32.2\", message: \"Use `selectionOptions.isRowSelectable` instead.\" },\n suppressCopySingleCellRanges: { version: \"32.2\", message: \"Use `rowSelection.copySelectedRows` instead.\" },\n suppressCopyRowsToClipboard: { version: \"32.2\", message: \"Use `rowSelection.copySelectedRows` instead.\" },\n onRangeSelectionChanged: { version: \"32.2\", message: \"Use `onCellSelectionChanged` instead.\" },\n onRangeDeleteStart: { version: \"32.2\", message: \"Use `onCellSelectionDeleteStart` instead.\" },\n onRangeDeleteEnd: { version: \"32.2\", message: \"Use `onCellSelectionDeleteEnd` instead.\" },\n suppressBrowserResizeObserver: {\n version: \"32.2\",\n message: \"The grid always uses the browser's ResizeObserver, this grid option has no effect.\"\n },\n onColumnEverythingChanged: {\n version: \"32.2\",\n message: \"Either use `onDisplayedColumnsChanged` which is fired at the same time, or use one of the more specific column events.\"\n },\n groupRemoveSingleChildren: {\n version: \"33\",\n message: \"Use `groupHideParentOfSingleChild` instead.\"\n },\n groupRemoveLowestSingleChildren: {\n version: \"33\",\n message: 'Use `groupHideParentOfSingleChild: \"leafGroupsOnly\"` instead.'\n },\n suppressRowGroupHidesColumns: {\n version: \"33\",\n message: 'Use `suppressGroupChangesColumnVisibility: \"suppressHideOnGroup\"` instead.'\n },\n suppressMakeColumnVisibleAfterUnGroup: {\n version: \"33\",\n message: 'Use `suppressGroupChangesColumnVisibility: \"suppressShowOnUngroup\"` instead.'\n },\n unSortIcon: { version: \"33\", message: \"Use `defaultColDef.unSortIcon` instead.\" },\n sortingOrder: { version: \"33\", message: \"Use `defaultColDef.sortingOrder` instead.\" },\n suppressPropertyNamesCheck: {\n version: \"33\",\n message: \"`gridOptions` and `columnDefs` both have a `context` property that should be used for arbitrary user data. This means that column definitions and gridOptions should only contain valid properties making this property redundant.\"\n }\n});\nfunction toConstrainedNum(key, value, min, max = Number.MAX_VALUE) {\n if (typeof value === \"number\" || value == null) {\n if (value == null) {\n return null;\n }\n if (value >= min && value <= max) {\n return null;\n }\n if (max === Number.MAX_VALUE) {\n return `${key}: value should be greater than or equal to ${min}`;\n }\n return `${key}: value should be between ${min} and ${max}`;\n }\n return `${key}: value should be a number`;\n}\nvar GRID_OPTION_VALIDATIONS = () => {\n const definedValidations = {\n alignedGrids: { module: \"AlignedGrids\" },\n allowContextMenuWithControlKey: { module: \"ContextMenu\" },\n autoSizePadding: {\n validate({ autoSizePadding }) {\n return toConstrainedNum(\"autoSizePadding\", autoSizePadding, 0);\n }\n },\n autoSizeStrategy: { module: \"ColumnAutoSize\" },\n cacheBlockSize: {\n supportedRowModels: [\"serverSide\", \"infinite\"],\n validate({ cacheBlockSize }) {\n return toConstrainedNum(\"cacheBlockSize\", cacheBlockSize, 1);\n }\n },\n cacheOverflowSize: {\n validate({ cacheOverflowSize }) {\n return toConstrainedNum(\"cacheOverflowSize\", cacheOverflowSize, 1);\n }\n },\n cellSelection: {\n module: \"CellSelection\"\n },\n columnHoverHighlight: { module: \"ColumnHover\" },\n datasource: {\n supportedRowModels: [\"infinite\"],\n module: \"InfiniteRowModel\"\n },\n doesExternalFilterPass: { module: \"ExternalFilter\" },\n domLayout: {\n validate: (options) => {\n const domLayout = options.domLayout;\n const validLayouts = [\"autoHeight\", \"normal\", \"print\"];\n if (domLayout && !validLayouts.includes(domLayout)) {\n return `domLayout must be one of [${validLayouts.join()}], currently it's ${domLayout}`;\n }\n return null;\n }\n },\n editType: {\n module: \"EditCore\"\n },\n enableAdvancedFilter: { module: \"AdvancedFilter\" },\n enableCharts: { module: \"IntegratedCharts\" },\n enableFillHandle: {\n dependencies: {\n enableRangeSelection: { required: [true] }\n }\n },\n enableRangeHandle: {\n dependencies: {\n enableRangeSelection: { required: [true] }\n }\n },\n enableRangeSelection: {\n module: \"CellSelection\",\n dependencies: {\n rowDragEntireRow: { required: [false, void 0] }\n }\n },\n findSearchValue: {\n module: \"Find\"\n },\n rowNumbers: {\n module: \"RowNumbers\"\n },\n getContextMenuItems: { module: \"ContextMenu\" },\n getLocaleText: { module: \"Locale\" },\n getMainMenuItems: { module: \"ColumnMenu\" },\n getRowClass: { module: \"RowStyle\" },\n getRowStyle: { module: \"RowStyle\" },\n grandTotalRow: { module: \"SharedRowGrouping\" },\n groupDefaultExpanded: {\n supportedRowModels: [\"clientSide\"]\n },\n groupHideOpenParents: {\n supportedRowModels: [\"clientSide\", \"serverSide\"],\n dependencies: {\n groupTotalRow: { required: [void 0, \"bottom\"] },\n treeData: {\n required: [void 0, false],\n reason: \"Tree Data has values at the group level so it doesn't make sense to hide them.\"\n }\n }\n },\n groupHideParentOfSingleChild: {\n dependencies: {\n groupHideOpenParents: { required: [void 0, false] }\n }\n },\n groupRemoveLowestSingleChildren: {\n dependencies: {\n groupHideOpenParents: { required: [void 0, false] },\n groupRemoveSingleChildren: { required: [void 0, false] }\n }\n },\n groupRemoveSingleChildren: {\n dependencies: {\n groupHideOpenParents: { required: [void 0, false] },\n groupRemoveLowestSingleChildren: { required: [void 0, false] }\n }\n },\n groupSelectsChildren: {\n dependencies: {\n rowSelection: { required: [\"multiple\"] }\n }\n },\n icons: {\n validate: ({ icons }) => {\n if (icons) {\n if (icons[\"smallDown\"]) {\n return _errMsg(262);\n }\n if (icons[\"smallLeft\"]) {\n return _errMsg(263);\n }\n if (icons[\"smallRight\"]) {\n return _errMsg(264);\n }\n }\n return null;\n }\n },\n infiniteInitialRowCount: {\n validate({ infiniteInitialRowCount }) {\n return toConstrainedNum(\"infiniteInitialRowCount\", infiniteInitialRowCount, 1);\n }\n },\n initialGroupOrderComparator: {\n supportedRowModels: [\"clientSide\"]\n },\n initialState: { module: \"GridState\" },\n isExternalFilterPresent: { module: \"ExternalFilter\" },\n keepDetailRowsCount: {\n validate({ keepDetailRowsCount }) {\n return toConstrainedNum(\"keepDetailRowsCount\", keepDetailRowsCount, 1);\n }\n },\n localeText: {\n module: \"Locale\"\n },\n masterDetail: { module: \"SharedMasterDetail\" },\n pagination: { module: \"Pagination\" },\n paginationPageSize: {\n validate({ paginationPageSize }) {\n return toConstrainedNum(\"paginationPageSize\", paginationPageSize, 1);\n }\n },\n paginationPageSizeSelector: {\n validate: (options) => {\n const values = options.paginationPageSizeSelector;\n if (typeof values === \"boolean\" || values == null) {\n return null;\n }\n if (!values.length) {\n return `'paginationPageSizeSelector' cannot be an empty array.\n If you want to hide the page size selector, set paginationPageSizeSelector to false.`;\n }\n return null;\n }\n },\n pinnedTopRowData: {\n module: \"PinnedRow\"\n },\n pinnedBottomRowData: {\n module: \"PinnedRow\"\n },\n pivotMode: {\n dependencies: {\n treeData: {\n required: [false, void 0],\n reason: \"Pivot Mode is not supported with Tree Data.\"\n }\n },\n module: \"SharedPivot\"\n },\n pivotPanelShow: { module: \"RowGroupingPanel\" },\n quickFilterText: {\n supportedRowModels: [\"clientSide\"],\n module: \"QuickFilter\"\n },\n rowBuffer: {\n validate({ rowBuffer }) {\n return toConstrainedNum(\"rowBuffer\", rowBuffer, 0);\n }\n },\n rowClass: {\n validate: (options) => {\n const rowClass = options.rowClass;\n if (typeof rowClass === \"function\") {\n return \"rowClass should not be a function, please use getRowClass instead\";\n }\n return null;\n },\n module: \"RowStyle\"\n },\n rowClassRules: { module: \"RowStyle\" },\n rowData: {\n supportedRowModels: [\"clientSide\"],\n module: \"ClientSideRowModel\"\n },\n rowDragManaged: {\n supportedRowModels: [\"clientSide\"],\n dependencies: {\n treeData: {\n required: [false, void 0]\n },\n pagination: {\n required: [false, void 0]\n }\n },\n module: \"RowDrag\"\n },\n rowGroupPanelShow: { module: \"RowGroupingPanel\" },\n rowSelection: {\n validate({ rowSelection }) {\n if (rowSelection && typeof rowSelection === \"string\") {\n return 'As of version 32.2.1, using `rowSelection` with the values \"single\" or \"multiple\" has been deprecated. Use the object value instead.';\n }\n if (rowSelection && typeof rowSelection !== \"object\") {\n return \"Expected `RowSelectionOptions` object for the `rowSelection` property.\";\n }\n if (rowSelection && rowSelection.mode !== \"multiRow\" && rowSelection.mode !== \"singleRow\") {\n return `Selection mode \"${rowSelection.mode}\" is invalid. Use one of 'singleRow' or 'multiRow'.`;\n }\n return null;\n },\n module: \"SharedRowSelection\"\n },\n rowStyle: {\n validate: (options) => {\n const rowStyle = options.rowStyle;\n if (rowStyle && typeof rowStyle === \"function\") {\n return \"rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead\";\n }\n return null;\n },\n module: \"RowStyle\"\n },\n serverSideDatasource: {\n supportedRowModels: [\"serverSide\"],\n module: \"ServerSideRowModel\"\n },\n serverSideInitialRowCount: {\n supportedRowModels: [\"serverSide\"],\n validate({ serverSideInitialRowCount }) {\n return toConstrainedNum(\"serverSideInitialRowCount\", serverSideInitialRowCount, 1);\n }\n },\n serverSideOnlyRefreshFilteredGroups: {\n supportedRowModels: [\"serverSide\"]\n },\n serverSideSortAllLevels: {\n supportedRowModels: [\"serverSide\"]\n },\n sideBar: { module: \"SideBar\" },\n sortingOrder: {\n validate: (_options) => {\n const sortingOrder = _options.sortingOrder;\n if (Array.isArray(sortingOrder) && sortingOrder.length > 0) {\n const invalidItems = sortingOrder.filter((a) => !DEFAULT_SORTING_ORDER.includes(a));\n if (invalidItems.length > 0) {\n return `sortingOrder must be an array with elements from [${DEFAULT_SORTING_ORDER.map(toStringWithNullUndefined).join()}], currently it includes [${invalidItems.map(toStringWithNullUndefined).join()}]`;\n }\n } else if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n return `sortingOrder must be an array with at least one element, currently it's ${sortingOrder}`;\n }\n return null;\n }\n },\n statusBar: { module: \"StatusBar\" },\n tooltipHideDelay: {\n validate: (options) => {\n if (options.tooltipHideDelay && options.tooltipHideDelay < 0) {\n return \"tooltipHideDelay should not be lower than 0\";\n }\n return null;\n }\n },\n tooltipShowDelay: {\n validate: (options) => {\n if (options.tooltipShowDelay && options.tooltipShowDelay < 0) {\n return \"tooltipShowDelay should not be lower than 0\";\n }\n return null;\n }\n },\n treeData: {\n supportedRowModels: [\"clientSide\", \"serverSide\"],\n module: \"SharedTreeData\",\n validate: (options) => {\n const rowModel = options.rowModelType ?? \"clientSide\";\n switch (rowModel) {\n case \"clientSide\": {\n const { treeDataChildrenField, treeDataParentIdField, getDataPath, getRowId } = options;\n if (!treeDataChildrenField && !treeDataParentIdField && !getDataPath) {\n return \"treeData requires either 'treeDataChildrenField' or 'treeDataParentIdField' or 'getDataPath' in the clientSide row model.\";\n }\n if (treeDataChildrenField) {\n if (getDataPath) {\n return \"Cannot use both 'treeDataChildrenField' and 'getDataPath' at the same time.\";\n }\n if (treeDataParentIdField) {\n return \"Cannot use both 'treeDataChildrenField' and 'treeDataParentIdField' at the same time.\";\n }\n }\n if (treeDataParentIdField) {\n if (!getRowId) {\n return \"getRowId callback not provided, tree data with parent id cannot be built.\";\n }\n if (getDataPath) {\n return \"Cannot use both 'treeDataParentIdField' and 'getDataPath' at the same time.\";\n }\n }\n return null;\n }\n case \"serverSide\": {\n const ssrmWarning = `treeData requires 'isServerSideGroup' and 'getServerSideGroupKey' in the ${rowModel} row model.`;\n return options.isServerSideGroup && options.getServerSideGroupKey ? null : ssrmWarning;\n }\n }\n return null;\n }\n },\n treeDataChildrenField: {\n module: \"SharedTreeData\"\n },\n treeDataParentIdField: {\n module: \"SharedTreeData\"\n },\n undoRedoCellEditing: { module: \"UndoRedoEdit\" },\n valueCache: { module: \"ValueCache\" },\n viewportDatasource: {\n supportedRowModels: [\"viewport\"],\n module: \"ViewportRowModel\"\n },\n viewportRowModelBufferSize: {\n validate({ viewportRowModelBufferSize }) {\n return toConstrainedNum(\"viewportRowModelBufferSize\", viewportRowModelBufferSize, 0);\n }\n },\n viewportRowModelPageSize: {\n validate({ viewportRowModelPageSize }) {\n return toConstrainedNum(\"viewportRowModelPageSize\", viewportRowModelPageSize, 1);\n }\n },\n rowDragEntireRow: {\n dependencies: {\n cellSelection: { required: [void 0] }\n }\n },\n enableCellSpan: {\n module: \"CellSpan\"\n },\n autoGroupColumnDef: {\n validate({ autoGroupColumnDef, showOpenedGroup }) {\n if (autoGroupColumnDef?.field && showOpenedGroup) {\n return \"autoGroupColumnDef.field and showOpenedGroup are not supported when used together.\";\n }\n if (autoGroupColumnDef?.valueGetter && showOpenedGroup) {\n return \"autoGroupColumnDef.valueGetter and showOpenedGroup are not supported when used together.\";\n }\n return null;\n }\n }\n };\n const validations = {};\n _BOOLEAN_GRID_OPTIONS.forEach((key) => {\n validations[key] = { expectedType: \"boolean\" };\n });\n _NUMBER_GRID_OPTIONS.forEach((key) => {\n validations[key] = { expectedType: \"number\" };\n });\n _mergeDeep(validations, definedValidations);\n return validations;\n};\nvar GRID_OPTIONS_VALIDATORS = () => ({\n objectName: \"gridOptions\",\n allProperties: [..._ALL_GRID_OPTIONS, ..._ALL_EVENTS.map((event) => _getCallbackForEvent(event))],\n propertyExceptions: [\"api\"],\n docsUrl: \"grid-options/\",\n deprecations: GRID_OPTION_DEPRECATIONS(),\n validations: GRID_OPTION_VALIDATIONS()\n});\n\n// packages/ag-grid-community/src/validation/rules/iconValidations.ts\nvar ICON_VALUES = {\n expanded: 1,\n contracted: 1,\n \"tree-closed\": 1,\n \"tree-open\": 1,\n \"tree-indeterminate\": 1,\n pin: 1,\n \"eye-slash\": 1,\n arrows: 1,\n left: 1,\n right: 1,\n group: 1,\n aggregation: 1,\n pivot: 1,\n \"not-allowed\": 1,\n chart: 1,\n cross: 1,\n cancel: 1,\n tick: 1,\n first: 1,\n previous: 1,\n next: 1,\n last: 1,\n linked: 1,\n unlinked: 1,\n \"color-picker\": 1,\n loading: 1,\n menu: 1,\n \"menu-alt\": 1,\n filter: 1,\n columns: 1,\n maximize: 1,\n minimize: 1,\n copy: 1,\n cut: 1,\n paste: 1,\n grip: 1,\n save: 1,\n csv: 1,\n excel: 1,\n \"small-down\": 1,\n \"small-left\": 1,\n \"small-right\": 1,\n \"small-up\": 1,\n asc: 1,\n desc: 1,\n none: 1,\n up: 1,\n down: 1,\n plus: 1,\n minus: 1,\n settings: 1,\n \"checkbox-checked\": 1,\n \"checkbox-indeterminate\": 1,\n \"checkbox-unchecked\": 1,\n \"radio-button-on\": 1,\n \"radio-button-off\": 1,\n eye: 1\n};\nvar ICON_MODULES = {\n chart: \"MenuCore\",\n cancel: \"EnterpriseCore\",\n first: \"Pagination\",\n previous: \"Pagination\",\n next: \"Pagination\",\n last: \"Pagination\",\n linked: \"IntegratedCharts\",\n loadingMenuItems: \"MenuCore\",\n unlinked: \"IntegratedCharts\",\n menu: \"ColumnHeaderComp\",\n legacyMenu: \"ColumnMenu\",\n filter: \"ColumnFilter\",\n filterActive: \"ColumnFilter\",\n filterTab: \"ColumnMenu\",\n filtersToolPanel: \"FiltersToolPanel\",\n columns: [\"MenuCore\"],\n columnsToolPanel: [\"ColumnsToolPanel\"],\n maximize: \"EnterpriseCore\",\n minimize: \"EnterpriseCore\",\n save: \"MenuCore\",\n columnGroupOpened: \"ColumnGroupHeaderComp\",\n columnGroupClosed: \"ColumnGroupHeaderComp\",\n accordionOpen: \"EnterpriseCore\",\n accordionClosed: \"EnterpriseCore\",\n accordionIndeterminate: \"EnterpriseCore\",\n columnSelectClosed: [\"ColumnsToolPanel\", \"ColumnMenu\"],\n columnSelectOpen: [\"ColumnsToolPanel\", \"ColumnMenu\"],\n columnSelectIndeterminate: [\"ColumnsToolPanel\", \"ColumnMenu\"],\n columnMovePin: \"SharedDragAndDrop\",\n columnMoveHide: \"SharedDragAndDrop\",\n columnMoveMove: \"SharedDragAndDrop\",\n columnMoveLeft: \"SharedDragAndDrop\",\n columnMoveRight: \"SharedDragAndDrop\",\n columnMoveGroup: \"SharedDragAndDrop\",\n columnMoveValue: \"SharedDragAndDrop\",\n columnMovePivot: \"SharedDragAndDrop\",\n dropNotAllowed: \"SharedDragAndDrop\",\n groupContracted: \"GroupCellRenderer\",\n groupExpanded: \"GroupCellRenderer\",\n setFilterGroupClosed: \"SetFilter\",\n setFilterGroupOpen: \"SetFilter\",\n setFilterGroupIndeterminate: \"SetFilter\",\n setFilterLoading: \"SetFilter\",\n close: \"EnterpriseCore\",\n check: \"MenuItem\",\n colorPicker: \"CommunityCore\",\n groupLoading: \"LoadingCellRenderer\",\n menuAlt: \"ColumnHeaderComp\",\n menuPin: \"MenuCore\",\n menuValue: \"MenuCore\",\n menuAddRowGroup: [\"MenuCore\", \"ColumnsToolPanel\"],\n menuRemoveRowGroup: [\"MenuCore\", \"ColumnsToolPanel\"],\n clipboardCopy: \"MenuCore\",\n clipboardCut: \"MenuCore\",\n clipboardPaste: \"MenuCore\",\n pivotPanel: [\"ColumnsToolPanel\", \"RowGroupingPanel\"],\n rowGroupPanel: [\"ColumnsToolPanel\", \"RowGroupingPanel\"],\n valuePanel: \"ColumnsToolPanel\",\n columnDrag: \"EnterpriseCore\",\n rowDrag: [\"RowDrag\", \"DragAndDrop\"],\n csvExport: \"MenuCore\",\n excelExport: \"MenuCore\",\n smallDown: \"CommunityCore\",\n selectOpen: \"CommunityCore\",\n richSelectOpen: \"RichSelect\",\n richSelectRemove: \"RichSelect\",\n smallLeft: \"CommunityCore\",\n smallRight: \"CommunityCore\",\n subMenuOpen: \"MenuItem\",\n subMenuOpenRtl: \"MenuItem\",\n panelDelimiter: \"RowGroupingPanel\",\n panelDelimiterRtl: \"RowGroupingPanel\",\n smallUp: \"CommunityCore\",\n sortAscending: [\"MenuCore\", \"Sort\"],\n sortDescending: [\"MenuCore\", \"Sort\"],\n sortUnSort: [\"MenuCore\", \"Sort\"],\n advancedFilterBuilder: \"AdvancedFilter\",\n advancedFilterBuilderDrag: \"AdvancedFilter\",\n advancedFilterBuilderInvalid: \"AdvancedFilter\",\n advancedFilterBuilderMoveUp: \"AdvancedFilter\",\n advancedFilterBuilderMoveDown: \"AdvancedFilter\",\n advancedFilterBuilderAdd: \"AdvancedFilter\",\n advancedFilterBuilderRemove: \"AdvancedFilter\",\n advancedFilterBuilderSelectOpen: \"AdvancedFilter\",\n chartsMenu: \"IntegratedCharts\",\n chartsMenuEdit: \"IntegratedCharts\",\n chartsMenuAdvancedSettings: \"IntegratedCharts\",\n chartsMenuAdd: \"IntegratedCharts\",\n chartsColorPicker: \"IntegratedCharts\",\n chartsThemePrevious: \"IntegratedCharts\",\n chartsThemeNext: \"IntegratedCharts\",\n chartsDownload: \"IntegratedCharts\",\n checkboxChecked: \"CommunityCore\",\n checkboxIndeterminate: \"CommunityCore\",\n checkboxUnchecked: \"CommunityCore\",\n radioButtonOn: \"CommunityCore\",\n radioButtonOff: \"CommunityCore\"\n};\nvar DEPRECATED_ICONS_V33 = /* @__PURE__ */ new Set([\n \"colorPicker\",\n \"smallUp\",\n \"checkboxChecked\",\n \"checkboxIndeterminate\",\n \"checkboxUnchecked\",\n \"radioButtonOn\",\n \"radioButtonOff\",\n \"smallDown\",\n \"smallLeft\",\n \"smallRight\"\n]);\n\n// packages/ag-grid-community/src/validation/rules/menuItemValidations.ts\nvar MENU_ITEM_MODULES = {\n pinSubMenu: \"PinnedColumn\",\n pinLeft: \"PinnedColumn\",\n pinRight: \"PinnedColumn\",\n clearPinned: \"PinnedColumn\",\n valueAggSubMenu: \"SharedAggregation\",\n autoSizeThis: \"ColumnAutoSize\",\n autoSizeAll: \"ColumnAutoSize\",\n rowGroup: \"SharedRowGrouping\",\n rowUnGroup: \"SharedRowGrouping\",\n resetColumns: \"CommunityCore\",\n expandAll: [\"ClientSideRowModelHierarchy\", \"ServerSideRowModel\"],\n contractAll: [\"ClientSideRowModelHierarchy\", \"ServerSideRowModel\"],\n copy: \"Clipboard\",\n copyWithHeaders: \"Clipboard\",\n copyWithGroupHeaders: \"Clipboard\",\n cut: \"Clipboard\",\n paste: \"Clipboard\",\n export: [\"CsvExport\", \"ExcelExport\"],\n csvExport: \"CsvExport\",\n excelExport: \"ExcelExport\",\n separator: \"CommunityCore\",\n pivotChart: \"IntegratedCharts\",\n chartRange: \"IntegratedCharts\",\n columnFilter: \"ColumnFilter\",\n columnChooser: \"ColumnMenu\",\n sortAscending: \"Sort\",\n sortDescending: \"Sort\",\n sortUnSort: \"Sort\"\n};\n\n// packages/ag-grid-community/src/validation/validationService.ts\nvar ValidationService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"validation\";\n }\n wireBeans(beans) {\n this.gridOptions = beans.gridOptions;\n provideValidationServiceLogger(this);\n }\n postConstruct() {\n this.processGridOptions(this.gridOptions);\n }\n warnOnInitialPropertyUpdate(source, key) {\n if (source === \"api\" && INITIAL_GRID_OPTION_KEYS[key]) {\n _warn(22, { key });\n }\n }\n processGridOptions(options) {\n this.processOptions(options, GRID_OPTIONS_VALIDATORS());\n }\n validateApiFunction(functionName, apiFunction) {\n return validateApiFunction(functionName, apiFunction, this.beans);\n }\n missingUserComponent(propertyName, componentName, agGridDefaults, jsComps) {\n const moduleForComponent = USER_COMP_MODULES[componentName];\n if (moduleForComponent) {\n this.gos.assertModuleRegistered(\n moduleForComponent,\n `AG Grid '${propertyName}' component: ${componentName}`\n );\n } else {\n _warn(101, {\n propertyName,\n componentName,\n agGridDefaults,\n jsComps\n });\n }\n }\n checkRowEvents(eventType) {\n if (DEPRECATED_ROW_NODE_EVENTS.has(eventType)) {\n _warn(10, { eventType });\n }\n }\n validateIcon(iconName) {\n if (DEPRECATED_ICONS_V33.has(iconName)) {\n _warn(43, { iconName });\n }\n if (ICON_VALUES[iconName]) {\n return;\n }\n const moduleName = ICON_MODULES[iconName];\n if (moduleName) {\n _error(200, {\n reasonOrId: `icon '${iconName}'`,\n moduleName,\n gridScoped: _areModulesGridScoped(),\n gridId: this.beans.context.getGridId(),\n rowModelType: this.gos.get(\"rowModelType\"),\n additionalText: \"Alternatively, use the CSS icon name directly.\"\n });\n return;\n }\n _warn(134, { iconName });\n }\n validateMenuItem(key) {\n const moduleName = MENU_ITEM_MODULES[key];\n if (moduleName) {\n this.gos.assertModuleRegistered(moduleName, `menu item '${key}'`);\n }\n }\n isProvidedUserComp(compName) {\n return !!USER_COMP_MODULES[compName];\n }\n validateColDef(colDef, colId, skipInferenceCheck) {\n if (skipInferenceCheck || !this.beans.dataTypeSvc?.isColPendingInference(colId)) {\n this.processOptions(colDef, COL_DEF_VALIDATORS());\n }\n }\n processOptions(options, validator) {\n const { validations, deprecations, allProperties, propertyExceptions, objectName, docsUrl } = validator;\n if (allProperties && this.gridOptions.suppressPropertyNamesCheck !== true) {\n this.checkProperties(\n options,\n [...propertyExceptions ?? [], ...Object.keys(deprecations)],\n allProperties,\n objectName,\n docsUrl\n );\n }\n const warnings = /* @__PURE__ */ new Set();\n const getRules = (key) => {\n const rulesOrGetter = validations[key];\n if (!rulesOrGetter) {\n return;\n } else if (typeof rulesOrGetter === \"function\") {\n const fromGetter = rulesOrGetter(options, this.gridOptions, this.beans);\n if (!fromGetter) {\n return;\n }\n if (\"objectName\" in fromGetter) {\n const value = options[key];\n if (Array.isArray(value)) {\n value.forEach((item) => {\n this.processOptions(item, fromGetter);\n });\n return;\n }\n this.processOptions(options[key], fromGetter);\n return;\n }\n return fromGetter;\n } else {\n return rulesOrGetter;\n }\n };\n const optionKeys = Object.keys(options);\n optionKeys.forEach((key) => {\n const deprecation = deprecations[key];\n if (deprecation) {\n const { message, version } = deprecation;\n warnings.add(`As of v${version}, ${String(key)} is deprecated. ${message ?? \"\"}`);\n }\n const value = options[key];\n if (value == null || value === false) {\n return;\n }\n const rules = getRules(key);\n if (!rules) {\n return;\n }\n const { module, dependencies, validate, supportedRowModels, expectedType } = rules;\n if (expectedType) {\n const actualType = typeof value;\n if (actualType !== expectedType) {\n warnings.add(\n `${String(key)} should be of type '${expectedType}' but received '${actualType}' (${value}).`\n );\n return;\n }\n }\n if (supportedRowModels) {\n const rowModel = this.gridOptions.rowModelType ?? \"clientSide\";\n if (!supportedRowModels.includes(rowModel)) {\n warnings.add(\n `${String(key)} is not supported with the '${rowModel}' row model. It is only valid with: ${supportedRowModels.join(\", \")}.`\n );\n return;\n }\n }\n if (module) {\n const modules = Array.isArray(module) ? module : [module];\n let allRegistered = true;\n modules.forEach((m) => {\n if (!this.gos.assertModuleRegistered(m, String(key))) {\n allRegistered = false;\n }\n });\n if (!allRegistered) {\n return;\n }\n }\n if (dependencies) {\n const warning = this.checkForRequiredDependencies(key, dependencies, options);\n if (warning) {\n warnings.add(warning);\n return;\n }\n }\n if (validate) {\n const warning = validate(options, this.gridOptions, this.beans);\n if (warning) {\n warnings.add(warning);\n return;\n }\n }\n });\n if (warnings.size > 0) {\n warnings.forEach((warning) => {\n _warnOnce(warning);\n });\n }\n }\n checkForRequiredDependencies(key, validator, options) {\n const optionEntries = Object.entries(validator);\n const failedOptions = optionEntries.filter(([key2, value]) => {\n const gridOptionValue = options[key2];\n return !value.required.includes(gridOptionValue);\n });\n if (failedOptions.length === 0) {\n return null;\n }\n return failedOptions.map(\n ([failedKey, possibleOptions]) => `'${String(key)}' requires '${failedKey}' to be one of [${possibleOptions.required.map((o) => {\n if (o === null) {\n return \"null\";\n } else if (o === void 0) {\n return \"undefined\";\n }\n return o;\n }).join(\", \")}]. ${possibleOptions.reason ?? \"\"}`\n ).join(\"\\n \");\n }\n checkProperties(object, exceptions, validProperties, containerName, docsUrl) {\n const VUE_FRAMEWORK_PROPS = [\"__ob__\", \"__v_skip\", \"__metadata__\"];\n const invalidProperties = _fuzzyCheckStrings(\n Object.getOwnPropertyNames(object),\n [...VUE_FRAMEWORK_PROPS, ...exceptions, ...validProperties],\n validProperties\n );\n const invalidPropertiesKeys = Object.keys(invalidProperties);\n for (const key of invalidPropertiesKeys) {\n const value = invalidProperties[key];\n let message = `invalid ${containerName} property '${key}' did you mean any of these: ${value.slice(0, 8).join(\", \")}.`;\n if (validProperties.includes(\"context\")) {\n message += `\nIf you are trying to annotate ${containerName} with application data, use the '${containerName}.context' property instead.`;\n }\n _warnOnce(message);\n }\n if (invalidPropertiesKeys.length > 0 && docsUrl) {\n const url = this.beans.frameworkOverrides.getDocLink(docsUrl);\n _warnOnce(`to see all the valid ${containerName} properties please check: ${url}`);\n }\n }\n getConsoleMessage(id, args) {\n return getError(id, args);\n }\n};\nfunction _fuzzyCheckStrings(inputValues, validValues, allSuggestions) {\n const fuzzyMatches = {};\n const invalidInputs = inputValues.filter(\n (inputValue) => !validValues.some((validValue) => validValue === inputValue)\n );\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(\n (invalidInput) => fuzzyMatches[invalidInput] = _fuzzySuggestions({ inputValue: invalidInput, allSuggestions }).values\n );\n }\n return fuzzyMatches;\n}\nvar DEPRECATED_ROW_NODE_EVENTS = /* @__PURE__ */ new Set([\n \"firstChildChanged\",\n \"lastChildChanged\",\n \"childIndexChanged\"\n]);\n\n// packages/ag-grid-community/src/validation/validationModule.ts\nvar ValidationModule = {\n moduleName: \"Validation\",\n version: VERSION,\n beans: [ValidationService]\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/filterStage.ts\nfunction updateRowNodeAfterFilter(rowNode) {\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;\n }\n}\nvar FilterStage = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"filterStage\";\n this.refreshProps = /* @__PURE__ */ new Set([\"excludeChildrenWhenTreeDataFiltering\"]);\n this.step = \"filter\";\n }\n wireBeans(beans) {\n this.filterManager = beans.filterManager;\n }\n execute(params) {\n const { changedPath } = params;\n this.filter(changedPath);\n }\n filter(changedPath) {\n const filterActive = !!this.filterManager?.isChildFilterPresent();\n this.filterNodes(filterActive, changedPath);\n }\n filterNodes(filterActive, changedPath) {\n const filterCallback = (rowNode, includeChildNodes) => {\n if (rowNode.hasChildren()) {\n if (filterActive && !includeChildNodes) {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter((childNode) => {\n const passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n const passBecauseDataPasses = childNode.data && this.filterManager.doesRowPassFilter({ rowNode: childNode });\n return passBecauseChildren || passBecauseDataPasses;\n });\n } else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n } else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n updateRowNodeAfterFilter(rowNode);\n };\n if (this.doingTreeDataFiltering()) {\n const treeDataDepthFirstFilter = (rowNode, alreadyFoundInParent) => {\n if (rowNode.childrenAfterGroup) {\n for (let i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n const childNode = rowNode.childrenAfterGroup[i];\n const foundInParent = alreadyFoundInParent || this.filterManager.doesRowPassFilter({ rowNode: childNode });\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter(rowNode.childrenAfterGroup[i], foundInParent);\n } else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n const treeDataFilterCallback = (rowNode) => treeDataDepthFirstFilter(rowNode, false);\n changedPath.executeFromRootNode(treeDataFilterCallback);\n } else {\n const defaultFilterCallback = (rowNode) => filterCallback(rowNode, false);\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n }\n doingTreeDataFiltering() {\n return this.gos.get(\"treeData\") && !this.gos.get(\"excludeChildrenWhenTreeDataFiltering\");\n }\n};\n\n// packages/ag-grid-community/src/headerRendering/cells/floatingFilter/headerFilterCellCtrl.ts\nvar HeaderFilterCellCtrl = class extends AbstractHeaderCellCtrl {\n constructor() {\n super(...arguments);\n this.iconCreated = false;\n }\n setComp(comp, eGui, eButtonShowMainFilter, eFloatingFilterBody, compBeanInput) {\n this.comp = comp;\n const compBean = setupCompBean(this, this.beans.context, compBeanInput);\n this.eButtonShowMainFilter = eButtonShowMainFilter;\n this.eFloatingFilterBody = eFloatingFilterBody;\n this.setGui(eGui, compBean);\n this.setupActive();\n this.refreshHeaderStyles();\n this.setupWidth(compBean);\n this.setupLeft(compBean);\n this.setupHover(compBean);\n this.setupFocus(compBean);\n this.setupAria();\n this.setupFilterButton();\n this.setupUserComp();\n this.setupSyncWithFilter(compBean);\n this.setupUi();\n compBean.addManagedElementListeners(this.eButtonShowMainFilter, { click: this.showParentFilter.bind(this) });\n this.setupFilterChangedListener(compBean);\n compBean.addManagedListeners(this.column, { colDefChanged: () => this.onColDefChanged(compBean) });\n compBean.addDestroyFunc(() => {\n this.eButtonShowMainFilter = null;\n this.eFloatingFilterBody = null;\n this.userCompDetails = null;\n this.clearComponent();\n });\n }\n // empty abstract method\n resizeHeader() {\n }\n moveHeader() {\n }\n getHeaderClassParams() {\n const { column, beans } = this;\n const colDef = column.colDef;\n return _addGridCommonParams(beans.gos, {\n colDef,\n column,\n floatingFilter: true\n });\n }\n setupActive() {\n const colDef = this.column.getColDef();\n const filterExists = !!colDef.filter;\n const floatingFilterExists = !!colDef.floatingFilter;\n this.active = filterExists && floatingFilterExists;\n }\n setupUi() {\n this.comp.setButtonWrapperDisplayed(!this.suppressFilterButton && this.active);\n this.comp.addOrRemoveBodyCssClass(\"ag-floating-filter-full-body\", this.suppressFilterButton);\n this.comp.addOrRemoveBodyCssClass(\"ag-floating-filter-body\", !this.suppressFilterButton);\n if (!this.active || this.iconCreated) {\n return;\n }\n const eMenuIcon = _createIconNoSpan(\"filter\", this.beans, this.column);\n if (eMenuIcon) {\n this.iconCreated = true;\n this.eButtonShowMainFilter.appendChild(eMenuIcon);\n }\n }\n setupFocus(compBean) {\n compBean.createManagedBean(\n new ManagedFocusFeature(this.eGui, {\n shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n })\n );\n }\n setupAria() {\n const localeTextFunc = this.getLocaleTextFunc();\n _setAriaLabel(this.eButtonShowMainFilter, localeTextFunc(\"ariaFilterMenuOpen\", \"Open Filter Menu\"));\n }\n onTabKeyDown(e) {\n const { beans } = this;\n const activeEl = _getActiveDomElement(beans);\n const wrapperHasFocus = activeEl === this.eGui;\n if (wrapperHasFocus) {\n return;\n }\n const nextFocusableEl = _findNextFocusableElement(beans, this.eGui, null, e.shiftKey);\n if (nextFocusableEl) {\n beans.headerNavigation?.scrollToColumn(this.column);\n e.preventDefault();\n nextFocusableEl.focus();\n return;\n }\n const nextFocusableColumn = this.findNextColumnWithFloatingFilter(e.shiftKey);\n if (!nextFocusableColumn) {\n return;\n }\n if (beans.focusSvc.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: this.rowCtrl.rowIndex,\n column: nextFocusableColumn\n },\n event: e\n })) {\n e.preventDefault();\n }\n }\n findNextColumnWithFloatingFilter(backwards) {\n const presentedColsService = this.beans.visibleCols;\n let nextCol = this.column;\n do {\n nextCol = backwards ? presentedColsService.getColBefore(nextCol) : presentedColsService.getColAfter(nextCol);\n if (!nextCol) {\n break;\n }\n } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);\n return nextCol;\n }\n handleKeyDown(e) {\n super.handleKeyDown(e);\n const wrapperHasFocus = this.getWrapperHasFocus();\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (!wrapperHasFocus) {\n e.preventDefault();\n }\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n if (wrapperHasFocus) {\n return;\n }\n e.stopPropagation();\n case KeyCode.ENTER:\n if (wrapperHasFocus) {\n if (_focusInto(this.eGui)) {\n e.preventDefault();\n }\n }\n break;\n case KeyCode.ESCAPE:\n if (!wrapperHasFocus) {\n this.eGui.focus();\n }\n }\n }\n onFocusIn(e) {\n const isRelatedWithin = this.eGui.contains(e.relatedTarget);\n if (isRelatedWithin) {\n return;\n }\n const notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains(\"ag-floating-filter\");\n const fromWithinHeader = !!e.relatedTarget && _isElementChildOfClass(e.relatedTarget, \"ag-floating-filter\");\n if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {\n const lastFocusEvent = this.lastFocusEvent;\n const fromTab = !!(lastFocusEvent && lastFocusEvent.key === KeyCode.TAB);\n if (lastFocusEvent && fromTab) {\n const shouldFocusLast = lastFocusEvent.shiftKey;\n _focusInto(this.eGui, shouldFocusLast);\n }\n }\n this.focusThis();\n }\n setupHover(compBean) {\n this.beans.colHover?.addHeaderFilterColumnHoverListener(compBean, this.comp, this.column, this.eGui);\n }\n setupLeft(compBean) {\n const setLeftFeature = new SetLeftFeature(this.column, this.eGui, this.beans);\n compBean.createManagedBean(setLeftFeature);\n }\n setupFilterButton() {\n this.suppressFilterButton = !this.beans.menuSvc?.isFloatingFilterButtonEnabled(this.column);\n this.highlightFilterButtonWhenActive = !_isLegacyMenuEnabled(this.gos);\n }\n setupUserComp() {\n if (!this.active) {\n return;\n }\n const compDetails = this.beans.filterManager?.getFloatingFilterCompDetails(\n this.column,\n () => this.showParentFilter()\n );\n if (compDetails) {\n this.setCompDetails(compDetails);\n }\n }\n setCompDetails(compDetails) {\n this.userCompDetails = compDetails;\n this.comp.setCompDetails(compDetails);\n }\n showParentFilter() {\n const eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;\n this.beans.menuSvc?.showFilterMenu({\n column: this.column,\n buttonElement: eventSource,\n containerType: \"floatingFilter\",\n positionBy: \"button\"\n });\n }\n setupSyncWithFilter(compBean) {\n if (!this.active) {\n return;\n }\n const { filterManager } = this.beans;\n const syncWithFilter = (event) => {\n if (event?.source === \"filterDestroyed\" && !this.isAlive()) {\n return;\n }\n const compPromise = this.comp.getFloatingFilterComp();\n if (!compPromise) {\n return;\n }\n compPromise.then((comp) => {\n if (comp) {\n const parentModel = filterManager?.getCurrentFloatingFilterParentModel(this.column);\n const filterChangedEvent = event ? {\n // event can have additional params like `afterDataChange` which need to be passed through\n ...event,\n columns: event.columns ?? [],\n source: event.source === \"api\" ? \"api\" : \"columnFilter\"\n } : null;\n comp.onParentModelChanged(parentModel, filterChangedEvent);\n }\n });\n };\n [this.destroySyncListener] = compBean.addManagedListeners(this.column, { filterChanged: syncWithFilter });\n if (filterManager?.isFilterActive(this.column)) {\n syncWithFilter(null);\n }\n }\n setupWidth(compBean) {\n const listener = () => {\n const width = `${this.column.getActualWidth()}px`;\n this.comp.setWidth(width);\n };\n compBean.addManagedListeners(this.column, { widthChanged: listener });\n listener();\n }\n setupFilterChangedListener(compBean) {\n if (this.active) {\n [this.destroyFilterChangedListener] = compBean.addManagedListeners(this.column, {\n filterChanged: this.updateFilterButton.bind(this)\n });\n this.updateFilterButton();\n }\n }\n updateFilterButton() {\n if (!this.suppressFilterButton && this.comp) {\n const isFilterAllowed = !!this.beans.filterManager?.isFilterAllowed(this.column);\n this.comp.setButtonWrapperDisplayed(isFilterAllowed);\n if (this.highlightFilterButtonWhenActive && isFilterAllowed) {\n this.eButtonShowMainFilter.classList.toggle(\"ag-filter-active\", this.column.isFilterActive());\n }\n }\n }\n onColDefChanged(compBean) {\n const wasActive = this.active;\n this.setupActive();\n const becomeActive = !wasActive && this.active;\n if (wasActive && !this.active) {\n this.destroySyncListener();\n this.destroyFilterChangedListener();\n }\n const newCompDetails = this.active ? this.beans.filterManager?.getFloatingFilterCompDetails(this.column, () => this.showParentFilter()) : null;\n const compPromise = this.comp.getFloatingFilterComp();\n if (!compPromise || !newCompDetails) {\n this.updateCompDetails(compBean, newCompDetails, becomeActive);\n } else {\n compPromise.then((compInstance) => {\n if (!compInstance || this.beans.filterManager?.areFilterCompsDifferent(this.userCompDetails ?? null, newCompDetails)) {\n this.updateCompDetails(compBean, newCompDetails, becomeActive);\n } else {\n this.updateFloatingFilterParams(newCompDetails);\n }\n });\n }\n }\n updateCompDetails(compBean, compDetails, becomeActive) {\n if (!this.isAlive()) {\n return;\n }\n this.setCompDetails(compDetails);\n this.setupFilterButton();\n this.setupUi();\n if (becomeActive) {\n this.setupSyncWithFilter(compBean);\n this.setupFilterChangedListener(compBean);\n }\n }\n updateFloatingFilterParams(userCompDetails) {\n if (!userCompDetails) {\n return;\n }\n const params = userCompDetails.params;\n this.comp.getFloatingFilterComp()?.then((floatingFilter) => {\n if (floatingFilter?.refresh && typeof floatingFilter.refresh === \"function\") {\n floatingFilter.refresh(params);\n }\n });\n }\n addResizeAndMoveKeyboardListeners() {\n }\n destroy() {\n super.destroy();\n this.destroySyncListener = null;\n this.destroyFilterChangedListener = null;\n }\n};\n\n// packages/ag-grid-community/src/misc/menu/menuApi.ts\nfunction showColumnMenu(beans, colKey) {\n const column = beans.colModel.getCol(colKey);\n if (!column) {\n _error(12, { colKey });\n return;\n }\n beans.menuSvc?.showColumnMenu({\n column,\n positionBy: \"auto\"\n });\n}\nfunction hidePopupMenu(beans) {\n beans.menuSvc?.hidePopupMenu();\n}\n\n// packages/ag-grid-community/src/misc/menu/sharedMenuModule.ts\nvar SharedMenuModule = {\n moduleName: \"SharedMenu\",\n version: VERSION,\n beans: [MenuService],\n apiFunctions: {\n showColumnMenu,\n hidePopupMenu\n }\n};\n\n// packages/ag-grid-community/src/widgets/popupService.ts\nvar instanceIdSeq = 0;\nvar WAIT_FOR_POPUP_CONTENT_RESIZE = 200;\nvar PopupService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"popupSvc\";\n this.popupList = [];\n }\n postConstruct() {\n this.beans.ctrlsSvc.whenReady(this, (p) => {\n this.gridCtrl = p.gridCtrl;\n });\n this.addManagedEventListeners({ gridStylesChanged: this.handleThemeChange.bind(this) });\n }\n getPopupParent() {\n const ePopupParent = this.gos.get(\"popupParent\");\n if (ePopupParent) {\n return ePopupParent;\n }\n return this.gridCtrl.getGui();\n }\n positionPopupForMenu(params) {\n const { eventSource, ePopup, column, node, event } = params;\n const sourceRect = eventSource.getBoundingClientRect();\n const parentRect = this.getParentRect();\n this.setAlignedTo(eventSource, ePopup);\n let minWidthSet = false;\n const updatePosition = () => {\n const y = this.keepXYWithinBounds(ePopup, sourceRect.top - parentRect.top, 0 /* vertical */);\n const minWidth = ePopup.clientWidth > 0 ? ePopup.clientWidth : 200;\n if (!minWidthSet) {\n ePopup.style.minWidth = `${minWidth}px`;\n minWidthSet = true;\n }\n const widthOfParent = parentRect.right - parentRect.left;\n const maxX = widthOfParent - minWidth;\n let x;\n if (this.gos.get(\"enableRtl\")) {\n x = xLeftPosition();\n if (x < 0) {\n x = xRightPosition();\n this.setAlignedStyles(ePopup, \"left\");\n }\n if (x > maxX) {\n x = 0;\n this.setAlignedStyles(ePopup, \"right\");\n }\n } else {\n x = xRightPosition();\n if (x > maxX) {\n x = xLeftPosition();\n this.setAlignedStyles(ePopup, \"right\");\n }\n if (x < 0) {\n x = 0;\n this.setAlignedStyles(ePopup, \"left\");\n }\n }\n return { x, y };\n function xRightPosition() {\n return sourceRect.right - parentRect.left - 2;\n }\n function xLeftPosition() {\n return sourceRect.left - parentRect.left - minWidth;\n }\n };\n this.positionPopup({\n ePopup,\n keepWithinBounds: true,\n updatePosition,\n postProcessCallback: () => this.callPostProcessPopup(\n \"subMenu\",\n ePopup,\n eventSource,\n event instanceof MouseEvent ? event : void 0,\n column,\n node\n )\n });\n }\n positionPopupUnderMouseEvent(params) {\n const { ePopup, nudgeX, nudgeY, skipObserver } = params;\n this.positionPopup({\n ePopup,\n nudgeX,\n nudgeY,\n keepWithinBounds: true,\n skipObserver,\n updatePosition: () => this.calculatePointerAlign(params.mouseEvent),\n postProcessCallback: () => this.callPostProcessPopup(\n params.type,\n params.ePopup,\n null,\n params.mouseEvent,\n params.column,\n params.rowNode\n )\n });\n }\n calculatePointerAlign(e) {\n const parentRect = this.getParentRect();\n return {\n x: e.clientX - parentRect.left,\n y: e.clientY - parentRect.top\n };\n }\n positionPopupByComponent(params) {\n const {\n ePopup,\n nudgeX,\n nudgeY,\n keepWithinBounds,\n eventSource,\n alignSide = \"left\",\n position = \"over\",\n column,\n rowNode,\n type\n } = params;\n const sourceRect = eventSource.getBoundingClientRect();\n const parentRect = this.getParentRect();\n this.setAlignedTo(eventSource, ePopup);\n const updatePosition = () => {\n let x = sourceRect.left - parentRect.left;\n if (alignSide === \"right\") {\n x -= ePopup.offsetWidth - sourceRect.width;\n }\n let y;\n if (position === \"over\") {\n y = sourceRect.top - parentRect.top;\n this.setAlignedStyles(ePopup, \"over\");\n } else {\n this.setAlignedStyles(ePopup, \"under\");\n const alignSide2 = this.shouldRenderUnderOrAbove(ePopup, sourceRect, parentRect, params.nudgeY || 0);\n if (alignSide2 === \"under\") {\n y = sourceRect.top - parentRect.top + sourceRect.height;\n } else {\n y = sourceRect.top - ePopup.offsetHeight - (nudgeY || 0) * 2 - parentRect.top;\n }\n }\n return { x, y };\n };\n this.positionPopup({\n ePopup,\n nudgeX,\n nudgeY,\n keepWithinBounds,\n updatePosition,\n postProcessCallback: () => this.callPostProcessPopup(type, ePopup, eventSource, null, column, rowNode)\n });\n }\n shouldRenderUnderOrAbove(ePopup, targetCompRect, parentRect, nudgeY) {\n const spaceAvailableUnder = parentRect.bottom - targetCompRect.bottom;\n const spaceAvailableAbove = targetCompRect.top - parentRect.top;\n const spaceRequired = ePopup.offsetHeight + nudgeY;\n if (spaceAvailableUnder > spaceRequired) {\n return \"under\";\n }\n if (spaceAvailableAbove > spaceRequired || spaceAvailableAbove > spaceAvailableUnder) {\n return \"above\";\n }\n return \"under\";\n }\n setAlignedStyles(ePopup, positioned) {\n const popupIdx = this.getPopupIndex(ePopup);\n if (popupIdx === -1) {\n return;\n }\n const popup = this.popupList[popupIdx];\n const { alignedToElement } = popup;\n if (!alignedToElement) {\n return;\n }\n const positions = [\"right\", \"left\", \"over\", \"above\", \"under\"];\n positions.forEach((position) => {\n alignedToElement.classList.remove(`ag-has-popup-positioned-${position}`);\n ePopup.classList.remove(`ag-popup-positioned-${position}`);\n });\n if (!positioned) {\n return;\n }\n alignedToElement.classList.add(`ag-has-popup-positioned-${positioned}`);\n ePopup.classList.add(`ag-popup-positioned-${positioned}`);\n }\n setAlignedTo(eventSource, ePopup) {\n const popupIdx = this.getPopupIndex(ePopup);\n if (popupIdx !== -1) {\n const popup = this.popupList[popupIdx];\n popup.alignedToElement = eventSource;\n }\n }\n callPostProcessPopup(type, ePopup, eventSource, mouseEvent, column, rowNode) {\n const callback = this.gos.getCallback(\"postProcessPopup\");\n if (callback) {\n const params = {\n column,\n rowNode,\n ePopup,\n type,\n eventSource,\n mouseEvent\n };\n callback(params);\n }\n }\n positionPopup(params) {\n const { ePopup, keepWithinBounds, nudgeX, nudgeY, skipObserver, updatePosition } = params;\n const lastSize = { width: 0, height: 0 };\n const updatePopupPosition = (fromResizeObserver = false) => {\n let { x, y } = updatePosition();\n if (fromResizeObserver && ePopup.clientWidth === lastSize.width && ePopup.clientHeight === lastSize.height) {\n return;\n }\n lastSize.width = ePopup.clientWidth;\n lastSize.height = ePopup.clientHeight;\n if (nudgeX) {\n x += nudgeX;\n }\n if (nudgeY) {\n y += nudgeY;\n }\n if (keepWithinBounds) {\n x = this.keepXYWithinBounds(ePopup, x, 1 /* horizontal */);\n y = this.keepXYWithinBounds(ePopup, y, 0 /* vertical */);\n }\n ePopup.style.left = `${x}px`;\n ePopup.style.top = `${y}px`;\n if (params.postProcessCallback) {\n params.postProcessCallback();\n }\n };\n updatePopupPosition();\n if (!skipObserver) {\n const resizeObserverDestroyFunc = _observeResize(this.beans, ePopup, () => updatePopupPosition(true));\n setTimeout(() => resizeObserverDestroyFunc(), WAIT_FOR_POPUP_CONTENT_RESIZE);\n }\n }\n getActivePopups() {\n return this.popupList.map((popup) => popup.element);\n }\n getParentRect() {\n const eDocument = _getDocument(this.beans);\n let popupParent = this.getPopupParent();\n if (popupParent === eDocument.body) {\n popupParent = eDocument.documentElement;\n } else if (getComputedStyle(popupParent).position === \"static\") {\n popupParent = popupParent.offsetParent;\n }\n return _getElementRectWithOffset(popupParent);\n }\n keepXYWithinBounds(ePopup, position, direction) {\n const isVertical = direction === 0 /* vertical */;\n const sizeProperty = isVertical ? \"clientHeight\" : \"clientWidth\";\n const anchorProperty = isVertical ? \"top\" : \"left\";\n const offsetProperty = isVertical ? \"height\" : \"width\";\n const scrollPositionProperty = isVertical ? \"scrollTop\" : \"scrollLeft\";\n const eDocument = _getDocument(this.beans);\n const docElement = eDocument.documentElement;\n const popupParent = this.getPopupParent();\n const popupRect = ePopup.getBoundingClientRect();\n const parentRect = popupParent.getBoundingClientRect();\n const documentRect = eDocument.documentElement.getBoundingClientRect();\n const isBody = popupParent === eDocument.body;\n const offsetSize = Math.ceil(popupRect[offsetProperty]);\n const getSize2 = isVertical ? _getAbsoluteHeight : _getAbsoluteWidth;\n let sizeOfParent = isBody ? getSize2(docElement) + docElement[scrollPositionProperty] : popupParent[sizeProperty];\n if (isBody) {\n sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);\n }\n const max = sizeOfParent - offsetSize;\n return Math.min(Math.max(position, 0), Math.abs(max));\n }\n addPopup(params) {\n const eDocument = _getDocument(this.beans);\n const { eChild, ariaLabel, alwaysOnTop, positionCallback, anchorToElement } = params;\n if (!eDocument) {\n _warn(122);\n return { hideFunc: () => {\n } };\n }\n const pos = this.getPopupIndex(eChild);\n if (pos !== -1) {\n const popup = this.popupList[pos];\n return { hideFunc: popup.hideFunc };\n }\n this.initialisePopupPosition(eChild);\n const wrapperEl = this.createPopupWrapper(eChild, ariaLabel, !!alwaysOnTop);\n const removeListeners = this.addEventListenersToPopup({ ...params, wrapperEl });\n if (positionCallback) {\n positionCallback();\n }\n this.addPopupToPopupList(eChild, wrapperEl, removeListeners, anchorToElement);\n return {\n hideFunc: removeListeners\n };\n }\n initialisePopupPosition(element) {\n const ePopupParent = this.getPopupParent();\n const ePopupParentRect = ePopupParent.getBoundingClientRect();\n if (!_exists(element.style.top)) {\n element.style.top = `${ePopupParentRect.top * -1}px`;\n }\n if (!_exists(element.style.left)) {\n element.style.left = `${ePopupParentRect.left * -1}px`;\n }\n }\n createPopupWrapper(element, ariaLabel, alwaysOnTop) {\n const ePopupParent = this.getPopupParent();\n const { environment, gos } = this.beans;\n const eWrapper = _createElement({ tag: \"div\" });\n environment.applyThemeClasses(eWrapper);\n eWrapper.classList.add(\"ag-popup\");\n element.classList.add(gos.get(\"enableRtl\") ? \"ag-rtl\" : \"ag-ltr\", \"ag-popup-child\");\n if (!element.hasAttribute(\"role\")) {\n _setAriaRole(element, \"dialog\");\n }\n _setAriaLabel(element, ariaLabel);\n eWrapper.appendChild(element);\n ePopupParent.appendChild(eWrapper);\n if (alwaysOnTop) {\n this.setAlwaysOnTop(element, true);\n } else {\n this.bringPopupToFront(element);\n }\n return eWrapper;\n }\n handleThemeChange(e) {\n if (e.themeChanged) {\n const environment = this.beans.environment;\n for (const popup of this.popupList) {\n environment.applyThemeClasses(popup.wrapper);\n }\n }\n }\n addEventListenersToPopup(params) {\n const beans = this.beans;\n const eDocument = _getDocument(beans);\n const ePopupParent = this.getPopupParent();\n const { wrapperEl, eChild: popupEl, closedCallback, afterGuiAttached, closeOnEsc, modal } = params;\n let popupHidden = false;\n const hidePopupOnKeyboardEvent = (event) => {\n if (!wrapperEl.contains(_getActiveDomElement(beans))) {\n return;\n }\n const key = event.key;\n if (key === KeyCode.ESCAPE && !_isStopPropagationForAgGrid(event)) {\n removeListeners({ keyboardEvent: event });\n }\n };\n const hidePopupOnMouseEvent = (event) => removeListeners({ mouseEvent: event });\n const hidePopupOnTouchEvent = (event) => removeListeners({ touchEvent: event });\n const removeListeners = (popupParams = {}) => {\n const { mouseEvent, touchEvent, keyboardEvent, forceHide } = popupParams;\n if (!forceHide && // we don't hide popup if the event was on the child, or any\n // children of this child\n (this.isEventFromCurrentPopup({ mouseEvent, touchEvent }, popupEl) || // this method should only be called once. the client can have different\n // paths, each one wanting to close, so this method may be called multiple times.\n popupHidden)) {\n return;\n }\n popupHidden = true;\n ePopupParent.removeChild(wrapperEl);\n eDocument.removeEventListener(\"keydown\", hidePopupOnKeyboardEvent);\n eDocument.removeEventListener(\"mousedown\", hidePopupOnMouseEvent);\n eDocument.removeEventListener(\"touchstart\", hidePopupOnTouchEvent);\n eDocument.removeEventListener(\"contextmenu\", hidePopupOnMouseEvent);\n this.eventSvc.removeEventListener(\"dragStarted\", hidePopupOnMouseEvent);\n if (closedCallback) {\n closedCallback(mouseEvent || touchEvent || keyboardEvent);\n }\n this.removePopupFromPopupList(popupEl);\n };\n if (afterGuiAttached) {\n afterGuiAttached({ hidePopup: removeListeners });\n }\n window.setTimeout(() => {\n if (closeOnEsc) {\n eDocument.addEventListener(\"keydown\", hidePopupOnKeyboardEvent);\n }\n if (modal) {\n eDocument.addEventListener(\"mousedown\", hidePopupOnMouseEvent);\n this.eventSvc.addEventListener(\"dragStarted\", hidePopupOnMouseEvent);\n eDocument.addEventListener(\"touchstart\", hidePopupOnTouchEvent);\n eDocument.addEventListener(\"contextmenu\", hidePopupOnMouseEvent);\n }\n }, 0);\n return removeListeners;\n }\n addPopupToPopupList(element, wrapperEl, removeListeners, anchorToElement) {\n this.popupList.push({\n element,\n wrapper: wrapperEl,\n hideFunc: removeListeners,\n instanceId: instanceIdSeq++,\n isAnchored: !!anchorToElement\n });\n if (anchorToElement) {\n this.setPopupPositionRelatedToElement(element, anchorToElement);\n }\n }\n getPopupIndex(el) {\n return this.popupList.findIndex((p) => p.element === el);\n }\n setPopupPositionRelatedToElement(popupEl, relativeElement) {\n const popupIndex = this.getPopupIndex(popupEl);\n if (popupIndex === -1) {\n return;\n }\n const popup = this.popupList[popupIndex];\n if (popup.stopAnchoringPromise) {\n popup.stopAnchoringPromise.then((destroyFunc) => destroyFunc && destroyFunc());\n }\n popup.stopAnchoringPromise = void 0;\n popup.isAnchored = false;\n if (!relativeElement) {\n return;\n }\n const destroyPositionTracker = this.keepPopupPositionedRelativeTo({\n element: relativeElement,\n ePopup: popupEl,\n hidePopup: popup.hideFunc\n });\n popup.stopAnchoringPromise = destroyPositionTracker;\n popup.isAnchored = true;\n return destroyPositionTracker;\n }\n removePopupFromPopupList(element) {\n this.setAlignedStyles(element, null);\n this.setPopupPositionRelatedToElement(element, null);\n this.popupList = this.popupList.filter((p) => p.element !== element);\n }\n keepPopupPositionedRelativeTo(params) {\n const eParent = this.getPopupParent();\n const parentRect = eParent.getBoundingClientRect();\n const { element, ePopup } = params;\n const sourceRect = element.getBoundingClientRect();\n const extractFromPixelValue = (pxSize) => parseInt(pxSize.substring(0, pxSize.length - 1), 10);\n const createPosition = (prop, direction) => {\n const initialDiff = parentRect[prop] - sourceRect[prop];\n const initial = extractFromPixelValue(ePopup.style[prop]);\n return {\n initialDiff,\n lastDiff: initialDiff,\n initial,\n last: initial,\n direction\n };\n };\n const topPosition = createPosition(\"top\", 0 /* vertical */);\n const leftPosition = createPosition(\"left\", 1 /* horizontal */);\n const fwOverrides = this.beans.frameworkOverrides;\n return new AgPromise((resolve) => {\n fwOverrides.wrapIncoming(() => {\n fwOverrides.setInterval(() => {\n const pRect = eParent.getBoundingClientRect();\n const sRect = element.getBoundingClientRect();\n const elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;\n if (elementNotInDom) {\n params.hidePopup();\n return;\n }\n const calculateNewPosition = (position, prop) => {\n const current = extractFromPixelValue(ePopup.style[prop]);\n if (position.last !== current) {\n position.initial = current;\n position.last = current;\n }\n const currentDiff = pRect[prop] - sRect[prop];\n if (currentDiff != position.lastDiff) {\n const newValue = this.keepXYWithinBounds(\n ePopup,\n position.initial + position.initialDiff - currentDiff,\n position.direction\n );\n ePopup.style[prop] = `${newValue}px`;\n position.last = newValue;\n }\n position.lastDiff = currentDiff;\n };\n calculateNewPosition(topPosition, \"top\");\n calculateNewPosition(leftPosition, \"left\");\n }, 200).then((intervalId) => {\n const result = () => {\n if (intervalId != null) {\n window.clearInterval(intervalId);\n }\n };\n resolve(result);\n });\n }, \"popupPositioning\");\n });\n }\n hasAnchoredPopup() {\n return this.popupList.some((popup) => popup.isAnchored);\n }\n isEventFromCurrentPopup(params, target) {\n const { mouseEvent, touchEvent } = params;\n const event = mouseEvent ? mouseEvent : touchEvent;\n if (!event) {\n return false;\n }\n const indexOfThisChild = this.getPopupIndex(target);\n if (indexOfThisChild === -1) {\n return false;\n }\n for (let i = indexOfThisChild; i < this.popupList.length; i++) {\n const popup = this.popupList[i];\n if (_isElementInEventPath(popup.element, event)) {\n return true;\n }\n }\n return this.isElementWithinCustomPopup(event.target);\n }\n isElementWithinCustomPopup(el) {\n const eDocument = _getDocument(this.beans);\n while (el && el !== eDocument.body) {\n if (el.classList.contains(\"ag-custom-component-popup\") || el.parentElement === null) {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n }\n getWrapper(ePopup) {\n while (!ePopup.classList.contains(\"ag-popup\") && ePopup.parentElement) {\n ePopup = ePopup.parentElement;\n }\n return ePopup.classList.contains(\"ag-popup\") ? ePopup : null;\n }\n setAlwaysOnTop(ePopup, alwaysOnTop) {\n const eWrapper = this.getWrapper(ePopup);\n if (!eWrapper) {\n return;\n }\n eWrapper.classList.toggle(\"ag-always-on-top\", !!alwaysOnTop);\n if (alwaysOnTop) {\n this.bringPopupToFront(eWrapper);\n }\n }\n /** @return true if moved */\n bringPopupToFront(ePopup) {\n const parent = this.getPopupParent();\n const popupList = Array.prototype.slice.call(parent.querySelectorAll(\".ag-popup\"));\n const popupLen = popupList.length;\n const eWrapper = this.getWrapper(ePopup);\n if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n return;\n }\n const standardPopupList = [];\n const alwaysOnTopList = [];\n for (const popup of popupList) {\n if (popup === eWrapper) {\n continue;\n }\n if (popup.classList.contains(\"ag-always-on-top\")) {\n alwaysOnTopList.push(popup);\n } else {\n standardPopupList.push(popup);\n }\n }\n const innerElsScrollMap = [];\n const onTopLength = alwaysOnTopList.length;\n const isPopupAlwaysOnTop = eWrapper.classList.contains(\"ag-always-on-top\");\n const shouldBeLast = isPopupAlwaysOnTop || !onTopLength;\n const targetList = shouldBeLast ? [...standardPopupList, ...alwaysOnTopList, eWrapper] : [...standardPopupList, eWrapper, ...alwaysOnTopList];\n for (let i = 0; i <= popupLen; i++) {\n const currentPopup = targetList[i];\n if (popupList[i] === targetList[i] || currentPopup === eWrapper) {\n continue;\n }\n const innerEls = currentPopup.querySelectorAll(\"div\");\n innerEls.forEach((el) => {\n if (el.scrollTop !== 0) {\n innerElsScrollMap.push([el, el.scrollTop]);\n }\n });\n if (i === 0) {\n parent.insertAdjacentElement(\"afterbegin\", currentPopup);\n } else {\n targetList[i - 1].insertAdjacentElement(\"afterend\", currentPopup);\n }\n }\n while (innerElsScrollMap.length) {\n const currentEl = innerElsScrollMap.pop();\n currentEl[0].scrollTop = currentEl[1];\n }\n }\n};\n\n// packages/ag-grid-community/src/widgets/popupModule.ts\nvar PopupModule = {\n moduleName: \"Popup\",\n version: VERSION,\n beans: [PopupService]\n};\n\n// packages/ag-grid-community/src/filter/column-filters.css-GENERATED.ts\nvar columnFiltersCSS = (\n /*css*/\n `.ag-set-filter{--ag-indentation-level:0}.ag-set-filter-item{align-items:center;display:flex;height:100%}:where(.ag-ltr) .ag-set-filter-item{padding-left:calc(var(--ag-widget-container-horizontal-padding) + var(--ag-indentation-level)*var(--ag-set-filter-indent-size))}:where(.ag-rtl) .ag-set-filter-item{padding-right:calc(var(--ag-widget-container-horizontal-padding) + var(--ag-indentation-level)*var(--ag-set-filter-indent-size))}.ag-set-filter-item-checkbox{display:flex;height:100%;width:100%}.ag-set-filter-group-icons{display:block;>*{cursor:pointer}}:where(.ag-ltr) .ag-set-filter-group-icons{margin-right:var(--ag-widget-container-horizontal-padding)}:where(.ag-rtl) .ag-set-filter-group-icons{margin-left:var(--ag-widget-container-horizontal-padding)}.ag-filter-body-wrapper{display:flex;flex-direction:column}:where(.ag-menu:not(.ag-tabs) .ag-filter) .ag-filter-body-wrapper,:where(.ag-menu:not(.ag-tabs) .ag-filter)>:not(.ag-filter-wrapper){min-width:180px}.ag-filter-filter{flex:1 1 0px}.ag-filter-condition{display:flex;justify-content:center}.ag-floating-filter-body{display:flex;flex:1 1 auto;height:100%;position:relative}.ag-floating-filter-full-body{align-items:center;display:flex;flex:1 1 auto;height:100%;overflow:hidden;width:100%}:where(.ag-floating-filter-full-body)>div{flex:1 1 auto}.ag-floating-filter-input{align-items:center;display:flex;width:100%;>*{flex:1 1 auto}:where(.ag-input-field-input[type=date]){width:1px}}.ag-floating-filter-button{display:flex;flex:none}.ag-date-floating-filter-wrapper{display:flex}.ag-set-floating-filter-input [disabled]{pointer-events:none}.ag-floating-filter-button-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;height:var(--ag-icon-size);width:var(--ag-icon-size)}.ag-filter-loading{align-items:unset;background-color:var(--ag-chrome-background-color);height:100%;padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);position:absolute;width:100%;z-index:1;:where(.ag-menu) &{background-color:var(--ag-menu-background-color)}}.ag-filter-separator{border-top:1px solid var(--menu-separator-color)}:where(.ag-filter-select) .ag-picker-field-wrapper{width:0}.ag-filter-condition-operator{height:17px}:where(.ag-ltr) .ag-filter-condition-operator-or{margin-left:calc(var(--ag-spacing)*2)}:where(.ag-rtl) .ag-filter-condition-operator-or{margin-right:calc(var(--ag-spacing)*2)}.ag-set-filter-select-all{padding-top:var(--ag-widget-container-vertical-padding)}.ag-filter-no-matches,.ag-set-filter-list{height:calc(var(--ag-list-item-height)*6)}.ag-filter-no-matches{padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}.ag-set-filter-tree-list{height:calc(var(--ag-list-item-height)*10)}.ag-set-filter-filter{margin-left:var(--ag-widget-container-horizontal-padding);margin-right:var(--ag-widget-container-horizontal-padding);margin-top:var(--ag-widget-container-vertical-padding)}.ag-filter-to{margin-top:var(--ag-widget-vertical-spacing)}.ag-mini-filter{margin:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}:where(.ag-ltr) .ag-set-filter-add-group-indent{margin-left:calc(var(--ag-icon-size) + var(--ag-widget-container-horizontal-padding))}:where(.ag-rtl) .ag-set-filter-add-group-indent{margin-right:calc(var(--ag-icon-size) + var(--ag-widget-container-horizontal-padding))}:where(.ag-filter-menu) .ag-set-filter-list{min-width:200px}.ag-filter-virtual-list-item:focus-visible{box-shadow:inset var(--ag-focus-shadow)}.ag-filter-apply-panel{display:flex;justify-content:flex-end;overflow:hidden;padding:var(--ag-widget-vertical-spacing) var(--ag-widget-container-horizontal-padding) var(--ag-widget-container-vertical-padding)}.ag-filter-apply-panel-button{line-height:1.5}:where(.ag-ltr) .ag-filter-apply-panel-button{margin-left:calc(var(--ag-spacing)*2)}:where(.ag-rtl) .ag-filter-apply-panel-button{margin-right:calc(var(--ag-spacing)*2)}.ag-simple-filter-body-wrapper{display:flex;flex-direction:column;min-height:calc(var(--ag-list-item-height) + var(--ag-widget-container-vertical-padding) + var(--ag-widget-vertical-spacing));overflow-y:auto;padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);padding-bottom:calc(var(--ag-widget-container-vertical-padding) - var(--ag-widget-vertical-spacing));&>*{margin-bottom:var(--ag-widget-vertical-spacing)}:where(.ag-resizer-wrapper){margin:0}}.ag-multi-filter-menu-item{margin:var(--ag-spacing) 0}.ag-multi-filter-group-title-bar{background-color:transparent;color:var(--ag-header-text-color);font-weight:500;padding:calc(var(--ag-spacing)*1.5) var(--ag-spacing)}.ag-group-filter-field-select-wrapper{display:flex;flex-direction:column;gap:var(--ag-widget-vertical-spacing);padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding)}`\n);\n\n// packages/ag-grid-community/src/filter/columnFilterApi.ts\nfunction isColumnFilterPresent(beans) {\n const filterManager = beans.filterManager;\n return !!filterManager?.isColumnFilterPresent() || !!filterManager?.isAggregateFilterPresent();\n}\nfunction getColumnFilterInstance(beans, key) {\n return beans.filterManager?.getColumnFilterInstance(key) ?? Promise.resolve(void 0);\n}\nfunction destroyFilter(beans, key) {\n const column = beans.colModel.getColDefCol(key);\n if (column) {\n return beans.filterManager?.destroyFilter(column, \"api\");\n }\n}\nfunction setFilterModel(beans, model) {\n beans.frameworkOverrides.wrapIncoming(() => beans.filterManager?.setFilterModel(model));\n}\nfunction getFilterModel(beans) {\n return beans.filterManager?.getFilterModel() ?? {};\n}\nfunction getColumnFilterModel(beans, column) {\n return beans.filterManager?.getColumnFilterModel(column) ?? null;\n}\nfunction setColumnFilterModel(beans, column, model) {\n return beans.filterManager?.setColumnFilterModel(column, model) ?? Promise.resolve();\n}\nfunction showColumnFilter(beans, colKey) {\n const column = beans.colModel.getCol(colKey);\n if (!column) {\n _error(12, { colKey });\n return;\n }\n beans.menuSvc?.showFilterMenu({\n column,\n containerType: \"columnFilter\",\n positionBy: \"auto\"\n });\n}\n\n// packages/ag-grid-community/src/filter/columnFilterService.ts\nvar MONTH_LOCALE_TEXT = {\n january: \"January\",\n february: \"February\",\n march: \"March\",\n april: \"April\",\n may: \"May\",\n june: \"June\",\n july: \"July\",\n august: \"August\",\n september: \"September\",\n october: \"October\",\n november: \"November\",\n december: \"December\"\n};\nvar MONTH_KEYS = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\"\n];\nfunction setFilterNumberComparator(a, b) {\n if (a == null) {\n return -1;\n }\n if (b == null) {\n return 1;\n }\n return parseFloat(a) - parseFloat(b);\n}\nvar ColumnFilterService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colFilter\";\n this.allColumnFilters = /* @__PURE__ */ new Map();\n this.allColumnListeners = /* @__PURE__ */ new Map();\n this.activeAggregateFilters = [];\n this.activeColumnFilters = [];\n // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n this.processingFilterChange = false;\n // when we're waiting for cell data types to be inferred, we need to defer filter model updates\n this.filterModelUpdateQueue = [];\n this.columnFilterModelUpdateQueue = [];\n }\n postConstruct() {\n this.addManagedEventListeners({\n gridColumnsChanged: this.onColumnsChanged.bind(this),\n beforeRefreshModel: ({ params }) => {\n if (params.rowDataUpdated || params.changedProps?.has(\"treeData\")) {\n this.onNewRowsLoaded(\"rowDataUpdated\");\n }\n },\n dataTypesInferred: this.processFilterModelUpdateQueue.bind(this)\n });\n this.initialFilterModel = {\n ...this.gos.get(\"initialState\")?.filter?.filterModel ?? {}\n };\n }\n setFilterModel(model, source = \"api\") {\n const { colModel, dataTypeSvc, filterManager } = this.beans;\n if (dataTypeSvc?.isPendingInference) {\n this.filterModelUpdateQueue.push({ model, source });\n return;\n }\n const allPromises = [];\n const previousModel = this.getFilterModel(true);\n if (model) {\n const modelKeys = new Set(Object.keys(model));\n this.allColumnFilters.forEach((filterWrapper, colId) => {\n const newModel = model[colId];\n allPromises.push(setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));\n modelKeys.delete(colId);\n });\n modelKeys.forEach((colId) => {\n const column = colModel.getColDefCol(colId) || colModel.getCol(colId);\n if (!column) {\n _warn(62, { colId });\n return;\n }\n if (!column.isFilterAllowed()) {\n _warn(63, { colId });\n return;\n }\n const filterWrapper = this.getOrCreateFilterWrapper(column);\n if (!filterWrapper) {\n _warn(64, { colId });\n return;\n }\n allPromises.push(setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));\n });\n } else {\n this.allColumnFilters.forEach((filterWrapper) => {\n allPromises.push(setModelOnFilterWrapper(filterWrapper.filterPromise, null));\n });\n }\n AgPromise.all(allPromises).then(() => {\n const currentModel = this.getFilterModel(true);\n const columns = [];\n this.allColumnFilters.forEach((filterWrapper, colId) => {\n const before = previousModel ? previousModel[colId] : null;\n const after = currentModel ? currentModel[colId] : null;\n if (!_jsonEquals(before, after)) {\n columns.push(filterWrapper.column);\n }\n });\n if (columns.length > 0) {\n filterManager?.onFilterChanged({ columns, source });\n }\n });\n }\n getFilterModel(excludeInitialState) {\n const result = {};\n const {\n allColumnFilters,\n initialFilterModel,\n beans: { colModel }\n } = this;\n allColumnFilters.forEach((filterWrapper, key) => {\n const model = this.getModelFromFilterWrapper(filterWrapper);\n if (_exists(model)) {\n result[key] = model;\n }\n });\n if (!excludeInitialState) {\n for (const colId of Object.keys(initialFilterModel)) {\n const model = initialFilterModel[colId];\n if (_exists(model) && !allColumnFilters.has(colId) && colModel.getCol(colId)?.isFilterAllowed()) {\n result[colId] = model;\n }\n }\n }\n return result;\n }\n getModelFromFilterWrapper(filterWrapper) {\n const { filter } = filterWrapper;\n if (filter) {\n if (typeof filter.getModel !== \"function\") {\n _warn(66);\n return null;\n }\n return filter.getModel();\n } else {\n return this.getModelFromInitialState(filterWrapper.column);\n }\n }\n getModelFromInitialState(column) {\n return this.initialFilterModel[column.getColId()] ?? null;\n }\n isColumnFilterPresent() {\n return this.activeColumnFilters.length > 0;\n }\n isAggregateFilterPresent() {\n return !!this.activeAggregateFilters.length;\n }\n disableColumnFilters() {\n this.initialFilterModel = {};\n const { allColumnFilters } = this;\n if (allColumnFilters.size) {\n allColumnFilters.forEach(\n (filterWrapper) => this.disposeFilterWrapper(filterWrapper, \"advancedFilterEnabled\")\n );\n return true;\n }\n return false;\n }\n doAggregateFiltersPass(node, filterToSkip) {\n return this.doColumnFiltersPass(node, filterToSkip, true);\n }\n updateActiveFilters() {\n const isFilterActive = (filter) => {\n if (!filter) {\n return false;\n }\n if (!filter.isFilterActive) {\n _warn(67);\n return false;\n }\n return filter.isFilterActive();\n };\n const { colModel, gos } = this.beans;\n const groupFilterEnabled = !!_getGroupAggFiltering(gos);\n const isAggFilter = (column) => {\n const isSecondary = !column.isPrimary();\n if (isSecondary) {\n return true;\n }\n const isShowingPrimaryColumns = !colModel.isPivotActive();\n const isValueActive = column.isValueActive();\n if (!isValueActive || !isShowingPrimaryColumns) {\n return false;\n }\n if (colModel.isPivotMode()) {\n return true;\n }\n return groupFilterEnabled;\n };\n const activeAggregateFilters = [];\n const activeColumnFilters = [];\n return this.forEachColumnFilter((filter, filterWrapper) => {\n const filterActive = isFilterActive(filter);\n if (filterActive) {\n if (isAggFilter(filterWrapper.column)) {\n activeAggregateFilters.push(filter);\n } else {\n activeColumnFilters.push(filter);\n }\n }\n }).then(() => {\n this.activeAggregateFilters = activeAggregateFilters;\n this.activeColumnFilters = activeColumnFilters;\n });\n }\n updateFilterFlagInColumns(source, additionalEventAttributes) {\n return this.forEachColumnFilter(\n (filter, filterWrapper) => this.setColFilterActive(filterWrapper.column, filter.isFilterActive(), source, additionalEventAttributes)\n );\n }\n forEachColumnFilter(callback) {\n const promises = [];\n this.allColumnFilters.forEach((filterWrapper) => {\n const filterPromise = filterWrapper.filterPromise;\n if (filterPromise) {\n promises.push(filterPromise.then((filter) => callback(filter, filterWrapper)));\n }\n });\n return AgPromise.all(promises);\n }\n doColumnFiltersPass(node, filterToSkip, targetAggregates) {\n const { data, aggData } = node;\n const targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;\n const targetedData = targetAggregates ? aggData : data;\n for (let i = 0; i < targetedFilters.length; i++) {\n const filter = targetedFilters[i];\n if (filter == null || filter === filterToSkip) {\n continue;\n }\n if (typeof filter.doesFilterPass !== \"function\") {\n _error(91);\n continue;\n }\n if (!filter.doesFilterPass({ node, data: targetedData })) {\n return false;\n }\n }\n return true;\n }\n // sometimes (especially in React) the filter can call onFilterChanged when we are in the middle\n // of a render cycle. this would be bad, so we wait for render cycle to complete when this happens.\n // this happens in react when we change React State in the grid (eg setting RowCtrl's in RowContainer)\n // which results in React State getting applied in the main application, triggering a useEffect() to\n // be kicked off adn then the application calling the grid's API. in AG-6554, the custom filter was\n // getting it's useEffect() triggered in this way.\n callOnFilterChangedOutsideRenderCycle(params) {\n const { rowRenderer, filterManager } = this.beans;\n const action = () => {\n if (this.isAlive()) {\n filterManager?.onFilterChanged(params);\n }\n };\n if (rowRenderer.isRefreshInProgress()) {\n setTimeout(action, 0);\n } else {\n action();\n }\n }\n updateBeforeFilterChanged(params = {}) {\n const { filterInstance, additionalEventAttributes } = params;\n this.updateDependentFilters();\n return this.updateActiveFilters().then(\n () => this.updateFilterFlagInColumns(\"filterChanged\", additionalEventAttributes).then(() => {\n this.allColumnFilters.forEach((filterWrapper) => {\n if (!filterWrapper.filterPromise) {\n return;\n }\n filterWrapper.filterPromise.then((filter) => {\n if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n this.processingFilterChange = true;\n })\n );\n }\n updateAfterFilterChanged() {\n this.processingFilterChange = false;\n }\n isSuppressFlashingCellsBecauseFiltering() {\n const allowShowChangeAfterFilter = this.gos.get(\"allowShowChangeAfterFilter\") ?? false;\n return !allowShowChangeAfterFilter && this.processingFilterChange;\n }\n onNewRowsLoaded(source) {\n this.forEachColumnFilter((filter) => {\n filter.onNewRowsLoaded?.();\n }).then(() => this.updateFilterFlagInColumns(source, { afterDataChange: true })).then(() => this.updateActiveFilters());\n }\n createGetValue(filterColumn) {\n const { filterValueSvc, colModel } = this.beans;\n return (rowNode, column) => {\n const columnToUse = column ? colModel.getCol(column) : filterColumn;\n return columnToUse ? filterValueSvc.getValue(columnToUse, rowNode) : void 0;\n };\n }\n isFilterActive(column) {\n const { filter } = this.cachedFilter(column) ?? {};\n if (filter) {\n return filter.isFilterActive();\n }\n return this.getModelFromInitialState(column) != null;\n }\n getOrCreateFilterWrapper(column) {\n if (!column.isFilterAllowed()) {\n return null;\n }\n let filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column);\n this.setColumnFilterWrapper(column, filterWrapper);\n }\n return filterWrapper;\n }\n cachedFilter(column) {\n return this.allColumnFilters.get(column.getColId());\n }\n getDefaultFilter(column) {\n let defaultFilter;\n const { gos, dataTypeSvc } = this.beans;\n if (_isSetFilterByDefault(gos)) {\n defaultFilter = \"agSetColumnFilter\";\n } else {\n const cellDataType = dataTypeSvc?.getBaseDataType(column);\n if (cellDataType === \"number\") {\n defaultFilter = \"agNumberColumnFilter\";\n } else if (cellDataType === \"date\" || cellDataType === \"dateString\") {\n defaultFilter = \"agDateColumnFilter\";\n } else {\n defaultFilter = \"agTextColumnFilter\";\n }\n }\n return defaultFilter;\n }\n getDefaultFloatingFilter(column) {\n let defaultFloatingFilterType;\n const { gos, dataTypeSvc } = this.beans;\n if (_isSetFilterByDefault(gos)) {\n defaultFloatingFilterType = \"agSetColumnFloatingFilter\";\n } else {\n const cellDataType = dataTypeSvc?.getBaseDataType(column);\n if (cellDataType === \"number\") {\n defaultFloatingFilterType = \"agNumberColumnFloatingFilter\";\n } else if (cellDataType === \"date\" || cellDataType === \"dateString\") {\n defaultFloatingFilterType = \"agDateColumnFloatingFilter\";\n } else {\n defaultFloatingFilterType = \"agTextColumnFloatingFilter\";\n }\n }\n return defaultFloatingFilterType;\n }\n createFilterInstance(column, filterWrapper) {\n const defaultFilter = this.getDefaultFilter(column);\n const colDef = column.getColDef();\n let filterInstance;\n const params = {\n ...this.createFilterParams(column, colDef),\n filterModifiedCallback: () => this.filterModifiedCallbackFactory(filterInstance, column)(),\n filterChangedCallback: (additionalEventAttributes) => this.filterChangedCallbackFactory(filterInstance, column)(additionalEventAttributes),\n doesRowPassOtherFilter: (node) => this.beans.filterManager?.doesRowPassOtherFilters(filterInstance, node) ?? true\n };\n const compDetails = _getFilterDetails(this.beans.userCompFactory, colDef, params, defaultFilter);\n if (!compDetails) {\n return { filterPromise: null, compDetails: null };\n }\n return {\n filterPromise: () => {\n const filterPromise = compDetails.newAgStackInstance();\n filterPromise.then((r) => {\n filterInstance = r;\n if (filterWrapper) {\n filterWrapper.filter = r ?? void 0;\n }\n });\n return filterPromise;\n },\n compDetails\n };\n }\n createFilterParams(column, colDef) {\n const params = _addGridCommonParams(this.gos, {\n column,\n colDef,\n rowModel: this.beans.rowModel,\n // @deprecated v33.1\n filterChangedCallback: () => {\n },\n filterModifiedCallback: () => {\n },\n getValue: this.createGetValue(column),\n doesRowPassOtherFilter: () => true\n });\n return params;\n }\n createFilterWrapper(column) {\n const filterWrapper = {\n column,\n filterPromise: null,\n compDetails: null\n };\n const { filterPromise, compDetails } = this.createFilterInstance(column, filterWrapper);\n filterWrapper.filterPromise = filterPromise?.() ?? null;\n filterWrapper.compDetails = compDetails;\n return filterWrapper;\n }\n onColumnsChanged() {\n const columns = [];\n const { colModel, filterManager } = this.beans;\n this.allColumnFilters.forEach((wrapper, colId) => {\n let currentColumn;\n if (wrapper.column.isPrimary()) {\n currentColumn = colModel.getColDefCol(colId);\n } else {\n currentColumn = colModel.getCol(colId);\n }\n if (currentColumn && currentColumn === wrapper.column) {\n return;\n }\n columns.push(wrapper.column);\n this.disposeFilterWrapper(wrapper, \"columnChanged\");\n this.disposeColumnListener(colId);\n });\n const allFiltersAreGroupFilters = columns.every(isGroupFilter);\n if (columns.length > 0 && !allFiltersAreGroupFilters) {\n filterManager?.onFilterChanged({ columns, source: \"api\" });\n } else {\n this.updateDependentFilters();\n }\n }\n updateDependentFilters() {\n this.beans.autoColSvc?.getColumns()?.forEach((groupColumn) => {\n if (isGroupFilter(groupColumn)) {\n this.getOrCreateFilterWrapper(groupColumn);\n }\n });\n }\n // for group filters, can change dynamically whether they are allowed or not\n isFilterAllowed(column) {\n const isFilterAllowed = column.isFilterAllowed();\n if (!isFilterAllowed) {\n return false;\n }\n const { filter } = this.allColumnFilters.get(column.getColId()) ?? {};\n if (filter) {\n return typeof filter?.isFilterAllowed === \"function\" ? filter.isFilterAllowed() : true;\n }\n return true;\n }\n getFloatingFilterCompDetails(column, showParentFilter) {\n const parentFilterInstance = (callback) => {\n const filterComponent = this.getOrCreateFilterWrapper(column)?.filterPromise;\n if (filterComponent == null) {\n return;\n }\n filterComponent.then((instance) => {\n callback(_unwrapUserComp(instance));\n });\n };\n const colDef = column.getColDef();\n const filterParams = {\n ...this.createFilterParams(column, colDef),\n filterChangedCallback: () => parentFilterInstance(\n (filterInstance) => this.filterChangedCallbackFactory(filterInstance, column)()\n )\n };\n const { userCompFactory, frameworkOverrides } = this.beans;\n const finalFilterParams = _mergeFilterParamsWithApplicationProvidedParams(\n userCompFactory,\n colDef,\n filterParams\n );\n let defaultFloatingFilterType = _getDefaultFloatingFilterType(\n frameworkOverrides,\n colDef,\n () => this.getDefaultFloatingFilter(column)\n );\n if (defaultFloatingFilterType == null) {\n defaultFloatingFilterType = \"agReadOnlyFloatingFilter\";\n }\n const params = _addGridCommonParams(this.gos, {\n column,\n filterParams: finalFilterParams,\n currentParentModel: () => this.getCurrentFloatingFilterParentModel(column),\n parentFilterInstance,\n showParentFilter\n });\n return _getFloatingFilterCompDetails(userCompFactory, colDef, params, defaultFloatingFilterType);\n }\n getCurrentFloatingFilterParentModel(column) {\n return this.getModelFromFilterWrapper(this.cachedFilter(column) ?? { column });\n }\n // destroys the filter, so it no longer takes part\n destroyFilter(column, source = \"api\") {\n const colId = column.getColId();\n const filterWrapper = this.allColumnFilters.get(colId);\n this.disposeColumnListener(colId);\n delete this.initialFilterModel[colId];\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source).then((wasActive) => {\n if (wasActive && this.isAlive()) {\n this.beans.filterManager?.onFilterChanged({\n columns: [column],\n source: \"api\"\n });\n }\n });\n }\n }\n disposeColumnListener(colId) {\n const columnListener = this.allColumnListeners.get(colId);\n if (columnListener) {\n this.allColumnListeners.delete(colId);\n columnListener();\n }\n }\n disposeFilterWrapper(filterWrapper, source) {\n return filterWrapper.filterPromise?.then((filter) => {\n const isActive = !!filter?.isFilterActive();\n this.destroyBean(filter);\n this.setColFilterActive(filterWrapper.column, false, \"filterDestroyed\");\n this.allColumnFilters.delete(filterWrapper.column.getColId());\n this.eventSvc.dispatchEvent({\n type: \"filterDestroyed\",\n source,\n column: filterWrapper.column\n });\n return isActive;\n }) ?? AgPromise.resolve(false);\n }\n filterModifiedCallbackFactory(filter, column) {\n return () => {\n this.eventSvc.dispatchEvent({\n type: \"filterModified\",\n column,\n filterInstance: filter\n });\n };\n }\n filterChangedCallbackFactory(filter, column) {\n return (additionalEventAttributes) => {\n const source = additionalEventAttributes?.source ?? \"columnFilter\";\n const params = {\n filter,\n additionalEventAttributes,\n columns: [column],\n source\n };\n this.callOnFilterChangedOutsideRenderCycle(params);\n };\n }\n checkDestroyFilter(colId) {\n const filterWrapper = this.allColumnFilters.get(colId);\n if (!filterWrapper) {\n return;\n }\n const column = filterWrapper.column;\n const { compDetails } = column.isFilterAllowed() ? this.createFilterInstance(column) : { compDetails: null };\n if (this.areFilterCompsDifferent(filterWrapper.compDetails, compDetails)) {\n this.destroyFilter(column, \"paramsUpdated\");\n return;\n }\n const newFilterParams = column.getColDef().filterParams;\n if (!filterWrapper.filterPromise) {\n this.destroyFilter(column, \"paramsUpdated\");\n return;\n }\n filterWrapper.filterPromise.then((filter) => {\n const shouldRefreshFilter = filter?.refresh ? filter.refresh({\n ...this.createFilterParams(column, column.getColDef()),\n filterModifiedCallback: this.filterModifiedCallbackFactory(filter, column),\n filterChangedCallback: this.filterChangedCallbackFactory(filter, column),\n doesRowPassOtherFilter: (node) => this.beans.filterManager?.doesRowPassOtherFilters(filter, node) ?? true,\n ...newFilterParams\n }) : true;\n if (shouldRefreshFilter === false) {\n this.destroyFilter(column, \"paramsUpdated\");\n }\n });\n }\n setColumnFilterWrapper(column, filterWrapper) {\n const colId = column.getColId();\n this.allColumnFilters.set(colId, filterWrapper);\n this.allColumnListeners.set(\n colId,\n this.addManagedListeners(column, { colDefChanged: () => this.checkDestroyFilter(colId) })[0]\n );\n }\n areFilterCompsDifferent(oldCompDetails, newCompDetails) {\n if (!newCompDetails || !oldCompDetails) {\n return true;\n }\n const { componentClass: oldComponentClass } = oldCompDetails;\n const { componentClass: newComponentClass } = newCompDetails;\n const isSameComponentClass = oldComponentClass === newComponentClass || // react hooks returns new wrappers, so check nested render method\n oldComponentClass?.render && newComponentClass?.render && oldComponentClass.render === newComponentClass.render;\n return !isSameComponentClass;\n }\n hasFloatingFilters() {\n const gridColumns = this.beans.colModel.getCols();\n return gridColumns.some((col) => col.getColDef().floatingFilter);\n }\n getColumnFilterInstance(key) {\n return new Promise((resolve) => {\n this.getFilterInstanceImpl(key).then((filter) => {\n resolve(_unwrapUserComp(filter));\n });\n });\n }\n getFilterInstanceImpl(key) {\n const column = this.beans.colModel.getColDefCol(key);\n if (!column) {\n return AgPromise.resolve(void 0);\n }\n const filterPromise = this.getOrCreateFilterWrapper(column)?.filterPromise;\n return filterPromise ?? AgPromise.resolve(null);\n }\n processFilterModelUpdateQueue() {\n this.filterModelUpdateQueue.forEach(({ model, source }) => this.setFilterModel(model, source));\n this.filterModelUpdateQueue = [];\n this.columnFilterModelUpdateQueue.forEach(({ key, model, resolve }) => {\n this.setColumnFilterModel(key, model).then(() => resolve());\n });\n this.columnFilterModelUpdateQueue = [];\n }\n getColumnFilterModel(key) {\n const filterWrapper = this.getFilterWrapper(key);\n return filterWrapper ? this.getModelFromFilterWrapper(filterWrapper) : null;\n }\n setColumnFilterModel(key, model) {\n const { colModel, dataTypeSvc } = this.beans;\n if (dataTypeSvc?.isPendingInference) {\n let resolve = () => {\n };\n const promise = new Promise((res) => {\n resolve = res;\n });\n this.columnFilterModelUpdateQueue.push({ key, model, resolve });\n return promise;\n }\n const column = colModel.getColDefCol(key);\n const filterWrapper = column ? this.getOrCreateFilterWrapper(column) : null;\n const convertPromise = (promise) => {\n return new Promise((resolve) => {\n promise.then((result) => resolve(result));\n });\n };\n return filterWrapper ? convertPromise(setModelOnFilterWrapper(filterWrapper.filterPromise, model)) : Promise.resolve();\n }\n getFilterWrapper(key) {\n const column = this.beans.colModel.getColDefCol(key);\n return column ? this.cachedFilter(column) ?? null : null;\n }\n setColDefPropertiesForDataType(colDef, dataTypeDefinition, formatValue) {\n const usingSetFilter = _isSetFilterByDefault(this.gos);\n const translate = this.getLocaleTextFunc();\n const mergeFilterParams = (params) => {\n const { filterParams } = colDef;\n colDef.filterParams = typeof filterParams === \"object\" ? {\n ...filterParams,\n ...params\n } : params;\n };\n switch (dataTypeDefinition.baseDataType) {\n case \"number\": {\n if (usingSetFilter) {\n mergeFilterParams({\n comparator: setFilterNumberComparator\n });\n }\n break;\n }\n case \"boolean\": {\n if (usingSetFilter) {\n mergeFilterParams({\n valueFormatter: (params) => {\n if (!_exists(params.value)) {\n return translate(\"blanks\", \"(Blanks)\");\n }\n return translate(String(params.value), params.value ? \"True\" : \"False\");\n }\n });\n } else {\n mergeFilterParams({\n maxNumConditions: 1,\n debounceMs: 0,\n filterOptions: [\n \"empty\",\n {\n displayKey: \"true\",\n displayName: \"True\",\n predicate: (_filterValues, cellValue) => cellValue,\n numberOfInputs: 0\n },\n {\n displayKey: \"false\",\n displayName: \"False\",\n predicate: (_filterValues, cellValue) => cellValue === false,\n numberOfInputs: 0\n }\n ]\n });\n }\n break;\n }\n case \"date\": {\n if (usingSetFilter) {\n mergeFilterParams({\n valueFormatter: (params) => {\n const valueFormatted = formatValue(params);\n return _exists(valueFormatted) ? valueFormatted : translate(\"blanks\", \"(Blanks)\");\n },\n treeList: true,\n treeListFormatter: (pathKey, level) => {\n if (pathKey === \"NaN\") {\n return translate(\"invalidDate\", \"Invalid Date\");\n }\n if (level === 1 && pathKey != null) {\n const monthKey = MONTH_KEYS[Number(pathKey) - 1];\n return translate(monthKey, MONTH_LOCALE_TEXT[monthKey]);\n }\n return pathKey ?? translate(\"blanks\", \"(Blanks)\");\n }\n });\n } else {\n mergeFilterParams({\n isValidDate\n });\n }\n break;\n }\n case \"dateString\": {\n const convertToDate = dataTypeDefinition.dateParser;\n if (usingSetFilter) {\n mergeFilterParams({\n valueFormatter: (params) => {\n const valueFormatted = formatValue(params);\n return _exists(valueFormatted) ? valueFormatted : translate(\"blanks\", \"(Blanks)\");\n },\n treeList: true,\n treeListPathGetter: (value) => {\n const date = convertToDate(value ?? void 0);\n return date ? [String(date.getFullYear()), String(date.getMonth() + 1), String(date.getDate())] : null;\n },\n treeListFormatter: (pathKey, level) => {\n if (level === 1 && pathKey != null) {\n const monthKey = MONTH_KEYS[Number(pathKey) - 1];\n return translate(monthKey, MONTH_LOCALE_TEXT[monthKey]);\n }\n return pathKey ?? translate(\"blanks\", \"(Blanks)\");\n }\n });\n } else {\n mergeFilterParams({\n comparator: (filterDate, cellValue) => {\n const cellAsDate = convertToDate(cellValue);\n if (cellValue == null || cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return 0;\n },\n isValidDate: (value) => typeof value === \"string\" && isValidDate(convertToDate(value))\n });\n }\n break;\n }\n case \"object\": {\n if (usingSetFilter) {\n mergeFilterParams({\n valueFormatter: (params) => {\n const valueFormatted = formatValue(params);\n return _exists(valueFormatted) ? valueFormatted : translate(\"blanks\", \"(Blanks)\");\n }\n });\n } else {\n colDef.filterValueGetter = (params) => formatValue({\n column: params.column,\n node: params.node,\n value: this.beans.valueSvc.getValue(params.column, params.node)\n });\n }\n break;\n }\n }\n }\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n setColFilterActive(column, active, source, additionalEventAttributes) {\n if (column.filterActive !== active) {\n column.filterActive = active;\n column.dispatchColEvent(\"filterActiveChanged\", source);\n }\n column.dispatchColEvent(\"filterChanged\", source, additionalEventAttributes);\n }\n destroy() {\n super.destroy();\n this.allColumnFilters.forEach((filterWrapper) => this.disposeFilterWrapper(filterWrapper, \"gridDestroyed\"));\n this.allColumnListeners.clear();\n }\n};\nfunction setModelOnFilterWrapper(filterPromise, newModel) {\n if (!filterPromise) {\n return AgPromise.resolve();\n }\n return new AgPromise((resolve) => {\n filterPromise.then((filter) => {\n if (typeof filter.setModel !== \"function\") {\n _warn(65);\n resolve();\n }\n (filter.setModel(newModel) || AgPromise.resolve()).then(() => resolve());\n });\n });\n}\nfunction isGroupFilter(column) {\n return column.getColDef().filter === \"agGroupColumnFilter\";\n}\nfunction isValidDate(value) {\n return value instanceof Date && !isNaN(value.getTime());\n}\n\n// packages/ag-grid-community/src/filter/filterApi.ts\nfunction isAnyFilterPresent(beans) {\n return !!beans.filterManager?.isAnyFilterPresent();\n}\nfunction onFilterChanged(beans, source = \"api\") {\n beans.filterManager?.onFilterChanged({ source });\n}\n\n// packages/ag-grid-community/src/filter/filterManager.ts\nvar FilterManager = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"filterManager\";\n // when we're waiting for cell data types to be inferred, we need to defer filter model updates\n this.advFilterModelUpdateQueue = [];\n }\n wireBeans(beans) {\n this.quickFilter = beans.quickFilter;\n this.advancedFilter = beans.advancedFilter;\n this.colFilter = beans.colFilter;\n }\n postConstruct() {\n const refreshFiltersForAggregations = this.refreshFiltersForAggregations.bind(this);\n const updateAdvFilterColumns = this.updateAdvFilterColumns.bind(this);\n this.addManagedEventListeners({\n columnValueChanged: refreshFiltersForAggregations,\n columnPivotChanged: refreshFiltersForAggregations,\n columnPivotModeChanged: refreshFiltersForAggregations,\n newColumnsLoaded: updateAdvFilterColumns,\n columnVisible: updateAdvFilterColumns,\n advancedFilterEnabledChanged: ({ enabled }) => this.onAdvFilterEnabledChanged(enabled),\n dataTypesInferred: this.processFilterModelUpdateQueue.bind(this)\n });\n this.externalFilterPresent = this.isExternalFilterPresentCallback();\n this.addManagedPropertyListeners([\"isExternalFilterPresent\", \"doesExternalFilterPass\"], () => {\n this.onFilterChanged({ source: \"api\" });\n });\n this.updateAggFiltering();\n this.addManagedPropertyListener(\"groupAggFiltering\", () => {\n this.updateAggFiltering();\n this.onFilterChanged();\n });\n if (this.quickFilter) {\n this.addManagedListeners(this.quickFilter, {\n quickFilterChanged: () => this.onFilterChanged({ source: \"quickFilter\" })\n });\n }\n const { gos } = this;\n this.alwaysPassFilter = gos.get(\"alwaysPassFilter\");\n this.addManagedPropertyListener(\"alwaysPassFilter\", () => {\n this.alwaysPassFilter = gos.get(\"alwaysPassFilter\");\n this.onFilterChanged({ source: \"api\" });\n });\n }\n isExternalFilterPresentCallback() {\n const isFilterPresent = this.gos.getCallback(\"isExternalFilterPresent\");\n return typeof isFilterPresent === \"function\" && isFilterPresent({});\n }\n doesExternalFilterPass(node) {\n const doesFilterPass = this.gos.get(\"doesExternalFilterPass\");\n return typeof doesFilterPass === \"function\" && doesFilterPass(node);\n }\n setFilterModel(model, source = \"api\") {\n if (this.isAdvFilterEnabled()) {\n this.warnAdvFilters();\n return;\n }\n this.colFilter?.setFilterModel(model, source);\n }\n getFilterModel() {\n return this.colFilter?.getFilterModel() ?? {};\n }\n isColumnFilterPresent() {\n return !!this.colFilter?.isColumnFilterPresent();\n }\n isAggregateFilterPresent() {\n return !!this.colFilter?.isAggregateFilterPresent();\n }\n isChildFilterPresent() {\n return this.isColumnFilterPresent() || this.isQuickFilterPresent() || this.externalFilterPresent || this.isAdvFilterPresent();\n }\n isAnyFilterPresent() {\n return this.isChildFilterPresent() || this.isAggregateFilterPresent();\n }\n isAdvFilterPresent() {\n return this.isAdvFilterEnabled() && this.advancedFilter.isFilterPresent();\n }\n onAdvFilterEnabledChanged(enabled) {\n if (enabled) {\n if (this.colFilter?.disableColumnFilters()) {\n this.onFilterChanged({ source: \"advancedFilter\" });\n }\n } else {\n if (this.advancedFilter?.isFilterPresent()) {\n this.advancedFilter.setModel(null);\n this.onFilterChanged({ source: \"advancedFilter\" });\n }\n }\n }\n isAdvFilterEnabled() {\n return !!this.advancedFilter?.isEnabled();\n }\n isAdvFilterHeaderActive() {\n return this.isAdvFilterEnabled() && this.advancedFilter.isHeaderActive();\n }\n refreshFiltersForAggregations() {\n const isAggFiltering = _getGroupAggFiltering(this.gos);\n if (isAggFiltering) {\n this.onFilterChanged();\n }\n }\n onFilterChanged(params = {}) {\n const { source, additionalEventAttributes, columns = [] } = params;\n this.externalFilterPresent = this.isExternalFilterPresentCallback();\n (this.colFilter ? this.colFilter.updateBeforeFilterChanged(params) : AgPromise.resolve()).then(() => {\n const filterChangedEvent = {\n source,\n type: \"filterChanged\",\n columns\n };\n if (additionalEventAttributes) {\n _mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.eventSvc.dispatchEvent(filterChangedEvent);\n this.colFilter?.updateAfterFilterChanged();\n });\n }\n isSuppressFlashingCellsBecauseFiltering() {\n return !!this.colFilter?.isSuppressFlashingCellsBecauseFiltering();\n }\n isQuickFilterPresent() {\n return !!this.quickFilter?.isFilterPresent();\n }\n updateAggFiltering() {\n this.aggFiltering = !!_getGroupAggFiltering(this.gos);\n }\n isAggregateQuickFilterPresent() {\n return this.isQuickFilterPresent() && this.shouldApplyQuickFilterAfterAgg();\n }\n isNonAggregateQuickFilterPresent() {\n return this.isQuickFilterPresent() && !this.shouldApplyQuickFilterAfterAgg();\n }\n shouldApplyQuickFilterAfterAgg() {\n return (this.aggFiltering || this.beans.colModel.isPivotMode()) && !this.gos.get(\"applyQuickFilterBeforePivotOrAgg\");\n }\n doesRowPassOtherFilters(filterToSkip, node) {\n return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });\n }\n doesRowPassAggregateFilters(params) {\n const { rowNode } = params;\n if (this.alwaysPassFilter?.(rowNode)) {\n return true;\n }\n if (this.isAggregateQuickFilterPresent() && !this.quickFilter.doesRowPass(rowNode)) {\n return false;\n }\n if (this.isAggregateFilterPresent() && !this.colFilter.doAggregateFiltersPass(rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n return true;\n }\n doesRowPassFilter(params) {\n const { rowNode } = params;\n if (this.alwaysPassFilter?.(rowNode)) {\n return true;\n }\n if (this.isNonAggregateQuickFilterPresent() && !this.quickFilter.doesRowPass(rowNode)) {\n return false;\n }\n if (this.externalFilterPresent && !this.doesExternalFilterPass(rowNode)) {\n return false;\n }\n if (this.isColumnFilterPresent() && !this.colFilter.doColumnFiltersPass(rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n if (this.isAdvFilterPresent() && !this.advancedFilter.doesFilterPass(rowNode)) {\n return false;\n }\n return true;\n }\n isFilterActive(column) {\n return !!this.colFilter?.isFilterActive(column);\n }\n getOrCreateFilterWrapper(column) {\n return this.colFilter?.getOrCreateFilterWrapper(column) ?? null;\n }\n getDefaultFloatingFilter(column) {\n return this.colFilter.getDefaultFloatingFilter(column);\n }\n createFilterParams(column, colDef) {\n return this.colFilter.createFilterParams(column, colDef);\n }\n // for group filters, can change dynamically whether they are allowed or not\n isFilterAllowed(column) {\n if (this.isAdvFilterEnabled()) {\n return false;\n }\n return !!this.colFilter?.isFilterAllowed(column);\n }\n getFloatingFilterCompDetails(column, showParentFilter) {\n return this.colFilter?.getFloatingFilterCompDetails(column, showParentFilter);\n }\n getCurrentFloatingFilterParentModel(column) {\n return this.colFilter?.getCurrentFloatingFilterParentModel(column);\n }\n // destroys the filter, so it no longer takes part\n destroyFilter(column, source = \"api\") {\n this.colFilter?.destroyFilter(column, source);\n }\n areFilterCompsDifferent(oldCompDetails, newCompDetails) {\n return !!this.colFilter?.areFilterCompsDifferent(oldCompDetails, newCompDetails);\n }\n getAdvFilterModel() {\n return this.isAdvFilterEnabled() ? this.advancedFilter.getModel() : null;\n }\n setAdvFilterModel(expression, source = \"api\") {\n if (!this.isAdvFilterEnabled()) {\n return;\n }\n if (this.beans.dataTypeSvc?.isPendingInference) {\n this.advFilterModelUpdateQueue.push(expression);\n return;\n }\n this.advancedFilter.setModel(expression ?? null);\n this.onFilterChanged({ source });\n }\n toggleAdvFilterBuilder(show, source) {\n if (!this.isAdvFilterEnabled()) {\n return;\n }\n this.advancedFilter.getCtrl().toggleFilterBuilder({ source, force: show });\n }\n updateAdvFilterColumns() {\n if (!this.isAdvFilterEnabled()) {\n return;\n }\n if (this.advancedFilter.updateValidity()) {\n this.onFilterChanged({ source: \"advancedFilter\" });\n }\n }\n hasFloatingFilters() {\n if (this.isAdvFilterEnabled()) {\n return false;\n }\n return !!this.colFilter?.hasFloatingFilters();\n }\n getColumnFilterInstance(key) {\n if (this.isAdvFilterEnabled()) {\n this.warnAdvFilters();\n return Promise.resolve(void 0);\n }\n return this.colFilter?.getColumnFilterInstance(key) ?? Promise.resolve(void 0);\n }\n warnAdvFilters() {\n _warn(68);\n }\n setupAdvFilterHeaderComp(eCompToInsertBefore) {\n this.advancedFilter?.getCtrl().setupHeaderComp(eCompToInsertBefore);\n }\n getHeaderRowCount() {\n return this.isAdvFilterHeaderActive() ? 1 : 0;\n }\n getHeaderHeight() {\n return this.isAdvFilterHeaderActive() ? this.advancedFilter.getCtrl().getHeaderHeight() : 0;\n }\n processFilterModelUpdateQueue() {\n this.advFilterModelUpdateQueue.forEach((model) => this.setAdvFilterModel(model));\n this.advFilterModelUpdateQueue = [];\n }\n getColumnFilterModel(key) {\n return this.colFilter?.getColumnFilterModel(key);\n }\n setColumnFilterModel(key, model) {\n if (this.isAdvFilterEnabled()) {\n this.warnAdvFilters();\n return Promise.resolve();\n }\n return this.colFilter?.setColumnFilterModel(key, model) ?? Promise.resolve();\n }\n setColDefPropertiesForDataType(colDef, dataTypeDefinition, formatValue) {\n this.colFilter?.setColDefPropertiesForDataType(colDef, dataTypeDefinition, formatValue);\n }\n};\n\n// packages/ag-grid-community/src/filter/filterMenuFactory.ts\nvar FilterMenuFactory = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"filterMenuFactory\";\n }\n wireBeans(beans) {\n this.popupSvc = beans.popupSvc;\n }\n hideActiveMenu() {\n this.hidePopup?.();\n }\n showMenuAfterMouseEvent(column, mouseEvent, containerType, onClosedCallback) {\n this.showPopup(\n column,\n (eMenu) => {\n this.popupSvc?.positionPopupUnderMouseEvent({\n column,\n type: containerType,\n mouseEvent,\n ePopup: eMenu\n });\n },\n containerType,\n mouseEvent.target,\n _isLegacyMenuEnabled(this.gos),\n onClosedCallback\n );\n }\n showMenuAfterButtonClick(column, eventSource, containerType, onClosedCallback) {\n let multiplier = -1;\n let alignSide = \"left\";\n const isLegacyMenuEnabled = _isLegacyMenuEnabled(this.gos);\n if (!isLegacyMenuEnabled && this.gos.get(\"enableRtl\")) {\n multiplier = 1;\n alignSide = \"right\";\n }\n const nudgeX = isLegacyMenuEnabled ? void 0 : 4 * multiplier;\n const nudgeY = isLegacyMenuEnabled ? void 0 : 4;\n this.showPopup(\n column,\n (eMenu) => {\n this.popupSvc?.positionPopupByComponent({\n type: containerType,\n eventSource,\n ePopup: eMenu,\n nudgeX,\n nudgeY,\n alignSide,\n keepWithinBounds: true,\n position: \"under\",\n column\n });\n },\n containerType,\n eventSource,\n isLegacyMenuEnabled,\n onClosedCallback\n );\n }\n showPopup(column, positionCallback, containerType, eventSource, isLegacyMenuEnabled, onClosedCallback) {\n const comp = column ? this.createBean(new FilterWrapperComp(column, \"COLUMN_MENU\")) : void 0;\n this.activeMenu = comp;\n if (!comp?.hasFilter() || !column) {\n _error(57);\n return;\n }\n const eMenu = _createElement({\n tag: \"div\",\n cls: `ag-menu${!isLegacyMenuEnabled ? \" ag-filter-menu\" : \"\"}`,\n role: \"presentation\"\n });\n [this.tabListener] = this.addManagedElementListeners(eMenu, {\n keydown: (e) => this.trapFocusWithin(e, eMenu)\n });\n eMenu.appendChild(comp?.getGui());\n let hidePopup;\n const afterGuiDetached = () => comp?.afterGuiDetached();\n const anchorToElement = _isColumnMenuAnchoringEnabled(this.gos) ? eventSource ?? this.beans.ctrlsSvc.getGridBodyCtrl().eGridBody : void 0;\n const closedCallback = (e) => {\n _setColMenuVisible(column, false, \"contextMenu\");\n const isKeyboardEvent = e instanceof KeyboardEvent;\n if (this.tabListener) {\n this.tabListener = this.tabListener();\n }\n if (isKeyboardEvent && eventSource && _isVisible(eventSource)) {\n const focusableEl = _findTabbableParent(eventSource);\n focusableEl?.focus({ preventScroll: true });\n }\n afterGuiDetached();\n this.destroyBean(this.activeMenu);\n this.dispatchVisibleChangedEvent(false, containerType, column);\n onClosedCallback?.();\n };\n const translate = this.getLocaleTextFunc();\n const ariaLabel = isLegacyMenuEnabled && containerType !== \"columnFilter\" ? translate(\"ariaLabelColumnMenu\", \"Column Menu\") : translate(\"ariaLabelColumnFilter\", \"Column Filter\");\n const addPopupRes = this.popupSvc?.addPopup({\n modal: true,\n eChild: eMenu,\n closeOnEsc: true,\n closedCallback,\n positionCallback: () => positionCallback(eMenu),\n anchorToElement,\n ariaLabel\n });\n if (addPopupRes) {\n this.hidePopup = hidePopup = addPopupRes.hideFunc;\n }\n comp.afterInit().then(() => {\n positionCallback(eMenu);\n comp.afterGuiAttached({ container: containerType, hidePopup });\n });\n _setColMenuVisible(column, true, \"contextMenu\");\n this.dispatchVisibleChangedEvent(true, containerType, column);\n }\n trapFocusWithin(e, menu) {\n if (e.key !== KeyCode.TAB || e.defaultPrevented || _findNextFocusableElement(this.beans, menu, false, e.shiftKey)) {\n return;\n }\n e.preventDefault();\n _focusInto(menu, e.shiftKey);\n }\n dispatchVisibleChangedEvent(visible, containerType, column) {\n this.eventSvc.dispatchEvent({\n type: \"columnMenuVisibleChanged\",\n visible,\n switchingTab: false,\n key: containerType,\n column: column ?? null,\n columnGroup: null\n });\n }\n isMenuEnabled(column) {\n return column.isFilterAllowed() && (column.getColDef().menuTabs ?? [\"filterMenuTab\"]).includes(\"filterMenuTab\");\n }\n showMenuAfterContextMenuEvent() {\n }\n destroy() {\n this.destroyBean(this.activeMenu);\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/filter/filterValueService.ts\nvar FilterValueService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"filterValueSvc\";\n }\n getValue(column, rowNode) {\n if (!rowNode) {\n return;\n }\n const colDef = column.getColDef();\n const { filterValueGetter } = colDef;\n if (filterValueGetter) {\n return this.executeFilterValueGetter(filterValueGetter, rowNode.data, column, rowNode, colDef);\n }\n return this.beans.valueSvc.getValue(column, rowNode);\n }\n executeFilterValueGetter(valueGetter, data, column, node, colDef) {\n const { expressionSvc, valueSvc } = this.beans;\n const params = _addGridCommonParams(this.gos, {\n data,\n node,\n column,\n colDef,\n getValue: valueSvc.getValueCallback.bind(valueSvc, node)\n });\n if (typeof valueGetter === \"function\") {\n return valueGetter(params);\n }\n return expressionSvc?.evaluate(valueGetter, params);\n }\n};\n\n// packages/ag-grid-community/src/filter/floating/provided/readOnlyFloatingFilter.ts\nvar ReadOnlyFloatingFilterElement = {\n tag: \"div\",\n cls: \"ag-floating-filter-input\",\n role: \"presentation\",\n children: [\n {\n tag: \"ag-input-text-field\",\n ref: \"eFloatingFilterText\"\n }\n ]\n};\nvar ReadOnlyFloatingFilter = class extends Component {\n constructor() {\n super(ReadOnlyFloatingFilterElement, [AgInputTextFieldSelector]);\n this.eFloatingFilterText = RefPlaceholder;\n }\n init(params) {\n this.params = params;\n const displayName = this.beans.colNames.getDisplayNameForColumn(params.column, \"header\", true);\n this.eFloatingFilterText.setDisabled(true).setInputAriaLabel(`${displayName} ${this.getLocaleTextFunc()(\"ariaFilterInput\", \"Filter Input\")}`);\n }\n onParentModelChanged(parentModel) {\n if (parentModel == null) {\n this.eFloatingFilterText.setValue(\"\");\n return;\n }\n this.params.parentFilterInstance((filterInstance) => {\n if (filterInstance.getModelAsString) {\n const modelAsString = filterInstance.getModelAsString(parentModel);\n this.eFloatingFilterText.setValue(modelAsString);\n }\n });\n }\n refresh(params) {\n this.init(params);\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/optionsFactory.ts\nvar OptionsFactory = class {\n constructor() {\n this.customFilterOptions = {};\n }\n init(params, defaultOptions) {\n this.filterOptions = params.filterOptions || defaultOptions;\n this.mapCustomOptions();\n this.selectDefaultItem(params);\n }\n mapCustomOptions() {\n const { filterOptions } = this;\n if (!filterOptions) {\n return;\n }\n filterOptions.forEach((filterOption) => {\n if (typeof filterOption === \"string\") {\n return;\n }\n const requiredProperties = [[\"displayKey\"], [\"displayName\"], [\"predicate\", \"test\"]];\n const propertyCheck = (keys) => {\n if (!keys.some((key) => filterOption[key] != null)) {\n _warn(72, { keys });\n return false;\n }\n return true;\n };\n if (!requiredProperties.every(propertyCheck)) {\n this.filterOptions = filterOptions.filter((v) => v === filterOption) || [];\n return;\n }\n this.customFilterOptions[filterOption.displayKey] = filterOption;\n });\n }\n selectDefaultItem(params) {\n const { filterOptions } = this;\n if (params.defaultOption) {\n this.defaultOption = params.defaultOption;\n } else if (filterOptions.length >= 1) {\n const firstFilterOption = filterOptions[0];\n if (typeof firstFilterOption === \"string\") {\n this.defaultOption = firstFilterOption;\n } else if (firstFilterOption.displayKey) {\n this.defaultOption = firstFilterOption.displayKey;\n } else {\n _warn(73);\n }\n } else {\n _warn(74);\n }\n }\n getCustomOption(name) {\n return this.customFilterOptions[name];\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/simpleFilterUtils.ts\nfunction removeItems(items, startPosition, deleteCount) {\n return deleteCount == null ? items.splice(startPosition) : items.splice(startPosition, deleteCount);\n}\nfunction isBlank(cellValue) {\n return cellValue == null || typeof cellValue === \"string\" && cellValue.trim().length === 0;\n}\nfunction getDefaultJoinOperator(defaultJoinOperator) {\n return defaultJoinOperator === \"AND\" || defaultJoinOperator === \"OR\" ? defaultJoinOperator : \"AND\";\n}\nfunction evaluateCustomFilter(customFilterOption, values, cellValue) {\n if (customFilterOption == null) {\n return;\n }\n const { predicate } = customFilterOption;\n if (predicate != null && !values.some((v) => v == null)) {\n return predicate(values, cellValue);\n }\n return;\n}\nfunction validateAndUpdateConditions(conditions, maxNumConditions) {\n let numConditions = conditions.length;\n if (numConditions > maxNumConditions) {\n conditions.splice(maxNumConditions);\n _warn(78);\n numConditions = maxNumConditions;\n }\n return numConditions;\n}\n\n// packages/ag-grid-community/src/filter/provided/simpleFilter.ts\nvar SimpleFilter = class extends ProvidedFilter {\n constructor() {\n super(...arguments);\n this.eTypes = [];\n this.eJoinOperatorPanels = [];\n this.eJoinOperatorsAnd = [];\n this.eJoinOperatorsOr = [];\n this.eConditionBodies = [];\n this.listener = () => this.onUiChanged();\n this.lastUiCompletePosition = null;\n this.joinOperatorId = 0;\n }\n getNumberOfInputs(type) {\n const customOpts = this.optionsFactory.getCustomOption(type);\n if (customOpts) {\n const { numberOfInputs } = customOpts;\n return numberOfInputs != null ? numberOfInputs : 1;\n }\n const zeroInputTypes = [\"empty\", \"notBlank\", \"blank\"];\n if (type && zeroInputTypes.indexOf(type) >= 0) {\n return 0;\n } else if (type === \"inRange\") {\n return 2;\n }\n return 1;\n }\n // floating filter calls this when user applies filter from floating filter\n onFloatingFilterChanged(type, value) {\n this.setTypeFromFloatingFilter(type);\n this.setValueFromFloatingFilter(value);\n this.onUiChanged(true);\n }\n setTypeFromFloatingFilter(type) {\n this.eTypes.forEach((eType, position) => {\n const value = position === 0 ? type : this.optionsFactory.defaultOption;\n eType.setValue(value, true);\n });\n }\n getModelFromUi() {\n const conditions = this.getUiCompleteConditions();\n if (conditions.length === 0) {\n return null;\n }\n if (this.maxNumConditions > 1 && conditions.length > 1) {\n return {\n filterType: this.filterType,\n operator: this.getJoinOperator(),\n conditions\n };\n }\n return conditions[0];\n }\n getConditionTypes() {\n return this.eTypes.map((eType) => eType.getValue());\n }\n getConditionType(position) {\n return this.eTypes[position].getValue();\n }\n getJoinOperator() {\n const { eJoinOperatorsOr, defaultJoinOperator } = this;\n return eJoinOperatorsOr.length === 0 ? defaultJoinOperator : eJoinOperatorsOr[0].getValue() === true ? \"OR\" : \"AND\";\n }\n areModelsEqual(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a && b || a && !b) {\n return false;\n }\n const aIsSimple = !a.operator;\n const bIsSimple = !b.operator;\n const oneSimpleOneCombined = !aIsSimple && bIsSimple || aIsSimple && !bIsSimple;\n if (oneSimpleOneCombined) {\n return false;\n }\n let res;\n if (aIsSimple) {\n const aSimple = a;\n const bSimple = b;\n res = this.areSimpleModelsEqual(aSimple, bSimple);\n } else {\n const aCombined = a;\n const bCombined = b;\n res = aCombined.operator === bCombined.operator && _areEqual(\n aCombined.conditions,\n bCombined.conditions,\n (aModel, bModel) => this.areSimpleModelsEqual(aModel, bModel)\n );\n }\n return res;\n }\n shouldRefresh(newParams) {\n const model = this.getModel();\n const conditions = model ? model.conditions ?? [model] : null;\n const newOptionsList = newParams.filterOptions?.map((option) => typeof option === \"string\" ? option : option.displayKey) ?? this.getDefaultFilterOptions();\n const allConditionsExistInNewOptionsList = !conditions || conditions.every((condition) => newOptionsList.find((option) => option === condition.type) !== void 0);\n if (!allConditionsExistInNewOptionsList) {\n return false;\n }\n if (typeof newParams.maxNumConditions === \"number\" && conditions && conditions.length > newParams.maxNumConditions) {\n return false;\n }\n return true;\n }\n refresh(newParams) {\n if (!this.shouldRefresh(newParams)) {\n return false;\n }\n const parentRefreshed = super.refresh(newParams);\n if (!parentRefreshed) {\n return false;\n }\n this.setParams(newParams);\n this.removeConditionsAndOperators(0);\n this.createOption();\n this.setModel(this.getModel());\n return true;\n }\n setModelIntoUi(model) {\n const isCombined = model.operator;\n if (isCombined) {\n const combinedModel = model;\n let conditions = combinedModel.conditions;\n if (conditions == null) {\n conditions = [];\n _warn(77);\n }\n const numConditions = validateAndUpdateConditions(conditions, this.maxNumConditions);\n const numPrevConditions = this.getNumConditions();\n if (numConditions < numPrevConditions) {\n this.removeConditionsAndOperators(numConditions);\n } else if (numConditions > numPrevConditions) {\n for (let i = numPrevConditions; i < numConditions; i++) {\n this.createJoinOperatorPanel();\n this.createOption();\n }\n }\n const orChecked = combinedModel.operator === \"OR\";\n this.eJoinOperatorsAnd.forEach((eJoinOperatorAnd) => eJoinOperatorAnd.setValue(!orChecked, true));\n this.eJoinOperatorsOr.forEach((eJoinOperatorOr) => eJoinOperatorOr.setValue(orChecked, true));\n conditions.forEach((condition, position) => {\n this.eTypes[position].setValue(condition.type, true);\n this.setConditionIntoUi(condition, position);\n });\n } else {\n const simpleModel = model;\n if (this.getNumConditions() > 1) {\n this.removeConditionsAndOperators(1);\n }\n this.eTypes[0].setValue(simpleModel.type, true);\n this.setConditionIntoUi(simpleModel, 0);\n }\n this.lastUiCompletePosition = this.getNumConditions() - 1;\n this.createMissingConditionsAndOperators();\n this.onUiChanged();\n return AgPromise.resolve();\n }\n doesFilterPass(params) {\n const model = this.getModel();\n if (model == null) {\n return true;\n }\n const { operator } = model;\n const models = [];\n if (operator) {\n const combinedModel = model;\n models.push(...combinedModel.conditions ?? []);\n } else {\n models.push(model);\n }\n const combineFunction = operator && operator === \"OR\" ? \"some\" : \"every\";\n return models[combineFunction]((m) => this.individualConditionPasses(params, m));\n }\n setParams(params) {\n super.setParams(params);\n this.setNumConditions(params);\n this.defaultJoinOperator = getDefaultJoinOperator(params.defaultJoinOperator);\n this.filterPlaceholder = params.filterPlaceholder;\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params, this.getDefaultFilterOptions());\n this.createFilterListOptions();\n this.createOption();\n this.createMissingConditionsAndOperators();\n if (this.isReadOnly()) {\n this.eFilterBody.setAttribute(\"tabindex\", \"-1\");\n }\n }\n setNumConditions(params) {\n let maxNumConditions = params.maxNumConditions ?? 2;\n if (maxNumConditions < 1) {\n _warn(79);\n maxNumConditions = 1;\n }\n this.maxNumConditions = maxNumConditions;\n let numAlwaysVisibleConditions = params.numAlwaysVisibleConditions ?? 1;\n if (numAlwaysVisibleConditions < 1) {\n _warn(80);\n numAlwaysVisibleConditions = 1;\n }\n if (numAlwaysVisibleConditions > maxNumConditions) {\n _warn(81);\n numAlwaysVisibleConditions = maxNumConditions;\n }\n this.numAlwaysVisibleConditions = numAlwaysVisibleConditions;\n }\n createOption() {\n const eType = this.createManagedBean(new AgSelect());\n this.eTypes.push(eType);\n eType.addCssClass(\"ag-filter-select\");\n this.eFilterBody.appendChild(eType.getGui());\n const eConditionBody = this.createValueElement();\n this.eConditionBodies.push(eConditionBody);\n this.eFilterBody.appendChild(eConditionBody);\n this.putOptionsIntoDropdown(eType);\n this.resetType(eType);\n const position = this.getNumConditions() - 1;\n this.forEachPositionInput(position, (element) => this.resetInput(element));\n this.addChangedListeners(eType, position);\n }\n createJoinOperatorPanel() {\n const eJoinOperatorPanel = _createElement({ tag: \"div\", cls: \"ag-filter-condition\" });\n this.eJoinOperatorPanels.push(eJoinOperatorPanel);\n const eJoinOperatorAnd = this.createJoinOperator(this.eJoinOperatorsAnd, eJoinOperatorPanel, \"and\");\n const eJoinOperatorOr = this.createJoinOperator(this.eJoinOperatorsOr, eJoinOperatorPanel, \"or\");\n this.eFilterBody.appendChild(eJoinOperatorPanel);\n const index = this.eJoinOperatorPanels.length - 1;\n const uniqueGroupId = this.joinOperatorId++;\n this.resetJoinOperatorAnd(eJoinOperatorAnd, index, uniqueGroupId);\n this.resetJoinOperatorOr(eJoinOperatorOr, index, uniqueGroupId);\n if (!this.isReadOnly()) {\n eJoinOperatorAnd.onValueChange(this.listener);\n eJoinOperatorOr.onValueChange(this.listener);\n }\n }\n createJoinOperator(eJoinOperators, eJoinOperatorPanel, andOr) {\n const eJoinOperator = this.createManagedBean(new AgRadioButton());\n eJoinOperators.push(eJoinOperator);\n const baseClass = \"ag-filter-condition-operator\";\n eJoinOperator.addCssClass(baseClass);\n eJoinOperator.addCssClass(`${baseClass}-${andOr}`);\n eJoinOperatorPanel.appendChild(eJoinOperator.getGui());\n return eJoinOperator;\n }\n createFilterListOptions() {\n this.filterListOptions = this.optionsFactory.filterOptions.map(\n (option) => typeof option === \"string\" ? this.createBoilerplateListOption(option) : this.createCustomListOption(option)\n );\n }\n putOptionsIntoDropdown(eType) {\n const { filterListOptions } = this;\n filterListOptions.forEach((listOption) => {\n eType.addOption(listOption);\n });\n eType.setDisabled(filterListOptions.length <= 1);\n }\n createBoilerplateListOption(option) {\n return { value: option, text: this.translate(option) };\n }\n createCustomListOption(option) {\n const { displayKey } = option;\n const customOption = this.optionsFactory.getCustomOption(option.displayKey);\n return {\n value: displayKey,\n text: customOption ? this.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) : this.translate(displayKey)\n };\n }\n createBodyTemplate() {\n return null;\n }\n getAgComponents() {\n return [];\n }\n getCssIdentifier() {\n return \"simple-filter\";\n }\n updateUiVisibility() {\n const joinOperator = this.getJoinOperator();\n this.updateNumConditions();\n this.updateConditionStatusesAndValues(this.lastUiCompletePosition, joinOperator);\n }\n updateNumConditions() {\n let lastUiCompletePosition = -1;\n let areAllConditionsUiComplete = true;\n for (let position = 0; position < this.getNumConditions(); position++) {\n if (this.isConditionUiComplete(position)) {\n lastUiCompletePosition = position;\n } else {\n areAllConditionsUiComplete = false;\n }\n }\n if (this.shouldAddNewConditionAtEnd(areAllConditionsUiComplete)) {\n this.createJoinOperatorPanel();\n this.createOption();\n } else {\n const activePosition = this.lastUiCompletePosition ?? this.getNumConditions() - 2;\n if (lastUiCompletePosition < activePosition) {\n this.removeConditionsAndOperators(activePosition + 1);\n const removeStartPosition = lastUiCompletePosition + 1;\n const numConditionsToRemove = activePosition - removeStartPosition;\n if (numConditionsToRemove > 0) {\n this.removeConditionsAndOperators(removeStartPosition, numConditionsToRemove);\n }\n this.createMissingConditionsAndOperators();\n }\n }\n this.lastUiCompletePosition = lastUiCompletePosition;\n }\n updateConditionStatusesAndValues(lastUiCompletePosition, joinOperator) {\n this.eTypes.forEach((eType, position) => {\n const disabled = this.isConditionDisabled(position, lastUiCompletePosition);\n eType.setDisabled(disabled || this.filterListOptions.length <= 1);\n if (position === 1) {\n _setDisabled(this.eJoinOperatorPanels[0], disabled);\n this.eJoinOperatorsAnd[0].setDisabled(disabled);\n this.eJoinOperatorsOr[0].setDisabled(disabled);\n }\n });\n this.eConditionBodies.forEach((element, index) => {\n _setDisplayed(element, this.isConditionBodyVisible(index));\n });\n const orChecked = (joinOperator ?? this.getJoinOperator()) === \"OR\";\n this.eJoinOperatorsAnd.forEach((eJoinOperatorAnd) => {\n eJoinOperatorAnd.setValue(!orChecked, true);\n });\n this.eJoinOperatorsOr.forEach((eJoinOperatorOr) => {\n eJoinOperatorOr.setValue(orChecked, true);\n });\n this.forEachInput((element, index, position, numberOfInputs) => {\n this.setElementDisplayed(element, index < numberOfInputs);\n this.setElementDisabled(element, this.isConditionDisabled(position, lastUiCompletePosition));\n });\n this.resetPlaceholder();\n }\n shouldAddNewConditionAtEnd(areAllConditionsUiComplete) {\n return areAllConditionsUiComplete && this.getNumConditions() < this.maxNumConditions && !this.isReadOnly();\n }\n removeConditionsAndOperators(startPosition, deleteCount) {\n if (startPosition >= this.getNumConditions()) {\n return;\n }\n const { eTypes, eConditionBodies, eJoinOperatorPanels, eJoinOperatorsAnd, eJoinOperatorsOr } = this;\n this.removeComponents(eTypes, startPosition, deleteCount);\n this.removeElements(eConditionBodies, startPosition, deleteCount);\n this.removeValueElements(startPosition, deleteCount);\n const joinOperatorIndex = Math.max(startPosition - 1, 0);\n this.removeElements(eJoinOperatorPanels, joinOperatorIndex, deleteCount);\n this.removeComponents(eJoinOperatorsAnd, joinOperatorIndex, deleteCount);\n this.removeComponents(eJoinOperatorsOr, joinOperatorIndex, deleteCount);\n }\n removeElements(elements, startPosition, deleteCount) {\n const removedElements = removeItems(elements, startPosition, deleteCount);\n removedElements.forEach((element) => _removeFromParent(element));\n }\n removeComponents(components, startPosition, deleteCount) {\n const removedComponents = removeItems(components, startPosition, deleteCount);\n removedComponents.forEach((comp) => {\n _removeFromParent(comp.getGui());\n this.destroyBean(comp);\n });\n }\n afterGuiAttached(params) {\n super.afterGuiAttached(params);\n this.resetPlaceholder();\n if (!params?.suppressFocus) {\n const { eFilterBody, eTypes } = this;\n let elementToFocus;\n if (!this.isReadOnly()) {\n const firstInput = this.getInputs(0)[0];\n if (firstInput instanceof AgAbstractInputField && this.isConditionBodyVisible(0)) {\n elementToFocus = firstInput.getInputElement();\n } else {\n elementToFocus = eTypes[0]?.getFocusableElement();\n }\n }\n (elementToFocus ?? eFilterBody).focus({ preventScroll: true });\n }\n }\n afterGuiDetached() {\n super.afterGuiDetached();\n const appliedModel = this.getModel();\n this.resetUiToActiveModel(appliedModel);\n let lastUiCompletePosition = -1;\n let updatedLastUiCompletePosition = -1;\n let conditionsRemoved = false;\n const joinOperator = this.getJoinOperator();\n for (let position = this.getNumConditions() - 1; position >= 0; position--) {\n if (this.isConditionUiComplete(position)) {\n if (lastUiCompletePosition === -1) {\n lastUiCompletePosition = position;\n updatedLastUiCompletePosition = position;\n }\n } else {\n const shouldRemovePositionAtEnd = position >= this.numAlwaysVisibleConditions && !this.isConditionUiComplete(position - 1);\n const positionBeforeLastUiCompletePosition = position < lastUiCompletePosition;\n if (shouldRemovePositionAtEnd || positionBeforeLastUiCompletePosition) {\n this.removeConditionsAndOperators(position, 1);\n conditionsRemoved = true;\n if (positionBeforeLastUiCompletePosition) {\n updatedLastUiCompletePosition--;\n }\n }\n }\n }\n let shouldUpdateConditionStatusesAndValues = false;\n if (this.getNumConditions() < this.numAlwaysVisibleConditions) {\n this.createMissingConditionsAndOperators();\n shouldUpdateConditionStatusesAndValues = true;\n }\n if (this.shouldAddNewConditionAtEnd(updatedLastUiCompletePosition === this.getNumConditions() - 1)) {\n this.createJoinOperatorPanel();\n this.createOption();\n shouldUpdateConditionStatusesAndValues = true;\n }\n if (shouldUpdateConditionStatusesAndValues) {\n this.updateConditionStatusesAndValues(updatedLastUiCompletePosition, joinOperator);\n }\n if (conditionsRemoved) {\n this.updateJoinOperatorsDisabled();\n }\n this.lastUiCompletePosition = updatedLastUiCompletePosition;\n }\n getPlaceholderText(defaultPlaceholder, position) {\n let placeholder = this.translate(defaultPlaceholder);\n if (typeof this.filterPlaceholder === \"function\") {\n const filterOptionKey = this.eTypes[position].getValue();\n const filterOption = this.translate(filterOptionKey);\n placeholder = this.filterPlaceholder({\n filterOptionKey,\n filterOption,\n placeholder\n });\n } else if (typeof this.filterPlaceholder === \"string\") {\n placeholder = this.filterPlaceholder;\n }\n return placeholder;\n }\n // allow sub-classes to reset HTML placeholders after UI update.\n resetPlaceholder() {\n const globalTranslate = this.getLocaleTextFunc();\n this.forEachInput((element, index, position, numberOfInputs) => {\n if (!(element instanceof AgAbstractInputField)) {\n return;\n }\n const placeholder = index === 0 && numberOfInputs > 1 ? \"inRangeStart\" : index === 0 ? \"filterOoo\" : \"inRangeEnd\";\n const ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate(\"ariaFilterFromValue\", \"Filter from value\") : index === 0 ? globalTranslate(\"ariaFilterValue\", \"Filter Value\") : globalTranslate(\"ariaFilterToValue\", \"Filter to Value\");\n element.setInputPlaceholder(this.getPlaceholderText(placeholder, position));\n element.setInputAriaLabel(ariaLabel);\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setElementValue(element, value, fromFloatingFilter) {\n if (element instanceof AgAbstractInputField) {\n element.setValue(value != null ? String(value) : null, true);\n }\n }\n setElementDisplayed(element, displayed) {\n if (element instanceof Component) {\n _setDisplayed(element.getGui(), displayed);\n }\n }\n setElementDisabled(element, disabled) {\n if (element instanceof Component) {\n _setDisabled(element.getGui(), disabled);\n }\n }\n attachElementOnChange(element, listener) {\n if (element instanceof AgAbstractInputField) {\n element.onValueChange(listener);\n }\n }\n forEachInput(cb) {\n this.getConditionTypes().forEach((type, position) => {\n this.forEachPositionTypeInput(position, type, cb);\n });\n }\n forEachPositionInput(position, cb) {\n const type = this.getConditionType(position);\n this.forEachPositionTypeInput(position, type, cb);\n }\n forEachPositionTypeInput(position, type, cb) {\n const numberOfInputs = this.getNumberOfInputs(type);\n const inputs = this.getInputs(position);\n for (let index = 0; index < inputs.length; index++) {\n const input = inputs[index];\n if (input != null) {\n cb(input, index, position, numberOfInputs);\n }\n }\n }\n isConditionDisabled(position, lastUiCompletePosition) {\n if (this.isReadOnly()) {\n return true;\n }\n if (position === 0) {\n return false;\n }\n return position > lastUiCompletePosition + 1;\n }\n isConditionBodyVisible(position) {\n const type = this.getConditionType(position);\n const numberOfInputs = this.getNumberOfInputs(type);\n return numberOfInputs > 0;\n }\n // returns true if the UI represents a working filter, eg all parts are filled out.\n // eg if text filter and textfield blank then returns false.\n isConditionUiComplete(position) {\n if (position >= this.getNumConditions()) {\n return false;\n }\n const type = this.getConditionType(position);\n if (type === \"empty\") {\n return false;\n }\n if (this.getValues(position).some((v) => v == null)) {\n return false;\n }\n return true;\n }\n getNumConditions() {\n return this.eTypes.length;\n }\n getUiCompleteConditions() {\n const conditions = [];\n for (let position = 0; position < this.getNumConditions(); position++) {\n if (this.isConditionUiComplete(position)) {\n conditions.push(this.createCondition(position));\n }\n }\n return conditions;\n }\n createMissingConditionsAndOperators() {\n if (this.isReadOnly()) {\n return;\n }\n for (let i = this.getNumConditions(); i < this.numAlwaysVisibleConditions; i++) {\n this.createJoinOperatorPanel();\n this.createOption();\n }\n }\n resetUiToDefaults(silent) {\n this.removeConditionsAndOperators(this.isReadOnly() ? 1 : this.numAlwaysVisibleConditions);\n this.eTypes.forEach((eType) => this.resetType(eType));\n this.eJoinOperatorsAnd.forEach(\n (eJoinOperatorAnd, index) => this.resetJoinOperatorAnd(eJoinOperatorAnd, index, this.joinOperatorId + index)\n );\n this.eJoinOperatorsOr.forEach(\n (eJoinOperatorOr, index) => this.resetJoinOperatorOr(eJoinOperatorOr, index, this.joinOperatorId + index)\n );\n this.joinOperatorId++;\n this.forEachInput((element) => this.resetInput(element));\n this.resetPlaceholder();\n this.createMissingConditionsAndOperators();\n this.lastUiCompletePosition = null;\n if (!silent) {\n this.onUiChanged();\n }\n return AgPromise.resolve();\n }\n resetType(eType) {\n const translate = this.getLocaleTextFunc();\n const filteringLabel = translate(\"ariaFilteringOperator\", \"Filtering operator\");\n eType.setValue(this.optionsFactory.defaultOption, true).setAriaLabel(filteringLabel).setDisabled(this.isReadOnly() || this.filterListOptions.length <= 1);\n }\n resetJoinOperatorAnd(eJoinOperatorAnd, index, uniqueGroupId) {\n this.resetJoinOperator(\n eJoinOperatorAnd,\n index,\n this.defaultJoinOperator === \"AND\",\n this.translate(\"andCondition\"),\n uniqueGroupId\n );\n }\n resetJoinOperatorOr(eJoinOperatorOr, index, uniqueGroupId) {\n this.resetJoinOperator(\n eJoinOperatorOr,\n index,\n this.defaultJoinOperator === \"OR\",\n this.translate(\"orCondition\"),\n uniqueGroupId\n );\n }\n resetJoinOperator(eJoinOperator, index, value, label, uniqueGroupId) {\n this.updateJoinOperatorDisabled(\n eJoinOperator.setValue(value, true).setName(`ag-simple-filter-and-or-${this.getCompId()}-${uniqueGroupId}`).setLabel(label),\n index\n );\n }\n updateJoinOperatorsDisabled() {\n const updater = (eJoinOperator, index) => this.updateJoinOperatorDisabled(eJoinOperator, index);\n this.eJoinOperatorsAnd.forEach(updater);\n this.eJoinOperatorsOr.forEach(updater);\n }\n updateJoinOperatorDisabled(eJoinOperator, index) {\n eJoinOperator.setDisabled(this.isReadOnly() || index > 0);\n }\n resetInput(element) {\n this.setElementValue(element, null);\n this.setElementDisabled(element, this.isReadOnly());\n }\n // puts model values into the UI\n setConditionIntoUi(model, position) {\n const values = this.mapValuesFromModel(model);\n this.forEachInput((element, index, elPosition) => {\n if (elPosition !== position) {\n return;\n }\n this.setElementValue(element, values[index] != null ? values[index] : null);\n });\n }\n // after floating filter changes, this sets the 'value' section. this is implemented by the base class\n // (as that's where value is controlled), the 'type' part from the floating filter is dealt with in this class.\n setValueFromFloatingFilter(value) {\n this.forEachInput((element, index, position) => {\n this.setElementValue(element, index === 0 && position === 0 ? value : null, true);\n });\n }\n addChangedListeners(eType, position) {\n if (this.isReadOnly()) {\n return;\n }\n eType.onValueChange(this.listener);\n this.forEachPositionInput(position, (element) => {\n this.attachElementOnChange(element, this.listener);\n });\n }\n /** returns true if the row passes the said condition */\n individualConditionPasses(params, filterModel) {\n const cellValue = this.getCellValue(params.node);\n const values = this.mapValuesFromModel(filterModel);\n const customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);\n const customFilterResult = evaluateCustomFilter(customFilterOption, values, cellValue);\n if (customFilterResult != null) {\n return customFilterResult;\n }\n if (cellValue == null) {\n return this.evaluateNullValue(filterModel.type);\n }\n return this.evaluateNonNullValue(values, cellValue, filterModel, params);\n }\n hasInvalidInputs() {\n return false;\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/scalarFilter.ts\nvar ScalarFilter = class extends SimpleFilter {\n setParams(params) {\n super.setParams(params);\n this.scalarFilterParams = params;\n }\n evaluateNullValue(filterType) {\n const {\n includeBlanksInEquals,\n includeBlanksInNotEqual,\n includeBlanksInGreaterThan,\n includeBlanksInLessThan,\n includeBlanksInRange\n } = this.scalarFilterParams;\n switch (filterType) {\n case \"equals\":\n if (includeBlanksInEquals) {\n return true;\n }\n break;\n case \"notEqual\":\n if (includeBlanksInNotEqual) {\n return true;\n }\n break;\n case \"greaterThan\":\n case \"greaterThanOrEqual\":\n if (includeBlanksInGreaterThan) {\n return true;\n }\n break;\n case \"lessThan\":\n case \"lessThanOrEqual\":\n if (includeBlanksInLessThan) {\n return true;\n }\n break;\n case \"inRange\":\n if (includeBlanksInRange) {\n return true;\n }\n break;\n case \"blank\":\n return true;\n case \"notBlank\":\n return false;\n }\n return false;\n }\n evaluateNonNullValue(values, cellValue, filterModel) {\n const type = filterModel.type;\n if (!this.isValid(cellValue)) {\n return type === \"notEqual\" || type === \"notBlank\";\n }\n const comparator = this.comparator();\n const compareResult = values[0] != null ? comparator(values[0], cellValue) : 0;\n switch (type) {\n case \"equals\":\n return compareResult === 0;\n case \"notEqual\":\n return compareResult !== 0;\n case \"greaterThan\":\n return compareResult > 0;\n case \"greaterThanOrEqual\":\n return compareResult >= 0;\n case \"lessThan\":\n return compareResult < 0;\n case \"lessThanOrEqual\":\n return compareResult <= 0;\n case \"inRange\": {\n const compareToResult = comparator(values[1], cellValue);\n return this.scalarFilterParams.inRangeInclusive ? compareResult >= 0 && compareToResult <= 0 : compareResult > 0 && compareToResult < 0;\n }\n case \"blank\":\n return isBlank(cellValue);\n case \"notBlank\":\n return !isBlank(cellValue);\n default:\n _warn(76, { filterModelType: type });\n return true;\n }\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateCompWrapper.ts\nvar DateCompWrapper = class {\n constructor(context, userCompFactory, colDef, dateComponentParams, eParent, onReady) {\n this.alive = true;\n this.context = context;\n this.eParent = eParent;\n const compDetails = _getDateCompDetails(userCompFactory, colDef, dateComponentParams);\n if (!compDetails) {\n return;\n }\n compDetails.newAgStackInstance().then((dateComp) => {\n if (!this.alive) {\n context.destroyBean(dateComp);\n return;\n }\n this.dateComp = dateComp;\n if (!dateComp) {\n return;\n }\n eParent.appendChild(dateComp.getGui());\n dateComp?.afterGuiAttached?.();\n const { tempValue, disabled } = this;\n if (tempValue) {\n dateComp.setDate(tempValue);\n }\n if (disabled != null) {\n dateComp.setDisabled?.(disabled);\n }\n onReady?.(this);\n });\n }\n destroy() {\n this.alive = false;\n this.dateComp = this.context.destroyBean(this.dateComp);\n }\n getDate() {\n return this.dateComp ? this.dateComp.getDate() : this.tempValue;\n }\n setDate(value) {\n const dateComp = this.dateComp;\n if (dateComp) {\n dateComp.setDate(value);\n } else {\n this.tempValue = value;\n }\n }\n setDisabled(disabled) {\n const dateComp = this.dateComp;\n if (dateComp) {\n dateComp.setDisabled?.(disabled);\n } else {\n this.disabled = disabled;\n }\n }\n setDisplayed(displayed) {\n _setDisplayed(this.eParent, displayed);\n }\n setInputPlaceholder(placeholder) {\n this.dateComp?.setInputPlaceholder?.(placeholder);\n }\n setInputAriaLabel(label) {\n this.dateComp?.setInputAriaLabel?.(label);\n }\n afterGuiAttached(params) {\n this.dateComp?.afterGuiAttached?.(params);\n }\n updateParams(params) {\n this.dateComp?.refresh?.(params);\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateFilterConstants.ts\nvar DEFAULT_DATE_FILTER_OPTIONS = [\n \"equals\",\n \"notEqual\",\n \"lessThan\",\n \"greaterThan\",\n \"inRange\",\n \"blank\",\n \"notBlank\"\n];\n\n// packages/ag-grid-community/src/filter/provided/simpleFilterModelFormatter.ts\nvar SimpleFilterModelFormatter = class {\n constructor(getLocaleTextFunc, optionsFactory, valueFormatter) {\n this.getLocaleTextFunc = getLocaleTextFunc;\n this.optionsFactory = optionsFactory;\n this.valueFormatter = valueFormatter;\n }\n // used by:\n // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n getModelAsString(model) {\n if (!model) {\n return null;\n }\n const isCombined = model.operator != null;\n const translate = this.getLocaleTextFunc();\n if (isCombined) {\n const combinedModel = model;\n const conditions = combinedModel.conditions ?? [];\n const customOptions = conditions.map((condition) => this.getModelAsString(condition));\n const joinOperatorTranslateKey = combinedModel.operator === \"AND\" ? \"andCondition\" : \"orCondition\";\n return customOptions.join(\n ` ${translate(joinOperatorTranslateKey, FILTER_LOCALE_TEXT[joinOperatorTranslateKey])} `\n );\n } else if (model.type === \"blank\" || model.type === \"notBlank\") {\n return translate(model.type, model.type);\n } else {\n const condition = model;\n const customOption = this.optionsFactory.getCustomOption(condition.type);\n const { displayKey, displayName, numberOfInputs } = customOption || {};\n if (displayKey && displayName && numberOfInputs === 0) {\n translate(displayKey, displayName);\n return displayName;\n }\n return this.conditionToString(condition, customOption);\n }\n }\n updateParams(params) {\n this.optionsFactory = params.optionsFactory;\n }\n formatValue(value) {\n const valueFormatter = this.valueFormatter;\n return valueFormatter ? valueFormatter(value ?? null) ?? \"\" : String(value);\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateFilterModelFormatter.ts\nvar DateFilterModelFormatter = class extends SimpleFilterModelFormatter {\n constructor(dateFilterParams, getLocaleTextFunc, optionsFactory) {\n super(getLocaleTextFunc, optionsFactory);\n this.dateFilterParams = dateFilterParams;\n }\n conditionToString(condition, options) {\n const { type } = condition;\n const { numberOfInputs } = options || {};\n const isRange = type == \"inRange\" || numberOfInputs === 2;\n const dateFrom = _parseDateTimeFromString(condition.dateFrom);\n const dateTo = _parseDateTimeFromString(condition.dateTo);\n const format = this.dateFilterParams.inRangeFloatingFilterDateFormat;\n if (isRange) {\n const formattedFrom = dateFrom !== null ? _dateToFormattedString(dateFrom, format) : \"null\";\n const formattedTo = dateTo !== null ? _dateToFormattedString(dateTo, format) : \"null\";\n return `${formattedFrom}-${formattedTo}`;\n }\n if (dateFrom != null) {\n return _dateToFormattedString(dateFrom, format);\n }\n return `${type}`;\n }\n updateParams(params) {\n super.updateParams(params);\n this.dateFilterParams = params.dateFilterParams;\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateFilter.ts\nvar DEFAULT_MIN_YEAR = 1e3;\nvar DEFAULT_MAX_YEAR = Infinity;\nvar DateFilter = class extends ScalarFilter {\n constructor() {\n super(\"dateFilter\");\n this.eConditionPanelsFrom = [];\n this.eConditionPanelsTo = [];\n this.dateConditionFromComps = [];\n this.dateConditionToComps = [];\n this.minValidYear = DEFAULT_MIN_YEAR;\n this.maxValidYear = DEFAULT_MAX_YEAR;\n this.minValidDate = null;\n this.maxValidDate = null;\n this.filterType = \"date\";\n }\n afterGuiAttached(params) {\n super.afterGuiAttached(params);\n this.dateConditionFromComps[0].afterGuiAttached(params);\n }\n mapValuesFromModel(filterModel) {\n const { dateFrom, dateTo, type } = filterModel || {};\n return [\n dateFrom && _parseDateTimeFromString(dateFrom) || null,\n dateTo && _parseDateTimeFromString(dateTo) || null\n ].slice(0, this.getNumberOfInputs(type));\n }\n comparator() {\n return this.dateFilterParams.comparator ?? defaultDateComparator;\n }\n isValid(value) {\n const isValidDate2 = this.dateFilterParams.isValidDate;\n return !isValidDate2 || isValidDate2(value);\n }\n setParams(params) {\n this.dateFilterParams = params;\n super.setParams(params);\n const yearParser = (param, fallback) => {\n if (params[param] != null) {\n if (!isNaN(params[param])) {\n return params[param] == null ? fallback : Number(params[param]);\n } else {\n _warn(82, { param });\n }\n }\n return fallback;\n };\n this.minValidYear = yearParser(\"minValidYear\", DEFAULT_MIN_YEAR);\n this.maxValidYear = yearParser(\"maxValidYear\", DEFAULT_MAX_YEAR);\n if (this.minValidYear > this.maxValidYear) {\n _warn(83);\n }\n this.minValidDate = params.minValidDate ? params.minValidDate instanceof Date ? params.minValidDate : _parseDateTimeFromString(params.minValidDate) : null;\n this.maxValidDate = params.maxValidDate ? params.maxValidDate instanceof Date ? params.maxValidDate : _parseDateTimeFromString(params.maxValidDate) : null;\n if (this.minValidDate && this.maxValidDate && this.minValidDate > this.maxValidDate) {\n _warn(84);\n }\n this.filterModelFormatter = new DateFilterModelFormatter(\n this.dateFilterParams,\n this.getLocaleTextFunc.bind(this),\n this.optionsFactory\n );\n }\n createDateCompWrapper(element) {\n const {\n beans: { userCompFactory, context, gos },\n dateFilterParams\n } = this;\n const dateCompWrapper = new DateCompWrapper(\n context,\n userCompFactory,\n dateFilterParams.colDef,\n _addGridCommonParams(gos, {\n onDateChanged: () => this.onUiChanged(),\n filterParams: dateFilterParams,\n location: \"filter\"\n }),\n element\n );\n this.addDestroyFunc(() => dateCompWrapper.destroy());\n return dateCompWrapper;\n }\n setElementValue(element, value) {\n element.setDate(value);\n }\n setElementDisplayed(element, displayed) {\n element.setDisplayed(displayed);\n }\n setElementDisabled(element, disabled) {\n element.setDisabled(disabled);\n }\n getDefaultFilterOptions() {\n return DEFAULT_DATE_FILTER_OPTIONS;\n }\n createValueElement() {\n const eDocument = _getDocument(this.beans);\n const eCondition = eDocument.createElement(\"div\");\n eCondition.classList.add(\"ag-filter-body\");\n this.createFromToElement(eCondition, this.eConditionPanelsFrom, this.dateConditionFromComps, \"from\");\n this.createFromToElement(eCondition, this.eConditionPanelsTo, this.dateConditionToComps, \"to\");\n return eCondition;\n }\n createFromToElement(eCondition, eConditionPanels, dateConditionComps, fromTo) {\n const eDocument = _getDocument(this.beans);\n const eConditionPanel = eDocument.createElement(\"div\");\n eConditionPanel.classList.add(`ag-filter-${fromTo}`);\n eConditionPanel.classList.add(`ag-filter-date-${fromTo}`);\n eConditionPanels.push(eConditionPanel);\n eCondition.appendChild(eConditionPanel);\n dateConditionComps.push(this.createDateCompWrapper(eConditionPanel));\n }\n removeValueElements(startPosition, deleteCount) {\n this.removeDateComps(this.dateConditionFromComps, startPosition, deleteCount);\n this.removeDateComps(this.dateConditionToComps, startPosition, deleteCount);\n removeItems(this.eConditionPanelsFrom, startPosition, deleteCount);\n removeItems(this.eConditionPanelsTo, startPosition, deleteCount);\n }\n removeDateComps(components, startPosition, deleteCount) {\n const removedComponents = removeItems(components, startPosition, deleteCount);\n removedComponents.forEach((comp) => comp.destroy());\n }\n isValidDateValue(value) {\n if (value === null) {\n return false;\n }\n const { minValidDate, maxValidDate, minValidYear, maxValidYear } = this;\n if (minValidDate) {\n if (value < minValidDate) {\n return false;\n }\n } else {\n if (value.getUTCFullYear() < minValidYear) {\n return false;\n }\n }\n if (maxValidDate) {\n if (value > maxValidDate) {\n return false;\n }\n } else {\n if (value.getUTCFullYear() > maxValidYear) {\n return false;\n }\n }\n return true;\n }\n isConditionUiComplete(position) {\n if (!super.isConditionUiComplete(position)) {\n return false;\n }\n let valid = true;\n this.forEachInput((element, index, elPosition, numberOfInputs) => {\n if (elPosition !== position || !valid || index >= numberOfInputs) {\n return;\n }\n valid = valid && this.isValidDateValue(element.getDate());\n });\n return valid;\n }\n areSimpleModelsEqual(aSimple, bSimple) {\n return aSimple.dateFrom === bSimple.dateFrom && aSimple.dateTo === bSimple.dateTo && aSimple.type === bSimple.type;\n }\n createCondition(position) {\n const type = this.getConditionType(position);\n const model = {};\n const values = this.getValues(position);\n if (values.length > 0) {\n model.dateFrom = _serialiseDate(values[0]);\n }\n if (values.length > 1) {\n model.dateTo = _serialiseDate(values[1]);\n }\n return {\n dateFrom: null,\n dateTo: null,\n filterType: this.filterType,\n type,\n ...model\n };\n }\n resetPlaceholder() {\n const globalTranslate = this.getLocaleTextFunc();\n const placeholder = this.translate(\"dateFormatOoo\");\n const ariaLabel = globalTranslate(\"ariaFilterValue\", \"Filter Value\");\n this.forEachInput((element) => {\n element.setInputPlaceholder(placeholder);\n element.setInputAriaLabel(ariaLabel);\n });\n }\n getInputs(position) {\n const { dateConditionFromComps, dateConditionToComps } = this;\n if (position >= dateConditionFromComps.length) {\n return [null, null];\n }\n return [dateConditionFromComps[position], dateConditionToComps[position]];\n }\n getValues(position) {\n const result = [];\n this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n if (index < numberOfInputs) {\n result.push(element.getDate());\n }\n });\n return result;\n }\n translate(key) {\n if (key === \"lessThan\") {\n return super.translate(\"before\");\n }\n if (key === \"greaterThan\") {\n return super.translate(\"after\");\n }\n return super.translate(key);\n }\n getModelAsString(model) {\n return this.filterModelFormatter.getModelAsString(model) ?? \"\";\n }\n};\nfunction defaultDateComparator(filterDate, cellValue) {\n const cellAsDate = cellValue;\n if (cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return 0;\n}\n\n// packages/ag-grid-community/src/filter/floating/provided/simpleFloatingFilter.ts\nvar SimpleFloatingFilter = class extends Component {\n constructor() {\n super(...arguments);\n this.defaultDebounceMs = 0;\n }\n setLastTypeFromModel(model) {\n if (!model) {\n this.lastType = this.optionsFactory.defaultOption;\n return;\n }\n const isCombined = model.operator;\n let condition;\n if (isCombined) {\n const combinedModel = model;\n condition = combinedModel.conditions[0];\n } else {\n condition = model;\n }\n this.lastType = condition.type;\n }\n canWeEditAfterModelFromParentFilter(model) {\n if (!model) {\n return this.isTypeEditable(this.lastType);\n }\n const isCombined = model.operator;\n if (isCombined) {\n return false;\n }\n const simpleModel = model;\n return this.isTypeEditable(simpleModel.type);\n }\n init(params) {\n this.setSimpleParams(params, false);\n }\n setSimpleParams(params, update = true) {\n const optionsFactory = new OptionsFactory();\n this.optionsFactory = optionsFactory;\n optionsFactory.init(params.filterParams, this.getDefaultOptions());\n const defaultOption = optionsFactory.defaultOption;\n if (!update) {\n this.lastType = defaultOption;\n }\n this.readOnly = !!params.filterParams.readOnly;\n const editable = this.isTypeEditable(defaultOption);\n this.setEditable(editable);\n }\n refresh(params) {\n this.setSimpleParams(params);\n }\n hasSingleInput(filterType) {\n const numberOfInputs = this.optionsFactory.getCustomOption(filterType)?.numberOfInputs;\n return numberOfInputs == null || numberOfInputs == 1;\n }\n isTypeEditable(type) {\n const uneditableTypes = [\"inRange\", \"empty\", \"blank\", \"notBlank\"];\n return !!type && !this.readOnly && this.hasSingleInput(type) && uneditableTypes.indexOf(type) < 0;\n }\n getAriaLabel(params) {\n const displayName = this.beans.colNames.getDisplayNameForColumn(params.column, \"header\", true);\n return `${displayName} ${this.getLocaleTextFunc()(\"ariaFilterInput\", \"Filter Input\")}`;\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/dateFloatingFilter.ts\nvar DateFloatingFilterElement = {\n tag: \"div\",\n cls: \"ag-floating-filter-input\",\n role: \"presentation\",\n children: [\n {\n tag: \"ag-input-text-field\",\n ref: \"eReadOnlyText\"\n },\n { tag: \"div\", ref: \"eDateWrapper\", cls: \"ag-date-floating-filter-wrapper\" }\n ]\n};\nvar DateFloatingFilter = class extends SimpleFloatingFilter {\n constructor() {\n super(DateFloatingFilterElement, [AgInputTextFieldSelector]);\n this.eReadOnlyText = RefPlaceholder;\n this.eDateWrapper = RefPlaceholder;\n }\n getDefaultOptions() {\n return DEFAULT_DATE_FILTER_OPTIONS;\n }\n init(params) {\n super.init(params);\n this.params = params;\n this.filterParams = params.filterParams;\n this.createDateComponent();\n this.filterModelFormatter = new DateFilterModelFormatter(\n this.filterParams,\n this.getLocaleTextFunc.bind(this),\n this.optionsFactory\n );\n const translate = this.getLocaleTextFunc();\n this.eReadOnlyText.setDisabled(true).setInputAriaLabel(translate(\"ariaDateFilterInput\", \"Date Filter Input\"));\n }\n refresh(params) {\n super.refresh(params);\n this.params = params;\n this.filterParams = params.filterParams;\n this.dateComp.updateParams(this.getDateComponentParams());\n this.filterModelFormatter.updateParams({\n optionsFactory: this.optionsFactory,\n dateFilterParams: this.filterParams\n });\n this.updateCompOnModelChange(params.currentParentModel());\n }\n updateCompOnModelChange(model) {\n const allowEditing = !this.readOnly && this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(allowEditing);\n if (allowEditing) {\n const dateModel = model ? _parseDateTimeFromString(model.dateFrom) : null;\n this.dateComp.setDate(dateModel);\n this.eReadOnlyText.setValue(\"\");\n } else {\n this.eReadOnlyText.setValue(this.filterModelFormatter.getModelAsString(model));\n this.dateComp.setDate(null);\n }\n }\n setEditable(editable) {\n _setDisplayed(this.eDateWrapper, editable);\n _setDisplayed(this.eReadOnlyText.getGui(), !editable);\n }\n onParentModelChanged(model, event) {\n if (event?.afterFloatingFilter || event?.afterDataChange) {\n return;\n }\n super.setLastTypeFromModel(model);\n this.updateCompOnModelChange(model);\n }\n onDateChanged() {\n const filterValueDate = this.dateComp.getDate();\n const filterValueText = _serialiseDate(filterValueDate);\n this.params.parentFilterInstance((filterInstance) => {\n if (filterInstance) {\n const date = _parseDateTimeFromString(filterValueText);\n filterInstance.onFloatingFilterChanged(this.lastType || null, date);\n }\n });\n }\n getDateComponentParams() {\n const { filterParams, column } = this.params;\n const debounceMs = getDebounceMs(filterParams, this.defaultDebounceMs);\n return _addGridCommonParams(this.gos, {\n onDateChanged: _debounce(this, this.onDateChanged.bind(this), debounceMs),\n filterParams: column.getColDef().filterParams,\n location: \"floatingFilter\"\n });\n }\n createDateComponent() {\n const {\n beans: { context, userCompFactory },\n eDateWrapper,\n params\n } = this;\n this.dateComp = new DateCompWrapper(\n context,\n userCompFactory,\n params.column.getColDef(),\n this.getDateComponentParams(),\n eDateWrapper,\n (dateComp) => {\n dateComp.setInputAriaLabel(this.getAriaLabel(params));\n }\n );\n this.addDestroyFunc(() => this.dateComp.destroy());\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/defaultDateComponent.ts\nvar DefaultDateElement = {\n tag: \"div\",\n cls: \"ag-filter-filter\",\n children: [\n {\n tag: \"ag-input-text-field\",\n ref: \"eDateInput\",\n cls: \"ag-date-filter\"\n }\n ]\n};\nvar DefaultDateComponent = class extends Component {\n constructor() {\n super(DefaultDateElement, [AgInputTextFieldSelector]);\n this.eDateInput = RefPlaceholder;\n this.isApply = false;\n this.applyOnFocusOut = false;\n }\n init(params) {\n this.params = params;\n this.setParams(params);\n const inputElement = this.eDateInput.getInputElement();\n this.addManagedListeners(inputElement, {\n // ensures that the input element is focussed when a clear button is clicked,\n // unless using safari as there is no clear button and focus does not work properly\n mouseDown: () => {\n if (this.eDateInput.isDisabled() || this.usingSafariDatePicker) {\n return;\n }\n inputElement.focus({ preventScroll: true });\n },\n input: this.handleInput.bind(this, false),\n change: this.handleInput.bind(this, true),\n focusout: this.handleFocusOut.bind(this)\n });\n }\n handleInput(isChange) {\n if (this.eDateInput.isDisabled()) {\n return;\n }\n if (this.isApply) {\n this.applyOnFocusOut = !isChange;\n if (isChange) {\n this.params.onDateChanged();\n }\n return;\n }\n if (!isChange) {\n this.params.onDateChanged();\n }\n }\n handleFocusOut() {\n if (this.applyOnFocusOut) {\n this.applyOnFocusOut = false;\n this.params.onDateChanged();\n }\n }\n setParams(params) {\n const inputElement = this.eDateInput.getInputElement();\n const shouldUseBrowserDatePicker = this.shouldUseBrowserDatePicker(params);\n this.usingSafariDatePicker = shouldUseBrowserDatePicker && _isBrowserSafari();\n inputElement.type = shouldUseBrowserDatePicker ? \"date\" : \"text\";\n const { minValidYear, maxValidYear, minValidDate, maxValidDate, buttons } = params.filterParams || {};\n if (minValidDate && minValidYear) {\n _warn(85);\n }\n if (maxValidDate && maxValidYear) {\n _warn(86);\n }\n if (minValidDate && maxValidDate) {\n const [parsedMinValidDate, parsedMaxValidDate] = [minValidDate, maxValidDate].map(\n (v) => v instanceof Date ? v : _parseDateTimeFromString(v)\n );\n if (parsedMinValidDate && parsedMaxValidDate && parsedMinValidDate.getTime() > parsedMaxValidDate.getTime()) {\n _warn(87);\n }\n }\n if (minValidDate) {\n if (minValidDate instanceof Date) {\n inputElement.min = _dateToFormattedString(minValidDate);\n } else {\n inputElement.min = minValidDate;\n }\n } else {\n if (minValidYear) {\n inputElement.min = `${minValidYear}-01-01`;\n }\n }\n if (maxValidDate) {\n if (maxValidDate instanceof Date) {\n inputElement.max = _dateToFormattedString(maxValidDate);\n } else {\n inputElement.max = maxValidDate;\n }\n } else {\n if (maxValidYear) {\n inputElement.max = `${maxValidYear}-12-31`;\n }\n }\n this.isApply = params.location === \"floatingFilter\" && !!buttons?.includes(\"apply\");\n }\n refresh(params) {\n this.params = params;\n this.setParams(params);\n }\n getDate() {\n return _parseDateTimeFromString(this.eDateInput.getValue());\n }\n setDate(date) {\n this.eDateInput.setValue(_serialiseDate(date, false));\n }\n setInputPlaceholder(placeholder) {\n this.eDateInput.setInputPlaceholder(placeholder);\n }\n setInputAriaLabel(ariaLabel) {\n this.eDateInput.setAriaLabel(ariaLabel);\n }\n setDisabled(disabled) {\n this.eDateInput.setDisabled(disabled);\n }\n afterGuiAttached(params) {\n if (!params || !params.suppressFocus) {\n this.eDateInput.getInputElement().focus({ preventScroll: true });\n }\n }\n shouldUseBrowserDatePicker(params) {\n return params?.filterParams?.browserDatePicker ?? true;\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/number/numberFilterConstants.ts\nvar DEFAULT_NUMBER_FILTER_OPTIONS = [\n \"equals\",\n \"notEqual\",\n \"greaterThan\",\n \"greaterThanOrEqual\",\n \"lessThan\",\n \"lessThanOrEqual\",\n \"inRange\",\n \"blank\",\n \"notBlank\"\n];\n\n// packages/ag-grid-community/src/filter/provided/number/numberFilterModelFormatter.ts\nvar NumberFilterModelFormatter = class extends SimpleFilterModelFormatter {\n conditionToString(condition, options) {\n const { numberOfInputs } = options || {};\n const { filter, filterTo, type } = condition;\n const isRange = type == \"inRange\" || numberOfInputs === 2;\n const formatValue = this.formatValue.bind(this);\n if (isRange) {\n return `${formatValue(filter)}-${formatValue(filterTo)}`;\n }\n if (filter != null) {\n return formatValue(filter);\n }\n return `${type}`;\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/number/numberFilterUtils.ts\nfunction getAllowedCharPattern(filterParams) {\n const { allowedCharPattern } = filterParams ?? {};\n return allowedCharPattern ?? null;\n}\n\n// packages/ag-grid-community/src/filter/provided/number/numberFilter.ts\nvar NumberFilter = class extends ScalarFilter {\n constructor() {\n super(\"numberFilter\");\n this.eValuesFrom = [];\n this.eValuesTo = [];\n this.filterType = \"number\";\n this.defaultDebounceMs = 500;\n }\n refresh(params) {\n if (this.numberFilterParams.allowedCharPattern !== params.allowedCharPattern) {\n return false;\n }\n return super.refresh(params);\n }\n mapValuesFromModel(filterModel) {\n const { filter, filterTo, type } = filterModel || {};\n return [this.processValue(filter), this.processValue(filterTo)].slice(0, this.getNumberOfInputs(type));\n }\n comparator() {\n return (left, right) => {\n if (left === right) {\n return 0;\n }\n return left < right ? 1 : -1;\n };\n }\n isValid(value) {\n return !isNaN(value);\n }\n setParams(params) {\n this.numberFilterParams = params;\n super.setParams(params);\n this.filterModelFormatter = new NumberFilterModelFormatter(\n this.getLocaleTextFunc.bind(this),\n this.optionsFactory,\n this.numberFilterParams.numberFormatter\n );\n }\n getDefaultFilterOptions() {\n return DEFAULT_NUMBER_FILTER_OPTIONS;\n }\n setElementValue(element, value, fromFloatingFilter) {\n const { numberFormatter } = this.numberFilterParams;\n const valueToSet = !fromFloatingFilter && numberFormatter ? numberFormatter(value ?? null) : value;\n super.setElementValue(element, valueToSet);\n }\n createValueElement() {\n const allowedCharPattern = getAllowedCharPattern(this.numberFilterParams);\n const eCondition = _createElement({ tag: \"div\", cls: \"ag-filter-body\", role: \"presentation\" });\n this.createFromToElement(eCondition, this.eValuesFrom, \"from\", allowedCharPattern);\n this.createFromToElement(eCondition, this.eValuesTo, \"to\", allowedCharPattern);\n return eCondition;\n }\n createFromToElement(eCondition, eValues, fromTo, allowedCharPattern) {\n const eValue = this.createManagedBean(\n allowedCharPattern ? new AgInputTextField({ allowedCharPattern }) : new AgInputNumberField()\n );\n eValue.addCssClass(`ag-filter-${fromTo}`);\n eValue.addCssClass(\"ag-filter-filter\");\n eValues.push(eValue);\n eCondition.appendChild(eValue.getGui());\n }\n removeValueElements(startPosition, deleteCount) {\n const removeComps = (eGui) => this.removeComponents(eGui, startPosition, deleteCount);\n removeComps(this.eValuesFrom);\n removeComps(this.eValuesTo);\n }\n getValues(position) {\n const result = [];\n this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n if (index < numberOfInputs) {\n result.push(this.processValue(this.stringToFloat(element.getValue())));\n }\n });\n return result;\n }\n areSimpleModelsEqual(aSimple, bSimple) {\n return aSimple.filter === bSimple.filter && aSimple.filterTo === bSimple.filterTo && aSimple.type === bSimple.type;\n }\n processValue(value) {\n if (value == null) {\n return null;\n }\n return isNaN(value) ? null : value;\n }\n stringToFloat(value) {\n if (typeof value === \"number\") {\n return value;\n }\n let filterText = _makeNull(value);\n if (filterText != null && filterText.trim() === \"\") {\n filterText = null;\n }\n const numberParser = this.numberFilterParams.numberParser;\n if (numberParser) {\n return numberParser(filterText);\n }\n return filterText == null || filterText.trim() === \"-\" ? null : parseFloat(filterText);\n }\n createCondition(position) {\n const type = this.getConditionType(position);\n const model = {\n filterType: this.filterType,\n type\n };\n const values = this.getValues(position);\n if (values.length > 0) {\n model.filter = values[0];\n }\n if (values.length > 1) {\n model.filterTo = values[1];\n }\n return model;\n }\n getInputs(position) {\n const { eValuesFrom, eValuesTo } = this;\n if (position >= eValuesFrom.length) {\n return [null, null];\n }\n return [eValuesFrom[position], eValuesTo[position]];\n }\n getModelAsString(model) {\n return this.filterModelFormatter.getModelAsString(model) ?? \"\";\n }\n hasInvalidInputs() {\n let invalidInputs = false;\n this.forEachInput((element) => {\n if (!element.getInputElement().validity.valid) {\n invalidInputs = true;\n return;\n }\n });\n return invalidInputs;\n }\n};\n\n// packages/ag-grid-community/src/filter/floating/provided/floatingFilterTextInputService.ts\nvar FloatingFilterTextInputService = class extends BeanStub {\n constructor(params) {\n super();\n this.params = params;\n this.eInput = RefPlaceholder;\n this.onValueChanged = () => {\n };\n }\n setupGui(parentElement) {\n this.eInput = this.createManagedBean(new AgInputTextField(this.params?.config));\n const eInput = this.eInput.getGui();\n parentElement.appendChild(eInput);\n const listener = (e) => this.onValueChanged(e);\n this.addManagedListeners(eInput, {\n input: listener,\n keydown: listener\n });\n }\n setEditable(editable) {\n this.eInput.setDisabled(!editable);\n }\n getValue() {\n return this.eInput.getValue();\n }\n setValue(value, silent) {\n this.eInput.setValue(value, silent);\n }\n setValueChangedListener(listener) {\n this.onValueChanged = listener;\n }\n setParams({ ariaLabel, autoComplete }) {\n const { eInput } = this;\n eInput.setInputAriaLabel(ariaLabel);\n if (autoComplete !== void 0) {\n eInput.setAutoComplete(autoComplete);\n }\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/text/textFilterUtils.ts\nfunction trimInputForFilter(value) {\n const trimmedInput = value?.trim();\n return trimmedInput === \"\" ? value : trimmedInput;\n}\n\n// packages/ag-grid-community/src/filter/floating/provided/textInputFloatingFilter.ts\nvar TextInputFloatingFilterElement = {\n tag: \"div\",\n ref: \"eFloatingFilterInputContainer\",\n cls: \"ag-floating-filter-input\",\n role: \"presentation\"\n};\nvar TextInputFloatingFilter = class extends SimpleFloatingFilter {\n constructor() {\n super(...arguments);\n this.eFloatingFilterInputContainer = RefPlaceholder;\n this.defaultDebounceMs = 500;\n }\n postConstruct() {\n this.setTemplate(TextInputFloatingFilterElement);\n }\n onParentModelChanged(model, event) {\n if (event?.afterFloatingFilter || event?.afterDataChange) {\n return;\n }\n this.setLastTypeFromModel(model);\n this.setEditable(this.canWeEditAfterModelFromParentFilter(model));\n this.inputSvc.setValue(this.filterModelFormatter.getModelAsString(model));\n }\n init(params) {\n this.setupFloatingFilterInputService(params);\n super.init(params);\n this.setTextInputParams(params);\n }\n setupFloatingFilterInputService(params) {\n this.inputSvc = this.createFloatingFilterInputService(params);\n this.inputSvc.setupGui(this.eFloatingFilterInputContainer);\n }\n setTextInputParams(params) {\n this.params = params;\n const autoComplete = params.browserAutoComplete ?? false;\n const { inputSvc, defaultDebounceMs, readOnly } = this;\n inputSvc.setParams({\n ariaLabel: this.getAriaLabel(params),\n autoComplete\n });\n this.applyActive = isUseApplyButton(params.filterParams);\n if (!readOnly) {\n const debounceMs = getDebounceMs(params.filterParams, defaultDebounceMs);\n const toDebounce = _debounce(\n this,\n this.syncUpWithParentFilter.bind(this),\n debounceMs\n );\n inputSvc.setValueChangedListener(toDebounce);\n }\n }\n refresh(params) {\n super.refresh(params);\n this.setTextInputParams(params);\n }\n recreateFloatingFilterInputService(params) {\n const { inputSvc } = this;\n const value = inputSvc.getValue();\n _clearElement(this.eFloatingFilterInputContainer);\n this.destroyBean(inputSvc);\n this.setupFloatingFilterInputService(params);\n inputSvc.setValue(value, true);\n }\n syncUpWithParentFilter(e) {\n const isEnterKey = e.key === KeyCode.ENTER;\n if (this.applyActive && !isEnterKey) {\n return;\n }\n const { inputSvc, params } = this;\n let value = inputSvc.getValue();\n if (params.filterParams.trimInput) {\n value = trimInputForFilter(value);\n inputSvc.setValue(value, true);\n }\n params.parentFilterInstance((filterInstance) => {\n filterInstance?.onFloatingFilterChanged(this.lastType || null, value || null);\n });\n }\n setEditable(editable) {\n this.inputSvc.setEditable(editable);\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/number/numberFloatingFilter.ts\nvar FloatingFilterNumberInputService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.onValueChanged = () => {\n };\n this.numberInputActive = true;\n }\n setupGui(parentElement) {\n this.eNumberInput = this.createManagedBean(new AgInputNumberField());\n this.eTextInput = this.createManagedBean(new AgInputTextField());\n this.eTextInput.setDisabled(true);\n const eNumberInput = this.eNumberInput.getGui();\n const eTextInput = this.eTextInput.getGui();\n parentElement.appendChild(eNumberInput);\n parentElement.appendChild(eTextInput);\n this.setupListeners(eNumberInput, (e) => this.onValueChanged(e));\n this.setupListeners(eTextInput, (e) => this.onValueChanged(e));\n }\n setEditable(editable) {\n this.numberInputActive = editable;\n this.eNumberInput.setDisplayed(this.numberInputActive);\n this.eTextInput.setDisplayed(!this.numberInputActive);\n }\n setAutoComplete(autoComplete) {\n this.eNumberInput.setAutoComplete(autoComplete);\n this.eTextInput.setAutoComplete(autoComplete);\n }\n getValue() {\n return this.getActiveInputElement().getValue();\n }\n setValue(value, silent) {\n this.getActiveInputElement().setValue(value, silent);\n }\n getActiveInputElement() {\n return this.numberInputActive ? this.eNumberInput : this.eTextInput;\n }\n setValueChangedListener(listener) {\n this.onValueChanged = listener;\n }\n setupListeners(element, listener) {\n this.addManagedListeners(element, {\n input: listener,\n keydown: listener\n });\n }\n setParams(params) {\n this.setAriaLabel(params.ariaLabel);\n if (params.autoComplete !== void 0) {\n this.setAutoComplete(params.autoComplete);\n }\n }\n setAriaLabel(ariaLabel) {\n this.eNumberInput.setInputAriaLabel(ariaLabel);\n this.eTextInput.setInputAriaLabel(ariaLabel);\n }\n};\nvar NumberFloatingFilter = class extends TextInputFloatingFilter {\n init(params) {\n super.init(params);\n this.filterModelFormatter = new NumberFilterModelFormatter(\n this.getLocaleTextFunc.bind(this),\n this.optionsFactory,\n params.filterParams?.numberFormatter\n );\n }\n refresh(params) {\n const allowedCharPattern = getAllowedCharPattern(params.filterParams);\n if (allowedCharPattern !== this.allowedCharPattern) {\n this.recreateFloatingFilterInputService(params);\n }\n super.refresh(params);\n this.filterModelFormatter.updateParams({ optionsFactory: this.optionsFactory });\n }\n getDefaultOptions() {\n return DEFAULT_NUMBER_FILTER_OPTIONS;\n }\n createFloatingFilterInputService(params) {\n this.allowedCharPattern = getAllowedCharPattern(params.filterParams);\n if (this.allowedCharPattern) {\n return this.createManagedBean(\n new FloatingFilterTextInputService({\n config: { allowedCharPattern: this.allowedCharPattern }\n })\n );\n }\n return this.createManagedBean(new FloatingFilterNumberInputService());\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/text/textFilterConstants.ts\nvar DEFAULT_TEXT_FILTER_OPTIONS = [\n \"contains\",\n \"notContains\",\n \"equals\",\n \"notEqual\",\n \"startsWith\",\n \"endsWith\",\n \"blank\",\n \"notBlank\"\n];\n\n// packages/ag-grid-community/src/filter/provided/text/textFilterModelFormatter.ts\nvar TextFilterModelFormatter = class extends SimpleFilterModelFormatter {\n conditionToString(condition, options) {\n const { numberOfInputs } = options || {};\n const { filter, filterTo, type } = condition;\n const isRange = type == \"inRange\" || numberOfInputs === 2;\n if (isRange) {\n return `${filter}-${filterTo}`;\n }\n if (filter != null) {\n return `${filter}`;\n }\n return `${type}`;\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/text/textFilter.ts\nvar TextFilter = class extends SimpleFilter {\n constructor() {\n super(\"textFilter\");\n this.filterType = \"text\";\n this.defaultFormatter = (from) => from;\n this.defaultLowercaseFormatter = (from) => from == null ? null : from.toString().toLowerCase();\n this.defaultMatcher = ({ filterOption, value, filterText }) => {\n if (filterText == null) {\n return false;\n }\n switch (filterOption) {\n case \"contains\":\n return value.indexOf(filterText) >= 0;\n case \"notContains\":\n return value.indexOf(filterText) < 0;\n case \"equals\":\n return value === filterText;\n case \"notEqual\":\n return value != filterText;\n case \"startsWith\":\n return value.indexOf(filterText) === 0;\n case \"endsWith\": {\n const index = value.lastIndexOf(filterText);\n return index >= 0 && index === value.length - filterText.length;\n }\n default:\n return false;\n }\n };\n this.eValuesFrom = [];\n this.eValuesTo = [];\n this.defaultDebounceMs = 500;\n }\n setParams(params) {\n this.textFilterParams = params;\n super.setParams(params);\n this.matcher = params.textMatcher || this.defaultMatcher;\n this.formatter = params.textFormatter || (params.caseSensitive ? this.defaultFormatter : this.defaultLowercaseFormatter);\n this.filterModelFormatter = new TextFilterModelFormatter(\n this.getLocaleTextFunc.bind(this),\n this.optionsFactory\n );\n }\n createCondition(position) {\n const type = this.getConditionType(position);\n const model = {\n filterType: this.filterType,\n type\n };\n const values = this.getValuesWithSideEffects(position, true);\n if (values.length > 0) {\n model.filter = values[0];\n }\n if (values.length > 1) {\n model.filterTo = values[1];\n }\n return model;\n }\n areSimpleModelsEqual(aSimple, bSimple) {\n return aSimple.filter === bSimple.filter && aSimple.filterTo === bSimple.filterTo && aSimple.type === bSimple.type;\n }\n getInputs(position) {\n const { eValuesFrom, eValuesTo } = this;\n if (position >= eValuesFrom.length) {\n return [null, null];\n }\n return [eValuesFrom[position], eValuesTo[position]];\n }\n getValues(position) {\n return this.getValuesWithSideEffects(position, false);\n }\n getValuesWithSideEffects(position, applySideEffects) {\n const result = [];\n this.forEachPositionInput(position, (element, index, _elPosition, numberOfInputs) => {\n if (index < numberOfInputs) {\n let value = _makeNull(element.getValue());\n if (applySideEffects && this.textFilterParams.trimInput) {\n value = trimInputForFilter(value) ?? null;\n element.setValue(value, true);\n }\n result.push(value);\n }\n });\n return result;\n }\n getDefaultFilterOptions() {\n return DEFAULT_TEXT_FILTER_OPTIONS;\n }\n createValueElement() {\n const eCondition = _createElement({ tag: \"div\", cls: \"ag-filter-body\", role: \"presentation\" });\n this.createFromToElement(eCondition, this.eValuesFrom, \"from\");\n this.createFromToElement(eCondition, this.eValuesTo, \"to\");\n return eCondition;\n }\n createFromToElement(eCondition, eValues, fromTo) {\n const eValue = this.createManagedBean(new AgInputTextField());\n eValue.addCssClass(`ag-filter-${fromTo}`);\n eValue.addCssClass(\"ag-filter-filter\");\n eValues.push(eValue);\n eCondition.appendChild(eValue.getGui());\n }\n removeValueElements(startPosition, deleteCount) {\n const removeComps = (eGui) => this.removeComponents(eGui, startPosition, deleteCount);\n removeComps(this.eValuesFrom);\n removeComps(this.eValuesTo);\n }\n mapValuesFromModel(filterModel) {\n const { filter, filterTo, type } = filterModel || {};\n return [filter || null, filterTo || null].slice(0, this.getNumberOfInputs(type));\n }\n evaluateNullValue(filterType) {\n const filterTypesAllowNulls = [\"notEqual\", \"notContains\", \"blank\"];\n return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;\n }\n evaluateNonNullValue(values, cellValue, filterModel, params) {\n const formattedValues = values.map((v) => this.formatter(v)) || [];\n const cellValueFormatted = this.formatter(cellValue);\n const { api, colDef, column, context, textFormatter } = this.textFilterParams;\n if (filterModel.type === \"blank\") {\n return isBlank(cellValue);\n } else if (filterModel.type === \"notBlank\") {\n return !isBlank(cellValue);\n }\n const matcherParams = {\n api,\n colDef,\n column,\n context,\n node: params.node,\n data: params.data,\n filterOption: filterModel.type,\n value: cellValueFormatted,\n textFormatter\n };\n return formattedValues.some((v) => this.matcher({ ...matcherParams, filterText: v }));\n }\n getModelAsString(model) {\n return this.filterModelFormatter.getModelAsString(model) ?? \"\";\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/text/textFloatingFilter.ts\nvar TextFloatingFilter = class extends TextInputFloatingFilter {\n init(params) {\n super.init(params);\n this.filterModelFormatter = new TextFilterModelFormatter(\n this.getLocaleTextFunc.bind(this),\n this.optionsFactory\n );\n }\n refresh(params) {\n super.refresh(params);\n this.filterModelFormatter.updateParams({ optionsFactory: this.optionsFactory });\n }\n getDefaultOptions() {\n return DEFAULT_TEXT_FILTER_OPTIONS;\n }\n createFloatingFilterInputService() {\n return this.createManagedBean(new FloatingFilterTextInputService());\n }\n};\n\n// packages/ag-grid-community/src/filter/quickFilterApi.ts\nfunction isQuickFilterPresent(beans) {\n return !!beans.quickFilter?.isFilterPresent();\n}\nfunction getQuickFilter(beans) {\n return beans.quickFilter?.getText();\n}\nfunction resetQuickFilter(beans) {\n beans.quickFilter?.resetCache();\n}\n\n// packages/ag-grid-community/src/filter/quickFilterService.ts\nvar QuickFilterService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"quickFilter\";\n this.quickFilter = null;\n this.quickFilterParts = null;\n }\n postConstruct() {\n const resetListener = this.resetCache.bind(this);\n const gos = this.gos;\n this.addManagedEventListeners({\n columnPivotModeChanged: resetListener,\n newColumnsLoaded: resetListener,\n columnRowGroupChanged: resetListener,\n columnVisible: () => {\n if (!gos.get(\"includeHiddenColumnsInQuickFilter\")) {\n this.resetCache();\n }\n }\n });\n this.addManagedPropertyListener(\"quickFilterText\", (e) => this.setFilter(e.currentValue));\n this.addManagedPropertyListeners(\n [\"includeHiddenColumnsInQuickFilter\", \"applyQuickFilterBeforePivotOrAgg\"],\n () => this.onColumnConfigChanged()\n );\n this.quickFilter = this.parseFilter(gos.get(\"quickFilterText\"));\n this.parser = gos.get(\"quickFilterParser\");\n this.matcher = gos.get(\"quickFilterMatcher\");\n this.setFilterParts();\n this.addManagedPropertyListeners([\"quickFilterMatcher\", \"quickFilterParser\"], () => this.setParserAndMatcher());\n }\n // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n // following scenarios:\n // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n refreshCols() {\n const { autoColSvc, colModel, gos, pivotResultCols } = this.beans;\n const pivotMode = colModel.isPivotMode();\n const groupAutoCols = autoColSvc?.getColumns();\n const providedCols = colModel.getColDefCols();\n let columnsForQuickFilter = (pivotMode && !gos.get(\"applyQuickFilterBeforePivotOrAgg\") ? pivotResultCols?.getPivotResultCols()?.list : providedCols) ?? [];\n if (groupAutoCols) {\n columnsForQuickFilter = columnsForQuickFilter.concat(groupAutoCols);\n }\n this.colsToUse = gos.get(\"includeHiddenColumnsInQuickFilter\") ? columnsForQuickFilter : columnsForQuickFilter.filter((col) => col.isVisible() || col.isRowGroupActive());\n }\n isFilterPresent() {\n return this.quickFilter !== null;\n }\n doesRowPass(node) {\n const usingCache = this.gos.get(\"cacheQuickFilter\");\n if (this.matcher) {\n return this.doesRowPassMatcher(usingCache, node);\n }\n return this.quickFilterParts.every(\n (part) => usingCache ? this.doesRowPassCache(node, part) : this.doesRowPassNoCache(node, part)\n );\n }\n resetCache() {\n this.beans.rowModel.forEachNode((node) => node.quickFilterAggregateText = null);\n }\n getText() {\n return this.gos.get(\"quickFilterText\");\n }\n setFilterParts() {\n const { quickFilter, parser } = this;\n if (quickFilter) {\n this.quickFilterParts = parser ? parser(quickFilter) : quickFilter.split(\" \");\n } else {\n this.quickFilterParts = null;\n }\n }\n parseFilter(newFilter) {\n if (!_exists(newFilter)) {\n return null;\n }\n return newFilter.toUpperCase();\n }\n setFilter(newFilter) {\n if (newFilter != null && typeof newFilter !== \"string\") {\n _warn(70, { newFilter });\n return;\n }\n const parsedFilter = this.parseFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setFilterParts();\n this.dispatchLocalEvent({ type: \"quickFilterChanged\" });\n }\n }\n setParserAndMatcher() {\n const parser = this.gos.get(\"quickFilterParser\");\n const matcher = this.gos.get(\"quickFilterMatcher\");\n const hasChanged = parser !== this.parser || matcher !== this.matcher;\n this.parser = parser;\n this.matcher = matcher;\n if (hasChanged) {\n this.setFilterParts();\n this.dispatchLocalEvent({ type: \"quickFilterChanged\" });\n }\n }\n onColumnConfigChanged() {\n this.refreshCols();\n this.resetCache();\n if (this.isFilterPresent()) {\n this.dispatchLocalEvent({ type: \"quickFilterChanged\" });\n }\n }\n doesRowPassNoCache(node, filterPart) {\n return this.colsToUse.some((column) => {\n const part = this.getTextForColumn(column, node);\n return _exists(part) && part.indexOf(filterPart) >= 0;\n });\n }\n doesRowPassCache(node, filterPart) {\n this.checkGenerateAggText(node);\n return node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n }\n doesRowPassMatcher(usingCache, node) {\n let quickFilterAggregateText;\n if (usingCache) {\n this.checkGenerateAggText(node);\n quickFilterAggregateText = node.quickFilterAggregateText;\n } else {\n quickFilterAggregateText = this.getAggText(node);\n }\n const { quickFilterParts, matcher } = this;\n return matcher(quickFilterParts, quickFilterAggregateText);\n }\n checkGenerateAggText(node) {\n if (!node.quickFilterAggregateText) {\n node.quickFilterAggregateText = this.getAggText(node);\n }\n }\n getTextForColumn(column, node) {\n let value = this.beans.filterValueSvc.getValue(column, node);\n const colDef = column.getColDef();\n if (colDef.getQuickFilterText) {\n const params = _addGridCommonParams(this.gos, {\n value,\n node,\n data: node.data,\n column,\n colDef\n });\n value = colDef.getQuickFilterText(params);\n }\n return _exists(value) ? value.toString().toUpperCase() : null;\n }\n getAggText(node) {\n const stringParts = [];\n this.colsToUse.forEach((column) => {\n const part = this.getTextForColumn(column, node);\n if (_exists(part)) {\n stringParts.push(part);\n }\n });\n return stringParts.join(\"\\n\");\n }\n};\n\n// packages/ag-grid-community/src/filter/filterModule.ts\nvar ClientSideRowModelFilterModule = {\n moduleName: \"ClientSideRowModelFilter\",\n version: VERSION,\n rowModels: [\"clientSide\"],\n beans: [FilterStage]\n};\nvar FilterCoreModule = {\n moduleName: \"FilterCore\",\n version: VERSION,\n beans: [FilterManager],\n apiFunctions: {\n isAnyFilterPresent,\n onFilterChanged\n },\n css: [columnFiltersCSS],\n dependsOn: [ClientSideRowModelFilterModule]\n};\nvar FilterValueModule = {\n moduleName: \"FilterValue\",\n version: VERSION,\n beans: [FilterValueService]\n};\nvar ColumnFilterModule = {\n moduleName: \"ColumnFilter\",\n version: VERSION,\n beans: [ColumnFilterService, FilterMenuFactory],\n dynamicBeans: { headerFilterCellCtrl: HeaderFilterCellCtrl },\n icons: {\n // open filter button - header, floating filter, menu\n filter: \"filter\",\n // filter is applied - header (legacy column menu), filter tool panel\n filterActive: \"filter\"\n },\n apiFunctions: {\n isColumnFilterPresent,\n getColumnFilterInstance,\n destroyFilter,\n setFilterModel,\n getFilterModel,\n getColumnFilterModel,\n setColumnFilterModel,\n showColumnFilter\n },\n dependsOn: [FilterCoreModule, PopupModule, FilterValueModule, SharedMenuModule]\n};\nvar CustomFilterModule = {\n moduleName: \"CustomFilter\",\n version: VERSION,\n userComponents: { agReadOnlyFloatingFilter: ReadOnlyFloatingFilter },\n dependsOn: [ColumnFilterModule]\n};\nvar TextFilterModule = {\n moduleName: \"TextFilter\",\n version: VERSION,\n dependsOn: [ColumnFilterModule],\n userComponents: {\n agTextColumnFilter: TextFilter,\n agTextColumnFloatingFilter: TextFloatingFilter\n }\n};\nvar NumberFilterModule = {\n moduleName: \"NumberFilter\",\n version: VERSION,\n dependsOn: [ColumnFilterModule],\n userComponents: {\n agNumberColumnFilter: NumberFilter,\n agNumberColumnFloatingFilter: NumberFloatingFilter\n }\n};\nvar DateFilterModule = {\n moduleName: \"DateFilter\",\n version: VERSION,\n dependsOn: [ColumnFilterModule],\n userComponents: {\n agDateColumnFilter: DateFilter,\n agDateInput: DefaultDateComponent,\n agDateColumnFloatingFilter: DateFloatingFilter\n }\n};\nvar QuickFilterCoreModule = {\n moduleName: \"QuickFilterCore\",\n version: VERSION,\n rowModels: [\"clientSide\"],\n beans: [QuickFilterService],\n dependsOn: [FilterCoreModule, FilterValueModule]\n};\nvar QuickFilterModule = {\n moduleName: \"QuickFilter\",\n version: VERSION,\n apiFunctions: {\n isQuickFilterPresent,\n getQuickFilter,\n resetQuickFilter\n },\n dependsOn: [QuickFilterCoreModule]\n};\nvar ExternalFilterModule = {\n moduleName: \"ExternalFilter\",\n version: VERSION,\n dependsOn: [FilterCoreModule]\n};\n\n// packages/ag-grid-community/src/undoRedo/undoRedoStack.ts\nvar UndoRedoAction = class {\n constructor(cellValueChanges) {\n this.cellValueChanges = cellValueChanges;\n }\n};\nvar RangeUndoRedoAction = class extends UndoRedoAction {\n constructor(cellValueChanges, initialRange, finalRange, ranges) {\n super(cellValueChanges);\n this.initialRange = initialRange;\n this.finalRange = finalRange;\n this.ranges = ranges;\n }\n};\nvar DEFAULT_STACK_SIZE = 10;\nvar UndoRedoStack = class {\n constructor(maxStackSize) {\n this.actionStack = [];\n this.maxStackSize = maxStackSize ? maxStackSize : DEFAULT_STACK_SIZE;\n this.actionStack = new Array(this.maxStackSize);\n }\n pop() {\n return this.actionStack.pop();\n }\n push(item) {\n const shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;\n if (!shouldAddActions) {\n return;\n }\n if (this.actionStack.length === this.maxStackSize) {\n this.actionStack.shift();\n }\n this.actionStack.push(item);\n }\n clear() {\n this.actionStack = [];\n }\n getCurrentStackSize() {\n return this.actionStack.length;\n }\n};\n\n// packages/ag-grid-community/src/undoRedo/undoRedoService.ts\nvar UndoRedoService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"undoRedo\";\n this.cellValueChanges = [];\n this.activeCellEdit = null;\n this.activeRowEdit = null;\n this.isPasting = false;\n this.isRangeInAction = false;\n this.onCellValueChanged = (event) => {\n const eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };\n const isCellEditing = this.activeCellEdit !== null && _areCellsEqual(this.activeCellEdit, eventCell);\n const isRowEditing = this.activeRowEdit !== null && _isSameRow(this.activeRowEdit, eventCell);\n const shouldCaptureAction = isCellEditing || isRowEditing || this.isPasting || this.isRangeInAction;\n if (!shouldCaptureAction) {\n return;\n }\n const { rowPinned, rowIndex, column, oldValue, value } = event;\n const cellValueChange = {\n rowPinned,\n rowIndex,\n columnId: column.getColId(),\n newValue: value,\n oldValue\n };\n this.cellValueChanges.push(cellValueChange);\n };\n this.clearStacks = () => {\n this.undoStack.clear();\n this.redoStack.clear();\n };\n }\n postConstruct() {\n const { gos, ctrlsSvc } = this.beans;\n if (!gos.get(\"undoRedoCellEditing\")) {\n return;\n }\n const undoRedoLimit = gos.get(\"undoRedoCellEditingLimit\");\n if (undoRedoLimit <= 0) {\n return;\n }\n this.undoStack = new UndoRedoStack(undoRedoLimit);\n this.redoStack = new UndoRedoStack(undoRedoLimit);\n this.addListeners();\n const listener = this.clearStacks.bind(this);\n this.addManagedEventListeners({\n cellValueChanged: this.onCellValueChanged.bind(this),\n // undo / redo is restricted to actual editing so we clear the stacks when other operations are\n // performed that change the order of the row / cols.\n modelUpdated: (e) => {\n if (!e.keepUndoRedoStack) {\n this.clearStacks();\n }\n },\n columnPivotModeChanged: listener,\n newColumnsLoaded: listener,\n columnGroupOpened: listener,\n columnRowGroupChanged: listener,\n columnMoved: listener,\n columnPinned: listener,\n columnVisible: listener,\n rowDragEnd: listener\n });\n ctrlsSvc.whenReady(this, (p) => {\n this.gridBodyCtrl = p.gridBodyCtrl;\n });\n }\n getCurrentUndoStackSize() {\n return this.undoStack?.getCurrentStackSize() ?? 0;\n }\n getCurrentRedoStackSize() {\n return this.redoStack?.getCurrentStackSize() ?? 0;\n }\n undo(source) {\n const { eventSvc, undoStack, redoStack } = this;\n eventSvc.dispatchEvent({\n type: \"undoStarted\",\n source\n });\n const operationPerformed = this.undoRedo(undoStack, redoStack, \"initialRange\", \"oldValue\", \"undo\");\n eventSvc.dispatchEvent({\n type: \"undoEnded\",\n source,\n operationPerformed\n });\n }\n redo(source) {\n const { eventSvc, undoStack, redoStack } = this;\n eventSvc.dispatchEvent({\n type: \"redoStarted\",\n source\n });\n const operationPerformed = this.undoRedo(redoStack, undoStack, \"finalRange\", \"newValue\", \"redo\");\n eventSvc.dispatchEvent({\n type: \"redoEnded\",\n source,\n operationPerformed\n });\n }\n undoRedo(undoRedoStack, opposingUndoRedoStack, rangeProperty, cellValueChangeProperty, source) {\n if (!undoRedoStack) {\n return false;\n }\n const undoRedoAction = undoRedoStack.pop();\n if (!undoRedoAction || !undoRedoAction.cellValueChanges) {\n return false;\n }\n this.processAction(\n undoRedoAction,\n (cellValueChange) => cellValueChange[cellValueChangeProperty],\n source\n );\n if (undoRedoAction instanceof RangeUndoRedoAction) {\n this.processRange(undoRedoAction.ranges || [undoRedoAction[rangeProperty]]);\n } else {\n this.processCell(undoRedoAction.cellValueChanges);\n }\n opposingUndoRedoStack.push(undoRedoAction);\n return true;\n }\n processAction(action, valueExtractor, source) {\n action.cellValueChanges.forEach((cellValueChange) => {\n const { rowIndex, rowPinned, columnId } = cellValueChange;\n const rowPosition = { rowIndex, rowPinned };\n const currentRow = _getRowNode(this.beans, rowPosition);\n if (!currentRow.displayed) {\n return;\n }\n currentRow.setDataValue(columnId, valueExtractor(cellValueChange), source);\n });\n }\n processRange(ranges) {\n let lastFocusedCell;\n const rangeSvc = this.beans.rangeSvc;\n rangeSvc.removeAllCellRanges(true);\n ranges.forEach((range, idx) => {\n if (!range) {\n return;\n }\n const startRow = range.startRow;\n const endRow = range.endRow;\n if (idx === ranges.length - 1) {\n lastFocusedCell = {\n rowPinned: startRow.rowPinned,\n rowIndex: startRow.rowIndex,\n columnId: range.startColumn.getColId()\n };\n this.setLastFocusedCell(lastFocusedCell);\n }\n const cellRangeParams = {\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n rowEndIndex: endRow.rowIndex,\n rowEndPinned: endRow.rowPinned,\n columnStart: range.startColumn,\n columns: range.columns\n };\n rangeSvc.addCellRange(cellRangeParams);\n });\n }\n processCell(cellValueChanges) {\n const cellValueChange = cellValueChanges[0];\n const { rowIndex, rowPinned } = cellValueChange;\n const rowPosition = { rowIndex, rowPinned };\n const row = _getRowNode(this.beans, rowPosition);\n const lastFocusedCell = {\n rowPinned: cellValueChange.rowPinned,\n rowIndex: row.rowIndex,\n columnId: cellValueChange.columnId\n };\n this.setLastFocusedCell(lastFocusedCell);\n }\n setLastFocusedCell(lastFocusedCell) {\n const { rowIndex, columnId, rowPinned } = lastFocusedCell;\n const { colModel, focusSvc, rangeSvc } = this.beans;\n const column = colModel.getCol(columnId);\n if (!column) {\n return;\n }\n const { scrollFeature } = this.gridBodyCtrl;\n scrollFeature.ensureIndexVisible(rowIndex);\n scrollFeature.ensureColumnVisible(column);\n const cellPosition = { rowIndex, column, rowPinned };\n focusSvc.setFocusedCell({ ...cellPosition, forceBrowserFocus: true });\n rangeSvc?.setRangeToCell(cellPosition);\n }\n addListeners() {\n this.addManagedEventListeners({\n rowEditingStarted: (e) => {\n this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n },\n rowEditingStopped: () => {\n const action = new UndoRedoAction(this.cellValueChanges);\n this.pushActionsToUndoStack(action);\n this.activeRowEdit = null;\n },\n cellEditingStarted: (e) => {\n this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n },\n cellEditingStopped: (e) => {\n this.activeCellEdit = null;\n const shouldPushAction = e.valueChanged && !this.activeRowEdit && !this.isPasting && !this.isRangeInAction;\n if (shouldPushAction) {\n const action = new UndoRedoAction(this.cellValueChanges);\n this.pushActionsToUndoStack(action);\n }\n },\n pasteStart: () => {\n this.isPasting = true;\n },\n pasteEnd: () => {\n const action = new UndoRedoAction(this.cellValueChanges);\n this.pushActionsToUndoStack(action);\n this.isPasting = false;\n },\n fillStart: () => {\n this.isRangeInAction = true;\n },\n fillEnd: (event) => {\n const action = new RangeUndoRedoAction(this.cellValueChanges, event.initialRange, event.finalRange);\n this.pushActionsToUndoStack(action);\n this.isRangeInAction = false;\n },\n keyShortcutChangedCellStart: () => {\n this.isRangeInAction = true;\n },\n keyShortcutChangedCellEnd: () => {\n let action;\n const { rangeSvc, gos } = this.beans;\n if (rangeSvc && _isCellSelectionEnabled(gos)) {\n action = new RangeUndoRedoAction(this.cellValueChanges, void 0, void 0, [\n ...rangeSvc.getCellRanges()\n ]);\n } else {\n action = new UndoRedoAction(this.cellValueChanges);\n }\n this.pushActionsToUndoStack(action);\n this.isRangeInAction = false;\n }\n });\n }\n pushActionsToUndoStack(action) {\n this.undoStack.push(action);\n this.cellValueChanges = [];\n this.redoStack.clear();\n }\n};\n\n// packages/ag-grid-community/src/edit/cell-editing.css-GENERATED.ts\nvar cellEditingCSS = (\n /*css*/\n `.ag-cell-inline-editing{border:var(--ag-cell-editing-border)!important;border-radius:var(--ag-border-radius);box-shadow:var(--ag-cell-editing-shadow);padding:0;z-index:1;.ag-cell-edit-wrapper,.ag-cell-editor,.ag-cell-wrapper,:where(.ag-cell-editor) .ag-input-field-input,:where(.ag-cell-editor) .ag-wrapper{height:100%;line-height:normal;width:100%}}:where(.ag-popup-editor) .ag-large-text{background-color:var(--ag-background-color);border-radius:var(--ag-border-radius);box-shadow:var(--ag-dropdown-shadow);padding:0}.ag-large-text-input{height:auto;padding:var(--ag-cell-horizontal-padding)}:where(.ag-rtl .ag-large-text-input) textarea{resize:none}:where(.ag-ltr) .ag-checkbox-edit{padding-left:var(--ag-cell-horizontal-padding)}:where(.ag-rtl) .ag-checkbox-edit{padding-right:var(--ag-cell-horizontal-padding)}`\n);\n\n// packages/ag-grid-community/src/edit/cellEditors/checkboxCellEditor.ts\nvar CheckboxCellEditorElement = {\n tag: \"div\",\n cls: \"ag-cell-wrapper ag-cell-edit-wrapper ag-checkbox-edit\",\n children: [\n {\n tag: \"ag-checkbox\",\n ref: \"eCheckbox\",\n role: \"presentation\"\n }\n ]\n};\nvar CheckboxCellEditor = class extends PopupComponent {\n constructor() {\n super(CheckboxCellEditorElement, [AgCheckboxSelector]);\n this.eCheckbox = RefPlaceholder;\n }\n init(params) {\n this.params = params;\n const isSelected = params.value ?? void 0;\n const eCheckbox = this.eCheckbox;\n eCheckbox.setValue(isSelected);\n const inputEl = eCheckbox.getInputElement();\n inputEl.setAttribute(\"tabindex\", \"-1\");\n this.setAriaLabel(isSelected);\n this.addManagedListeners(eCheckbox, {\n fieldValueChanged: (event) => this.setAriaLabel(event.selected)\n });\n }\n getValue() {\n return this.eCheckbox.getValue();\n }\n focusIn() {\n this.eCheckbox.getFocusableElement().focus();\n }\n afterGuiAttached() {\n if (this.params.cellStartedEdit) {\n this.focusIn();\n }\n }\n isPopup() {\n return false;\n }\n setAriaLabel(isSelected) {\n const translate = this.getLocaleTextFunc();\n const stateName = _getAriaCheckboxStateName(translate, isSelected);\n const ariaLabel = translate(\"ariaToggleCellValue\", \"Press SPACE to toggle cell value\");\n this.eCheckbox.setInputAriaLabel(`${ariaLabel} (${stateName})`);\n }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/simpleCellEditor.ts\nvar SimpleCellEditor = class extends PopupComponent {\n constructor(cellEditorInput) {\n super(\n { tag: \"div\", cls: \"ag-cell-edit-wrapper\", children: [cellEditorInput.getTemplate()] },\n cellEditorInput.getAgComponents()\n );\n this.cellEditorInput = cellEditorInput;\n this.eInput = RefPlaceholder;\n }\n init(params) {\n this.params = params;\n const { cellStartedEdit, eventKey, suppressPreventDefault } = params;\n const eInput = this.eInput;\n this.cellEditorInput.init(eInput, params);\n let startValue;\n let shouldSetStartValue = true;\n if (cellStartedEdit) {\n this.focusAfterAttached = true;\n if (eventKey === KeyCode.BACKSPACE || eventKey === KeyCode.DELETE) {\n startValue = \"\";\n } else if (eventKey && eventKey.length === 1) {\n if (suppressPreventDefault) {\n shouldSetStartValue = false;\n } else {\n startValue = eventKey;\n }\n } else {\n startValue = this.cellEditorInput.getStartValue();\n if (eventKey !== KeyCode.F2) {\n this.highlightAllOnFocus = true;\n }\n }\n } else {\n this.focusAfterAttached = false;\n startValue = this.cellEditorInput.getStartValue();\n }\n if (shouldSetStartValue && startValue != null) {\n eInput.setStartValue(startValue);\n }\n this.addManagedElementListeners(eInput.getGui(), {\n keydown: (event) => {\n const { key } = event;\n if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n event.preventDefault();\n }\n }\n });\n }\n afterGuiAttached() {\n const translate = this.getLocaleTextFunc();\n const eInput = this.eInput;\n eInput.setInputAriaLabel(translate(\"ariaInputEditor\", \"Input Editor\"));\n if (!this.focusAfterAttached) {\n return;\n }\n if (!_isBrowserSafari()) {\n eInput.getFocusableElement().focus();\n }\n const inputEl = eInput.getInputElement();\n if (this.highlightAllOnFocus) {\n inputEl.select();\n } else {\n this.cellEditorInput.setCaret?.();\n }\n }\n // gets called when tabbing through cells and in full row edit mode\n focusIn() {\n const eInput = this.eInput;\n const focusEl = eInput.getFocusableElement();\n const inputEl = eInput.getInputElement();\n focusEl.focus();\n inputEl.select();\n }\n getValue() {\n return this.cellEditorInput.getValue();\n }\n isPopup() {\n return false;\n }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/dateCellEditor.ts\nvar DateCellElement = {\n tag: \"ag-input-date-field\",\n ref: \"eInput\",\n cls: \"ag-cell-editor\"\n};\nvar DateCellEditorInput = class {\n getTemplate() {\n return DateCellElement;\n }\n getAgComponents() {\n return [AgInputDateFieldSelector];\n }\n init(eInput, params) {\n this.eInput = eInput;\n this.params = params;\n const { min, max, step } = params;\n if (min != null) {\n eInput.setMin(min);\n }\n if (max != null) {\n eInput.setMax(max);\n }\n if (step != null) {\n eInput.setStep(step);\n }\n }\n getValue() {\n const { eInput, params } = this;\n const value = eInput.getDate();\n if (!_exists(value) && !_exists(params.value)) {\n return params.value;\n }\n return value ?? null;\n }\n getStartValue() {\n const { value } = this.params;\n if (!(value instanceof Date)) {\n return void 0;\n }\n return _serialiseDate(value, false);\n }\n};\nvar DateCellEditor = class extends SimpleCellEditor {\n constructor() {\n super(new DateCellEditorInput());\n }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/dateStringCellEditor.ts\nvar DateStringCellElement = {\n tag: \"ag-input-date-field\",\n ref: \"eInput\",\n cls: \"ag-cell-editor\"\n};\nvar DateStringCellEditorInput = class {\n constructor(getDataTypeService) {\n this.getDataTypeService = getDataTypeService;\n }\n getTemplate() {\n return DateStringCellElement;\n }\n getAgComponents() {\n return [AgInputDateFieldSelector];\n }\n init(eInput, params) {\n this.eInput = eInput;\n this.params = params;\n const { min, max, step } = params;\n if (min != null) {\n eInput.setMin(min);\n }\n if (max != null) {\n eInput.setMax(max);\n }\n if (step != null) {\n eInput.setStep(step);\n }\n }\n getValue() {\n const { params, eInput } = this;\n const value = this.formatDate(eInput.getDate());\n if (!_exists(value) && !_exists(params.value)) {\n return params.value;\n }\n return params.parseValue(value ?? \"\");\n }\n getStartValue() {\n return _serialiseDate(this.parseDate(this.params.value ?? void 0) ?? null, false);\n }\n parseDate(value) {\n const dataTypeSvc = this.getDataTypeService();\n return dataTypeSvc ? dataTypeSvc.getDateParserFunction(this.params.column)(value) : _parseDateTimeFromString(value) ?? void 0;\n }\n formatDate(value) {\n const dataTypeSvc = this.getDataTypeService();\n return dataTypeSvc ? dataTypeSvc.getDateFormatterFunction(this.params.column)(value) : _serialiseDate(value ?? null, false) ?? void 0;\n }\n};\nvar DateStringCellEditor = class extends SimpleCellEditor {\n constructor() {\n super(new DateStringCellEditorInput(() => this.beans.dataTypeSvc));\n }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/largeTextCellEditor.ts\nvar LargeTextCellElement = {\n tag: \"div\",\n cls: \"ag-large-text\",\n children: [\n {\n tag: \"ag-input-text-area\",\n ref: \"eTextArea\",\n cls: \"ag-large-text-input\"\n }\n ]\n};\nvar LargeTextCellEditor = class extends PopupComponent {\n constructor() {\n super(LargeTextCellElement, [AgInputTextAreaSelector]);\n this.eTextArea = RefPlaceholder;\n }\n init(params) {\n this.params = params;\n this.focusAfterAttached = params.cellStartedEdit;\n this.eTextArea.setMaxLength(params.maxLength || 200).setCols(params.cols || 60).setRows(params.rows || 10);\n if (params.value != null) {\n this.eTextArea.setValue(params.value.toString(), true);\n }\n this.addGuiEventListener(\"keydown\", this.onKeyDown.bind(this));\n this.activateTabIndex();\n }\n onKeyDown(event) {\n const key = event.key;\n if (key === KeyCode.LEFT || key === KeyCode.UP || key === KeyCode.RIGHT || key === KeyCode.DOWN || event.shiftKey && key === KeyCode.ENTER) {\n event.stopPropagation();\n }\n }\n afterGuiAttached() {\n const translate = this.getLocaleTextFunc();\n this.eTextArea.setInputAriaLabel(translate(\"ariaInputEditor\", \"Input Editor\"));\n if (this.focusAfterAttached) {\n this.eTextArea.getFocusableElement().focus();\n }\n }\n getValue() {\n const value = this.eTextArea.getValue();\n const params = this.params;\n if (!_exists(value) && !_exists(params.value)) {\n return params.value;\n }\n return params.parseValue(value);\n }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/numberCellEditor.ts\nvar NumberCellElement = {\n tag: \"ag-input-number-field\",\n ref: \"eInput\",\n cls: \"ag-cell-editor\"\n};\nvar NumberCellEditorInput = class {\n getTemplate() {\n return NumberCellElement;\n }\n getAgComponents() {\n return [AgInputNumberFieldSelector];\n }\n init(eInput, params) {\n this.eInput = eInput;\n this.params = params;\n const { max, min, precision, step } = params;\n if (max != null) {\n eInput.setMax(max);\n }\n if (min != null) {\n eInput.setMin(min);\n }\n if (precision != null) {\n eInput.setPrecision(precision);\n }\n if (step != null) {\n eInput.setStep(step);\n }\n const inputEl = eInput.getInputElement();\n if (params.preventStepping) {\n eInput.addManagedElementListeners(inputEl, { keydown: this.preventStepping });\n } else if (params.showStepperButtons) {\n inputEl.classList.add(\"ag-number-field-input-stepper\");\n }\n }\n preventStepping(e) {\n if (e.key === KeyCode.UP || e.key === KeyCode.DOWN) {\n e.preventDefault();\n }\n }\n getValue() {\n const { eInput, params } = this;\n const value = eInput.getValue();\n if (!_exists(value) && !_exists(params.value)) {\n return params.value;\n }\n let parsedValue = params.parseValue(value);\n if (parsedValue == null) {\n return parsedValue;\n }\n if (typeof parsedValue === \"string\") {\n if (parsedValue === \"\") {\n return null;\n }\n parsedValue = Number(parsedValue);\n }\n return isNaN(parsedValue) ? null : parsedValue;\n }\n getStartValue() {\n return this.params.value;\n }\n setCaret() {\n if (_isBrowserSafari()) {\n this.eInput.getInputElement().focus({ preventScroll: true });\n }\n }\n};\nvar NumberCellEditor = class extends SimpleCellEditor {\n constructor() {\n super(new NumberCellEditorInput());\n }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/selectCellEditor.ts\nvar SelectCellElement = {\n tag: \"div\",\n cls: \"ag-cell-edit-wrapper\",\n children: [\n {\n tag: \"ag-select\",\n ref: \"eSelect\",\n cls: \"ag-cell-editor\"\n }\n ]\n};\nvar SelectCellEditor = class extends PopupComponent {\n constructor() {\n super(SelectCellElement, [AgSelectSelector]);\n this.eSelect = RefPlaceholder;\n this.startedByEnter = false;\n }\n wireBeans(beans) {\n this.valueSvc = beans.valueSvc;\n }\n init(params) {\n this.focusAfterAttached = params.cellStartedEdit;\n const { eSelect, valueSvc, gos } = this;\n const { values, value, eventKey } = params;\n if (_missing(values)) {\n _warn(58);\n return;\n }\n this.startedByEnter = eventKey != null ? eventKey === KeyCode.ENTER : false;\n let hasValue = false;\n values.forEach((currentValue) => {\n const option = { value: currentValue };\n const valueFormatted = valueSvc.formatValue(params.column, null, currentValue);\n const valueFormattedExits = valueFormatted !== null && valueFormatted !== void 0;\n option.text = valueFormattedExits ? valueFormatted : currentValue;\n eSelect.addOption(option);\n hasValue = hasValue || value === currentValue;\n });\n if (hasValue) {\n eSelect.setValue(params.value, true);\n } else if (params.values.length) {\n eSelect.setValue(params.values[0], true);\n }\n const { valueListGap, valueListMaxWidth, valueListMaxHeight } = params;\n if (valueListGap != null) {\n eSelect.setPickerGap(valueListGap);\n }\n if (valueListMaxHeight != null) {\n eSelect.setPickerMaxHeight(valueListMaxHeight);\n }\n if (valueListMaxWidth != null) {\n eSelect.setPickerMaxWidth(valueListMaxWidth);\n }\n if (gos.get(\"editType\") !== \"fullRow\") {\n this.addManagedListeners(this.eSelect, { selectedItem: () => params.stopEditing() });\n }\n }\n afterGuiAttached() {\n if (this.focusAfterAttached) {\n this.eSelect.getFocusableElement().focus();\n }\n if (this.startedByEnter) {\n setTimeout(() => {\n if (this.isAlive()) {\n this.eSelect.showPicker();\n }\n });\n }\n }\n focusIn() {\n this.eSelect.getFocusableElement().focus();\n }\n getValue() {\n return this.eSelect.getValue();\n }\n isPopup() {\n return false;\n }\n};\n\n// packages/ag-grid-community/src/edit/cellEditors/textCellEditor.ts\nvar TextCellEditorElement = {\n tag: \"ag-input-text-field\",\n ref: \"eInput\",\n cls: \"ag-cell-editor\"\n};\nvar TextCellEditorInput = class {\n getTemplate() {\n return TextCellEditorElement;\n }\n getAgComponents() {\n return [AgInputTextFieldSelector];\n }\n init(eInput, params) {\n this.eInput = eInput;\n this.params = params;\n const maxLength = params.maxLength;\n if (maxLength != null) {\n eInput.setMaxLength(maxLength);\n }\n }\n getValue() {\n const { eInput, params } = this;\n const value = eInput.getValue();\n if (!_exists(value) && !_exists(params.value)) {\n return params.value;\n }\n return params.parseValue(value);\n }\n getStartValue() {\n const params = this.params;\n const formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n }\n setCaret() {\n const eInput = this.eInput;\n const value = eInput.getValue();\n const len = _exists(value) && value.length || 0;\n if (len) {\n eInput.getInputElement().setSelectionRange(len, len);\n }\n }\n};\nvar TextCellEditor = class extends SimpleCellEditor {\n constructor() {\n super(new TextCellEditorInput());\n }\n};\n\n// packages/ag-grid-community/src/api/scrollApi.ts\nfunction getVerticalPixelRange(beans) {\n return beans.ctrlsSvc.getScrollFeature().getVScrollPosition();\n}\nfunction getHorizontalPixelRange(beans) {\n return beans.ctrlsSvc.getScrollFeature().getHScrollPosition();\n}\nfunction ensureColumnVisible(beans, key, position = \"auto\") {\n beans.frameworkOverrides.wrapIncoming(\n () => beans.ctrlsSvc.getScrollFeature().ensureColumnVisible(key, position),\n \"ensureVisible\"\n );\n}\nfunction ensureIndexVisible(beans, index, position) {\n beans.frameworkOverrides.wrapIncoming(\n () => beans.ctrlsSvc.getScrollFeature().ensureIndexVisible(index, position),\n \"ensureVisible\"\n );\n}\nfunction ensureNodeVisible(beans, nodeSelector, position = null) {\n beans.frameworkOverrides.wrapIncoming(\n () => beans.ctrlsSvc.getScrollFeature().ensureNodeVisible(nodeSelector, position),\n \"ensureVisible\"\n );\n}\n\n// packages/ag-grid-community/src/edit/editApi.ts\nfunction undoCellEditing(beans) {\n beans.undoRedo?.undo(\"api\");\n}\nfunction redoCellEditing(beans) {\n beans.undoRedo?.redo(\"api\");\n}\nfunction getCellEditorInstances(beans, params = {}) {\n const res = [];\n beans.rowRenderer.getCellCtrls(params.rowNodes, params.columns).forEach((cellCtrl) => {\n const cellEditor = cellCtrl.comp?.getCellEditor();\n if (cellEditor) {\n res.push(_unwrapUserComp(cellEditor));\n }\n });\n return res;\n}\nfunction getEditingCells(beans) {\n const res = [];\n beans.rowRenderer.getAllCellCtrls().forEach((cellCtrl) => {\n if (cellCtrl.editing) {\n const { cellPosition } = cellCtrl;\n res.push(cellPosition);\n }\n });\n return res;\n}\nfunction stopEditing(beans, cancel = false) {\n beans.editSvc?.stopAllEditing(cancel);\n}\nfunction startEditingCell(beans, params) {\n const column = beans.colModel.getCol(params.colKey);\n if (!column) {\n _warn(12, { colKey: params.colKey });\n return;\n }\n const cellPosition = {\n rowIndex: params.rowIndex,\n rowPinned: params.rowPinned || null,\n column\n };\n const notPinned = params.rowPinned == null;\n if (notPinned) {\n ensureIndexVisible(beans, params.rowIndex);\n }\n ensureColumnVisible(beans, params.colKey);\n const cell = _getCellByPosition(beans, cellPosition);\n if (!cell) {\n return;\n }\n const { focusSvc, gos, editSvc } = beans;\n const isFocusWithinCell = () => {\n const activeElement = _getActiveDomElement(beans);\n const eCell = cell.eGui;\n return activeElement !== eCell && !!eCell?.contains(activeElement);\n };\n const forceBrowserFocus = gos.get(\"stopEditingWhenCellsLoseFocus\") && isFocusWithinCell();\n if (forceBrowserFocus || !focusSvc.isCellFocused(cellPosition)) {\n focusSvc.setFocusedCell({\n ...cellPosition,\n forceBrowserFocus,\n preventScrollOnBrowserFocus: true\n });\n }\n editSvc?.startRowOrCellEdit(cell, params.key);\n}\nfunction getCurrentUndoSize(beans) {\n return beans.undoRedo?.getCurrentUndoStackSize() ?? 0;\n}\nfunction getCurrentRedoSize(beans) {\n return beans.undoRedo?.getCurrentRedoStackSize() ?? 0;\n}\n\n// packages/ag-grid-community/src/edit/cellEditors/popupEditorWrapper.ts\nvar PopupEditorElement = { tag: \"div\", cls: \"ag-popup-editor\", attrs: { tabindex: \"-1\" } };\nvar PopupEditorWrapper = class extends PopupComponent {\n constructor(params) {\n super(PopupEditorElement);\n this.params = params;\n }\n postConstruct() {\n _setDomData(this.gos, this.getGui(), \"popupEditorWrapper\", true);\n this.addKeyDownListener();\n }\n addKeyDownListener() {\n const eGui = this.getGui();\n const params = this.params;\n const listener = (event) => {\n if (!_isUserSuppressingKeyboardEvent(this.gos, event, params.node, params.column, true)) {\n params.onKeyDown(event);\n }\n };\n this.addManagedElementListeners(eGui, { keydown: listener });\n }\n};\n\n// packages/ag-grid-community/src/edit/editService.ts\nvar EditService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"editSvc\";\n }\n /** @return whether to prevent default on event */\n startEditing(cellCtrl, key = null, cellStartedEdit = false, event = null) {\n if (!cellCtrl.isCellEditable() || cellCtrl.editing) {\n return false;\n }\n if (!cellCtrl.comp) {\n cellCtrl.onCompAttachedFuncs.push(() => {\n this.startEditing(cellCtrl, key, cellStartedEdit, event);\n });\n return true;\n }\n const editorParams = this.createCellEditorParams(cellCtrl, key, cellStartedEdit);\n const colDef = cellCtrl.column.getColDef();\n const compDetails = _getCellEditorDetails(this.beans.userCompFactory, colDef, editorParams);\n const popup = compDetails?.popupFromSelector != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;\n const position = compDetails?.popupPositionFromSelector != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;\n setEditing(cellCtrl, true, compDetails);\n cellCtrl.comp.setEditDetails(compDetails, popup, position, this.gos.get(\"reactiveCustomComponents\"));\n this.eventSvc.dispatchEvent(cellCtrl.createEvent(event, \"cellEditingStarted\"));\n return !compDetails?.params?.suppressPreventDefault;\n }\n /**\n * Ends the Cell Editing\n * @param cancel `True` if the edit process is being canceled.\n * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.\n */\n stopEditing(cellCtrl, cancel = false) {\n cellCtrl.onEditorAttachedFuncs = [];\n if (!cellCtrl.editing) {\n return false;\n }\n const { comp: cellComp, column, rowNode } = cellCtrl;\n const { newValue, newValueExists } = takeValueFromCellEditor(cancel, cellComp);\n const oldValue = this.beans.valueSvc.getValueForDisplay(column, rowNode);\n let valueChanged = false;\n if (newValueExists) {\n valueChanged = saveNewValue(cellCtrl, oldValue, newValue, rowNode, column);\n }\n setEditing(cellCtrl, false, void 0);\n cellComp.setEditDetails();\n cellCtrl.updateAndFormatValue(false);\n cellCtrl.refreshCell({ forceRefresh: true, suppressFlash: true });\n this.eventSvc.dispatchEvent({\n ...cellCtrl.createEvent(null, \"cellEditingStopped\"),\n oldValue,\n newValue,\n valueChanged\n });\n return valueChanged;\n }\n handleColDefChanged(cellCtrl) {\n const cellEditor = cellCtrl.comp?.getCellEditor();\n if (cellEditor?.refresh) {\n const { eventKey, cellStartedEdit } = cellCtrl.editCompDetails.params;\n const editorParams = this.createCellEditorParams(cellCtrl, eventKey, cellStartedEdit);\n const colDef = cellCtrl.column.getColDef();\n const compDetails = _getCellEditorDetails(this.beans.userCompFactory, colDef, editorParams);\n cellEditor.refresh(compDetails.params);\n }\n }\n setFocusOutOnEditor(cellCtrl) {\n if (!cellCtrl.editing) {\n return;\n }\n const cellEditor = cellCtrl.comp.getCellEditor();\n if (cellEditor && cellEditor.focusOut) {\n cellEditor.focusOut();\n }\n }\n setFocusInOnEditor(cellCtrl) {\n if (!cellCtrl.editing) {\n return;\n }\n const cellComp = cellCtrl.comp;\n const cellEditor = cellComp.getCellEditor();\n if (cellEditor?.focusIn) {\n cellEditor.focusIn();\n } else {\n cellCtrl.focusCell(true);\n cellCtrl.onEditorAttachedFuncs.push(() => cellComp.getCellEditor()?.focusIn?.());\n }\n }\n createPopupEditorWrapper(params) {\n return new PopupEditorWrapper(params);\n }\n stopAllEditing(cancel = false) {\n this.beans.rowRenderer.getAllRowCtrls().forEach((rowCtrl) => this.stopRowEditing(rowCtrl, cancel));\n }\n stopRowEditing(rowCtrl, cancel = false) {\n if (rowCtrl.stoppingRowEdit) {\n return;\n }\n const cellControls = rowCtrl.getAllCellCtrls();\n const isRowEdit = rowCtrl.editing;\n rowCtrl.stoppingRowEdit = true;\n let fireRowEditEvent = false;\n for (const ctrl of cellControls) {\n const valueChanged = ctrl.stopEditing(cancel);\n if (isRowEdit && !cancel && !fireRowEditEvent && valueChanged) {\n fireRowEditEvent = true;\n }\n }\n if (fireRowEditEvent) {\n this.eventSvc.dispatchEvent(rowCtrl.createRowEvent(\"rowValueChanged\"));\n }\n if (isRowEdit) {\n this.beans.rowEditSvc?.setEditing(rowCtrl, false);\n }\n rowCtrl.stoppingRowEdit = false;\n }\n addStopEditingWhenGridLosesFocus(viewports) {\n if (!this.gos.get(\"stopEditingWhenCellsLoseFocus\")) {\n return;\n }\n const focusOutListener = (event) => {\n const elementWithFocus = event.relatedTarget;\n if (_getTabIndex(elementWithFocus) === null) {\n this.stopAllEditing();\n return;\n }\n let clickInsideGrid = (\n // see if click came from inside the viewports\n viewports.some((viewport) => viewport.contains(elementWithFocus)) && // and also that it's not from a detail grid\n _isElementInThisGrid(this.gos, elementWithFocus)\n );\n if (!clickInsideGrid) {\n const popupSvc = this.beans.popupSvc;\n clickInsideGrid = !!popupSvc && (popupSvc.getActivePopups().some((popup) => popup.contains(elementWithFocus)) || popupSvc.isElementWithinCustomPopup(elementWithFocus));\n }\n if (!clickInsideGrid) {\n this.stopAllEditing();\n }\n };\n viewports.forEach((viewport) => this.addManagedElementListeners(viewport, { focusout: focusOutListener }));\n }\n setInlineEditingCss(rowCtrl) {\n const editing = rowCtrl.editing || rowCtrl.getAllCellCtrls().some((cellCtrl) => cellCtrl.editing);\n rowCtrl.forEachGui(void 0, (gui) => {\n gui.rowComp.addOrRemoveCssClass(\"ag-row-inline-editing\", editing);\n gui.rowComp.addOrRemoveCssClass(\"ag-row-not-inline-editing\", !editing);\n });\n }\n isCellEditable(column, rowNode) {\n if (rowNode.group) {\n if (this.gos.get(\"treeData\")) {\n if (!rowNode.data && !this.gos.get(\"enableGroupEdit\")) {\n return false;\n }\n } else {\n if (!this.gos.get(\"enableGroupEdit\")) {\n return false;\n }\n }\n }\n return column.isColumnFunc(rowNode, column.colDef.editable);\n }\n // called by rowRenderer when user navigates via tab key\n /** @return whether to prevent default on event */\n startRowOrCellEdit(cellCtrl, key, event = null) {\n if (!cellCtrl.comp) {\n cellCtrl.onCompAttachedFuncs.push(() => {\n this.startRowOrCellEdit(cellCtrl, key, event);\n });\n return true;\n }\n if (this.gos.get(\"editType\") === \"fullRow\") {\n return this.beans.rowEditSvc?.startEditing(cellCtrl.rowCtrl, key, cellCtrl) ?? false;\n } else {\n return this.startEditing(cellCtrl, key, true, event);\n }\n }\n // pass in 'true' to cancel the editing.\n stopRowOrCellEdit(cellCtrl, cancel = false, suppressNavigateAfterEdit = false, shiftKey = false) {\n if (this.gos.get(\"editType\") === \"fullRow\") {\n this.stopRowEditing(cellCtrl.rowCtrl, cancel);\n } else {\n this.stopEditing(cellCtrl, cancel);\n }\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit(shiftKey, cellCtrl.cellPosition);\n }\n }\n createCellEditorParams(cellCtrl, key, cellStartedEdit) {\n const {\n column,\n rowNode,\n cellPosition: { rowIndex }\n } = cellCtrl;\n const { valueSvc, gos } = this.beans;\n return _addGridCommonParams(gos, {\n value: valueSvc.getValueForDisplay(column, rowNode),\n eventKey: key,\n column,\n colDef: column.getColDef(),\n rowIndex,\n node: rowNode,\n data: rowNode.data,\n cellStartedEdit,\n onKeyDown: cellCtrl.onKeyDown.bind(cellCtrl),\n stopEditing: this.stopRowOrCellEdit.bind(this, cellCtrl, false),\n eGridCell: cellCtrl.eGui,\n parseValue: (newValue) => valueSvc.parseValue(column, rowNode, newValue, cellCtrl.value),\n formatValue: cellCtrl.formatValue.bind(cellCtrl)\n });\n }\n navigateAfterEdit(shiftKey, cellPosition) {\n const enterNavigatesVerticallyAfterEdit = this.gos.get(\"enterNavigatesVerticallyAfterEdit\");\n if (enterNavigatesVerticallyAfterEdit) {\n const key = shiftKey ? KeyCode.UP : KeyCode.DOWN;\n this.beans.navigation?.navigateToNextCell(null, key, cellPosition, false);\n }\n }\n};\nfunction setEditing(cellCtrl, editing, compDetails) {\n cellCtrl.editCompDetails = compDetails;\n if (cellCtrl.editing === editing) {\n return;\n }\n cellCtrl.editing = editing;\n}\nfunction takeValueFromCellEditor(cancel, cellComp) {\n const noValueResult = { newValueExists: false };\n if (cancel) {\n return noValueResult;\n }\n const cellEditor = cellComp.getCellEditor();\n if (!cellEditor) {\n return noValueResult;\n }\n const userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();\n if (userWantsToCancel) {\n return noValueResult;\n }\n const newValue = cellEditor.getValue();\n return {\n newValue,\n newValueExists: true\n };\n}\nfunction saveNewValue(cellCtrl, oldValue, newValue, rowNode, column) {\n if (newValue === oldValue) {\n return false;\n }\n cellCtrl.suppressRefreshCell = true;\n const valueChanged = rowNode.setDataValue(column, newValue, \"edit\");\n cellCtrl.suppressRefreshCell = false;\n return valueChanged;\n}\n\n// packages/ag-grid-community/src/edit/rowEditService.ts\nvar RowEditService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowEditSvc\";\n }\n /** @return whether to prevent default on event */\n startEditing(rowCtrl, key = null, sourceRenderedCell = null, event = null) {\n if (rowCtrl.editing) {\n return false;\n }\n let preventDefault = true;\n let atLeastOneEditing = false;\n const { editSvc } = this.beans;\n rowCtrl.getAllCellCtrls().forEach((cellCtrl) => {\n const cellStartedEdit = cellCtrl === sourceRenderedCell;\n if (cellStartedEdit) {\n preventDefault = editSvc?.startEditing(cellCtrl, key, cellStartedEdit, event) ?? false;\n } else {\n editSvc?.startEditing(cellCtrl, null, cellStartedEdit, event);\n }\n atLeastOneEditing || (atLeastOneEditing = cellCtrl.editing);\n });\n if (atLeastOneEditing) {\n this.setEditing(rowCtrl, true);\n }\n return preventDefault;\n }\n setEditing(rowCtrl, value) {\n rowCtrl.editing = value;\n rowCtrl.forEachGui(void 0, (gui) => gui.rowComp.addOrRemoveCssClass(\"ag-row-editing\", value));\n const event = value ? rowCtrl.createRowEvent(\"rowEditingStarted\") : rowCtrl.createRowEvent(\"rowEditingStopped\");\n this.eventSvc.dispatchEvent(event);\n }\n};\n\n// packages/ag-grid-community/src/edit/editModule.ts\nvar EditCoreModule = {\n moduleName: \"EditCore\",\n version: VERSION,\n beans: [EditService, RowEditService],\n apiFunctions: {\n getCellEditorInstances,\n getEditingCells,\n stopEditing,\n startEditingCell\n },\n dependsOn: [PopupModule],\n css: [cellEditingCSS]\n};\nvar UndoRedoEditModule = {\n moduleName: \"UndoRedoEdit\",\n version: VERSION,\n beans: [UndoRedoService],\n apiFunctions: {\n undoCellEditing,\n redoCellEditing,\n getCurrentUndoSize,\n getCurrentRedoSize\n },\n dependsOn: [EditCoreModule]\n};\nvar TextEditorModule = {\n moduleName: \"TextEditor\",\n version: VERSION,\n userComponents: { agCellEditor: TextCellEditor, agTextCellEditor: TextCellEditor },\n dependsOn: [EditCoreModule]\n};\nvar NumberEditorModule = {\n moduleName: \"NumberEditor\",\n version: VERSION,\n userComponents: {\n agNumberCellEditor: {\n classImp: NumberCellEditor,\n params: {\n suppressPreventDefault: true\n }\n }\n },\n dependsOn: [EditCoreModule]\n};\nvar DateEditorModule = {\n moduleName: \"DateEditor\",\n version: VERSION,\n userComponents: {\n agDateCellEditor: DateCellEditor,\n agDateStringCellEditor: DateStringCellEditor\n },\n dependsOn: [EditCoreModule]\n};\nvar CheckboxEditorModule = {\n moduleName: \"CheckboxEditor\",\n version: VERSION,\n userComponents: {\n agCheckboxCellEditor: CheckboxCellEditor\n },\n dependsOn: [EditCoreModule]\n};\nvar SelectEditorModule = {\n moduleName: \"SelectEditor\",\n version: VERSION,\n userComponents: { agSelectCellEditor: SelectCellEditor },\n dependsOn: [EditCoreModule]\n};\nvar LargeTextEditorModule = {\n moduleName: \"LargeTextEditor\",\n version: VERSION,\n userComponents: { agLargeTextCellEditor: LargeTextCellEditor },\n dependsOn: [EditCoreModule]\n};\nvar CustomEditorModule = {\n moduleName: \"CustomEditor\",\n version: VERSION,\n dependsOn: [EditCoreModule]\n};\n\n// packages/ag-grid-community/src/columns/selectionColService.ts\nvar SelectionColService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"selectionColSvc\";\n }\n postConstruct() {\n this.addManagedPropertyListener(\"rowSelection\", (event) => {\n this.onSelectionOptionsChanged(\n event.currentValue,\n event.previousValue,\n _convertColumnEventSourceType(event.source)\n );\n });\n this.addManagedPropertyListener(\"selectionColumnDef\", this.updateColumns.bind(this));\n }\n addColumns(cols) {\n const selectionCols = this.columns;\n if (selectionCols == null) {\n return;\n }\n cols.list = selectionCols.list.concat(cols.list);\n cols.tree = selectionCols.tree.concat(cols.tree);\n _updateColsMap(cols);\n }\n createColumns(cols, updateOrders) {\n const destroyCollection = () => {\n _destroyColumnTree(this.beans, this.columns?.tree);\n this.columns = null;\n };\n const newTreeDepth = cols.treeDepth;\n const oldTreeDepth = this.columns?.treeDepth ?? -1;\n const treeDepthSame = oldTreeDepth == newTreeDepth;\n const list = this.generateSelectionCols();\n const areSame = _areColIdsEqual(list, this.columns?.list ?? []);\n if (areSame && treeDepthSame) {\n return;\n }\n destroyCollection();\n const { colGroupSvc } = this.beans;\n const treeDepth = colGroupSvc?.findDepth(cols.tree) ?? 0;\n const tree = colGroupSvc?.balanceTreeForAutoCols(list, treeDepth) ?? [];\n this.columns = {\n list,\n tree,\n treeDepth,\n map: {}\n };\n const putSelectionColsFirstInList = (cols2) => {\n if (!cols2) {\n return null;\n }\n const colsFiltered = cols2.filter((col) => !isColumnSelectionCol(col));\n return [...list, ...colsFiltered];\n };\n updateOrders(putSelectionColsFirstInList);\n }\n updateColumns(event) {\n const source = _convertColumnEventSourceType(event.source);\n const current = event.currentValue;\n this.columns?.list.forEach((col) => {\n const newColDef = this.createSelectionColDef(current);\n col.setColDef(newColDef, null, source);\n _applyColumnState(this.beans, { state: [{ colId: col.getColId(), ...newColDef }] }, source);\n });\n }\n getColumn(key) {\n return this.columns?.list.find((col) => _columnsMatch(col, key)) ?? null;\n }\n getColumns() {\n return this.columns?.list ?? null;\n }\n isSelectionColumnEnabled() {\n const { gos, beans } = this;\n const rowSelection = gos.get(\"rowSelection\");\n if (typeof rowSelection !== \"object\" || !_isRowSelection(gos)) {\n return false;\n }\n const hasAutoCols = (beans.autoColSvc?.getColumns()?.length ?? 0) > 0;\n if (rowSelection.checkboxLocation === \"autoGroupColumn\" && hasAutoCols) {\n return false;\n }\n const checkboxes = !!_getCheckboxes(rowSelection);\n const headerCheckbox = _getHeaderCheckbox(rowSelection);\n return checkboxes || headerCheckbox;\n }\n createSelectionColDef(def) {\n const { gos } = this.beans;\n const selectionColumnDef = def ?? gos.get(\"selectionColumnDef\");\n const enableRTL = gos.get(\"enableRtl\");\n const { rowSpan: _, spanRows: __, ...filteredSelColDef } = selectionColumnDef ?? {};\n return {\n // overridable properties\n width: 50,\n resizable: false,\n suppressHeaderMenuButton: true,\n sortable: false,\n suppressMovable: true,\n lockPosition: enableRTL ? \"right\" : \"left\",\n comparator(valueA, valueB, nodeA, nodeB) {\n const aSelected = nodeA.isSelected();\n const bSelected = nodeB.isSelected();\n return aSelected === bSelected ? 0 : aSelected ? 1 : -1;\n },\n editable: false,\n suppressFillHandle: true,\n pinned: null,\n // overrides\n ...filteredSelColDef,\n // non-overridable properties\n colId: SELECTION_COLUMN_ID\n };\n }\n generateSelectionCols() {\n if (!this.isSelectionColumnEnabled()) {\n return [];\n }\n const colDef = this.createSelectionColDef();\n const colId = colDef.colId;\n this.beans.validation?.validateColDef(colDef, colId, true);\n const col = new AgColumn(colDef, null, colId, false);\n this.createBean(col);\n return [col];\n }\n onSelectionOptionsChanged(current, prev, source) {\n const prevCheckbox = prev && typeof prev !== \"string\" ? _getCheckboxes(prev) : void 0;\n const currCheckbox = current && typeof current !== \"string\" ? _getCheckboxes(current) : void 0;\n const checkboxHasChanged = prevCheckbox !== currCheckbox;\n const prevHeaderCheckbox = prev && typeof prev !== \"string\" ? _getHeaderCheckbox(prev) : void 0;\n const currHeaderCheckbox = current && typeof current !== \"string\" ? _getHeaderCheckbox(current) : void 0;\n const headerCheckboxHasChanged = prevHeaderCheckbox !== currHeaderCheckbox;\n const currLocation = _getCheckboxLocation(current);\n const prevLocation = _getCheckboxLocation(prev);\n const locationChanged = currLocation !== prevLocation;\n if (checkboxHasChanged || headerCheckboxHasChanged || locationChanged) {\n this.beans.colModel.refreshAll(source);\n }\n }\n destroy() {\n _destroyColumnTree(this.beans, this.columns?.tree);\n super.destroy();\n }\n refreshVisibility(source) {\n if (!this.isSelectionColumnEnabled()) {\n return;\n }\n const beans = this.beans;\n const visibleColumns = beans.visibleCols.getAllTrees() ?? [];\n if (visibleColumns.length === 0) {\n return;\n }\n if (!visibleColumns.some(isLeafColumnSelectionCol)) {\n const existingState = _getColumnState(beans).find((state) => isColumnSelectionCol(state.colId));\n if (existingState) {\n _applyColumnState(\n beans,\n {\n state: [{ colId: existingState.colId, hide: !existingState.hide }]\n },\n source\n );\n }\n }\n if (visibleColumns.length === 1) {\n const firstColumn = visibleColumns[0];\n const leafSelectionCol = getLeafColumnSelectionCol(firstColumn);\n if (!leafSelectionCol) {\n return;\n }\n _applyColumnState(beans, { state: [{ colId: leafSelectionCol.getColId(), hide: true }] }, source);\n }\n }\n};\nvar isLeafColumnSelectionCol = (c) => c.isColumn ? isColumnSelectionCol(c) : c.getChildren()?.some(isLeafColumnSelectionCol) ?? false;\nfunction getLeafColumnSelectionCol(c) {\n if (c.isColumn) {\n return isColumnSelectionCol(c) ? c : null;\n }\n const children = c.getChildren() ?? [];\n for (const child of children) {\n const selCol = getLeafColumnSelectionCol(child);\n if (selCol) {\n return selCol;\n }\n }\n return null;\n}\n\n// packages/ag-grid-community/src/selection/rowSelectionApi.ts\nfunction setNodesSelected(beans, params) {\n const allNodesValid = params.nodes.every((node) => {\n if (node.rowPinned) {\n _warn(59);\n return false;\n }\n if (node.id === void 0) {\n _warn(60);\n return false;\n }\n return true;\n });\n if (!allNodesValid) {\n return;\n }\n const { nodes, source, newValue } = params;\n beans.selectionSvc?.setNodesSelected({ nodes, source: source ?? \"api\", newValue });\n}\nfunction selectAll(beans, selectAll2, source = \"apiSelectAll\") {\n beans.selectionSvc?.selectAllRowNodes({ source, selectAll: selectAll2 });\n}\nfunction deselectAll(beans, selectAll2, source = \"apiSelectAll\") {\n beans.selectionSvc?.deselectAllRowNodes({ source, selectAll: selectAll2 });\n}\nfunction selectAllFiltered(beans, source = \"apiSelectAllFiltered\") {\n beans.selectionSvc?.selectAllRowNodes({ source, selectAll: \"filtered\" });\n}\nfunction deselectAllFiltered(beans, source = \"apiSelectAllFiltered\") {\n beans.selectionSvc?.deselectAllRowNodes({ source, selectAll: \"filtered\" });\n}\nfunction selectAllOnCurrentPage(beans, source = \"apiSelectAllCurrentPage\") {\n beans.selectionSvc?.selectAllRowNodes({ source, selectAll: \"currentPage\" });\n}\nfunction deselectAllOnCurrentPage(beans, source = \"apiSelectAllCurrentPage\") {\n beans.selectionSvc?.deselectAllRowNodes({ source, selectAll: \"currentPage\" });\n}\nfunction getSelectedNodes(beans) {\n return beans.selectionSvc?.getSelectedNodes() ?? [];\n}\nfunction getSelectedRows(beans) {\n return beans.selectionSvc?.getSelectedRows() ?? [];\n}\n\n// packages/ag-grid-community/src/selection/selectionService.ts\nvar SelectionService = class extends BaseSelectionService {\n constructor() {\n super(...arguments);\n this.beanName = \"selectionSvc\";\n this.selectedNodes = /* @__PURE__ */ new Map();\n /** Only used to track detail grid selection state when master/detail is enabled */\n this.detailSelection = /* @__PURE__ */ new Map();\n this.masterSelectsDetail = false;\n }\n postConstruct() {\n super.postConstruct();\n const { gos } = this;\n this.mode = _getRowSelectionMode(gos);\n this.groupSelectsDescendants = _getGroupSelectsDescendants(gos);\n this.groupSelectsFiltered = _getGroupSelection(gos) === \"filteredDescendants\";\n this.masterSelectsDetail = _getMasterSelects(gos) === \"detail\";\n this.addManagedPropertyListeners([\"groupSelectsChildren\", \"groupSelectsFiltered\", \"rowSelection\"], () => {\n const groupSelectsDescendants = _getGroupSelectsDescendants(gos);\n const selectionMode = _getRowSelectionMode(gos);\n const groupSelectsFiltered = _getGroupSelection(gos) === \"filteredDescendants\";\n this.masterSelectsDetail = _getMasterSelects(gos) === \"detail\";\n if (groupSelectsDescendants !== this.groupSelectsDescendants || groupSelectsFiltered !== this.groupSelectsFiltered || selectionMode !== this.mode) {\n this.deselectAllRowNodes({ source: \"api\" });\n this.groupSelectsDescendants = groupSelectsDescendants;\n this.groupSelectsFiltered = groupSelectsFiltered;\n this.mode = selectionMode;\n }\n });\n this.addManagedEventListeners({ rowSelected: this.onRowSelected.bind(this) });\n }\n destroy() {\n super.destroy();\n this.resetNodes();\n }\n handleSelectionEvent(event, rowNode, source) {\n if (this.isRowSelectionBlocked(rowNode))\n return 0;\n const selection = this.inferNodeSelections(rowNode, event.shiftKey, event.metaKey || event.ctrlKey, source);\n if (selection == null) {\n return 0;\n }\n this.selectionCtx.selectAll = false;\n if (\"select\" in selection) {\n if (selection.reset) {\n this.resetNodes();\n } else {\n this.selectRange(selection.deselect, false, source);\n }\n return this.selectRange(selection.select, true, source);\n } else {\n return this.setNodesSelected({\n nodes: [selection.node],\n newValue: selection.newValue,\n clearSelection: selection.clearSelection,\n event,\n source\n });\n }\n }\n setNodesSelected({\n newValue,\n clearSelection,\n suppressFinishActions,\n nodes,\n event,\n source\n }) {\n if (!_isRowSelection(this.gos) && newValue) {\n _warn(132);\n return 0;\n }\n if (nodes.length === 0)\n return 0;\n if (nodes.length > 1 && !this.isMultiSelect()) {\n _warn(130);\n return 0;\n }\n let updatedCount = 0;\n for (let i = 0; i < nodes.length; i++) {\n const rowNode = nodes[i];\n const node = _normaliseFooterRef(rowNode);\n const skipThisNode = this.groupSelectsFiltered && node.group;\n if (node.rowPinned) {\n _warn(59);\n continue;\n }\n if (node.id === void 0) {\n _warn(60);\n continue;\n }\n if (!skipThisNode) {\n const thisNodeWasSelected = this.selectRowNode(node, newValue, event, source);\n if (thisNodeWasSelected) {\n this.detailSelection.delete(node.id);\n updatedCount++;\n }\n }\n if (this.groupSelectsDescendants && node.childrenAfterGroup?.length) {\n updatedCount += this.selectChildren(node, newValue, source);\n }\n }\n if (!suppressFinishActions) {\n const clearOtherNodes = newValue && (clearSelection || !this.isMultiSelect());\n if (clearOtherNodes) {\n updatedCount += this.clearOtherNodes(_normaliseFooterRef(nodes[0]), source);\n }\n if (updatedCount > 0) {\n this.updateGroupsFromChildrenSelections(source);\n this.dispatchSelectionChanged(source);\n }\n }\n return updatedCount;\n }\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n selectRange(nodesToSelect, value, source) {\n let updatedCount = 0;\n nodesToSelect.forEach((rowNode) => {\n if (rowNode.group && this.groupSelectsDescendants) {\n return;\n }\n const nodeWasSelected = this.selectRowNode(rowNode, value, void 0, source);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n if (updatedCount > 0) {\n this.updateGroupsFromChildrenSelections(source);\n this.dispatchSelectionChanged(source);\n }\n return updatedCount;\n }\n selectChildren(node, newValue, source) {\n const children = this.groupSelectsFiltered ? node.childrenAfterAggFilter : node.childrenAfterGroup;\n if (!children) {\n return 0;\n }\n return this.setNodesSelected({\n newValue,\n clearSelection: false,\n suppressFinishActions: true,\n source,\n nodes: children\n });\n }\n getSelectedNodes() {\n return Array.from(this.selectedNodes.values());\n }\n getSelectedRows() {\n const selectedRows = [];\n this.selectedNodes.forEach((rowNode) => selectedRows.push(rowNode.data));\n return selectedRows;\n }\n getSelectionCount() {\n return this.selectedNodes.size;\n }\n /**\n * This method is used by the CSRM to remove groups which are being disposed of,\n * events do not need fired in this case\n */\n filterFromSelection(predicate) {\n const newSelectedNodes = /* @__PURE__ */ new Map();\n this.selectedNodes.forEach((rowNode, key) => {\n if (predicate(rowNode)) {\n newSelectedNodes.set(key, rowNode);\n }\n });\n this.selectedNodes = newSelectedNodes;\n }\n updateGroupsFromChildrenSelections(source, changedPath) {\n if (!this.groupSelectsDescendants) {\n return false;\n }\n const { gos, rowModel } = this.beans;\n if (!_isClientSideRowModel(gos, rowModel)) {\n return false;\n }\n const rootNode = rowModel.rootNode;\n if (!rootNode) {\n return false;\n }\n if (!changedPath) {\n changedPath = new ChangedPath(true, rootNode);\n changedPath.active = false;\n }\n let selectionChanged = false;\n changedPath.forEachChangedNodeDepthFirst((rowNode) => {\n if (rowNode !== rootNode) {\n const selected = this.calculateSelectedFromChildren(rowNode);\n selectionChanged = this.selectRowNode(rowNode, selected === null ? false : selected, void 0, source) || selectionChanged;\n }\n });\n return selectionChanged;\n }\n clearOtherNodes(rowNodeToKeepSelected, source) {\n const groupsToRefresh = /* @__PURE__ */ new Map();\n let updatedCount = 0;\n this.selectedNodes.forEach((otherRowNode) => {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n const rowNode = this.selectedNodes.get(otherRowNode.id);\n updatedCount += this.setNodesSelected({\n nodes: [rowNode],\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true,\n source\n });\n if (this.groupSelectsDescendants && otherRowNode.parent) {\n groupsToRefresh.set(otherRowNode.parent.id, otherRowNode.parent);\n }\n }\n });\n groupsToRefresh.forEach((group) => {\n const selected = this.calculateSelectedFromChildren(group);\n this.selectRowNode(group, selected === null ? false : selected, void 0, source);\n });\n return updatedCount;\n }\n onRowSelected(event) {\n const rowNode = event.node;\n if (this.groupSelectsDescendants && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes.set(rowNode.id, rowNode);\n } else {\n this.selectedNodes.delete(rowNode.id);\n }\n }\n syncInRowNode(rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n }\n createDaemonNode(rowNode) {\n if (!rowNode.id) {\n return void 0;\n }\n const oldNode = new RowNode(this.beans);\n oldNode.id = rowNode.id;\n oldNode.data = rowNode.data;\n oldNode.__daemon = true;\n oldNode.__selected = rowNode.__selected;\n oldNode.level = rowNode.level;\n return oldNode;\n }\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n syncInOldRowNode(rowNode, oldNode) {\n if (oldNode && rowNode.id !== oldNode.id) {\n const oldNodeSelected = this.selectedNodes.get(oldNode.id) == rowNode;\n if (oldNodeSelected) {\n this.selectedNodes.set(oldNode.id, oldNode);\n }\n }\n }\n syncInNewRowNode(rowNode) {\n if (this.selectedNodes.has(rowNode.id)) {\n rowNode.__selected = true;\n this.selectedNodes.set(rowNode.id, rowNode);\n } else {\n rowNode.__selected = false;\n }\n }\n reset(source) {\n const selectionCount = this.getSelectionCount();\n this.resetNodes();\n if (selectionCount) {\n this.dispatchSelectionChanged(source);\n }\n }\n resetNodes() {\n this.selectedNodes.forEach((node) => {\n this.selectRowNode(node, false);\n });\n this.selectedNodes.clear();\n }\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n getBestCostNodeSelection() {\n const { gos, rowModel } = this.beans;\n if (!_isClientSideRowModel(gos, rowModel)) {\n return;\n }\n const topLevelNodes = rowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n return;\n }\n const result = [];\n function traverse(nodes) {\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n } else {\n if (node.group && node.childrenAfterGroup) {\n traverse(node.childrenAfterGroup);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n }\n isEmpty() {\n return this.getSelectionCount() === 0;\n }\n deselectAllRowNodes({ source, selectAll: selectAll2 }) {\n const rowModelClientSide = _isClientSideRowModel(this.gos);\n let updatedNodes = false;\n const callback = (rowNode) => {\n const updated = this.selectRowNode(_normaliseFooterRef(rowNode), false, void 0, source);\n updatedNodes || (updatedNodes = updated);\n };\n if (selectAll2 === \"currentPage\" || selectAll2 === \"filtered\") {\n if (!rowModelClientSide) {\n _error(102);\n return;\n }\n this.getNodesToSelect(selectAll2).forEach(callback);\n } else {\n this.selectedNodes.forEach(callback);\n this.reset(source);\n }\n this.selectionCtx.selectAll = false;\n if (rowModelClientSide && this.groupSelectsDescendants) {\n const updated = this.updateGroupsFromChildrenSelections(source);\n updatedNodes || (updatedNodes = updated);\n }\n if (updatedNodes) {\n this.dispatchSelectionChanged(source);\n }\n }\n getSelectedCounts(selectAll2) {\n let selectedCount = 0;\n let notSelectedCount = 0;\n this.getNodesToSelect(selectAll2).forEach((node) => {\n if (this.groupSelectsDescendants && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n } else if (node.selectable) {\n notSelectedCount++;\n }\n });\n return { selectedCount, notSelectedCount };\n }\n getSelectAllState(selectAll2) {\n const { selectedCount, notSelectedCount } = this.getSelectedCounts(selectAll2);\n return _calculateSelectAllState(selectedCount, notSelectedCount) ?? null;\n }\n hasNodesToSelect(selectAll2) {\n return this.getNodesToSelect(selectAll2).filter((node) => node.selectable).length > 0;\n }\n /**\n * @param selectAll See `MultiRowSelectionOptions.selectAll`\n * @returns all nodes including unselectable nodes which are the target of this selection attempt\n */\n getNodesToSelect(selectAll2) {\n if (!this.canSelectAll()) {\n return [];\n }\n const nodes = [];\n if (selectAll2 === \"currentPage\") {\n this.forEachNodeOnPage((node) => {\n if (!node.group) {\n nodes.push(node);\n return;\n }\n if (!node.expanded && !node.footer) {\n const recursivelyAddChildren = (child) => {\n nodes.push(child);\n if (child.childrenAfterFilter?.length) {\n child.childrenAfterFilter.forEach(recursivelyAddChildren);\n }\n };\n recursivelyAddChildren(node);\n return;\n }\n if (!this.groupSelectsDescendants) {\n nodes.push(node);\n }\n });\n return nodes;\n }\n const clientSideRowModel = this.beans.rowModel;\n if (selectAll2 === \"filtered\") {\n clientSideRowModel.forEachNodeAfterFilter((node) => {\n nodes.push(node);\n });\n return nodes;\n }\n clientSideRowModel.forEachNode((node) => {\n nodes.push(node);\n });\n return nodes;\n }\n forEachNodeOnPage(callback) {\n const { pageBounds, rowModel } = this.beans;\n const firstRow = pageBounds.getFirstRow();\n const lastRow = pageBounds.getLastRow();\n for (let i = firstRow; i <= lastRow; i++) {\n const node = rowModel.getRow(i);\n if (node) {\n callback(node);\n }\n }\n }\n selectAllRowNodes(params) {\n const { gos, selectionCtx } = this;\n if (!_isRowSelection(gos)) {\n _warn(132);\n return;\n }\n if (_isUsingNewRowSelectionAPI(gos) && !_isMultiRowSelection(gos)) {\n _warn(130);\n return;\n }\n if (!this.canSelectAll()) {\n return;\n }\n const { source, selectAll: selectAll2 } = params;\n let updatedNodes = false;\n this.getNodesToSelect(selectAll2).forEach((rowNode) => {\n const updated = this.selectRowNode(_normaliseFooterRef(rowNode), true, void 0, source);\n updatedNodes || (updatedNodes = updated);\n });\n selectionCtx.selectAll = true;\n if (_isClientSideRowModel(gos) && this.groupSelectsDescendants) {\n const updated = this.updateGroupsFromChildrenSelections(source);\n updatedNodes || (updatedNodes = updated);\n }\n if (updatedNodes) {\n this.dispatchSelectionChanged(source);\n }\n }\n getSelectionState() {\n return this.isEmpty() ? null : Array.from(this.selectedNodes.keys());\n }\n setSelectionState(state, source) {\n if (!Array.isArray(state)) {\n _error(103);\n return;\n }\n const rowIds = new Set(state);\n const nodes = [];\n this.beans.rowModel.forEachNode((node) => {\n if (rowIds.has(node.id)) {\n nodes.push(node);\n }\n });\n this.setNodesSelected({\n newValue: true,\n nodes,\n source\n });\n }\n canSelectAll() {\n const { gos, rowModel } = this.beans;\n if (!_isClientSideRowModel(gos)) {\n _error(100, { rowModelType: rowModel.getType() });\n return false;\n }\n return true;\n }\n /**\n * Updates the selectable state for a node by invoking isRowSelectable callback.\n * If the node is not selectable, it will be deselected.\n *\n * Callers:\n * - property isRowSelectable changed\n * - after grouping / treeData via `updateSelectableAfterGrouping`\n */\n updateSelectable(changedPath) {\n const { gos, rowModel } = this.beans;\n if (!_isRowSelection(gos)) {\n return;\n }\n const source = \"selectableChanged\";\n const skipLeafNodes = changedPath !== void 0;\n const isCSRMGroupSelectsDescendants = _isClientSideRowModel(gos) && this.groupSelectsDescendants;\n const nodesToDeselect = [];\n const nodeCallback = (node) => {\n if (skipLeafNodes && !node.group) {\n return;\n }\n if (isCSRMGroupSelectsDescendants && node.group) {\n const hasSelectableChild = node.childrenAfterGroup?.some((rowNode) => rowNode.selectable) ?? false;\n this.setRowSelectable(node, hasSelectableChild, true);\n return;\n }\n const rowSelectable = this.updateRowSelectable(node, true);\n if (!rowSelectable && node.isSelected()) {\n nodesToDeselect.push(node);\n }\n };\n if (isCSRMGroupSelectsDescendants) {\n if (changedPath === void 0) {\n const rootNode = rowModel.rootNode;\n changedPath = rootNode ? new ChangedPath(false, rootNode) : void 0;\n }\n changedPath?.forEachChangedNodeDepthFirst(nodeCallback, !skipLeafNodes, !skipLeafNodes);\n } else {\n rowModel.forEachNode(nodeCallback);\n }\n if (nodesToDeselect.length) {\n this.setNodesSelected({\n nodes: nodesToDeselect,\n newValue: false,\n source\n });\n }\n if (!skipLeafNodes && isCSRMGroupSelectsDescendants) {\n this.updateGroupsFromChildrenSelections?.(source);\n }\n }\n // only called by CSRM\n updateSelectableAfterGrouping(changedPath) {\n this.updateSelectable(changedPath);\n if (this.groupSelectsDescendants) {\n const selectionChanged = this.updateGroupsFromChildrenSelections?.(\"rowGroupChanged\", changedPath);\n if (selectionChanged) {\n this.dispatchSelectionChanged(\"rowGroupChanged\");\n }\n }\n }\n refreshMasterNodeState(node, e) {\n if (!this.masterSelectsDetail)\n return;\n const detailApi = node.detailNode?.detailGridInfo?.api;\n if (!detailApi)\n return;\n const isSelectAll = _isAllSelected(detailApi);\n const current = node.isSelected();\n if (current !== isSelectAll) {\n const selectionChanged = this.selectRowNode(node, isSelectAll, e, \"masterDetail\");\n if (selectionChanged) {\n this.dispatchSelectionChanged(\"masterDetail\");\n }\n }\n if (!isSelectAll) {\n const detailSelected = this.detailSelection.get(node.id) ?? /* @__PURE__ */ new Set();\n for (const n of detailApi.getSelectedNodes()) {\n detailSelected.add(n.id);\n }\n this.detailSelection.set(node.id, detailSelected);\n }\n }\n setDetailSelectionState(masterNode, detailGridOptions, detailApi) {\n if (!this.masterSelectsDetail)\n return;\n if (!_isMultiRowSelection(detailGridOptions)) {\n _warn(269);\n return;\n }\n switch (masterNode.isSelected()) {\n case true: {\n detailApi.selectAll();\n break;\n }\n case false: {\n detailApi.deselectAll();\n break;\n }\n case void 0: {\n const selectedIds = this.detailSelection.get(masterNode.id);\n if (selectedIds) {\n const nodes = [];\n for (const id of selectedIds) {\n const n = detailApi.getRowNode(id);\n if (n) {\n nodes.push(n);\n }\n }\n detailApi.setNodesSelected({ nodes, newValue: true, source: \"masterDetail\" });\n }\n break;\n }\n default:\n break;\n }\n }\n dispatchSelectionChanged(source) {\n this.eventSvc.dispatchEvent({\n type: \"selectionChanged\",\n source,\n selectedNodes: this.getSelectedNodes(),\n serverSideState: null\n });\n }\n};\nfunction _normaliseFooterRef(node) {\n return node.footer ? node.sibling : node;\n}\nfunction _isAllSelected(api) {\n let selectedCount = 0;\n let notSelectedCount = 0;\n api.forEachNode((node) => {\n if (node.isSelected()) {\n selectedCount++;\n } else if (node.selectable) {\n notSelectedCount++;\n }\n });\n return _calculateSelectAllState(selectedCount, notSelectedCount);\n}\nfunction _calculateSelectAllState(selected, notSelected) {\n if (selected === 0 && notSelected === 0) {\n return false;\n }\n if (selected > 0 && notSelected > 0) {\n return;\n }\n return selected > 0;\n}\n\n// packages/ag-grid-community/src/selection/rowSelectionModule.ts\nvar SharedRowSelectionModule = {\n moduleName: \"SharedRowSelection\",\n version: VERSION,\n beans: [SelectionColService],\n apiFunctions: {\n setNodesSelected,\n selectAll,\n deselectAll,\n selectAllFiltered,\n deselectAllFiltered,\n selectAllOnCurrentPage,\n deselectAllOnCurrentPage,\n getSelectedNodes,\n getSelectedRows\n }\n};\nvar RowSelectionModule = {\n moduleName: \"RowSelection\",\n version: VERSION,\n rowModels: [\"clientSide\", \"infinite\", \"viewport\"],\n beans: [SelectionService],\n dependsOn: [SharedRowSelectionModule]\n};\n\n// packages/ag-grid-community/src/api/csrmSsrmSharedApi.ts\nfunction expandAll(beans) {\n beans.expansionSvc?.expandAll(true);\n}\nfunction collapseAll(beans) {\n beans.expansionSvc?.expandAll(false);\n}\nfunction onRowHeightChanged(beans) {\n const clientSideRowModel = _getClientSideRowModel(beans);\n const serverSideRowModel = _getServerSideRowModel(beans);\n if (clientSideRowModel) {\n clientSideRowModel.onRowHeightChanged();\n } else if (serverSideRowModel) {\n serverSideRowModel.onRowHeightChanged();\n }\n}\n\n// packages/ag-grid-community/src/api/ssrmInfiniteSharedApi.ts\nfunction setRowCount(beans, rowCount, maxRowFound) {\n const serverSideRowModel = _getServerSideRowModel(beans);\n if (serverSideRowModel) {\n if (beans.rowGroupColsSvc?.columns.length === 0) {\n if (rowCount < 0) {\n _error(238);\n return;\n }\n serverSideRowModel.setRowCount(rowCount, maxRowFound);\n return;\n }\n _error(28);\n return;\n }\n const infiniteRowModel = _getInfiniteRowModel(beans);\n if (infiniteRowModel) {\n infiniteRowModel.setRowCount(rowCount, maxRowFound);\n return;\n }\n}\nfunction getCacheBlockState(beans) {\n if (_isServerSideRowModel(beans.gos)) {\n const ssrm = beans.rowModel;\n return ssrm.getBlockStates();\n }\n return beans.rowNodeBlockLoader?.getBlockState() ?? {};\n}\nfunction isLastRowIndexKnown(beans) {\n return beans.rowModel.isLastRowIndexKnown();\n}\n\n// packages/ag-grid-community/src/api/sharedApiModule.ts\nvar CsrmSsrmSharedApiModule = {\n moduleName: \"CsrmSsrmSharedApi\",\n version: VERSION,\n apiFunctions: {\n expandAll,\n collapseAll,\n onRowHeightChanged\n }\n};\nvar SsrmInfiniteSharedApiModule = {\n moduleName: \"SsrmInfiniteSharedApi\",\n version: VERSION,\n apiFunctions: {\n setRowCount,\n getCacheBlockState,\n isLastRowIndexKnown\n }\n};\n\n// packages/ag-grid-community/src/alignedGrids/alignedGridsService.ts\nvar AlignedGridsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"alignedGridsSvc\";\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n this.consuming = false;\n }\n getAlignedGridApis() {\n let alignedGrids = this.gos.get(\"alignedGrids\") ?? [];\n const isCallbackConfig = typeof alignedGrids === \"function\";\n if (typeof alignedGrids === \"function\") {\n alignedGrids = alignedGrids();\n }\n const apis = alignedGrids.map((alignedGrid) => {\n if (!alignedGrid) {\n _error(18);\n if (!isCallbackConfig) {\n _error(20);\n }\n return;\n }\n if (this.isGridApi(alignedGrid)) {\n return alignedGrid;\n }\n const refOrComp = alignedGrid;\n if (\"current\" in refOrComp) {\n return refOrComp.current?.api;\n }\n if (!refOrComp.api) {\n _error(19);\n }\n return refOrComp.api;\n }).filter((api) => !!api && !api.isDestroyed());\n return apis;\n }\n isGridApi(ref) {\n return !!ref && !!ref.dispatchEvent;\n }\n postConstruct() {\n const fireColumnEvent = this.fireColumnEvent.bind(this);\n this.addManagedEventListeners({\n columnMoved: fireColumnEvent,\n columnVisible: fireColumnEvent,\n columnPinned: fireColumnEvent,\n columnGroupOpened: fireColumnEvent,\n columnResized: fireColumnEvent,\n bodyScroll: this.fireScrollEvent.bind(this),\n alignedGridColumn: ({ event }) => this.onColumnEvent(event),\n alignedGridScroll: ({ event }) => this.onScrollEvent(event)\n });\n }\n // common logic across all the fire methods\n fireEvent(event) {\n if (this.consuming) {\n return;\n }\n this.getAlignedGridApis().forEach((api) => {\n if (api.isDestroyed()) {\n return;\n }\n api.dispatchEvent(event);\n });\n }\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n onEvent(callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n }\n fireColumnEvent(columnEvent) {\n this.fireEvent({\n type: \"alignedGridColumn\",\n event: columnEvent\n });\n }\n fireScrollEvent(scrollEvent) {\n if (scrollEvent.direction !== \"horizontal\") {\n return;\n }\n this.fireEvent({\n type: \"alignedGridScroll\",\n event: scrollEvent\n });\n }\n onScrollEvent(event) {\n this.onEvent(() => {\n this.beans.ctrlsSvc.getScrollFeature().setHorizontalScrollPosition(event.left, true);\n });\n }\n extractDataFromEvent(event, func) {\n const result = [];\n if (event.columns) {\n event.columns.forEach((column) => {\n result.push(func(column));\n });\n } else if (event.column) {\n result.push(func(event.column));\n }\n return result;\n }\n getMasterColumns(event) {\n return this.extractDataFromEvent(event, (col) => col);\n }\n getColumnIds(event) {\n return this.extractDataFromEvent(event, (col) => col.getColId());\n }\n onColumnEvent(event) {\n this.onEvent(() => {\n switch (event.type) {\n case \"columnMoved\":\n case \"columnVisible\":\n case \"columnPinned\":\n case \"columnResized\": {\n this.processColumnEvent(event);\n break;\n }\n case \"columnGroupOpened\": {\n this.processGroupOpenedEvent(event);\n break;\n }\n case \"columnPivotChanged\":\n _warn(21);\n break;\n }\n });\n }\n processGroupOpenedEvent(groupOpenedEvent) {\n const { colGroupSvc } = this.beans;\n if (!colGroupSvc) {\n return;\n }\n groupOpenedEvent.columnGroups.forEach((masterGroup) => {\n let otherColumnGroup = null;\n if (masterGroup) {\n otherColumnGroup = colGroupSvc.getProvidedColGroup(masterGroup.getGroupId());\n }\n if (masterGroup && !otherColumnGroup) {\n return;\n }\n colGroupSvc.setColumnGroupOpened(otherColumnGroup, masterGroup.isExpanded(), \"alignedGridChanged\");\n });\n }\n processColumnEvent(colEvent) {\n const masterColumn = colEvent.column;\n let otherColumn = null;\n const beans = this.beans;\n const { colResize, ctrlsSvc, colModel } = beans;\n if (masterColumn) {\n otherColumn = colModel.getColDefCol(masterColumn.getColId());\n }\n if (masterColumn && !otherColumn) {\n return;\n }\n const masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case \"columnMoved\":\n {\n const srcColState = colEvent.api.getColumnState();\n const destColState = srcColState.map((s) => ({ colId: s.colId }));\n _applyColumnState(beans, { state: destColState, applyOrder: true }, \"alignedGridChanged\");\n }\n break;\n case \"columnVisible\":\n {\n const srcColState = colEvent.api.getColumnState();\n const destColState = srcColState.map((s) => ({ colId: s.colId, hide: s.hide }));\n _applyColumnState(beans, { state: destColState }, \"alignedGridChanged\");\n }\n break;\n case \"columnPinned\":\n {\n const srcColState = colEvent.api.getColumnState();\n const destColState = srcColState.map((s) => ({ colId: s.colId, pinned: s.pinned }));\n _applyColumnState(beans, { state: destColState }, \"alignedGridChanged\");\n }\n break;\n case \"columnResized\": {\n const resizedEvent = colEvent;\n const columnWidths = {};\n masterColumns.forEach((column) => {\n columnWidths[column.getId()] = { key: column.getColId(), newWidth: column.getActualWidth() };\n });\n resizedEvent.flexColumns?.forEach((col) => {\n if (columnWidths[col.getId()]) {\n delete columnWidths[col.getId()];\n }\n });\n colResize?.setColumnWidths(\n Object.values(columnWidths),\n false,\n resizedEvent.finished,\n \"alignedGridChanged\"\n );\n break;\n }\n }\n const gridBodyCon = ctrlsSvc.getGridBodyCtrl();\n const isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();\n this.getAlignedGridApis().forEach((api) => {\n api.setGridOption(\"alwaysShowVerticalScroll\", isVerticalScrollShowing);\n });\n }\n};\n\n// packages/ag-grid-community/src/alignedGrids/alignedGridsModule.ts\nvar AlignedGridsModule = {\n moduleName: \"AlignedGrids\",\n version: VERSION,\n beans: [AlignedGridsService]\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/clientSideNodeManager.ts\nvar ClientSideNodeManager = class extends AbstractClientSideNodeManager {\n constructor() {\n super(...arguments);\n this.beanName = \"csrmNodeSvc\";\n }\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/changedRowNodes.ts\nvar ChangedRowNodes = class {\n constructor() {\n this.removals = /* @__PURE__ */ new Set();\n this.updates = /* @__PURE__ */ new Set();\n this.adds = /* @__PURE__ */ new Set();\n }\n /** Marks a row as removed. Order of operations is: remove, update, add */\n remove(node) {\n if (!this.adds.delete(node)) {\n this.updates.delete(node);\n this.removals.add(node);\n }\n }\n /** Marks a row as updated. Order of operations is: remove, update, add */\n update(node) {\n if (!this.adds.has(node)) {\n this.updates.add(node);\n }\n }\n /** Marks a row as added. Order of operation is: remove, update, add */\n add(node) {\n this.adds.add(node);\n }\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/sortStage.ts\nfunction updateChildIndexes(rowNode) {\n if (_missing(rowNode.childrenAfterSort)) {\n return;\n }\n const listToSort = rowNode.childrenAfterSort;\n for (let i = 0; i < listToSort.length; i++) {\n const child = listToSort[i];\n const firstChild = i === 0;\n const lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n if (child.lastChild !== lastChild) {\n child.lastChild = lastChild;\n child.dispatchRowEvent(\"lastChildChanged\");\n }\n if (child.childIndex !== i) {\n child.childIndex = i;\n child.dispatchRowEvent(\"childIndexChanged\");\n }\n }\n}\nfunction updateRowNodeAfterSort(rowNode) {\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;\n }\n updateChildIndexes(rowNode);\n}\nvar SortStage = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"sortStage\";\n this.refreshProps = /* @__PURE__ */ new Set([\"postSortRows\", \"groupDisplayType\", \"accentedSort\"]);\n this.step = \"sort\";\n }\n execute(params) {\n const beans = this.beans;\n const sortOptions = beans.sortSvc.getSortOptions();\n const sortActive = _exists(sortOptions) && sortOptions.length > 0;\n const deltaSort = sortActive && !!params.changedRowNodes && // in time we can remove this check, so that delta sort is always\n // on if transactions are present. it's off for now so that we can\n // selectively turn it on and test it with some select users before\n // rolling out to everyone.\n this.gos.get(\"deltaSort\");\n const sortContainsGroupColumns = sortOptions.some(({ column }) => {\n const isSortingCoupled = _isColumnsSortingCoupledToGroup(beans.gos);\n if (isSortingCoupled) {\n return column.isPrimary() && column.isRowGroupActive();\n }\n return !!column.getColDef().showRowGroup;\n });\n this.sort(\n beans,\n sortOptions,\n sortActive,\n deltaSort,\n params.changedRowNodes,\n params.changedPath,\n sortContainsGroupColumns\n );\n }\n sort(beans, sortOptions, sortActive, useDeltaSort, changedRowNodes, changedPath, sortContainsGroupColumns) {\n const { gos, colModel, rowGroupColsSvc, rowNodeSorter, rowRenderer, showRowGroupCols } = beans;\n const groupMaintainOrder = gos.get(\"groupMaintainOrder\");\n const groupColumnsPresent = colModel.getCols().some((c) => c.isRowGroupActive());\n const isPivotMode = colModel.isPivotMode();\n const postSortFunc = gos.getCallback(\"postSortRows\");\n let hasAnyFirstChildChanged = false;\n const callback = (rowNode) => {\n const skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;\n const skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;\n let newChildrenAfterSort;\n if (skipSortingGroups) {\n const nextGroup = rowGroupColsSvc?.columns?.[rowNode.level + 1];\n const wasSortExplicitlyRemoved = nextGroup?.getSort() === null;\n const childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);\n if (rowNode.childrenAfterSort && !wasSortExplicitlyRemoved) {\n const indexedOrders = {};\n rowNode.childrenAfterSort.forEach((node, idx) => {\n indexedOrders[node.id] = idx;\n });\n childrenToBeSorted.sort(\n (row1, row2) => (indexedOrders[row1.id] ?? 0) - (indexedOrders[row2.id] ?? 0)\n );\n }\n newChildrenAfterSort = childrenToBeSorted;\n } else if (!sortActive || skipSortingPivotLeafs) {\n newChildrenAfterSort = rowNode.childrenAfterAggFilter.slice(0);\n } else if (useDeltaSort && changedRowNodes) {\n newChildrenAfterSort = doDeltaSort(rowNodeSorter, rowNode, changedRowNodes, changedPath, sortOptions);\n } else {\n newChildrenAfterSort = rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);\n }\n hasAnyFirstChildChanged || (hasAnyFirstChildChanged = rowNode.childrenAfterSort?.[0] !== newChildrenAfterSort[0]);\n rowNode.childrenAfterSort = newChildrenAfterSort;\n updateRowNodeAfterSort(rowNode);\n if (postSortFunc) {\n const params = { nodes: rowNode.childrenAfterSort };\n postSortFunc(params);\n }\n };\n changedPath?.forEachChangedNodeDepthFirst(callback);\n if (hasAnyFirstChildChanged && this.gos.get(\"groupHideOpenParents\")) {\n const columns = showRowGroupCols?.getShowRowGroupCols();\n if (columns?.length) {\n rowRenderer.refreshCells({ columns, force: true });\n }\n }\n }\n};\nfunction doDeltaSort(rowNodeSorter, rowNode, changedRowNodes, changedPath, sortOptions) {\n const unsortedRows = rowNode.childrenAfterAggFilter;\n const oldSortedRows = rowNode.childrenAfterSort;\n if (!oldSortedRows) {\n return rowNodeSorter.doFullSort(unsortedRows, sortOptions);\n }\n const untouchedRows = /* @__PURE__ */ new Set();\n const touchedRows = [];\n const { updates, adds } = changedRowNodes;\n for (let i = 0, len = unsortedRows.length; i < len; ++i) {\n const row = unsortedRows[i];\n if (updates.has(row) || adds.has(row) || changedPath && !changedPath.canSkip(row)) {\n touchedRows.push({\n currentPos: touchedRows.length,\n rowNode: row\n });\n } else {\n untouchedRows.add(row.id);\n }\n }\n const sortedUntouchedRows = oldSortedRows.filter((child) => untouchedRows.has(child.id)).map((rowNode2, currentPos) => ({ currentPos, rowNode: rowNode2 }));\n touchedRows.sort((a, b) => rowNodeSorter.compareRowNodes(sortOptions, a, b));\n return mergeSortedArrays(rowNodeSorter, sortOptions, touchedRows, sortedUntouchedRows);\n}\nfunction mergeSortedArrays(rowNodeSorter, sortOptions, arr1, arr2) {\n const res = [];\n let i = 0;\n let j = 0;\n const arr1Length = arr1.length;\n const arr2Length = arr2.length;\n while (i < arr1Length && j < arr2Length) {\n const a = arr1[i];\n const b = arr2[j];\n const compareResult = rowNodeSorter.compareRowNodes(sortOptions, a, b);\n let chosen;\n if (compareResult < 0) {\n chosen = a;\n ++i;\n } else {\n chosen = b;\n ++j;\n }\n res.push(chosen.rowNode);\n }\n while (i < arr1Length) {\n res.push(arr1[i++].rowNode);\n }\n while (j < arr2Length) {\n res.push(arr2[j++].rowNode);\n }\n return res;\n}\n\n// packages/ag-grid-community/src/clientSideRowModel/clientSideRowModel.ts\nvar ClientSideRowModel = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowModel\";\n // top most node of the tree. the children are the user provided data.\n this.rootNode = null;\n this.rowsToDisplay = [];\n /** Has the start method been called */\n this.started = false;\n /**\n * This is to prevent refresh model being called when it's already being called.\n * E.g. the group stage can trigger initial state filter model to be applied. This fires onFilterChanged,\n * which then triggers the listener here that calls refresh model again but at the filter stage\n * (which is about to be run by the original call).\n */\n this.isRefreshingModel = false;\n this.rowNodesCountReady = false;\n this.rowCountReady = false;\n this.onRowHeightChanged_debounced = _debounce(this, this.onRowHeightChanged.bind(this), 100);\n }\n wireBeans(beans) {\n this.colModel = beans.colModel;\n this.valueCache = beans.valueCache;\n this.filterStage = beans.filterStage;\n this.sortStage = beans.sortStage;\n this.flattenStage = beans.flattenStage;\n this.groupStage = beans.groupStage;\n this.aggStage = beans.aggStage;\n this.pivotStage = beans.pivotStage;\n this.filterAggStage = beans.filterAggStage;\n }\n postConstruct() {\n this.orderedStages = [\n this.groupStage,\n this.filterStage,\n this.pivotStage,\n this.aggStage,\n this.sortStage,\n this.filterAggStage,\n this.flattenStage\n ].filter((stage) => !!stage);\n const refreshEverythingFunc = this.refreshModel.bind(this, { step: \"group\" });\n const refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {\n step: \"group\",\n // after cols change, row grouping (the first stage) could of changed\n afterColumnsChanged: true,\n keepRenderedRows: true,\n // we want animations cos sorting or filtering could be applied\n animate: !this.gos.get(\"suppressAnimationFrame\")\n });\n this.addManagedEventListeners({\n newColumnsLoaded: refreshEverythingAfterColsChangedFunc,\n columnRowGroupChanged: refreshEverythingFunc,\n columnValueChanged: this.onValueChanged.bind(this),\n columnPivotChanged: this.refreshModel.bind(this, { step: \"pivot\" }),\n filterChanged: this.onFilterChanged.bind(this),\n sortChanged: this.onSortChanged.bind(this),\n columnPivotModeChanged: refreshEverythingFunc,\n gridStylesChanged: this.onGridStylesChanges.bind(this),\n gridReady: this.onGridReady.bind(this)\n });\n this.addPropertyListeners();\n this.rootNode = new RowNode(this.beans);\n const nodeManager = this.getNewNodeManager();\n this.nodeManager = nodeManager;\n nodeManager.activate(this.rootNode);\n }\n getNewNodeManager() {\n const { gos, beans } = this;\n switch (_getGroupingApproach(gos)) {\n case \"treeNested\":\n return beans.csrmChildrenTreeNodeSvc ?? beans.csrmNodeSvc;\n case \"treePath\":\n return beans.csrmPathTreeNodeSvc ?? beans.csrmNodeSvc;\n default:\n return beans.csrmNodeSvc;\n }\n }\n addPropertyListeners() {\n const allProps = [\n \"treeData\",\n \"treeDataChildrenField\",\n ...this.orderedStages.flatMap(({ refreshProps }) => [...refreshProps])\n ];\n this.addManagedPropertyListeners(allProps, (params) => {\n const properties = params.changeSet?.properties;\n if (properties) {\n this.onPropChange(properties);\n }\n });\n this.addManagedPropertyListener(\"rowData\", () => this.onPropChange([\"rowData\"]));\n this.addManagedPropertyListener(\"rowHeight\", () => this.resetRowHeights());\n }\n start() {\n this.started = true;\n if (this.rowNodesCountReady) {\n this.refreshModel({ step: \"group\", rowDataUpdated: true, newData: true });\n } else {\n this.setInitialData();\n }\n }\n setInitialData() {\n const rowData = this.gos.get(\"rowData\");\n if (rowData) {\n this.onPropChange([\"rowData\"]);\n }\n }\n ensureRowHeightsValid(startPixel, endPixel, startLimitIndex, endLimitIndex) {\n let atLeastOneChange;\n let res = false;\n do {\n atLeastOneChange = false;\n const rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n const rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n const firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n const lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (let rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n const rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n const rowHeight = _getRowHeightForNode(this.beans, rowNode);\n rowNode.setRowHeight(rowHeight.height);\n atLeastOneChange = true;\n res = true;\n }\n }\n if (atLeastOneChange) {\n this.setRowTopAndRowIndex();\n }\n } while (atLeastOneChange);\n return res;\n }\n onPropChange(properties) {\n if (!this.rootNode) {\n return;\n }\n const gos = this.gos;\n const changedProps = new Set(properties);\n const params = {\n step: \"nothing\",\n changedProps\n };\n const rowDataChanged = changedProps.has(\"rowData\");\n const oldNodeManager = this.nodeManager;\n const nodeManager = this.getNewNodeManager();\n const reset = oldNodeManager !== nodeManager || rowDataChanged && changedProps.has(\"treeData\") && gos.get(\"treeData\") || changedProps.has(\"treeDataChildrenField\") && gos.get(\"treeData\");\n let newRowData;\n if (reset || rowDataChanged) {\n newRowData = gos.get(\"rowData\");\n if (newRowData != null && !Array.isArray(newRowData)) {\n newRowData = null;\n _warn(1);\n }\n }\n if (reset) {\n if (!rowDataChanged) {\n newRowData = oldNodeManager?.extractRowData() ?? newRowData;\n }\n if (oldNodeManager !== nodeManager) {\n oldNodeManager?.deactivate();\n this.nodeManager = nodeManager;\n }\n nodeManager.activate(this.rootNode);\n }\n if (newRowData) {\n const immutable = !reset && !this.isEmpty() && newRowData.length > 0 && gos.exists(\"getRowId\") && // this property is a backwards compatibility property, for those who want\n // the old behaviour of Row IDs but NOT Immutable Data.\n !gos.get(\"resetRowDataOnUpdate\");\n if (immutable) {\n params.keepRenderedRows = true;\n params.animate = !this.gos.get(\"suppressAnimationFrame\");\n params.changedRowNodes = new ChangedRowNodes();\n nodeManager.setImmutableRowData(params, newRowData);\n } else {\n params.rowDataUpdated = true;\n params.newData = true;\n this.beans.selectionSvc?.reset(\"rowDataChanged\");\n this.rowNodesCountReady = true;\n nodeManager.setNewRowData(newRowData);\n }\n }\n if (params.rowDataUpdated) {\n params.step = \"group\";\n } else if (params.step === \"nothing\") {\n for (const { refreshProps, step } of this.orderedStages) {\n if (properties.some((prop) => refreshProps.has(prop))) {\n params.step = step;\n break;\n }\n }\n }\n if (params.step !== \"nothing\") {\n this.refreshModel(params);\n }\n }\n setRowTopAndRowIndex() {\n const { beans } = this;\n const defaultRowHeight = beans.environment.getDefaultRowHeight();\n let nextRowTop = 0;\n const displayedRowsMapped = /* @__PURE__ */ new Set();\n const allowEstimate = _isDomLayout(this.gos, \"normal\");\n const rowsToDisplay = this.rowsToDisplay;\n for (let i = 0, len = rowsToDisplay.length; i < len; ++i) {\n const rowNode = rowsToDisplay[i];\n if (rowNode.id != null) {\n displayedRowsMapped.add(rowNode.id);\n }\n if (rowNode.rowHeight == null) {\n const rowHeight = _getRowHeightForNode(beans, rowNode, allowEstimate, defaultRowHeight);\n rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n }\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowIndex(i);\n nextRowTop += rowNode.rowHeight;\n }\n return displayedRowsMapped;\n }\n clearRowTopAndRowIndex(changedPath, displayedRowsMapped) {\n const changedPathActive = changedPath.active;\n const clearIfNotDisplayed = (rowNode) => {\n if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {\n rowNode.clearRowTopAndRowIndex();\n }\n };\n const recurse = (rowNode) => {\n if (rowNode === null) {\n return;\n }\n clearIfNotDisplayed(rowNode);\n clearIfNotDisplayed(rowNode.detailNode);\n clearIfNotDisplayed(rowNode.sibling);\n if (rowNode.hasChildren()) {\n if (rowNode.childrenAfterGroup) {\n const isRootNode = rowNode.level == -1;\n const skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;\n if (!skipChildren) {\n rowNode.childrenAfterGroup.forEach(recurse);\n }\n }\n }\n };\n recurse(this.rootNode);\n }\n // returns false if row was moved, otherwise true\n ensureRowsAtPixel(rowNodes, pixel, increment = 0) {\n const indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n const rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n const animate = !this.gos.get(\"suppressAnimationFrame\");\n if (rowNodeAtPixelNow === rowNodes[0]) {\n return false;\n }\n const allLeafChildren = this.rootNode?.allLeafChildren;\n if (!allLeafChildren) {\n return false;\n }\n rowNodes.forEach((rowNode) => {\n _removeFromArray(allLeafChildren, rowNode);\n });\n rowNodes.forEach((rowNode, idx) => {\n allLeafChildren.splice(Math.max(indexAtPixelNow + increment, 0) + idx, 0, rowNode);\n });\n rowNodes.forEach((rowNode, index) => {\n rowNode.sourceRowIndex = index;\n });\n this.refreshModel({\n step: \"group\",\n keepRenderedRows: true,\n animate,\n rowNodesOrderChanged: true\n // We assume the order changed and we don't need to check if it really did\n });\n return true;\n }\n highlightRowAtPixel(rowNode, pixel) {\n const indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;\n const rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;\n if (!rowNodeAtPixelNow || !rowNode || pixel == null) {\n this.clearHighlightedRow();\n return;\n }\n const highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);\n const isSamePosition = this.isHighlightingCurrentPosition(rowNode, rowNodeAtPixelNow, highlight);\n const isDifferentNode = this.lastHighlightedRow != null && this.lastHighlightedRow !== rowNodeAtPixelNow;\n if (isSamePosition || isDifferentNode) {\n this.clearHighlightedRow();\n if (isSamePosition) {\n return;\n }\n }\n this.setRowNodeHighlighted(rowNodeAtPixelNow, highlight);\n this.lastHighlightedRow = rowNodeAtPixelNow;\n }\n setRowNodeHighlighted(rowNode, highlighted) {\n if (rowNode.highlighted !== highlighted) {\n rowNode.highlighted = highlighted;\n rowNode.dispatchRowEvent(\"rowHighlightChanged\");\n }\n }\n getHighlightPosition(pixel, rowNode) {\n if (!rowNode) {\n const index = this.getRowIndexAtPixel(pixel);\n rowNode = this.getRow(index || 0);\n if (!rowNode) {\n return \"Below\";\n }\n }\n const { rowTop, rowHeight } = rowNode;\n return pixel - rowTop < rowHeight / 2 ? \"Above\" : \"Below\";\n }\n getLastHighlightedRowNode() {\n return this.lastHighlightedRow;\n }\n isHighlightingCurrentPosition(movingRowNode, hoveredRowNode, highlightPosition) {\n if (movingRowNode === hoveredRowNode) {\n return true;\n }\n const diff = highlightPosition === \"Above\" ? -1 : 1;\n if (this.getRow(hoveredRowNode.rowIndex + diff) === movingRowNode) {\n return true;\n }\n return false;\n }\n clearHighlightedRow() {\n if (this.lastHighlightedRow) {\n this.setRowNodeHighlighted(this.lastHighlightedRow, null);\n this.lastHighlightedRow = null;\n }\n }\n isLastRowIndexKnown() {\n return true;\n }\n getRowCount() {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n return 0;\n }\n /**\n * Returns the number of rows with level === 1\n */\n getTopLevelRowCount() {\n const rootNode = this.rootNode;\n if (!rootNode) {\n return 0;\n }\n if (this.rowsToDisplay.length === 0) {\n return 0;\n }\n const showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === rootNode;\n if (showingRootNode) {\n return 1;\n }\n const filteredChildren = rootNode.childrenAfterAggFilter;\n const totalFooterInc = rootNode.sibling ? 1 : 0;\n return (filteredChildren ? filteredChildren.length : 0) + totalFooterInc;\n }\n /**\n * Get the row display index by the top level index\n * top level index is the index of rows with level === 1\n */\n getTopLevelRowDisplayedIndex(topLevelIndex) {\n const { rootNode, rowsToDisplay } = this;\n const showingRootNode = !rootNode || !rowsToDisplay.length || rowsToDisplay[0] === rootNode;\n if (showingRootNode) {\n return topLevelIndex;\n }\n const { childrenAfterSort } = rootNode;\n const getDefaultIndex = (adjustedIndex) => {\n let rowNode = childrenAfterSort[adjustedIndex];\n if (this.gos.get(\"groupHideOpenParents\")) {\n while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {\n rowNode = rowNode.childrenAfterSort[0];\n }\n }\n return rowNode.rowIndex;\n };\n const { footerSvc } = this.beans;\n if (footerSvc) {\n return footerSvc.getTopDisplayIndex(rowsToDisplay, topLevelIndex, childrenAfterSort, getDefaultIndex);\n } else {\n return getDefaultIndex(topLevelIndex);\n }\n }\n /**\n * The opposite of `getTopLevelRowDisplayedIndex`\n */\n getTopLevelIndexFromDisplayedIndex(displayedIndex) {\n const { rootNode, rowsToDisplay } = this;\n const showingRootNode = !rootNode || !rowsToDisplay.length || rowsToDisplay[0] === rootNode;\n if (showingRootNode) {\n return displayedIndex;\n }\n let node = this.getRow(displayedIndex);\n if (node.footer) {\n node = node.sibling;\n }\n while (node.parent && node.parent !== rootNode) {\n node = node.parent;\n }\n const topLevelIndex = rootNode.childrenAfterSort?.findIndex((childNode) => childNode === node);\n return topLevelIndex === -1 ? displayedIndex : topLevelIndex ?? displayedIndex;\n }\n getRowBounds(index) {\n const rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n return null;\n }\n onRowGroupOpened() {\n const animate = _isAnimateRows(this.gos);\n this.refreshModel({ step: \"map\", keepRenderedRows: true, animate });\n }\n onFilterChanged(event) {\n if (event.afterDataChange) {\n return;\n }\n const animate = _isAnimateRows(this.gos);\n const primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some((col) => col.isPrimary());\n const step = primaryOrQuickFilterChanged ? \"filter\" : \"filter_aggregates\";\n this.refreshModel({ step, keepRenderedRows: true, animate });\n }\n onSortChanged() {\n const animate = _isAnimateRows(this.gos);\n this.refreshModel({\n step: \"sort\",\n keepRenderedRows: true,\n animate\n });\n }\n getType() {\n return \"clientSide\";\n }\n onValueChanged() {\n this.refreshModel({ step: this.colModel.isPivotActive() ? \"pivot\" : \"aggregate\" });\n }\n createChangePath(enabled) {\n const changedPath = new ChangedPath(false, this.rootNode);\n if (!enabled) {\n changedPath.active = false;\n }\n return changedPath;\n }\n isSuppressModelUpdateAfterUpdateTransaction(params) {\n if (!this.gos.get(\"suppressModelUpdateAfterUpdateTransaction\")) {\n return false;\n }\n const { changedRowNodes, newData, rowDataUpdated } = params;\n if (!changedRowNodes || newData || !rowDataUpdated) {\n return false;\n }\n if (changedRowNodes.removals.size || changedRowNodes.adds.size) {\n return false;\n }\n return true;\n }\n refreshModel(params) {\n if (!this.rootNode) {\n return;\n }\n const changedPath = params.changedPath ?? (params.changedPath = this.createChangePath(!params.newData && !!params.rowDataUpdated));\n this.nodeManager.refreshModel?.(params, this.started);\n this.eventSvc.dispatchEvent({ type: \"beforeRefreshModel\", params });\n if (!this.started) {\n return;\n }\n if (params.rowDataUpdated) {\n this.eventSvc.dispatchEvent({ type: \"rowDataUpdated\" });\n }\n if (this.isRefreshingModel || this.colModel.changeEventsDispatching || this.isSuppressModelUpdateAfterUpdateTransaction(params)) {\n return;\n }\n this.isRefreshingModel = true;\n switch (params.step) {\n case \"group\": {\n this.doRowGrouping(\n params.changedRowNodes,\n changedPath,\n !!params.rowNodesOrderChanged,\n !!params.afterColumnsChanged\n );\n }\n case \"filter\":\n this.doFilter(changedPath);\n case \"pivot\":\n this.doPivot(changedPath);\n case \"aggregate\":\n this.doAggregate(changedPath);\n case \"filter_aggregates\":\n this.doFilterAggregates(changedPath);\n case \"sort\":\n this.doSort(params.changedRowNodes, changedPath);\n case \"map\":\n this.doRowsToDisplay();\n }\n const displayedNodesMapped = this.setRowTopAndRowIndex();\n this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);\n this.isRefreshingModel = false;\n this.eventSvc.dispatchEvent({\n type: \"modelUpdated\",\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false,\n keepUndoRedoStack: params.keepUndoRedoStack\n });\n }\n isEmpty() {\n return !this.rootNode?.allLeafChildren?.length || !this.colModel?.ready;\n }\n isRowsToRender() {\n return this.rowsToDisplay.length > 0;\n }\n getNodesInRangeForSelection(firstInRange, lastInRange) {\n let started = false;\n let finished = false;\n const result = [];\n const groupsSelectChildren = _getGroupSelectsDescendants(this.gos);\n this.forEachNodeAfterFilterAndSort((rowNode) => {\n if (finished) {\n return;\n }\n if (started) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n finished = true;\n if (rowNode.group && groupsSelectChildren) {\n result.push(...rowNode.allLeafChildren);\n return;\n }\n }\n }\n if (!started) {\n if (rowNode !== lastInRange && rowNode !== firstInRange) {\n return;\n }\n started = true;\n }\n const includeThisNode = !rowNode.group || !groupsSelectChildren;\n if (includeThisNode) {\n result.push(rowNode);\n return;\n }\n });\n return result;\n }\n getTopLevelNodes() {\n return this.rootNode?.childrenAfterGroup ?? null;\n }\n getRow(index) {\n return this.rowsToDisplay[index];\n }\n isRowPresent(rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n }\n getRowIndexAtPixel(pixelToMatch) {\n const rowsToDisplay = this.rowsToDisplay;\n if (this.isEmpty() || rowsToDisplay.length === 0) {\n return -1;\n }\n let bottomPointer = 0;\n let topPointer = rowsToDisplay.length - 1;\n if (pixelToMatch <= 0) {\n return 0;\n }\n const lastNode = _last(rowsToDisplay);\n if (lastNode.rowTop <= pixelToMatch) {\n return rowsToDisplay.length - 1;\n }\n let oldBottomPointer = -1;\n let oldTopPointer = -1;\n while (true) {\n const midPointer = Math.floor((bottomPointer + topPointer) / 2);\n const currentRowNode = rowsToDisplay[midPointer];\n if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n return midPointer;\n }\n if (currentRowNode.rowTop < pixelToMatch) {\n bottomPointer = midPointer + 1;\n } else if (currentRowNode.rowTop > pixelToMatch) {\n topPointer = midPointer - 1;\n }\n const caughtInInfiniteLoop = oldBottomPointer === bottomPointer && oldTopPointer === topPointer;\n if (caughtInInfiniteLoop) {\n return midPointer;\n }\n oldBottomPointer = bottomPointer;\n oldTopPointer = topPointer;\n }\n }\n isRowInPixel(rowNode, pixelToMatch) {\n const topPixel = rowNode.rowTop;\n const bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n const pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n }\n forEachLeafNode(callback) {\n this.rootNode?.allLeafChildren?.forEach((rowNode, index) => callback(rowNode, index));\n }\n forEachNode(callback, includeFooterNodes = false) {\n this.depthFirstSearchRowNodes(callback, includeFooterNodes);\n }\n forEachDisplayedNode(callback) {\n this.rowsToDisplay.forEach(callback);\n }\n forEachNodeAfterFilter(callback, includeFooterNodes = false) {\n this.depthFirstSearchRowNodes(callback, includeFooterNodes, (node) => node.childrenAfterAggFilter);\n }\n forEachNodeAfterFilterAndSort(callback, includeFooterNodes = false) {\n this.depthFirstSearchRowNodes(callback, includeFooterNodes, (node) => node.childrenAfterSort);\n }\n forEachPivotNode(callback, includeFooterNodes = false, afterSort = false) {\n const childrenField = afterSort ? \"childrenAfterSort\" : \"childrenAfterGroup\";\n this.depthFirstSearchRowNodes(\n callback,\n includeFooterNodes,\n (node) => !node.leafGroup ? node[childrenField] : null\n );\n }\n /**\n * Iterate through each node and all of its children\n * @param callback the function to execute for each node\n * @param includeFooterNodes whether to also iterate over footer nodes\n * @param nodes the nodes to start iterating over\n * @param getChildren a function to determine the recursion strategy\n * @param startIndex the index to start from\n * @returns the index ended at\n */\n depthFirstSearchRowNodes(callback, includeFooterNodes = false, getChildren = (node2) => node2.childrenAfterGroup, node = this.rootNode, startIndex = 0) {\n let index = startIndex;\n if (!node) {\n return index;\n }\n const isRootNode = node === this.rootNode;\n if (!isRootNode) {\n callback(node, index++);\n }\n const { footerSvc } = this.beans;\n if (node.hasChildren() && !node.footer) {\n const children = getChildren(node);\n if (children) {\n index = footerSvc?.addTotalRows(index, node, callback, includeFooterNodes, isRootNode, \"top\") ?? index;\n for (const node2 of children) {\n index = this.depthFirstSearchRowNodes(callback, includeFooterNodes, getChildren, node2, index);\n }\n return footerSvc?.addTotalRows(index, node, callback, includeFooterNodes, isRootNode, \"bottom\") ?? index;\n }\n }\n return index;\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + api.refreshClientSideRowModel('aggregate')\n doAggregate(changedPath) {\n const rootNode = this.rootNode;\n if (rootNode) {\n this.aggStage?.execute({ rowNode: rootNode, changedPath });\n }\n }\n doFilterAggregates(changedPath) {\n const rootNode = this.rootNode;\n if (this.filterAggStage) {\n this.filterAggStage.execute({ rowNode: rootNode, changedPath });\n } else {\n rootNode.childrenAfterAggFilter = rootNode.childrenAfterFilter;\n }\n }\n doSort(changedRowNodes, changedPath) {\n if (this.sortStage) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n changedRowNodes,\n changedPath\n });\n } else {\n changedPath.forEachChangedNodeDepthFirst((rowNode) => {\n rowNode.childrenAfterSort = rowNode.childrenAfterAggFilter.slice(0);\n updateRowNodeAfterSort(rowNode);\n });\n }\n }\n doRowGrouping(changedRowNodes, changedPath, rowNodesOrderChanged, afterColumnsChanged) {\n const rootNode = this.rootNode;\n const groupStageExecuted = this.groupStage?.execute({\n rowNode: rootNode,\n changedPath,\n changedRowNodes,\n rowNodesOrderChanged,\n afterColumnsChanged\n });\n if (!groupStageExecuted && !this.nodeManager.treeData) {\n const sibling = rootNode.sibling;\n rootNode.childrenAfterGroup = rootNode.allLeafChildren;\n if (sibling) {\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n }\n rootNode.updateHasChildren();\n }\n if (this.rowNodesCountReady) {\n this.rowCountReady = true;\n this.eventSvc.dispatchEventOnce({ type: \"rowCountReady\" });\n }\n }\n doFilter(changedPath) {\n if (this.filterStage) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath });\n } else {\n changedPath.forEachChangedNodeDepthFirst((rowNode) => {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n updateRowNodeAfterFilter(rowNode);\n }, true);\n }\n }\n doPivot(changedPath) {\n this.pivotStage?.execute({ rowNode: this.rootNode, changedPath });\n }\n getRowNode(id) {\n const idIsGroup = typeof id == \"string\" && id.indexOf(ROW_ID_PREFIX_ROW_GROUP) == 0;\n if (idIsGroup) {\n let res = void 0;\n this.forEachNode((node) => {\n if (node.id === id) {\n res = node;\n }\n });\n return res;\n }\n return this.nodeManager.getRowNode(id);\n }\n batchUpdateRowData(rowDataTransaction, callback) {\n if (this.applyAsyncTransactionsTimeout == null) {\n this.rowDataTransactionBatch = [];\n const waitMillis = this.gos.get(\"asyncTransactionWaitMillis\");\n this.applyAsyncTransactionsTimeout = window.setTimeout(() => {\n if (this.isAlive()) {\n this.executeBatchUpdateRowData();\n }\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction, callback });\n }\n flushAsyncTransactions() {\n if (this.applyAsyncTransactionsTimeout != null) {\n clearTimeout(this.applyAsyncTransactionsTimeout);\n this.executeBatchUpdateRowData();\n }\n }\n executeBatchUpdateRowData() {\n this.valueCache?.onDataChanged();\n const callbackFuncsBound = [];\n const rowNodeTrans = [];\n const changedRowNodes = new ChangedRowNodes();\n let orderChanged = false;\n this.rowDataTransactionBatch?.forEach((tranItem) => {\n this.rowNodesCountReady = true;\n const { rowNodeTransaction, rowsInserted } = this.nodeManager.updateRowData(\n tranItem.rowDataTransaction,\n changedRowNodes\n );\n if (rowsInserted) {\n orderChanged = true;\n }\n rowNodeTrans.push(rowNodeTransaction);\n if (tranItem.callback) {\n callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTransaction));\n }\n });\n this.commitTransactions(orderChanged, changedRowNodes);\n if (callbackFuncsBound.length > 0) {\n window.setTimeout(() => {\n callbackFuncsBound.forEach((func) => func());\n }, 0);\n }\n if (rowNodeTrans.length > 0) {\n this.eventSvc.dispatchEvent({\n type: \"asyncTransactionsFlushed\",\n results: rowNodeTrans\n });\n }\n this.rowDataTransactionBatch = null;\n this.applyAsyncTransactionsTimeout = void 0;\n }\n /**\n * Used to apply transaction changes.\n * Called by gridApi & rowDragFeature\n */\n updateRowData(rowDataTran) {\n this.valueCache?.onDataChanged();\n this.rowNodesCountReady = true;\n const changedRowNodes = new ChangedRowNodes();\n const { rowNodeTransaction, rowsInserted } = this.nodeManager.updateRowData(rowDataTran, changedRowNodes);\n this.commitTransactions(rowsInserted, changedRowNodes);\n return rowNodeTransaction;\n }\n /**\n * Common to:\n * - executeBatchUpdateRowData (batch transactions)\n * - updateRowData (single transaction)\n * - setImmutableRowData (generated transaction)\n *\n * @param rowNodeTrans - the transactions to apply\n * @param orderChanged - whether the order of the rows has changed, either via generated transaction or user provided addIndex\n */\n commitTransactions(rowNodesOrderChanged, changedRowNodes) {\n this.refreshModel({\n step: \"group\",\n rowDataUpdated: true,\n rowNodesOrderChanged,\n keepRenderedRows: true,\n animate: !this.gos.get(\"suppressAnimationFrame\"),\n changedRowNodes,\n changedPath: this.createChangePath(true)\n });\n }\n doRowsToDisplay() {\n const { flattenStage, rootNode } = this;\n let rowsToDisplay;\n if (flattenStage) {\n rowsToDisplay = flattenStage.execute({ rowNode: rootNode });\n } else {\n rowsToDisplay = rootNode?.childrenAfterSort ?? [];\n for (const row of rowsToDisplay) {\n row.setUiLevel(0);\n }\n }\n this.rowsToDisplay = rowsToDisplay;\n }\n onRowHeightChanged() {\n this.refreshModel({\n step: \"map\",\n keepRenderedRows: true,\n keepUndoRedoStack: true\n });\n }\n resetRowHeights() {\n const rootNode = this.rootNode;\n if (!rootNode) {\n return;\n }\n const atLeastOne = this.resetRowHeightsForAllRowNodes();\n rootNode.setRowHeight(rootNode.rowHeight, true);\n if (rootNode.sibling) {\n rootNode.sibling.setRowHeight(rootNode.sibling.rowHeight, true);\n }\n if (atLeastOne) {\n this.onRowHeightChanged();\n }\n }\n resetRowHeightsForAllRowNodes() {\n let atLeastOne = false;\n this.forEachNode((rowNode) => {\n rowNode.setRowHeight(rowNode.rowHeight, true);\n const detailNode = rowNode.detailNode;\n if (detailNode) {\n detailNode.setRowHeight(detailNode.rowHeight, true);\n }\n if (rowNode.sibling) {\n rowNode.sibling.setRowHeight(rowNode.sibling.rowHeight, true);\n }\n atLeastOne = true;\n });\n return atLeastOne;\n }\n onGridStylesChanges(e) {\n if (e.rowHeightChanged) {\n if (this.beans.rowAutoHeight?.active) {\n return;\n }\n this.resetRowHeights();\n }\n }\n onGridReady() {\n if (!this.started) {\n this.setInitialData();\n }\n }\n isRowDataLoaded() {\n return this.rowCountReady;\n }\n destroy() {\n super.destroy();\n this.clearHighlightedRow();\n this.started = false;\n this.rootNode = null;\n this.nodeManager = null;\n this.rowDataTransactionBatch = null;\n this.lastHighlightedRow = null;\n this.orderedStages = _EmptyArray;\n this.rowsToDisplay = _EmptyArray;\n }\n /**\n * @deprecated v33.1\n */\n onRowHeightChangedDebounced() {\n this.onRowHeightChanged_debounced();\n }\n};\n\n// packages/ag-grid-community/src/clientSideRowModel/clientSideRowModelApi.ts\nfunction onGroupExpandedOrCollapsed(beans) {\n beans.expansionSvc?.onGroupExpandedOrCollapsed();\n}\nfunction refreshClientSideRowModel(beans, step) {\n const clientSideRowModel = _getClientSideRowModel(beans);\n if (clientSideRowModel) {\n if (!step || step === \"everything\") {\n step = \"group\";\n }\n clientSideRowModel.refreshModel({\n step,\n keepRenderedRows: true,\n animate: !beans.gos.get(\"suppressAnimationFrame\")\n });\n }\n}\nfunction isRowDataEmpty(beans) {\n return _getClientSideRowModel(beans)?.isEmpty() ?? true;\n}\nfunction forEachLeafNode(beans, callback) {\n _getClientSideRowModel(beans)?.forEachLeafNode(callback);\n}\nfunction forEachNodeAfterFilter(beans, callback) {\n _getClientSideRowModel(beans)?.forEachNodeAfterFilter(callback);\n}\nfunction forEachNodeAfterFilterAndSort(beans, callback) {\n _getClientSideRowModel(beans)?.forEachNodeAfterFilterAndSort(callback);\n}\nfunction resetRowHeights(beans) {\n if (beans.rowAutoHeight?.active) {\n _warn(3);\n return;\n }\n _getClientSideRowModel(beans)?.resetRowHeights();\n}\nfunction applyTransaction(beans, rowDataTransaction) {\n return beans.frameworkOverrides.wrapIncoming(\n () => _getClientSideRowModel(beans)?.updateRowData(rowDataTransaction)\n );\n}\nfunction applyTransactionAsync(beans, rowDataTransaction, callback) {\n beans.frameworkOverrides.wrapIncoming(\n () => _getClientSideRowModel(beans)?.batchUpdateRowData(rowDataTransaction, callback)\n );\n}\nfunction flushAsyncTransactions(beans) {\n beans.frameworkOverrides.wrapIncoming(() => _getClientSideRowModel(beans)?.flushAsyncTransactions());\n}\nfunction getBestCostNodeSelection(beans) {\n return beans.selectionSvc?.getBestCostNodeSelection();\n}\n\n// packages/ag-grid-community/src/clientSideRowModel/clientSideRowModelModule.ts\nvar ClientSideRowModelModule = {\n moduleName: \"ClientSideRowModel\",\n version: VERSION,\n rowModels: [\"clientSide\"],\n beans: [ClientSideNodeManager, ClientSideRowModel, SortStage],\n dependsOn: [SortModule]\n};\nvar ClientSideRowModelApiModule = {\n moduleName: \"ClientSideRowModelApi\",\n version: VERSION,\n apiFunctions: {\n onGroupExpandedOrCollapsed,\n refreshClientSideRowModel,\n isRowDataEmpty,\n forEachLeafNode,\n forEachNodeAfterFilter,\n forEachNodeAfterFilterAndSort,\n resetRowHeights,\n applyTransaction,\n applyTransactionAsync,\n flushAsyncTransactions,\n getBestCostNodeSelection\n },\n dependsOn: [CsrmSsrmSharedApiModule]\n};\n\n// packages/ag-grid-community/src/export/gridSerializer.ts\nvar GridSerializer = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"gridSerializer\";\n }\n wireBeans(beans) {\n this.visibleCols = beans.visibleCols;\n this.colModel = beans.colModel;\n this.rowModel = beans.rowModel;\n this.pinnedRowModel = beans.pinnedRowModel;\n }\n serialize(gridSerializingSession, params = {}) {\n const { allColumns, columnKeys, skipRowGroups, exportRowNumbers } = params;\n const columnsToExport = this.getColumnsToExport({\n allColumns,\n skipRowGroups,\n columnKeys,\n exportRowNumbers\n });\n return [\n // first pass, put in the header names of the cols\n this.prepareSession(columnsToExport),\n this.prependContent(params),\n this.exportColumnGroups(params, columnsToExport),\n this.exportHeaders(params, columnsToExport),\n this.processPinnedTopRows(params, columnsToExport),\n this.processRows(params, columnsToExport),\n this.processPinnedBottomRows(params, columnsToExport),\n this.appendContent(params)\n ].reduce((composed, f) => f(composed), gridSerializingSession).parse();\n }\n processRow(gridSerializingSession, params, columnsToExport, node) {\n const rowSkipper = params.shouldRowBeSkipped || (() => false);\n const isClipboardExport = params.rowPositions != null;\n const isExplicitExportSelection = isClipboardExport || !!params.onlySelected;\n const hideOpenParents = this.gos.get(\"groupHideOpenParents\") && !isExplicitExportSelection;\n const isLeafNode = this.colModel.isPivotMode() ? node.leafGroup : !node.group;\n const isFooter = !!node.footer;\n const shouldSkipCurrentGroup = node.allChildrenCount === 1 && node.childrenAfterGroup?.length === 1 && _canSkipShowingRowGroup(this.gos, node);\n if (!isLeafNode && !isFooter && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents) || params.onlySelected && !node.isSelected() || params.skipPinnedTop && node.rowPinned === \"top\" || params.skipPinnedBottom && node.rowPinned === \"bottom\") {\n return;\n }\n const nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !isLeafNode && !isFooter) {\n return;\n }\n const shouldRowBeSkipped = rowSkipper(_addGridCommonParams(this.gos, { node }));\n if (shouldRowBeSkipped) {\n return;\n }\n const rowAccumulator = gridSerializingSession.onNewBodyRow(node);\n columnsToExport.forEach((column, index) => {\n rowAccumulator.onColumn(column, index, node);\n });\n if (params.getCustomContentBelowRow) {\n const content = params.getCustomContentBelowRow(_addGridCommonParams(this.gos, { node }));\n if (content) {\n gridSerializingSession.addCustomContent(content);\n }\n }\n }\n appendContent(params) {\n return (gridSerializingSession) => {\n const appendContent = params.appendContent;\n if (appendContent) {\n gridSerializingSession.addCustomContent(appendContent);\n }\n return gridSerializingSession;\n };\n }\n prependContent(params) {\n return (gridSerializingSession) => {\n const prependContent = params.prependContent;\n if (prependContent) {\n gridSerializingSession.addCustomContent(prependContent);\n }\n return gridSerializingSession;\n };\n }\n prepareSession(columnsToExport) {\n return (gridSerializingSession) => {\n gridSerializingSession.prepare(columnsToExport);\n return gridSerializingSession;\n };\n }\n exportColumnGroups(params, columnsToExport) {\n return (gridSerializingSession) => {\n if (!params.skipColumnGroupHeaders) {\n const idCreator = new GroupInstanceIdCreator();\n const { colGroupSvc } = this.beans;\n const displayedGroups = colGroupSvc ? colGroupSvc.createColumnGroups({\n columns: columnsToExport,\n idCreator,\n pinned: null,\n isStandaloneStructure: true\n }) : columnsToExport;\n this.recursivelyAddHeaderGroups(\n displayedGroups,\n gridSerializingSession,\n params.processGroupHeaderCallback\n );\n }\n return gridSerializingSession;\n };\n }\n exportHeaders(params, columnsToExport) {\n return (gridSerializingSession) => {\n if (!params.skipColumnHeaders) {\n const gridRowIterator = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach((column, index) => {\n gridRowIterator.onColumn(column, index, void 0);\n });\n }\n return gridSerializingSession;\n };\n }\n processPinnedTopRows(params, columnsToExport) {\n return (gridSerializingSession) => {\n const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n if (params.rowPositions) {\n params.rowPositions.filter((position) => position.rowPinned === \"top\").sort((a, b) => a.rowIndex - b.rowIndex).map((position) => this.pinnedRowModel?.getPinnedTopRow(position.rowIndex)).forEach(processRow);\n } else {\n this.pinnedRowModel?.forEachPinnedRow(\"top\", processRow);\n }\n return gridSerializingSession;\n };\n }\n processRows(params, columnsToExport) {\n return (gridSerializingSession) => {\n const rowModel = this.rowModel;\n const usingCsrm = _isClientSideRowModel(this.gos, rowModel);\n const usingSsrm = _isServerSideRowModel(this.gos, rowModel);\n const onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;\n const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n const { exportedRows = \"filteredAndSorted\" } = params;\n if (params.rowPositions) {\n params.rowPositions.filter((position) => position.rowPinned == null).sort((a, b) => a.rowIndex - b.rowIndex).map((position) => rowModel.getRow(position.rowIndex)).forEach(processRow);\n return gridSerializingSession;\n }\n if (this.colModel.isPivotMode()) {\n if (usingCsrm) {\n rowModel.forEachPivotNode(processRow, true, exportedRows === \"filteredAndSorted\");\n } else if (usingSsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow, true);\n } else {\n rowModel.forEachNode(processRow);\n }\n return gridSerializingSession;\n }\n if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {\n const selectedNodes = this.beans.selectionSvc?.getSelectedNodes() ?? [];\n this.replicateSortedOrder(selectedNodes);\n selectedNodes.forEach(processRow);\n } else {\n if (exportedRows === \"all\") {\n rowModel.forEachNode(processRow);\n } else if (usingCsrm || usingSsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow, true);\n } else {\n rowModel.forEachNode(processRow);\n }\n }\n return gridSerializingSession;\n };\n }\n replicateSortedOrder(rows) {\n const { sortSvc, rowNodeSorter } = this.beans;\n if (!sortSvc || !rowNodeSorter) {\n return;\n }\n const sortOptions = sortSvc.getSortOptions();\n const compareNodes = (rowA, rowB) => {\n if (rowA.rowIndex != null && rowB.rowIndex != null) {\n return rowA.rowIndex - rowB.rowIndex;\n }\n if (rowA.level === rowB.level) {\n if (rowA.parent?.id === rowB.parent?.id) {\n return rowNodeSorter.compareRowNodes(\n sortOptions,\n {\n rowNode: rowA,\n currentPos: rowA.rowIndex ?? -1\n },\n {\n rowNode: rowB,\n currentPos: rowB.rowIndex ?? -1\n }\n );\n }\n return compareNodes(rowA.parent, rowB.parent);\n }\n if (rowA.level > rowB.level) {\n return compareNodes(rowA.parent, rowB);\n }\n return compareNodes(rowA, rowB.parent);\n };\n rows.sort(compareNodes);\n }\n processPinnedBottomRows(params, columnsToExport) {\n return (gridSerializingSession) => {\n const processRow = this.processRow.bind(this, gridSerializingSession, params, columnsToExport);\n if (params.rowPositions) {\n params.rowPositions.filter((position) => position.rowPinned === \"bottom\").sort((a, b) => a.rowIndex - b.rowIndex).map((position) => this.pinnedRowModel?.getPinnedBottomRow(position.rowIndex)).forEach(processRow);\n } else {\n this.pinnedRowModel?.forEachPinnedRow(\"bottom\", processRow);\n }\n return gridSerializingSession;\n };\n }\n getColumnsToExport(params) {\n const { allColumns = false, skipRowGroups = false, exportRowNumbers = false, columnKeys } = params;\n const { colModel, gos, visibleCols } = this;\n const isPivotMode = colModel.isPivotMode();\n const filterSpecialColumns = (col) => {\n if (isColumnSelectionCol(col)) {\n return false;\n }\n return !isRowNumberCol(col) || exportRowNumbers;\n };\n if (columnKeys && columnKeys.length) {\n return colModel.getColsForKeys(columnKeys).filter(filterSpecialColumns);\n }\n const isTreeData = gos.get(\"treeData\");\n let columnsToExport = [];\n if (allColumns && !isPivotMode) {\n columnsToExport = colModel.getCols();\n } else {\n columnsToExport = visibleCols.allCols;\n }\n columnsToExport = columnsToExport.filter(\n (column) => filterSpecialColumns(column) && (skipRowGroups && !isTreeData ? !isColumnGroupAutoCol(column) : true)\n );\n return columnsToExport;\n }\n recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n const directChildrenHeaderGroups = [];\n displayedGroups.forEach((columnGroupChild) => {\n const columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach((it) => directChildrenHeaderGroups.push(it));\n });\n if (displayedGroups.length > 0 && isColumnGroup2(displayedGroups[0])) {\n this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);\n }\n if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n this.recursivelyAddHeaderGroups(\n directChildrenHeaderGroups,\n gridSerializingSession,\n processGroupHeaderCallback\n );\n }\n }\n doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n const gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n let columnIndex = 0;\n displayedGroups.forEach((columnGroupChild) => {\n const columnGroup = columnGroupChild;\n let name;\n if (processGroupHeaderCallback) {\n name = processGroupHeaderCallback(\n _addGridCommonParams(this.gos, {\n columnGroup\n })\n );\n } else {\n name = this.beans.colNames.getDisplayNameForColumnGroup(columnGroup, \"header\");\n }\n const collapsibleGroupRanges = columnGroup.getLeafColumns().reduce((collapsibleGroups, currentColumn, currentIdx, arr) => {\n let lastGroup = _last(collapsibleGroups);\n const groupShow = currentColumn.getColumnGroupShow() === \"open\";\n if (!groupShow) {\n if (lastGroup && lastGroup[1] == null) {\n lastGroup[1] = currentIdx - 1;\n }\n } else if (!lastGroup || lastGroup[1] != null) {\n lastGroup = [currentIdx];\n collapsibleGroups.push(lastGroup);\n }\n if (currentIdx === arr.length - 1 && lastGroup && lastGroup[1] == null) {\n lastGroup[1] = currentIdx;\n }\n return collapsibleGroups;\n }, []);\n gridRowIterator.onColumn(\n columnGroup,\n name || \"\",\n columnIndex++,\n columnGroup.getLeafColumns().length - 1,\n collapsibleGroupRanges\n );\n });\n }\n};\n\n// packages/ag-grid-community/src/export/exportModule.ts\nvar SharedExportModule = {\n moduleName: \"SharedExport\",\n version: VERSION,\n beans: [GridSerializer]\n};\n\n// packages/ag-grid-community/src/csvExport/csvSerializingSession.ts\nvar LINE_SEPARATOR = \"\\r\\n\";\nvar CsvSerializingSession = class extends BaseGridSerializingSession {\n constructor(config) {\n super(config);\n this.isFirstLine = true;\n this.result = \"\";\n const { suppressQuotes, columnSeparator } = config;\n this.suppressQuotes = suppressQuotes;\n this.columnSeparator = columnSeparator;\n }\n addCustomContent(content) {\n if (!content) {\n return;\n }\n if (typeof content === \"string\") {\n if (!/^\\s*\\n/.test(content)) {\n this.beginNewLine();\n }\n content = content.replace(/\\r?\\n/g, LINE_SEPARATOR);\n this.result += content;\n } else {\n content.forEach((row) => {\n this.beginNewLine();\n row.forEach((cell, index) => {\n if (index !== 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(cell.data.value || \"\");\n if (cell.mergeAcross) {\n this.appendEmptyCells(cell.mergeAcross);\n }\n });\n });\n }\n }\n onNewHeaderGroupingRow() {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n };\n }\n onNewHeaderGroupingRowColumn(columnGroup, header, index, span) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(header);\n this.appendEmptyCells(span);\n }\n appendEmptyCells(count) {\n for (let i = 1; i <= count; i++) {\n this.result += this.columnSeparator + this.putInQuotes(\"\");\n }\n }\n onNewHeaderRow() {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderRowColumn.bind(this)\n };\n }\n onNewHeaderRowColumn(column, index) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractHeaderValue(column));\n }\n onNewBodyRow() {\n this.beginNewLine();\n return {\n onColumn: this.onNewBodyRowColumn.bind(this)\n };\n }\n onNewBodyRowColumn(column, index, node) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n const rowCellValue = this.extractRowCellValue(column, index, index, \"csv\", node);\n this.result += this.putInQuotes(rowCellValue.valueFormatted ?? rowCellValue.value);\n }\n putInQuotes(value) {\n if (this.suppressQuotes) {\n return value;\n }\n if (value === null || value === void 0) {\n return '\"\"';\n }\n let stringValue;\n if (typeof value === \"string\") {\n stringValue = value;\n } else if (typeof value.toString === \"function\") {\n stringValue = value.toString();\n } else {\n _warn(53);\n stringValue = \"\";\n }\n const valueEscaped = stringValue.replace(/\"/g, '\"\"');\n return '\"' + valueEscaped + '\"';\n }\n parse() {\n return this.result;\n }\n beginNewLine() {\n if (!this.isFirstLine) {\n this.result += LINE_SEPARATOR;\n }\n this.isFirstLine = false;\n }\n};\n\n// packages/ag-grid-community/src/csvExport/csvCreator.ts\nvar CsvCreator = class extends BaseCreator {\n constructor() {\n super(...arguments);\n this.beanName = \"csvCreator\";\n }\n wireBeans(beans) {\n this.colModel = beans.colModel;\n this.colNames = beans.colNames;\n this.rowGroupColsSvc = beans.rowGroupColsSvc;\n this.valueSvc = beans.valueSvc;\n }\n getMergedParams(params) {\n const baseParams4 = this.gos.get(\"defaultCsvExportParams\");\n return Object.assign({}, baseParams4, params);\n }\n export(userParams) {\n if (this.isExportSuppressed()) {\n _warn(51);\n return;\n }\n const mergedParams = this.getMergedParams(userParams);\n const data = this.getData(mergedParams);\n const packagedFile = new Blob([\"\\uFEFF\", data], { type: \"text/plain\" });\n const fileName = typeof mergedParams.fileName === \"function\" ? mergedParams.fileName(_addGridCommonParams(this.gos, {})) : mergedParams.fileName;\n _downloadFile(this.getFileName(fileName), packagedFile);\n }\n exportDataAsCsv(params) {\n this.export(params);\n }\n getDataAsCsv(params, skipDefaultParams = false) {\n const mergedParams = skipDefaultParams ? Object.assign({}, params) : this.getMergedParams(params);\n return this.getData(mergedParams);\n }\n getDefaultFileExtension() {\n return \"csv\";\n }\n createSerializingSession(params) {\n const { colModel, colNames, rowGroupColsSvc, valueSvc, gos } = this;\n const {\n processCellCallback,\n processHeaderCallback,\n processGroupHeaderCallback,\n processRowGroupCallback,\n suppressQuotes,\n columnSeparator\n } = params;\n return new CsvSerializingSession({\n colModel,\n colNames,\n valueSvc,\n gos,\n processCellCallback: processCellCallback || void 0,\n processHeaderCallback: processHeaderCallback || void 0,\n processGroupHeaderCallback: processGroupHeaderCallback || void 0,\n processRowGroupCallback: processRowGroupCallback || void 0,\n suppressQuotes: suppressQuotes || false,\n columnSeparator: columnSeparator || \",\",\n rowGroupColsSvc\n });\n }\n isExportSuppressed() {\n return this.gos.get(\"suppressCsvExport\");\n }\n};\n\n// packages/ag-grid-community/src/csvExport/csvExportApi.ts\nfunction getDataAsCsv(beans, params) {\n return beans.csvCreator?.getDataAsCsv(params);\n}\nfunction exportDataAsCsv(beans, params) {\n beans.csvCreator?.exportDataAsCsv(params);\n}\n\n// packages/ag-grid-community/src/csvExport/csvExportModule.ts\nvar CsvExportModule = {\n moduleName: \"CsvExport\",\n version: VERSION,\n beans: [CsvCreator],\n apiFunctions: {\n getDataAsCsv,\n exportDataAsCsv\n },\n dependsOn: [SharedExportModule]\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteBlock.ts\nvar InfiniteBlock = class extends BeanStub {\n constructor(id, parentCache, params) {\n super();\n this.id = id;\n this.parentCache = parentCache;\n this.params = params;\n this.state = \"needsLoading\";\n this.version = 0;\n this.startRow = id * params.blockSize;\n this.endRow = this.startRow + params.blockSize;\n }\n load() {\n this.state = \"loading\";\n this.loadFromDatasource();\n }\n setStateWaitingToLoad() {\n this.version++;\n this.state = \"needsLoading\";\n }\n pageLoadFailed(version) {\n const requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = \"failed\";\n }\n this.dispatchLocalEvent({ type: \"loadComplete\" });\n }\n pageLoaded(version, rows, lastRow) {\n this.successCommon(version, { rowData: rows, rowCount: lastRow });\n }\n isRequestMostRecentAndLive(version) {\n const thisIsMostRecentRequest = version === this.version;\n const weAreNotDestroyed = this.isAlive();\n return thisIsMostRecentRequest && weAreNotDestroyed;\n }\n successCommon(version, params) {\n this.dispatchLocalEvent({ type: \"loadComplete\" });\n const requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = \"loaded\";\n this.processServerResult(params);\n }\n }\n postConstruct() {\n this.rowNodes = [];\n const {\n params: { blockSize, rowHeight },\n startRow,\n beans,\n rowNodes\n } = this;\n for (let i = 0; i < blockSize; i++) {\n const rowIndex = startRow + i;\n const rowNode = new RowNode(beans);\n rowNode.setRowHeight(rowHeight);\n rowNode.uiLevel = 0;\n rowNode.setRowIndex(rowIndex);\n rowNode.setRowTop(rowHeight * rowIndex);\n rowNodes.push(rowNode);\n }\n }\n getBlockStateJson() {\n const { id, startRow, endRow, state: pageStatus } = this;\n return {\n id: \"\" + id,\n state: {\n blockNumber: id,\n startRow,\n endRow,\n pageStatus\n }\n };\n }\n setDataAndId(rowNode, data, index) {\n if (_exists(data)) {\n rowNode.setDataAndId(data, index.toString());\n } else {\n rowNode.setDataAndId(void 0, void 0);\n }\n }\n loadFromDatasource() {\n const params = this.createLoadParams();\n if (_missing(this.params.datasource.getRows)) {\n _warn(90);\n return;\n }\n window.setTimeout(() => {\n this.params.datasource.getRows(params);\n }, 0);\n }\n createLoadParams() {\n const {\n startRow,\n endRow,\n version,\n params: { sortModel, filterModel },\n gos\n } = this;\n const params = {\n startRow,\n endRow,\n successCallback: this.pageLoaded.bind(this, version),\n failCallback: this.pageLoadFailed.bind(this, version),\n sortModel,\n filterModel,\n context: _addGridCommonParams(gos, {}).context\n };\n return params;\n }\n forEachNode(callback, sequence, rowCount) {\n this.rowNodes.forEach((rowNode, index) => {\n const rowIndex = this.startRow + index;\n if (rowIndex < rowCount) {\n callback(rowNode, sequence.value++);\n }\n });\n }\n getRow(rowIndex, dontTouchLastAccessed = false) {\n if (!dontTouchLastAccessed) {\n this.lastAccessed = this.params.lastAccessedSequence.value++;\n }\n const localIndex = rowIndex - this.startRow;\n return this.rowNodes[localIndex];\n }\n processServerResult(params) {\n const { rowNodes, beans } = this;\n rowNodes.forEach((rowNode, index) => {\n const data = params.rowData ? params.rowData[index] : void 0;\n if (!rowNode.id && rowNode.alreadyRendered && data) {\n rowNodes[index] = new RowNode(beans);\n rowNodes[index].setRowIndex(rowNode.rowIndex);\n rowNodes[index].setRowTop(rowNode.rowTop);\n rowNodes[index].setRowHeight(rowNode.rowHeight);\n rowNode.clearRowTopAndRowIndex();\n }\n this.setDataAndId(rowNodes[index], data, this.startRow + index);\n });\n const finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : void 0;\n this.parentCache.pageLoaded(this, finalRowCount);\n }\n destroy() {\n this.rowNodes.forEach((rowNode) => {\n rowNode.clearRowTopAndRowIndex();\n });\n super.destroy();\n }\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteCache.ts\nvar MAX_EMPTY_BLOCKS_TO_KEEP = 2;\nvar InfiniteCache = class extends BeanStub {\n constructor(params) {\n super();\n this.params = params;\n this.lastRowIndexKnown = false;\n this.blocks = {};\n this.blockCount = 0;\n this.rowCount = params.initialRowCount;\n }\n // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n // it will want new pages in the cache as it asks for rows. only when we are inserting /\n // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n getRow(rowIndex, dontCreatePage = false) {\n const blockId = Math.floor(rowIndex / this.params.blockSize);\n let block = this.blocks[blockId];\n if (!block) {\n if (dontCreatePage) {\n return void 0;\n }\n block = this.createBlock(blockId);\n }\n return block.getRow(rowIndex);\n }\n createBlock(blockNumber) {\n const params = this.params;\n const newBlock = this.createBean(new InfiniteBlock(blockNumber, this, params));\n this.blocks[newBlock.id] = newBlock;\n this.blockCount++;\n this.purgeBlocksIfNeeded(newBlock);\n params.rowNodeBlockLoader.addBlock(newBlock);\n return newBlock;\n }\n // we have this on infinite row model only, not server side row model,\n // because for server side, it would leave the children in inconsistent\n // state - eg if a node had children, but after the refresh it had data\n // for a different row, then the children would be with the wrong row node.\n refreshCache() {\n const nothingToRefresh = this.blockCount == 0;\n if (nothingToRefresh) {\n this.purgeCache();\n return;\n }\n this.getBlocksInOrder().forEach((block) => block.setStateWaitingToLoad());\n this.params.rowNodeBlockLoader.checkBlockToLoad();\n }\n destroy() {\n this.getBlocksInOrder().forEach((block) => this.destroyBlock(block));\n super.destroy();\n }\n getRowCount() {\n return this.rowCount;\n }\n isLastRowIndexKnown() {\n return this.lastRowIndexKnown;\n }\n // block calls this, when page loaded\n pageLoaded(block, lastRow) {\n if (!this.isAlive()) {\n return;\n }\n _logIfDebug(this.gos, `InfiniteCache - onPageLoaded: page = ${block.id}, lastRow = ${lastRow}`);\n this.checkRowCount(block, lastRow);\n this.onCacheUpdated();\n }\n purgeBlocksIfNeeded(blockToExclude) {\n const blocksForPurging = this.getBlocksInOrder().filter((b) => b != blockToExclude);\n const lastAccessedComparator = (a, b) => b.lastAccessed - a.lastAccessed;\n blocksForPurging.sort(lastAccessedComparator);\n const maxBlocksProvided = this.params.maxBlocksInCache > 0;\n const blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;\n const emptyBlocksToKeep = MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach((block, index) => {\n const purgeBecauseBlockEmpty = block.state === \"needsLoading\" && index >= emptyBlocksToKeep;\n const purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n if (this.isBlockCurrentlyDisplayed(block)) {\n return;\n }\n if (this.isBlockFocused(block)) {\n return;\n }\n this.removeBlockFromCache(block);\n }\n });\n }\n isBlockFocused(block) {\n const focusedCell = this.beans.focusSvc.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n const { startRow, endRow } = block;\n const hasFocus = focusedCell.rowIndex >= startRow && focusedCell.rowIndex < endRow;\n return hasFocus;\n }\n isBlockCurrentlyDisplayed(block) {\n const { startRow, endRow } = block;\n return this.beans.rowRenderer.isRangeInRenderedViewport(startRow, endRow - 1);\n }\n removeBlockFromCache(blockToRemove) {\n if (!blockToRemove) {\n return;\n }\n this.destroyBlock(blockToRemove);\n }\n checkRowCount(block, lastRow) {\n if (typeof lastRow === \"number\" && lastRow >= 0) {\n this.rowCount = lastRow;\n this.lastRowIndexKnown = true;\n } else if (!this.lastRowIndexKnown) {\n const { blockSize, overflowSize } = this.params;\n const lastRowIndex = (block.id + 1) * blockSize;\n const lastRowIndexPlusOverflow = lastRowIndex + overflowSize;\n if (this.rowCount < lastRowIndexPlusOverflow) {\n this.rowCount = lastRowIndexPlusOverflow;\n }\n }\n }\n setRowCount(rowCount, lastRowIndexKnown) {\n this.rowCount = rowCount;\n if (_exists(lastRowIndexKnown)) {\n this.lastRowIndexKnown = lastRowIndexKnown;\n }\n if (!this.lastRowIndexKnown) {\n if (this.rowCount % this.params.blockSize === 0) {\n this.rowCount++;\n }\n }\n this.onCacheUpdated();\n }\n forEachNodeDeep(callback) {\n const sequence = { value: 0 };\n this.getBlocksInOrder().forEach((block) => block.forEachNode(callback, sequence, this.rowCount));\n }\n getBlocksInOrder() {\n const blockComparator = (a, b) => a.id - b.id;\n const blocks = Object.values(this.blocks).sort(blockComparator);\n return blocks;\n }\n destroyBlock(block) {\n delete this.blocks[block.id];\n this.destroyBean(block);\n this.blockCount--;\n this.params.rowNodeBlockLoader.removeBlock(block);\n }\n // gets called 1) row count changed 2) cache purged 3) items inserted\n onCacheUpdated() {\n if (this.isAlive()) {\n this.destroyAllBlocksPastVirtualRowCount();\n this.eventSvc.dispatchEvent({\n type: \"storeUpdated\"\n });\n }\n }\n destroyAllBlocksPastVirtualRowCount() {\n const blocksToDestroy = [];\n this.getBlocksInOrder().forEach((block) => {\n const startRow = block.id * this.params.blockSize;\n if (startRow >= this.rowCount) {\n blocksToDestroy.push(block);\n }\n });\n if (blocksToDestroy.length > 0) {\n blocksToDestroy.forEach((block) => this.destroyBlock(block));\n }\n }\n purgeCache() {\n this.getBlocksInOrder().forEach((block) => this.removeBlockFromCache(block));\n this.lastRowIndexKnown = false;\n if (this.rowCount === 0) {\n this.rowCount = this.params.initialRowCount;\n }\n this.onCacheUpdated();\n }\n getRowNodesInRange(firstInRange, lastInRange) {\n const result = [];\n let lastBlockId = -1;\n let inActiveRange = false;\n const numberSequence = { value: 0 };\n let foundGapInSelection = false;\n this.getBlocksInOrder().forEach((block) => {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && lastBlockId + 1 !== block.id) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = block.id;\n block.forEachNode(\n (rowNode) => {\n const hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n },\n numberSequence,\n this.rowCount\n );\n });\n const invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n }\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteRowModel.ts\nvar InfiniteRowModel = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowModel\";\n }\n getRowBounds(index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n }\n // we don't implement as lazy row heights is not supported in this row model\n ensureRowHeightsValid() {\n return false;\n }\n postConstruct() {\n if (this.gos.get(\"rowModelType\") !== \"infinite\") {\n return;\n }\n this.rowHeight = _getRowHeightAsNumber(this.beans);\n this.addEventListeners();\n this.addDestroyFunc(() => this.destroyCache());\n }\n start() {\n this.setDatasource(this.gos.get(\"datasource\"));\n }\n destroy() {\n this.destroyDatasource();\n super.destroy();\n }\n destroyDatasource() {\n if (this.datasource) {\n this.destroyBean(this.datasource);\n this.beans.rowRenderer.datasourceChanged();\n this.datasource = null;\n }\n }\n addEventListeners() {\n this.addManagedEventListeners({\n filterChanged: this.reset.bind(this),\n sortChanged: this.reset.bind(this),\n newColumnsLoaded: this.onColumnEverything.bind(this),\n storeUpdated: this.dispatchModelUpdatedEvent.bind(this)\n });\n this.addManagedPropertyListener(\"datasource\", () => this.setDatasource(this.gos.get(\"datasource\")));\n this.addManagedPropertyListener(\"cacheBlockSize\", () => this.resetCache());\n this.addManagedPropertyListener(\"rowHeight\", () => {\n this.rowHeight = _getRowHeightAsNumber(this.beans);\n this.cacheParams.rowHeight = this.rowHeight;\n this.updateRowHeights();\n });\n }\n onColumnEverything() {\n let resetRequired;\n if (this.cacheParams) {\n resetRequired = !_jsonEquals(this.cacheParams.sortModel, this.beans.sortSvc?.getSortModel() ?? []);\n } else {\n resetRequired = true;\n }\n if (resetRequired) {\n this.reset();\n }\n }\n getType() {\n return \"infinite\";\n }\n setDatasource(datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n if (datasource) {\n this.reset();\n }\n }\n isEmpty() {\n return !this.infiniteCache;\n }\n isRowsToRender() {\n return !!this.infiniteCache;\n }\n getNodesInRangeForSelection(firstInRange, lastInRange) {\n return this.infiniteCache?.getRowNodesInRange(firstInRange, lastInRange) ?? [];\n }\n reset() {\n if (!this.datasource) {\n return;\n }\n const getRowIdFunc = _getRowIdCallback(this.gos);\n const userGeneratingIds = getRowIdFunc != null;\n if (!userGeneratingIds) {\n this.beans.selectionSvc?.reset(\"rowDataChanged\");\n }\n this.resetCache();\n }\n dispatchModelUpdatedEvent() {\n this.eventSvc.dispatchEvent({\n type: \"modelUpdated\",\n // not sure if these should all be false - noticed if after implementing,\n // maybe they should be true?\n newPage: false,\n newPageSize: false,\n newData: false,\n keepRenderedRows: true,\n animate: false\n });\n }\n resetCache() {\n this.destroyCache();\n const beans = this.beans;\n const { filterManager, sortSvc, rowNodeBlockLoader, eventSvc, gos } = beans;\n this.cacheParams = {\n // the user provided datasource\n datasource: this.datasource,\n // sort and filter model\n filterModel: filterManager?.getFilterModel() ?? {},\n sortModel: sortSvc?.getSortModel() ?? [],\n rowNodeBlockLoader,\n // properties - this way we take a snapshot of them, so if user changes any, they will be\n // used next time we create a new cache, which is generally after a filter or sort change,\n // or a new datasource is set\n initialRowCount: gos.get(\"infiniteInitialRowCount\"),\n maxBlocksInCache: gos.get(\"maxBlocksInCache\"),\n rowHeight: _getRowHeightAsNumber(beans),\n // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n // the current page and request first row of next page\n overflowSize: gos.get(\"cacheOverflowSize\"),\n // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n // server for one page at a time. so the default if not specified is 100.\n blockSize: gos.get(\"cacheBlockSize\"),\n // the cache could create this, however it is also used by the pages, so handy to create it\n // here as the settings are also passed to the pages\n lastAccessedSequence: { value: 0 }\n };\n this.infiniteCache = this.createBean(new InfiniteCache(this.cacheParams));\n eventSvc.dispatchEventOnce({\n type: \"rowCountReady\"\n });\n this.dispatchModelUpdatedEvent();\n }\n updateRowHeights() {\n this.forEachNode((node) => {\n node.setRowHeight(this.rowHeight);\n node.setRowTop(this.rowHeight * node.rowIndex);\n });\n this.dispatchModelUpdatedEvent();\n }\n destroyCache() {\n this.infiniteCache = this.destroyBean(this.infiniteCache);\n }\n getRow(rowIndex) {\n const infiniteCache = this.infiniteCache;\n if (!infiniteCache) {\n return void 0;\n }\n if (rowIndex >= infiniteCache.getRowCount()) {\n return void 0;\n }\n return infiniteCache.getRow(rowIndex);\n }\n getRowNode(id) {\n let result;\n this.forEachNode((rowNode) => {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n }\n forEachNode(callback) {\n this.infiniteCache?.forEachNodeDeep(callback);\n }\n getTopLevelRowCount() {\n return this.getRowCount();\n }\n getTopLevelRowDisplayedIndex(topLevelIndex) {\n return topLevelIndex;\n }\n getRowIndexAtPixel(pixel) {\n if (this.rowHeight !== 0) {\n const rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n const lastRowIndex = this.getRowCount() - 1;\n if (rowIndexForPixel > lastRowIndex) {\n return lastRowIndex;\n }\n return rowIndexForPixel;\n }\n return 0;\n }\n getRowCount() {\n return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;\n }\n isRowPresent(rowNode) {\n return !!this.getRowNode(rowNode.id);\n }\n refreshCache() {\n this.infiniteCache?.refreshCache();\n }\n purgeCache() {\n this.infiniteCache?.purgeCache();\n }\n // for iRowModel\n isLastRowIndexKnown() {\n return this.infiniteCache?.isLastRowIndexKnown() ?? false;\n }\n setRowCount(rowCount, lastRowIndexKnown) {\n this.infiniteCache?.setRowCount(rowCount, lastRowIndexKnown);\n }\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteRowModelApi.ts\nfunction refreshInfiniteCache(beans) {\n _getInfiniteRowModel(beans)?.refreshCache();\n}\nfunction purgeInfiniteCache(beans) {\n _getInfiniteRowModel(beans)?.purgeCache();\n}\nfunction getInfiniteRowCount(beans) {\n return _getInfiniteRowModel(beans)?.getRowCount();\n}\n\n// packages/ag-grid-community/src/infiniteRowModel/rowNodeBlockLoader.ts\nvar RowNodeBlockLoader = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowNodeBlockLoader\";\n this.activeBlockLoadsCount = 0;\n this.blocks = [];\n this.active = true;\n }\n postConstruct() {\n this.maxConcurrentRequests = _getMaxConcurrentDatasourceRequests(this.gos);\n const blockLoadDebounceMillis = this.gos.get(\"blockLoadDebounceMillis\");\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = _debounce(\n this,\n this.performCheckBlocksToLoad.bind(this),\n blockLoadDebounceMillis\n );\n }\n }\n addBlock(block) {\n this.blocks.push(block);\n block.addEventListener(\"loadComplete\", this.loadComplete.bind(this));\n this.checkBlockToLoad();\n }\n removeBlock(block) {\n _removeFromArray(this.blocks, block);\n }\n destroy() {\n super.destroy();\n this.active = false;\n }\n loadComplete() {\n this.activeBlockLoadsCount--;\n this.checkBlockToLoad();\n }\n checkBlockToLoad() {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n } else {\n this.performCheckBlocksToLoad();\n }\n }\n performCheckBlocksToLoad() {\n if (!this.active) {\n return;\n }\n this.printCacheStatus();\n if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n _logIfDebug(this.gos, `RowNodeBlockLoader - checkBlockToLoad: max loads exceeded`);\n return;\n }\n const loadAvailability = this.maxConcurrentRequests != null ? this.maxConcurrentRequests - this.activeBlockLoadsCount : 1;\n const blocksToLoad = this.blocks.filter((block) => block.state === \"needsLoading\").slice(0, loadAvailability);\n this.activeBlockLoadsCount += blocksToLoad.length;\n blocksToLoad.forEach((block) => block.load());\n this.printCacheStatus();\n }\n getBlockState() {\n const result = {};\n this.blocks.forEach((block) => {\n const { id, state } = block.getBlockStateJson();\n result[id] = state;\n });\n return result;\n }\n printCacheStatus() {\n _logIfDebug(\n this.gos,\n `RowNodeBlockLoader - printCacheStatus: activePageLoadsCount = ${this.activeBlockLoadsCount}, blocks = ${JSON.stringify(this.getBlockState())}`\n );\n }\n};\n\n// packages/ag-grid-community/src/infiniteRowModel/infiniteRowModelModule.ts\nvar InfiniteRowModelCoreModule = {\n moduleName: \"InfiniteRowModelCore\",\n version: VERSION,\n rowModels: [\"infinite\"],\n beans: [InfiniteRowModel, RowNodeBlockLoader]\n};\nvar InfiniteRowModelModule = {\n moduleName: \"InfiniteRowModel\",\n version: VERSION,\n apiFunctions: {\n refreshInfiniteCache,\n purgeInfiniteCache,\n getInfiniteRowCount\n },\n dependsOn: [InfiniteRowModelCoreModule, SsrmInfiniteSharedApiModule]\n};\n\n// packages/ag-grid-community/src/rendering/cellRenderers/animateShowChangeCellRenderer.ts\nvar ARROW_UP = \"\\u2191\";\nvar ARROW_DOWN = \"\\u2193\";\nvar AnimateShowChangeCellRendererElement = {\n tag: \"span\",\n children: [\n { tag: \"span\", ref: \"eDelta\", cls: \"ag-value-change-delta\" },\n { tag: \"span\", ref: \"eValue\", cls: \"ag-value-change-value\" }\n ]\n};\nvar AnimateShowChangeCellRenderer = class extends Component {\n constructor() {\n super(AnimateShowChangeCellRendererElement);\n this.eValue = RefPlaceholder;\n this.eDelta = RefPlaceholder;\n this.refreshCount = 0;\n }\n init(params) {\n this.refresh(params, true);\n }\n showDelta(params, delta) {\n const absDelta = Math.abs(delta);\n const valueFormatted = params.formatValue(absDelta);\n const valueToUse = _exists(valueFormatted) ? valueFormatted : absDelta;\n const deltaUp = delta >= 0;\n const eDelta = this.eDelta;\n if (deltaUp) {\n eDelta.textContent = ARROW_UP + valueToUse;\n } else {\n eDelta.textContent = ARROW_DOWN + valueToUse;\n }\n eDelta.classList.toggle(\"ag-value-change-delta-up\", deltaUp);\n eDelta.classList.toggle(\"ag-value-change-delta-down\", !deltaUp);\n }\n setTimerToRemoveDelta() {\n this.refreshCount++;\n const refreshCountCopy = this.refreshCount;\n this.beans.frameworkOverrides.wrapIncoming(() => {\n window.setTimeout(() => {\n if (refreshCountCopy === this.refreshCount) {\n this.hideDeltaValue();\n }\n }, 2e3);\n });\n }\n hideDeltaValue() {\n this.eValue.classList.remove(\"ag-value-change-value-highlight\");\n _clearElement(this.eDelta);\n }\n refresh(params, isInitialRender = false) {\n const { value, valueFormatted } = params;\n const { eValue, lastValue, beans } = this;\n if (value === lastValue) {\n return false;\n }\n if (_exists(valueFormatted)) {\n eValue.textContent = valueFormatted;\n } else if (_exists(value)) {\n eValue.textContent = value;\n } else {\n _clearElement(eValue);\n }\n if (beans.filterManager?.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n if (typeof value === \"number\" && typeof lastValue === \"number\") {\n const delta = value - lastValue;\n this.showDelta(params, delta);\n }\n if (lastValue) {\n eValue.classList.add(\"ag-value-change-value-highlight\");\n }\n if (!isInitialRender) {\n this.setTimerToRemoveDelta();\n }\n this.lastValue = value;\n return true;\n }\n};\n\n// packages/ag-grid-community/src/rendering/cellRenderers/animateSlideCellRenderer.css-GENERATED.ts\nvar animateSlideCellRendererCSS = (\n /*css*/\n `.ag-value-slide-out{opacity:1}:where(.ag-ltr) .ag-value-slide-out{margin-right:5px;transition:opacity 3s,margin-right 3s}:where(.ag-rtl) .ag-value-slide-out{margin-left:5px;transition:opacity 3s,margin-left 3s}:where(.ag-ltr,.ag-rtl) .ag-value-slide-out{transition-timing-function:linear}.ag-value-slide-out-end{opacity:0}:where(.ag-ltr) .ag-value-slide-out-end{margin-right:10px}:where(.ag-rtl) .ag-value-slide-out-end{margin-left:10px}`\n);\n\n// packages/ag-grid-community/src/rendering/cellRenderers/animateSlideCellRenderer.ts\nvar AnimateSlideCellRendererElement = {\n tag: \"span\",\n children: [{ tag: \"span\", ref: \"eCurrent\", cls: \"ag-value-slide-current\" }]\n};\nvar AnimateSlideCellRenderer = class extends Component {\n constructor() {\n super(AnimateSlideCellRendererElement);\n this.eCurrent = RefPlaceholder;\n this.refreshCount = 0;\n this.registerCSS(animateSlideCellRendererCSS);\n }\n init(params) {\n this.refresh(params, true);\n }\n addSlideAnimation() {\n this.refreshCount++;\n const refreshCountCopy = this.refreshCount;\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n const { beans, eCurrent } = this;\n const prevElement = _createElement({ tag: \"span\", cls: \"ag-value-slide-previous ag-value-slide-out\" });\n this.ePrevious = prevElement;\n prevElement.textContent = eCurrent.textContent;\n this.getGui().insertBefore(prevElement, eCurrent);\n beans.frameworkOverrides.wrapIncoming(() => {\n window.setTimeout(() => {\n if (refreshCountCopy !== this.refreshCount) {\n return;\n }\n this.ePrevious.classList.add(\"ag-value-slide-out-end\");\n }, 50);\n window.setTimeout(() => {\n if (refreshCountCopy !== this.refreshCount) {\n return;\n }\n this.getGui().removeChild(this.ePrevious);\n this.ePrevious = null;\n }, 3e3);\n });\n }\n refresh(params, isInitialRender = false) {\n let value = params.value;\n if (_missing(value)) {\n value = \"\";\n }\n if (value === this.lastValue) {\n return false;\n }\n if (this.beans.filterManager?.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n if (!isInitialRender) {\n this.addSlideAnimation();\n }\n this.lastValue = value;\n const eCurrent = this.eCurrent;\n if (_exists(params.valueFormatted)) {\n eCurrent.textContent = params.valueFormatted;\n } else if (_exists(params.value)) {\n eCurrent.textContent = value;\n } else {\n _clearElement(eCurrent);\n }\n return true;\n }\n};\n\n// packages/ag-grid-community/src/rendering/cell/cellFlashService.ts\nvar CellFlashService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"cellFlashSvc\";\n }\n onFlashCells(cellCtrl, event) {\n if (!cellCtrl.comp) {\n return;\n }\n const cellId = _createCellId(cellCtrl.cellPosition);\n const shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell(cellCtrl, \"highlight\");\n }\n }\n flashCell(cellCtrl, delays) {\n this.animateCell(cellCtrl, \"data-changed\", delays?.flashDuration, delays?.fadeDuration);\n }\n animateCell(cellCtrl, cssName, flashDuration, fadeDuration) {\n const cellComp = cellCtrl.comp;\n if (!cellComp) {\n return;\n }\n const { gos } = this;\n if (!flashDuration) {\n flashDuration = gos.get(\"cellFlashDuration\");\n }\n if (flashDuration === 0) {\n return;\n }\n if (!_exists(fadeDuration)) {\n fadeDuration = gos.get(\"cellFadeDuration\");\n }\n const fullName = `ag-cell-${cssName}`;\n const animationFullName = `ag-cell-${cssName}-animation`;\n cellComp.addOrRemoveCssClass(fullName, true);\n cellComp.addOrRemoveCssClass(animationFullName, false);\n const eCell = cellCtrl.eGui;\n this.beans.frameworkOverrides.wrapIncoming(() => {\n window.setTimeout(() => {\n if (!cellCtrl.isAlive()) {\n return;\n }\n cellComp.addOrRemoveCssClass(fullName, false);\n cellComp.addOrRemoveCssClass(animationFullName, true);\n eCell.style.transition = `background-color ${fadeDuration}ms`;\n window.setTimeout(() => {\n if (!cellCtrl.isAlive()) {\n return;\n }\n cellComp.addOrRemoveCssClass(animationFullName, false);\n eCell.style.transition = \"\";\n }, fadeDuration);\n }, flashDuration);\n });\n }\n};\n\n// packages/ag-grid-community/src/rendering/cell/highlightChangesApi.ts\nfunction flashCells(beans, params = {}) {\n const { cellFlashSvc } = beans;\n if (!cellFlashSvc) {\n return;\n }\n beans.frameworkOverrides.wrapIncoming(() => {\n beans.rowRenderer.getCellCtrls(params.rowNodes, params.columns).forEach((cellCtrl) => cellFlashSvc.flashCell(cellCtrl, params));\n });\n}\n\n// packages/ag-grid-community/src/rendering/cell/highlightChangesModule.ts\nvar HighlightChangesModule = {\n moduleName: \"HighlightChanges\",\n version: VERSION,\n beans: [CellFlashService],\n userComponents: {\n agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: AnimateSlideCellRenderer\n },\n apiFunctions: {\n flashCells\n }\n};\n\n// packages/ag-grid-community/src/misc/state/stateApi.ts\nfunction getState(beans) {\n return beans.stateSvc?.getState() ?? {};\n}\n\n// packages/ag-grid-community/src/misc/state/stateModelMigration.ts\nfunction migrateGridStateModel(state) {\n state = { ...state };\n if (!state.version) {\n state.version = \"32.1.0\";\n }\n switch (state.version) {\n case \"32.1.0\":\n state = migrateV32_1(state);\n }\n return state;\n}\nfunction migrateV32_1(state) {\n state.cellSelection = jsonGet(state, \"rangeSelection\");\n return state;\n}\nfunction jsonGet(json, key) {\n if (json && typeof json === \"object\") {\n return json[key];\n }\n}\n\n// packages/ag-grid-community/src/misc/state/stateService.ts\nvar StateService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"stateSvc\";\n this.updateRowGroupExpansionStateTimer = 0;\n this.suppressEvents = true;\n this.queuedUpdateSources = /* @__PURE__ */ new Set();\n this.dispatchStateUpdateEventDebounced = _debounce(this, () => this.dispatchQueuedStateUpdateEvents(), 0);\n // If user is doing a manual expand all node by node, we don't want to process one at a time.\n // EVENT_ROW_GROUP_OPENED is already async, so no impact of making the state async here.\n this.onRowGroupOpenedDebounced = _debounce(\n this,\n () => {\n this.updateCachedState(\"rowGroupExpansion\", this.getRowGroupExpansionState());\n },\n 0\n );\n // similar to row expansion, want to debounce. However, selection is synchronous, so need to mark as stale in case `getState` is called.\n this.onRowSelectedDebounced = _debounce(\n this,\n () => {\n this.staleStateKeys.delete(\"rowSelection\");\n this.updateCachedState(\"rowSelection\", this.getRowSelectionState());\n },\n 0\n );\n this.staleStateKeys = /* @__PURE__ */ new Set();\n }\n postConstruct() {\n this.isClientSideRowModel = _isClientSideRowModel(this.gos);\n this.cachedState = this.getInitialState();\n this.setCachedStateValue(\"version\", VERSION);\n const suppressEventsAndDispatchInitEvent = this.suppressEventsAndDispatchInitEvent.bind(this);\n this.beans.ctrlsSvc.whenReady(\n this,\n () => suppressEventsAndDispatchInitEvent(() => this.setupStateOnGridReady())\n );\n const [newColumnsLoadedDestroyFunc, rowCountReadyDestroyFunc, firstDataRenderedDestroyFunc] = this.addManagedEventListeners({\n newColumnsLoaded: ({ source }) => {\n if (source === \"gridInitializing\") {\n newColumnsLoadedDestroyFunc();\n suppressEventsAndDispatchInitEvent(() => this.setupStateOnColumnsInitialised());\n }\n },\n rowCountReady: () => {\n rowCountReadyDestroyFunc?.();\n suppressEventsAndDispatchInitEvent(() => this.setupStateOnRowCountReady());\n },\n firstDataRendered: () => {\n firstDataRenderedDestroyFunc?.();\n suppressEventsAndDispatchInitEvent(() => this.setupStateOnFirstDataRendered());\n }\n });\n }\n destroy() {\n super.destroy();\n clearTimeout(this.updateRowGroupExpansionStateTimer);\n this.queuedUpdateSources.clear();\n }\n getInitialState() {\n return migrateGridStateModel(this.gos.get(\"initialState\") ?? {});\n }\n getState() {\n if (this.staleStateKeys.size) {\n this.refreshStaleState();\n }\n return this.cachedState;\n }\n setupStateOnGridReady() {\n const stateUpdater = () => this.updateCachedState(\"sideBar\", this.getSideBarState());\n stateUpdater();\n this.addManagedEventListeners({\n toolPanelVisibleChanged: stateUpdater,\n sideBarUpdated: stateUpdater\n });\n }\n setupStateOnColumnsInitialised() {\n const initialState = this.getInitialState();\n this.setColumnState(initialState);\n this.setColumnGroupState(initialState);\n this.updateColumnState([\n \"aggregation\",\n \"columnOrder\",\n \"columnPinning\",\n \"columnSizing\",\n \"columnVisibility\",\n \"pivot\",\n \"pivot\",\n \"rowGroup\",\n \"sort\"\n ]);\n this.updateCachedState(\"columnGroup\", this.getColumnGroupState());\n const onUpdate = (state) => () => this.updateColumnState([state]);\n this.addManagedEventListeners({\n columnValueChanged: onUpdate(\"aggregation\"),\n columnMoved: onUpdate(\"columnOrder\"),\n columnPinned: onUpdate(\"columnPinning\"),\n columnResized: onUpdate(\"columnSizing\"),\n columnVisible: onUpdate(\"columnVisibility\"),\n columnPivotChanged: onUpdate(\"pivot\"),\n columnPivotModeChanged: onUpdate(\"pivot\"),\n columnRowGroupChanged: onUpdate(\"rowGroup\"),\n sortChanged: onUpdate(\"sort\"),\n newColumnsLoaded: () => this.updateColumnState([\n \"aggregation\",\n \"columnOrder\",\n \"columnPinning\",\n \"columnSizing\",\n \"columnVisibility\",\n \"pivot\",\n \"rowGroup\",\n \"sort\"\n ]),\n columnGroupOpened: () => this.updateCachedState(\"columnGroup\", this.getColumnGroupState())\n });\n }\n setupStateOnRowCountReady() {\n const {\n filter: filterState,\n rowGroupExpansion: rowGroupExpansionState,\n rowSelection: rowSelectionState,\n pagination: paginationState\n } = this.getInitialState();\n if (filterState) {\n this.setFilterState(filterState);\n }\n if (rowGroupExpansionState) {\n this.setRowGroupExpansionState(rowGroupExpansionState);\n }\n if (rowSelectionState) {\n this.setRowSelectionState(rowSelectionState);\n }\n if (paginationState) {\n this.setPaginationState(paginationState);\n }\n const updateCachedState = this.updateCachedState.bind(this);\n updateCachedState(\"filter\", this.getFilterState());\n updateCachedState(\"rowGroupExpansion\", this.getRowGroupExpansionState());\n updateCachedState(\"rowSelection\", this.getRowSelectionState());\n updateCachedState(\"pagination\", this.getPaginationState());\n const updateRowGroupExpansionState = () => {\n this.updateRowGroupExpansionStateTimer = 0;\n updateCachedState(\"rowGroupExpansion\", this.getRowGroupExpansionState());\n };\n this.addManagedEventListeners({\n filterChanged: () => updateCachedState(\"filter\", this.getFilterState()),\n rowGroupOpened: () => this.onRowGroupOpenedDebounced(),\n expandOrCollapseAll: updateRowGroupExpansionState,\n // `groupDefaultExpanded` updates expansion state without an expansion event\n columnRowGroupChanged: updateRowGroupExpansionState,\n rowDataUpdated: () => {\n if (this.gos.get(\"groupDefaultExpanded\") !== 0) {\n this.updateRowGroupExpansionStateTimer || (this.updateRowGroupExpansionStateTimer = setTimeout(updateRowGroupExpansionState));\n }\n },\n selectionChanged: () => {\n this.staleStateKeys.add(\"rowSelection\");\n this.onRowSelectedDebounced();\n },\n paginationChanged: (event) => {\n if (event.newPage || event.newPageSize) {\n updateCachedState(\"pagination\", this.getPaginationState());\n }\n }\n });\n }\n setupStateOnFirstDataRendered() {\n const {\n scroll: scrollState,\n cellSelection: cellSelectionState,\n focusedCell: focusedCellState,\n columnOrder: columnOrderState\n } = this.getInitialState();\n if (focusedCellState) {\n this.setFocusedCellState(focusedCellState);\n }\n if (cellSelectionState) {\n this.setCellSelectionState(cellSelectionState);\n }\n if (scrollState) {\n this.setScrollState(scrollState);\n }\n this.setColumnPivotState(!!columnOrderState?.orderedColIds);\n const updateCachedState = this.updateCachedState.bind(this);\n updateCachedState(\"sideBar\", this.getSideBarState());\n updateCachedState(\"focusedCell\", this.getFocusedCellState());\n const cellSelection = this.getRangeSelectionState();\n updateCachedState(\"rangeSelection\", cellSelection);\n updateCachedState(\"cellSelection\", cellSelection);\n updateCachedState(\"scroll\", this.getScrollState());\n this.addManagedEventListeners({\n cellFocused: () => updateCachedState(\"focusedCell\", this.getFocusedCellState()),\n cellSelectionChanged: (event) => {\n if (event.finished) {\n const cellSelection2 = this.getRangeSelectionState();\n updateCachedState(\"rangeSelection\", cellSelection2);\n updateCachedState(\"cellSelection\", cellSelection2);\n }\n },\n bodyScrollEnd: () => updateCachedState(\"scroll\", this.getScrollState())\n });\n }\n getColumnState() {\n const beans = this.beans;\n const pivotMode = beans.colModel.isPivotMode();\n const sortColumns = [];\n const groupColIds = [];\n const aggregationColumns = [];\n const pivotColIds = [];\n const leftColIds = [];\n const rightColIds = [];\n const hiddenColIds = [];\n const columnSizes = [];\n const columns = [];\n let defaultSortIndex = 0;\n const columnState = _getColumnState(beans);\n for (let i = 0; i < columnState.length; i++) {\n const {\n colId,\n sort,\n sortIndex,\n rowGroup,\n rowGroupIndex,\n aggFunc,\n pivot,\n pivotIndex,\n pinned,\n hide,\n width,\n flex\n } = columnState[i];\n columns.push(colId);\n if (sort) {\n sortColumns[sortIndex ?? defaultSortIndex++] = { colId, sort };\n }\n if (rowGroup) {\n groupColIds[rowGroupIndex ?? 0] = colId;\n }\n if (typeof aggFunc === \"string\") {\n aggregationColumns.push({ colId, aggFunc });\n }\n if (pivot) {\n pivotColIds[pivotIndex ?? 0] = colId;\n }\n if (pinned) {\n (pinned === \"right\" ? rightColIds : leftColIds).push(colId);\n }\n if (hide) {\n hiddenColIds.push(colId);\n }\n if (flex != null || width) {\n columnSizes.push({ colId, flex: flex ?? void 0, width });\n }\n }\n return {\n sort: sortColumns.length ? { sortModel: sortColumns } : void 0,\n rowGroup: groupColIds.length ? { groupColIds } : void 0,\n aggregation: aggregationColumns.length ? { aggregationModel: aggregationColumns } : void 0,\n pivot: pivotColIds.length || pivotMode ? { pivotMode, pivotColIds } : void 0,\n columnPinning: leftColIds.length || rightColIds.length ? { leftColIds, rightColIds } : void 0,\n columnVisibility: hiddenColIds.length ? { hiddenColIds } : void 0,\n columnSizing: columnSizes.length ? { columnSizingModel: columnSizes } : void 0,\n columnOrder: columns.length ? { orderedColIds: columns } : void 0\n };\n }\n setColumnState(initialState) {\n const {\n sort: sortState,\n rowGroup: groupState,\n aggregation: aggregationState,\n pivot: pivotState,\n columnPinning: columnPinningState,\n columnVisibility: columnVisibilityState,\n columnSizing: columnSizingState,\n columnOrder: columnOrderState,\n partialColumnState\n } = initialState;\n const columnStateMap = {};\n const getColumnState2 = (colId) => {\n let columnState = columnStateMap[colId];\n if (columnState) {\n return columnState;\n }\n columnState = { colId };\n columnStateMap[colId] = columnState;\n return columnState;\n };\n const defaultState = partialColumnState ? {} : {\n sort: null,\n sortIndex: null,\n rowGroup: null,\n rowGroupIndex: null,\n aggFunc: null,\n pivot: null,\n pivotIndex: null,\n pinned: null,\n hide: null,\n flex: null\n };\n if (sortState) {\n sortState.sortModel.forEach(({ colId, sort }, sortIndex) => {\n const columnState = getColumnState2(colId);\n columnState.sort = sort;\n columnState.sortIndex = sortIndex;\n });\n defaultState.sort = null;\n defaultState.sortIndex = null;\n }\n if (groupState) {\n groupState.groupColIds.forEach((colId, rowGroupIndex) => {\n const columnState = getColumnState2(colId);\n columnState.rowGroup = true;\n columnState.rowGroupIndex = rowGroupIndex;\n });\n defaultState.rowGroup = null;\n defaultState.rowGroupIndex = null;\n }\n if (aggregationState) {\n aggregationState.aggregationModel.forEach(({ colId, aggFunc }) => {\n getColumnState2(colId).aggFunc = aggFunc;\n });\n defaultState.aggFunc = null;\n }\n if (pivotState) {\n pivotState.pivotColIds.forEach((colId, pivotIndex) => {\n const columnState = getColumnState2(colId);\n columnState.pivot = true;\n columnState.pivotIndex = pivotIndex;\n });\n this.gos.updateGridOptions({\n options: { pivotMode: pivotState.pivotMode },\n source: \"gridInitializing\"\n });\n defaultState.pivot = null;\n defaultState.pivotIndex = null;\n }\n if (columnPinningState) {\n columnPinningState.leftColIds.forEach((colId) => {\n getColumnState2(colId).pinned = \"left\";\n });\n columnPinningState.rightColIds.forEach((colId) => {\n getColumnState2(colId).pinned = \"right\";\n });\n defaultState.pinned = null;\n }\n if (columnVisibilityState) {\n columnVisibilityState.hiddenColIds.forEach((colId) => {\n getColumnState2(colId).hide = true;\n });\n defaultState.hide = null;\n }\n if (columnSizingState) {\n columnSizingState.columnSizingModel.forEach(({ colId, flex, width }) => {\n const columnState = getColumnState2(colId);\n columnState.flex = flex ?? null;\n columnState.width = width;\n });\n defaultState.flex = null;\n }\n const columns = columnOrderState?.orderedColIds;\n const applyOrder = !!columns?.length;\n const columnStates = applyOrder ? columns.map((colId) => getColumnState2(colId)) : Object.values(columnStateMap);\n if (columnStates.length) {\n this.columnStates = columnStates;\n _applyColumnState(\n this.beans,\n {\n state: columnStates,\n applyOrder,\n defaultState\n },\n \"gridInitializing\"\n );\n }\n }\n setColumnPivotState(applyOrder) {\n const columnStates = this.columnStates;\n this.columnStates = void 0;\n const columnGroupStates = this.columnGroupStates;\n this.columnGroupStates = void 0;\n const beans = this.beans;\n const { pivotResultCols, colGroupSvc } = beans;\n if (!pivotResultCols?.isPivotResultColsPresent()) {\n return;\n }\n if (columnStates) {\n const secondaryColumnStates = [];\n for (const columnState of columnStates) {\n if (pivotResultCols.getPivotResultCol(columnState.colId)) {\n secondaryColumnStates.push(columnState);\n }\n }\n _applyColumnState(\n beans,\n {\n state: secondaryColumnStates,\n applyOrder\n },\n \"gridInitializing\"\n );\n }\n if (columnGroupStates) {\n colGroupSvc?.setColumnGroupState(columnGroupStates, \"gridInitializing\");\n }\n }\n getColumnGroupState() {\n const colGroupSvc = this.beans.colGroupSvc;\n if (!colGroupSvc) {\n return void 0;\n }\n const columnGroupState = colGroupSvc.getColumnGroupState();\n const openColumnGroups = [];\n columnGroupState.forEach(({ groupId, open }) => {\n if (open) {\n openColumnGroups.push(groupId);\n }\n });\n return openColumnGroups.length ? { openColumnGroupIds: openColumnGroups } : void 0;\n }\n setColumnGroupState(initialState) {\n const colGroupSvc = this.beans.colGroupSvc;\n if (!Object.prototype.hasOwnProperty.call(initialState, \"columnGroup\") || !colGroupSvc) {\n return;\n }\n const openColumnGroups = new Set(initialState.columnGroup?.openColumnGroupIds);\n const existingColumnGroupState = colGroupSvc.getColumnGroupState();\n const stateItems = existingColumnGroupState.map(({ groupId }) => {\n const open = openColumnGroups.has(groupId);\n if (open) {\n openColumnGroups.delete(groupId);\n }\n return {\n groupId,\n open\n };\n });\n openColumnGroups.forEach((groupId) => {\n stateItems.push({\n groupId,\n open: true\n });\n });\n if (stateItems.length) {\n this.columnGroupStates = stateItems;\n }\n colGroupSvc.setColumnGroupState(stateItems, \"gridInitializing\");\n }\n getFilterState() {\n const filterManager = this.beans.filterManager;\n let filterModel = filterManager?.getFilterModel();\n if (filterModel && Object.keys(filterModel).length === 0) {\n filterModel = void 0;\n }\n const advancedFilterModel = filterManager?.getAdvFilterModel() ?? void 0;\n return filterModel || advancedFilterModel ? { filterModel, advancedFilterModel } : void 0;\n }\n setFilterState(filterState) {\n const filterManager = this.beans.filterManager;\n const { filterModel, advancedFilterModel } = filterState ?? {};\n if (filterModel) {\n filterManager?.setFilterModel(filterModel, \"columnFilter\");\n }\n if (advancedFilterModel) {\n filterManager?.setAdvFilterModel(advancedFilterModel, \"advancedFilter\");\n }\n }\n getRangeSelectionState() {\n const cellRanges = this.beans.rangeSvc?.getCellRanges().map((cellRange) => {\n const { id, type, startRow, endRow, columns, startColumn } = cellRange;\n return {\n id,\n type,\n startRow,\n endRow,\n colIds: columns.map((column) => column.getColId()),\n startColId: startColumn.getColId()\n };\n });\n return cellRanges?.length ? { cellRanges } : void 0;\n }\n setCellSelectionState(cellSelectionState) {\n const { gos, rangeSvc, colModel, visibleCols } = this.beans;\n if (!_isCellSelectionEnabled(gos) || !rangeSvc) {\n return;\n }\n const cellRanges = [];\n cellSelectionState.cellRanges.forEach((cellRange) => {\n const columns = [];\n cellRange.colIds.forEach((colId) => {\n const column = colModel.getCol(colId);\n if (column) {\n columns.push(column);\n }\n });\n if (!columns.length) {\n return;\n }\n let startColumn = colModel.getCol(cellRange.startColId);\n if (!startColumn) {\n const allColumns = visibleCols.allCols;\n const columnSet = new Set(columns);\n startColumn = allColumns.find((column) => columnSet.has(column));\n }\n cellRanges.push({\n ...cellRange,\n columns,\n startColumn\n });\n });\n rangeSvc.setCellRanges(cellRanges);\n }\n getScrollState() {\n if (!this.isClientSideRowModel) {\n return void 0;\n }\n const scrollFeature = this.beans.ctrlsSvc.getScrollFeature();\n const { left } = scrollFeature?.getHScrollPosition() ?? { left: 0 };\n const { top } = scrollFeature?.getVScrollPosition() ?? { top: 0 };\n return top || left ? {\n top,\n left\n } : void 0;\n }\n setScrollState(scrollState) {\n if (!this.isClientSideRowModel) {\n return;\n }\n const { top, left } = scrollState;\n const { frameworkOverrides, rowRenderer, animationFrameSvc, ctrlsSvc } = this.beans;\n frameworkOverrides.wrapIncoming(() => {\n ctrlsSvc.get(\"center\").setCenterViewportScrollLeft(left);\n ctrlsSvc.getScrollFeature()?.setVerticalScrollPosition(top);\n rowRenderer.redraw({ afterScroll: true });\n animationFrameSvc?.flushAllFrames();\n });\n }\n getSideBarState() {\n return this.beans.sideBar?.comp?.getState();\n }\n getFocusedCellState() {\n if (!this.isClientSideRowModel) {\n return void 0;\n }\n const focusedCell = this.beans.focusSvc.getFocusedCell();\n if (focusedCell) {\n const { column, rowIndex, rowPinned } = focusedCell;\n return {\n colId: column.getColId(),\n rowIndex,\n rowPinned\n };\n }\n return void 0;\n }\n setFocusedCellState(focusedCellState) {\n if (!this.isClientSideRowModel) {\n return;\n }\n const { colId, rowIndex, rowPinned } = focusedCellState;\n const { focusSvc, colModel } = this.beans;\n focusSvc.setFocusedCell({\n column: colModel.getCol(colId),\n rowIndex,\n rowPinned,\n forceBrowserFocus: true,\n preventScrollOnBrowserFocus: true\n });\n }\n getPaginationState() {\n const { pagination, gos } = this.beans;\n if (!pagination) {\n return void 0;\n }\n const page = pagination.getCurrentPage();\n const pageSize = !gos.get(\"paginationAutoPageSize\") ? pagination.getPageSize() : void 0;\n if (!page && !pageSize) {\n return;\n }\n return { page, pageSize };\n }\n setPaginationState(paginationState) {\n const { pagination, gos } = this.beans;\n if (!pagination) {\n return;\n }\n if (paginationState.pageSize && !gos.get(\"paginationAutoPageSize\")) {\n pagination.setPageSize(paginationState.pageSize, \"initialState\");\n }\n if (typeof paginationState.page === \"number\") {\n pagination.setPage(paginationState.page);\n }\n }\n getRowSelectionState() {\n const selectionSvc = this.beans.selectionSvc;\n if (!selectionSvc) {\n return void 0;\n }\n const selectionState = selectionSvc.getSelectionState();\n const noSelections = !selectionState || !Array.isArray(selectionState) && (selectionState.selectAll === false || selectionState.selectAllChildren === false) && !selectionState?.toggledNodes?.length;\n return noSelections ? void 0 : selectionState;\n }\n setRowSelectionState(rowSelectionState) {\n this.beans.selectionSvc?.setSelectionState(rowSelectionState, \"gridInitializing\");\n }\n getRowGroupExpansionState() {\n const { expansionSvc, rowModel } = this.beans;\n if (!expansionSvc) {\n return void 0;\n }\n const expandedRowGroups = [];\n rowModel.forEachNode(({ expanded, id }) => {\n if (expanded && id) {\n expandedRowGroups.push(id);\n }\n });\n return expandedRowGroups.length ? {\n expandedRowGroupIds: expandedRowGroups\n } : void 0;\n }\n setRowGroupExpansionState(rowGroupExpansionState) {\n this.beans.expansionSvc?.expandRows(rowGroupExpansionState.expandedRowGroupIds);\n }\n updateColumnState(features) {\n const newColumnState = this.getColumnState();\n let hasChanged = false;\n const cachedState = this.cachedState;\n for (const key of Object.keys(newColumnState)) {\n const value = newColumnState[key];\n if (!_jsonEquals(value, cachedState[key])) {\n hasChanged = true;\n }\n }\n this.cachedState = {\n ...cachedState,\n ...newColumnState\n };\n if (hasChanged) {\n this.dispatchStateUpdateEvent(features);\n }\n }\n updateCachedState(key, value) {\n const existingValue = this.cachedState[key];\n this.setCachedStateValue(key, value);\n if (!_jsonEquals(value, existingValue)) {\n this.dispatchStateUpdateEvent([key]);\n }\n }\n setCachedStateValue(key, value) {\n this.cachedState = {\n ...this.cachedState,\n [key]: value\n };\n }\n refreshStaleState() {\n const staleStateKeys = this.staleStateKeys;\n staleStateKeys.forEach((key) => {\n switch (key) {\n case \"rowSelection\":\n this.setCachedStateValue(key, this.getRowSelectionState());\n break;\n }\n });\n staleStateKeys.clear();\n }\n dispatchStateUpdateEvent(sources) {\n if (this.suppressEvents) {\n return;\n }\n sources.forEach((source) => this.queuedUpdateSources.add(source));\n this.dispatchStateUpdateEventDebounced();\n }\n dispatchQueuedStateUpdateEvents() {\n const queuedUpdateSources = this.queuedUpdateSources;\n const sources = Array.from(queuedUpdateSources);\n queuedUpdateSources.clear();\n this.eventSvc.dispatchEvent({\n type: \"stateUpdated\",\n sources,\n state: this.cachedState\n });\n }\n suppressEventsAndDispatchInitEvent(updateFunc) {\n this.suppressEvents = true;\n const colAnimation = this.beans.colAnimation;\n colAnimation?.setSuppressAnimation(true);\n updateFunc();\n setTimeout(() => {\n this.suppressEvents = false;\n this.queuedUpdateSources.clear();\n if (!this.isAlive()) {\n return;\n }\n colAnimation?.setSuppressAnimation(false);\n this.dispatchStateUpdateEvent([\"gridInitializing\"]);\n });\n }\n};\n\n// packages/ag-grid-community/src/misc/state/stateModule.ts\nvar GridStateModule = {\n moduleName: \"GridState\",\n version: VERSION,\n beans: [StateService],\n apiFunctions: {\n getState\n }\n};\n\n// packages/ag-grid-community/src/pagination/paginationApi.ts\nfunction paginationIsLastPageFound(beans) {\n return beans.rowModel.isLastRowIndexKnown();\n}\nfunction paginationGetPageSize(beans) {\n return beans.pagination?.getPageSize() ?? 100;\n}\nfunction paginationGetCurrentPage(beans) {\n return beans.pagination?.getCurrentPage() ?? 0;\n}\nfunction paginationGetTotalPages(beans) {\n return beans.pagination?.getTotalPages() ?? 1;\n}\nfunction paginationGetRowCount(beans) {\n return beans.pagination ? beans.pagination.getMasterRowCount() : beans.rowModel.getRowCount();\n}\nfunction paginationGoToNextPage(beans) {\n beans.pagination?.goToNextPage();\n}\nfunction paginationGoToPreviousPage(beans) {\n beans.pagination?.goToPreviousPage();\n}\nfunction paginationGoToFirstPage(beans) {\n beans.pagination?.goToFirstPage();\n}\nfunction paginationGoToLastPage(beans) {\n beans.pagination?.goToLastPage();\n}\nfunction paginationGoToPage(beans, page) {\n beans.pagination?.goToPage(page);\n}\n\n// packages/ag-grid-community/src/pagination/paginationAutoPageSizeService.ts\nvar PaginationAutoPageSizeService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"paginationAutoPageSizeSvc\";\n }\n postConstruct() {\n this.beans.ctrlsSvc.whenReady(this, (p) => {\n this.centerRowsCtrl = p.center;\n const listener = this.checkPageSize.bind(this);\n this.addManagedEventListeners({\n bodyHeightChanged: listener,\n scrollVisibilityChanged: listener\n });\n this.addManagedPropertyListener(\"paginationAutoPageSize\", this.onPaginationAutoSizeChanged.bind(this));\n this.checkPageSize();\n });\n }\n notActive() {\n return !this.gos.get(\"paginationAutoPageSize\") || this.centerRowsCtrl == null;\n }\n onPaginationAutoSizeChanged() {\n if (this.notActive()) {\n this.beans.pagination.unsetAutoCalculatedPageSize();\n } else {\n this.checkPageSize();\n }\n }\n checkPageSize() {\n if (this.notActive()) {\n return;\n }\n const bodyHeight = this.centerRowsCtrl.viewportSizeFeature.getBodyHeight();\n if (bodyHeight > 0) {\n const beans = this.beans;\n const update = () => {\n const rowHeight = Math.max(_getRowHeightAsNumber(beans), 1);\n const newPageSize = Math.floor(bodyHeight / rowHeight);\n beans.pagination.setPageSize(newPageSize, \"autoCalculated\");\n };\n if (!this.isBodyRendered) {\n update();\n this.isBodyRendered = true;\n } else {\n _debounce(this, update, 50)();\n }\n } else {\n this.isBodyRendered = false;\n }\n }\n};\n\n// packages/ag-grid-community/src/pagination/pageSizeSelector/pageSizeSelectorComp.ts\nvar paginationPageSizeSelector = \"paginationPageSizeSelector\";\nvar PageSizeSelectorCompElement = { tag: \"span\", cls: \"ag-paging-page-size\" };\nvar PageSizeSelectorComp = class extends Component {\n constructor() {\n super(PageSizeSelectorCompElement);\n this.hasEmptyOption = false;\n this.handlePageSizeItemSelected = () => {\n if (!this.selectPageSizeComp) {\n return;\n }\n const newValue = this.selectPageSizeComp.getValue();\n if (!newValue) {\n return;\n }\n const paginationPageSize = Number(newValue);\n if (isNaN(paginationPageSize) || paginationPageSize < 1 || paginationPageSize === this.pagination.getPageSize()) {\n return;\n }\n this.pagination.setPageSize(paginationPageSize, \"pageSizeSelector\");\n if (this.hasEmptyOption) {\n this.toggleSelectDisplay(true);\n }\n this.selectPageSizeComp.getFocusableElement().focus();\n };\n }\n wireBeans(beans) {\n this.pagination = beans.pagination;\n }\n postConstruct() {\n this.addManagedPropertyListener(paginationPageSizeSelector, () => {\n this.onPageSizeSelectorValuesChange();\n });\n this.addManagedEventListeners({ paginationChanged: (event) => this.handlePaginationChanged(event) });\n }\n handlePaginationChanged(paginationChangedEvent) {\n if (!this.selectPageSizeComp || !paginationChangedEvent?.newPageSize) {\n return;\n }\n const paginationPageSize = this.pagination.getPageSize();\n if (this.getPageSizeSelectorValues().includes(paginationPageSize)) {\n this.selectPageSizeComp.setValue(paginationPageSize.toString());\n } else {\n if (this.hasEmptyOption) {\n this.selectPageSizeComp.setValue(\"\");\n } else {\n this.toggleSelectDisplay(true);\n }\n }\n }\n toggleSelectDisplay(show) {\n if (this.selectPageSizeComp && !show) {\n this.reset();\n }\n if (!show) {\n return;\n }\n this.reloadPageSizesSelector();\n if (!this.selectPageSizeComp) {\n return;\n }\n }\n reset() {\n _clearElement(this.getGui());\n if (!this.selectPageSizeComp) {\n return;\n }\n this.selectPageSizeComp = this.destroyBean(this.selectPageSizeComp);\n }\n onPageSizeSelectorValuesChange() {\n if (!this.selectPageSizeComp) {\n return;\n }\n if (this.shouldShowPageSizeSelector()) {\n this.reloadPageSizesSelector();\n }\n }\n shouldShowPageSizeSelector() {\n return this.gos.get(\"pagination\") && !this.gos.get(\"suppressPaginationPanel\") && !this.gos.get(\"paginationAutoPageSize\") && this.gos.get(paginationPageSizeSelector) !== false;\n }\n reloadPageSizesSelector() {\n const pageSizeOptions = this.getPageSizeSelectorValues();\n const paginationPageSizeOption = this.pagination.getPageSize();\n const shouldAddAndSelectEmptyOption = !paginationPageSizeOption || !pageSizeOptions.includes(paginationPageSizeOption);\n if (shouldAddAndSelectEmptyOption) {\n const pageSizeSet = this.gos.exists(\"paginationPageSize\");\n const pageSizesSet = this.gos.get(paginationPageSizeSelector) !== true;\n _warn(94, { pageSizeSet, pageSizesSet, pageSizeOptions, paginationPageSizeOption });\n if (!pageSizesSet) {\n _warn(95, { paginationPageSizeOption, paginationPageSizeSelector });\n }\n pageSizeOptions.unshift(\"\");\n }\n const value = String(shouldAddAndSelectEmptyOption ? \"\" : paginationPageSizeOption);\n if (this.selectPageSizeComp) {\n if (!_areEqual(this.pageSizeOptions, pageSizeOptions)) {\n this.selectPageSizeComp.clearOptions().addOptions(this.createPageSizeSelectOptions(pageSizeOptions));\n this.pageSizeOptions = pageSizeOptions;\n }\n this.selectPageSizeComp.setValue(value, true);\n } else {\n this.createPageSizeSelectorComp(pageSizeOptions, value);\n }\n this.hasEmptyOption = shouldAddAndSelectEmptyOption;\n }\n createPageSizeSelectOptions(pageSizeOptions) {\n return pageSizeOptions.map((value) => ({\n value: String(value)\n }));\n }\n createPageSizeSelectorComp(pageSizeOptions, value) {\n const localeTextFunc = this.getLocaleTextFunc();\n const localisedLabel = localeTextFunc(\"pageSizeSelectorLabel\", \"Page Size:\");\n const localisedAriaLabel = localeTextFunc(\"ariaPageSizeSelectorLabel\", \"Page Size\");\n this.selectPageSizeComp = this.createManagedBean(new AgSelect()).addOptions(this.createPageSizeSelectOptions(pageSizeOptions)).setValue(value).setAriaLabel(localisedAriaLabel).setLabel(localisedLabel).onValueChange(() => this.handlePageSizeItemSelected());\n this.appendChild(this.selectPageSizeComp);\n }\n getPageSizeSelectorValues() {\n const defaultValues = [20, 50, 100];\n const paginationPageSizeSelectorValues = this.gos.get(paginationPageSizeSelector);\n if (!Array.isArray(paginationPageSizeSelectorValues) || !paginationPageSizeSelectorValues?.length) {\n return defaultValues;\n }\n return [...paginationPageSizeSelectorValues].sort((a, b) => a - b);\n }\n destroy() {\n this.toggleSelectDisplay(false);\n super.destroy();\n }\n};\nvar PageSizeSelectorSelector = {\n selector: \"AG-PAGE-SIZE-SELECTOR\",\n component: PageSizeSelectorComp\n};\n\n// packages/ag-grid-community/src/pagination/paginationComp.css-GENERATED.ts\nvar paginationCompCSS = (\n /*css*/\n `.ag-paging-panel{align-items:center;border-top:var(--ag-footer-row-border);display:flex;gap:calc(var(--ag-spacing)*4);height:max(var(--ag-row-height),22px);justify-content:flex-end;padding:0 var(--ag-cell-horizontal-padding)}:where(.ag-paging-page-size) .ag-wrapper{min-width:50px}.ag-paging-page-summary-panel{align-items:center;display:flex;gap:var(--ag-cell-widget-spacing);.ag-disabled &{pointer-events:none}}.ag-paging-button{cursor:pointer;position:relative;&.ag-disabled{cursor:default;opacity:.5}}.ag-paging-number,.ag-paging-row-summary-panel-number{font-weight:500}`\n);\n\n// packages/ag-grid-community/src/pagination/paginationComp.ts\nvar PaginationComp = class extends TabGuardComp {\n constructor() {\n super();\n this.btFirst = RefPlaceholder;\n this.btPrevious = RefPlaceholder;\n this.btNext = RefPlaceholder;\n this.btLast = RefPlaceholder;\n this.lbRecordCount = RefPlaceholder;\n this.lbFirstRowOnPage = RefPlaceholder;\n this.lbLastRowOnPage = RefPlaceholder;\n this.lbCurrent = RefPlaceholder;\n this.lbTotal = RefPlaceholder;\n this.pageSizeComp = RefPlaceholder;\n this.previousAndFirstButtonsDisabled = false;\n this.nextButtonDisabled = false;\n this.lastButtonDisabled = false;\n this.areListenersSetup = false;\n this.allowFocusInnerElement = false;\n this.registerCSS(paginationCompCSS);\n }\n wireBeans(beans) {\n this.rowModel = beans.rowModel;\n this.pagination = beans.pagination;\n this.ariaAnnounce = beans.ariaAnnounce;\n }\n postConstruct() {\n const isRtl = this.gos.get(\"enableRtl\");\n this.setTemplate(this.getTemplate(), [PageSizeSelectorSelector]);\n const { btFirst, btPrevious, btNext, btLast } = this;\n this.activateTabIndex([btFirst, btPrevious, btNext, btLast]);\n btFirst.insertAdjacentElement(\"afterbegin\", _createIconNoSpan(isRtl ? \"last\" : \"first\", this.beans));\n btPrevious.insertAdjacentElement(\"afterbegin\", _createIconNoSpan(isRtl ? \"next\" : \"previous\", this.beans));\n btNext.insertAdjacentElement(\"afterbegin\", _createIconNoSpan(isRtl ? \"previous\" : \"next\", this.beans));\n btLast.insertAdjacentElement(\"afterbegin\", _createIconNoSpan(isRtl ? \"first\" : \"last\", this.beans));\n this.addManagedPropertyListener(\"pagination\", this.onPaginationChanged.bind(this));\n this.addManagedPropertyListener(\"suppressPaginationPanel\", this.onPaginationChanged.bind(this));\n this.addManagedPropertyListeners(\n [\"paginationPageSizeSelector\", \"paginationAutoPageSize\", \"suppressPaginationPanel\"],\n () => this.onPageSizeRelatedOptionsChange()\n );\n this.pageSizeComp.toggleSelectDisplay(this.pageSizeComp.shouldShowPageSizeSelector());\n this.initialiseTabGuard({\n // prevent tab guard default logic\n onTabKeyDown: () => {\n },\n focusInnerElement: (fromBottom) => {\n if (this.allowFocusInnerElement) {\n return this.tabGuardFeature.getTabGuardCtrl().focusInnerElement(fromBottom);\n } else {\n return _focusGridInnerElement(this.beans, fromBottom);\n }\n },\n forceFocusOutWhenTabGuardsAreEmpty: true\n });\n this.onPaginationChanged();\n }\n setAllowFocus(allowFocus) {\n this.allowFocusInnerElement = allowFocus;\n }\n onPaginationChanged() {\n const isPaging = this.gos.get(\"pagination\");\n const paginationPanelEnabled = isPaging && !this.gos.get(\"suppressPaginationPanel\");\n this.setDisplayed(paginationPanelEnabled);\n if (!paginationPanelEnabled) {\n return;\n }\n this.setupListeners();\n this.enableOrDisableButtons();\n this.updateLabels();\n this.onPageSizeRelatedOptionsChange();\n }\n onPageSizeRelatedOptionsChange() {\n this.pageSizeComp.toggleSelectDisplay(this.pageSizeComp.shouldShowPageSizeSelector());\n }\n setupListeners() {\n if (!this.areListenersSetup) {\n this.addManagedEventListeners({ paginationChanged: this.onPaginationChanged.bind(this) });\n [\n { el: this.btFirst, fn: this.onBtFirst.bind(this) },\n { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },\n { el: this.btNext, fn: this.onBtNext.bind(this) },\n { el: this.btLast, fn: this.onBtLast.bind(this) }\n ].forEach((item) => {\n const { el, fn } = item;\n this.addManagedListeners(el, {\n click: fn,\n keydown: (e) => {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n fn();\n }\n }\n });\n });\n _addFocusableContainerListener(this.beans, this, this.getGui());\n this.areListenersSetup = true;\n }\n }\n onBtFirst() {\n if (!this.previousAndFirstButtonsDisabled) {\n this.pagination.goToFirstPage();\n }\n }\n formatNumber(value) {\n const userFunc = this.gos.getCallback(\"paginationNumberFormatter\");\n if (userFunc) {\n const params = { value };\n return userFunc(params);\n }\n return _formatNumberCommas(value, this.getLocaleTextFunc.bind(this));\n }\n getTemplate() {\n const localeTextFunc = this.getLocaleTextFunc();\n const idPrefix = `ag-${this.getCompId()}`;\n return {\n tag: \"div\",\n cls: \"ag-paging-panel ag-unselectable\",\n attrs: { id: `${idPrefix}` },\n children: [\n {\n tag: \"ag-page-size-selector\",\n ref: \"pageSizeComp\"\n },\n {\n tag: \"span\",\n cls: \"ag-paging-row-summary-panel\",\n children: [\n {\n tag: \"span\",\n ref: \"lbFirstRowOnPage\",\n cls: \"ag-paging-row-summary-panel-number\",\n attrs: { id: `${idPrefix}-first-row` }\n },\n { tag: \"span\", attrs: { id: `${idPrefix}-to` }, children: localeTextFunc(\"to\", \"to\") },\n {\n tag: \"span\",\n ref: \"lbLastRowOnPage\",\n cls: \"ag-paging-row-summary-panel-number\",\n attrs: { id: `${idPrefix}-last-row` }\n },\n { tag: \"span\", attrs: { id: `${idPrefix}-of` }, children: localeTextFunc(\"of\", \"of\") },\n {\n tag: \"span\",\n ref: \"lbRecordCount\",\n cls: \"ag-paging-row-summary-panel-number\",\n attrs: { id: `${idPrefix}-row-count` }\n }\n ]\n },\n {\n tag: \"span\",\n cls: \"ag-paging-page-summary-panel\",\n role: \"presentation\",\n children: [\n {\n tag: \"div\",\n ref: \"btFirst\",\n cls: \"ag-button ag-paging-button\",\n role: \"button\",\n attrs: { \"aria-label\": localeTextFunc(\"firstPage\", \"First Page\") }\n },\n {\n tag: \"div\",\n ref: \"btPrevious\",\n cls: \"ag-button ag-paging-button\",\n role: \"button\",\n attrs: { \"aria-label\": localeTextFunc(\"previousPage\", \"Previous Page\") }\n },\n {\n tag: \"span\",\n cls: \"ag-paging-description\",\n children: [\n {\n tag: \"span\",\n attrs: {\n id: `${idPrefix}-start-page`\n },\n children: localeTextFunc(\"page\", \"Page\")\n },\n {\n tag: \"span\",\n ref: \"lbCurrent\",\n cls: \"ag-paging-number\",\n attrs: { id: `${idPrefix}-start-page-number` }\n },\n {\n tag: \"span\",\n attrs: {\n id: `${idPrefix}-of-page`\n },\n children: localeTextFunc(\"of\", \"of\")\n },\n {\n tag: \"span\",\n ref: \"lbTotal\",\n cls: \"ag-paging-number\",\n attrs: { id: `${idPrefix}-of-page-number` }\n }\n ]\n },\n {\n tag: \"div\",\n ref: \"btNext\",\n cls: \"ag-button ag-paging-button\",\n role: \"button\",\n attrs: { \"aria-label\": localeTextFunc(\"nextPage\", \"Next Page\") }\n },\n {\n tag: \"div\",\n ref: \"btLast\",\n cls: \"ag-button ag-paging-button\",\n role: \"button\",\n attrs: { \"aria-label\": localeTextFunc(\"lastPage\", \"Last Page\") }\n }\n ]\n }\n ]\n };\n }\n onBtNext() {\n if (!this.nextButtonDisabled) {\n this.pagination.goToNextPage();\n }\n }\n onBtPrevious() {\n if (!this.previousAndFirstButtonsDisabled) {\n this.pagination.goToPreviousPage();\n }\n }\n onBtLast() {\n if (!this.lastButtonDisabled) {\n this.pagination.goToLastPage();\n }\n }\n enableOrDisableButtons() {\n const currentPage = this.pagination.getCurrentPage();\n const maxRowFound = this.rowModel.isLastRowIndexKnown();\n const totalPages = this.pagination.getTotalPages();\n this.previousAndFirstButtonsDisabled = currentPage === 0;\n this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);\n this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);\n const zeroPagesToDisplay = this.isZeroPagesToDisplay();\n const onLastPage = currentPage === totalPages - 1;\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === totalPages - 1;\n this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);\n this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);\n }\n toggleButtonDisabled(button, disabled) {\n _setAriaDisabled(button, disabled);\n button.classList.toggle(\"ag-disabled\", disabled);\n }\n isZeroPagesToDisplay() {\n const maxRowFound = this.rowModel.isLastRowIndexKnown();\n const totalPages = this.pagination.getTotalPages();\n return maxRowFound && totalPages === 0;\n }\n updateLabels() {\n const lastPageFound = this.rowModel.isLastRowIndexKnown();\n const totalPages = this.pagination.getTotalPages();\n const masterRowCount = this.pagination.getMasterRowCount();\n const rowCount = lastPageFound ? masterRowCount : null;\n const currentPage = this.pagination.getCurrentPage();\n const pageSize = this.pagination.getPageSize();\n let startRow;\n let endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = endRow = 0;\n } else {\n startRow = pageSize * currentPage + 1;\n endRow = startRow + pageSize - 1;\n if (lastPageFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n const theoreticalEndRow = startRow + pageSize - 1;\n const isLoadingPageSize = !lastPageFound && masterRowCount < theoreticalEndRow;\n const lbFirstRowOnPage = this.formatNumber(startRow);\n this.lbFirstRowOnPage.textContent = lbFirstRowOnPage;\n let lbLastRowOnPage;\n const localeTextFunc = this.getLocaleTextFunc();\n if (isLoadingPageSize) {\n lbLastRowOnPage = localeTextFunc(\"pageLastRowUnknown\", \"?\");\n } else {\n lbLastRowOnPage = this.formatNumber(endRow);\n }\n this.lbLastRowOnPage.textContent = lbLastRowOnPage;\n const pagesExist = totalPages > 0;\n const toDisplay = pagesExist ? currentPage + 1 : 0;\n const lbCurrent = this.formatNumber(toDisplay);\n this.lbCurrent.textContent = lbCurrent;\n let lbTotal;\n let lbRecordCount;\n if (lastPageFound) {\n lbTotal = this.formatNumber(totalPages);\n lbRecordCount = this.formatNumber(rowCount);\n } else {\n const moreText = localeTextFunc(\"more\", \"more\");\n lbTotal = moreText;\n lbRecordCount = moreText;\n }\n this.lbTotal.textContent = lbTotal;\n this.lbRecordCount.textContent = lbRecordCount;\n this.announceAriaStatus(lbFirstRowOnPage, lbLastRowOnPage, lbRecordCount, lbCurrent, lbTotal);\n }\n announceAriaStatus(lbFirstRowOnPage, lbLastRowOnPage, lbRecordCount, lbCurrent, lbTotal) {\n const localeTextFunc = this.getLocaleTextFunc();\n const strPage = localeTextFunc(\"page\", \"Page\");\n const strTo = localeTextFunc(\"to\", \"to\");\n const strOf = localeTextFunc(\"of\", \"of\");\n const ariaRowStatus = `${lbFirstRowOnPage} ${strTo} ${lbLastRowOnPage} ${strOf} ${lbRecordCount}`;\n const ariaPageStatus = `${strPage} ${lbCurrent} ${strOf} ${lbTotal}`;\n if (ariaRowStatus !== this.ariaRowStatus) {\n this.ariaRowStatus = ariaRowStatus;\n this.ariaAnnounce?.announceValue(ariaRowStatus, \"paginationRow\");\n }\n if (ariaPageStatus !== this.ariaPageStatus) {\n this.ariaPageStatus = ariaPageStatus;\n this.ariaAnnounce?.announceValue(ariaPageStatus, \"paginationPage\");\n }\n }\n setTotalLabelsToZero() {\n const strZero = this.formatNumber(0);\n this.lbFirstRowOnPage.textContent = strZero;\n this.lbCurrent.textContent = strZero;\n this.lbLastRowOnPage.textContent = strZero;\n this.lbTotal.textContent = strZero;\n this.lbRecordCount.textContent = strZero;\n this.announceAriaStatus(strZero, strZero, strZero, strZero, strZero);\n }\n};\nvar PaginationSelector = {\n selector: \"AG-PAGINATION\",\n component: PaginationComp\n};\n\n// packages/ag-grid-community/src/pagination/paginationService.ts\nvar PaginationService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"pagination\";\n this.currentPage = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = 0;\n this.masterRowCount = 0;\n }\n postConstruct() {\n const gos = this.gos;\n this.active = gos.get(\"pagination\");\n this.pageSizeFromGridOptions = gos.get(\"paginationPageSize\");\n this.paginateChildRows = this.isPaginateChildRows();\n this.addManagedPropertyListener(\"pagination\", this.onPaginationGridOptionChanged.bind(this));\n this.addManagedPropertyListener(\"paginationPageSize\", this.onPageSizeGridOptionChanged.bind(this));\n }\n getPaginationSelector() {\n return PaginationSelector;\n }\n isPaginateChildRows() {\n const gos = this.gos;\n const shouldPaginate = gos.get(\"groupHideParentOfSingleChild\") || // following two properties deprecated v32.3.0\n gos.get(\"groupRemoveSingleChildren\") || gos.get(\"groupRemoveLowestSingleChildren\");\n if (shouldPaginate) {\n return true;\n }\n return gos.get(\"paginateChildRows\");\n }\n onPaginationGridOptionChanged() {\n this.active = this.gos.get(\"pagination\");\n this.calculatePages();\n this.dispatchPaginationChangedEvent({ keepRenderedRows: true });\n }\n onPageSizeGridOptionChanged() {\n this.setPageSize(this.gos.get(\"paginationPageSize\"), \"gridOptions\");\n }\n goToPage(page) {\n const currentPage = this.currentPage;\n if (!this.active || currentPage === page || typeof currentPage !== \"number\") {\n return;\n }\n this.currentPage = page;\n this.calculatePages();\n this.dispatchPaginationChangedEvent({ newPage: true });\n }\n goToPageWithIndex(index) {\n if (!this.active) {\n return;\n }\n let adjustedIndex = index;\n if (!this.paginateChildRows) {\n adjustedIndex = this.beans.rowModel.getTopLevelIndexFromDisplayedIndex?.(index) ?? index;\n }\n this.goToPage(Math.floor(adjustedIndex / this.pageSize));\n }\n isRowInPage(rowIndex) {\n if (!this.active) {\n return true;\n }\n return rowIndex >= this.topDisplayedRowIndex && rowIndex <= this.bottomDisplayedRowIndex;\n }\n getCurrentPage() {\n return this.currentPage;\n }\n goToNextPage() {\n this.goToPage(this.currentPage + 1);\n }\n goToPreviousPage() {\n this.goToPage(this.currentPage - 1);\n }\n goToFirstPage() {\n this.goToPage(0);\n }\n goToLastPage() {\n const rowCount = this.beans.rowModel.getRowCount();\n const lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n }\n getPageSize() {\n return this.pageSize;\n }\n getTotalPages() {\n return this.totalPages;\n }\n /** This is only for state setting before data has been loaded */\n setPage(page) {\n this.currentPage = page;\n }\n get pageSize() {\n if (_exists(this.pageSizeAutoCalculated) && this.gos.get(\"paginationAutoPageSize\")) {\n return this.pageSizeAutoCalculated;\n }\n if (_exists(this.pageSizeFromPageSizeSelector)) {\n return this.pageSizeFromPageSizeSelector;\n }\n if (_exists(this.pageSizeFromInitialState)) {\n return this.pageSizeFromInitialState;\n }\n if (_exists(this.pageSizeFromGridOptions)) {\n return this.pageSizeFromGridOptions;\n }\n return this.defaultPageSize;\n }\n calculatePages() {\n if (this.active) {\n if (this.paginateChildRows) {\n this.calculatePagesAllRows();\n } else {\n this.calculatePagesMasterRowsOnly();\n }\n } else {\n this.calculatedPagesNotActive();\n }\n this.beans.pageBounds.calculateBounds(this.topDisplayedRowIndex, this.bottomDisplayedRowIndex);\n }\n unsetAutoCalculatedPageSize() {\n if (this.pageSizeAutoCalculated === void 0) {\n return;\n }\n const oldPageSize = this.pageSizeAutoCalculated;\n this.pageSizeAutoCalculated = void 0;\n if (this.pageSize === oldPageSize) {\n return;\n }\n this.calculatePages();\n this.dispatchPaginationChangedEvent({ newPageSize: true });\n }\n setPageSize(size, source) {\n const currentSize = this.pageSize;\n switch (source) {\n case \"autoCalculated\":\n this.pageSizeAutoCalculated = size;\n break;\n case \"pageSizeSelector\":\n this.pageSizeFromPageSizeSelector = size;\n if (this.currentPage !== 0) {\n this.goToFirstPage();\n }\n break;\n case \"initialState\":\n this.pageSizeFromInitialState = size;\n break;\n case \"gridOptions\":\n this.pageSizeFromGridOptions = size;\n this.pageSizeFromInitialState = void 0;\n this.pageSizeFromPageSizeSelector = void 0;\n if (this.currentPage !== 0) {\n this.goToFirstPage();\n }\n break;\n }\n if (currentSize !== this.pageSize) {\n this.calculatePages();\n this.dispatchPaginationChangedEvent({ newPageSize: true, keepRenderedRows: true });\n }\n }\n setZeroRows() {\n this.masterRowCount = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = -1;\n this.currentPage = 0;\n this.totalPages = 0;\n }\n adjustCurrentPageIfInvalid() {\n const totalPages = this.totalPages;\n if (this.currentPage >= totalPages) {\n this.currentPage = totalPages - 1;\n }\n const currentPage = this.currentPage;\n if (!isFinite(currentPage) || isNaN(currentPage) || currentPage < 0) {\n this.currentPage = 0;\n }\n }\n calculatePagesMasterRowsOnly() {\n const rowModel = this.beans.rowModel;\n const masterRowCount = rowModel.getTopLevelRowCount();\n this.masterRowCount = masterRowCount;\n if (masterRowCount <= 0) {\n this.setZeroRows();\n return;\n }\n const pageSize = this.pageSize;\n const masterLastRowIndex = masterRowCount - 1;\n this.totalPages = Math.floor(masterLastRowIndex / pageSize) + 1;\n this.adjustCurrentPageIfInvalid();\n const currentPage = this.currentPage;\n const masterPageStartIndex = pageSize * currentPage;\n let masterPageEndIndex = pageSize * (currentPage + 1) - 1;\n if (masterPageEndIndex > masterLastRowIndex) {\n masterPageEndIndex = masterLastRowIndex;\n }\n this.topDisplayedRowIndex = rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);\n if (masterPageEndIndex === masterLastRowIndex) {\n this.bottomDisplayedRowIndex = rowModel.getRowCount() - 1;\n } else {\n const firstIndexNotToShow = rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);\n this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;\n }\n }\n getMasterRowCount() {\n return this.masterRowCount;\n }\n calculatePagesAllRows() {\n const masterRowCount = this.beans.rowModel.getRowCount();\n this.masterRowCount = masterRowCount;\n if (masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n const { pageSize, currentPage } = this;\n const maxRowIndex = masterRowCount - 1;\n this.totalPages = Math.floor(maxRowIndex / pageSize) + 1;\n this.adjustCurrentPageIfInvalid();\n this.topDisplayedRowIndex = pageSize * currentPage;\n this.bottomDisplayedRowIndex = pageSize * (currentPage + 1) - 1;\n if (this.bottomDisplayedRowIndex > maxRowIndex) {\n this.bottomDisplayedRowIndex = maxRowIndex;\n }\n }\n calculatedPagesNotActive() {\n this.setPageSize(void 0, \"autoCalculated\");\n this.totalPages = 1;\n this.currentPage = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = this.beans.rowModel.getRowCount() - 1;\n }\n dispatchPaginationChangedEvent(params) {\n const { keepRenderedRows = false, newPage = false, newPageSize = false } = params;\n this.eventSvc.dispatchEvent({\n type: \"paginationChanged\",\n animate: false,\n newData: false,\n newPage,\n newPageSize,\n keepRenderedRows\n });\n }\n};\n\n// packages/ag-grid-community/src/pagination/paginationModule.ts\nvar PaginationModule = {\n moduleName: \"Pagination\",\n version: VERSION,\n beans: [PaginationService, PaginationAutoPageSizeService],\n icons: {\n // \"go to first\" button in pagination controls\n first: \"first\",\n // \"go to previous\" button in pagination controls\n previous: \"previous\",\n // \"go to next\" button in pagination controls\n next: \"next\",\n // \"go to last\" button in pagination controls\n last: \"last\"\n },\n apiFunctions: {\n paginationIsLastPageFound,\n paginationGetPageSize,\n paginationGetCurrentPage,\n paginationGetTotalPages,\n paginationGetRowCount,\n paginationGoToNextPage,\n paginationGoToPreviousPage,\n paginationGoToFirstPage,\n paginationGoToLastPage,\n paginationGoToPage\n },\n dependsOn: [PopupModule]\n};\n\n// packages/ag-grid-community/src/api/rowApi.ts\nfunction redrawRows(beans, params = {}) {\n const rowNodes = params ? params.rowNodes : void 0;\n beans.frameworkOverrides.wrapIncoming(() => beans.rowRenderer.redrawRows(rowNodes));\n}\nfunction setRowNodeExpanded(beans, rowNode, expanded, expandParents, forceSync) {\n if (rowNode) {\n if (expandParents && rowNode.parent && rowNode.parent.level !== -1) {\n setRowNodeExpanded(beans, rowNode.parent, expanded, expandParents, forceSync);\n }\n rowNode.setExpanded(expanded, void 0, forceSync);\n }\n}\nfunction getRowNode(beans, id) {\n return beans.rowModel.getRowNode(id);\n}\nfunction addRenderedRowListener(beans, eventName, rowIndex, callback) {\n beans.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n}\nfunction getRenderedNodes(beans) {\n return beans.rowRenderer.getRenderedNodes();\n}\nfunction forEachNode(beans, callback, includeFooterNodes) {\n beans.rowModel.forEachNode(callback, includeFooterNodes);\n}\nfunction getFirstDisplayedRowIndex(beans) {\n return beans.rowRenderer.firstRenderedRow;\n}\nfunction getLastDisplayedRowIndex(beans) {\n return beans.rowRenderer.lastRenderedRow;\n}\nfunction getDisplayedRowAtIndex(beans, index) {\n return beans.rowModel.getRow(index);\n}\nfunction getDisplayedRowCount(beans) {\n return beans.rowModel.getRowCount();\n}\n\n// packages/ag-grid-community/src/api/apiModule.ts\nvar RowApiModule = {\n moduleName: \"RowApi\",\n version: VERSION,\n apiFunctions: {\n redrawRows,\n setRowNodeExpanded,\n getRowNode,\n addRenderedRowListener,\n getRenderedNodes,\n forEachNode,\n getFirstDisplayedRowIndex,\n getLastDisplayedRowIndex,\n getDisplayedRowAtIndex,\n getDisplayedRowCount\n }\n};\nvar ScrollApiModule = {\n moduleName: \"ScrollApi\",\n version: VERSION,\n apiFunctions: {\n getVerticalPixelRange,\n getHorizontalPixelRange,\n ensureColumnVisible,\n ensureIndexVisible,\n ensureNodeVisible\n }\n};\n\n// packages/ag-grid-community/src/rendering/renderApi.ts\nfunction setGridAriaProperty(beans, property, value) {\n if (!property) {\n return;\n }\n const eGrid = beans.ctrlsSvc.getGridBodyCtrl().eGridBody;\n const ariaProperty = `aria-${property}`;\n if (value === null) {\n eGrid.removeAttribute(ariaProperty);\n } else {\n eGrid.setAttribute(ariaProperty, value);\n }\n}\nfunction refreshCells(beans, params = {}) {\n beans.frameworkOverrides.wrapIncoming(() => beans.rowRenderer.refreshCells(params));\n}\nfunction refreshHeader(beans) {\n beans.frameworkOverrides.wrapIncoming(\n () => beans.ctrlsSvc.getHeaderRowContainerCtrls().forEach((c) => c.refresh())\n );\n}\nfunction isAnimationFrameQueueEmpty(beans) {\n return beans.animationFrameSvc?.isQueueEmpty() ?? true;\n}\nfunction flushAllAnimationFrames(beans) {\n beans.animationFrameSvc?.flushAllFrames();\n}\nfunction getSizesForCurrentTheme(beans) {\n return {\n rowHeight: _getRowHeightAsNumber(beans),\n headerHeight: getHeaderHeight(beans)\n };\n}\nfunction getCellRendererInstances(beans, params = {}) {\n const cellRenderers = [];\n beans.rowRenderer.getCellCtrls(params.rowNodes, params.columns).forEach((cellCtrl) => {\n const cellRenderer = cellCtrl.getCellRenderer();\n if (cellRenderer != null) {\n cellRenderers.push(_unwrapUserComp(cellRenderer));\n }\n });\n if (params.columns?.length) {\n return cellRenderers;\n }\n const fullWidthRenderers = [];\n const rowIdMap = mapRowNodes(params.rowNodes);\n beans.rowRenderer.getAllRowCtrls().forEach((rowCtrl) => {\n if (rowIdMap && !isRowInMap(rowCtrl.rowNode, rowIdMap)) {\n return;\n }\n if (!rowCtrl.isFullWidth()) {\n return;\n }\n const renderers = rowCtrl.getFullWidthCellRenderers();\n for (let i = 0; i < renderers.length; i++) {\n const renderer = renderers[i];\n if (renderer != null) {\n fullWidthRenderers.push(_unwrapUserComp(renderer));\n }\n }\n });\n return [...fullWidthRenderers, ...cellRenderers];\n}\n\n// packages/ag-grid-community/src/rendering/renderModule.ts\nvar RenderApiModule = {\n moduleName: \"RenderApi\",\n version: VERSION,\n apiFunctions: {\n setGridAriaProperty,\n refreshCells,\n refreshHeader,\n isAnimationFrameQueueEmpty,\n flushAllAnimationFrames,\n getSizesForCurrentTheme,\n getCellRendererInstances\n }\n};\n\n// packages/ag-grid-community/src/columnAutosize/columnAutosizeApi.ts\nfunction sizeColumnsToFit(beans, paramsOrGridWidth) {\n if (typeof paramsOrGridWidth === \"number\") {\n beans.colAutosize?.sizeColumnsToFit(paramsOrGridWidth, \"api\");\n } else {\n beans.colAutosize?.sizeColumnsToFitGridBody(paramsOrGridWidth);\n }\n}\nfunction autoSizeColumns(beans, keys, skipHeader) {\n beans.colAutosize?.autoSizeCols({ colKeys: keys, skipHeader, source: \"api\" });\n}\nfunction autoSizeAllColumns(beans, skipHeader) {\n beans.colAutosize?.autoSizeAllColumns(\"api\", skipHeader);\n}\n\n// packages/ag-grid-community/src/columnAutosize/columnAutosizeService.ts\nvar ColumnAutosizeService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colAutosize\";\n this.timesDelayed = 0;\n // when we're waiting for cell data types to be inferred, we need to defer column resizing\n this.shouldQueueResizeOperations = false;\n this.resizeOperationQueue = [];\n }\n postConstruct() {\n this.addManagedEventListeners({ firstDataRendered: () => this.onFirstDataRendered() });\n }\n autoSizeCols(params) {\n if (this.shouldQueueResizeOperations) {\n this.pushResizeOperation(() => this.autoSizeCols(params));\n return;\n }\n const { colKeys, skipHeader, skipHeaderGroups, stopAtGroup, source = \"api\" } = params;\n const { animationFrameSvc, renderStatus, colModel, autoWidthCalc, visibleCols } = this.beans;\n animationFrameSvc?.flushAllFrames();\n if (this.timesDelayed < 5 && renderStatus && !renderStatus.areHeaderCellsRendered()) {\n this.timesDelayed++;\n setTimeout(() => {\n if (this.isAlive()) {\n this.autoSizeCols(params);\n }\n });\n return;\n }\n this.timesDelayed = 0;\n const columnsAutoSized = [];\n let changesThisTimeAround = -1;\n const shouldSkipHeader = skipHeader != null ? skipHeader : this.gos.get(\"skipHeaderOnAutoSize\");\n const shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n const updatedColumns = [];\n colKeys.forEach((key) => {\n if (!key) {\n return;\n }\n const column = colModel.getCol(key);\n if (!column || isRowNumberCol(column)) {\n return;\n }\n if (columnsAutoSized.indexOf(column) >= 0) {\n return;\n }\n const preferredWidth = autoWidthCalc.getPreferredWidthForColumn(column, shouldSkipHeader);\n if (preferredWidth > 0) {\n const newWidth = normaliseColumnWidth(column, preferredWidth);\n column.setActualWidth(newWidth, source);\n columnsAutoSized.push(column);\n changesThisTimeAround++;\n }\n updatedColumns.push(column);\n });\n if (!updatedColumns.length) {\n continue;\n }\n visibleCols.refresh(source);\n }\n if (!shouldSkipHeaderGroups) {\n this.autoSizeColumnGroupsByColumns(colKeys, source, stopAtGroup);\n }\n dispatchColumnResizedEvent(this.eventSvc, columnsAutoSized, true, \"autosizeColumns\");\n }\n autoSizeColumn(key, source, skipHeader) {\n if (key) {\n this.autoSizeCols({ colKeys: [key], skipHeader, skipHeaderGroups: true, source });\n }\n }\n autoSizeColumnGroupsByColumns(keys, source, stopAtGroup) {\n const { colModel, ctrlsSvc } = this.beans;\n const columnGroups = /* @__PURE__ */ new Set();\n const columns = colModel.getColsForKeys(keys);\n columns.forEach((col) => {\n let parent = col.getParent();\n while (parent && parent != stopAtGroup) {\n if (!parent.isPadding()) {\n columnGroups.add(parent);\n }\n parent = parent.getParent();\n }\n });\n let headerGroupCtrl;\n const resizedColumns = [];\n for (const columnGroup of columnGroups) {\n for (const headerContainerCtrl of ctrlsSvc.getHeaderRowContainerCtrls()) {\n headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);\n if (headerGroupCtrl) {\n break;\n }\n }\n if (headerGroupCtrl) {\n headerGroupCtrl.resizeLeafColumnsToFit(source);\n }\n }\n return resizedColumns;\n }\n autoSizeAllColumns(source, skipHeader) {\n if (this.shouldQueueResizeOperations) {\n this.pushResizeOperation(() => this.autoSizeAllColumns(source, skipHeader));\n return;\n }\n const allDisplayedColumns = this.beans.visibleCols.allCols;\n this.autoSizeCols({ colKeys: allDisplayedColumns, skipHeader, source });\n }\n addColumnAutosize(element, column) {\n const skipHeaderOnAutoSize = this.gos.get(\"skipHeaderOnAutoSize\");\n const autoSizeColListener = () => {\n this.autoSizeColumn(column, \"uiColumnResized\", skipHeaderOnAutoSize);\n };\n element.addEventListener(\"dblclick\", autoSizeColListener);\n const touchListener = new TouchListener(element);\n touchListener.addEventListener(\"doubleTap\", autoSizeColListener);\n return () => {\n element.removeEventListener(\"dblclick\", autoSizeColListener);\n touchListener.removeEventListener(\"doubleTap\", autoSizeColListener);\n touchListener.destroy();\n };\n }\n addColumnGroupResize(element, columnGroup, callback) {\n const skipHeaderOnAutoSize = this.gos.get(\"skipHeaderOnAutoSize\");\n const listener = () => {\n const keys = [];\n const leafCols = columnGroup.getDisplayedLeafColumns();\n leafCols.forEach((column) => {\n if (!column.getColDef().suppressAutoSize) {\n keys.push(column.getColId());\n }\n });\n if (keys.length > 0) {\n this.autoSizeCols({\n colKeys: keys,\n skipHeader: skipHeaderOnAutoSize,\n stopAtGroup: columnGroup,\n source: \"uiColumnResized\"\n });\n }\n callback();\n };\n element.addEventListener(\"dblclick\", listener);\n return () => element.removeEventListener(\"dblclick\", listener);\n }\n // method will call itself if no available width. this covers if the grid\n // isn't visible, but is just about to be visible.\n sizeColumnsToFitGridBody(params, nextTimeout) {\n if (!this.isAlive()) {\n return;\n }\n const { ctrlsSvc, scrollVisibleSvc } = this.beans;\n const gridBodyCtrl = ctrlsSvc.getGridBodyCtrl();\n const removeScrollWidth = gridBodyCtrl.isVerticalScrollShowing();\n const scrollWidthToRemove = removeScrollWidth ? scrollVisibleSvc.getScrollbarWidth() : 0;\n const bodyViewportWidth = _getInnerWidth(gridBodyCtrl.eGridBody);\n const availableWidth = bodyViewportWidth - scrollWidthToRemove;\n if (availableWidth > 0) {\n this.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\", false, params);\n return;\n }\n if (nextTimeout === void 0) {\n window.setTimeout(() => {\n this.sizeColumnsToFitGridBody(params, 100);\n }, 0);\n } else if (nextTimeout === 100) {\n window.setTimeout(() => {\n this.sizeColumnsToFitGridBody(params, 500);\n }, 100);\n } else if (nextTimeout === 500) {\n window.setTimeout(() => {\n this.sizeColumnsToFitGridBody(params, -1);\n }, 500);\n } else {\n _warn(29);\n }\n }\n // called from api\n sizeColumnsToFit(gridWidth, source = \"sizeColumnsToFit\", silent, params) {\n if (this.shouldQueueResizeOperations) {\n this.pushResizeOperation(() => this.sizeColumnsToFit(gridWidth, source, silent, params));\n return;\n }\n const limitsMap = {};\n if (params) {\n params?.columnLimits?.forEach(({ key, ...dimensions }) => {\n limitsMap[typeof key === \"string\" ? key : key.getColId()] = dimensions;\n });\n }\n const allDisplayedColumns = this.beans.visibleCols.allCols;\n if (gridWidth <= 0 || !allDisplayedColumns.length) {\n return;\n }\n const doColumnsAlreadyFit = gridWidth === getWidthOfColsInList(allDisplayedColumns);\n if (doColumnsAlreadyFit) {\n const doAllColumnsSatisfyConstraints = allDisplayedColumns.every((column) => {\n if (column.colDef.suppressSizeToFit) {\n return true;\n }\n const widthOverride = limitsMap?.[column.getId()];\n const minWidth = widthOverride?.minWidth ?? params?.defaultMinWidth;\n const maxWidth = widthOverride?.maxWidth ?? params?.defaultMaxWidth;\n const colWidth = column.getActualWidth();\n return (minWidth == null || colWidth >= minWidth) && (maxWidth == null || colWidth <= maxWidth);\n });\n if (doAllColumnsSatisfyConstraints) {\n return;\n }\n }\n const colsToSpread = [];\n const colsToNotSpread = [];\n allDisplayedColumns.forEach((column) => {\n if (column.getColDef().suppressSizeToFit === true) {\n colsToNotSpread.push(column);\n } else {\n colsToSpread.push(column);\n }\n });\n const colsToDispatchEventFor = colsToSpread.slice(0);\n let finishedResizing = false;\n const moveToNotSpread = (column) => {\n _removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n };\n colsToSpread.forEach((column) => {\n column.resetActualWidth(source);\n const widthOverride = limitsMap?.[column.getId()];\n const minOverride = widthOverride?.minWidth ?? params?.defaultMinWidth;\n const maxOverride = widthOverride?.maxWidth ?? params?.defaultMaxWidth;\n const colWidth = column.getActualWidth();\n if (typeof minOverride === \"number\" && colWidth < minOverride) {\n column.setActualWidth(minOverride, source, true);\n } else if (typeof maxOverride === \"number\" && colWidth > maxOverride) {\n column.setActualWidth(maxOverride, source, true);\n }\n });\n while (!finishedResizing) {\n finishedResizing = true;\n const availablePixels = gridWidth - getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n colsToSpread.forEach((column) => {\n const widthOverride = limitsMap?.[column.getId()]?.minWidth ?? params?.defaultMinWidth;\n if (typeof widthOverride === \"number\") {\n column.setActualWidth(widthOverride, source, true);\n return;\n }\n column.setActualWidth(column.minWidth, source);\n });\n } else {\n const scale = availablePixels / getWidthOfColsInList(colsToSpread);\n let pixelsForLastCol = availablePixels;\n for (let i = colsToSpread.length - 1; i >= 0; i--) {\n const column = colsToSpread[i];\n const widthOverride = limitsMap?.[column.getId()];\n const minOverride = widthOverride?.minWidth ?? params?.defaultMinWidth;\n const maxOverride = widthOverride?.maxWidth ?? params?.defaultMaxWidth;\n const colMinWidth = column.getMinWidth();\n const colMaxWidth = column.getMaxWidth();\n const minWidth = typeof minOverride === \"number\" && minOverride > colMinWidth ? minOverride : colMinWidth;\n const maxWidth = typeof maxOverride === \"number\" && maxOverride < colMaxWidth ? maxOverride : colMaxWidth;\n let newWidth = Math.round(column.getActualWidth() * scale);\n if (newWidth < minWidth) {\n newWidth = minWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n } else if (newWidth > maxWidth) {\n newWidth = maxWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n } else if (i === 0) {\n newWidth = pixelsForLastCol;\n }\n column.setActualWidth(newWidth, source, true);\n pixelsForLastCol -= newWidth;\n }\n }\n }\n colsToDispatchEventFor.forEach((col) => {\n col.fireColumnWidthChangedEvent(source);\n });\n const visibleCols = this.beans.visibleCols;\n visibleCols.setLeftValues(source);\n visibleCols.updateBodyWidths();\n if (silent) {\n return;\n }\n dispatchColumnResizedEvent(this.eventSvc, colsToDispatchEventFor, true, source);\n }\n applyAutosizeStrategy() {\n const autoSizeStrategy = this.gos.get(\"autoSizeStrategy\");\n if (!autoSizeStrategy) {\n return;\n }\n const { type } = autoSizeStrategy;\n setTimeout(() => {\n if (type === \"fitGridWidth\") {\n const { columnLimits: propColumnLimits, defaultMinWidth, defaultMaxWidth } = autoSizeStrategy;\n const columnLimits = propColumnLimits?.map(({ colId: key, minWidth, maxWidth }) => ({\n key,\n minWidth,\n maxWidth\n }));\n this.sizeColumnsToFitGridBody({\n defaultMinWidth,\n defaultMaxWidth,\n columnLimits\n });\n } else if (type === \"fitProvidedWidth\") {\n this.sizeColumnsToFit(autoSizeStrategy.width, \"sizeColumnsToFit\");\n }\n });\n }\n onFirstDataRendered() {\n const autoSizeStrategy = this.gos.get(\"autoSizeStrategy\");\n if (autoSizeStrategy?.type !== \"fitCellContents\") {\n return;\n }\n const { colIds: columns, skipHeader } = autoSizeStrategy;\n setTimeout(() => {\n if (columns) {\n this.autoSizeCols({\n colKeys: columns,\n skipHeader,\n source: \"autosizeColumns\"\n });\n } else {\n this.autoSizeAllColumns(\"autosizeColumns\", skipHeader);\n }\n });\n }\n processResizeOperations() {\n this.shouldQueueResizeOperations = false;\n this.resizeOperationQueue.forEach((resizeOperation) => resizeOperation());\n this.resizeOperationQueue = [];\n }\n pushResizeOperation(func) {\n this.resizeOperationQueue.push(func);\n }\n destroy() {\n this.resizeOperationQueue.length = 0;\n super.destroy();\n }\n};\nfunction normaliseColumnWidth(column, newWidth) {\n const minWidth = column.getMinWidth();\n if (newWidth < minWidth) {\n newWidth = minWidth;\n }\n const maxWidth = column.getMaxWidth();\n if (column.isGreaterThanMax(newWidth)) {\n newWidth = maxWidth;\n }\n return newWidth;\n}\n\n// packages/ag-grid-community/src/columnAutosize/columnAutosizeModule.ts\nvar ColumnAutoSizeModule = {\n moduleName: \"ColumnAutoSize\",\n version: VERSION,\n beans: [ColumnAutosizeService],\n apiFunctions: {\n sizeColumnsToFit,\n autoSizeColumns,\n autoSizeAllColumns\n },\n dependsOn: [AutoWidthModule]\n};\n\n// packages/ag-grid-community/src/pinnedRowModel/pinnedRowApi.ts\nfunction getPinnedTopRowCount(beans) {\n return beans.pinnedRowModel?.getPinnedTopRowCount() ?? 0;\n}\nfunction getPinnedBottomRowCount(beans) {\n return beans.pinnedRowModel?.getPinnedBottomRowCount() ?? 0;\n}\nfunction getPinnedTopRow(beans, index) {\n return beans.pinnedRowModel?.getPinnedTopRow(index);\n}\nfunction getPinnedBottomRow(beans, index) {\n return beans.pinnedRowModel?.getPinnedBottomRow(index);\n}\n\n// packages/ag-grid-community/src/pinnedRowModel/pinnedRowModel.ts\nvar PinnedRowModel = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"pinnedRowModel\";\n this.nextId = 0;\n this.pinnedTopRows = { cache: {}, order: [] };\n this.pinnedBottomRows = { cache: {}, order: [] };\n }\n postConstruct() {\n const gos = this.gos;\n this.setPinnedRowData(gos.get(\"pinnedTopRowData\"), \"top\");\n this.setPinnedRowData(gos.get(\"pinnedBottomRowData\"), \"bottom\");\n this.addManagedPropertyListener(\"pinnedTopRowData\", (e) => this.setPinnedRowData(e.currentValue, \"top\"));\n this.addManagedPropertyListener(\"pinnedBottomRowData\", (e) => this.setPinnedRowData(e.currentValue, \"bottom\"));\n this.addManagedEventListeners({ gridStylesChanged: this.onGridStylesChanges.bind(this) });\n }\n isEmpty(floating) {\n return this.getCache(floating).order.length === 0;\n }\n isRowsToRender(floating) {\n return !this.isEmpty(floating);\n }\n onGridStylesChanges(e) {\n if (e.rowHeightChanged) {\n const estimateRowHeight = (rowNode) => {\n rowNode.setRowHeight(rowNode.rowHeight, true);\n };\n forEach(this.pinnedBottomRows, estimateRowHeight);\n forEach(this.pinnedTopRows, estimateRowHeight);\n }\n }\n ensureRowHeightsValid() {\n let anyChange = false;\n let rowTop = 0;\n const updateRowHeight = (rowNode) => {\n if (rowNode.rowHeightEstimated) {\n const rowHeight = _getRowHeightForNode(this.beans, rowNode);\n rowNode.setRowTop(rowTop);\n rowNode.setRowHeight(rowHeight.height);\n rowTop += rowHeight.height;\n anyChange = true;\n }\n };\n forEach(this.pinnedBottomRows, updateRowHeight);\n rowTop = 0;\n forEach(this.pinnedTopRows, updateRowHeight);\n this.eventSvc.dispatchEvent({\n type: \"pinnedHeightChanged\"\n });\n return anyChange;\n }\n setPinnedRowData(rowData, floating) {\n this.updateNodesFromRowData(rowData, floating);\n this.eventSvc.dispatchEvent({\n type: \"pinnedRowDataChanged\"\n });\n }\n /**\n * Updates existing RowNode instances and creates new ones if necessary\n *\n * Setting data as `undefined` will clear row nodes\n */\n updateNodesFromRowData(allData, floating) {\n const nodes = this.getCache(floating);\n if (allData === void 0) {\n nodes.order.length = 0;\n nodes.cache = {};\n return;\n }\n const getRowId = _getRowIdCallback(this.gos);\n const idPrefix = floating === \"top\" ? ROW_ID_PREFIX_TOP_PINNED : ROW_ID_PREFIX_BOTTOM_PINNED;\n const nodesToRemove = new Set(nodes.order);\n const newOrder = [];\n const dataIds = /* @__PURE__ */ new Set();\n let nextRowTop = 0;\n let i = -1;\n for (const data of allData) {\n const id = getRowId?.({ data, level: 0, rowPinned: floating }) ?? idPrefix + this.nextId++;\n if (dataIds.has(id)) {\n _warn(96, { id, data });\n continue;\n }\n i++;\n dataIds.add(id);\n newOrder.push(id);\n const existingNode = getById(nodes, id);\n if (existingNode !== void 0) {\n if (existingNode.data !== data) {\n existingNode.setData(data);\n }\n nextRowTop += this.setRowTopAndRowIndex(existingNode, nextRowTop, i);\n nodesToRemove.delete(id);\n } else {\n const rowNode = new RowNode(this.beans);\n rowNode.id = id;\n rowNode.data = data;\n rowNode.rowPinned = floating;\n nextRowTop += this.setRowTopAndRowIndex(rowNode, nextRowTop, i);\n nodes.cache[id] = rowNode;\n nodes.order.push(id);\n }\n }\n nodesToRemove.forEach((id) => {\n getById(nodes, id)?.clearRowTopAndRowIndex();\n delete nodes.cache[id];\n });\n nodes.order = newOrder;\n }\n setRowTopAndRowIndex(rowNode, rowTop, rowIndex) {\n rowNode.setRowTop(rowTop);\n rowNode.setRowHeight(_getRowHeightForNode(this.beans, rowNode).height);\n rowNode.setRowIndex(rowIndex);\n return rowNode.rowHeight;\n }\n getPinnedTopTotalHeight() {\n return getTotalHeight(this.pinnedTopRows);\n }\n getPinnedBottomTotalHeight() {\n return getTotalHeight(this.pinnedBottomRows);\n }\n getPinnedTopRowCount() {\n return getSize(this.pinnedTopRows);\n }\n getPinnedBottomRowCount() {\n return getSize(this.pinnedBottomRows);\n }\n getPinnedTopRow(index) {\n return getByIndex(this.pinnedTopRows, index);\n }\n getPinnedBottomRow(index) {\n return getByIndex(this.pinnedBottomRows, index);\n }\n getPinnedRowById(id, floating) {\n return getById(this.getCache(floating), id);\n }\n forEachPinnedRow(floating, callback) {\n return forEach(this.getCache(floating), callback);\n }\n getCache(floating) {\n return floating === \"top\" ? this.pinnedTopRows : this.pinnedBottomRows;\n }\n};\nfunction getTotalHeight(rowNodes) {\n const size = getSize(rowNodes);\n if (size === 0) {\n return 0;\n }\n const node = getByIndex(rowNodes, size - 1);\n if (node === void 0) {\n return 0;\n }\n return node.rowTop + node.rowHeight;\n}\nfunction getById(cache, id) {\n return cache.cache[id];\n}\nfunction getByIndex(cache, i) {\n return getById(cache, cache.order[i]);\n}\nfunction forEach(cache, callback) {\n cache.order.forEach((id, index) => {\n const node = getById(cache, id);\n node && callback(node, index);\n });\n}\nfunction getSize(cache) {\n return cache.order.length;\n}\n\n// packages/ag-grid-community/src/pinnedRowModel/pinnedRowModule.ts\nvar PinnedRowModule = {\n moduleName: \"PinnedRow\",\n version: VERSION,\n beans: [PinnedRowModel],\n apiFunctions: {\n getPinnedTopRowCount,\n getPinnedBottomRowCount,\n getPinnedTopRow,\n getPinnedBottomRow\n }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/spannedCellCtrl.ts\nvar SpannedCellCtrl = class extends CellCtrl {\n constructor(cellSpan, rowCtrl, beans) {\n super(cellSpan.col, cellSpan.firstNode, beans, rowCtrl);\n this.cellSpan = cellSpan;\n this.SPANNED_CELL_CSS_CLASS = \"ag-spanned-cell\";\n }\n setComp(comp, eCell, eWrapper, eCellWrapper, printLayout, startEditing, compBean) {\n this.eWrapper = eWrapper;\n super.setComp(comp, eCell, eWrapper, eCellWrapper, printLayout, startEditing, compBean);\n this.setAriaRowSpan();\n this.refreshAriaRowIndex();\n }\n isCellSpanning() {\n return true;\n }\n getCellSpan() {\n return this.cellSpan;\n }\n /**\n * When cell is spanning, ensure row index is also available on the cell\n */\n refreshAriaRowIndex() {\n if (this.rowNode.rowIndex == null) {\n return;\n }\n _setAriaRowIndex(this.eGui, this.rowNode.rowIndex);\n }\n /**\n * When cell is spanning, ensure row index is also available on the cell\n */\n setAriaRowSpan() {\n _setAriaRowSpan(this.eGui, this.cellSpan.spannedNodes.size);\n }\n // not ideal, for tabbing need to force the focused position\n setFocusedCellPosition(cellPos) {\n this.focusedCellPosition = cellPos;\n }\n getFocusedCellPosition() {\n return this.focusedCellPosition ?? this.cellPosition;\n }\n checkCellFocused() {\n const focusedCell = this.beans.focusSvc.getFocusedCell();\n return !!focusedCell && this.cellSpan.doesSpanContain(focusedCell);\n }\n applyStaticCssClasses() {\n super.applyStaticCssClasses();\n this.comp.addOrRemoveCssClass(this.SPANNED_CELL_CSS_CLASS, true);\n }\n onCellFocused(event) {\n const { beans } = this;\n if (_isCellFocusSuppressed(beans)) {\n this.focusedCellPosition = void 0;\n return;\n }\n const cellFocused = this.isCellFocused();\n if (!cellFocused) {\n this.focusedCellPosition = void 0;\n }\n if (event && cellFocused) {\n this.focusedCellPosition = {\n rowIndex: event.rowIndex,\n rowPinned: event.rowPinned,\n column: event.column\n // fix\n };\n }\n super.onCellFocused(event);\n }\n getRootElement() {\n return this.eWrapper;\n }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/spannedRowCtrl.ts\nvar SpannedRowCtrl = class extends RowCtrl {\n onRowIndexChanged() {\n super.onRowIndexChanged();\n this.getAllCellCtrls().forEach((c) => c.refreshAriaRowIndex());\n }\n getInitialRowClasses(_rowContainerType) {\n return [\"ag-spanned-row\"];\n }\n getNewCellCtrl(col) {\n const cellSpan = this.beans.rowSpanSvc?.getCellSpan(col, this.rowNode);\n if (!cellSpan) {\n return;\n }\n const firstRowOfSpan = cellSpan.firstNode !== this.rowNode;\n if (firstRowOfSpan) {\n return;\n }\n return new SpannedCellCtrl(cellSpan, this, this.beans);\n }\n shouldRecreateCellCtrl(cell) {\n const cellSpan = this.beans.rowSpanSvc?.getCellSpan(cell.column, this.rowNode);\n if (!cellSpan) {\n return true;\n }\n const firstRowOfSpan = cellSpan.firstNode !== this.rowNode;\n if (firstRowOfSpan) {\n return true;\n }\n return cell.getCellSpan() !== cellSpan;\n }\n /**\n * Below overrides are explicitly disabling styling and other unwanted behaviours for spannedRowCtrl\n */\n // row height should be 0 in spanned row - they're only included for purpose of aria\n onRowHeightChanged() {\n }\n // no styling spanned rows\n refreshFirstAndLastRowStyles() {\n }\n // no hover functionality for spanned rows\n addHoverFunctionality() {\n }\n resetHoveredStatus() {\n }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/spannedRowRenderer.ts\nvar SpannedRowRenderer = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"spannedRowRenderer\";\n this.topCtrls = /* @__PURE__ */ new Map();\n this.bottomCtrls = /* @__PURE__ */ new Map();\n this.centerCtrls = /* @__PURE__ */ new Map();\n }\n postConstruct() {\n this.addManagedEventListeners({\n displayedRowsChanged: this.createAllCtrls.bind(this)\n });\n }\n createAllCtrls() {\n this.createCtrls(\"top\");\n this.createCtrls(\"bottom\");\n this.createCtrls(\"center\");\n }\n /**\n * When displayed rows or cols change, the spanned cell ctrls need to update\n */\n createCtrls(ctrlsKey) {\n const { rowSpanSvc } = this.beans;\n const ctrlsName = `${ctrlsKey}Ctrls`;\n const previousCtrls = this[ctrlsName];\n const previousCtrlsSize = previousCtrls.size;\n const rowCtrls = this.getAllRelevantRowControls(ctrlsKey);\n const newRowCtrls = /* @__PURE__ */ new Map();\n let hasNewSpans = false;\n for (const ctrl of rowCtrls) {\n if (!ctrl.isAlive()) {\n continue;\n }\n rowSpanSvc?.forEachSpannedColumn(ctrl.rowNode, (col, cellSpan) => {\n if (newRowCtrls.has(cellSpan.firstNode)) {\n return;\n }\n const existingCtrl = previousCtrls.get(cellSpan.firstNode);\n if (existingCtrl) {\n newRowCtrls.set(cellSpan.firstNode, existingCtrl);\n previousCtrls.delete(cellSpan.firstNode);\n return;\n }\n hasNewSpans = true;\n const newCtrl = new SpannedRowCtrl(cellSpan.firstNode, this.beans, false, false, false);\n newRowCtrls.set(cellSpan.firstNode, newCtrl);\n });\n }\n this[ctrlsName] = newRowCtrls;\n const sameCount = newRowCtrls.size === previousCtrlsSize;\n if (!hasNewSpans && sameCount)\n return;\n for (const oldCtrl of previousCtrls.values()) {\n oldCtrl.destroyFirstPass(true);\n oldCtrl.destroySecondPass();\n }\n this.dispatchLocalEvent({\n type: `spannedRowsUpdated`,\n ctrlsKey\n });\n }\n // cannot use getAllRowCtrls as it returns this services row ctrls.\n getAllRelevantRowControls(ctrlsKey) {\n const { rowRenderer } = this.beans;\n switch (ctrlsKey) {\n case \"top\":\n return rowRenderer.topRowCtrls;\n case \"bottom\":\n return rowRenderer.bottomRowCtrls;\n case \"center\":\n return rowRenderer.allRowCtrls;\n }\n }\n getCellByPosition(cellPosition) {\n const { rowSpanSvc } = this.beans;\n const cellSpan = rowSpanSvc?.getCellSpanByPosition(cellPosition);\n if (!cellSpan) {\n return void 0;\n }\n const ctrlsName = `${_normalisePinnedValue(cellPosition.rowPinned)}Ctrls`;\n const ctrl = this[ctrlsName].get(cellSpan.firstNode);\n if (!ctrl) {\n return void 0;\n }\n return ctrl.getAllCellCtrls().find((cellCtrl) => cellCtrl.column === cellPosition.column);\n }\n getCtrls(container) {\n const ctrlsName = `${container}Ctrls`;\n return [...this[ctrlsName].values()];\n }\n destroyRowCtrls(container) {\n const ctrlsName = `${container}Ctrls`;\n for (const ctrl of this[ctrlsName].values()) {\n ctrl.destroyFirstPass(true);\n ctrl.destroySecondPass();\n }\n this[ctrlsName] = /* @__PURE__ */ new Map();\n }\n destroy() {\n super.destroy();\n this.destroyRowCtrls(\"top\");\n this.destroyRowCtrls(\"bottom\");\n this.destroyRowCtrls(\"center\");\n }\n};\nvar _normalisePinnedValue = (pinned) => {\n return pinned ?? \"center\";\n};\n\n// packages/ag-grid-community/src/rendering/spanning/rowSpanCache.ts\nvar CellSpan = class {\n constructor(col, firstNode) {\n this.col = col;\n this.firstNode = firstNode;\n // used for distinguishing between types\n this.cellSpan = true;\n this.spannedNodes = /* @__PURE__ */ new Set();\n this.addSpannedNode(firstNode);\n }\n /**\n * Reset the span leaving only the head.\n * Head is used as a comparison as this is the row used to render this cell\n * Even if the row data changes, the cell will properly reflect the correct value.\n */\n reset() {\n this.spannedNodes.clear();\n this.addSpannedNode(this.firstNode);\n }\n addSpannedNode(node) {\n this.spannedNodes.add(node);\n this.lastNode = node;\n }\n getLastNode() {\n return this.lastNode;\n }\n getCellHeight() {\n return this.lastNode.rowTop + this.lastNode.rowHeight - this.firstNode.rowTop - 1;\n }\n doesSpanContain(cellPosition) {\n if (cellPosition.column !== this.col) {\n return false;\n }\n if (cellPosition.rowPinned != this.firstNode.rowPinned) {\n return false;\n }\n return this.firstNode.rowIndex <= cellPosition.rowIndex && cellPosition.rowIndex <= this.lastNode.rowIndex;\n }\n /**\n * Gets the auto height value for last node in the spanned cell.\n * The first node is used to store the auto height for the cell, but the additional height for this cell\n * needs applied to the last row in the span.\n */\n getLastNodeAutoHeight() {\n const autoHeight = this.firstNode.__autoHeights?.[this.col.getColId()];\n if (autoHeight == null) {\n return void 0;\n }\n let allButLastHeights = 0;\n this.spannedNodes.forEach((node) => {\n if (node === this.lastNode)\n return;\n allButLastHeights += node.rowHeight;\n });\n return autoHeight - allButLastHeights;\n }\n};\nvar RowSpanCache = class extends BeanStub {\n constructor(column) {\n super();\n this.column = column;\n }\n buildCache(pinned) {\n const {\n column,\n beans: { gos, pinnedRowModel, rowModel, valueSvc, pagination }\n } = this;\n const { colDef } = column;\n const oldMap = this[`${pinned}ValueNodeMap`];\n const newMap = /* @__PURE__ */ new Map();\n const isFullWidthCellFunc = gos.getCallback(\"isFullWidthRow\");\n const equalsFnc = colDef.equals;\n const customCompare = colDef.spanRows;\n const isCustomCompare = typeof customCompare === \"function\";\n let lastNode = null;\n let spanData = null;\n let lastValue;\n const setNewHead = (node, value) => {\n lastNode = node;\n spanData = null;\n lastValue = value;\n };\n const checkNodeForCache = (node) => {\n const doesNodeSupportSpanning = !node.isExpandable() && !node.group && !node.detail && (isFullWidthCellFunc ? !isFullWidthCellFunc({ rowNode: node }) : true);\n if (node.rowIndex == null || !doesNodeSupportSpanning) {\n setNewHead(null, null);\n return;\n }\n if (lastNode == null || node.level !== lastNode.level || // no span across groups\n node.footer || spanData && node.rowIndex - 1 !== spanData?.getLastNode().rowIndex) {\n setNewHead(node, valueSvc.getValue(column, node));\n return;\n }\n const value = valueSvc.getValue(column, node);\n if (isCustomCompare) {\n const params = _addGridCommonParams(gos, {\n valueA: lastValue,\n nodeA: lastNode,\n valueB: value,\n nodeB: node,\n column,\n colDef\n });\n if (!customCompare(params)) {\n setNewHead(node, value);\n return;\n }\n } else {\n if (equalsFnc ? !equalsFnc(lastValue, value) : lastValue !== value) {\n setNewHead(node, value);\n return;\n }\n }\n if (!spanData) {\n const oldSpan = oldMap?.get(lastNode);\n if (oldSpan?.firstNode === lastNode) {\n oldSpan.reset();\n spanData = oldSpan;\n } else {\n spanData = new CellSpan(column, lastNode);\n }\n newMap.set(lastNode, spanData);\n }\n spanData.addSpannedNode(node);\n newMap.set(node, spanData);\n };\n switch (pinned) {\n case \"center\":\n rowModel.forEachDisplayedNode?.((node) => {\n const isNodeInPage = !pagination || pagination.isRowInPage(node.rowIndex);\n if (!isNodeInPage) {\n return;\n }\n checkNodeForCache(node);\n });\n break;\n case \"top\":\n pinnedRowModel?.forEachPinnedRow(\"top\", checkNodeForCache);\n break;\n case \"bottom\":\n pinnedRowModel?.forEachPinnedRow(\"bottom\", checkNodeForCache);\n break;\n }\n this[`${pinned}ValueNodeMap`] = newMap;\n }\n isCellSpanning(node) {\n return !!this.getCellSpan(node);\n }\n getCellSpan(node) {\n const map = this[`${_normalisePinnedValue(node.rowPinned)}ValueNodeMap`];\n return map.get(node);\n }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/rowSpanService.ts\nvar RowSpanService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowSpanSvc\";\n this.spanningColumns = /* @__PURE__ */ new Map();\n // debounced to allow spannedRowRenderer to run first, removing any old spanned rows\n this.debouncePinnedEvent = _debounce(this, this.dispatchCellsUpdatedEvent.bind(this, true), 0);\n this.debounceModelEvent = _debounce(this, this.dispatchCellsUpdatedEvent.bind(this, false), 0);\n this.pinnedTimeout = null;\n this.modelTimeout = null;\n }\n postConstruct() {\n const onRowDataUpdated = this.onRowDataUpdated.bind(this);\n this.addManagedEventListeners({\n paginationChanged: this.buildModelCaches.bind(this),\n pinnedRowDataChanged: this.buildPinnedCaches.bind(this),\n rowNodeDataChanged: onRowDataUpdated,\n cellValueChanged: onRowDataUpdated\n });\n }\n /**\n * When a new column is created with spanning (or spanning changes for a column)\n * @param column column that is now spanning\n */\n register(column) {\n const { gos } = this.beans;\n if (!gos.get(\"enableCellSpan\")) {\n return;\n }\n if (this.spanningColumns.has(column)) {\n return;\n }\n const cache = this.createManagedBean(new RowSpanCache(column));\n this.spanningColumns.set(column, cache);\n cache.buildCache(\"top\");\n cache.buildCache(\"bottom\");\n cache.buildCache(\"center\");\n this.debouncePinnedEvent();\n this.debounceModelEvent();\n }\n dispatchCellsUpdatedEvent(pinned) {\n this.dispatchLocalEvent({ type: \"spannedCellsUpdated\", pinned });\n }\n /**\n * When a new column is destroyed with spanning (or spanning changes for a column)\n * @param column column that is now spanning\n */\n deregister(column) {\n this.spanningColumns.delete(column);\n }\n // called when data changes, as this could be a hot path it's debounced\n // it uses timeouts instead of debounce so that it can be cancelled by `modelUpdated`\n // which is expected to run immediately (to exec before the rowRenderer)\n onRowDataUpdated({ node }) {\n const { spannedRowRenderer } = this.beans;\n if (node.rowPinned) {\n if (this.pinnedTimeout != null) {\n return;\n }\n this.pinnedTimeout = window.setTimeout(() => {\n this.pinnedTimeout = null;\n this.buildPinnedCaches();\n spannedRowRenderer?.createCtrls(\"top\");\n spannedRowRenderer?.createCtrls(\"bottom\");\n }, 0);\n return;\n }\n if (this.modelTimeout != null) {\n return;\n }\n this.modelTimeout = window.setTimeout(() => {\n this.modelTimeout = null;\n this.buildModelCaches();\n spannedRowRenderer?.createCtrls(\"center\");\n }, 0);\n }\n buildModelCaches() {\n if (this.modelTimeout != null) {\n clearTimeout(this.modelTimeout);\n }\n this.spanningColumns.forEach((cache) => cache.buildCache(\"center\"));\n this.debounceModelEvent();\n }\n buildPinnedCaches() {\n if (this.pinnedTimeout != null) {\n clearTimeout(this.pinnedTimeout);\n }\n this.spanningColumns.forEach((cache) => {\n cache.buildCache(\"top\");\n cache.buildCache(\"bottom\");\n });\n this.debouncePinnedEvent();\n }\n isCellSpanning(col, rowNode) {\n const cache = this.spanningColumns.get(col);\n if (!cache) {\n return false;\n }\n return cache.isCellSpanning(rowNode);\n }\n getCellSpanByPosition(position) {\n const { pinnedRowModel, rowModel } = this.beans;\n const col = position.column;\n const index = position.rowIndex;\n const cache = this.spanningColumns.get(col);\n if (!cache) {\n return void 0;\n }\n let node;\n switch (position.rowPinned) {\n case \"top\":\n node = pinnedRowModel?.getPinnedTopRow(index);\n break;\n case \"bottom\":\n node = pinnedRowModel?.getPinnedBottomRow(index);\n break;\n default:\n node = rowModel.getRow(index);\n }\n if (!node) {\n return void 0;\n }\n return cache.getCellSpan(node);\n }\n getCellStart(position) {\n const span = this.getCellSpanByPosition(position);\n if (!span) {\n return position;\n }\n return { ...position, rowIndex: span.firstNode.rowIndex };\n }\n getCellEnd(position) {\n const span = this.getCellSpanByPosition(position);\n if (!span) {\n return position;\n }\n return { ...position, rowIndex: span.getLastNode().rowIndex };\n }\n /**\n * Look-up a spanned cell given a col and node as position indicators\n *\n * @param col a column to lookup a span at this position\n * @param rowNode a node that may be spanned at this position\n * @returns the CellSpan object if one exists\n */\n getCellSpan(col, rowNode) {\n const cache = this.spanningColumns.get(col);\n if (!cache) {\n return void 0;\n }\n return cache.getCellSpan(rowNode);\n }\n forEachSpannedColumn(rowNode, callback) {\n for (const [col, cache] of this.spanningColumns) {\n if (cache.isCellSpanning(rowNode)) {\n const spanningNode = cache.getCellSpan(rowNode);\n callback(col, spanningNode);\n }\n }\n }\n destroy() {\n super.destroy();\n this.spanningColumns.clear();\n }\n};\n\n// packages/ag-grid-community/src/rendering/spanning/cellSpanModule.ts\nvar CellSpanModule = {\n moduleName: \"CellSpan\",\n version: VERSION,\n beans: [RowSpanService, SpannedRowRenderer]\n};\n\n// packages/ag-grid-community/src/styling/cellCustomStyleFeature.ts\nvar CellCustomStyleFeature = class extends BeanStub {\n constructor(cellCtrl, beans) {\n super();\n this.cellCtrl = cellCtrl;\n this.staticClasses = [];\n this.beans = beans;\n this.column = cellCtrl.column;\n }\n setComp(comp) {\n this.cellComp = comp;\n this.applyUserStyles();\n this.applyCellClassRules();\n this.applyClassesFromColDef();\n }\n applyCellClassRules() {\n const { column, cellComp } = this;\n const colDef = column.colDef;\n const cellClassRules = colDef.cellClassRules;\n const cellClassParams = this.getCellClassParams(column, colDef);\n processClassRules(\n this.beans.expressionSvc,\n // if current was previous, skip\n cellClassRules === this.cellClassRules ? void 0 : this.cellClassRules,\n cellClassRules,\n cellClassParams,\n (className) => cellComp.addOrRemoveCssClass(className, true),\n (className) => cellComp.addOrRemoveCssClass(className, false)\n );\n this.cellClassRules = cellClassRules;\n }\n applyUserStyles() {\n const column = this.column;\n const colDef = column.colDef;\n const cellStyle = colDef.cellStyle;\n if (!cellStyle) {\n return;\n }\n let styles;\n if (typeof cellStyle === \"function\") {\n const cellStyleParams = this.getCellClassParams(column, colDef);\n styles = cellStyle(cellStyleParams);\n } else {\n styles = cellStyle;\n }\n if (styles) {\n this.cellComp.setUserStyles(styles);\n }\n }\n applyClassesFromColDef() {\n const { column, cellComp } = this;\n const colDef = column.colDef;\n const cellClassParams = this.getCellClassParams(column, colDef);\n this.staticClasses.forEach((className) => cellComp.addOrRemoveCssClass(className, false));\n const newStaticClasses = this.beans.cellStyles.getStaticCellClasses(colDef, cellClassParams);\n this.staticClasses = newStaticClasses;\n newStaticClasses.forEach((className) => cellComp.addOrRemoveCssClass(className, true));\n }\n getCellClassParams(column, colDef) {\n const { value, rowNode } = this.cellCtrl;\n return _addGridCommonParams(this.beans.gos, {\n value,\n data: rowNode.data,\n node: rowNode,\n colDef,\n column,\n rowIndex: rowNode.rowIndex\n });\n }\n};\n\n// packages/ag-grid-community/src/styling/cellStyleService.ts\nvar CellStyleService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"cellStyles\";\n }\n processAllCellClasses(colDef, params, onApplicableClass, onNotApplicableClass) {\n processClassRules(\n this.beans.expressionSvc,\n void 0,\n colDef.cellClassRules,\n params,\n onApplicableClass,\n onNotApplicableClass\n );\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n }\n getStaticCellClasses(colDef, params) {\n const { cellClass } = colDef;\n if (!cellClass) {\n return [];\n }\n let classOrClasses;\n if (typeof cellClass === \"function\") {\n const cellClassFunc = cellClass;\n classOrClasses = cellClassFunc(params);\n } else {\n classOrClasses = cellClass;\n }\n if (typeof classOrClasses === \"string\") {\n classOrClasses = [classOrClasses];\n }\n return classOrClasses || [];\n }\n createCellCustomStyleFeature(ctrl, beans) {\n return new CellCustomStyleFeature(ctrl, beans);\n }\n processStaticCellClasses(colDef, params, onApplicableClass) {\n const classOrClasses = this.getStaticCellClasses(colDef, params);\n classOrClasses.forEach((cssClassItem) => {\n onApplicableClass(cssClassItem);\n });\n }\n};\n\n// packages/ag-grid-community/src/styling/stylingModule.ts\nvar CellStyleModule = {\n moduleName: \"CellStyle\",\n version: VERSION,\n beans: [CellStyleService]\n};\nvar RowStyleModule = {\n moduleName: \"RowStyle\",\n version: VERSION,\n beans: [RowStyleService]\n};\n\n// packages/ag-grid-community/src/columns/columnHover/columnHoverApi.ts\nfunction isColumnHovered(beans, column) {\n return !!beans.colHover?.isHovered(column);\n}\n\n// packages/ag-grid-community/src/columns/columnHover/hoverFeature.ts\nvar HoverFeature = class extends BeanStub {\n constructor(columns, element) {\n super();\n this.columns = columns;\n this.element = element;\n this.destroyManagedListeners = [];\n this.enableFeature = (enabled) => {\n const { beans, gos, element, columns } = this;\n const colHover = beans.colHover;\n const active = enabled ?? !!gos.get(\"columnHoverHighlight\");\n if (active) {\n this.destroyManagedListeners = this.addManagedElementListeners(element, {\n mouseover: colHover.setMouseOver.bind(colHover, columns),\n mouseout: colHover.clearMouseOver.bind(colHover)\n });\n } else {\n this.destroyManagedListeners.forEach((fn) => fn());\n this.destroyManagedListeners = [];\n }\n };\n }\n postConstruct() {\n this.addManagedPropertyListener(\"columnHoverHighlight\", ({ currentValue }) => {\n this.enableFeature(currentValue);\n });\n this.enableFeature();\n }\n destroy() {\n super.destroy();\n this.destroyManagedListeners = null;\n }\n};\n\n// packages/ag-grid-community/src/columns/columnHover/columnHoverService.ts\nvar CSS_COLUMN_HOVER = \"ag-column-hover\";\nvar ColumnHoverService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"colHover\";\n }\n postConstruct() {\n this.addManagedPropertyListener(\"columnHoverHighlight\", ({ currentValue }) => {\n if (!currentValue) {\n this.clearMouseOver();\n }\n });\n }\n setMouseOver(columns) {\n this.updateState(columns);\n }\n clearMouseOver() {\n this.updateState(null);\n }\n isHovered(column) {\n if (!this.gos.get(\"columnHoverHighlight\")) {\n return false;\n }\n const selectedColumns = this.selectedColumns;\n return !!selectedColumns && selectedColumns.indexOf(column) >= 0;\n }\n addHeaderColumnHoverListener(compBean, comp, column) {\n const listener = () => {\n const isHovered = this.isHovered(column);\n comp.addOrRemoveCssClass(\"ag-column-hover\", isHovered);\n };\n compBean.addManagedEventListeners({ columnHoverChanged: listener });\n listener();\n }\n onCellColumnHover(column, cellComp) {\n if (!cellComp) {\n return;\n }\n const isHovered = this.isHovered(column);\n cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);\n }\n addHeaderFilterColumnHoverListener(compBean, comp, column, eGui) {\n this.createHoverFeature(compBean, [column], eGui);\n const listener = () => {\n const hovered = this.isHovered(column);\n comp.addOrRemoveCssClass(\"ag-column-hover\", hovered);\n };\n compBean.addManagedEventListeners({ columnHoverChanged: listener });\n listener();\n }\n createHoverFeature(compBean, columns, eGui) {\n compBean.createManagedBean(new HoverFeature(columns, eGui));\n }\n updateState(columns) {\n this.selectedColumns = columns;\n this.eventSvc.dispatchEvent({\n type: \"columnHoverChanged\"\n });\n }\n};\n\n// packages/ag-grid-community/src/columns/columnHover/columnHoverModule.ts\nvar ColumnHoverModule = {\n moduleName: \"ColumnHover\",\n version: VERSION,\n beans: [ColumnHoverService],\n apiFunctions: {\n isColumnHovered\n }\n};\n\n// packages/ag-grid-community/src/misc/apiEvents/apiEventService.ts\nvar ApiEventService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"apiEventSvc\";\n this.syncListeners = /* @__PURE__ */ new Map();\n this.asyncListeners = /* @__PURE__ */ new Map();\n this.syncGlobalListeners = /* @__PURE__ */ new Set();\n this.globalListenerPairs = /* @__PURE__ */ new Map();\n }\n postConstruct() {\n this.wrapSvc = this.beans.frameworkOverrides.createGlobalEventListenerWrapper?.();\n }\n addEventListener(eventType, userListener) {\n const listener = this.wrapSvc?.wrap(userListener) ?? userListener;\n const async = !ALWAYS_SYNC_GLOBAL_EVENTS.has(eventType);\n const listeners = async ? this.asyncListeners : this.syncListeners;\n if (!listeners.has(eventType)) {\n listeners.set(eventType, /* @__PURE__ */ new Set());\n }\n listeners.get(eventType).add(listener);\n this.eventSvc.addEventListener(eventType, listener, async);\n }\n removeEventListener(eventType, userListener) {\n const listener = this.wrapSvc?.unwrap(userListener) ?? userListener;\n const asyncListeners = this.asyncListeners.get(eventType);\n const hasAsync = !!asyncListeners?.delete(listener);\n if (!hasAsync) {\n this.syncListeners.get(eventType)?.delete(listener);\n }\n this.eventSvc.removeEventListener(eventType, listener, hasAsync);\n }\n addGlobalListener(userListener) {\n const listener = this.wrapSvc?.wrapGlobal(userListener) ?? userListener;\n const syncListener = (eventType, event) => {\n if (ALWAYS_SYNC_GLOBAL_EVENTS.has(eventType)) {\n listener(eventType, event);\n }\n };\n const asyncListener = (eventType, event) => {\n if (!ALWAYS_SYNC_GLOBAL_EVENTS.has(eventType)) {\n listener(eventType, event);\n }\n };\n this.globalListenerPairs.set(userListener, { syncListener, asyncListener });\n const eventSvc = this.eventSvc;\n eventSvc.addGlobalListener(syncListener, false);\n eventSvc.addGlobalListener(asyncListener, true);\n }\n removeGlobalListener(userListener) {\n const { eventSvc, wrapSvc, globalListenerPairs } = this;\n const listener = wrapSvc?.unwrapGlobal(userListener) ?? userListener;\n const hasAsync = globalListenerPairs.has(listener);\n if (hasAsync) {\n const { syncListener, asyncListener } = globalListenerPairs.get(listener);\n eventSvc.removeGlobalListener(syncListener, false);\n eventSvc.removeGlobalListener(asyncListener, true);\n globalListenerPairs.delete(userListener);\n } else {\n this.syncGlobalListeners.delete(listener);\n eventSvc.removeGlobalListener(listener, false);\n }\n }\n destroyEventListeners(map, async) {\n map.forEach((listeners, eventType) => {\n listeners.forEach((listener) => this.eventSvc.removeEventListener(eventType, listener, async));\n listeners.clear();\n });\n map.clear();\n }\n destroyGlobalListeners(set, async) {\n set.forEach((listener) => this.eventSvc.removeGlobalListener(listener, async));\n set.clear();\n }\n destroy() {\n super.destroy();\n this.destroyEventListeners(this.syncListeners, false);\n this.destroyEventListeners(this.asyncListeners, true);\n this.destroyGlobalListeners(this.syncGlobalListeners, false);\n const { globalListenerPairs, eventSvc } = this;\n globalListenerPairs.forEach(({ syncListener, asyncListener }) => {\n eventSvc.removeGlobalListener(syncListener, false);\n eventSvc.removeGlobalListener(asyncListener, true);\n });\n globalListenerPairs.clear();\n }\n};\n\n// packages/ag-grid-community/src/misc/apiEvents/eventApi.ts\nfunction addEventListener(beans, eventType, listener) {\n beans.apiEventSvc?.addEventListener(eventType, listener);\n}\nfunction removeEventListener(beans, eventType, listener) {\n beans.apiEventSvc?.removeEventListener(eventType, listener);\n}\nfunction addGlobalListener(beans, listener) {\n beans.apiEventSvc?.addGlobalListener(listener);\n}\nfunction removeGlobalListener(beans, listener) {\n beans.apiEventSvc?.removeGlobalListener(listener);\n}\n\n// packages/ag-grid-community/src/misc/apiEvents/apiEventModule.ts\nvar EventApiModule = {\n moduleName: \"EventApi\",\n version: VERSION,\n apiFunctions: {\n addEventListener,\n addGlobalListener,\n removeEventListener,\n removeGlobalListener\n },\n beans: [ApiEventService]\n};\n\n// packages/ag-grid-community/src/tooltip/tooltip.css-GENERATED.ts\nvar tooltipCSS = (\n /*css*/\n `.ag-tooltip{background-color:var(--ag-tooltip-background-color);border:var(--ag-tooltip-border);border-radius:var(--ag-border-radius);color:var(--ag-tooltip-text-color);padding:var(--ag-widget-container-vertical-padding) var(--ag-widget-container-horizontal-padding);white-space:normal}.ag-tooltip,.ag-tooltip-custom{position:absolute;z-index:99999}.ag-tooltip-custom:where(:not(.ag-tooltip-interactive)),.ag-tooltip:where(:not(.ag-tooltip-interactive)){pointer-events:none}.ag-tooltip-animate{transition:opacity 1s;&:where(.ag-tooltip-hiding){opacity:0}}`\n);\n\n// packages/ag-grid-community/src/tooltip/tooltipService.ts\nvar TooltipService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"tooltipSvc\";\n }\n setupHeaderTooltip(existingTooltipFeature, ctrl, value, shouldDisplayTooltip) {\n if (existingTooltipFeature) {\n ctrl.destroyBean(existingTooltipFeature);\n }\n const isTooltipWhenTruncated = _isShowTooltipWhenTruncated(this.gos);\n const { column, eGui } = ctrl;\n const colDef = column.getColDef();\n if (!shouldDisplayTooltip && isTooltipWhenTruncated && !colDef.headerComponent) {\n shouldDisplayTooltip = _shouldDisplayTooltip(\n () => eGui.querySelector(\".ag-header-cell-text\")\n );\n }\n const tooltipCtrl = {\n getColumn: () => column,\n getColDef: () => column.getColDef(),\n getGui: () => eGui,\n getLocation: () => \"header\",\n getTooltipValue: () => {\n if (value != null) {\n return value;\n }\n const res = column.getColDef().headerTooltip;\n return res;\n },\n shouldDisplayTooltip\n };\n let tooltipFeature = this.createTooltipFeature(tooltipCtrl);\n if (tooltipFeature) {\n tooltipFeature = ctrl.createBean(tooltipFeature);\n ctrl.setRefreshFunction(\"tooltip\", () => tooltipFeature.refreshTooltip());\n }\n return tooltipFeature;\n }\n setupHeaderGroupTooltip(existingTooltipFeature, ctrl, value, shouldDisplayTooltip) {\n if (existingTooltipFeature) {\n ctrl.destroyBean(existingTooltipFeature);\n }\n const isTooltipWhenTruncated = _isShowTooltipWhenTruncated(this.gos);\n const { column, eGui } = ctrl;\n const colGroupDef = column.getColGroupDef();\n if (!shouldDisplayTooltip && isTooltipWhenTruncated && !colGroupDef?.headerGroupComponent) {\n shouldDisplayTooltip = _shouldDisplayTooltip(\n () => eGui.querySelector(\".ag-header-group-text\")\n );\n }\n const tooltipCtrl = {\n getColumn: () => column,\n getGui: () => eGui,\n getLocation: () => \"headerGroup\",\n getTooltipValue: () => value ?? (colGroupDef && colGroupDef.headerTooltip),\n shouldDisplayTooltip\n };\n if (colGroupDef) {\n tooltipCtrl.getColDef = () => colGroupDef;\n }\n const tooltipFeature = this.createTooltipFeature(tooltipCtrl);\n return tooltipFeature ? ctrl.createBean(tooltipFeature) : tooltipFeature;\n }\n enableCellTooltipFeature(ctrl, value, shouldDisplayTooltip) {\n const { column, rowNode } = ctrl;\n const getTooltipValue = () => {\n const colDef = column.getColDef();\n const data = rowNode.data;\n if (colDef.tooltipField && _exists(data)) {\n return _getValueUsingField(data, colDef.tooltipField, column.isTooltipFieldContainsDots());\n }\n const valueGetter = colDef.tooltipValueGetter;\n if (valueGetter) {\n return valueGetter(\n _addGridCommonParams(this.gos, {\n location: \"cell\",\n colDef: column.getColDef(),\n column,\n rowIndex: ctrl.cellPosition.rowIndex,\n node: rowNode,\n data: rowNode.data,\n value: ctrl.value,\n valueFormatted: ctrl.valueFormatted\n })\n );\n }\n return null;\n };\n const isTooltipWhenTruncated = _isShowTooltipWhenTruncated(this.gos);\n if (!shouldDisplayTooltip && isTooltipWhenTruncated && !ctrl.isCellRenderer()) {\n shouldDisplayTooltip = _shouldDisplayTooltip(() => {\n const eCell = ctrl.eGui;\n return eCell.children.length === 0 ? eCell : eCell.querySelector(\".ag-cell-value\");\n });\n }\n const tooltipCtrl = {\n getColumn: () => column,\n getColDef: () => column.getColDef(),\n getRowIndex: () => ctrl.cellPosition.rowIndex,\n getRowNode: () => rowNode,\n getGui: () => ctrl.eGui,\n getLocation: () => \"cell\",\n getTooltipValue: value != null ? () => value : getTooltipValue,\n // this makes no sense, why is the cell formatted value passed to the tooltip???\n getValueFormatted: () => ctrl.valueFormatted,\n shouldDisplayTooltip\n };\n return this.createTooltipFeature(tooltipCtrl, this.beans);\n }\n refreshRowTooltip(existingTooltipFeature, ctrl, value, shouldDisplayTooltip) {\n const tooltipParams = {\n getGui: () => ctrl.getFullWidthElement(),\n getTooltipValue: () => value,\n getLocation: () => \"fullWidthRow\",\n shouldDisplayTooltip\n };\n const beans = this.beans;\n const context = beans.context;\n if (existingTooltipFeature) {\n ctrl.destroyBean(existingTooltipFeature, context);\n }\n const tooltipFeature = this.createTooltipFeature(tooltipParams, beans);\n return ctrl.createBean(tooltipFeature, context);\n }\n initCol(column) {\n const { colDef } = column;\n column.tooltipEnabled = _exists(colDef.tooltipField) || _exists(colDef.tooltipValueGetter) || _exists(colDef.tooltipComponent);\n }\n createTooltipFeature(tooltipCtrl, beans) {\n return this.beans.registry.createDynamicBean(\"tooltipFeature\", false, tooltipCtrl, beans);\n }\n};\n\n// packages/ag-grid-community/src/tooltip/tooltipModule.ts\nvar TooltipModule = {\n moduleName: \"Tooltip\",\n version: VERSION,\n beans: [TooltipService],\n dynamicBeans: {\n tooltipFeature: TooltipFeature\n },\n userComponents: {\n agTooltipComponent: TooltipComponent2\n },\n dependsOn: [PopupModule],\n css: [tooltipCSS]\n};\n\n// packages/ag-grid-community/src/misc/locale/localeModule.ts\nvar LocaleModule = {\n moduleName: \"Locale\",\n version: VERSION,\n beans: [LocaleService]\n};\n\n// packages/ag-grid-community/src/rendering/row/rowAutoHeightService.ts\nvar RowAutoHeightService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"rowAutoHeight\";\n this.wasEverActive = false;\n this._debouncedCalculateRowHeights = _debounce(this, this.calculateRowHeights.bind(this), 1);\n }\n /**\n * If row height has been active, request a refresh of the row heights.\n */\n requestCheckAutoHeight() {\n if (!this.wasEverActive) {\n return;\n }\n this._debouncedCalculateRowHeights();\n }\n calculateRowHeights() {\n const { visibleCols, rowModel, rowSpanSvc, pinnedRowModel } = this.beans;\n const displayedAutoHeightCols = visibleCols.autoHeightCols;\n let anyNodeChanged = false;\n const updateDisplayedRowHeights = (row) => {\n const autoHeights = row.__autoHeights;\n let newRowHeight = _getRowHeightForNode(this.beans, row).height;\n for (const col of displayedAutoHeightCols) {\n let cellHeight = autoHeights?.[col.getColId()];\n const spannedCell = rowSpanSvc?.getCellSpan(col, row);\n if (spannedCell) {\n if (spannedCell.getLastNode() !== row) {\n continue;\n }\n cellHeight = rowSpanSvc?.getCellSpan(col, row)?.getLastNodeAutoHeight();\n if (!cellHeight) {\n return;\n }\n }\n if (cellHeight == null) {\n if (this.colSpanSkipCell(col, row)) {\n continue;\n }\n return;\n }\n newRowHeight = Math.max(cellHeight, newRowHeight);\n }\n if (newRowHeight !== row.rowHeight) {\n row.setRowHeight(newRowHeight);\n anyNodeChanged = true;\n }\n };\n pinnedRowModel?.forEachPinnedRow?.(\"top\", updateDisplayedRowHeights);\n pinnedRowModel?.forEachPinnedRow?.(\"bottom\", updateDisplayedRowHeights);\n rowModel.forEachDisplayedNode?.(updateDisplayedRowHeights);\n if (anyNodeChanged) {\n rowModel.onRowHeightChanged?.();\n }\n }\n /**\n * Set the cell height into the row node, and request a refresh of the row heights if there's been a change.\n * @param rowNode the node to set the auto height on\n * @param cellHeight the height to set, undefined if the cell has just been destroyed\n * @param column the column of the cell\n */\n setRowAutoHeight(rowNode, cellHeight, column) {\n rowNode.__autoHeights ?? (rowNode.__autoHeights = {});\n if (cellHeight == void 0) {\n delete rowNode.__autoHeights[column.getId()];\n return;\n }\n const previousCellHeight = rowNode.__autoHeights[column.getId()];\n rowNode.__autoHeights[column.getId()] = cellHeight;\n if (previousCellHeight !== cellHeight) {\n this.requestCheckAutoHeight();\n }\n }\n /**\n * If using col span, then cells which have been spanned over do not need an auto height value\n * @param col the column of the cell\n * @param node the node of the cell\n * @returns whether the row needs auto height value for that column\n */\n colSpanSkipCell(col, node) {\n const { colModel, colViewport, visibleCols } = this.beans;\n if (!colModel.colSpanActive) {\n return false;\n }\n let activeColsForRow = [];\n switch (col.getPinned()) {\n case \"left\":\n activeColsForRow = visibleCols.getLeftColsForRow(node);\n break;\n case \"right\":\n activeColsForRow = visibleCols.getRightColsForRow(node);\n break;\n case null:\n activeColsForRow = colViewport.getColsWithinViewport(node);\n break;\n }\n return !activeColsForRow.includes(col);\n }\n /**\n * If required, sets up observers to continuously measure changes in the cell height.\n * @param cellCtrl the cellCtrl of the cell\n * @param eCellWrapper the HTMLElement to track the height of\n * @param compBean the component bean to add the destroy/cleanup function to\n * @returns whether or not auto height has been set up on this cell\n */\n setupCellAutoHeight(cellCtrl, eCellWrapper, compBean) {\n if (!cellCtrl.column.isAutoHeight() || !eCellWrapper) {\n return false;\n }\n this.wasEverActive = true;\n const eParentCell = eCellWrapper.parentElement;\n const { rowNode, column } = cellCtrl;\n const beans = this.beans;\n const measureHeight = (timesCalled) => {\n if (cellCtrl.editing) {\n return;\n }\n if (!cellCtrl.isAlive() || !compBean.isAlive()) {\n return;\n }\n const { paddingTop, paddingBottom, borderBottomWidth, borderTopWidth } = _getElementSize(eParentCell);\n const extraHeight = paddingTop + paddingBottom + borderBottomWidth + borderTopWidth;\n const wrapperHeight = eCellWrapper.offsetHeight;\n const autoHeight = wrapperHeight + extraHeight;\n if (timesCalled < 5) {\n const doc = _getDocument(beans);\n const notYetInDom = !doc || !doc.contains(eCellWrapper);\n const possiblyNoContentYet = autoHeight == 0;\n if (notYetInDom || possiblyNoContentYet) {\n window.setTimeout(() => measureHeight(timesCalled + 1), 0);\n return;\n }\n }\n this.setRowAutoHeight(rowNode, autoHeight, column);\n };\n const listener = () => measureHeight(0);\n listener();\n const destroyResizeObserver = _observeResize(beans, eCellWrapper, listener);\n compBean.addDestroyFunc(() => {\n destroyResizeObserver();\n this.setRowAutoHeight(rowNode, void 0, column);\n });\n return true;\n }\n setAutoHeightActive(cols) {\n this.active = cols.list.some((col) => col.isVisible() && col.isAutoHeight());\n }\n};\n\n// packages/ag-grid-community/src/rendering/row/rowAutoHeightModule.ts\nvar RowAutoHeightModule = {\n moduleName: \"RowAutoHeight\",\n version: VERSION,\n beans: [RowAutoHeightService]\n};\n\n// packages/ag-grid-community/src/allCommunityModule.ts\nvar AllCommunityModule = {\n moduleName: \"AllCommunity\",\n version: VERSION,\n dependsOn: [\n ClientSideRowModelModule,\n CsvExportModule,\n InfiniteRowModelModule,\n ValidationModule,\n TextEditorModule,\n NumberEditorModule,\n DateEditorModule,\n CheckboxEditorModule,\n SelectEditorModule,\n LargeTextEditorModule,\n CustomEditorModule,\n UndoRedoEditModule,\n TextFilterModule,\n NumberFilterModule,\n DateFilterModule,\n CustomFilterModule,\n QuickFilterModule,\n ExternalFilterModule,\n GridStateModule,\n AlignedGridsModule,\n PaginationModule,\n ColumnApiModule,\n RowApiModule,\n ScrollApiModule,\n RenderApiModule,\n ColumnAutoSizeModule,\n RowDragModule,\n PinnedRowModule,\n RowSelectionModule,\n ValueCacheModule,\n CellStyleModule,\n ColumnHoverModule,\n RowStyleModule,\n EventApiModule,\n CellApiModule,\n HighlightChangesModule,\n TooltipModule,\n LocaleModule,\n RowAutoHeightModule,\n DragAndDropModule,\n ClientSideRowModelApiModule,\n CellSpanModule\n ]\n};\nexport {\n ALWAYS_SYNC_GLOBAL_EVENTS,\n AbstractClientSideNodeManager,\n AgAbstractInputField,\n AgAbstractLabel,\n AgCheckbox,\n AgCheckboxSelector,\n AgColumn,\n AgColumnGroup,\n AgInputDateField,\n AgInputNumberField,\n AgInputNumberFieldSelector,\n AgInputTextArea,\n AgInputTextField,\n AgInputTextFieldSelector,\n AgPickerField,\n AgPromise,\n AgProvidedColumnGroup,\n AgRadioButton,\n AgSelect,\n AgSelectSelector,\n AgToggleButton,\n AgToggleButtonSelector,\n AlignedGridsModule,\n AllCommunityModule,\n AutoScrollService,\n BaseColsService,\n BaseComponentWrapper,\n BaseCreator,\n BaseGridSerializingSession,\n BaseSelectionService,\n BeanStub,\n CellApiModule,\n CellRangeType,\n CellSpanModule,\n CellStyleModule,\n ChangedPath,\n CheckboxEditorModule,\n ClientSideRowModelApiModule,\n ClientSideRowModelModule,\n ColumnApiModule,\n ColumnAutoSizeModule,\n ColumnHoverModule,\n ColumnKeyCreator,\n Component,\n CssClassManager,\n CsvExportModule,\n CustomEditorModule,\n CustomFilterModule,\n DateEditorModule,\n DateFilterModule,\n DragAndDropModule,\n DragSourceType,\n EventApiModule,\n ExternalFilterModule,\n FakeHScrollComp,\n FakeVScrollComp,\n FilterWrapperComp,\n GROUP_AUTO_COLUMN_ID,\n GridBodyCtrl,\n GridCoreCreator,\n GridCtrl,\n GridHeaderCtrl,\n GridStateModule,\n GroupInstanceIdCreator,\n HeaderRowContainerCtrl,\n HighlightChangesModule,\n InfiniteRowModelModule,\n KeyCode,\n LargeTextEditorModule,\n LocalEventService,\n LocaleModule,\n LocaleService,\n ManagedFocusFeature,\n ModuleRegistry,\n NumberEditorModule,\n NumberFilterModule,\n PaginationModule,\n PinnedRowModule,\n PopupComponent,\n PositionableFeature,\n ProvidedFilter,\n QuickFilterModule,\n ROW_NUMBERS_COLUMN_ID,\n RefPlaceholder,\n RenderApiModule,\n RowApiModule,\n RowAutoHeightModule,\n RowContainerCtrl,\n RowDragModule,\n RowNode,\n RowSelectionModule,\n RowStyleModule,\n SELECTION_COLUMN_ID,\n ScrollApiModule,\n SelectEditorModule,\n ServerSideTransactionResultStatus,\n TabGuardClassNames,\n TabGuardComp,\n TabGuardCtrl,\n TabGuardFeature,\n TextEditorModule,\n TextFilterModule,\n TooltipFeature,\n TooltipModule,\n TouchListener,\n UndoRedoEditModule,\n ValidationModule,\n ValueCacheModule,\n VanillaFrameworkOverrides,\n _ALL_EVENTS,\n _ALL_GRID_OPTIONS,\n _BOOLEAN_MIXED_GRID_OPTIONS,\n ColumnFilterModule as _ColumnFilterModule,\n ColumnGroupModule as _ColumnGroupModule,\n ColumnMoveModule as _ColumnMoveModule,\n CsrmSsrmSharedApiModule as _CsrmSsrmSharedApiModule,\n DragModule as _DragModule,\n EditCoreModule as _EditCoreModule,\n _EmptyArray,\n EmptyBean as _EmptyBean,\n FOCUS_MANAGED_CLASS as _FOCUS_MANAGED_CLASS,\n FilterCoreModule as _FilterCoreModule,\n FilterValueModule as _FilterValueModule,\n HeaderComp as _HeaderComp,\n HorizontalResizeModule as _HorizontalResizeModule,\n KeyboardNavigationModule as _KeyboardNavigationModule,\n _PUBLIC_EVENTS,\n PopupModule as _PopupModule,\n ROW_ID_PREFIX_ROW_GROUP as _ROW_ID_PREFIX_ROW_GROUP,\n SharedDragAndDropModule as _SharedDragAndDropModule,\n SharedExportModule as _SharedExportModule,\n SharedMenuModule as _SharedMenuModule,\n SharedRowSelectionModule as _SharedRowSelectionModule,\n SortModule as _SortModule,\n SsrmInfiniteSharedApiModule as _SsrmInfiniteSharedApiModule,\n _addColumnDefaultAndTypes,\n _addFocusableContainerListener,\n _addGridCommonParams,\n _anchorElementToMouseMoveEvent,\n _applyColumnState,\n _areCellsEqual,\n _areColIdsEqual,\n _areEqual,\n _asThemeImpl,\n _batchCall,\n _canSkipShowingRowGroup,\n _clearElement,\n _columnsMatch,\n _combineAttributesAndGridOptions,\n _convertColumnEventSourceType,\n _createCellId,\n _createColumnTree,\n _createElement,\n _createGlobalRowEvent,\n _createIcon,\n _createIconNoSpan,\n _debounce,\n _defaultComparator,\n _destroyColumnTree,\n _doOnce,\n _downloadFile,\n _errMsg,\n _error,\n _escapeString,\n _exists,\n _findFocusableElements,\n _findNextFocusableElement,\n _findTabbableParent,\n _flatten,\n _focusGridInnerElement,\n _focusInto,\n _focusNextGridCoreContainer,\n _formatNumberCommas,\n _fuzzySuggestions,\n _getAbsoluteHeight,\n _getAbsoluteWidth,\n _getActiveDomElement,\n _getAriaPosInSet,\n _getCallbackForEvent,\n _getCellByPosition,\n _getCellCtrlForEventTarget,\n _getCellPositionForEvent,\n _getCellRendererDetails,\n _getCheckboxLocation,\n _getCheckboxes,\n _getClientSideRowModel,\n _getColumnState,\n _getColumnsFromTree,\n _getDefaultFloatingFilterType,\n _getDocument,\n _getEditorRendererDetails,\n _getFillHandle,\n _getFilterDetails,\n _getFloatingFilterCompDetails,\n getFloatingFiltersHeight as _getFloatingFiltersHeight,\n _getGlobalGridOption,\n _getGrandTotalRow,\n _getGridRegisteredModules,\n _getGroupAggFiltering,\n _getGroupSelection,\n _getGroupSelectsDescendants,\n _getGroupTotalRowCallback,\n _getGroupingApproach,\n _getHeaderCheckbox,\n _getHeaderClassesFromColDef,\n getHeaderRowCount as _getHeaderRowCount,\n _getInnerCellRendererDetails,\n _getInnerHeight,\n _getInnerWidth,\n _getIsRowSelectable,\n _getLocaleTextFunc,\n _getMaxConcurrentDatasourceRequests,\n _getNormalisedMousePosition,\n _getPageBody,\n _getRootNode,\n _getRowAbove,\n _getRowBelow,\n _getRowContainerClass,\n _getRowContainerOptions,\n _getRowHeightAsNumber,\n _getRowHeightForNode,\n _getRowIdCallback,\n _getRowNode,\n _getRowSelectionMode,\n _getRowSpanContainerClass,\n _getRowViewportClass,\n _getServerSideRowModel,\n _getShouldDisplayTooltip,\n _getSuppressMultiRanges,\n _getToolPanelClassesFromColDef,\n _isAnimateRows,\n _isCellSelectionEnabled,\n _isClientSideRowModel,\n _isColumnMenuAnchoringEnabled,\n _isColumnsSortingCoupledToGroup,\n _isDomLayout,\n _isElementInEventPath,\n _isEventFromPrintableCharacter,\n _isGetRowHeightFunction,\n _isGroupMultiAutoColumn,\n _isGroupRowsSticky,\n _isGroupUseEntireRow,\n _isIOSUserAgent,\n _isKeyboardMode,\n _isLegacyMenuEnabled,\n _isMultiRowSelection,\n _isNodeOrElement,\n _isNothingFocused,\n _isPromise,\n _isRowBefore,\n _isRowSelection,\n _isSameRow,\n _isServerSideRowModel,\n _isShowTooltipWhenTruncated,\n _isStopPropagationForAgGrid,\n _isUsingNewCellSelectionAPI,\n _isUsingNewRowSelectionAPI,\n _isVisible,\n _jsonEquals,\n _last,\n _loadTemplate,\n _makeNull,\n _mergeDeep,\n _missing,\n _observeResize,\n _parseDateTimeFromString,\n _preInitErrMsg,\n _preserveRangesWhile,\n _processOnChange,\n _radioCssClass,\n _removeAriaExpanded,\n _removeAriaSort,\n _removeFromArray,\n _removeFromParent,\n _requestAnimationFrame,\n _resetColumnState,\n _selectAllCells,\n _serialiseDate,\n _setAriaActiveDescendant,\n _setAriaChecked,\n _setAriaColCount,\n _setAriaColIndex,\n _setAriaColSpan,\n _setAriaControls,\n _setAriaDescribedBy,\n _setAriaDisabled,\n _setAriaExpanded,\n _setAriaHasPopup,\n _setAriaHidden,\n _setAriaLabel,\n _setAriaLabelledBy,\n _setAriaLevel,\n _setAriaPosInSet,\n _setAriaRole,\n _setAriaRowCount,\n _setAriaRowIndex,\n _setAriaSelected,\n _setAriaSetSize,\n _setAriaSort,\n _setColMenuVisible,\n _setDisabled,\n _setDisplayed,\n _setFixedWidth,\n _setUmd,\n _setVisible,\n _shouldDisplayTooltip,\n _shouldUpdateColVisibilityAfterGroup,\n _stopPropagationForAgGrid,\n _toStringOrNull,\n _unwrapUserComp,\n _updateColsMap,\n _updateColumnState,\n _waitUntil,\n _warn,\n _warnOnce,\n buttonStyleAlpine,\n buttonStyleBalham,\n buttonStyleBase,\n buttonStyleQuartz,\n checkboxStyleDefault,\n colorSchemeDark,\n colorSchemeDarkBlue,\n colorSchemeDarkWarm,\n colorSchemeLight,\n colorSchemeLightCold,\n colorSchemeLightWarm,\n colorSchemeVariable,\n columnDropStyleBordered,\n columnDropStylePlain,\n createGrid,\n createPart,\n createTheme,\n iconOverrides,\n iconSetAlpine,\n iconSetMaterial,\n iconSetQuartz,\n iconSetQuartzBold,\n iconSetQuartzLight,\n iconSetQuartzRegular,\n inputStyleBase,\n inputStyleBordered,\n inputStyleUnderlined,\n isColumn,\n isColumnGroup2 as isColumnGroup,\n isColumnGroupAutoCol,\n isColumnSelectionCol,\n isProvidedColumnGroup,\n isRowNumberCol,\n provideGlobalGridOptions,\n styleMaterial,\n tabStyleAlpine,\n tabStyleBase,\n tabStyleMaterial,\n tabStyleQuartz,\n tabStyleRolodex,\n themeAlpine,\n themeBalham,\n themeMaterial,\n themeQuartz\n};\n","import{isSingleExpression as i}from\"./directive-helpers.js\";import{Directive as t,PartType as e}from\"./directive.js\";export{directive}from\"./directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=(i,t)=>{const e=i._$AN;if(void 0===e)return!1;for(const i of e)i._$AO?.(t,!1),s(i,t);return!0},o=i=>{let t,e;do{if(void 0===(t=i._$AM))break;e=t._$AN,e.delete(i),i=t}while(0===e?.size)},r=i=>{for(let t;t=i._$AM;i=t){let e=t._$AN;if(void 0===e)t._$AN=e=new Set;else if(e.has(i))break;e.add(i),c(t)}};function h(i){void 0!==this._$AN?(o(this),this._$AM=i,r(this)):this._$AM=i}function n(i,t=!1,e=0){const r=this._$AH,h=this._$AN;if(void 0!==h&&0!==h.size)if(t)if(Array.isArray(r))for(let i=e;i<r.length;i++)s(r[i],!1),o(r[i]);else null!=r&&(s(r,!1),o(r));else s(this,i)}const c=i=>{i.type==e.CHILD&&(i._$AP??=n,i._$AQ??=h)};class f extends t{constructor(){super(...arguments),this._$AN=void 0}_$AT(i,t,e){super._$AT(i,t,e),r(this),this.isConnected=i._$AU}_$AO(i,t=!0){i!==this.isConnected&&(this.isConnected=i,i?this.reconnected?.():this.disconnected?.()),t&&(s(this,i),o(this))}setValue(t){if(i(this._$Ct))this._$Ct._$AI(t,this);else{const i=[...this._$Ct._$AH];i[this._$Ci]=t,this._$Ct._$AI(i,this,0)}}disconnected(){}reconnected(){}}export{f as AsyncDirective,t as Directive,e as PartType};\n//# sourceMappingURL=async-directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=async(t,s)=>{for await(const i of t)if(!1===await s(i))return};class s{constructor(t){this.Y=t}disconnect(){this.Y=void 0}reconnect(t){this.Y=t}deref(){return this.Y}}class i{constructor(){this.Z=void 0,this.q=void 0}get(){return this.Z}pause(){this.Z??=new Promise((t=>this.q=t))}resume(){this.q?.(),this.Z=this.q=void 0}}export{i as Pauser,s as PseudoWeakRef,t as forAwaitOf};\n//# sourceMappingURL=private-async-helpers.js.map\n","import{noChange as t}from\"../lit-html.js\";import{isPrimitive as s}from\"../directive-helpers.js\";import{AsyncDirective as i}from\"../async-directive.js\";import{PseudoWeakRef as e,Pauser as r}from\"./private-async-helpers.js\";import{directive as o}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=t=>!s(t)&&\"function\"==typeof t.then,h=1073741823;class c extends i{constructor(){super(...arguments),this._$Cwt=h,this._$Cbt=[],this._$CK=new e(this),this._$CX=new r}render(...s){return s.find((t=>!n(t)))??t}update(s,i){const e=this._$Cbt;let r=e.length;this._$Cbt=i;const o=this._$CK,c=this._$CX;this.isConnected||this.disconnected();for(let t=0;t<i.length&&!(t>this._$Cwt);t++){const s=i[t];if(!n(s))return this._$Cwt=t,s;t<r&&s===e[t]||(this._$Cwt=h,r=0,Promise.resolve(s).then((async t=>{for(;c.get();)await c.get();const i=o.deref();if(void 0!==i){const e=i._$Cbt.indexOf(s);e>-1&&e<i._$Cwt&&(i._$Cwt=e,i.setValue(t))}})))}return t}disconnected(){this._$CK.disconnect(),this._$CX.pause()}reconnected(){this._$CK.reconnect(this),this._$CX.resume()}}const m=o(c);export{c as UntilDirective,m as until};\n//# sourceMappingURL=until.js.map\n","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n"],"names":["executeSnippetV1","_ref","_ref$wnd","wnd","m","n","e","t","l","o","g","y","a","b","s","i","v","p","getDocumentVar","globalVar","toV1String","_ref2","_ref2$shouldInsertScr","shouldInsertScript","_ref2$globalVar","_ref2$apiVersion","apiVersion","initFS","_a","orgId","_b","namespace","_c","debug","_d","host","_e","script","SnippetSrc","generateSnippetText","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread2","target","source","key","_defineProperty","obj","value","fs","ensureSnippetLoaded","snippetLoaded","hasFullStoryWithFunction","_len","testNames","_key","current","guard","name","message","_fs","log","getCurrentSessionURL","identify","setUserVars","consent","shutdown","restart","anonymize","setVars","_init","inputOptions","readyCallback","options","initOnce","fn","init","isInitialized","exports","luhn10","getCardTypes","verification","card","isPotentiallyValid","isValid","cardNumber","maxLength","testCardValue","potentialTypes","cardType","DEFAULT_LENGTH","includes","array","thing","max","maximum","cvv","__assign","parse_date_1","expiration_month_1","expiration_year_1","month","year","expirationDate","maxElapsedYear","date","fullDate","monthValid","yearValid","isValidForThisYear","expirationMonth","currentMonth","result","DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE","isCurrentYear","expirationYear","len","currentYear","firstTwo","currentFirstTwo","numericValue","twoDigitYear","valid","creditCardType","card_number_1","expiration_date_1","cvv_1","postal_code_1","cardValidator","arg","is_array_1","getNumberOfMonthDigitsInDateString","dateString","firstCharacter","assumedYear","parseDate","datestring","numberOfDigitsInMonth","identifier","sum","alt","num","module","DEFAULT_MIN_POSTAL_CODE_LENGTH","postalCode","minLength","cardTypes","add_matching_cards_to_results_1","is_valid_input_type_1","find_best_match_1","clone_1","customCards","cardNames","ORIGINAL_TEST_ORDER","testOrder","findType","getAllCardTypes","getCardPosition","ignoreErrorForNotExisting","position","results","cardConfiguration","bestMatch","config","existingCardPosition","updates","originalObject","clonedCard","currentPosition","matches_1","addMatchingCardsToResults","patternLength","pattern","clonedCardConfiguration","clone","hasEnoughResultsToDetermineBestMatch","numberOfResultsWithMaxStrengthProperty","findBestMatch","isValidInputType","matchesRange","min","maxLengthToCheck","substr","integerRepresentationOfCardNumber","matchesPattern","matches","EN_US","diff","idx","unit","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","localeFunc","agoIn","totalSec","relativeDate","relDate","rst","d","format","opts","sec","TIMER_POOL","clear","tid","run","node","minInterval","cancel","render","nodes","nodeList","en_US","zh_CN","r","c","u","f","w","N","A","j","x","h","F","LocalEventService","frameworkOverrides","eventType","async","autoCreateListenerCollection","listenerMap","listeners","listener","event","agEvent","browserEvent","processEventListeners","listeners2","originalListeners2","callback","originalListeners","flush","queueCopy","defaultLocaleTextFunc","defaultValue","_getLocaleTextFunc","localeSvc","_toggleAriaAttribute","element","attribute","_removeAriaAttribute","_setAriaAttribute","_ariaAttributeName","_setAriaRole","role","_getAriaSortState","sortDirection","sort","_getAriaPosInSet","_getAriaLabel","_setAriaLabel","label","_setAriaLabelledBy","labelledBy","_setAriaDescribedBy","describedby","_setAriaLive","live","_setAriaAtomic","atomic","_setAriaRelevant","relevant","_setAriaLevel","level","_setAriaDisabled","disabled","_setAriaHidden","hidden","_setAriaActiveDescendant","descendantId","_setAriaExpanded","expanded","_removeAriaExpanded","_setAriaSetSize","setsize","_setAriaPosInSet","_setAriaMultiSelectable","multiSelectable","_setAriaRowCount","rowCount","_setAriaRowIndex","rowIndex","_setAriaRowSpan","spanCount","_setAriaColCount","colCount","_setAriaColIndex","colIndex","_setAriaColSpan","colSpan","_setAriaSort","_removeAriaSort","_setAriaSelected","selected","_setAriaChecked","checked","_setAriaControls","controllerElement","controlledElement","_setAriaHasPopup","hasPopup","_getAriaCheckboxStateName","translate","state","isSafari","isChrome","isFirefox","isMacOs","isIOS","invisibleScrollbar","browserScrollbarWidth","maxDivHeight","_isBrowserSafari","_isBrowserChrome","win","_isBrowserFirefox","_isMacOsUserAgent","_isIOSUserAgent","_getTabIndex","el","numberTabIndex","tabIndex","_getMaxDivHeight","res","testUpTo","div","test","_getScrollbarWidth","initScrollbarWidthAndVisibility","body","width","_isInvisibleScrollbar","rtlNegativeScroll","_radioCssClass","elementClass","otherElementClass","parent","sibling","FOCUSABLE_SELECTOR","FOCUSABLE_EXCLUDE","_isFocusableFormField","isFocusable","isNotFocusable","isElementVisible","_isVisible","_setDisplayed","displayed","skipAriaHidden","_setVisible","visible","_setDisabled","attributeName","addOrRemoveDisabledAttribute","inputs","_isElementChildOfClass","cls","maxNest","counter","_getElementSize","height","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","marginTop","marginRight","marginBottom","marginLeft","boxSizing","_getInnerHeight","size","_getInnerWidth","_getAbsoluteHeight","_getAbsoluteWidth","_getElementRectWithOffset","offsetElementRect","_isRtlNegativeScroll","template","_getScrollLeft","rtl","scrollLeft","_setScrollLeft","_clearElement","_removeFromParent","_isInDOM","_loadTemplate","tempDiv","_ensureDomOrder","eContainer","eChild","eChildBefore","_setDomChildOrder","orderedChildren","correctCellAtIndex","actualCellAtIndex","_camelCaseToHyphenated","camelCase","_addStylesToElement","eElement","styles","parsedKey","valueAsString","parsedValue","priority","_isHorizontalScrollShowing","_isVerticalScrollShowing","_setElementWidth","_setFixedWidth","_formatSize","_setFixedHeight","_isNodeOrElement","_addOrRemoveAttribute","_observeResize","beans","ResizeObserverImpl","_getWindow","resizeObserver","_getTextSelectionRanges","rootNode","_getRootNode","selection","ranges","range","_preserveRangesWhile","_requestAnimationFrame","DataRefAttribute","whitespaceNode","getWhitespaceNode","_createElement","params","attrs","children","ref","tag","addFirstWhitespace","child","_makeNull","_exists","_missing","_toStringOrNull","_jsonEquals","val1","val2","val1Json","val2Json","_defaultComparator","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","doQuickCompare","BASE_URL","doOnceFlags","_doOnce","_logIfDebug","gos","args","_warnOnce","msg","_errorOnce","batchedCallsSetTimeout","batchedCallsRaf","_batchCall","mode","batch","runBatch","funcsCopy","func2","_debounce","bean","delay","timeout","context","_throttle","wait","previousCall","currentCall","_waitUntil","condition","timeoutMessage","timeStamp","interval","executed","internalCallback","reachedTimeout","VERSION","MAX_URL_LENGTH","MIN_PARAM_LENGTH","VERSION_PARAM_NAME","validation","suppressAllLogging","baseDocLink","provideValidationServiceLogger","logger","setValidationDocLink","docLink","getErrorParts","id","defaultMessage","minifiedLog","getMsgOrDefault","stringifyObject","inputObj","prop","stringifyValue","output","toStringWithNullUndefined","str","getParamsUrl","baseUrl","truncateUrl","sortedParams","url","excessLength","ellipse","truncateAmount","truncatedValue","getErrorLink","errorNum","errorLink","_warn","_error","_logPreInitErr","getErrMsg","_errMsg","_preInitErrMsg","isRowModelType","rowModelType","_isClientSideRowModel","rowModel","_isServerSideRowModel","_isDomLayout","domLayout","_isRowSelection","_getRowSelectionMode","_isGetRowHeightFunction","_shouldMaintainColumnOrder","isPivotColumns","_getRowHeightForNode","rowNode","allowEstimate","defaultRowHeight","environment","isNumeric","getMasterDetailRowHeight","gridOptionsRowHeight","_getRowHeightAsNumber","rowHeight","_getDomData","domData","_setDomData","domDataKey","_getDocument","eGridDiv","gridOptionsGetDocument","_getActiveDomElement","_getPageBody","targetEl","_getBodyWidth","_getBodyHeight","_anchorElementToMouseMoveEvent","mouseMoveEvent","browserWidth","browserHeight","offsetParentSize","clientY","clientX","top","left","eDocument","windowScrollY","windowScrollX","_isNothingFocused","activeEl","_isAnimateRows","_isGroupRowsSticky","_isColumnsSortingCoupledToGroup","autoGroupColumnDef","_getGroupAggFiltering","userValue","_getGrandTotalRow","_getGroupTotalRowCallback","_isGroupMultiAutoColumn","_isGroupUseEntireRow","pivotMode","_getRowIdCallback","getRowId","_canSkipShowingRowGroup","isSkippingGroups","_getMaxConcurrentDatasourceRequests","_shouldUpdateColVisibilityAfterGroup","isGrouped","preventVisibilityChanges","legacySuppressOnGroup","legacySuppressOnUngroup","_getCheckboxes","_getHeaderCheckbox","_getCheckboxLocation","rowSelection","_getHideDisabledCheckboxes","_isUsingNewRowSelectionAPI","_isUsingNewCellSelectionAPI","_getSuppressMultiRanges","_isCellSelectionEnabled","_getFillHandle","_getEnableClickSelection","suppressRowClickSelection","suppressRowDeselection","_getEnableSelection","enableClickSelection","_getEnableDeselection","_getIsRowSelectable","_isMultiRowSelection","_getEnableSelectionWithoutKeys","_getGroupSelection","groupSelectsChildren","groupSelectsFiltered","_getSelectAll","_getGroupSelectsDescendants","groupSelection","_getMasterSelects","_isSetFilterByDefault","_isLegacyMenuEnabled","_isColumnMenuAnchoringEnabled","_getCallbackForEvent","eventName","_combineAttributesAndGridOptions","gridOptions","component","gridOptionsKeys","mergedOptions","_processOnChange","changes","api","gridChanges","hasChanges","internalUpdateEvent","_addGridCommonParams","_getGroupingApproach","AG_GRID_STOP_PROPAGATION","PASSIVE_EVENTS","NON_PASSIVE_EVENTS","supports","_stopPropagationForAgGrid","_isStopPropagationForAgGrid","_isEventSupported","tags","_getCtrlForEventTarget","eventTarget","type","sourceElement","renderedComp","_isElementInEventPath","_getEventPath","_createEventPath","pointer","eventNoType","_addSafePassiveEventListener","passive","getPassiveStateForEvent","isPassive","isNonPassive","BeanStub","destroyFunctions","handlers","destroyFuncs","k","handler","destroyFunc","isAgEventEmitter","events","eventsKey","wrappedListener","propertiesChangeEvent","afterPreCreateCallback","SKIP_JS_BUILTINS","_iterateObject","_mergeDeep","dest","copyUndefined","makeCopyOfSimpleObjects","sourceValue","destValue","_isNonNullObject","_getValueUsingField","data","field","fieldContainsDots","fields","currentObject","reUnescapedHtml","HTML_ESCAPES","_escapeString","toEscape","skipEscapingHtmlChars","stringResult","chr","COL_DEF_DEFAULTS","instanceIdSequence","getNextColInstanceId","isColumn","col","AgColumn","colDef","userProvidedColDef","colId","primary","sortSvc","pinnedCols","colFlex","hide","colSpanChanged","tooltipField","suppressDotNotation","initialWidth","colDefWidth","colDefInitialWidth","userListener","firstRightPinned","lastLeftPinned","newValue","numberOfParents","isSpanningTotal","changed","rowSpan","actualWidth","silent","additionalEventAttributes","colEvent","isProvidedColumnGroup","AgProvidedColumnGroup","colGroupDef","groupId","padding","leafColumns","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","abstractColumn","headerGroupShow","expandable","process","items","item","DefaultColumnTypes","ColumnKeyCreator","colField","count","idToTry","_EmptyArray","_last","arr","_areEqual","comparator","index","_forAll","_removeFromArray","_moveInArray","objectsToMove","toIndex","_flatten","arrays","GROUP_AUTO_COLUMN_ID","SELECTION_COLUMN_ID","ROW_NUMBERS_COLUMN_ID","_getColumnsFromTree","rootColumns","recursiveFindColumns","childColumns","getWidthOfColsInList","columnList","_destroyColumnTree","oldTree","newTree","oldObjectsById","depthFirstOriginalTreeSearch","colsToDestroy","isColumnGroupAutoCol","isColumnSelectionCol","isRowNumberCol","convertColumnTypes","typeKeys","_areColIdsEqual","colsA","colsB","_updateColsMap","cols","_convertColumnEventSourceType","_columnsMatch","column","columnMatches","colDefMatches","idMatches","getValueFactory","stateItem","defaultState","key1","key2","calculated","_createColumnTree","defs","primaryColumns","existingTree","columnKeyCreator","existingCols","existingGroups","existingColKeys","extractExistingTreeData","unbalancedTree","_recursivelyCreateColumns","colGroupSvc","treeDept","columnTree","group","existingColsCopy","def","isColumnGroup","createColumn","existingColAndIndex","findExistingColumn","colDefMerged","_addColumnDefaultAndTypes","_updateColumnState","updateSomeColumnState","sortIndex","pinned","flex","widthBeforeUpdate","newColDef","isAutoCol","dataTypeSvc","validation2","defaultColDef","columnType","updateColDefAndGetColumnType","assignColumnTypes","autoGroupColDef","isSortingCoupled","userColDef","dataTypeDefinitionColumnType","columnTypes","allColumnTypes","userTypes","typeColDef","abstractColDef","tree","placeLockedColumns","normal","right","doesMovePassMarryChildren","allColumnsCopy","gridBalancedTree","rulePassed","columnGroup","newIndexes","newColIndex","maxIndex","minIndex","spread","maxSpread","getCommonValue","valueGetter","firstValue","dispatchColumnPinnedEvent","eventSvc","changedColumns","dispatchColumnVisibleEvent","dispatchColumnChangedEvent","columns","dispatchColumnResizedEvent","finished","flexColumns","_applyColumnState","colModel","rowGroupColsSvc","pivotColsSvc","autoColSvc","selectionColSvc","colAnimation","visibleCols","pivotResultCols","valueColsSvc","providedCols","syncColumnWithStateItem","rowGroupIndexes","pivotIndexes","autoCol","getValue","minColWidth","applyStates","states","existingColumns","getById2","dispatchEventsFunc","_compareColumnStatesAndDispatchEvents","columnsWithNoState","autoColStates","selectionColStates","unmatchedAndAutoStates2","unmatchedCount2","previousRowGroupCols","previousPivotCols","applyDefaultsFunc","comparatorByIndex","syncColStates","getCol","colStates","orderLiveColsLikeState","unmatchedAndAutoStates","unmatchedCount","pivotResultColsList","_resetColumnState","primaryCols","primaryColumnTree","columnStates","letRowGroupIndex","letPivotIndex","addColState","getColumnStateFromColDef","autoCols","orderedColState","startState","columnStateBefore","_getColumnState","columnStateBeforeMap","dispatchWhenListsDifferent","colsBefore","colsAfter","idMapper","beforeList","afterList","changesArr","getChangedColumns","changedPredicate","changedColumns2","colStateBefore","columnIdMapper","changedValues","cs","oldActive","activeChanged","aggFuncChanged","colStateAfter","normaliseColumnMovedEventForColumnState","rowGroupColumns","pivotColumns","createStateItemFromColumn","rowGroupIndex","pivotIndex","aggFunc","colIdToGridIndexMap","itemA","itemB","posA","posB","getValueOrNull","rowGroup","pivot","colIds","sortColsLikeKeys","newOrder","processedColIds","autoGroupInsertIndex","colStateAfterMapped","colsIntersectIds","beforeFiltered","afterFiltered","movedColumns","csAfter","csBefore","gridCol","indexes","oldList","colA","colB","indexA","indexB","aHasIndex","bHasIndex","oldIndexA","oldIndexB","aHasOldIndex","bHasOldIndex","ColumnModel","valueCache","colAutosize","colViewport","oldCols","treeDepth","list","map","newColDefs","prevColTree","rowNumbersSvc","quickFilter","showRowGroupCols","rowAutoHeight","shouldSortNewColDefs","services","service","updateOrder","pivotResultColsSvc","colDefCols","showAutoGroupAndValuesOnly","valueColumns","isAutoGroupCol","isValueCol","lastOrder","lastOrderMapped","colsMap","lastOrderFiltered","lastOrderFilteredMap","missingFromLastOrder","newCol","siblings","leafCol","presentInNewCols","notYetInSiblings","lastIndex","columnDefs","BaseColsService","compareFn","colKeys","masterList","detectOrderChange","autoGroupsNeedBuilding","columnCallback","gridColumns","oldIndex","added","actionIsAdd","atLeastOne","updatedCols","columnToAdd","currentIndex","eventColumns","oldProvidedCols","previousCols","colsWithIndex","colsWithValue","setFlagFunc","getIndexFunc","getInitialIndexFunc","getValueFunc","getInitialValueFunc","colIsNew","initialValue","initialIndex","include","getIndexForCol","defaultIndex","columnStateAccumulator","incomingColumnState","colList","updatedColIdArray","updatedColIds","newColIds","allColIds","colIdsInOriginalOrder","originalOrderMap","orderIndex","hasAddedNewCols","enableProp","initialEnableProp","indexProp","initialIndexProp","processPrecedingNewCols","originalOrderIndex","newColId","GroupInstanceIdCreator","lastResult","EmptyBean","setupCompBean","ctrl","ctx","compBean","CssClassManager","getGui","className","eGui","addOrRemove","compIdSequence","RefPlaceholder","Component","templateOrParams","componentSelectors","comp","debugId","css","paramsMap","elementRef","newComponent","usedAsParamRef","parentNode","childNodeList","childNode","childComp","childComp2","childGui","attr","isAgGridComponent","componentSelector","componentParams","eComponent","elements","components","suppressDataRefValidation","cssSelector","newChild","container","_isPromise","AgPromise","_AgPromise","promises","resolve","remainingToResolve","combinedValues","promise","waiter","_","doesImplementIComponent","candidate","_getUserCompKeys","defObject","compName","jsComp","fwComp","paramsFromSelector","popupFromSelector","popupPositionFromSelector","defObjectAny","selectorFunc","selectorRes","assignComp","providedJsComp","UserComponentFactory","defaultName","mandatory","cellRenderer","defaultCompParams","lookupFromRegistry","paramsMerged","componentFromFramework","componentClass","ComponentClass","jsComponent","instance","deferredInit","paramsFromGrid","userParams","userParamsFromFunc","DateComponent","DragAndDropImageComponent","HeaderComponent","InnerHeaderComponent","InnerHeaderGroupComponent","HeaderGroupComponent","InnerCellRendererComponent","CellRendererComponent","EditorRendererComponent","LoadingCellRendererComponent","CellEditorComponent","LoadingOverlayComponent","NoRowsOverlayComponent","TooltipComponent","FilterComponent","FloatingFilterComponent","FullWidth","FullWidthLoading","FullWidthGroup","FullWidthDetail","_getDragAndDropImageCompDetails","userCompFactory","_getInnerCellRendererDetails","_getHeaderCompDetails","_getInnerHeaderCompDetails","headerCompParams","_getHeaderGroupCompDetails","_getInnerHeaderGroupCompDetails","headerGroupCompParams","_getFullWidthCellRendererDetails","_getFullWidthLoadingCellRendererDetails","_getFullWidthGroupCellRendererDetails","_getFullWidthDetailCellRendererDetails","_getCellRendererDetails","_getEditorRendererDetails","_getLoadingCellRendererDetails","_getCellEditorDetails","_getFilterDetails","defaultFilter","_getDateCompDetails","_getLoadingOverlayCompDetails","_getNoRowsOverlayCompDetails","_getTooltipCompDetails","_getFloatingFilterCompDetails","defaultFloatingFilter","_getFilterCompKeys","_mergeFilterParamsWithApplicationProvidedParams","_unwrapUserComp","compAsAny","allRegisteredModules","globalModulesMap","gridModulesMap","currentModuleVersion","areGridScopedModules","isUmd","isValidModuleVersion","moduleMajor","moduleMinor","currentModuleMajor","currentModuleMinor","runVersionChecks","errorMsg","details","_registerModule","gridId","rowModels","moduleStore","dependency","_unRegisterGridModules","_isModuleRegistered","moduleName","isRegisteredForRowModel","model","_areModulesGridScoped","_getRegisteredModules","gridModules","_getAllRegisteredModules","_getGridRegisteredModules","_isUmd","_setUmd","ModuleRegistry","modules","GenericContext","beanName","BeanClass","beanFunc","beanInstances","Context","CSS_FIRST_COLUMN","CSS_LAST_COLUMN","_getHeaderClassesFromColDef","getColumnClassesFromCollDef","_getToolPanelClassesFromColDef","refreshFirstAndLastStyles","presentedColsService","getClassParams","classesOrFunc","classToUse","KeyCode","keyboardModeActive","instanceCount","addKeyboardModeEvents","doc","toggleKeyboardMode","removeKeyboardModeEvents","isKeyboardActive","isKeyboardEvent","_registerKeyboardFocusEvents","_isKeyboardMode","_addFocusableContainerListener","backwards","_findNextFocusableElement","_focusNextGridCoreContainer","_findFocusableElements","exclude","onlyUnmanaged","focusableString","excludeString","excludeNodes","_focusInto","up","excludeTabGuards","focusableElements","toFocus","onlyManaged","focusable","nextIndex","_findTabbableParent","limit","_focusGridInnerElement","fromBottom","_isHeaderFocusSuppressed","_isCellFocusSuppressed","forceOut","gridCtrl","_isDeleteKey","alwaysReturnFalseOnBackspace","CellKeyboardListenerFeature","cellCtrl","rowCtrl","currentCellPosition","rangeSvc","navigation","endCell","emptyValue","CellMouseListenerFeature","mouseEvent","editSvc","isMultiKey","cellClickedEvent","cellDoubleClickedEvent","ctrlKey","metaKey","shiftKey","focusSvc","hasRanges","containsWidget","cellPosition","isRowNumberColumn","shouldFocus","forceBrowserFocus","focusedCellPosition","rowPinned","focusedRowCtrl","focusedCellCtrl","cellInRange","isRightClick","colHover","eCell","cellContainsTarget","cellContainsRelatedTarget","CellPositionFeature","cellSpan","spanHeight","colsSpanning","mostLeftCol","leftPosition","leftWidth","bodyWidth","force","totalRowHeight","CSS_CELL","CSS_AUTO_HEIGHT","CSS_NORMAL_HEIGHT","CSS_CELL_FOCUS","CSS_CELL_FIRST_RIGHT_PINNED","CSS_CELL_LAST_LEFT_PINNED","CSS_CELL_NOT_INLINE_EDITING","CSS_CELL_WRAP_TEXT","DOM_DATA_KEY_CELL_CTRL","_getCellCtrlForEventTarget","instanceIdSequence2","CellCtrl","colIdSanitised","shouldDisplayTooltip","_eWrapper","eCellWrapper","printLayout","startEditing","forceNewCellRendererInstance","skipRangeHandleRefresh","rangeFeature","valueToDisplay","compDetails","isSsrmLoading","groupDisplayType","checkboxLocation","isSelectionColumn","selectionChanged","rowDragChanged","dndSourceChanged","autoHeightChanged","valueFormatted","valueSvc","value2","rowDraggerElement","dragStartPixels","suppressVisibilityChange","newData","suppressFlash","noValueProvided","forceRefresh","isCellCompReady","valuesDifferent","dataNeedsUpdating","processingFilterChange","compareValues","oldValue","oldValueFormatted","domEvent","colIdx","waitForRender","focus","focusableElement","suppressCellFocus","isFocused","cellFocused","focusEl","focusableEls","fullRowEdit","autoHeight","cellContextMenuEvent","cbSelectionComponent","dndSourceComp","customElement","newComp","rowDragComp","_cellPosition","GRID_DOM_KEY","_stampTopLevelGridCompWithGridInstance","_isEventFromThisGrid","_isElementInThisGrid","instanceId","_getCellPositionForEvent","_getNormalisedMousePosition","gridPanelHasScrolls","scrollFeature","vRange","hRange","DragSourceType","DragSourceType2","DragAndDropService","dragSource","allowTouch","dragAndDropImageComp","dragSourceAndParamsList","dragSvc","sourceAndParams","dropTargets","lastDropTarget","draggingEvent","fromNudge","hDirection","vDirection","validDropTargets","dropTarget","dragItem","resolvedComponent","secondaryContainers","containers","allContainersFromDropTarget","mouseOverTarget","allContainersIntersect","mouseEvent2","bottom","horizontalFit","verticalFit","currentContainers","elementStack","dragEnterEvent","dragLeaveEvent","dragAndDropImageComponent","zones","zone","gridGui","dropZoneTarget","eClientX","eClientY","rect","userCompDetails","dragItemName","elementFn","AutoScrollService","forceSkipVerticalScroll","skipVerticalScroll","scrollTick","tickAmount","vScrollPosition","hScrollPosition","_createCellId","_areCellsEqual","cellA","cellB","colsMatch","floatingMatch","indexMatch","_isRowBefore","rowA","rowB","_isSameRow","_getFirstRow","pinnedRowModel","pageBounds","_getLastRow","pinnedBottomCount","pinnedTopCount","_getRowNode","gridRow","_getCellByPosition","spannedCellCtrl","_getRowAbove","rowPosition","getNextStickyPosition","_getRowBelow","isLastRowInContainer","rowRenderer","stickyRowCtrls","nextCtrl","RowDragFeature","ctrlsSvc","gridBodyCon","filterManager","currentNode","selectedNodes","dragSourceDomDataKey","pixel","dragAndDrop","isFromThisGrid","managedDrag","rowNodes","rowIndexStr","clientSideRowModel","lastHighlightedRowNode","isBelow","increment","getRowIdFunc","addIndex","processedParams","getContainer","onDragEnter","onDragLeave","onDragging","onDragStop","onDragCancel","yNormalised","mouseIsPastLastRow","overIndex","overNode","dragging","_areEventsNear","e1","e2","pixelCount","diffX","diffY","DragService","dragSources","dragSourceAndListener","mouseDownListener","touchStartListener","mouseListener","includeTouch","stopPropagationForTouch","touchListener","suppressTouch","touchEvent","touch","touchMoveEvent","touchEndEvent","documentTouchMove","mouseUpEvent","contextEvent","keydownEvent","currentEvent","startEvent","requiredPixelDiff","touchList","isEnableCellTextSelect","isMouseMove","isOverFormFieldElement","tagName","eventOrTouch","dragEndFunctions","createUniqueColumnGroupId","isColumnGroup2","AgColumnGroup","providedColumnGroup","partId","allLeafColumns","lastChildLeft","firstChildLeft","groupActualWidth","groupChild","parentWithExpansion","ROW_ID_PREFIX_ROW_GROUP","ROW_ID_PREFIX_TOP_PINNED","ROW_ID_PREFIX_BOTTOM_PINNED","OBJECT_ID_SEQUENCE","RowNode","update","selectionSvc","oldData","oldNode","parentKeys","rowTop","hovered","estimated","forceSync","colKey","eventSource","valueChanged","rowChildrenSvc","cellChangedEvent","clearSelection","isFullWidthCellFunc","firstChild","allChildrenCount","uiLevel","_createGlobalRowEvent","FilterWrapperElement","FilterWrapperComp","filter","guiFromFilter","RESIZE_CONTAINER_STYLE","makeDiv","dataRefPrefix","classSuffix","RESIZE_TEMPLATE","PositionableFeature","clientHeight","clientWidth","centered","forcePopupParentAsOffsetParent","minWidth","minHeight","computedMinHeight","computedMinWidth","boundaryEl","offsetParentComputedStyles","paddingWidth","paddingHeight","initialisedDuringPositioning","movable","moveElement","resizable","side","isSideResizable","resizerEl","popup","isPercent","availableHeight","elRect","offsetParentRect","yPosition","parentTop","additionalHeight","parentEl","xPosition","ePopup","constrain","applyMaxHeightToElement","isLeft","isTop","anywhereWithin","topBuffer","xDiff","yDiff","movementX","movementY","parentRect","boundaryElRect","skipX","skipY","getElement","currentEl","isFlex","nextHeight","nextWidth","computedStyle","vertical","containerToFlex","isRight","isBottom","isHorizontal","isVertical","offsetLeft","offsetTop","direction","oldWidth","newWidth","skipWidth","oldHeight","newHeight","skipHeight","FOCUS_MANAGED_CLASS","ManagedFocusFeature","eFocusable","callbacks","nextRoot","onFocusIn","onFocusOut","FILTER_LOCALE_TEXT","getDebounceMs","debounceDefault","debounceMs","isUseApplyButton","ProvidedFilter","filterNameKey","newParams","oldParams","oldButtons","oldReadOnly","buttons","readOnly","hasButtons","fragment","addButton","clickListener","text","button","debounceFunc","currentModel","afterUiUpdatedFunc","afterAppliedFunc","newModel","previousModel","afterFloatingFilter","afterDataChange","closeOnApply","keyboardEvent","fromFloatingFilter","apply","applyFilterButton","containerType","positionableFeature","_getDefaultFloatingFilterType","getFromDefault","defaultFloatingFilterType","LayoutCssClasses","LayoutFeature","view","cssClass","VIEWPORT","FAKE_V_SCROLLBAR","HORIZONTAL_SOURCES","SCROLL_DEBOUNCE_TIMEOUT","SCROLL_END_TIMEOUT","GridBodyScrollFeature","eBodyViewport","invalidateVerticalScroll","invalidateHorizontalScroll","scrollPartner","fakeVScrollComp","isDebounce","onVScroll","onFakeVScroll","viewport","centerContainerViewport","newScrollLeft","scrollTop","animationFrameSvc","fakeScrollLeft","bodyScrollEvent","scrollTo","touchOnly","scrollHeight","scrollWidth","suppressedAnimationFrame","frameNeeded","fromAlignedGridsService","maxScrollLeft","lastOffsetHeight","lastScrollTop","offsetHeight","pixels","oldScrollPosition","indexToSelect","heightScaler","gridBodyCtrl","rowGotShiftedDuringOperation","stickyHeightsChanged","attempt","stickyTopHeight","stickyBottomHeight","startingRowTop","startingRowHeight","paginationOffset","rowTopPixel","rowBottomPixel","scrollPosition","heightOffset","vScrollTop","vScrollBottom","viewportHeight","pxTop","pxBottom","pxMiddle","rowAboveViewport","rowBelowViewport","newScrollPosition","newHorizontalScroll","columnBeforeStart","columnAfterEnd","viewportTooSmallForColumn","viewportWidth","isRtl","alignColToStart","alignColToEnd","isMiddle","colLeft","colMiddle","colRight","viewportStart","viewportEnd","colWidth","multiplier","colLeftPixel","colRightPixel","colMidPixel","viewportStartPixel","viewportEndPixel","CenterWidthFeature","addSpacer","scrollVisibleSvc","centerWidth","rightWidth","totalWidth","ViewportSizeFeature","centerContainerCtrl","bodyHeight","processClassRules","expressionSvc","previousClassRules","classRules","onApplicableClass","onNotApplicableClass","classesToApply","classesToRemove","forEachSingleClass","singleClass","classNames","rule","resultOfRule","calculateRowLevel","RowStyleService","classes","rowCls","rowClass","rowClassFunc","rowClassFuncResult","rowClassParams","rowStyle","rowStyleFunc","rowStyleFuncResult","instanceIdSequence3","DOM_DATA_KEY_ROW_CTRL","RowCtrl","animateIn","useAnimationFrameForCreate","businessKey","gui","rowComp","isSsrmLoadingRow","isIrmLoadingRow","rowGui","cached","displayValue","rg","rowId","rowDragBean","leftGui","centerGui","rightGui","isLeftReady","isCenterReady","isRightReady","isStub","isFullWidthCell","isDetailCell","isFullWidthGroup","suppressAnimationFrame","useFlushSync","cell","prev","addCell","colInstanceId","colsFromPrev","focusedColInstanceId","prevCellCtrl","normalisedIndex","cellControls","centerCols","leftCols","rightCols","nextContainerPinned","editing","focused","oldRowTopExists","pinningLeft","pinningRight","slideInAnimation","fadeInAnimation","tryRefresh","fullWidthSuccess","centerSuccess","leftSuccess","rightSuccess","highlighted","aboveOn","belowOn","groupInfo","lastFocusedCell","currentFullWidthComp","currentFullWidthContainer","isFullWidthContainerFocused","isDetailGridCellFocused","nextEl","displayedEl","cellCtrlToRemove","fullWidthRowGui","eDetailGui","eRow","compFactory","rowDragSvc","newLevel","classToAdd","classToRemove","newFirst","newLast","cssClasses","classStr","updateStyles","gui2","rowContainerType","fullWidthRow","rowStyleSvc","minPixel","maxPixel","heightFromFunc","lineHeight","suppressAnimation","destroyCellCtrls","ctrls","rowFocused","currentPage","topPx","reverse","pixelOffset","afterPaginationPixels","skipColSpanSearch","headerRowCount","rowIsEven","ariaRowIndex","_isEventFromPrintableCharacter","_isUserSuppressingKeyboardEvent","colDefFunc","_selectAllCells","isEmptyPinnedTop","isEmptyPinnedBottom","floatingStart","floatingEnd","rowEnd","allDisplayedColumns","A_KEYCODE","C_KEYCODE","V_KEYCODE","D_KEYCODE","Z_KEYCODE","Y_KEYCODE","_normaliseQwertyAzerty","keyCode","code","RowContainerEventsFeature","focusedCell","clipboardSvc","undoRedo","SetHeightFeature","eViewport","maxDivHeightScaler","heightString","getTopRowCtrls","getStickyTopRowCtrls","getStickyBottomRowCtrls","getBottomRowCtrls","getCentreRowCtrls","getSpannedTopRowCtrls","getSpannedCenterRowCtrls","getSpannedBottomRowCtrls","ContainerCssClasses","_getRowViewportClass","_getRowContainerOptions","_getRowContainerClass","_getRowSpanContainerClass","allTopNoFW","allBottomNoFW","allMiddleNoFW","allMiddle","allCenter","allLeft","allRight","allStickyTopNoFW","allStickyBottomNoFW","allStickyContainers","allNoFW","RowContainerCtrl","names","eSpannedContainer","pinnedWidthChanged","spannedRowRenderer","spannedCtrls","isEnsureDomOrder","isPrintLayout","preventScroll","afterScroll","unsubscribeFromResize","offset","rows","embedFW","rowsThisContainer","CSS_CLASS_FORCE_VERTICAL_SCROLL","CSS_CLASS_CELL_SELECTABLE","CSS_CLASS_COLUMN_MOVING","GridBodyCtrl","eGridBody","eTop","eBottom","eStickyTop","eStickyBottom","props","setFloatingHeights","setGridRootRole","scrollbarWidth","pad","isTreeGrid","isPivotActive","isFocusedElementNested","relatedTarget","gridContainRelatedTarget","isNestedRelatedTarget","moving","selectable","classList","headerCount","total","overflowY","show","allowVerticalScroll","rowContainerHeight","initialSizeMeasurementComplete","updateAnimationClass","animateRows","animateRowsCssClass","popupSvc","touchSvc","deltaX","deltaY","isHorizontalScroll","floatingTopHeight","floatingBottomHeight","vScrollVisible","headerHeight","pinnedTopHeight","pinnedBottomHeight","AbstractFakeScrollComp","onActivate","onDeactivate","FakeHScrollElement","FakeHScrollComp","spacerWidthsListener","bottomPinnedHeight","vScrollShowing","rightSpacing","scrollOnRight","leftSpacing","hScrollShowing","invisibleScrollbar2","isSuppressHorizontalScroll","scrollContainerSize","FakeHScrollSelector","FakeVScrollElement","FakeVScrollComp","adjustedScrollbarWidth","gridBodyViewportEl","eViewportScrollTop","gridBodyViewportScrollTop","FakeVScrollSelector","getHeaderRowCount","getFocusHeaderRowCount","getGroupRowsHeight","heights","headerRowContainerCtrls","headerRowContainerCtrl","groupRowCount","headerRowCtrl","currentHeightAtPos","getColumnGroupHeaderRowHeight","maxDisplayedHeight","getPivotGroupHeaderHeight","getGroupHeaderHeight","headerRowCellCtrls","headerCellCtrl","getColumnHeaderRowHeight","getPivotHeaderHeight","getHeaderHeight","getFloatingFiltersHeight","GridHeaderCtrl","eFocusableElement","headerNavigation","totalHeaderHeight","groupHeight","curr","px","shouldAllowOverflow","menuSvc","AbstractHeaderCellComp","HeaderCellElement","HeaderCellComp","compProxy","cssClassName","on","selectAllGui","versionCopy","version","headerComp","HeaderGroupCellCompElement","HeaderGroupCellComp","setAttribute","headerGroupComp","eHeaderGroupGui","style","eHeaderCompWrapper","HeaderFilterCellCompElement","HeaderFilterCellComp","eIcon","HeaderRowComp","forceOrder","oldComps","comps","leftA","leftB","elementsInOrder","headerCtrl","SetLeftFeature","columnOrGroup","onLeftChanged","suppressMoveAnimation","oldLeftExists","colOrGroup","oldActualLeft","actualLeft","instanceIdSequence4","DOM_DATA_KEY_HEADER_CTRL","AbstractHeaderCellCtrl","refreshTabIndex","headerRowIndex","headerStyle","cellStyleParams","wrapperElement","checkMeasuringCallback","measureHeight","timesCalled","extraHeight","notYetInDom","possiblyNoContentYet","isMeasuring","stopResizeObserver","checkMeasuring","startMeasuring","stopMeasuring","suppressHeaderFocus","isLeftOrRight","wrapperHasFocus","HeaderCellCtrl","eResize","compBeanInput","colResize","delta","colFilter","buttonElement","onClosedCallback","multiSort","isFilterShortcut","isHeaderComp","refreshHeaderClasses","oldClasses","eSource","newCompDetails","columnWidth","updateSortableCssClass","isFilterActive","wrapText","beforeOn","afterOn","groupHeaderHeight","isZeroGroupHeight","next","property","ariaDescription","contextMenuListener","isMouseOver","active","isFilter","instanceIdSequence5","HeaderRowCtrl","typeClass","initCompState","onHeightChanged","onDisplayedColumnsChanged","topOffset","sizes","groupHeadersHeight","ctrlsToDisplay","oldCtrls","isFocusedAndDisplayed","oldCtrl","headerColumn","currCtrls","idOfChild","viewportColumns","actualDepth","ctrl2","HeaderRowContainerCtrl","colMoves","onDisplayedColsChanged","headerType","keepColumns","sequence","focusedHeaderPosition","refreshColumnGroups","refreshColumns","needNewInstance","refreshFilters","destroyPreviousComp","rowIndexMismatch","allCtrls","findCtrl","dropContainer","bodyDropTarget","includeFloatingFilter","MenuService","enterpriseMenuFactory","filterMenuFactory","menuFactory","suppressHeaderMenuButton","menuHides","suppressMenuHide","filtersOnly","positionBy","_setColMenuVisible","OverlayComponent","LoadingOverlayElement","LoadingOverlayComponent2","customTemplate","localeTextFunc","NoRowsOverlayElement","NoRowsOverlayComponent2","_createIcon","iconName","iconContents","_createIconNoSpan","eResult","userProvidedIcon","icons","optionsIcons","rendererResult","iconValue","dragAndDropImageComponentCSS","DragAndDropElement","DragAndDropImageComponent2","create","shake","dropIconMap","eIconChild","agAbstractLabelCSS","AgAbstractLabel","labelSeparator","labelWidth","labelAlignment","eLabel","alignment","eGuiClassList","hasEllipsis","AgAbstractField","onValueChange","ariaEl","labelId","callbackFn","buildTemplate","displayFieldTag","AgAbstractInputField","inputType","eWrapper","eInput","inputName","inputWidth","length","placeholder","autoCompleteValue","AgCheckbox","previousValue","nextValue","AgCheckboxSelector","checkboxCellRendererCSS","CheckboxCellRendererElement","CheckboxCellRenderer","eCheckbox","inputEl","isSelected","stateName","ariaLabel","sharedEventParams","ROOT_NODE_ID","AbstractClientSideNodeManager","rowData","dataItem","reorder","changedRowNodes","processedNodes","oldAllLeafChildren","oldAllLeafChildrenLen","nodesAdded","nodesRemoved","nodesUpdated","orderChanged","prevSourceRowIndex","sourceRowIndex","nodesToUnselect","newAllLeafChildren","writeIdx","allNodesMap","rowDataTran","updateRowDataResult","add","allLeafChildren","addLength","newNodes","newNode","nodesBeforeIndex","nodesAfterIndex","nodesAfterIndexFirstIndex","rowNodeTransaction","remove","rowIdsRemoved","ServerSideTransactionResultStatus","ServerSideTransactionResultStatus2","CheckboxSelectionComponentElement","CheckboxSelectionComponent","ariaKey","translatedLabel","currentValue","showOrHideSelectListener","overrides","isVisible","extraParams","so","RowRangeSelectionContext","end","root","nodeInRange","fallback","discardAfter","above","below","keep","node2","newRange","newRangeNode","discard","SelectAllFeature","checkbox","cbSelectAll","getSelectAll","fromColumnMoved","cbSelectAllVisible","selectAllMode","allSelected","hasNodesToSelect","ariaStatus","feature","selectAll2","headerCheckboxSelection","newHeaderCheckbox","isSelectionCol","featureName","headerCheckboxSelectionCurrentPageOnly","headerCheckboxSelectionFilteredOnly","BaseSelectionService","hasFocusFunc","suppressSelectionUpdate","newVal","atLeastOneSelected","atLeastOneDeSelected","childState","selectionNotAllowed","selectionNotChanged","selectionCtx","currentSelection","groupSelectsDescendants","enableDeselection","isMultiSelect","isRowClicked","partition","enableSelectionWithoutKeys","shouldClear","AgRadioButton","agToggleButtonCSS","AgToggleButton","AgToggleButtonSelector","AgInputTextField","preventCharacters","AgInputTextFieldSelector","AgInputTextArea","ret","AgInputTextAreaSelector","AgInputNumberField","floatedValue","precision","step","val","isScientificNotation","floatString","parts","setValueFunc","setInputValueOnlyFunc","setInputValueOnly","normalizedValue","inputValue","AgInputNumberFieldSelector","_padStartWidthZeros","totalStringSize","_serialiseDate","includeTime","separator","serialised","part","calculateOrdinal","_dateToFormattedString","fullYear","months","days","replace","regexp","match","_parseDateTimeFromString","dateStr","timeStr","day","hours","minutes","seconds","AgInputDateField","usingSafari","minDate","maxDate","AgInputDateFieldSelector","SHOW_QUICK_TOOLTIP_DIFF","FADE_OUT_TOOLTIP_TIMEOUT","INTERACTIVE_HIDE_DELAY","lastTooltipHideTime","isLocked","TooltipStateManager","tooltipCtrl","getTooltipValue","delayOption","trigger","parentCompGui","tooltipGui","fromHideTooltip","userDetails","forceHide","tooltipInstanceCopy","tooltipComp","addPopupRes","parentGui","tooltipPopupDestroyFunc","_isShowTooltipWhenTruncated","_getShouldDisplayTooltip","_shouldDisplayTooltip","TooltipFeature","tooltip","AgList","cssIdentifier","unFocusable","pos","isDown","itemToHighlight","itemEls","highlightedEl","nextPos","currentIdx","itemHeight","pageSize","newIndex","listOptions","listOption","valueToRender","itemEl","option","span","agPickerFieldCSS","AgPickerFieldElement","AgPickerField","pickerGap","maxPickerHeight","variableWidth","minPickerWidth","maxPickerWidth","displayId","pickerIcon","icon","focusableEl","pickerGui","ePicker","pickerAriaLabelKey","pickerAriaLabelValue","modalPicker","popupParams","shouldRestoreFocus","maxHeight","pickerType","pickerComponent","alignSide","gap","agSelectCSS","AgSelect","listComponent","eListAriaEl","listId","fromPicker","eDisplayField","tooltipFeature","AgSelectSelector","TabGuardClassNames","TabGuardCtrl","eTopGuard","eBottomGuard","focusTrapActive","forceFocusOutWhenTabGuardsAreEmpty","isFocusableContainer","focusInnerElement","shouldStopEventPropagation","onTabKeyDown","handleKeyDown","isEmpty","start","focusableRange","targetTabIndex","tabGuardsAreActive","tabGuardToFocus","allowFocus","TabGuardFeature","tabGuards","tabGuard","topTabGuard","bottomTabGuard","appendChild","TabGuardComp","PopupComponent","parentComp","TouchListener","preventMouseClick","startListener","moveListener","endListener","touchStartCopy","touchesMatch","now","CellRangeType","CellRangeType2","VanillaFrameworkOverrides","frameworkName","action","eventListenerOptions","path","createGridApi","orderedCoreBeans","beanNamePosition","gridBeanInitComparator","bean1","bean2","index1","index2","gridBeanDestroyComparator","PinnedLeftElement","PinnedRightElement","CenterElement","HeaderRowContainerComp","pinnedLeft","pinnedRight","oldRowComps","prevGui","appendEnsuringDomOrder","ctrlId","existingComp","GridHeaderElement","GridHeaderComp","addContainer","GridHeaderSelector","CellComp","editingRow","cellDiv","wrapperDiv","controlWrapperChanged","providingControls","usingWrapper","putWrapperIn","takeWrapperOut","usingCellValue","putCellValueIn","takeCellValueOut","templateChanged","eCellValue","includeRowDrag","includeDndSource","includeSelection","insertBefore","cellEditorPromise","eParent","escapedValue","compClassAndParams","displayComponentVersionCopy","createCellRendererFunc","componentPromise","cellRendererVersion","cellRendererClass","cellGui","requestVersion","cellEditor","staleComp","cellEditorInPopup","isPopup","cellCssClassManager","ePopupGui","useModelPopup","positionToUse","positionParams","positionCallback","RowComp","rowDiv","domOrder","cellCtrls","transform","getUpdatedParams","cellsToRemove","cellComp","fullWidthRowComponent","cellComps","getElementParams","isCellSpanning","eContainerElement","eSpannedContainerElement","RowContainerComp","rowCtrls","spanContainer","oldRows","newComps","orderedRows","existingRowComp","isNew","rowComps","oldRowComp","RowContainerSelector","makeRowContainers","refName","getGridBodyTemplate","includeOverlay","elementParams","GridBodyComp","overlays","overlaySelector","setHeight","animate","display","flag","classLists","overflow","ct","bodyViewportClassList","GridBodySelector","GridCtrl","focusableContainers","indexWithFocus","allColumns","lastColumn","userCallbackFunction","coreContainers","GridComp","requiredComps","eRootWrapperBodyClassList","AUTO_HEIGHT","NORMAL","PRINT","print","dropZones","sideBar","statusBar","watermark","pagination","mod","gridApiFunctionsMap","defaultFns","dispatchEvent","GridApiClass","ApiFunctionService","functionName","fns","apiName","fnName","preDestroyLink","getGridId","destroy","isDestroyed","getGridOption","setGridOption","updateGridOptions","DndSourceElement","DndSourceComp","dragEvent","providedOnRowDrag","dataTransfer","jsonData","addRowDropZone","removeRowDropZone","activeDropTarget","getRowDropZoneParams","HorizontalResizeService","RowDragElement","RowDragComp","cellValueFn","customGui","strategy","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","dragElement","dragItemCount","rowDragText","VisibilityStrategy","neverDisplayed","displayedOptions","shown","isShownSometimes","rowDragFeature","shouldPreventRowMove","suppressRowDrag","hasExternalDropZones","RowDragService","DragModule","DragAndDropModule","SharedDragAndDropModule","RowDragModule","HorizontalResizeModule","columnMovingCSS","ColumnAnimationService","suppress","animationThreadCountCopy","callbackNext","callbackLater","executeNextFuncs","executeLaterFuncs","runFuncs","queue","moveColumnByIndex","fromIndex","moveColumns","columnsToMoveKeys","BodyDropPivotTarget","dragColumns","sortColsLikeCols","colsList","getBestColumnMoveIndexFromXPosition","isFromHeader","fromLeft","fromEnter","fakeEvent","allMovingColumns","newCols","movingGroup","allMovingColumnsOrdered","validMoves","calculateValidMoves","calculateOldIndex","firstValidMove","constrainDirection","displayedCols","potentialMoves","targetOrder","move","order","displayedOrder","fragCount","groupFragCount","attemptMoveColumns","movingCols","gridCols","firstIndex","parents","getDisplayedColumns","draggingRight","allDisplayedCols","allGridCols","movingDisplayedCols","otherDisplayedCols","otherGridCols","displayIndex","availableWidth","widthOfMovingDisplayedCols","leftColumn","numberComparator","displacedCol","firstDisplayIndex","normaliseX","fromKeyboard","useHeaderRow","skipScrollPadding","setColumnsMoving","isMoving","MOVE_FAIL_THRESHOLD","SCROLL_MOVE_WIDTH","SCROLL_GAP_NEEDED_BEFORE_MOVE","SCROLL_ACCELERATION_RATE","SCROLL_TIME_INTERVAL","MoveColumnFeature","lastDraggingEvent","colPinned","visibleState","visibleColumns","isSuppressMoveWhenDragging","mouseX","allowedCols","lastMovedInfo","isAttemptingToPin","useSplit","conditionCallback","movingColumns","consideredColumns","targetColumn","currentColumn","leafDisplayedCols","setColumnHighlighted","firstMovingCol","movingColIndex","targetIndex","isBefore","lastHighlightedColumn","lastMovingCol","findFirstAndLastMovingColumns","isMovingHorizontally","isFailedMoreThanThreshold","columnMoveParams","xAdjustedForScroll","centerCtrl","firstVisiblePixel","lastVisiblePixel","needToMoveRight","needToMoveLeft","pixelsToMove","pixelsMoved","fromMoving","moveLen","leftCol","rightCol","BodyDropTarget","eSecondaryContainers","ColumnMoveService","columnsToMove","proposedColumnOrder","gridOrder","lockPositionToPlacement","lastPlacement","placement","isGroup","headerPosition","displayedLeafColumns","restoreFocusColumn","leafCols","findGroupWidthId","displayName","hideColumnOnExit","createDragItemForGroup","createDragItem","columns2","hasVisibleState","unlockedColumns","allCols","allColumnsOriginalOrder","allColumnsCurrentOrder","columnsInSplit","columnGroupColumns","ColumnMoveModule","AutoWidthCalculator","skipHeader","eHeaderCell","extraPadding","eDummyContainer","eBodyContainer","dummyContainerWidth","eCellClone","eCloneParent","eCloneParentClassList","AutoWidthModule","setColumnWidths","columnWidths","GroupResizeFeature","horizontalResizeSvc","finishedWithResizeFunc","columnsToResize","resizeStartWidth","resizeRatios","groupAfterColumns","groupAfterStartWidth","groupAfterRatios","resizeAmount","resizeAmountNormalised","getInitialSizeOfColumns","getSizeRatiosOfColumns","initialSizeOfColumns","columnSizeAndRatios","groupAfter","takeFromLeafCols","preferredSize","initialValues","resizeSets","resizing","dragChange","ResizeFeature","destroyResizeFuncs","canResize","canAutosize","addResize","removeResize","refresh","resize","autoSize","lastResizeAmount","notPinningLeft","ColumnResizeService","sets","otherCol","widthDiff","otherColWidth","columnResizeSet","checkMinAndMaxWidthsForSet","changedCols","allResizedCols","set","ratios","newWidths","finishedCols","finishedColsGrew","loopCount","subsetCols","subsetRatioTotal","pixelsToDistribute","ratioThisCol","ratioScale","lastCol","colNewWidth","maxWidth","atLeastOneColChanged","flexedCols","colsForEvent","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","minWidthPasses","maxWidthPasses","ColumnResizeModule","GroupWidthFeature","widthChangedListener","HeaderGroupCellCtrl","colNames","displayedColumns","isFirst","isLast","isColumnMoveAtThisLevel","isHighlightAfter","isHighlightBefore","resizeFeature","providedColGroup","newExpandedValue","eHeaderGroup","setColumnGroupOpened","getColumnGroup","getProvidedColumnGroup","getDisplayNameForColumnGroup","location","getColumnGroupState","setColumnGroupState","stateItems","resetColumnGroupState","getLeftDisplayedColumnGroups","getCenterDisplayedColumnGroups","getRightDisplayedColumnGroups","getAllDisplayedColumnGroups","_removeAllFromUnorderedArray","toRemove","VisibleColsService","skipTreeBuild","pickDisplayedCols","newBodyWidth","newLeftWidth","newRightWidth","lastLeft","firstRight","columnGroupSvc","idCreator","createGroups","center","doingRtl","filterCallback","emptySpaceBeforeColumn","lastConsideredCol","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","filterPasses","colForFilter","depthFirstAllColumnTreeSearch","queryOrder","edge","columnToCompare","useDisplayedChildren","childTree","ColumnGroupService","columnGroupState","groupState","impactedGroups","groupKey","keyAsString","requiredLevel","colGroupLeafColumns","getDisplayColMethod","groupPointer","originalGroupLevel","groupPointerLevel","allColumnGroups","checkPartId","matched","oldDisplayedGroups","isStandaloneStructure","oldColumnsMapped","topLevelResultCols","groupsOrColsAtCurrentLevel","currentlyIterating","lastGroupedColIdx","createGroupToIndex","to","from","previousNode","previousNodeParent","newGroup","thisNode","thisNodeParent","colGroupDefMerged","providedGroup","existingGroupAndIndex","existingGroup","currentDepth","columnDepth","originalGroup","newChildren","firstPaddedGroup","currentPaddedGroup","paddedGroup","leaf","balancedColumnTree","depth","treeChildren","maxDeptThisLevel","newDept","nextChild","autoGroup","newGroupDef","groupInstanceIdCreator","uniqueId","displayedGroups","recursive","columnsOrGroups","columnsOrGroup","ColumnGroupModule","CheckboxCellRendererModule","getColumnDef","getColumnDefs","getDisplayNameForColumn","getColumn","getColumns","applyColumnState","getColumnState","resetColumnState","isPinning","isPinningLeft","isPinningRight","getDisplayedColAfter","getDisplayedColBefore","setColumnsVisible","setColumnsPinned","getAllGridColumns","getDisplayedLeftColumns","getDisplayedCenterColumns","getDisplayedRightColumns","getAllDisplayedColumns","getAllDisplayedVirtualColumns","_deepCloneDefinition","keysToSkip","ColumnDefFactory","colDefColsList","showingPivotResult","colGroupDefs","addToResult","childDef","lastPointer","parentDef","existingParentDef","defCloned","colDefCloned","ColumnFlexService","totalSpace","visibleCenterCols","flexAfterDisplayIndex","allResizingCols","hasFlexItems","unfrozenItemCount","unfrozenFlex","acc","unfrozenSpace","freeze","isFrozen","spaceToFill","lastUnfrozenItem","idealRight","idealSize","roundedSize","totalViolation","unclampedSize","clampedSize","freezeType","unconstrainedFlexColumns","flexingColumns","initialFlex","DataTypeService","defaultDataTypes","newDataTypeDefinitions","newFormatValueFuncs","generateFormatValueFunc","dataTypeDefinition","valueFormatter","cellDataType","mergedDataTypeDefinition","createGroupSafeValueFormatter","dataTypeDefinitions","newDataTypeMatchers","overriddenDataTypeMatcher","alreadyProcessedDataTypes","extendsCellDataType","baseDataTypeDefinition","overriddenBaseDataTypeDefinition","validateDataTypeDefinition","mergeDataTypeDefinitions","extendedDataTypeDefinition","mergedExtendedDataTypeDefinition","columnStateUpdates","columnListener","propsToCheckForInference","doColDefPropsPreventInference","columnTypeDefs","columnTypeDef","initialData","_cellDataType","columnTypeOverridesExist","firstRowData","newRowGroupColumnStateWithoutIndex","newPivotColumnStateWithoutIndex","oldColDef","updatedColumnState","getUpdatedColumnState","updatedRowGroupColumnState","updatedPivotColumnState","existingColumnStateUpdates","resolvedObjectDataTypeDefinition","defaultObjectDataTypeDefinition","dataTypeMatcher","warning","formatValue","colDef2","valA","valB","defaultDateFormatMatcher","parentDataTypeDefinition","childDataTypeDefinition","parentCellDataType","doesColDefPropPreventInference","checkProps","comparisonValue","columnState","DataTypeModule","ColumnFlexModule","ColumnApiModule","_camelCaseToHumanText","rex","rexCaps","word","ColumnNameService","includeAggFunc","headerName","aggColNameSvc","headerValueGetter","ColumnViewportService","bodyWidthDirty","dept","displayedColumnsCenter","suppressHashClear","isAnyParentAutoHeaderHeight","columnLeft","columnRight","leftBounds","rightBounds","columnToMuchLeft","columnToMuchRight","inViewportCallback","renderedColIds","treeLeft","treeRight","treeCenter","testGroup","returnValue","addThisItem","displayedChildren","hashColumn","newHash","AgComponentUtils","jsCompFunc","Adapter","callbackResult","type2","CellRendererFunctionModule","Registry","userComponents","dynamicBeans","selectors","registerUserComponent","selector","propertyName","createResult","registeredViaFrameworkComp","isFwkComp","defaultComponent","NUM_CTRLS","CtrlsService","values","caller","ctrlType","leftHeader","centerHeader","rightHeader","coreCSS","IS_SSR","injectionsByContainer","_injectGlobalCSS","styleContainer","layer","nonce","FORCE_LEGACY_THEMES","injections","newInjection","insertAfter","injection","_injectCoreAndModuleCSS","gridsUsingThemingAPI","_registerGridUsingThemingAPI","_unregisterGridUsingThemingAPI","createPart","PartImpl","defaultModeName","partCounter","modeParams","cssImports","inject","cssImport","kebabCase","paramToVariableName","paramName","paramToVariableExpression","clamp","memoize","accentMix","mix","foregroundMix","foregroundBackgroundMix","foregroundHeaderBackgroundMix","backgroundColor","foregroundColor","accentColor","defaultLightColorSchemeParams","coreDefaults","buttonStyleBaseCSS","baseParams","makeButtonStyleBaseTreeShakeable","buttonStyleBase","makeButtonStyleQuartzTreeShakeable","buttonStyleQuartz","makeButtonStyleAlpineTreeShakeable","buttonStyleAlpine","makeButtonStyleBalhamTreeShakeable","buttonStyleBalham","columnDropStyleBorderedCSS","columnDropStylePlainCSS","makeColumnDropStyleBorderedTreeShakeable","columnDropStyleBordered","makeColumnDropStylePlainTreeShakeable","columnDropStylePlain","paramTypes","getParamType","param","literalToCSS","colorValueToCss","colorExpr","colorSchemeValueToCss","lengthValueToCss","scaleValueToCss","borderValueToCss","borderStyleValueToCss","shadowValueToCss","fontFamilyValueToCss","quoteUnsafeChars","font","fontWeightValueToCss","imageValueToCss","durationValueToCss","paramValidators","paramValueToCss","_asThemeImpl","theme","ThemeImpl","createTheme","_ThemeImpl","cssLayer","loadThemeGoogleFonts","uninstallLegacyCSS","googleFontsUsed","getGoogleFontsUsed","googleFont","loadGoogleFont","deduplicatePartsByFeature","paramsCache","mergedModeParams","partMode","partParams","mergedParams","partParamNames","partParamName","partParamValue","mergedMode","mergedParams2","selectorPlaceholder","innerParamsCss","variablesCss","inheritanceCss","wrapPrefix","cssValue","cssName","inheritedName","lastPartByFeature","visitParamValue","paramValue","mv","uninstalledLegacyCSS","googleFontsLoaded","googleFontsDomain","checkboxStyleDefaultCSS","makeCheckboxStyleDefaultTreeShakeable","checkboxStyleDefault","makeColorSchemeLightTreeShakeable","colorSchemeLight","makeColorSchemeLightWarmTreeShakeable","colorSchemeLightWarm","makeColorSchemeLightColdTreeShakeable","colorSchemeLightCold","darkParams","makeColorSchemeDarkTreeShakeable","colorSchemeDark","makeColorSchemeDarkWarmTreeShakeable","darkBlueParams","colorSchemeDarkWarm","makeColorSchemeDarkBlueTreeShakeable","colorSchemeDarkBlue","makeColorSchemeVariableTreeShakeable","colorSchemeVariable","iconSetBalhamCSS","iconSetBalham","iconSetAlpineCSS","iconSetAlpine","iconSetMaterialCSS","iconSetMaterial","iconOverrides","cssParts","mask","imageCssValue","unsetMaskIcon","family","weight","color","properties","iconNameToSvgFragment","iconNameToFullSvg","getQuartzIconsCss","iconSvg","quartzIconSvg","strokeWidth","fullSVG","svgFragment","iconSetQuartz","iconSetQuartzLight","iconSetQuartzRegular","iconSetQuartzBold","inputStyleBaseCSS","inputStyleBorderedCSS","inputStyleUnderlinedCSS","baseParams2","makeInputStyleBaseTreeShakeable","inputStyleBase","makeInputStyleBorderedTreeShakeable","inputStyleBordered","makeInputStyleUnderlinedTreeShakeable","inputStyleUnderlined","tabStyleBaseCSS","tabStyleRolodexCSS","baseParams3","makeTabStyleBaseTreeShakeable","tabStyleBase","makeTabStyleQuartzTreeShakeable","tabStyleQuartz","makeTabStyleMaterialTreeShakeable","tabStyleMaterial","makeTabStyleAlpineTreeShakeable","tabStyleAlpine","makeTabStyleRolodexTreeShakeable","tabStyleRolodex","materialAdjustmentsCSS","makeThemeQuartzTreeShakeable","themeQuartz","makeThemeAlpineTreeShakeable","themeAlpine","makeThemeBalhamTreeShakeable","themeBalham","makeStyleMaterialTreeShakeable","sharedParams","lightParams","darkParams2","styleMaterial","makeThemeMaterialTreeShakeable","themeMaterial","CELL_HORIZONTAL_PADDING","INDENTATION_LEVEL","ROW_GROUP_INDENT_SIZE","ROW_HEIGHT","HEADER_HEIGHT","LIST_ITEM_HEIGHT","ROW_BORDER_WIDTH","paramsId","Environment","cellHorizontalPadding","indentationLevel","rowGroupIndentSize","gridTheme","themeClass","isThemeEl","oldClass","oldRowHeight","newRowHeight","variable","measurement","sizeEl","newSize","NO_VALUE_SENTINEL","border","noWarn","lastMeasurement","unsubscribe","newMeasurement","change","globalCSS","oldGridTheme","themeGridOption","newGridTheme","themeOrDefault","eParamsStyle","styleNonce","EventService","globalListener","globalSyncListener","isAnyChildSpanningHeaderHeight","getHeaderIndexToFocus","nextColumn","HeaderNavigationService","floatingFilter","centerHeaderContainer","isFloatingFilterVisible","row","fromHeader","rowLen","isUp","currentRowType","nextRow","nextFocusColumn","headerRowIndexWithoutSpan","getColumnVisibleParent","getColumnVisibleChild","skipColumn","fromTab","focusedHeader","nextHeader","normalisedDirection","userFunc","wasFocusedFromUserFunc","nextPosition","nextRowIndex","columnToScrollTo","getColMethod","columnsInPath","indexToFocus","childContainer","isFloatingFilter","isColumn2","leafColumn","columnsInTheWay","colToFocus","FocusService","clearFocusedCellListener","colFromColumnModel","activeElement","eBrowserCell","ePointer","focusEventParams","preventScrollOnBrowserFocus","gridColumn","focusedColumn","focusedHeaderRowIndex","allowUserOverride","fromCell","rowWithoutSpanValue","params2","newHeaderPosition","userResult","focusSuccess","firstColumn","rowPinnedType","overlayGui","canFocusOverlay","forceFirstColumn","ScrollVisibleService","centerRowCtrl","horizontalGap","verticalGap","gridOptionsScrollbarWidth","GridDestroyService","stateSvc","ALWAYS_SYNC_GLOBAL_EVENTS","GRID_OPTION_DEFAULTS","changeSetId","gridInstanceSequence","GridOptionsService","restrictToSyncOnly","alwaysSync","eventHandlerName","eventHandler","callbackParams","changeSet","shouldForce","reasonOrId","registered","modName","getHeaderCompElementParams","includeSortIndicator","hiddenAttrs","HeaderCompElement","HeaderCompElementNoSort","HeaderComp","isSorting","paramsTemplate","sortComp","oldDisplayName","displayNameSanitised","eMenu","isLegacyMenu","currentSuppressMenuHide","alwaysShow","eFilterButton","isLegacyMenuEnabled","enableSorting","eSortIndicator","eSortOrder","eSortAsc","eSortDesc","eSortMixed","eSortNone","eFilter","enabled","filterChangedCallback","filterPresent","HeaderGroupCompElement","HeaderGroupComp","agOpened","agClosed","expandAction","stopPropagationAction","updateIcon","hasInnerComponent","ColumnHeaderCompModule","ColumnGroupHeaderCompModule","AnimationFrameService","task","isFramework","taskList","taskItem","millis","p1","p2","f1","destroyTasks","p1Tasks","p2Tasks","f1Tasks","frameStart","duration","noMaxMillis","AnimationFrameModule","TouchService","nowMillis","tapMenuButton","menuTouchListener","showMenuFn","tapListener","filterButtonTouchListener","longTapListener","TouchModule","CellNavigationService","ctrlPressed","upKey","downKey","leftKey","gridCell","lastCell","colToLeft","colToRight","adjustedLastCell","rowBelow","rowAbove","newRowIndex","newFloating","newColumn","suppressNavigable","getFocusedCell","clearFocusedCell","setFocusedCell","tabToNextCell","tabToPreviousCell","setFocusedHeader","NavigationService","fromFullWidth","rangeServiceShouldHandleShift","currentCell","processed","navigateParams","scrollIndex","scrollType","scrollColumn","focusIndex","focusColumn","getVScroll","pixelsInOnePage","pagingPixelOffset","currentPageBottomPixel","currentPageBottomRow","currentPageTopPixel","currentPageTopRow","firstRow","lastRow","currentRowNode","rowPixelDiff","nextCellPixel","lastRowIndex","pixelSum","currentCellHeight","cellToFocus","homeKey","columnToSelect","previous","movedToNextCell","cellOrRow","previousCell","previousPos","nextCell","previousEditable","nextEditable","rowsMatch","rowEditSvc","pRow","nRow","cellPos","focusedContainer","previousPosition","cellNavigation","headerLen","hitEdgeOfGrid","userCell","normalisedPosition","currentCellFocused","fromBelow","colSpanningList","isGroupStickyEnabled","skipScrollToRow","KeyboardNavigationModule","PageBoundsListener","modelUpdatedEvent","PageBoundsService","topRowBounds","bottomRowBounds","pageFirstPixel","pageLastPixel","topDisplayedRowIndex","bottomDisplayedRowIndex","pinnedColumnModuleCSS","SetPinnedWidthFeature","PinnedColumnService","processedColumnsToRemove","processUnpinnedColumns","hasLockedPinned","columnsToRemove","actualPinned","initialPinned","hiddenChanged","widthWithPadding","pinnedRightWidth","pinnedLeftWidth","totalPinnedWidth","pinnedLeftColumns","pinnedRightColumns","indexRight","indexLeft","totalWidthRemoved","spaceNecessary","PinnedColumnModule","AriaAnnouncementService","valueToAnnounce","descriptionContainer","AriaModule","showLoadingOverlay","showNoRowsOverlay","hideOverlay","overlayWrapperComponentCSS","OverlayWrapperElement","OverlayWrapperComponent","overlayWrapperClassList","overlayWrapperCssClass","overlayComponentPromise","exclusive","gridOption","activeOverlay","elementToFocus","updateListenerDestroyFunc","OverlayWrapperSelector","OverlayService","updateOverlayVisibility","overlayWrapperComp","loading","isClientSide","isServerSide","wrapperCssClass","wasExclusive","newPadding","OverlayModule","RowContainerHeightService","newScrollY","newBodyHeight","scrollPercent","divStretchOffset","newOffset","newOffsetFloor","modelHeight","modelPixel","modelMaxScroll","ROW_ANIMATION_TIMEOUT","RowRenderer","onCellSelectionChanged","onColumnMovedPinnedVisible","addCellSelectionListeners","removeCellSelectionListeners","stickyRowSvc","countProp","RowCtrlCache","liveList","zombieList","cachedList","allRowCtrls","cellFlashSvc","forEachCellWithThisCol","leftChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","colDefChangedListener","embedFullWidthRows","destroyRows","rowIndexesToRemove","floating","rowCtrlMap","rowNodeCount","suppressEvent","destroyAndRecreateCtrl","dataStruct","recycleRows","rowsToRecycle","stickyRowFeature","scrollToTop","suppressScrollToTop","containerHeight","rowCtrlsLength","cellCtrlsLength","stickyTopRowCtrls","stickyBottomRowCtrls","refreshCellParams","rowRedrawn","rowIdsMap","mapRowNodes","isRowInMap","colIdsMap","stubNodeIndexes","ctrlsByIdMap","rowsToRemove","indexToRemove","oldFirstRow","oldLastRow","hasStickyRowChanges","rangeChanged","newFocusedCell","indexesToDraw","indexesToDrawMap","indexesNotToDraw","focusedRow","checkRowToDraw","currRow","fullWidthCtrl","rowNodesMap","rowCtrlsMap","executeInAWhileFuncs","rowsToBuffer","bufferPixels","suppressRowVirtualisation","rowHeightsChanged","firstPixel","lastPixel","bodyVRange","bodyTopPixel","bodyBottomPixel","firstRowIndex","pageFirstRow","pageLastRow","rowLayoutNormal","suppressRowCountRestriction","rowBufferMaxSize","firstDiffers","lastDiffers","topPixel","bottomPixel","pinnedRowHeightsChanged","rowModelHeightsChanged","rowHasFocus","rowIsEditing","rowIsDetail","rowCtrlFromCache","viewportRows","stickyTopRows","stickyBottomRows","startIndex","endIndex","blockAfterViewport","maxCount","rowCtrlToDestroy","rowNodeId","RowNodeSorter","propChange","sortOptions","sortedRowNodes","currentPos","sortedNodeA","sortedNodeB","nodeA","nodeB","sortOption","isDescending","comparatorResult","providedComparator","comparatorOnCol","groupLeafField","primaryColumn","leafChild","displayCol","onSortChanged","makeIconParams","dataRefSuffix","SortIndicatorElement","SortIndicatorComp","skipTemplate","suppressOrder","updateIcons","sortUpdated","alwaysHideNoSort","isNone","isColumnShowingRowGroup","isMixedSort","allColumnsWithSorting","indexThisCol","moreThanOneColSorting","showIndex","SortIndicatorSelector","DEFAULT_SORTING_ORDER","SortService","nextDirection","isColumnsSortingCoupledToGroup","columnsToUpdate","sortableRowGroupColumns","doingMultiSort","updatedColumns","clearedColumns","lastColToChange","isCoupled","groupParent","lastSortIndexCol","allSortedCols","allSortedColsWithoutChangesOrGroups","columnsToSkip","columnToClear","sortingOrder","notInArray","lastItemInArray","isSortingLinked","isAggregated","isSecondary","sortedRowGroupCols","allColsIndexes","iA","iB","isSortLinked","indexMap","groupDisplayCol","idx1","idx2","isColumnSortCouplingActive","isGroupDisplayColumn","linkedColumns","sortableColumns","firstSort","clickElement","lastMovingChanged","movedRecently","onSortingChanged","sourceColumns","isMultiSorting","sourceCol","initialSort","initialSortIndex","sortOrder","SortModule","SyncService","expireValueCache","getCellValue","useFormatter","formattedValue","ChangedPath","keepingColumns","pathItem","traverseEverything","childrenAfterGroup","traverseLeafNodes","includeUnchangedNodes","newEntryCount","newEntry","thisItem","parentItem","colsForThisNode","SOURCE_PASTE","ChangeDetectionService","nodesToRefresh","onlyChangedColumns","changedPath","rowNode2","ExpressionService","expression","expressionToFunctionCache","functionBody","theFunction","ValueCache","cacheVersion","ValueCacheModule","ExpressionModule","ChangeDetectionModule","CellApiModule","ValueService","rowGroupColId","hideOpenParentsNode","displayedNode","isPivotLeaf","isOpenedGroup","groupShowsAggData","ignoreAggData","groupDataExists","aggDataExists","ignoreSsrmAggData","ssrmFooterGroupCol","cellValueGetter","valueParser","suppliedFormatter","useFormatterFromColumn","formatter","onlyHideOpenParents","isGroupHideOpenParents","isShowOpenedGroupValue","showRowGroup","isFirstChild","valueSetter","valueWasDifferent","savedValue","onCellValueChanged","isFieldContainsDots","valuesAreSame","fieldPieces","fieldPiece","valueFromCache","otherColumn","keyCreator","keyParams","CommunityCoreModule","_GlobalGridOptions","providedOptions","mergedGridOps","GlobalGridOptions","provideGlobalGridOptions","mergeStrategy","_getGlobalGridOption","createGrid","gridParams","destroyCallback","newGridDiv","GridCoreCreator","gridComp","nextGridId","createUi","acceptChanges","registeredModules","beanClasses","providedBeanInstances","contextParams","registry","apiFunctionSvc","apiFunctions","seed","rowModuleModelName","_getClientSideRowModel","_getInfiniteRowModel","_getServerSideRowModel","_PUBLIC_EVENTS","_INTERNAL_EVENTS","_ALL_EVENTS","LocaleService","getLocaleText","variableValues","localeText","localisedText","found","STRING_GRID_OPTIONS","OBJECT_GRID_OPTIONS","ARRAY_GRID_OPTIONS","_NUMBER_GRID_OPTIONS","OTHER_GRID_OPTIONS","_BOOLEAN_MIXED_GRID_OPTIONS","_BOOLEAN_GRID_OPTIONS","_FUNCTION_GRID_OPTIONS","_ALL_GRID_OPTIONS","BaseComponentWrapper","OriginalConstructor","mandatoryMethods","optionalMethods","componentType","wrapper","methodName","TooltipComponentElement","TooltipComponent2","_fuzzySuggestions","allSuggestions","hideIrrelevant","filterByPercentageOfBestMatch","thisSuggestions","hybridFuzzySearch","suggestion","indices","str1","str2","len1","len2","str1Lower","str2Lower","str2PositionInStr1","char","previousRow","currentRow","insertions","deletions","substitutions","distance","score","_formatNumberCommas","getLocaleTextFunc","thousandSeparator","decimalSeparator","BaseCreator","fileName","extension","serializingSession","BaseGridSerializingSession","processCellCallback","processHeaderCallback","processGroupHeaderCallback","processRowGroupCallback","columnsToExport","accumulatedRowIndex","currentColumnIndex","isGroupUseEntireRow","isTreeData","getValueFromNode","isFooter","groupValue","valueToParse","valueToFormat","_downloadFile","content","INITIAL_GRID_OPTION_KEYS","clientSide","serverSide","infinite","functionRowModels","deprecatedFunctions","validateApiFunction","apiFunction","deprecation","replacement","old","apiMethod","replacementMessage","ENTERPRISE_MODULE_NAMES","ALL_COLUMN_FILTERS","RESOLVABLE_MODULE_NAMES","MODULES_FOR_ROW_MODELS","resolveModuleNames","resolvedModuleNames","resolved","resolvedModName","rowModelForModule","USER_COMP_MODULES","moduleImportMsg","moduleNames","imports","convertToUserModuleName","inModuleRegistration","umdMissingModule","chartModules","missingModule","gridScoped","additionalText","isUmd2","reason","MISSING_MODULE_REASONS","chartImportRequired","missingChartsWithModule","gridModule","clipboardApiError","method","AG_GRID_ERRORS","nodeId","groupPrefix","newFilter","filterModelType","paginationPageSizeOption","pageSizeSet","pageSizesSet","pageSizeOptions","paginationPageSizeSelector2","componentName","agGridDefaults","jsComps","textOutput","validComponents","suggestions","aggFuncOrString","chartId","allRange","currentChartType","chartType","customThemeName","panel","chartDataType","unrecognisedGroupIds","dataType","unrecognisedColIds","providedStrategy","menuTabName","itemsToConsider","parentGroupData","childNodeData","duplicateRowsData","firstData","secondData","startRow","rowGroupId","justCurrentPage","duplicateIdText","defaultByKey","invalidColIds","defaultOffset","lineDash","menuItemOrString","point","propName","parentId","getError","errorId","msgOrFunc","errorBody","errorSuffix","COLUMN_DEFINITION_DEPRECATIONS","COLUMN_DEFINITION_VALIDATIONS","editable","COL_DEF_VALIDATORS","_options","enterpriseMenuTabs","tab","invalidItems","suppressRowTransform","cellSelection","enableCellSpan","rowDragEntireRow","enableCellTextSelection","colDefPropertyMap","ALL_PROPERTIES","GRID_OPTION_DEPRECATIONS","toConstrainedNum","GRID_OPTION_VALIDATIONS","definedValidations","autoSizePadding","cacheBlockSize","cacheOverflowSize","validLayouts","infiniteInitialRowCount","keepDetailRowsCount","paginationPageSize","rowBuffer","serverSideInitialRowCount","treeDataChildrenField","treeDataParentIdField","getDataPath","ssrmWarning","viewportRowModelBufferSize","viewportRowModelPageSize","showOpenedGroup","validations","GRID_OPTIONS_VALIDATORS","ICON_VALUES","ICON_MODULES","DEPRECATED_ICONS_V33","MENU_ITEM_MODULES","ValidationService","moduleForComponent","DEPRECATED_ROW_NODE_EVENTS","skipInferenceCheck","validator","deprecations","allProperties","propertyExceptions","objectName","docsUrl","warnings","getRules","rulesOrGetter","fromGetter","rules","dependencies","validate","supportedRowModels","expectedType","actualType","allRegistered","failedOptions","gridOptionValue","failedKey","possibleOptions","exceptions","validProperties","containerName","VUE_FRAMEWORK_PROPS","invalidProperties","_fuzzyCheckStrings","invalidPropertiesKeys","inputValues","validValues","fuzzyMatches","invalidInputs","validValue","invalidInput","ValidationModule","updateRowNodeAfterFilter","FilterStage","filterActive","includeChildNodes","passBecauseChildren","passBecauseDataPasses","treeDataDepthFirstFilter","alreadyFoundInParent","foundInParent","treeDataFilterCallback","defaultFilterCallback","HeaderFilterCellCtrl","eButtonShowMainFilter","eFloatingFilterBody","filterExists","floatingFilterExists","eMenuIcon","nextFocusableEl","nextFocusableColumn","nextCol","notFromHeaderWrapper","fromWithinHeader","lastFocusEvent","shouldFocusLast","setLeftFeature","syncWithFilter","compPromise","parentModel","filterChangedEvent","isFilterAllowed","wasActive","becomeActive","compInstance","showColumnMenu","hidePopupMenu","SharedMenuModule","instanceIdSeq","WAIT_FOR_POPUP_CONTENT_RESIZE","PopupService","ePopupParent","sourceRect","minWidthSet","updatePosition","maxX","xLeftPosition","xRightPosition","nudgeX","nudgeY","skipObserver","keepWithinBounds","targetCompRect","spaceAvailableUnder","spaceAvailableAbove","spaceRequired","positioned","popupIdx","alignedToElement","lastSize","updatePopupPosition","fromResizeObserver","resizeObserverDestroyFunc","popupParent","sizeProperty","anchorProperty","offsetProperty","scrollPositionProperty","docElement","popupRect","documentRect","isBody","offsetSize","sizeOfParent","alwaysOnTop","anchorToElement","wrapperEl","removeListeners","ePopupParentRect","popupEl","closedCallback","afterGuiAttached","closeOnEsc","modal","popupHidden","hidePopupOnKeyboardEvent","hidePopupOnMouseEvent","hidePopupOnTouchEvent","relativeElement","popupIndex","destroyPositionTracker","extractFromPixelValue","pxSize","createPosition","initialDiff","initial","topPosition","fwOverrides","pRect","sRect","calculateNewPosition","currentDiff","intervalId","indexOfThisChild","popupList","popupLen","standardPopupList","alwaysOnTopList","innerElsScrollMap","onTopLength","targetList","currentPopup","PopupModule","columnFiltersCSS","isColumnFilterPresent","getColumnFilterInstance","destroyFilter","setFilterModel","getFilterModel","getColumnFilterModel","setColumnFilterModel","showColumnFilter","MONTH_LOCALE_TEXT","MONTH_KEYS","setFilterNumberComparator","ColumnFilterService","allPromises","modelKeys","filterWrapper","setModelOnFilterWrapper","before","after","excludeInitialState","allColumnFilters","initialFilterModel","filterToSkip","groupFilterEnabled","isAggFilter","isShowingPrimaryColumns","activeAggregateFilters","activeColumnFilters","filterPromise","targetAggregates","aggData","targetedFilters","targetedData","filterInstance","filterColumn","filterValueSvc","columnToUse","allFiltersAreGroupFilters","isGroupFilter","groupColumn","showParentFilter","parentFilterInstance","filterComponent","filterParams","finalFilterParams","isActive","newFilterParams","oldCompDetails","oldComponentClass","newComponentClass","usingSetFilter","mergeFilterParams","_filterValues","cellValue","pathKey","monthKey","isValidDate","convertToDate","filterDate","cellAsDate","isAnyFilterPresent","onFilterChanged","FilterManager","refreshFiltersForAggregations","updateAdvFilterColumns","isFilterPresent","doesFilterPass","eCompToInsertBefore","FilterMenuFactory","hidePopup","afterGuiDetached","menu","FilterValueService","filterValueGetter","ReadOnlyFloatingFilterElement","ReadOnlyFloatingFilter","modelAsString","OptionsFactory","defaultOptions","filterOptions","filterOption","requiredProperties","propertyCheck","firstFilterOption","removeItems","startPosition","deleteCount","isBlank","getDefaultJoinOperator","defaultJoinOperator","evaluateCustomFilter","customFilterOption","predicate","validateAndUpdateConditions","conditions","maxNumConditions","numConditions","SimpleFilter","customOpts","numberOfInputs","eType","eJoinOperatorsOr","aIsSimple","bIsSimple","aSimple","bSimple","aCombined","bCombined","aModel","bModel","newOptionsList","combinedModel","numPrevConditions","orChecked","eJoinOperatorAnd","eJoinOperatorOr","simpleModel","operator","models","numAlwaysVisibleConditions","eConditionBody","eJoinOperatorPanel","uniqueGroupId","eJoinOperators","andOr","eJoinOperator","baseClass","filterListOptions","displayKey","customOption","joinOperator","lastUiCompletePosition","areAllConditionsUiComplete","activePosition","removeStartPosition","numConditionsToRemove","eTypes","eConditionBodies","eJoinOperatorPanels","eJoinOperatorsAnd","joinOperatorIndex","eFilterBody","firstInput","appliedModel","updatedLastUiCompletePosition","conditionsRemoved","shouldRemovePositionAtEnd","positionBeforeLastUiCompletePosition","shouldUpdateConditionStatusesAndValues","defaultPlaceholder","filterOptionKey","globalTranslate","cb","filteringLabel","updater","elPosition","filterModel","customFilterResult","ScalarFilter","filterType","includeBlanksInEquals","includeBlanksInNotEqual","includeBlanksInGreaterThan","includeBlanksInLessThan","includeBlanksInRange","compareResult","compareToResult","DateCompWrapper","dateComponentParams","onReady","dateComp","tempValue","DEFAULT_DATE_FILTER_OPTIONS","SimpleFilterModelFormatter","optionsFactory","isCombined","customOptions","joinOperatorTranslateKey","DateFilterModelFormatter","dateFilterParams","isRange","dateFrom","dateTo","formattedFrom","formattedTo","DEFAULT_MIN_YEAR","DEFAULT_MAX_YEAR","DateFilter","defaultDateComparator","isValidDate2","yearParser","dateCompWrapper","eCondition","eConditionPanels","dateConditionComps","fromTo","eConditionPanel","minValidDate","maxValidDate","minValidYear","maxValidYear","dateConditionFromComps","dateConditionToComps","_elPosition","SimpleFloatingFilter","defaultOption","uneditableTypes","DateFloatingFilterElement","DateFloatingFilter","allowEditing","dateModel","filterValueDate","filterValueText","eDateWrapper","DefaultDateElement","DefaultDateComponent","inputElement","isChange","shouldUseBrowserDatePicker","parsedMinValidDate","parsedMaxValidDate","DEFAULT_NUMBER_FILTER_OPTIONS","NumberFilterModelFormatter","filterTo","getAllowedCharPattern","allowedCharPattern","NumberFilter","numberFormatter","valueToSet","eValues","eValue","removeComps","filterText","numberParser","eValuesFrom","eValuesTo","FloatingFilterTextInputService","parentElement","autoComplete","trimInputForFilter","trimmedInput","TextInputFloatingFilterElement","TextInputFloatingFilter","inputSvc","defaultDebounceMs","toDebounce","isEnterKey","FloatingFilterNumberInputService","eNumberInput","eTextInput","NumberFloatingFilter","DEFAULT_TEXT_FILTER_OPTIONS","TextFilterModelFormatter","TextFilter","applySideEffects","formattedValues","cellValueFormatted","textFormatter","matcherParams","TextFloatingFilter","isQuickFilterPresent","getQuickFilter","resetQuickFilter","QuickFilterService","resetListener","groupAutoCols","columnsForQuickFilter","usingCache","parser","parsedFilter","matcher","hasChanged","filterPart","quickFilterAggregateText","quickFilterParts","stringParts","ClientSideRowModelFilterModule","FilterCoreModule","FilterValueModule","ColumnFilterModule","CustomFilterModule","TextFilterModule","NumberFilterModule","DateFilterModule","QuickFilterCoreModule","QuickFilterModule","ExternalFilterModule","UndoRedoAction","cellValueChanges","RangeUndoRedoAction","initialRange","finalRange","DEFAULT_STACK_SIZE","UndoRedoStack","maxStackSize","UndoRedoService","eventCell","isCellEditing","isRowEditing","cellValueChange","undoRedoLimit","undoStack","redoStack","operationPerformed","undoRedoStack","opposingUndoRedoStack","rangeProperty","cellValueChangeProperty","undoRedoAction","valueExtractor","columnId","endRow","cellRangeParams","cellEditingCSS","CheckboxCellEditorElement","CheckboxCellEditor","SimpleCellEditor","cellEditorInput","cellStartedEdit","eventKey","suppressPreventDefault","startValue","shouldSetStartValue","DateCellElement","DateCellEditorInput","DateCellEditor","DateStringCellElement","DateStringCellEditorInput","getDataTypeService","DateStringCellEditor","LargeTextCellElement","LargeTextCellEditor","NumberCellElement","NumberCellEditorInput","NumberCellEditor","SelectCellElement","SelectCellEditor","eSelect","hasValue","valueFormattedExits","valueListGap","valueListMaxWidth","valueListMaxHeight","TextCellEditorElement","TextCellEditorInput","TextCellEditor","getVerticalPixelRange","getHorizontalPixelRange","ensureColumnVisible","ensureIndexVisible","ensureNodeVisible","nodeSelector","undoCellEditing","redoCellEditing","getCellEditorInstances","getEditingCells","stopEditing","startEditingCell","isFocusWithinCell","getCurrentUndoSize","getCurrentRedoSize","PopupEditorElement","PopupEditorWrapper","EditService","editorParams","setEditing","newValueExists","takeValueFromCellEditor","saveNewValue","isRowEdit","fireRowEditEvent","viewports","focusOutListener","elementWithFocus","clickInsideGrid","suppressNavigateAfterEdit","noValueResult","RowEditService","sourceRenderedCell","preventDefault","atLeastOneEditing","EditCoreModule","UndoRedoEditModule","TextEditorModule","NumberEditorModule","DateEditorModule","CheckboxEditorModule","SelectEditorModule","LargeTextEditorModule","CustomEditorModule","SelectionColService","selectionCols","updateOrders","destroyCollection","newTreeDepth","treeDepthSame","cols2","colsFiltered","hasAutoCols","checkboxes","headerCheckbox","selectionColumnDef","enableRTL","__","filteredSelColDef","aSelected","bSelected","prevCheckbox","currCheckbox","checkboxHasChanged","prevHeaderCheckbox","currHeaderCheckbox","headerCheckboxHasChanged","currLocation","prevLocation","isLeafColumnSelectionCol","existingState","leafSelectionCol","getLeafColumnSelectionCol","selCol","setNodesSelected","selectAll","deselectAll","selectAllFiltered","deselectAllFiltered","selectAllOnCurrentPage","deselectAllOnCurrentPage","getSelectedNodes","getSelectedRows","SelectionService","selectionMode","suppressFinishActions","updatedCount","_normaliseFooterRef","skipThisNode","nodesToSelect","selectedRows","newSelectedNodes","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","selectionCount","topLevelNodes","traverse","rowModelClientSide","updatedNodes","updated","selectedCount","notSelectedCount","_calculateSelectAllState","recursivelyAddChildren","rowIds","skipLeafNodes","isCSRMGroupSelectsDescendants","nodesToDeselect","nodeCallback","hasSelectableChild","detailApi","isSelectAll","_isAllSelected","detailSelected","masterNode","detailGridOptions","selectedIds","notSelected","SharedRowSelectionModule","RowSelectionModule","expandAll","collapseAll","onRowHeightChanged","serverSideRowModel","setRowCount","maxRowFound","infiniteRowModel","getCacheBlockState","isLastRowIndexKnown","CsrmSsrmSharedApiModule","SsrmInfiniteSharedApiModule","AlignedGridsService","alignedGrids","isCallbackConfig","alignedGrid","refOrComp","fireColumnEvent","columnEvent","scrollEvent","groupOpenedEvent","masterGroup","otherColumnGroup","masterColumn","masterColumns","destColState","resizedEvent","isVerticalScrollShowing","AlignedGridsModule","ClientSideNodeManager","ChangedRowNodes","updateChildIndexes","listToSort","lastChild","updateRowNodeAfterSort","SortStage","sortActive","deltaSort","sortContainsGroupColumns","useDeltaSort","rowNodeSorter","groupMaintainOrder","groupColumnsPresent","isPivotMode","postSortFunc","hasAnyFirstChildChanged","skipSortingPivotLeafs","skipSortingGroups","newChildrenAfterSort","nextGroup","wasSortExplicitlyRemoved","childrenToBeSorted","indexedOrders","row1","row2","doDeltaSort","unsortedRows","oldSortedRows","untouchedRows","touchedRows","adds","sortedUntouchedRows","mergeSortedArrays","arr1","arr2","arr1Length","arr2Length","chosen","ClientSideRowModel","stage","refreshEverythingFunc","refreshEverythingAfterColsChangedFunc","nodeManager","allProps","refreshProps","startPixel","endPixel","startLimitIndex","endLimitIndex","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","changedProps","rowDataChanged","oldNodeManager","reset","newRowData","nextRowTop","displayedRowsMapped","rowsToDisplay","changedPathActive","clearIfNotDisplayed","recurse","isRootNode","indexAtPixelNow","rowNodeAtPixelNow","highlight","isSamePosition","isDifferentNode","movingRowNode","hoveredRowNode","highlightPosition","filteredChildren","totalFooterInc","topLevelIndex","childrenAfterSort","getDefaultIndex","adjustedIndex","footerSvc","displayedIndex","rowDataUpdated","displayedNodesMapped","firstInRange","lastInRange","started","groupsSelectChildren","pixelToMatch","bottomPointer","topPointer","oldBottomPointer","oldTopPointer","midPointer","includeFooterNodes","afterSort","childrenField","getChildren","rowNodesOrderChanged","afterColumnsChanged","rowDataTransaction","waitMillis","callbackFuncsBound","rowNodeTrans","tranItem","rowsInserted","flattenStage","detailNode","onGroupExpandedOrCollapsed","refreshClientSideRowModel","isRowDataEmpty","forEachLeafNode","forEachNodeAfterFilter","forEachNodeAfterFilterAndSort","resetRowHeights","applyTransaction","applyTransactionAsync","flushAsyncTransactions","getBestCostNodeSelection","ClientSideRowModelModule","ClientSideRowModelApiModule","GridSerializer","gridSerializingSession","columnKeys","skipRowGroups","exportRowNumbers","composed","rowSkipper","isExplicitExportSelection","hideOpenParents","isLeafNode","shouldSkipCurrentGroup","rowAccumulator","appendContent","prependContent","gridRowIterator","processRow","usingCsrm","usingSsrm","onlySelectedNonStandardModel","exportedRows","compareNodes","filterSpecialColumns","directChildrenHeaderGroups","columnGroupChild","it","columnIndex","collapsibleGroupRanges","collapsibleGroups","lastGroup","SharedExportModule","LINE_SEPARATOR","CsvSerializingSession","suppressQuotes","columnSeparator","header","rowCellValue","stringValue","CsvCreator","baseParams4","packagedFile","skipDefaultParams","getDataAsCsv","exportDataAsCsv","CsvExportModule","InfiniteBlock","parentCache","thisIsMostRecentRequest","weAreNotDestroyed","blockSize","pageStatus","sortModel","dontTouchLastAccessed","localIndex","finalRowCount","MAX_EMPTY_BLOCKS_TO_KEEP","InfiniteCache","dontCreatePage","blockId","block","blockNumber","newBlock","blockToExclude","blocksForPurging","lastAccessedComparator","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","purgeBecauseBlockEmpty","purgeBecauseCacheFull","blockToRemove","overflowSize","lastRowIndexPlusOverflow","lastRowIndexKnown","blockComparator","blocksToDestroy","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","InfiniteRowModel","resetRequired","datasource","rowNodeBlockLoader","infiniteCache","rowIndexForPixel","refreshInfiniteCache","purgeInfiniteCache","getInfiniteRowCount","RowNodeBlockLoader","blockLoadDebounceMillis","loadAvailability","blocksToLoad","InfiniteRowModelCoreModule","InfiniteRowModelModule","ARROW_UP","ARROW_DOWN","AnimateShowChangeCellRendererElement","AnimateShowChangeCellRenderer","absDelta","valueToUse","deltaUp","eDelta","refreshCountCopy","isInitialRender","lastValue","animateSlideCellRendererCSS","AnimateSlideCellRendererElement","AnimateSlideCellRenderer","eCurrent","prevElement","CellFlashService","cellId","delays","flashDuration","fadeDuration","fullName","animationFullName","flashCells","HighlightChangesModule","getState","migrateGridStateModel","migrateV32_1","jsonGet","json","StateService","suppressEventsAndDispatchInitEvent","newColumnsLoadedDestroyFunc","rowCountReadyDestroyFunc","firstDataRenderedDestroyFunc","stateUpdater","initialState","onUpdate","filterState","rowGroupExpansionState","rowSelectionState","paginationState","updateCachedState","updateRowGroupExpansionState","scrollState","cellSelectionState","focusedCellState","columnOrderState","cellSelection2","sortColumns","groupColIds","aggregationColumns","pivotColIds","leftColIds","rightColIds","hiddenColIds","columnSizes","defaultSortIndex","sortState","aggregationState","pivotState","columnPinningState","columnVisibilityState","columnSizingState","partialColumnState","columnStateMap","getColumnState2","applyOrder","columnGroupStates","secondaryColumnStates","openColumnGroups","open","advancedFilterModel","cellRanges","cellRange","startColumn","columnSet","page","selectionState","expansionSvc","expandedRowGroups","features","newColumnState","cachedState","existingValue","staleStateKeys","sources","queuedUpdateSources","updateFunc","GridStateModule","paginationIsLastPageFound","paginationGetPageSize","paginationGetCurrentPage","paginationGetTotalPages","paginationGetRowCount","paginationGoToNextPage","paginationGoToPreviousPage","paginationGoToFirstPage","paginationGoToLastPage","paginationGoToPage","PaginationAutoPageSizeService","newPageSize","paginationPageSizeSelector","PageSizeSelectorCompElement","PageSizeSelectorComp","paginationChangedEvent","shouldAddAndSelectEmptyOption","localisedLabel","localisedAriaLabel","defaultValues","paginationPageSizeSelectorValues","PageSizeSelectorSelector","paginationCompCSS","PaginationComp","btFirst","btPrevious","btNext","btLast","paginationPanelEnabled","idPrefix","totalPages","zeroPagesToDisplay","onLastPage","lastPageFound","masterRowCount","theoreticalEndRow","isLoadingPageSize","lbFirstRowOnPage","lbLastRowOnPage","toDisplay","lbCurrent","lbTotal","lbRecordCount","moreText","strPage","strTo","strOf","ariaRowStatus","ariaPageStatus","strZero","PaginationSelector","PaginationService","lastPage","oldPageSize","currentSize","masterLastRowIndex","masterPageStartIndex","masterPageEndIndex","firstIndexNotToShow","maxRowIndex","keepRenderedRows","newPage","PaginationModule","redrawRows","setRowNodeExpanded","expandParents","getRowNode","addRenderedRowListener","getRenderedNodes","forEachNode","getFirstDisplayedRowIndex","getLastDisplayedRowIndex","getDisplayedRowAtIndex","getDisplayedRowCount","RowApiModule","ScrollApiModule","setGridAriaProperty","eGrid","ariaProperty","refreshCells","refreshHeader","isAnimationFrameQueueEmpty","flushAllAnimationFrames","getSizesForCurrentTheme","getCellRendererInstances","cellRenderers","fullWidthRenderers","rowIdMap","renderers","renderer","RenderApiModule","sizeColumnsToFit","paramsOrGridWidth","autoSizeColumns","autoSizeAllColumns","ColumnAutosizeService","skipHeaderGroups","stopAtGroup","renderStatus","autoWidthCalc","columnsAutoSized","changesThisTimeAround","shouldSkipHeader","shouldSkipHeaderGroups","preferredWidth","normaliseColumnWidth","columnGroups","headerGroupCtrl","resizedColumns","headerContainerCtrl","skipHeaderOnAutoSize","autoSizeColListener","nextTimeout","scrollWidthToRemove","gridWidth","limitsMap","dimensions","widthOverride","colsToSpread","colsToNotSpread","colsToDispatchEventFor","finishedResizing","moveToNotSpread","minOverride","maxOverride","availablePixels","scale","pixelsForLastCol","colMinWidth","colMaxWidth","autoSizeStrategy","propColumnLimits","defaultMinWidth","defaultMaxWidth","columnLimits","resizeOperation","ColumnAutoSizeModule","getPinnedTopRowCount","getPinnedBottomRowCount","getPinnedTopRow","getPinnedBottomRow","PinnedRowModel","estimateRowHeight","forEach","anyChange","updateRowHeight","allData","nodesToRemove","dataIds","existingNode","getById","getTotalHeight","getSize","getByIndex","cache","PinnedRowModule","SpannedCellCtrl","SpannedRowCtrl","_rowContainerType","SpannedRowRenderer","ctrlsKey","rowSpanSvc","ctrlsName","previousCtrls","previousCtrlsSize","newRowCtrls","hasNewSpans","existingCtrl","newCtrl","sameCount","_normalisePinnedValue","CellSpan","firstNode","allButLastHeights","RowSpanCache","oldMap","newMap","equalsFnc","customCompare","isCustomCompare","lastNode","spanData","setNewHead","checkNodeForCache","doesNodeSupportSpanning","oldSpan","RowSpanService","onRowDataUpdated","spanningNode","CellSpanModule","CellCustomStyleFeature","cellClassRules","cellClassParams","cellStyle","newStaticClasses","CellStyleService","cellClass","classOrClasses","cssClassItem","CellStyleModule","RowStyleModule","isColumnHovered","HoverFeature","CSS_COLUMN_HOVER","ColumnHoverService","selectedColumns","isHovered","ColumnHoverModule","ApiEventService","asyncListeners","hasAsync","syncListener","asyncListener","wrapSvc","globalListenerPairs","addEventListener","removeEventListener","addGlobalListener","removeGlobalListener","EventApiModule","tooltipCSS","TooltipService","existingTooltipFeature","isTooltipWhenTruncated","tooltipParams","TooltipModule","LocaleModule","RowAutoHeightService","displayedAutoHeightCols","anyNodeChanged","updateDisplayedRowHeights","autoHeights","cellHeight","spannedCell","previousCellHeight","activeColsForRow","eParentCell","destroyResizeObserver","RowAutoHeightModule","AllCommunityModule","M"],"sourceRoot":""}