{"version":3,"file":"ag-grid-community-DKRvuJup.js","sources":["../../node_modules/ag-grid-community/dist/package/main.esm.mjs"],"sourcesContent":["// 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 _nodeListForEach(element.querySelectorAll(\"input\"), (input) => addOrRemoveDisabledAttribute(input));\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 `
\n \n \n
`;\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.toString();\n element.style.maxWidth = width.toString();\n element.style.minWidth = width.toString();\n}\nfunction _setFixedHeight(element, height) {\n height = _formatSize(height);\n element.style.height = height.toString();\n element.style.maxHeight = height.toString();\n element.style.minHeight = height.toString();\n}\nfunction _formatSize(size) {\n if (typeof size === \"number\") {\n return `${size}px`;\n }\n return size;\n}\nfunction _isNodeOrElement(o) {\n return o instanceof Node || o instanceof HTMLElement;\n}\nfunction _copyNodeList(nodeList) {\n if (nodeList == null) {\n return [];\n }\n const result = [];\n _nodeListForEach(nodeList, (node) => result.push(node));\n return result;\n}\nfunction _iterateNamedNodeMap(map, callback) {\n if (!map) {\n return;\n }\n for (let i = 0; i < map.length; i++) {\n const attr = map[i];\n callback(attr.name, attr.value);\n }\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 _nodeListForEach(nodeList, action) {\n if (nodeList == null) {\n return;\n }\n for (let i = 0; i < nodeList.length; i++) {\n action(nodeList[i]);\n }\n}\nfunction _bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {\n cellRendererPromise.then((cellRenderer) => {\n const gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui === \"object\") {\n eTarget.appendChild(gui);\n } else {\n eTarget.innerHTML = gui;\n }\n }\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}\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 executeNextVMTurnFuncs = [];\nvar executeNextVMTurnPending = false;\nfunction _executeNextVMTurn(func) {\n executeNextVMTurnFuncs.push(func);\n if (executeNextVMTurnPending) {\n return;\n }\n executeNextVMTurnPending = true;\n window.setTimeout(() => {\n const funcsCopy = executeNextVMTurnFuncs.slice();\n executeNextVMTurnFuncs.length = 0;\n executeNextVMTurnPending = false;\n funcsCopy.forEach((func2) => func2());\n }, 0);\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 = (/* @__PURE__ */ new Date()).getTime();\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 = (/* @__PURE__ */ new Date()).getTime();\n let interval = null;\n let executed = false;\n const internalCallback = () => {\n const reachedTimeout = (/* @__PURE__ */ new Date()).getTime() - 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.1.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 if (gos.exists(\"groupDisplayType\")) {\n return gos.get(\"groupDisplayType\") === \"multipleColumns\";\n }\n return gos.get(\"groupHideOpenParents\");\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}\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 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 _sortNumerically(array) {\n return array.sort((a, b) => a - b);\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}\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 } = 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 let colsToProcess = [];\n const groupAutoCols = autoColSvc?.getColumns();\n if (groupAutoCols) {\n colsToProcess = colsToProcess.concat(groupAutoCols);\n }\n if (primaryColumns) {\n colsToProcess = colsToProcess.concat(primaryColumns);\n }\n colsToProcess.forEach((column) => {\n const stateItem = getColumnStateFromColDef(column);\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 _applyColumnState(beans, { state: columnStates, 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 colsForState = colModel.getAllCols();\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 colsForState.forEach((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 colsForState = colModel.getAllCols();\n const rowGroupColumns = rowGroupColsSvc?.columns;\n const pivotColumns = pivotColsSvc?.columns;\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 const res2 = {\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 return res2;\n };\n const res = colsForState.map((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 // returns colDefCols, pivotResultCols and autoCols\n getAllCols() {\n const { pivotResultCols, autoColSvc, selectionColSvc } = this.beans;\n const pivotResultColsList = pivotResultCols?.getPivotResultCols()?.list;\n return [\n this.colDefCols?.list ?? [],\n autoColSvc?.columns?.list ?? [],\n selectionColSvc?.columns?.list ?? [],\n pivotResultColsList ?? []\n ].flat();\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 }\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 }\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 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 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 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 return this.columns = res;\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(template, 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 (template) {\n this.setTemplate(template);\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(\"data-ref\");\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 = _copyNodeList(parentNode.childNodes);\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 this.copyAttributesFromNode(childNode, childComp2.getGui());\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 copyAttributesFromNode(source, dest) {\n _iterateNamedNodeMap(source.attributes, (name, value) => dest.setAttribute(name, value));\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(template, componentSelectors, paramsMap) {\n const eGui = _loadTemplate(template);\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, params) {\n return userCompFactory.getCompDetailsFromGridOptions(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/misc/animationFrameService.ts\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 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.createTasksP1 = { list: [], sorted: false };\n // eg drawing back-ground of rows\n this.createTasksP2 = { list: [], sorted: false };\n // eg cell renderers, adding hover functionality\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.lastPage = 0;\n this.lastScrollTop = 0;\n this.taskCount = 0;\n this.cancelledTasks = /* @__PURE__ */ new Set();\n }\n setScrollTop(scrollTop) {\n const { gos, pagination } = this.beans;\n const isPaginationActive = gos.get(\"pagination\");\n this.scrollGoingDown = scrollTop >= this.lastScrollTop;\n if (isPaginationActive && scrollTop === 0) {\n const currentPage = pagination?.getCurrentPage() ?? 0;\n if (currentPage !== this.lastPage) {\n this.lastPage = currentPage;\n this.scrollGoingDown = true;\n }\n }\n this.lastScrollTop = scrollTop;\n }\n postConstruct() {\n this.active = !this.gos.get(\"suppressAnimationFrame\");\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 verifyAnimationFrameOn(methodName) {\n if (this.active === false) {\n _warn(92, { methodName });\n }\n }\n createTask(task, index, list) {\n this.verifyAnimationFrameOn(list);\n const taskItem = { task, index, createOrder: ++this.taskCount };\n this.addTaskToList(this[list], taskItem);\n this.schedule();\n }\n cancelTask(task) {\n this.cancelledTasks.add(task);\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.verifyAnimationFrameOn(\"createTasksP3\");\n this.destroyTasks.push(task);\n this.schedule();\n }\n executeFrame(millis) {\n this.verifyAnimationFrameOn(\"executeFrame\");\n const p1TaskList = this.createTasksP1;\n const p1Tasks = p1TaskList.list;\n const p2TaskList = this.createTasksP2;\n const p2Tasks = p2TaskList.list;\n const destroyTasks = this.destroyTasks;\n const frameStart = (/* @__PURE__ */ new Date()).getTime();\n let duration = (/* @__PURE__ */ new Date()).getTime() - frameStart;\n const noMaxMillis = millis <= 0;\n const scrollFeature = this.beans.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(p1TaskList);\n task = p1Tasks.pop().task;\n } else if (p2Tasks.length) {\n this.sortTaskList(p2TaskList);\n task = p2Tasks.pop().task;\n } else if (destroyTasks.length) {\n task = destroyTasks.pop();\n } else {\n this.cancelledTasks.clear();\n break;\n }\n if (!this.cancelledTasks.has(task)) {\n task();\n }\n }\n duration = (/* @__PURE__ */ new Date()).getTime() - frameStart;\n }\n if (p1Tasks.length || p2Tasks.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/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 cellCtrl.stopEditingAndFocus(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 cellCtrl.focusCell(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 modelUpdated: 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.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 shouldRestoreFocus() {\n return this.beans.focusSvc.shouldRestoreFocus(this.cellPosition);\n }\n onFocusOut() {\n this.beans.focusSvc.clearRestoreFocus();\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.onCellFocused(this.focusEventToRestore);\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 if (isSsrmLoading) {\n const params = this.createCellRendererParams();\n compDetails = _getLoadingCellRendererDetails(userCompFactory, column.getColDef(), params);\n } else if (this.isCellRenderer()) {\n const params = this.createCellRendererParams();\n compDetails = _getCellRendererDetails(userCompFactory, column.getColDef(), params);\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 } = this.beans.gridOptions;\n return colDef.checkboxSelection || isColumnSelectionCol(this.column) && rowSelection && typeof rowSelection !== \"string\" && _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.stopEditingAndFocus();\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 // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n stopEditingAndFocus(suppressNavigateAfterEdit = false, shiftKey = false) {\n this.beans.editSvc?.stopEditingAndFocus(this, suppressNavigateAfterEdit, shiftKey);\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 onRowIndexChanged() {\n this.createCellPosition();\n this.onCellFocused();\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 isCellFocused() {\n return this.beans.focusSvc.isCellFocused(this.cellPosition);\n }\n onCellFocused(event) {\n const { beans } = this;\n if (_isCellFocusSuppressed(beans)) {\n return;\n }\n const cellFocused = this.isCellFocused();\n if (!this.comp) {\n if (cellFocused && event?.forceBrowserFocus) {\n this.focusEventToRestore = event;\n }\n return;\n }\n this.focusEventToRestore = void 0;\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 super.destroy();\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}\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, rowSpanSvc } = 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 rowSpanSvc?.onRowDataUpdated(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, rowSpanSvc } = 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 rowSpanSvc?.onRowDataUpdated(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 FilterWrapperComp = class extends Component {\n constructor(column, source) {\n super(\n /* html */\n `
`\n );\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) => `
`;\nvar RESIZE_TEMPLATE = (\n /* html */\n `
\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 eGui = this.element;\n this.resizerMap = {\n topLeft: { element: eGui.querySelector(\"[data-ref=eTopLeftResizer]\") },\n top: { element: eGui.querySelector(\"[data-ref=eTopResizer]\") },\n topRight: { element: eGui.querySelector(\"[data-ref=eTopRightResizer]\") },\n right: { element: eGui.querySelector(\"[data-ref=eRightResizer]\") },\n bottomRight: { element: eGui.querySelector(\"[data-ref=eBottomRightResizer]\") },\n bottom: { element: eGui.querySelector(\"[data-ref=eBottomResizer]\") },\n bottomLeft: { element: eGui.querySelector(\"[data-ref=eBottomLeftResizer]\") },\n left: { element: eGui.querySelector(\"[data-ref=eLeftResizer]\") }\n };\n }\n addResizers() {\n if (this.resizersAdded) {\n return;\n }\n const eGui = this.element;\n if (!eGui) {\n return;\n }\n const parser = new DOMParser();\n const resizers = parser.parseFromString(RESIZE_TEMPLATE, \"text/html\").body;\n eGui.appendChild(resizers.firstChild);\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 if (eGui) {\n eGui.removeEventListener(\"submit\", this.onFormSubmit);\n }\n const templateString = (\n /* html */\n `\n
\n
\n ${this.createBodyTemplate()}\n
\n
`\n );\n this.setTemplate(templateString, 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 = document.createElement(\"div\");\n this.eButtonsPanel.classList.add(\"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 `${text}\n `\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.scrollTimer = 0;\n this.needsRefreshedScrollPosition = 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 requireUpdatedScrollPosition = this.requireUpdatedScrollPosition.bind(this);\n this.addManagedEventListeners({\n displayedColumnsWidthChanged: this.onDisplayedColumnsWidthChanged.bind(this),\n gridSizeChanged: requireUpdatedScrollPosition\n });\n this.addManagedElementListeners(this.eBodyViewport, {\n scroll: requireUpdatedScrollPosition\n });\n this.ctrlsSvc.whenReady(this, (p) => {\n this.centerRowsCtrl = p.center;\n this.onDisplayedColumnsWidthChanged();\n this.addScrollListener();\n });\n }\n requireUpdatedScrollPosition() {\n this.needsRefreshedScrollPosition = 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 || this.gos.get(\"suppressAnimationFrame\")) {\n this.scrollGridIfNeeded(true);\n } else {\n animationFrameSvc.schedule();\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.requireUpdatedScrollPosition();\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.requireUpdatedScrollPosition();\n this.eBodyViewport.scrollTop = vScrollPosition;\n }\n getVScrollPosition() {\n if (!this.needsRefreshedScrollPosition) {\n const { lastOffsetHeight, lastScrollTop } = this;\n return {\n top: lastScrollTop,\n bottom: lastScrollTop + lastOffsetHeight\n };\n }\n this.needsRefreshedScrollPosition = 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 return this.centerRowsCtrl.isHorizontalScrollShowing();\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 isPaging = this.gos.get(\"pagination\");\n const paginationPanelEnabled = isPaging && !this.gos.get(\"suppressPaginationPanel\");\n const {\n frameworkOverrides,\n pagination,\n pageBounds,\n rowContainerHeight: heightScaler,\n rowRenderer\n } = this.beans;\n frameworkOverrides.wrapIncoming(() => {\n if (!paginationPanelEnabled) {\n pagination?.goToPageWithIndex(index);\n }\n const gridBodyCtrl = this.ctrlsSvc.getGridBodyCtrl();\n const stickyTopHeight = gridBodyCtrl.stickyTopHeight;\n const stickyBottomHeight = gridBodyCtrl.stickyBottomHeight;\n const rowNode = rowModel.getRow(index);\n let rowGotShiftedDuringOperation;\n do {\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;\n } else if (position === \"bottom\") {\n newScrollPosition = pxBottom;\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 } while (rowGotShiftedDuringOperation);\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 compBean = setupCompBean(this, this.beans.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 isSsrmLoadingRow = this.rowType === \"FullWidthLoading\" || this.rowNode.stub;\n if (!isSsrmLoadingRow && !this.rowNode.rowPinned) {\n this.beans.rowRenderer.dispatchFirstDataRenderedEvent();\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 \"createTasksP2\"\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 _executeNextVMTurn(() => {\n this.onTopChanged();\n });\n this.slideInAnimation[containerType] = false;\n }\n const shouldFade = this.fadeInAnimation[containerType];\n if (shouldFade) {\n _executeNextVMTurn(() => {\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 || suppressAnimationFrame || this.gos.get(\"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 \"createTasksP1\"\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 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 const { editing, cellPosition } = cellCtrl;\n const { focusSvc, visibleCols } = this.beans;\n const focused = focusSvc.isCellFocused(cellPosition);\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 verifyCells() {\n this.onDisplayedColumnsChanged();\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 const element = this.fullWidthGui ? this.fullWidthGui.element : this.centerGui?.element;\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 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 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(rowComp, eventName, keyboardEvent) {\n const { rowNode } = rowComp;\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.UP:\n case KeyCode.DOWN:\n rowComp.onKeyboardNavigate(keyboardEvent);\n break;\n case KeyCode.TAB:\n rowComp.onTabKeyDown(keyboardEvent);\n break;\n default:\n }\n }\n }\n if (eventName === \"keydown\") {\n this.eventSvc.dispatchEvent(rowComp.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 FakeHScrollComp = class extends AbstractFakeScrollComp {\n constructor() {\n super(\n /* html */\n `
\n
\n
\n
\n
\n
\n
`,\n \"horizontal\"\n );\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 FakeVScrollComp = class extends AbstractFakeScrollComp {\n constructor() {\n super(\n /* html */\n `
\n
\n
\n
\n
`,\n \"vertical\"\n );\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 displayedHeights = 0;\n const headerRowCellCtrls = headerRowCtrl.getHeaderCtrls();\n for (const headerCellCtrl of headerRowCellCtrls) {\n const { column } = headerCellCtrl;\n if (column.isAutoHeaderHeight()) {\n const height = column.getAutoHeaderHeight();\n if (height != null && height > displayedHeights) {\n displayedHeights = height;\n }\n }\n }\n return Math.max(defaultHeight, displayedHeights);\n}\nfunction getColumnHeaderRowHeight(beans) {\n const defaultHeight = beans.colModel.isPivotMode() ? getPivotHeaderHeight(beans) : getHeaderHeight(beans);\n const allDisplayedCols = beans.visibleCols.allCols;\n const displayedHeights = allDisplayedCols.filter((col) => col.isAutoHeaderHeight()).map((col) => col.getAutoHeaderHeight() || 0);\n return Math.max(defaultHeight, ...displayedHeights);\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 HeaderCellComp = class extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(\n /* html */\n `
\n
\n
\n
`,\n ctrl\n );\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 HeaderGroupCellComp = class extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(\n /* html */\n `
\n
\n
\n
`,\n ctrl\n );\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 HeaderFilterCellComp = class extends AbstractHeaderCellComp {\n constructor(ctrl) {\n super(\n /* html */\n `
\n
\n
\n \n
\n
`,\n ctrl\n );\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();\n this.ctrl = ctrl;\n this.headerComps = {};\n this.setTemplate(\n /* html */\n `
`\n );\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 _requestAnimationFrame(beans, () => measureHeight(timesCalled + 1));\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 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.getHeaderCellCtrls().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 getHeaderCellCtrl(column) {\n if (!this.headerCellCtrls) {\n return;\n }\n for (const cellCtrl of this.headerCellCtrls.values()) {\n if (cellCtrl.column === column) {\n return cellCtrl;\n }\n }\n return void 0;\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.getHeaderCtrls();\n const forceOrder = this.isEnsureDomOrder || this.isPrintLayout;\n this.comp.setHeaderCtrls(ctrlsToDisplay, forceOrder, afterScroll);\n }\n getHeaderCtrls() {\n const oldCtrls = this.headerCellCtrls;\n this.headerCellCtrls = /* @__PURE__ */ new Map();\n const columns = this.getColumnsInViewport();\n for (const child of columns) {\n this.recycleAndCreateHeaderCtrls(child, 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.headerCellCtrls.set(id, oldCtrl);\n } else {\n this.destroyBean(oldCtrl);\n }\n }\n }\n return this.getHeaderCellCtrls();\n }\n getHeaderCellCtrls() {\n return Array.from(this.headerCellCtrls?.values() ?? []);\n }\n recycleAndCreateHeaderCtrls(headerColumn, oldCtrls) {\n if (!this.headerCellCtrls) {\n return;\n }\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 this.headerCellCtrls.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 findHeaderCellCtrl(column) {\n if (!this.headerCellCtrls) {\n return;\n }\n const allCtrls = this.getHeaderCellCtrls();\n let ctrl;\n if (typeof column === \"function\") {\n ctrl = allCtrls.find(column);\n } else {\n ctrl = allCtrls.find((ctrl2) => ctrl2.column == column);\n }\n return ctrl;\n }\n focusHeader(column, event) {\n const ctrl = this.findHeaderCellCtrl(column);\n if (!ctrl) {\n return false;\n }\n const focused = ctrl.focus(event);\n return focused;\n }\n destroy() {\n this.headerCellCtrls?.forEach((ctrl) => {\n this.destroyBean(ctrl);\n });\n this.headerCellCtrls = 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 if (isColumn(column)) {\n return this.columnsRowCtrl?.getHeaderCellCtrl(column);\n }\n if (this.groupsRowCtrls.length === 0) {\n return;\n }\n for (let i = 0; i < this.groupsRowCtrls.length; i++) {\n const ctrl = this.groupsRowCtrls[i].getHeaderCellCtrl(column);\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 LoadingOverlayComponent2 = class extends OverlayComponent {\n init() {\n const customTemplate = _makeNull(this.gos.get(\"overlayLoadingTemplate\")?.trim());\n this.setTemplate(\n customTemplate ?? /* html */\n ``\n );\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 NoRowsOverlayComponent2 = class extends OverlayComponent {\n init() {\n const customTemplate = _makeNull(this.gos.get(\"overlayNoRowsTemplate\")?.trim());\n this.setTemplate(customTemplate ?? /* html */\n ``);\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 = document.createElement(\"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 span = document.createElement(\"span\");\n const iconValue = beans.registry.getIcon(iconName);\n if (!iconValue) {\n beans.validation?.validateIcon(iconName);\n }\n const cssClass = iconValue ?? iconName;\n span.setAttribute(\"class\", `ag-icon ag-icon-${cssClass}`);\n span.setAttribute(\"unselectable\", \"on\");\n _setAriaRole(span, \"presentation\");\n return span;\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 DragAndDropImageComponent2 = class extends Component {\n constructor() {\n super();\n this.dragSource = null;\n this.eIcon = RefPlaceholder;\n this.eLabel = 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(\n /* html */\n `
\n \n
\n
`\n );\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\nvar AgAbstractInputField = class extends AgAbstractField {\n constructor(config, className, inputType = \"text\", displayFieldTag = \"input\") {\n super(\n config,\n config?.template ?? /* html */\n `\n
\n
\n
\n <${displayFieldTag} data-ref=\"eInput\" class=\"ag-input-field-input\">\n
\n
`,\n [],\n className\n );\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 CheckboxCellRenderer = class extends Component {\n constructor() {\n super(\n /* html*/\n `\n
\n \n
`,\n [AgCheckboxSelector]\n );\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 });\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 CheckboxSelectionComponent = class extends Component {\n constructor() {\n super(\n /* html*/\n `\n
\n \n
`,\n [AgCheckboxSelector]\n );\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 dispatchSelectionChanged(source) {\n this.eventSvc.dispatchEvent({\n type: \"selectionChanged\",\n source\n });\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 = (/* @__PURE__ */ new Date()).getTime();\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 = (/* @__PURE__ */ new Date()).getTime();\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(\n /* html */\n `
`\n );\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 }\n updateIndices() {\n const options = this.getGui().querySelectorAll(\".ag-list-item\");\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 AgPickerField = class extends AgAbstractField {\n constructor(config) {\n super(\n config,\n config?.template || /* html */\n `\n
\n
\n
\n
\n
\n
\n
`,\n config?.agComponents || [],\n config?.className\n );\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 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 { eFocusableElement, eTopGuard, eBottomGuard } = this;\n eFocusableElement.removeChild(eTopGuard);\n eFocusableElement.removeChild(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 = (/* @__PURE__ */ new Date()).getTime();\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.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 \"rowSpanSvc\",\n \"pageBoundsListener\",\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 PINNED_LEFT_TEMPLATE = (\n /* html */\n `
`\n);\nvar PINNED_RIGHT_TEMPLATE = (\n /* html */\n `
`\n);\nvar CENTER_TEMPLATE = (\n /* html */\n `
\n
\n
`\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 ? PINNED_LEFT_TEMPLATE : pinnedRight ? PINNED_RIGHT_TEMPLATE : CENTER_TEMPLATE;\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 GridHeaderComp = class extends Component {\n constructor() {\n super(\n /* html */\n `
`\n );\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 = document.createElement(\"div\");\n cellDiv.setAttribute(\"comp-id\", `${this.getCompId()}`);\n this.eCell = cellDiv;\n let wrapperDiv;\n if (cellCtrl.isCellSpanning()) {\n wrapperDiv = document.createElement(\"div\");\n wrapperDiv.className = \"ag-spanned-cell-wrapper\";\n wrapperDiv.appendChild(cellDiv);\n _setAriaRole(wrapperDiv, \"presentation\");\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 _setAriaRole(cellDiv, cellCtrl.getCellAriaRole());\n cellDiv.setAttribute(\"col-id\", cellCtrl.colIdSanitised);\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 if (this.eCellValue) {\n return this.eCellValue;\n }\n if (this.eCellWrapper) {\n return this.eCellWrapper;\n }\n return 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 this.checkboxSelectionComp = this.beans.context.destroyBean(this.checkboxSelectionComp);\n this.dndSourceComp = this.beans.context.destroyBean(this.dndSourceComp);\n this.rowDraggingComp = this.beans.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 const wrapperDiv = document.createElement(\"div\");\n wrapperDiv.setAttribute(\"role\", \"presentation\");\n wrapperDiv.setAttribute(\"class\", \"ag-cell-wrapper\");\n this.eCellWrapper = wrapperDiv;\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 const cellSpan = document.createElement(\"span\");\n cellSpan.setAttribute(\"role\", \"presentation\");\n cellSpan.setAttribute(\"class\", \"ag-cell-value\");\n this.eCellValue = cellSpan;\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) {\n if (providingControls) {\n this.addControls();\n }\n }\n return templateChanged;\n }\n addControls() {\n if (this.includeRowDrag) {\n if (this.rowDraggingComp == null) {\n this.rowDraggingComp = this.cellCtrl.createRowDragComp();\n if (this.rowDraggingComp) {\n this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(), this.eCellValue);\n }\n }\n }\n if (this.includeDndSource) {\n if (this.dndSourceComp == null) {\n this.dndSourceComp = this.cellCtrl.createDndSource();\n if (this.dndSourceComp) {\n this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(), this.eCellValue);\n }\n }\n }\n if (this.includeSelection) {\n if (this.checkboxSelectionComp == null) {\n this.checkboxSelectionComp = this.cellCtrl.createSelectionCheckbox();\n if (this.checkboxSelectionComp) {\n this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(), this.eCellValue);\n }\n }\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 destroyEditorAndRenderer() {\n this.destroyRenderer();\n this.destroyEditor();\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 if (this.hideEditorPopup) {\n this.hideEditorPopup();\n }\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 == null || 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 suppressAnimationFrame = this.beans.gos.get(\"suppressAnimationFrame\");\n const useTaskService = !suppressAnimationFrame && this.beans.animationFrameSvc;\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 if (componentPromise) {\n componentPromise.then(callback);\n }\n };\n if (useTaskService && this.firstRender) {\n this.beans.animationFrameSvc.createTask(createCellRendererFunc, this.rowNode.rowIndex, \"createTasksP2\");\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 this.cellRendererGui = this.cellRenderer.getGui();\n if (this.cellRendererGui != null) {\n const eParent = this.getParentOfValue();\n _clearElement(eParent);\n eParent.appendChild(this.cellRendererGui);\n }\n }\n afterCellEditorCreated(requestVersion, cellEditor, params, popup, position) {\n const staleComp = requestVersion !== this.editorVersion;\n if (staleComp) {\n this.beans.context.destroyBean(cellEditor);\n return;\n }\n const editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n if (editingCancelledByUserComp) {\n this.beans.context.destroyBean(cellEditor);\n this.cellCtrl.stopEditing(true);\n return;\n }\n if (!cellEditor.getGui) {\n _warn(97, { colId: this.column.getId() });\n this.beans.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 if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\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 this.clearParentOfValue();\n if (this.cellEditorGui) {\n const eParent = this.getParentOfValue();\n eParent.appendChild(this.cellEditorGui);\n }\n }\n addPopupCellEditor(params, position) {\n if (this.beans.gos.get(\"editType\") === \"fullRow\") {\n _warn(98);\n }\n const cellEditor = this.cellEditor;\n this.cellEditorPopupWrapper = this.beans.context.createBean(\n this.beans.editSvc.createPopupEditorWrapper(params)\n );\n const ePopupGui = this.cellEditorPopupWrapper.getGui();\n if (this.cellEditorGui) {\n ePopupGui.appendChild(this.cellEditorGui);\n }\n const popupSvc = this.beans.popupSvc;\n const useModelPopup = this.beans.gos.get(\"stopEditingWhenCellsLoseFocus\");\n const positionToUse = position != null ? position : cellEditor.getPopupPosition?.() ?? \"over\";\n const isRtl = this.beans.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(this.beans.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.destroyEditorAndRenderer();\n this.removeControls();\n super.destroy();\n }\n clearParentOfValue() {\n const { eCell } = this;\n if (eCell.contains(_getActiveDomElement(this.beans))) {\n eCell.focus({ preventScroll: true });\n }\n _clearElement(this.getParentOfValue());\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 = {};\n this.beans = beans;\n this.rowCtrl = ctrl;\n const rowDiv = document.createElement(\"div\");\n rowDiv.setAttribute(\"comp-id\", `${this.getCompId()}`);\n rowDiv.setAttribute(\"style\", this.getInitialStyle(containerType));\n this.setTemplateFromElement(rowDiv);\n const eGui = this.getGui();\n const style = eGui.style;\n this.domOrder = this.rowCtrl.getDomOrder();\n _setAriaRole(eGui, \"row\");\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(eGui, styles),\n setTop: (top) => style.top = top,\n setTransform: (transform) => style.transform = transform,\n setRowIndex: (rowIndex) => eGui.setAttribute(\"row-index\", rowIndex),\n setRowId: (rowId) => eGui.setAttribute(\"row-id\", rowId),\n setRowBusinessKey: (businessKey) => eGui.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 getInitialStyle(containerType) {\n const transform = this.rowCtrl.getInitialTransform(containerType);\n return transform ? `transform: ${transform}` : `top: ${this.rowCtrl.getInitialRowTop(containerType)}`;\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 = Object.assign({}, this.cellComps);\n cellCtrls.forEach((cellCtrl) => {\n const key = cellCtrl.instanceId;\n const existingCellComp = this.cellComps[key];\n if (existingCellComp == null) {\n this.newCellComp(cellCtrl);\n } else {\n cellsToRemove[key] = null;\n }\n });\n this.destroyCells(Object.values(cellsToRemove));\n this.ensureDomOrder(cellCtrls);\n }\n ensureDomOrder(cellCtrls) {\n if (!this.domOrder) {\n return;\n }\n const elementsInOrder = [];\n cellCtrls.forEach((cellCtrl) => {\n const cellComp = this.cellComps[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[cellCtrl.instanceId] = cellComp;\n this.getGui().appendChild(cellComp.getGui());\n }\n destroy() {\n super.destroy();\n this.destroyCells(Object.values(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 cellComps.forEach((cellComp) => {\n if (!cellComp) {\n return;\n }\n const instanceId = cellComp.cellCtrl.instanceId;\n if (this.cellComps[instanceId] !== cellComp) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n this.cellComps[instanceId] = null;\n });\n }\n};\n\n// packages/ag-grid-community/src/gridBodyComp/rowContainer/rowContainerComp.ts\nfunction templateFactory(name, options, beans) {\n const isCellSpanning = !!beans.gos.get(\"enableCellSpan\") && !!options.getSpannedRowCtrls;\n const containerClass = _getRowContainerClass(name);\n const eContainerTemplate = `
`;\n if (options.type === \"center\" || isCellSpanning) {\n const spannedCellsContainerClass = _getRowSpanContainerClass(name);\n const viewportClass = _getRowViewportClass(name);\n const eSpannedContainerTemplate = `
`;\n return `
\n ${eContainerTemplate}\n ${isCellSpanning ? eSpannedContainerTemplate : \"\"}\n
`;\n }\n return eContainerTemplate;\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(templateFactory(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 /* html */\n ``\n );\n }).join(\"\");\n}\nfunction getGridBodyTemplate(includeOverlay) {\n const paramsMap = {};\n const template = (\n /* html */\n `
\n \n
\n ${makeRowContainers(paramsMap, [\"topLeft\", \"topCenter\", \"topRight\", \"topFullWidth\"])}\n
\n
\n
\n ${makeRowContainers(paramsMap, [\"left\", \"center\", \"right\", \"fullWidth\"])}\n
\n \n
\n
\n ${makeRowContainers(paramsMap, [\"stickyTopLeft\", \"stickyTopCenter\", \"stickyTopRight\", \"stickyTopFullWidth\"])}\n
\n
\n ${makeRowContainers(paramsMap, [\"stickyBottomLeft\", \"stickyBottomCenter\", \"stickyBottomRight\", \"stickyBottomFullWidth\"])}\n
\n
\n ${makeRowContainers(paramsMap, [\"bottomLeft\", \"bottomCenter\", \"bottomRight\", \"bottomFullWidth\"])}\n
\n \n ${includeOverlay ? (\n /* html */\n ``\n ) : \"\"}\n
`\n );\n return { paramsMap, template };\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, template } = getGridBodyTemplate(!!overlaySelector);\n this.setTemplate(\n template,\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 classLists.forEach((classList) => {\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 ? \"\" : \"\";\n const sideBar = params.sideBarSelector ? '' : \"\";\n const statusBar = params.statusBarSelector ? \"\" : \"\";\n const watermark = params.watermarkSelector ? \"\" : \"\";\n const pagination = params.paginationSelector ? '' : \"\";\n const template = (\n /* html */\n `
\n ${dropZones}\n
\n \n ${sideBar}\n
\n ${statusBar}\n ${pagination}\n ${watermark}\n
`\n );\n return template;\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(\"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 DndSourceComp = class extends Component {\n constructor(rowNode, column, eCell) {\n super(\n /* html */\n `
`\n );\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 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(\n /* html */\n `
`\n );\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 = _sortNumerically(movingCols.map((col) => gridCols.indexOf(col)));\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.findHeaderCellCtrl((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, currentDept, columnDept, 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 currentDept + 1,\n columnDept,\n columnKeyCreator\n );\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n } else {\n let firstPaddedGroup;\n let currentPaddedGroup;\n for (let j = columnDept - 1; j >= currentDept; j--) {\n const newColId = columnKeyCreator.getUniqueKey(null, null);\n const colGroupDefMerged = this.createMergedColGroupDef(null, newColId);\n const paddedGroup = new AgProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDept);\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.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(\"\" + callbackResult + \"\");\n return;\n }\n if (callbackResult == null) {\n this.eGui = _loadTemplate(\"\");\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-hover.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:\"\";inherits:false;initial-value:transparent}@property --ag-internal-hover-color{syntax:\"\";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) => {\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 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) => {\n _injectGlobalCSS(coreCSS, styleContainer, \"core\", layer, 0);\n Array.from(_getAllRegisteredModules()).sort((a, b) => a.moduleName.localeCompare(b.moduleName)).forEach(\n (module) => module.css?.forEach((css) => _injectGlobalCSS(css, styleContainer, `module-${module.moduleName}`, layer, 0))\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) {\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);\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 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;\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, loadThemeGoogleFonts }) {\n if (IS_SSR)\n return;\n if (FORCE_LEGACY_THEMES)\n return;\n uninstallLegacyCSS();\n _injectCoreAndModuleCSS(styleContainer, cssLayer);\n const googleFontsUsed = getGoogleFontsUsed(this);\n if (googleFontsUsed.length > 0) {\n for (const googleFont of googleFontsUsed) {\n if (loadThemeGoogleFonts) {\n loadGoogleFont(googleFont);\n }\n }\n }\n for (const part of this.parts) {\n part.use(styleContainer, cssLayer);\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)).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) => {\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);\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: ''\n },\n checkboxCheckedShapeColor: backgroundColor,\n checkboxIndeterminateBackgroundColor: foregroundBackgroundMix(0.3),\n checkboxIndeterminateBorderColor: { ref: \"checkboxIndeterminateBackgroundColor\" },\n checkboxIndeterminateShapeImage: {\n svg: ''\n },\n checkboxIndeterminateShapeColor: backgroundColor,\n radioCheckedShapeImage: {\n 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 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: '',\n arrows: '',\n asc: '',\n cancel: '',\n chart: '',\n \"color-picker\": '',\n columns: '',\n contracted: '',\n copy: '',\n cross: '',\n csv: '',\n cut: '',\n desc: '',\n down: '',\n excel: '',\n expanded: '',\n \"eye-slash\": '',\n eye: '',\n filter: '',\n first: '',\n group: '',\n last: '',\n left: '',\n linked: '',\n loading: '',\n maximize: '',\n menu: '',\n \"menu-alt\": '',\n minimize: '',\n minus: '',\n next: '',\n none: '',\n \"not-allowed\": '',\n paste: '',\n pin: '',\n pivot: '',\n plus: '',\n previous: '',\n right: '',\n save: '',\n \"small-left\": '',\n \"small-right\": '',\n tick: '',\n \"tree-closed\": '',\n \"tree-indeterminate\": '',\n \"tree-open\": '',\n unlinked: '',\n up: '',\n grip: '',\n settings: ''\n};\nvar iconNameToFullSvg = {\n \"small-down\": '',\n \"small-up\": ''\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 `` + svgFragment + \"\";\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 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 }\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 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);\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 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 = document.createElement(\"div\");\n container.className = \"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 = document.createElement(\"div\");\n const { border } = 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\") {\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);\n for (const [css, debugId] of globalCSS) {\n _injectGlobalCSS(css, this.eStyleContainer, debugId, this.cssLayer, 0);\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 });\n let eParamsStyle = this.eParamsStyle;\n if (!eParamsStyle) {\n eParamsStyle = this.eParamsStyle = document.createElement(\"style\");\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 if (nextHeader || !fromTab) {\n return focusSvc.focusHeaderPosition({\n headerPosition: nextHeader,\n direction: normalisedDirection,\n fromTab,\n allowUserOverride: true,\n event\n });\n } else if (fromTab) {\n const userFunc = gos.getCallback(\"tabToNextHeader\");\n if (userFunc) {\n return focusSvc.focusHeaderPositionFromUserFunc({\n userFunc,\n headerPosition: nextHeader,\n direction: normalisedDirection\n });\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 }\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 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.isDomDataMissingInHierarchy(_getActiveDomElement(this.beans), DOM_DATA_KEY_ROW_CTRL)) {\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.isDomDataMissingInHierarchy(_getActiveDomElement(this.beans), DOM_DATA_KEY_HEADER_CTRL)) {\n return null;\n }\n return this.focusedHeader;\n }\n isDomDataMissingInHierarchy(eBrowserCell, key) {\n let ePointer = eBrowserCell;\n while (ePointer) {\n const data = _getDomData(this.gos, ePointer, key);\n if (data) {\n return false;\n }\n ePointer = ePointer.parentNode;\n }\n return true;\n }\n getFocusedCell() {\n return this.focusedCell;\n }\n shouldRestoreFocus(cell) {\n if (this.isCellRestoreFocused(cell)) {\n setTimeout(() => {\n this.restoredFocusedCell = null;\n }, 0);\n return true;\n }\n return false;\n }\n clearRestoreFocus() {\n this.restoredFocusedCell = null;\n this.awaitRestoreFocusedCell = false;\n }\n restoreFocusedCell(cellPosition, setFocusCallback) {\n this.awaitRestoreFocusedCell = true;\n setTimeout(() => {\n if (!this.awaitRestoreFocusedCell) {\n return;\n }\n this.setRestoreFocusedCell(cellPosition);\n setFocusCallback();\n });\n }\n isCellRestoreFocused(cellPosition) {\n if (this.restoredFocusedCell == null) {\n return false;\n }\n if (\"cellSpan\" in cellPosition) {\n return cellPosition.doesSpanContain(this.restoredFocusedCell);\n }\n return _areCellsEqual(cellPosition, this.restoredFocusedCell);\n }\n setRestoreFocusedCell(cellPosition) {\n if (this.beans.frameworkOverrides.renderingEngine === \"react\") {\n this.restoredFocusedCell = cellPosition;\n }\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 this.restoredFocusedCell = null;\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 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 isRowNodeFocused(rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\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 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 getHeaderCompTemplate(includeSortIndicator) {\n return (\n /* html */\n `
\n \n \n
\n \n \n ${includeSortIndicator ? '' : \"\"}\n
\n
`\n );\n}\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() != 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 this.innerHeaderComponent.refresh?.(params);\n } else {\n this.setDisplayName(params);\n }\n return true;\n }\n workOutTemplate() {\n const { params, beans } = this;\n const template = params.template ?? getHeaderCompTemplate(!!beans.sortSvc);\n return template?.trim ? template.trim() : template;\n }\n init(params) {\n this.params = params;\n const { sortSvc, touchSvc, rowNumbersSvc, userCompFactory } = this.beans;\n this.currentTemplate = this.workOutTemplate();\n this.setTemplate(this.currentTemplate, sortSvc ? [sortSvc.getSortIndicatorSelector()] : 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 HeaderGroupComp = class extends Component {\n constructor() {\n super(\n /* html */\n `
\n \n \n \n
`\n );\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/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 = (/* @__PURE__ */ new Date()).getTime();\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 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 getRowBelow(rowPosition) {\n const index = rowPosition.rowIndex;\n const pinned = rowPosition.rowPinned;\n let ignoreSticky = false;\n const { pageBounds, pinnedRowModel, rowModel } = this.beans;\n if (this.isLastRowInContainer(rowPosition)) {\n switch (pinned) {\n case \"bottom\":\n return null;\n case \"top\":\n if (rowModel.isRowsToRender()) {\n return { rowIndex: pageBounds.getFirstRow(), rowPinned: null };\n }\n if (pinnedRowModel?.isRowsToRender(\"bottom\")) {\n return { rowIndex: 0, rowPinned: \"bottom\" };\n }\n return null;\n default:\n if (pinnedRowModel?.isRowsToRender(\"bottom\")) {\n return { rowIndex: 0, rowPinned: \"bottom\" };\n }\n return null;\n }\n } else if (pinned) {\n ignoreSticky = true;\n }\n const rowNode = rowModel.getRow(rowPosition.rowIndex);\n const nextStickyPosition = ignoreSticky ? void 0 : this.getNextStickyPosition(rowNode);\n if (nextStickyPosition) {\n return nextStickyPosition;\n }\n return { rowIndex: index + 1, rowPinned: pinned };\n }\n getNextStickyPosition(rowNode, up) {\n const { gos, rowRenderer } = this.beans;\n if (!_isGroupRowsSticky(gos) || !rowNode || !rowNode.sticky) {\n return;\n }\n const isTopCtrls = rowRenderer.getStickyTopRowCtrls().some((ctrl) => ctrl.rowNode.rowIndex === rowNode.rowIndex);\n let stickyRowCtrls = [];\n if (isTopCtrls) {\n stickyRowCtrls = [...rowRenderer.getStickyTopRowCtrls()].sort(\n (a, b) => a.rowNode.rowIndex - b.rowNode.rowIndex\n );\n } else {\n stickyRowCtrls = [...rowRenderer.getStickyBottomRowCtrls()].sort(\n (a, b) => b.rowNode.rowIndex - a.rowNode.rowIndex\n );\n }\n const diff = up ? -1 : 1;\n const idx = stickyRowCtrls.findIndex((ctrl) => ctrl.rowNode.rowIndex === rowNode.rowIndex);\n const nextCtrl = stickyRowCtrls[idx + diff];\n if (nextCtrl) {\n return { rowIndex: nextCtrl.rowNode.rowIndex, rowPinned: null };\n }\n }\n getCellBelow(lastCell) {\n if (!lastCell) {\n return null;\n }\n const adjustedLastCell = this.rowSpanSvc?.getCellEnd(lastCell) ?? lastCell;\n const rowBelow = this.getRowBelow(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 isLastRowInContainer(rowPosition) {\n const pinned = rowPosition.rowPinned;\n const index = rowPosition.rowIndex;\n const { pinnedRowModel, pageBounds } = this.beans;\n if (pinned === \"top\") {\n const lastTopIndex = pinnedRowModel?.getPinnedTopRowCount() ?? 0 - 1;\n return lastTopIndex <= index;\n }\n if (pinned === \"bottom\") {\n const lastBottomIndex = pinnedRowModel?.getPinnedBottomRowCount() ?? 0 - 1;\n return lastBottomIndex <= index;\n }\n const lastBodyIndex = pageBounds.getLastRow();\n return lastBodyIndex <= index;\n }\n getRowAbove(rowPosition) {\n const index = rowPosition.rowIndex;\n const pinned = rowPosition.rowPinned;\n const { pageBounds, pinnedRowModel, rowModel } = this.beans;\n const isFirstRow = pinned ? index === 0 : index === pageBounds.getFirstRow();\n let ignoreSticky = false;\n const getLastFloatingTopRow = () => {\n const lastFloatingRow = pinnedRowModel?.getPinnedTopRowCount() ?? 0 - 1;\n return { rowIndex: lastFloatingRow, rowPinned: \"top\" };\n };\n if (isFirstRow) {\n if (pinned === \"top\") {\n return null;\n }\n if (!pinned) {\n if (pinnedRowModel?.isRowsToRender(\"top\")) {\n return getLastFloatingTopRow();\n }\n return null;\n }\n if (rowModel.isRowsToRender()) {\n const lastBodyRow = pageBounds.getLastRow();\n return { rowIndex: lastBodyRow, rowPinned: null };\n }\n if (pinnedRowModel?.isRowsToRender(\"top\")) {\n return getLastFloatingTopRow();\n }\n return null;\n } else if (pinned) {\n ignoreSticky = true;\n }\n const rowNode = rowModel.getRow(rowPosition.rowIndex);\n const nextStickyPosition = ignoreSticky ? void 0 : this.getNextStickyPosition(rowNode, true);\n if (nextStickyPosition) {\n return nextStickyPosition;\n }\n return { rowIndex: index - 1, rowPinned: pinned };\n }\n getCellAbove(lastCell) {\n if (!lastCell) {\n return null;\n }\n const adjustedLastCell = this.rowSpanSvc?.getCellStart(lastCell) ?? lastCell;\n const rowAbove = this.getRowAbove({\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 = this.getRowBelow(gridCell);\n if (_missing(rowBelow)) {\n return null;\n }\n if (!rowBelow.rowPinned && !(pagination?.isRowInPage(rowBelow) ?? 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 { visibleCols, pagination } = this.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 = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n if (_missing(rowAbove)) {\n return null;\n }\n if (!rowAbove.rowPinned && !(pagination?.isRowInPage(rowAbove) ?? 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);\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) {\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 } 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.getRowPosition(), 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;\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 OverlayWrapperComponent = class extends Component {\n constructor() {\n super(\n /* html */\n `\n
\n
\n
\n
\n
`\n );\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 } = this.beans;\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 onCellFocusChanged(event) {\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 getCellToRestoreFocusToAfterRefresh(params) {\n const focusedCell = params?.suppressKeepFocus ? null : this.focusSvc.getFocusCellToUseAfterRefresh();\n if (focusedCell == null) {\n return null;\n }\n const activeElement = _getActiveDomElement(this.beans);\n const cellDomData = _getDomData(this.gos, activeElement, DOM_DATA_KEY_CELL_CTRL);\n const rowDomData = _getDomData(this.gos, activeElement, DOM_DATA_KEY_ROW_CTRL);\n const gridElementFocused = cellDomData || rowDomData;\n return gridElementFocused ? focusedCell : null;\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.getCellToRestoreFocusToAfterRefresh(params);\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 this.focusSvc.restoreFocusedCell(cellPosition, () => {\n this.onCellFocusChanged(\n _addGridCommonParams(this.gos, {\n rowIndex: cellPosition.rowIndex,\n column: cellPosition.column,\n rowPinned: cellPosition.rowPinned,\n forceBrowserFocus: true,\n preventScrollOnBrowserFocus: true,\n type: \"cellFocused\"\n })\n );\n });\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 cellFocused = null;\n if (this.stickyRowFeature) {\n cellFocused = this.getCellToRestoreFocusToAfterRefresh() || null;\n }\n for (const rowCtrl of this.getRowCtrls(rowNodes)) {\n if (!rowCtrl.isFullWidth()) {\n continue;\n }\n const refreshed = rowCtrl.refreshFullWidth();\n if (!refreshed) {\n this.redrawRow(rowCtrl.rowNode, true);\n }\n }\n this.dispatchDisplayedRowsChanged(false);\n if (cellFocused) {\n this.restoreFocusedCell(cellFocused);\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 { afterScroll } = params;\n let cellFocused;\n const stickyRowFeature = this.stickyRowFeature;\n if (stickyRowFeature) {\n cellFocused = this.getCellToRestoreFocusToAfterRefresh() || 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 = this.getCellToRestoreFocusToAfterRefresh();\n if (cellFocused != null && newFocusedCell == null) {\n this.beans.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 checkRowToDraw = (rowComp) => {\n const index = rowComp.rowNode.rowIndex;\n if (index == null) {\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 && afterScroll && !this.gos.get(\"suppressAnimationFrame\") && !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.isRowNodeFocused(rowNode);\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?.isRowPresent(rowNode) ?? true;\n }\n createRowCon(rowNode, animate, afterScroll) {\n const rowCtrlFromCache = this.cachedRowCtrls?.getRow(rowNode) ?? null;\n if (rowCtrlFromCache) {\n return rowCtrlFromCache;\n }\n const suppressAnimationFrame = this.gos.get(\"suppressAnimationFrame\");\n const useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout && !!this.beans.animationFrameSvc;\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\nfunction makeSpan(dataRefSuffix, classSuffix) {\n return (\n /* html */\n ``\n );\n}\nvar SortIndicatorTemplate = (\n /* html */\n `\n ${makeSpan(\"Order\", \"order\")}\n ${makeSpan(\"Asc\", \"ascending-icon\")}\n ${makeSpan(\"Desc\", \"descending-icon\")}\n ${makeSpan(\"Mixed\", \"mixed-icon\")}\n ${makeSpan(\"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(SortIndicatorTemplate);\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.getAllCols().forEach((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 const allCols = this.beans.colModel.getAllCols();\n const sortedCols = allCols.filter((column) => !!column.getSort());\n return sortedCols && sortedCols.length > 0;\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.getAllCols().forEach((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 = colModel.getAllCols().filter((col) => !!col.getSort());\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(([col1, idx1], [col2, 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 = (/* @__PURE__ */ new Date()).getTime();\n }\n });\n if (clickElement) {\n comp.addManagedElementListeners(clickElement, {\n click: (event) => {\n const moving = column.isMoving();\n const nowTime = (/* @__PURE__ */ new Date()).getTime();\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 });\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 * This hides values in expanded group rows which are instead displayed by the footer row.\n */\n getValueForDisplay(column, node) {\n const lockedClosedGroup = node.leafGroup && this.colModel.isPivotMode();\n const isOpenGroup = node.group && node.expanded && !node.footer && !lockedClosedGroup;\n const groupAlwaysShowAggData = this.gos.get(\"groupSuppressBlankHeader\");\n if (!isOpenGroup || groupAlwaysShowAggData) {\n return this.getValue(column, node);\n }\n let includeFooter = false;\n const groupIncludeFooterOpt = this.gos.get(\"groupTotalRow\");\n if (typeof groupIncludeFooterOpt !== \"function\") {\n includeFooter = !!groupIncludeFooterOpt;\n } else {\n const groupIncludeFooterCb = this.gos.getCallback(\"groupTotalRow\");\n includeFooter = !!groupIncludeFooterCb({ node: this });\n }\n const ignoreAggData = isOpenGroup && includeFooter;\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 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 if (result == null) {\n const openedGroup = this.getOpenedGroup(rowNode, column);\n if (openedGroup != null) {\n return openedGroup;\n }\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 getOpenedGroup(rowNode, column) {\n if (!this.gos.get(\"showOpenedGroup\")) {\n return;\n }\n const colDef = column.getColDef();\n if (!colDef.showRowGroup) {\n return;\n }\n const showRowGroup = column.getColDef().showRowGroup;\n let pointer = rowNode.parent;\n while (pointer != null) {\n if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getColId())) {\n return pointer.key;\n }\n pointer = pointer.parent;\n }\n return 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 = document.createElement(\"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];\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];\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 \"colResizeDefault\",\n \"tooltipTrigger\",\n \"serverSidePivotResultFieldSeparator\",\n \"columnMenu\",\n \"tooltipShowMode\",\n \"grandTotalRow\",\n \"themeCssLayer\"\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];\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 TooltipComponent2 = class extends PopupComponent {\n constructor() {\n super(\n /* html */\n `
`\n );\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, addSequentialWeight } = params;\n let thisSuggestions = allSuggestions.map((text, idx) => ({\n value: text,\n relevance: levenshteinDistance(inputValue.toLowerCase(), text.toLocaleLowerCase(), addSequentialWeight),\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 getAllSubstrings(str) {\n const result = [];\n const size = str.length;\n for (let len = 1; len <= size; len++) {\n for (let i = 0; i <= size - len; i++) {\n const j = i + len - 1;\n result.push(str.slice(i, j + 1));\n }\n }\n return result;\n}\nfunction levenshteinDistance(str1, str2, addSequentialWeight = false) {\n const a = str1.replace(/\\s/g, \"\");\n const b = str2.replace(/\\s/g, \"\");\n const len1 = a.length;\n const len2 = b.length;\n const m = new Array(len1 + 1).fill(null).map(() => new Array(len2 + 1).fill(0));\n for (let i = 0; i <= len1; i += 1) {\n m[i][0] = i;\n }\n for (let j = 0; j <= len2; j += 1) {\n m[0][j] = j;\n }\n for (let i = 1; i <= len1; i++) {\n for (let j = 1; j <= len2; j++) {\n if (a[i - 1] === b[j - 1]) {\n m[i][j] = m[i - 1][j - 1];\n } else {\n m[i][j] = 1 + Math.min(m[i][j - 1], Math.min(m[i - 1][j], m[i - 1][j - 1]));\n }\n }\n }\n const distance = m[len1][len2];\n const maxDistance = Math.max(len1, len2);\n let weight = maxDistance - distance;\n if (addSequentialWeight) {\n const substrings = getAllSubstrings(a);\n for (let i = 0; i < substrings.length; i++) {\n const currentSubstring = substrings[i];\n if (b.indexOf(currentSubstring) !== -1) {\n weight += 1;\n weight *= currentSubstring.length;\n }\n }\n }\n return weight;\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.getValue(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 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};\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: ({ methodName }) => `AnimationFrameService.${methodName} 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};\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 pagination,\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 (pagination) {\n return \"colDef.spanRows is not supported with pagination.\";\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};\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 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, getDataPath } = options;\n if (!treeDataChildrenField && !getDataPath) {\n return \"treeData requires either 'treeDataChildrenField' or 'getDataPath' in the clientSide row model.\";\n }\n if (treeDataChildrenField && getDataPath) {\n return \"Cannot use both 'treeDataChildrenField' and 'getDataPath' at the same time.\";\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 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 };\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 eWrapper = document.createElement(\"div\");\n const { environment, gos } = this.beans;\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-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 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 = document.createElement(\"div\");\n _setAriaRole(eMenu, \"presentation\");\n eMenu.classList.add(\"ag-menu\");\n if (!isLegacyMenuEnabled) {\n eMenu.classList.add(\"ag-filter-menu\");\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 ReadOnlyFloatingFilter = class extends Component {\n constructor() {\n super(\n /* html */\n `\n
\n \n
`,\n [AgInputTextFieldSelector]\n );\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 = document.createElement(\"div\");\n this.eJoinOperatorPanels.push(eJoinOperatorPanel);\n eJoinOperatorPanel.classList.add(\"ag-filter-condition\");\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 \"\";\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, dateComponentParams, eParent, onReady) {\n this.alive = true;\n this.context = context;\n this.eParent = eParent;\n const compDetails = _getDateCompDetails(userCompFactory, 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 { userCompFactory, context, gos } = this.beans;\n const dateCompWrapper = new DateCompWrapper(\n context,\n userCompFactory,\n _addGridCommonParams(gos, {\n onDateChanged: () => this.onUiChanged(),\n filterParams: this.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 DateFloatingFilter = class extends SimpleFloatingFilter {\n constructor() {\n super(\n /* html */\n `\n
\n \n
\n
`,\n [AgInputTextFieldSelector]\n );\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 } = this;\n this.dateComp = new DateCompWrapper(\n context,\n userCompFactory,\n this.getDateComponentParams(),\n eDateWrapper,\n (dateComp) => {\n dateComp.setInputAriaLabel(this.getAriaLabel(this.params));\n }\n );\n this.addDestroyFunc(() => this.dateComp.destroy());\n }\n};\n\n// packages/ag-grid-community/src/filter/provided/date/defaultDateComponent.ts\nvar DefaultDateComponent = class extends Component {\n constructor() {\n super(\n /* html */\n `\n
\n \n
`,\n [AgInputTextFieldSelector]\n );\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, e) {\n if (e.target !== _getActiveDomElement(this.beans)) {\n return;\n }\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 = document.createElement(\"div\");\n eCondition.classList.add(\"ag-filter-body\");\n _setAriaRole(eCondition, \"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 TextInputFloatingFilter = class extends SimpleFloatingFilter {\n constructor() {\n super(...arguments);\n this.eFloatingFilterInputContainer = RefPlaceholder;\n this.defaultDebounceMs = 500;\n }\n postConstruct() {\n this.setTemplate(\n /* html */\n `\n
\n `\n );\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 = document.createElement(\"div\");\n eCondition.classList.add(\"ag-filter-body\");\n _setAriaRole(eCondition, \"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 CheckboxCellEditor = class extends PopupComponent {\n constructor() {\n super(\n /* html */\n `\n
\n \n
`,\n [AgCheckboxSelector]\n );\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 /* html */\n `\n
\n ${cellEditorInput.getTemplate()}\n
`,\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 DateCellEditorInput = class {\n getTemplate() {\n return (\n /* html */\n ``\n );\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 DateStringCellEditorInput = class {\n constructor(getDataTypeService) {\n this.getDataTypeService = getDataTypeService;\n }\n getTemplate() {\n return (\n /* html */\n ``\n );\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 LargeTextCellEditor = class extends PopupComponent {\n constructor() {\n super(\n /* html */\n `
\n \n
`,\n [AgInputTextAreaSelector]\n );\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 NumberCellEditorInput = class {\n getTemplate() {\n return (\n /* html */\n ``\n );\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 SelectCellEditor = class extends PopupComponent {\n constructor() {\n super(\n /* html */\n `
\n \n
`,\n [AgSelectSelector]\n );\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 TextCellEditorInput = class {\n getTemplate() {\n return (\n /* html */\n ``\n );\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 PopupEditorWrapper = class extends PopupComponent {\n constructor(params) {\n super(\n /* html */\n `
`\n );\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 startEditing(cellCtrl, key = null, cellStartedEdit = false, event = null) {\n if (!cellCtrl.isCellEditable() || cellCtrl.editing) {\n return true;\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 stopEditingAndFocus(cellCtrl, suppressNavigateAfterEdit = false, shiftKey = false) {\n this.stopRowOrCellEdit(cellCtrl);\n cellCtrl.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit(shiftKey, cellCtrl.cellPosition);\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 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) ?? true;\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) {\n if (this.gos.get(\"editType\") === \"fullRow\") {\n this.stopRowEditing(cellCtrl.rowCtrl, cancel);\n } else {\n this.stopEditing(cellCtrl, cancel);\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: cellCtrl.stopEditingAndFocus.bind(cellCtrl),\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 startEditing(rowCtrl, key = null, sourceRenderedCell = null, event = null) {\n if (rowCtrl.editing) {\n return true;\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) ?? true;\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 const selectedIds = [];\n this.selectedNodes.forEach((node) => {\n if (node?.id) {\n selectedIds.push(node.id);\n }\n });\n return selectedIds.length ? selectedIds : null;\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};\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, groupHideOpenParentsSvc, rowNodeSorter } = 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 const callback = (rowNode) => {\n groupHideOpenParentsSvc?.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);\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 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 }\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 let nodeManager;\n if (gos.get(\"treeData\")) {\n if (gos.get(\"treeDataChildrenField\")) {\n nodeManager = beans.csrmChildrenTreeNodeSvc;\n } else {\n nodeManager = beans.csrmPathTreeNodeSvc;\n }\n }\n return nodeManager ?? beans.csrmNodeSvc;\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 treeDataChanged = changedProps.has(\"treeData\");\n const oldNodeManager = this.nodeManager;\n const nodeManager = this.getNewNodeManager();\n const reset = oldNodeManager !== nodeManager || changedProps.has(\"treeDataChildrenField\") && gos.get(\"treeData\");\n let newRowData;\n if (treeDataChanged) {\n params.step = \"group\";\n }\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 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 const { groupHideOpenParentsSvc } = this.beans;\n if (this.sortStage) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n changedRowNodes,\n changedPath\n });\n } else {\n changedPath.forEachChangedNodeDepthFirst((rowNode) => {\n groupHideOpenParentsSvc?.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);\n rowNode.childrenAfterSort = rowNode.childrenAfterAggFilter.slice(0);\n updateRowNodeAfterSort(rowNode);\n });\n }\n groupHideOpenParentsSvc?.updateGroupDataForHideOpenParents(changedPath);\n }\n doRowGrouping(changedRowNodes, changedPath, rowNodesOrderChanged, afterColumnsChanged) {\n const treeData = this.nodeManager.treeData;\n const rootNode = this.rootNode;\n if (!treeData) {\n const groupStage = this.groupStage;\n if (groupStage) {\n groupStage.execute({\n rowNode: rootNode,\n changedPath,\n changedRowNodes,\n rowNodesOrderChanged,\n afterColumnsChanged\n });\n } else {\n const sibling = rootNode.sibling;\n rootNode.childrenAfterGroup = rootNode.allLeafChildren;\n if (sibling) {\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n }\n rootNode.updateHasChildren();\n }\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 AnimateShowChangeCellRenderer = class extends Component {\n constructor() {\n super();\n this.refreshCount = 0;\n const template = document.createElement(\"span\");\n const delta = document.createElement(\"span\");\n delta.setAttribute(\"class\", \"ag-value-change-delta\");\n const value = document.createElement(\"span\");\n value.setAttribute(\"class\", \"ag-value-change-value\");\n template.appendChild(delta);\n template.appendChild(value);\n this.setTemplateFromElement(template);\n }\n init(params) {\n this.eValue = this.queryForHtmlElement(\".ag-value-change-value\");\n this.eDelta = this.queryForHtmlElement(\".ag-value-change-delta\");\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 AnimateSlideCellRenderer = class extends Component {\n constructor() {\n super();\n this.refreshCount = 0;\n const template = document.createElement(\"span\");\n const slide = document.createElement(\"span\");\n slide.setAttribute(\"class\", \"ag-value-slide-current\");\n template.appendChild(slide);\n this.setTemplateFromElement(template);\n this.eCurrent = this.queryForHtmlElement(\".ag-value-slide-current\");\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 = _getDocument(beans).createElement(\"span\");\n prevElement.setAttribute(\"class\", \"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 PageSizeSelectorComp = class extends Component {\n constructor() {\n super(\n /* html */\n ``\n );\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 strPage = localeTextFunc(\"page\", \"Page\");\n const strTo = localeTextFunc(\"to\", \"to\");\n const strOf = localeTextFunc(\"of\", \"of\");\n const strFirst = localeTextFunc(\"firstPage\", \"First Page\");\n const strPrevious = localeTextFunc(\"previousPage\", \"Previous Page\");\n const strNext = localeTextFunc(\"nextPage\", \"Next Page\");\n const strLast = localeTextFunc(\"lastPage\", \"Last Page\");\n const compId = this.getCompId();\n return (\n /* html */\n `
\n \n \n \n ${strTo}\n \n ${strOf}\n \n \n \n
\n
\n \n ${strPage}\n \n ${strOf}\n \n \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 if (rowCount === 1) {\n const firstRow = this.rowModel.getRow(0);\n const hiddenGroupRow = firstRow && firstRow.group && !(firstRow.groupData || firstRow.aggData);\n if (hiddenGroupRow) {\n this.setTotalLabelsToZero();\n return;\n }\n }\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 isRowPresent(rowNode) {\n const nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;\n return nodeIsInPage;\n }\n getPageForIndex(index) {\n return Math.floor(index / this.pageSize);\n }\n goToPageWithIndex(index) {\n if (!this.active) {\n return;\n }\n const pageNumber = this.getPageForIndex(index);\n this.goToPage(pageNumber);\n }\n isRowInPage(row) {\n if (!this.active) {\n return true;\n }\n const rowPage = this.getPageForIndex(row.rowIndex);\n return rowPage === this.currentPage;\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 const doColumnsAlreadyFit = gridWidth === getWidthOfColsInList(allDisplayedColumns);\n if (gridWidth <= 0 || !allDisplayedColumns.length || doColumnsAlreadyFit) {\n return;\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 shouldRestoreFocus() {\n return this.beans.focusSvc.shouldRestoreFocus(this.cellSpan);\n }\n onFocusOut() {\n this.focusedCellPosition = void 0;\n super.onFocusOut();\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 isCellFocused() {\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 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 }\n } = this;\n const { colDef } = column;\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 spanData = new CellSpan(column, lastNode);\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?.(checkNodeForCache);\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 this.addManagedEventListeners({\n modelUpdated: this.buildModelCaches.bind(this),\n pinnedRowDataChanged: this.buildPinnedCaches.bind(this)\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 by rowNode 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 }\n postConstruct() {\n if (this.gos.get(\"columnHoverHighlight\")) {\n const colHover = this.beans.colHover;\n this.addManagedListeners(this.element, {\n mouseout: colHover.clearMouseOver.bind(colHover),\n mouseover: colHover.setMouseOver.bind(colHover, this.columns)\n });\n }\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 setMouseOver(columns) {\n this.updateState(columns);\n }\n clearMouseOver() {\n this.updateState(null);\n }\n isHovered(column) {\n const selectedColumns = this.selectedColumns;\n return !!selectedColumns && selectedColumns.indexOf(column) >= 0;\n }\n addHeaderColumnHoverListener(compBean, comp, column) {\n const listener = () => {\n if (!this.gos.get(\"columnHoverHighlight\")) {\n return;\n }\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 if (!this.gos.get(\"columnHoverHighlight\")) {\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 if (!this.gos.get(\"columnHoverHighlight\")) {\n return;\n }\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 } = this.beans;\n const displayedAutoHeightCols = visibleCols.autoHeightCols;\n let anyNodeChanged = false;\n rowModel.forEachDisplayedNode?.((row) => {\n const autoHeights = row.__autoHeights;\n let newRowHeight = _getRowHeightForNode(this.beans, row).height;\n for (const col of displayedAutoHeightCols) {\n if (this.colSpanSkipRow(col, row)) {\n return;\n }\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 return;\n }\n newRowHeight = Math.max(cellHeight, newRowHeight);\n }\n if (newRowHeight !== row.rowHeight) {\n row.setRowHeight(newRowHeight);\n anyNodeChanged = true;\n }\n });\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 if (!rowNode.__autoHeights) {\n rowNode.__autoHeights = {};\n }\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, we don't allow auto height on rows that span columns.\n * @param col the column of the cell\n * @param node the node of the cell\n * @returns whether the row should skip auto height\n */\n colSpanSkipRow(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 _bindCellRendererToHtmlElement,\n _canSkipShowingRowGroup,\n _clearElement,\n _columnsMatch,\n _combineAttributesAndGridOptions,\n _convertColumnEventSourceType,\n _createCellId,\n _createColumnTree,\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 _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 _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 _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"],"names":["LocalEventService","frameworkOverrides","eventType","async","autoCreateListenerCollection","listenerMap","listeners","listener","event","agEvent","browserEvent","processEventListeners","listeners2","originalListeners2","callback","originalListeners","func","flush","queueCopy","defaultLocaleTextFunc","_key","defaultValue","_getLocaleTextFunc","localeSvc","_toggleAriaAttribute","element","attribute","value","_removeAriaAttribute","_setAriaAttribute","_ariaAttributeName","_setAriaRole","role","_getAriaSortState","sortDirection","sort","_getAriaLabel","_setAriaLabel","label","_setAriaLabelledBy","labelledBy","_setAriaLive","live","_setAriaAtomic","atomic","_setAriaRelevant","relevant","_setAriaDisabled","disabled","_setAriaHidden","hidden","_setAriaExpanded","expanded","_setAriaSetSize","setsize","_setAriaPosInSet","position","_setAriaMultiSelectable","multiSelectable","_setAriaRowCount","rowCount","_setAriaRowIndex","rowIndex","_setAriaRowSpan","spanCount","_setAriaColCount","colCount","_setAriaColIndex","colIndex","_setAriaColSpan","colSpan","_setAriaSort","_removeAriaSort","_setAriaSelected","selected","_setAriaControls","controllerElement","controlledElement","_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","FOCUSABLE_SELECTOR","FOCUSABLE_EXCLUDE","_isFocusableFormField","matches","isFocusable","isNotFocusable","isElementVisible","_isVisible","_setDisplayed","displayed","options","skipAriaHidden","_setVisible","visible","_setDisabled","attributeName","addOrRemoveDisabledAttribute","e","_nodeListForEach","input","_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","node","_isInDOM","_loadTemplate","tempDiv","_ensureDomOrder","eContainer","eChild","eChildBefore","_setDomChildOrder","orderedChildren","i","correctCellAtIndex","actualCellAtIndex","_camelCaseToHyphenated","camelCase","s","_addStylesToElement","eElement","styles","key","parsedKey","valueAsString","parsedValue","priority","_isHorizontalScrollShowing","_isVerticalScrollShowing","_setElementWidth","_setFixedWidth","_formatSize","_setFixedHeight","_isNodeOrElement","o","_copyNodeList","nodeList","result","_iterateNamedNodeMap","map","attr","_addOrRemoveAttribute","name","action","_observeResize","beans","ResizeObserverImpl","_getWindow","resizeObserver","_makeNull","_exists","_missing","_toStringOrNull","_jsonEquals","val1","val2","val1Json","val2Json","_defaultComparator","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","doQuickCompare","a","b","BASE_URL","doOnceFlags","_doOnce","_logIfDebug","gos","message","args","_warnOnce","msg","_errorOnce","executeNextVMTurnFuncs","executeNextVMTurnPending","_executeNextVMTurn","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","baseDocLink","provideValidationServiceLogger","logger","setValidationDocLink","docLink","getErrorParts","id","defaultMessage","minifiedLog","getMsgOrDefault","stringifyObject","inputObj","object","prop","stringifyValue","output","toStringWithNullUndefined","str","getParamsUrl","baseUrl","params","truncateUrl","maxLength","sortedParams","url","excessLength","ellipse","truncateAmount","truncatedValue","getErrorLink","errorNum","errorLink","_warn","_error","_logPreInitErr","getErrMsg","_errMsg","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","_getRootNode","_getActiveDomElement","_getPageBody","rootNode","targetEl","_getBodyWidth","_getBodyHeight","_anchorElementToMouseMoveEvent","mouseMoveEvent","browserWidth","browserHeight","offsetParentSize","clientY","clientX","top","left","eDocument","windowScrollY","windowScrollX","_isNothingFocused","activeEl","_isAnimateRows","_isGroupRowsSticky","_isColumnsSortingCoupledToGroup","autoGroupColumnDef","_getGroupAggFiltering","userValue","_isGroupMultiAutoColumn","_isGroupUseEntireRow","pivotMode","_getRowIdCallback","getRowId","_canSkipShowingRowGroup","isSkippingGroups","_getMaxConcurrentDatasourceRequests","_getCheckboxes","selection","_getHeaderCheckbox","_getCheckboxLocation","rowSelection","_getHideDisabledCheckboxes","_isUsingNewRowSelectionAPI","_isCellSelectionEnabled","_getEnableClickSelection","suppressRowClickSelection","suppressRowDeselection","_getEnableSelection","enableClickSelection","_getEnableDeselection","_getIsRowSelectable","arg","_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","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","_a","handlers","destroyFuncs","k","handler","destroyFunc","isAgEventEmitter","fn","events","eventsKey","wrappedListener","propertiesChangeEvent","afterPreCreateCallback","SKIP_JS_BUILTINS","_iterateObject","_mergeDeep","dest","source","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","_b","_c","firstRightPinned","lastLeftPinned","newValue","parent","numberOfParents","isSpanningTotal","changed","rowSpan","actualWidth","silent","additionalEventAttributes","colEvent","isProvidedColumnGroup","AgProvidedColumnGroup","colGroupDef","groupId","padding","level","child","children","leafColumns","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","j","abstractColumn","headerGroupShow","expandable","process","items","item","DefaultColumnTypes","ColumnKeyCreator","keys","colField","count","idToTry","_EmptyArray","_last","arr","_areEqual","comparator","index","_sortNumerically","array","_removeFromArray","_moveInArray","objectsToMove","toIndex","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","obj","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","t","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","colsToProcess","groupAutoCols","getColumnStateFromColDef","startState","columnStateBefore","_getColumnState","columnStateBeforeMap","colsForState","dispatchWhenListsDifferent","colsBefore","colsAfter","idMapper","beforeList","afterList","changesArr","getChangedColumns","changedPredicate","changedColumns2","colStateBefore","columnIdMapper","c","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","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","_d","GroupInstanceIdCreator","lastResult","setupCompBean","ctrl","ctx","compBean","CssClassManager","getGui","className","eGui","addOrRemove","compIdSequence","RefPlaceholder","Component","componentSelectors","comp","debugId","css","paramsMap","elementRef","newComponent","current","usedAsParamRef","parentNode","childNode","childComp","childComp2","isAgGridComponent","componentSelector","componentParams","eComponent","elements","components","suppressDataRefValidation","cssSelector","newChild","container","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","CellRendererComponent","LoadingCellRendererComponent","CellEditorComponent","LoadingOverlayComponent","NoRowsOverlayComponent","TooltipComponent","FilterComponent","FloatingFilterComponent","FullWidth","FullWidthLoading","FullWidthGroup","FullWidthDetail","_getDragAndDropImageCompDetails","userCompFactory","_getHeaderCompDetails","_getInnerHeaderCompDetails","headerCompParams","_getHeaderGroupCompDetails","_getInnerHeaderGroupCompDetails","headerGroupCompParams","_getFullWidthCellRendererDetails","_getFullWidthLoadingCellRendererDetails","_getFullWidthGroupCellRendererDetails","_getFullWidthDetailCellRendererDetails","_getCellRendererDetails","_getLoadingCellRendererDetails","_getCellEditorDetails","_getFilterDetails","defaultFilter","_getDateCompDetails","_getLoadingOverlayCompDetails","_getNoRowsOverlayCompDetails","_getTooltipCompDetails","_getFloatingFilterCompDetails","defaultFloatingFilter","_getFilterCompKeys","_mergeFilterParamsWithApplicationProvidedParams","_unwrapUserComp","compAsAny","allRegisteredModules","globalModulesMap","gridModulesMap","currentModuleVersion","areGridScopedModules","isUmd","isValidModuleVersion","module","moduleMajor","moduleMinor","currentModuleMajor","currentModuleMinor","runVersionChecks","errorMsg","details","_registerModule","gridId","rowModels","moduleStore","dependency","_unRegisterGridModules","_isModuleRegistered","moduleName","isRegisteredForRowModel","model","_areModulesGridScoped","_getRegisteredModules","gridModules","_getAllRegisteredModules","_isUmd","ModuleRegistry","modules","GenericContext","beanName","BeanClass","beanFunc","beanInstances","Context","CSS_FIRST_COLUMN","CSS_LAST_COLUMN","_getHeaderClassesFromColDef","getColumnClassesFromCollDef","refreshFirstAndLastStyles","presentedColsService","getClassParams","classesOrFunc","classToUse","_requestAnimationFrame","AnimationFrameService","scrollTop","pagination","isPaginationActive","currentPage","methodName","task","taskItem","taskList","millis","p1TaskList","p1Tasks","p2TaskList","p2Tasks","destroyTasks","frameStart","duration","noMaxMillis","scrollFeature","KeyCode","keyboardModeActive","instanceCount","addKeyboardModeEvents","doc","toggleKeyboardMode","removeKeyboardModeEvents","isKeyboardActive","isKeyboardEvent","_registerKeyboardFocusEvents","_isKeyboardMode","_addFocusableContainerListener","backwards","_findNextFocusableElement","_focusNextGridCoreContainer","_findFocusableElements","exclude","onlyUnmanaged","focusableString","excludeString","nodes","excludeNodes","_focusInto","up","excludeTabGuards","focusableElements","toFocus","onlyManaged","focusable","currentIndex","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","target","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","_e","_f","forceNewCellRendererInstance","skipRangeHandleRefresh","rangeFeature","valueToDisplay","compDetails","selectionChanged","rowDragChanged","dndSourceChanged","autoHeightChanged","cancel","valueFormatted","valueSvc","value2","rowDraggerElement","dragStartPixels","suppressVisibilityChange","newData","suppressFlash","noValueProvided","forceRefresh","isCellCompReady","valuesDifferent","dataNeedsUpdating","processingFilterChange","suppressNavigateAfterEdit","compareValues","oldValue","oldValueFormatted","domEvent","colIdx","suppressCellFocus","cellFocused","focusEl","focusableEls","fullRowEdit","autoHeight","cellContextMenuEvent","cbSelectionComponent","dndSourceComp","customElement","newComp","rowDragComp","_cellPosition","GRID_DOM_KEY","_stampTopLevelGridCompWithGridInstance","_isEventFromThisGrid","_isElementInThisGrid","instanceId","_getCellPositionForEvent","_getNormalisedMousePosition","gridPanelHasScrolls","x","y","vRange","hRange","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","len","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","RowDragFeature","ctrlsSvc","p","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","rowSpanSvc","oldData","oldNode","parentKeys","rowTop","hovered","estimated","forceSync","colKey","eventSource","valueChanged","rowChildrenSvc","cellChangedEvent","clearSelection","isFullWidthCellFunc","firstChild","allChildrenCount","uiLevel","_createGlobalRowEvent","FilterWrapperComp","filter","init","guiFromFilter","RESIZE_CONTAINER_STYLE","makeDiv","dataRefPrefix","classSuffix","RESIZE_TEMPLATE","PositionableFeature","config","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","diff","parentRect","boundaryElRect","skipX","skipY","resizers","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","templateString","newParams","oldParams","oldButtons","oldReadOnly","buttons","readOnly","hasButtons","fragment","addButton","clickListener","text","button","debounceFunc","currentModel","afterUiUpdatedFunc","afterAppliedFunc","newModel","previousModel","afterFloatingFilter","afterDataChange","closeOnApply","keyboardEvent","fromFloatingFilter","apply","isValid","applyFilterButton","containerType","positionableFeature","_getDefaultFloatingFilterType","getFromDefault","defaultFloatingFilterType","LayoutCssClasses","LayoutFeature","view","cssClass","VIEWPORT","FAKE_V_SCROLLBAR","HORIZONTAL_SOURCES","SCROLL_DEBOUNCE_TIMEOUT","SCROLL_END_TIMEOUT","GridBodyScrollFeature","eBodyViewport","requireUpdatedScrollPosition","scrollPartner","fakeVScrollComp","isDebounce","onVScroll","onFakeVScroll","viewport","centerContainerViewport","newScrollLeft","animationFrameSvc","fakeScrollLeft","bodyScrollEvent","scrollTo","touchOnly","scrollHeight","scrollWidth","suppressedAnimationFrame","frameNeeded","fromAlignedGridsService","maxScrollLeft","lastOffsetHeight","lastScrollTop","offsetHeight","pixels","oldScrollPosition","indexToSelect","paginationPanelEnabled","heightScaler","rowRenderer","gridBodyCtrl","stickyTopHeight","stickyBottomHeight","rowGotShiftedDuringOperation","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","rowGui","cached","displayValue","rg","rowId","rowDragBean","r","leftGui","centerGui","rightGui","isLeftReady","isCenterReady","isRightReady","isStub","isFullWidthCell","isDetailCell","isFullWidthGroup","suppressAnimationFrame","useFlushSync","cell","prev","addCell","colInstanceId","colsFromPrev","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","isFocused","cellCtrlToRemove","fullWidthRowGui","eDetailGui","eRow","compFactory","rowDragSvc","newLevel","classToAdd","classToRemove","newFirst","newLast","cssClasses","classStr","updateStyles","gui2","rowContainerType","fullWidthRow","rowStyleSvc","range","minPixel","maxPixel","heightFromFunc","lineHeight","suppressAnimation","destroyCellCtrls","ctrls","rowFocused","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","FakeHScrollComp","spacerWidthsListener","bottomPinnedHeight","vScrollShowing","rightSpacing","scrollOnRight","leftSpacing","hScrollShowing","invisibleScrollbar2","isSuppressHorizontalScroll","scrollContainerSize","FakeHScrollSelector","FakeVScrollComp","adjustedScrollbarWidth","gridBodyViewportEl","eViewportScrollTop","gridBodyViewportScrollTop","FakeVScrollSelector","getHeaderRowCount","getFocusHeaderRowCount","getGroupRowsHeight","heights","headerRowContainerCtrls","headerRowContainerCtrl","groupRowCount","headerRowCtrl","currentHeightAtPos","getColumnGroupHeaderRowHeight","defaultHeight","getPivotGroupHeaderHeight","getGroupHeaderHeight","displayedHeights","headerRowCellCtrls","headerCellCtrl","getColumnHeaderRowHeight","getPivotHeaderHeight","getHeaderHeight","getFloatingFiltersHeight","GridHeaderCtrl","eFocusableElement","headerNavigation","totalHeaderHeight","groupHeight","curr","px","shouldAllowOverflow","menuSvc","AbstractHeaderCellComp","HeaderCellComp","compProxy","cssClassName","on","selectAllGui","versionCopy","version","headerComp","HeaderGroupCellComp","setAttribute","headerGroupComp","eHeaderGroupGui","style","eHeaderCompWrapper","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","f","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","idOfChild","viewportColumns","actualDepth","allCtrls","ctrl2","HeaderRowContainerCtrl","colMoves","onDisplayedColsChanged","headerType","keepColumns","sequence","focusedHeaderPosition","refreshColumnGroups","refreshColumns","needNewInstance","refreshFilters","destroyPreviousComp","rowIndexMismatch","dropContainer","bodyDropTarget","includeFloatingFilter","MenuService","enterpriseMenuFactory","filterMenuFactory","menuFactory","suppressHeaderMenuButton","menuHides","suppressMenuHide","filtersOnly","positionBy","_setColMenuVisible","OverlayComponent","LoadingOverlayComponent2","customTemplate","localeTextFunc","NoRowsOverlayComponent2","_createIcon","iconName","iconContents","_createIconNoSpan","eResult","userProvidedIcon","icons","optionsIcons","rendererResult","span","iconValue","dragAndDropImageComponentCSS","DragAndDropImageComponent2","create","shake","dropIconMap","eIconChild","agAbstractLabelCSS","AgAbstractLabel","labelSeparator","labelWidth","labelAlignment","eLabel","alignment","eGuiClassList","hasEllipsis","AgAbstractField","onValueChange","ariaEl","labelId","callbackFn","AgAbstractInputField","inputType","displayFieldTag","eWrapper","eInput","inputName","inputWidth","length","placeholder","autoCompleteValue","AgCheckbox","previousValue","nextValue","AgCheckboxSelector","checkboxCellRendererCSS","CheckboxCellRenderer","eCheckbox","inputEl","isSelected","stateName","ariaLabel","sharedEventParams","ROOT_NODE_ID","AbstractClientSideNodeManager","rowData","sibling","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","idx","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","AgInputTextField","pattern","preventCharacters","AgInputTextFieldSelector","AgInputTextArea","ret","AgInputTextAreaSelector","AgInputNumberField","floatedValue","precision","min","max","step","val","isScientificNotation","floatString","parts","v","setValueFunc","setInputValueOnlyFunc","setInputValueOnly","normalizedValue","inputValue","AgInputNumberFieldSelector","_padStartWidthZeros","totalStringSize","_serialiseDate","date","includeTime","separator","serialised","part","calculateOrdinal","_dateToFormattedString","format","fullYear","months","days","replace","regexp","match","_parseDateTimeFromString","dateStr","timeStr","year","month","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","_g","userDetails","forceHide","tooltipInstanceCopy","tooltipComp","addPopupRes","parentGui","tooltipPopupDestroyFunc","_isShowTooltipWhenTruncated","_shouldDisplayTooltip","getElement","TooltipFeature","tooltip","AgList","cssIdentifier","unFocusable","pos","isDown","itemToHighlight","itemEls","highlightedEl","nextPos","currentIdx","itemHeight","pageSize","newIndex","listOptions","listOption","valueToRender","itemEl","option","agPickerFieldCSS","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","guard","start","focusableRange","targetTabIndex","tabGuardsAreActive","tabGuardToFocus","allowFocus","TabGuardFeature","tabGuards","tabGuard","topTabGuard","bottomTabGuard","appendChild","TabGuardComp","PopupComponent","parentComp","TouchListener","preventMouseClick","startListener","moveListener","endListener","touchStartCopy","touchesMatch","now","VanillaFrameworkOverrides","frameworkName","eventListenerOptions","path","createGridApi","orderedCoreBeans","beanNamePosition","gridBeanInitComparator","bean1","bean2","index1","index2","gridBeanDestroyComparator","PINNED_LEFT_TEMPLATE","PINNED_RIGHT_TEMPLATE","CENTER_TEMPLATE","HeaderRowContainerComp","pinnedLeft","pinnedRight","oldRowComps","prevGui","appendEnsuringDomOrder","ctrlId","existingComp","GridHeaderComp","addContainer","GridHeaderSelector","CellComp","editingRow","cellDiv","wrapperDiv","include","controlWrapperChanged","providingControls","usingWrapper","putWrapperIn","takeWrapperOut","usingCellValue","putCellValueIn","takeCellValueOut","templateChanged","cellEditorPromise","eParent","escapedValue","compClassAndParams","useTaskService","displayComponentVersionCopy","createCellRendererFunc","componentPromise","cellRendererVersion","cellRendererClass","requestVersion","cellEditor","cellEditorInPopup","isPopup","cellCssClassManager","ePopupGui","useModelPopup","positionToUse","positionParams","positionCallback","RowComp","rowDiv","domOrder","cellCtrls","transform","getUpdatedParams","cellsToRemove","cellComp","fullWidthRowComponent","cellComps","templateFactory","isCellSpanning","eContainerTemplate","spannedCellsContainerClass","viewportClass","eSpannedContainerTemplate","RowContainerComp","rowCtrls","spanContainer","oldRows","newComps","orderedRows","existingRowComp","isNew","rowComps","oldRowComp","RowContainerSelector","makeRowContainers","refName","getGridBodyTemplate","includeOverlay","GridBodyComp","overlays","overlaySelector","setHeight","animate","display","flag","overflow","ct","bodyViewportClassList","GridBodySelector","GridCtrl","focusableContainers","indexWithFocus","allColumns","lastColumn","userCallbackFunction","coreContainers","GridComp","requiredComps","eRootWrapperBodyClassList","AUTO_HEIGHT","NORMAL","PRINT","print","dropZones","sideBar","statusBar","watermark","mod","gridApiFunctionsMap","defaultFns","dispatchEvent","GridApiClass","ApiFunctionService","functionName","fns","apiName","fnName","preDestroyLink","getGridId","destroy","isDestroyed","getGridOption","setGridOption","updateGridOptions","DndSourceComp","dragEvent","providedOnRowDrag","dataTransfer","jsonData","addRowDropZone","removeRowDropZone","activeDropTarget","getRowDropZoneParams","HorizontalResizeService","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","oldIndex","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","gridColumns","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","currentDept","columnDept","originalGroup","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","paddedGroup","leaf","balancedColumnTree","depth","treeChildren","maxDeptThisLevel","newDept","autoCols","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","dateString","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","injections","newInjection","insertAfter","injection","_injectCoreAndModuleCSS","gridsUsingThemingAPI","_registerGridUsingThemingAPI","_unregisterGridUsingThemingAPI","createPart","PartImpl","defaultModeName","partCounter","modeParams","cssImports","inject","cssImport","kebabCase","m","paramToVariableName","paramName","paramToVariableExpression","clamp","memoize","accentMix","mix","foregroundMix","foregroundBackgroundMix","foregroundHeaderBackgroundMix","backgroundColor","foregroundColor","accentColor","defaultLightColorSchemeParams","coreDefaults","buttonStyleBaseCSS","baseParams","makeButtonStyleQuartzTreeShakeable","buttonStyleQuartz","makeButtonStyleBalhamTreeShakeable","buttonStyleBalham","columnDropStyleBorderedCSS","columnDropStylePlainCSS","makeColumnDropStyleBorderedTreeShakeable","columnDropStyleBordered","makeColumnDropStylePlainTreeShakeable","columnDropStylePlain","paramTypes","getParamType","param","literalToCSS","colorValueToCss","colorExpr","colorSchemeValueToCss","lengthValueToCss","scaleValueToCss","borderValueToCss","borderStyleValueToCss","shadowValueToCss","fontFamilyValueToCss","font","quoteUnsafeChars","fontWeightValueToCss","imageValueToCss","durationValueToCss","paramValidators","paramValueToCss","createTheme","ThemeImpl","_ThemeImpl","mode","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","theme","visitParamValue","paramValue","mv","uninstalledLegacyCSS","googleFontsLoaded","googleFontsDomain","checkboxStyleDefaultCSS","makeCheckboxStyleDefaultTreeShakeable","checkboxStyleDefault","darkParams","darkBlueParams","makeColorSchemeDarkBlueTreeShakeable","colorSchemeDarkBlue","makeColorSchemeVariableTreeShakeable","colorSchemeVariable","iconSetBalhamCSS","iconSetBalham","iconNameToSvgFragment","iconNameToFullSvg","getQuartzIconsCss","iconSvg","quartzIconSvg","strokeWidth","fullSVG","svgFragment","iconSetQuartz","iconSetQuartzRegular","inputStyleBaseCSS","inputStyleBorderedCSS","baseParams2","makeInputStyleBorderedTreeShakeable","inputStyleBordered","tabStyleBaseCSS","tabStyleRolodexCSS","baseParams3","makeTabStyleQuartzTreeShakeable","tabStyleQuartz","makeTabStyleRolodexTreeShakeable","tabStyleRolodex","makeThemeQuartzTreeShakeable","themeQuartz","makeThemeBalhamTreeShakeable","themeBalham","ROW_HEIGHT","HEADER_HEIGHT","LIST_ITEM_HEIGHT","ROW_BORDER_WIDTH","paramsId","Environment","gridTheme","themeClass","isThemeEl","oldClass","oldRowHeight","newRowHeight","variable","measurement","sizeEl","newSize","NO_VALUE_SENTINEL","border","lastMeasurement","unsubscribe","newMeasurement","change","globalCSS","oldGridTheme","themeGridOption","newGridTheme","themeOrDefault","eParamsStyle","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","nextPosition","nextRowIndex","columnToScrollTo","getColMethod","columnsInPath","indexToFocus","childContainer","isFloatingFilter","isColumn2","leafColumn","columnsInTheWay","colToFocus","FocusService","clearFocusedCellListener","colFromColumnModel","eBrowserCell","ePointer","setFocusCallback","focusEventParams","preventScrollOnBrowserFocus","gridColumn","focusedColumn","focusedHeaderRowIndex","allowUserOverride","fromCell","rowWithoutSpanValue","currentPosition","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","getHeaderCompTemplate","includeSortIndicator","HeaderComp","oldDisplayName","displayNameSanitised","eMenu","isLegacyMenu","currentSuppressMenuHide","alwaysShow","eFilterButton","isLegacyMenuEnabled","enableSorting","eSortIndicator","eSortOrder","eSortAsc","eSortDesc","eSortMixed","eSortNone","eFilter","enabled","filterChangedCallback","filterPresent","HeaderGroupComp","agOpened","agClosed","expandAction","stopPropagationAction","updateIcon","hasInnerComponent","ColumnHeaderCompModule","ColumnGroupHeaderCompModule","AnimationFrameModule","TouchService","nowMillis","tapMenuButton","menuTouchListener","showMenuFn","tapListener","filterButtonTouchListener","longTapListener","TouchModule","CellNavigationService","ctrlPressed","upKey","downKey","leftKey","gridCell","lastCell","colToLeft","colToRight","rowPosition","ignoreSticky","nextStickyPosition","isTopCtrls","stickyRowCtrls","nextCtrl","adjustedLastCell","rowBelow","isFirstRow","getLastFloatingTopRow","rowAbove","newRowIndex","newFloating","newColumn","suppressNavigable","getFocusedCell","clearFocusedCell","setFocusedCell","tabToNextCell","tabToPreviousCell","setFocusedHeader","NavigationService","fromFullWidth","alt","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","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","updatedCols","initialPinned","hiddenChanged","widthWithPadding","pinnedRightWidth","pinnedLeftWidth","totalPinnedWidth","pinnedLeftColumns","pinnedRightColumns","indexRight","indexLeft","totalWidthRemoved","spaceNecessary","PinnedColumnModule","AriaAnnouncementService","valueToAnnounce","descriptionContainer","AriaModule","showLoadingOverlay","showNoRowsOverlay","hideOverlay","overlayWrapperComponentCSS","OverlayWrapperComponent","overlayWrapperClassList","overlayWrapperCssClass","overlayComponentPromise","exclusive","gridOption","activeElement","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","cellFlashSvc","forEachCellWithThisCol","leftChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","colDefChangedListener","embedFullWidthRows","destroyRows","rowIndexesToRemove","floating","rowCtrlMap","rowNodeCount","suppressEvent","destroyAndRecreateCtrl","dataStruct","cellDomData","rowDomData","recycleRows","rowsToRecycle","stickyRowFeature","scrollToTop","suppressScrollToTop","containerHeight","rowCtrlsLength","cellCtrlsLength","stickyTopRowCtrls","stickyBottomRowCtrls","refreshCellParams","rowIdsMap","mapRowNodes","allRowCtrls","isRowInMap","colIdsMap","stubNodeIndexes","ctrlsByIdMap","rowsToRemove","indexToRemove","oldFirstRow","oldLastRow","hasStickyRowChanges","rangeChanged","newFocusedCell","indexesToDraw","indexesToDrawMap","indexesNotToDraw","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","stickyHeightsChanged","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","makeSpan","dataRefSuffix","SortIndicatorTemplate","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","sortedCols","columnsToSkip","columnToClear","sortingOrder","notInArray","lastItemInArray","isSortingLinked","isAggregated","isSecondary","sortedRowGroupCols","allColsIndexes","iA","iB","isSortLinked","indexMap","groupDisplayCol","col1","idx1","col2","idx2","isColumnSortCouplingActive","isGroupDisplayColumn","linkedColumns","sortableColumns","firstSort","clickElement","lastMovingChanged","movedRecently","onSortingChanged","sourceColumns","isMultiSorting","sourceCol","initialSort","initialSortIndex","sortOrder","SortModule","SyncService","expireValueCache","getCellValue","useFormatter","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","lockedClosedGroup","isOpenGroup","groupAlwaysShowAggData","includeFooter","groupIncludeFooterOpt","ignoreAggData","groupDataExists","aggDataExists","ignoreSsrmAggData","ssrmFooterGroupCol","cellValueGetter","openedGroup","valueParser","suppliedFormatter","useFormatterFromColumn","formatter","showRowGroup","valueSetter","valueWasDifferent","savedValue","onCellValueChanged","isFieldContainsDots","valuesAreSame","fieldPieces","fieldPiece","valueFromCache","otherColumn","keyCreator","keyParams","CommunityCoreModule","_GlobalGridOptions","providedOptions","mergedGridOps","GlobalGridOptions","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","TooltipComponent2","_fuzzySuggestions","allSuggestions","hideIrrelevant","filterByPercentageOfBestMatch","addSequentialWeight","thisSuggestions","levenshteinDistance","suggestion","indices","getAllSubstrings","str1","str2","len1","len2","distance","weight","substrings","currentSubstring","_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","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","getDataPath","ssrmWarning","viewportRowModelBufferSize","viewportRowModelPageSize","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","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","inputs","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","valid","dateConditionFromComps","dateConditionToComps","_elPosition","SimpleFloatingFilter","defaultOption","uneditableTypes","DateFloatingFilter","allowEditing","dateModel","filterValueDate","filterValueText","eDateWrapper","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","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","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","ranges","DEFAULT_STACK_SIZE","UndoRedoStack","maxStackSize","UndoRedoService","eventCell","isCellEditing","isRowEditing","cellValueChange","undoRedoLimit","undoStack","redoStack","operationPerformed","undoRedoStack","opposingUndoRedoStack","rangeProperty","cellValueChangeProperty","undoRedoAction","valueExtractor","columnId","currentRow","endRow","cellRangeParams","cellEditingCSS","CheckboxCellEditor","SimpleCellEditor","cellEditorInput","cellStartedEdit","eventKey","suppressPreventDefault","startValue","shouldSetStartValue","DateCellEditorInput","DateCellEditor","DateStringCellEditorInput","getDataTypeService","DateStringCellEditor","LargeTextCellEditor","NumberCellEditorInput","NumberCellEditor","SelectCellEditor","eSelect","hasValue","valueFormattedExits","valueListGap","valueListMaxWidth","valueListMaxHeight","TextCellEditorInput","TextCellEditor","getVerticalPixelRange","getHorizontalPixelRange","ensureColumnVisible","ensureIndexVisible","ensureNodeVisible","nodeSelector","undoCellEditing","redoCellEditing","getCellEditorInstances","getEditingCells","stopEditing","startEditingCell","isFocusWithinCell","getCurrentUndoSize","getCurrentRedoSize","PopupEditorWrapper","EditService","editorParams","setEditing","newValueExists","takeValueFromCellEditor","saveNewValue","isRowEdit","fireRowEditEvent","viewports","focusOutListener","elementWithFocus","clickInsideGrid","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","l","rowModelClientSide","updatedNodes","updated","selectedCount","notSelectedCount","_calculateSelectAllState","recursivelyAddChildren","selectedIds","rowIds","skipLeafNodes","isCSRMGroupSelectsDescendants","nodesToDeselect","nodeCallback","hasSelectableChild","detailApi","isSelectAll","_isAllSelected","detailSelected","n","masterNode","detailGridOptions","notSelected","SharedRowSelectionModule","RowSelectionModule","expandAll","collapseAll","onRowHeightChanged","serverSideRowModel","setRowCount","maxRowFound","infiniteRowModel","getCacheBlockState","isLastRowIndexKnown","CsrmSsrmSharedApiModule","SsrmInfiniteSharedApiModule","AlignedGridsService","alignedGrids","isCallbackConfig","alignedGrid","refOrComp","ref","fireColumnEvent","columnEvent","scrollEvent","groupOpenedEvent","masterGroup","otherColumnGroup","masterColumn","masterColumns","destColState","resizedEvent","isVerticalScrollShowing","AlignedGridsModule","ClientSideNodeManager","ChangedRowNodes","updateChildIndexes","listToSort","lastChild","updateRowNodeAfterSort","SortStage","sortActive","deltaSort","sortContainsGroupColumns","useDeltaSort","groupHideOpenParentsSvc","rowNodeSorter","groupMaintainOrder","groupColumnsPresent","isPivotMode","postSortFunc","skipSortingPivotLeafs","skipSortingGroups","newChildrenAfterSort","nextGroup","wasSortExplicitlyRemoved","childrenToBeSorted","indexedOrders","row1","row2","doDeltaSort","unsortedRows","oldSortedRows","untouchedRows","touchedRows","updates","adds","sortedUntouchedRows","mergeSortedArrays","arr1","arr2","arr1Length","arr2Length","chosen","ClientSideRowModel","stage","refreshEverythingFunc","refreshEverythingAfterColsChangedFunc","nodeManager","allProps","refreshProps","properties","startPixel","endPixel","startLimitIndex","endLimitIndex","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","changedProps","rowDataChanged","treeDataChanged","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","rowDataUpdated","displayedNodesMapped","firstInRange","lastInRange","started","groupsSelectChildren","pixelToMatch","bottomPointer","topPointer","oldBottomPointer","oldTopPointer","midPointer","includeFooterNodes","afterSort","childrenField","getChildren","rowNodesOrderChanged","afterColumnsChanged","treeData","groupStage","rowDataTransaction","waitMillis","callbackFuncsBound","rowNodeTrans","tranItem","rowsInserted","flattenStage","atLeastOne","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","AnimateShowChangeCellRenderer","absDelta","valueToUse","deltaUp","eDelta","refreshCountCopy","isInitialRender","lastValue","animateSlideCellRendererCSS","AnimateSlideCellRenderer","slide","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","PageSizeSelectorComp","paginationChangedEvent","shouldAddAndSelectEmptyOption","localisedLabel","localisedAriaLabel","defaultValues","paginationPageSizeSelectorValues","PageSizeSelectorSelector","paginationCompCSS","PaginationComp","btFirst","btPrevious","btNext","btLast","strPage","strTo","strOf","strFirst","strPrevious","strNext","strLast","compId","totalPages","zeroPagesToDisplay","onLastPage","lastPageFound","masterRowCount","theoreticalEndRow","isLoadingPageSize","lbFirstRowOnPage","lbLastRowOnPage","toDisplay","lbCurrent","lbTotal","lbRecordCount","moreText","ariaRowStatus","ariaPageStatus","strZero","PaginationSelector","PaginationService","pageNumber","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","colKeys","skipHeaderGroups","stopAtGroup","renderStatus","autoWidthCalc","columnsAutoSized","changesThisTimeAround","shouldSkipHeader","shouldSkipHeaderGroups","preferredWidth","normaliseColumnWidth","columnGroups","headerGroupCtrl","resizedColumns","headerContainerCtrl","skipHeaderOnAutoSize","autoSizeColListener","nextTimeout","scrollWidthToRemove","gridWidth","limitsMap","dimensions","doColumnsAlreadyFit","colsToSpread","colsToNotSpread","colsToDispatchEventFor","finishedResizing","moveToNotSpread","widthOverride","minOverride","maxOverride","availablePixels","scale","pixelsForLastCol","colMinWidth","colMaxWidth","autoSizeStrategy","propColumnLimits","defaultMinWidth","defaultMaxWidth","columnLimits","resizeOperation","ColumnAutoSizeModule","getPinnedTopRowCount","getPinnedBottomRowCount","getPinnedTopRow","getPinnedBottomRow","PinnedRowModel","estimateRowHeight","forEach","anyChange","updateRowHeight","allData","idPrefix","nodesToRemove","dataIds","existingNode","getById","getTotalHeight","getSize","getByIndex","cache","PinnedRowModule","SpannedCellCtrl","SpannedRowCtrl","_rowContainerType","SpannedRowRenderer","ctrlsKey","ctrlsName","previousCtrls","previousCtrlsSize","newRowCtrls","hasNewSpans","existingCtrl","newCtrl","sameCount","_normalisePinnedValue","CellSpan","firstNode","allButLastHeights","RowSpanCache","newMap","equalsFnc","customCompare","isCustomCompare","lastNode","spanData","setNewHead","checkNodeForCache","doesNodeSupportSpanning","RowSpanService","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","autoHeights","cellHeight","spannedCell","previousCellHeight","activeColsForRow","eParentCell","destroyResizeObserver","RowAutoHeightModule","AllCommunityModule"],"mappings":"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AAWnG,EAAM,SACvB,OAAOmG,EAAS,QAAO,IAAO,aAAeA,EAAW,MAC1D,CAGA,IAAI4yG,GAAiB,CACnB,0BACA,mBACA,yBACA,0BACA,wBACA,sBACA,qBACA,qBACA,qBACA,cACA,gBACA,eACA,oBACA,gBACA,0BACA,wBACA,wBACA,yBACA,sBACA,0BACA,2BACA,iBACA,iBACA,uBACA,wBACA,uBACA,eACA,6BACA,sBACA,iBACA,0BACA,uBACA,eACA,WACA,SACA,aACA,WACA,YACA,UACA,2BACA,yBACA,mBACA,iBACA,cACA,YACA,cACA,YACA,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,eACF,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,oBACF,EACIC,GAAc,CAAC,GAAGF,GAAgB,GAAGC,EAAgB,EAGrDE,GAAgB,cAAcjrG,CAAS,CACzC,aAAc,CACZ,MAAM,GAAG,SAAS,EAClB,KAAK,SAAW,WACpB,CACE,mBAAoB,CAClB,MAAMvM,EAAM,KAAK,IACXy3G,EAAgBz3G,EAAI,YAAY,eAAe,EACrD,GAAIy3G,EACF,MAAO,CAAC16G,EAAKlK,EAAc6kH,IAMlBD,EALQ,CACb,IAAA16G,EACA,aAAAlK,EACA,eAAA6kH,CACD,CAC0B,EAG/B,MAAMC,EAAa33G,EAAI,IAAI,YAAY,EACvC,MAAO,CAACjD,EAAKlK,EAAc6kH,IAAmB,CAC5C,IAAIE,EAAgBD,GAAcA,EAAW56G,CAAG,EAChD,GAAI66G,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,CAEtF,CACM,OAAOD,GAAiB/kH,CACzB,CACL,CACA,EAGIilH,GAAsB,CACxB,yBACA,wBACA,SACA,kBACA,eACA,WACA,YACA,qBACA,oBACA,eACA,yBACA,iBACA,iBACA,sBACA,mBACA,sBACA,wBACA,mBACA,iBACA,sCACA,aACA,kBACA,gBACA,eACF,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,oBACF,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,EAA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","x_google_ignoreList":[0]}