UNPKG

ag-grid-community

Version:

Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue

1,419 lines (1,407 loc) 1.88 MB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod2) => __copyProps(__defProp({}, "__esModule", { value: true }), mod2); // packages/ag-grid-community/src/main.ts var main_exports = {}; __export(main_exports, { ALWAYS_SYNC_GLOBAL_EVENTS: () => ALWAYS_SYNC_GLOBAL_EVENTS, AbstractClientSideNodeManager: () => AbstractClientSideNodeManager, AgAbstractInputField: () => AgAbstractInputField, AgAbstractLabel: () => AgAbstractLabel, AgCheckbox: () => AgCheckbox, AgCheckboxSelector: () => AgCheckboxSelector, AgColumn: () => AgColumn, AgColumnGroup: () => AgColumnGroup, AgInputDateField: () => AgInputDateField, AgInputNumberField: () => AgInputNumberField, AgInputNumberFieldSelector: () => AgInputNumberFieldSelector, AgInputTextArea: () => AgInputTextArea, AgInputTextField: () => AgInputTextField, AgInputTextFieldSelector: () => AgInputTextFieldSelector, AgPickerField: () => AgPickerField, AgPromise: () => AgPromise, AgProvidedColumnGroup: () => AgProvidedColumnGroup, AgRadioButton: () => AgRadioButton, AgSelect: () => AgSelect, AgSelectSelector: () => AgSelectSelector, AgToggleButton: () => AgToggleButton, AgToggleButtonSelector: () => AgToggleButtonSelector, AlignedGridsModule: () => AlignedGridsModule, AllCommunityModule: () => AllCommunityModule, AutoScrollService: () => AutoScrollService, BaseColsService: () => BaseColsService, BaseComponentWrapper: () => BaseComponentWrapper, BaseCreator: () => BaseCreator, BaseGridSerializingSession: () => BaseGridSerializingSession, BaseSelectionService: () => BaseSelectionService, BeanStub: () => BeanStub, CellApiModule: () => CellApiModule, CellRangeType: () => CellRangeType, CellSpanModule: () => CellSpanModule, CellStyleModule: () => CellStyleModule, ChangedPath: () => ChangedPath, CheckboxEditorModule: () => CheckboxEditorModule, ClientSideRowModelApiModule: () => ClientSideRowModelApiModule, ClientSideRowModelModule: () => ClientSideRowModelModule, ColumnApiModule: () => ColumnApiModule, ColumnAutoSizeModule: () => ColumnAutoSizeModule, ColumnHoverModule: () => ColumnHoverModule, ColumnKeyCreator: () => ColumnKeyCreator, Component: () => Component, CssClassManager: () => CssClassManager, CsvExportModule: () => CsvExportModule, CustomEditorModule: () => CustomEditorModule, CustomFilterModule: () => CustomFilterModule, DateEditorModule: () => DateEditorModule, DateFilterModule: () => DateFilterModule, DragAndDropModule: () => DragAndDropModule, DragSourceType: () => DragSourceType, EventApiModule: () => EventApiModule, ExternalFilterModule: () => ExternalFilterModule, FakeHScrollComp: () => FakeHScrollComp, FakeVScrollComp: () => FakeVScrollComp, FilterWrapperComp: () => FilterWrapperComp, GROUP_AUTO_COLUMN_ID: () => GROUP_AUTO_COLUMN_ID, GridBodyCtrl: () => GridBodyCtrl, GridCoreCreator: () => GridCoreCreator, GridCtrl: () => GridCtrl, GridHeaderCtrl: () => GridHeaderCtrl, GridStateModule: () => GridStateModule, GroupInstanceIdCreator: () => GroupInstanceIdCreator, HeaderRowContainerCtrl: () => HeaderRowContainerCtrl, HighlightChangesModule: () => HighlightChangesModule, InfiniteRowModelModule: () => InfiniteRowModelModule, KeyCode: () => KeyCode, LargeTextEditorModule: () => LargeTextEditorModule, LocalEventService: () => LocalEventService, LocaleModule: () => LocaleModule, LocaleService: () => LocaleService, ManagedFocusFeature: () => ManagedFocusFeature, ModuleRegistry: () => ModuleRegistry, NumberEditorModule: () => NumberEditorModule, NumberFilterModule: () => NumberFilterModule, PaginationModule: () => PaginationModule, PinnedRowModel: () => PinnedRowModel, PinnedRowModule: () => PinnedRowModule, PopupComponent: () => PopupComponent, PositionableFeature: () => PositionableFeature, ProvidedFilter: () => ProvidedFilter, QuickFilterModule: () => QuickFilterModule, ROW_NUMBERS_COLUMN_ID: () => ROW_NUMBERS_COLUMN_ID, RefPlaceholder: () => RefPlaceholder, RenderApiModule: () => RenderApiModule, RowApiModule: () => RowApiModule, RowAutoHeightModule: () => RowAutoHeightModule, RowContainerCtrl: () => RowContainerCtrl, RowDragModule: () => RowDragModule, RowNode: () => RowNode, RowSelectionModule: () => RowSelectionModule, RowStyleModule: () => RowStyleModule, SELECTION_COLUMN_ID: () => SELECTION_COLUMN_ID, ScrollApiModule: () => ScrollApiModule, SelectEditorModule: () => SelectEditorModule, ServerSideTransactionResultStatus: () => ServerSideTransactionResultStatus, TabGuardClassNames: () => TabGuardClassNames, TabGuardComp: () => TabGuardComp, TabGuardCtrl: () => TabGuardCtrl, TabGuardFeature: () => TabGuardFeature, TextEditorModule: () => TextEditorModule, TextFilterModule: () => TextFilterModule, TooltipFeature: () => TooltipFeature, TooltipModule: () => TooltipModule, TouchListener: () => TouchListener, UndoRedoEditModule: () => UndoRedoEditModule, ValidationModule: () => ValidationModule, ValueCacheModule: () => ValueCacheModule, VanillaFrameworkOverrides: () => VanillaFrameworkOverrides, _BOOLEAN_MIXED_GRID_OPTIONS: () => _BOOLEAN_MIXED_GRID_OPTIONS, _ColumnFilterModule: () => ColumnFilterModule, _ColumnGroupModule: () => ColumnGroupModule, _ColumnMoveModule: () => ColumnMoveModule, _CsrmSsrmSharedApiModule: () => CsrmSsrmSharedApiModule, _DragModule: () => DragModule, _EditCoreModule: () => EditCoreModule, _EmptyArray: () => _EmptyArray, _EmptyBean: () => EmptyBean, _FOCUS_MANAGED_CLASS: () => FOCUS_MANAGED_CLASS, _FilterCoreModule: () => FilterCoreModule, _FilterValueModule: () => FilterValueModule, _GET_ALL_EVENTS: () => _GET_ALL_EVENTS, _GET_ALL_GRID_OPTIONS: () => _GET_ALL_GRID_OPTIONS, _HeaderComp: () => HeaderComp, _HorizontalResizeModule: () => HorizontalResizeModule, _KeyboardNavigationModule: () => KeyboardNavigationModule, _PUBLIC_EVENTS: () => _PUBLIC_EVENTS, _PopupModule: () => PopupModule, _ROW_ID_PREFIX_BOTTOM_PINNED: () => ROW_ID_PREFIX_BOTTOM_PINNED, _ROW_ID_PREFIX_ROW_GROUP: () => ROW_ID_PREFIX_ROW_GROUP, _ROW_ID_PREFIX_TOP_PINNED: () => ROW_ID_PREFIX_TOP_PINNED, _SharedDragAndDropModule: () => SharedDragAndDropModule, _SharedExportModule: () => SharedExportModule, _SharedMenuModule: () => SharedMenuModule, _SharedRowSelectionModule: () => SharedRowSelectionModule, _SortModule: () => SortModule, _SsrmInfiniteSharedApiModule: () => SsrmInfiniteSharedApiModule, _addColumnDefaultAndTypes: () => _addColumnDefaultAndTypes, _addFocusableContainerListener: () => _addFocusableContainerListener, _addGridCommonParams: () => _addGridCommonParams, _anchorElementToMouseMoveEvent: () => _anchorElementToMouseMoveEvent, _applyColumnState: () => _applyColumnState, _areCellsEqual: () => _areCellsEqual, _areColIdsEqual: () => _areColIdsEqual, _areEqual: () => _areEqual, _asThemeImpl: () => _asThemeImpl, _batchCall: () => _batchCall, _canSkipShowingRowGroup: () => _canSkipShowingRowGroup, _clearElement: () => _clearElement, _columnsMatch: () => _columnsMatch, _combineAttributesAndGridOptions: () => _combineAttributesAndGridOptions, _convertColumnEventSourceType: () => _convertColumnEventSourceType, _createCellId: () => _createCellId, _createColumnTreeWithIds: () => _createColumnTreeWithIds, _createElement: () => _createElement, _createGlobalRowEvent: () => _createGlobalRowEvent, _createIcon: () => _createIcon, _createIconNoSpan: () => _createIconNoSpan, _createRowNodeSibling: () => _createRowNodeSibling, _debounce: () => _debounce, _defaultComparator: () => _defaultComparator, _destroyColumnTree: () => _destroyColumnTree, _doOnce: () => _doOnce, _downloadFile: () => _downloadFile, _errMsg: () => _errMsg, _error: () => _error, _escapeString: () => _escapeString, _exists: () => _exists, _findFocusableElements: () => _findFocusableElements, _findNextFocusableElement: () => _findNextFocusableElement, _findTabbableParent: () => _findTabbableParent, _flatten: () => _flatten, _focusGridInnerElement: () => _focusGridInnerElement, _focusInto: () => _focusInto, _focusNextGridCoreContainer: () => _focusNextGridCoreContainer, _formatNumberCommas: () => _formatNumberCommas, _fuzzySuggestions: () => _fuzzySuggestions, _getAbsoluteHeight: () => _getAbsoluteHeight, _getAbsoluteWidth: () => _getAbsoluteWidth, _getActiveDomElement: () => _getActiveDomElement, _getAriaPosInSet: () => _getAriaPosInSet, _getCallbackForEvent: () => _getCallbackForEvent, _getCellByPosition: () => _getCellByPosition, _getCellCtrlForEventTarget: () => _getCellCtrlForEventTarget, _getCellPositionForEvent: () => _getCellPositionForEvent, _getCellRendererDetails: () => _getCellRendererDetails, _getCheckboxLocation: () => _getCheckboxLocation, _getCheckboxes: () => _getCheckboxes, _getClientSideRowModel: () => _getClientSideRowModel, _getColumnState: () => _getColumnState, _getColumnsFromTree: () => _getColumnsFromTree, _getDefaultFloatingFilterType: () => _getDefaultFloatingFilterType, _getDocument: () => _getDocument, _getEditorRendererDetails: () => _getEditorRendererDetails, _getFillHandle: () => _getFillHandle, _getFilterDetails: () => _getFilterDetails, _getFloatingFilterCompDetails: () => _getFloatingFilterCompDetails, _getFloatingFiltersHeight: () => getFloatingFiltersHeight, _getGlobalGridOption: () => _getGlobalGridOption, _getGrandTotalRow: () => _getGrandTotalRow, _getGridRegisteredModules: () => _getGridRegisteredModules, _getGroupAggFiltering: () => _getGroupAggFiltering, _getGroupSelection: () => _getGroupSelection, _getGroupSelectsDescendants: () => _getGroupSelectsDescendants, _getGroupTotalRowCallback: () => _getGroupTotalRowCallback, _getGroupingApproach: () => _getGroupingApproach, _getHeaderCheckbox: () => _getHeaderCheckbox, _getHeaderClassesFromColDef: () => _getHeaderClassesFromColDef, _getHeaderRowCount: () => getHeaderRowCount, _getInnerCellRendererDetails: () => _getInnerCellRendererDetails, _getInnerHeight: () => _getInnerHeight, _getInnerWidth: () => _getInnerWidth, _getIsRowSelectable: () => _getIsRowSelectable, _getLocaleTextFunc: () => _getLocaleTextFunc, _getMaxConcurrentDatasourceRequests: () => _getMaxConcurrentDatasourceRequests, _getNormalisedMousePosition: () => _getNormalisedMousePosition, _getPageBody: () => _getPageBody, _getRootNode: () => _getRootNode, _getRowAbove: () => _getRowAbove, _getRowBelow: () => _getRowBelow, _getRowContainerClass: () => _getRowContainerClass, _getRowContainerOptions: () => _getRowContainerOptions, _getRowHeightAsNumber: () => _getRowHeightAsNumber, _getRowHeightForNode: () => _getRowHeightForNode, _getRowIdCallback: () => _getRowIdCallback, _getRowNode: () => _getRowNode, _getRowSelectionMode: () => _getRowSelectionMode, _getRowSpanContainerClass: () => _getRowSpanContainerClass, _getRowViewportClass: () => _getRowViewportClass, _getServerSideRowModel: () => _getServerSideRowModel, _getShouldDisplayTooltip: () => _getShouldDisplayTooltip, _getSuppressMultiRanges: () => _getSuppressMultiRanges, _getToolPanelClassesFromColDef: () => _getToolPanelClassesFromColDef, _isAnimateRows: () => _isAnimateRows, _isCellSelectionEnabled: () => _isCellSelectionEnabled, _isClientSideRowModel: () => _isClientSideRowModel, _isColumnMenuAnchoringEnabled: () => _isColumnMenuAnchoringEnabled, _isColumnsSortingCoupledToGroup: () => _isColumnsSortingCoupledToGroup, _isDomLayout: () => _isDomLayout, _isElementInEventPath: () => _isElementInEventPath, _isEventFromPrintableCharacter: () => _isEventFromPrintableCharacter, _isFullWidthGroupRow: () => _isFullWidthGroupRow, _isGetRowHeightFunction: () => _isGetRowHeightFunction, _isGroupMultiAutoColumn: () => _isGroupMultiAutoColumn, _isGroupRowsSticky: () => _isGroupRowsSticky, _isGroupUseEntireRow: () => _isGroupUseEntireRow, _isIOSUserAgent: () => _isIOSUserAgent, _isKeyboardMode: () => _isKeyboardMode, _isLegacyMenuEnabled: () => _isLegacyMenuEnabled, _isMultiRowSelection: () => _isMultiRowSelection, _isNodeOrElement: () => _isNodeOrElement, _isNothingFocused: () => _isNothingFocused, _isPromise: () => _isPromise, _isRowBefore: () => _isRowBefore, _isRowSelection: () => _isRowSelection, _isSameRow: () => _isSameRow, _isServerSideRowModel: () => _isServerSideRowModel, _isShowTooltipWhenTruncated: () => _isShowTooltipWhenTruncated, _isStopPropagationForAgGrid: () => _isStopPropagationForAgGrid, _isUsingNewCellSelectionAPI: () => _isUsingNewCellSelectionAPI, _isUsingNewRowSelectionAPI: () => _isUsingNewRowSelectionAPI, _isVisible: () => _isVisible, _jsonEquals: () => _jsonEquals, _last: () => _last, _loadTemplate: () => _loadTemplate, _makeNull: () => _makeNull, _mergeDeep: () => _mergeDeep, _missing: () => _missing, _observeResize: () => _observeResize, _parseDateTimeFromString: () => _parseDateTimeFromString, _preInitErrMsg: () => _preInitErrMsg, _preserveRangesWhile: () => _preserveRangesWhile, _processOnChange: () => _processOnChange, _radioCssClass: () => _radioCssClass, _registerModule: () => _registerModule, _removeAriaExpanded: () => _removeAriaExpanded, _removeAriaSort: () => _removeAriaSort, _removeFromArray: () => _removeFromArray, _removeFromParent: () => _removeFromParent, _requestAnimationFrame: () => _requestAnimationFrame, _resetColumnState: () => _resetColumnState, _selectAllCells: () => _selectAllCells, _serialiseDate: () => _serialiseDate, _setAriaActiveDescendant: () => _setAriaActiveDescendant, _setAriaChecked: () => _setAriaChecked, _setAriaColCount: () => _setAriaColCount, _setAriaColIndex: () => _setAriaColIndex, _setAriaColSpan: () => _setAriaColSpan, _setAriaControls: () => _setAriaControls, _setAriaDescribedBy: () => _setAriaDescribedBy, _setAriaDisabled: () => _setAriaDisabled, _setAriaExpanded: () => _setAriaExpanded, _setAriaHasPopup: () => _setAriaHasPopup, _setAriaHidden: () => _setAriaHidden, _setAriaLabel: () => _setAriaLabel, _setAriaLabelledBy: () => _setAriaLabelledBy, _setAriaLevel: () => _setAriaLevel, _setAriaPosInSet: () => _setAriaPosInSet, _setAriaRole: () => _setAriaRole, _setAriaRowCount: () => _setAriaRowCount, _setAriaRowIndex: () => _setAriaRowIndex, _setAriaSelected: () => _setAriaSelected, _setAriaSetSize: () => _setAriaSetSize, _setAriaSort: () => _setAriaSort, _setColMenuVisible: () => _setColMenuVisible, _setDisabled: () => _setDisabled, _setDisplayed: () => _setDisplayed, _setFixedWidth: () => _setFixedWidth, _setUmd: () => _setUmd, _setVisible: () => _setVisible, _shouldDisplayTooltip: () => _shouldDisplayTooltip, _shouldUpdateColVisibilityAfterGroup: () => _shouldUpdateColVisibilityAfterGroup, _stopPropagationForAgGrid: () => _stopPropagationForAgGrid, _toString: () => _toString, _toStringOrNull: () => _toStringOrNull, _unwrapUserComp: () => _unwrapUserComp, _updateColsMap: () => _updateColsMap, _updateColumnState: () => _updateColumnState, _waitUntil: () => _waitUntil, _warn: () => _warn, _warnOnce: () => _warnOnce, buttonStyleAlpine: () => buttonStyleAlpine, buttonStyleBalham: () => buttonStyleBalham, buttonStyleBase: () => buttonStyleBase, buttonStyleQuartz: () => buttonStyleQuartz, checkboxStyleDefault: () => checkboxStyleDefault, colorSchemeDark: () => colorSchemeDark, colorSchemeDarkBlue: () => colorSchemeDarkBlue, colorSchemeDarkWarm: () => colorSchemeDarkWarm, colorSchemeLight: () => colorSchemeLight, colorSchemeLightCold: () => colorSchemeLightCold, colorSchemeLightWarm: () => colorSchemeLightWarm, colorSchemeVariable: () => colorSchemeVariable, columnDropStyleBordered: () => columnDropStyleBordered, columnDropStylePlain: () => columnDropStylePlain, convertColumnGroupState: () => convertColumnGroupState, convertColumnState: () => convertColumnState, createGrid: () => createGrid, createPart: () => createPart, createTheme: () => createTheme, iconOverrides: () => iconOverrides, iconSetAlpine: () => iconSetAlpine, iconSetMaterial: () => iconSetMaterial, iconSetQuartz: () => iconSetQuartz, iconSetQuartzBold: () => iconSetQuartzBold, iconSetQuartzLight: () => iconSetQuartzLight, iconSetQuartzRegular: () => iconSetQuartzRegular, inputStyleBase: () => inputStyleBase, inputStyleBordered: () => inputStyleBordered, inputStyleUnderlined: () => inputStyleUnderlined, isColumn: () => isColumn, isColumnGroup: () => isColumnGroup, isColumnGroupAutoCol: () => isColumnGroupAutoCol, isColumnSelectionCol: () => isColumnSelectionCol, isProvidedColumnGroup: () => isProvidedColumnGroup, isRowNumberCol: () => isRowNumberCol, provideGlobalGridOptions: () => provideGlobalGridOptions, styleMaterial: () => styleMaterial, tabStyleAlpine: () => tabStyleAlpine, tabStyleBase: () => tabStyleBase, tabStyleMaterial: () => tabStyleMaterial, tabStyleQuartz: () => tabStyleQuartz, tabStyleRolodex: () => tabStyleRolodex, themeAlpine: () => themeAlpine, themeBalham: () => themeBalham, themeMaterial: () => themeMaterial, themeQuartz: () => themeQuartz }); module.exports = __toCommonJS(main_exports); // packages/ag-grid-community/src/localEventService.ts var LocalEventService = class { constructor() { this.allSyncListeners = /* @__PURE__ */ new Map(); this.allAsyncListeners = /* @__PURE__ */ new Map(); this.globalSyncListeners = /* @__PURE__ */ new Set(); this.globalAsyncListeners = /* @__PURE__ */ new Set(); this.asyncFunctionsQueue = []; this.scheduled = false; // using an object performs better than a Set for the number of different events we have this.firedEvents = {}; } setFrameworkOverrides(frameworkOverrides) { this.frameworkOverrides = frameworkOverrides; } getListeners(eventType, async, autoCreateListenerCollection) { const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners; let listeners = listenerMap.get(eventType); if (!listeners && autoCreateListenerCollection) { listeners = /* @__PURE__ */ new Set(); listenerMap.set(eventType, listeners); } return listeners; } noRegisteredListenersExist() { return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 && this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0; } addEventListener(eventType, listener, async = false) { this.getListeners(eventType, async, true).add(listener); } removeEventListener(eventType, listener, async = false) { const listeners = this.getListeners(eventType, async, false); if (!listeners) { return; } listeners.delete(listener); if (listeners.size === 0) { (async ? this.allAsyncListeners : this.allSyncListeners).delete(eventType); } } addGlobalListener(listener, async = false) { this.getGlobalListeners(async).add(listener); } removeGlobalListener(listener, async = false) { this.getGlobalListeners(async).delete(listener); } dispatchEvent(event) { const agEvent = event; this.dispatchToListeners(agEvent, true); this.dispatchToListeners(agEvent, false); this.firedEvents[agEvent.type] = true; } dispatchEventOnce(event) { if (!this.firedEvents[event.type]) { this.dispatchEvent(event); } } dispatchToListeners(event, async) { const eventType = event.type; if (async && "event" in event) { const browserEvent = event.event; if (browserEvent instanceof Event) { event.eventPath = browserEvent.composedPath(); } } const { frameworkOverrides } = this; const runCallback = (func) => { const callback = frameworkOverrides ? () => frameworkOverrides.wrapIncoming(func) : func; if (async) { this.dispatchAsync(callback); } else { callback(); } }; const originalListeners = this.getListeners(eventType, async, false); if ((originalListeners?.size ?? 0) > 0) { const listeners = new Set(originalListeners); for (const listener of listeners) { if (!originalListeners?.has(listener)) { continue; } runCallback(() => listener(event)); } } const globalListenersSrc = this.getGlobalListeners(async); if (globalListenersSrc.size > 0) { const globalListeners = new Set(globalListenersSrc); for (const listener of globalListeners) { runCallback(() => listener(eventType, event)); } } } getGlobalListeners(async) { return async ? this.globalAsyncListeners : this.globalSyncListeners; } // this gets called inside the grid's thread, for each event that it // wants to set async. the grid then batches the events into one setTimeout() // because setTimeout() is an expensive operation. ideally we would have // each event in it's own setTimeout(), but we batch for performance. dispatchAsync(func) { this.asyncFunctionsQueue.push(func); if (!this.scheduled) { const flush = () => { window.setTimeout(this.flushAsyncQueue.bind(this), 0); }; this.frameworkOverrides ? this.frameworkOverrides.wrapIncoming(flush) : flush(); this.scheduled = true; } } // this happens in the next VM turn only, and empties the queue of events flushAsyncQueue() { this.scheduled = false; const queueCopy = this.asyncFunctionsQueue.slice(); this.asyncFunctionsQueue = []; queueCopy.forEach((func) => func()); } }; // packages/ag-grid-community/src/misc/locale/localeUtils.ts function defaultLocaleTextFunc(_key, defaultValue) { return defaultValue; } function _getLocaleTextFunc(localeSvc) { return localeSvc?.getLocaleTextFunc() ?? defaultLocaleTextFunc; } // packages/ag-grid-community/src/utils/aria.ts function _toggleAriaAttribute(element, attribute, value) { if (value == null || typeof value === "string" && value == "") { _removeAriaAttribute(element, attribute); } else { _setAriaAttribute(element, attribute, value); } } function _setAriaAttribute(element, attribute, value) { element.setAttribute(_ariaAttributeName(attribute), value.toString()); } function _removeAriaAttribute(element, attribute) { element.removeAttribute(_ariaAttributeName(attribute)); } function _ariaAttributeName(attribute) { return `aria-${attribute}`; } function _setAriaRole(element, role) { if (role) { element.setAttribute("role", role); } else { element.removeAttribute("role"); } } function _getAriaSortState(sortDirection) { let sort; if (sortDirection === "asc") { sort = "ascending"; } else if (sortDirection === "desc") { sort = "descending"; } else if (sortDirection === "mixed") { sort = "other"; } else { sort = "none"; } return sort; } function _getAriaPosInSet(element) { return parseInt(element.getAttribute("aria-posinset"), 10); } function _getAriaLabel(element) { return element.getAttribute("aria-label"); } function _setAriaLabel(element, label) { _toggleAriaAttribute(element, "label", label); } function _setAriaLabelledBy(element, labelledBy) { _toggleAriaAttribute(element, "labelledby", labelledBy); } function _setAriaDescribedBy(element, describedby) { _toggleAriaAttribute(element, "describedby", describedby); } function _setAriaLive(element, live) { _toggleAriaAttribute(element, "live", live); } function _setAriaAtomic(element, atomic) { _toggleAriaAttribute(element, "atomic", atomic); } function _setAriaRelevant(element, relevant) { _toggleAriaAttribute(element, "relevant", relevant); } function _setAriaLevel(element, level) { _toggleAriaAttribute(element, "level", level); } function _setAriaDisabled(element, disabled) { _toggleAriaAttribute(element, "disabled", disabled); } function _setAriaHidden(element, hidden) { _toggleAriaAttribute(element, "hidden", hidden); } function _setAriaActiveDescendant(element, descendantId) { _toggleAriaAttribute(element, "activedescendant", descendantId); } function _setAriaExpanded(element, expanded) { _setAriaAttribute(element, "expanded", expanded); } function _removeAriaExpanded(element) { _removeAriaAttribute(element, "expanded"); } function _setAriaSetSize(element, setsize) { _setAriaAttribute(element, "setsize", setsize); } function _setAriaPosInSet(element, position) { _setAriaAttribute(element, "posinset", position); } function _setAriaMultiSelectable(element, multiSelectable) { _setAriaAttribute(element, "multiselectable", multiSelectable); } function _setAriaRowCount(element, rowCount) { _setAriaAttribute(element, "rowcount", rowCount); } function _setAriaRowIndex(element, rowIndex) { _setAriaAttribute(element, "rowindex", rowIndex); } function _setAriaRowSpan(element, spanCount) { _setAriaAttribute(element, "rowspan", spanCount); } function _setAriaColCount(element, colCount) { _setAriaAttribute(element, "colcount", colCount); } function _setAriaColIndex(element, colIndex) { _setAriaAttribute(element, "colindex", colIndex); } function _setAriaColSpan(element, colSpan) { _setAriaAttribute(element, "colspan", colSpan); } function _setAriaSort(element, sort) { _setAriaAttribute(element, "sort", sort); } function _removeAriaSort(element) { _removeAriaAttribute(element, "sort"); } function _setAriaSelected(element, selected) { _toggleAriaAttribute(element, "selected", selected); } function _setAriaChecked(element, checked) { _setAriaAttribute(element, "checked", checked === void 0 ? "mixed" : checked); } function _setAriaControls(controllerElement, controlledElement) { _toggleAriaAttribute(controllerElement, "controls", controlledElement.id); _setAriaLabelledBy(controlledElement, controllerElement.id); } function _setAriaHasPopup(element, hasPopup) { _toggleAriaAttribute(element, "haspopup", hasPopup === false ? null : hasPopup); } function _getAriaCheckboxStateName(translate, state) { return state === void 0 ? translate("ariaIndeterminate", "indeterminate") : state === true ? translate("ariaChecked", "checked") : translate("ariaUnchecked", "unchecked"); } // packages/ag-grid-community/src/utils/browser.ts var isSafari; var isFirefox; var isMacOs; var isIOS; var invisibleScrollbar; var browserScrollbarWidth; var maxDivHeight; function _isBrowserSafari() { if (isSafari === void 0) { isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); } return isSafari; } function _isBrowserFirefox() { if (isFirefox === void 0) { isFirefox = /(firefox)/i.test(navigator.userAgent); } return isFirefox; } function _isMacOsUserAgent() { if (isMacOs === void 0) { isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform); } return isMacOs; } function _isIOSUserAgent() { if (isIOS === void 0) { isIOS = /iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1; } return isIOS; } function _getTabIndex(el) { if (!el) { return null; } const numberTabIndex = el.tabIndex; const tabIndex = el.getAttribute("tabIndex"); if (numberTabIndex === -1 && (tabIndex === null || tabIndex === "" && !_isBrowserFirefox())) { return null; } return numberTabIndex.toString(); } function _getMaxDivHeight() { if (maxDivHeight !== void 0) { return maxDivHeight; } if (!document.body) { return -1; } let res = 1e6; const testUpTo = _isBrowserFirefox() ? 6e6 : 1e9; const div = document.createElement("div"); document.body.appendChild(div); while (true) { const test = res * 2; div.style.height = test + "px"; if (test > testUpTo || div.clientHeight !== test) { break; } else { res = test; } } document.body.removeChild(div); maxDivHeight = res; return res; } function _getScrollbarWidth() { if (browserScrollbarWidth == null) { initScrollbarWidthAndVisibility(); } return browserScrollbarWidth; } function initScrollbarWidthAndVisibility() { const body = document.body; const div = document.createElement("div"); div.style.width = div.style.height = "100px"; div.style.opacity = "0"; div.style.overflow = "scroll"; div.style.msOverflowStyle = "scrollbar"; div.style.position = "absolute"; body.appendChild(div); let width = div.offsetWidth - div.clientWidth; if (width === 0 && div.clientWidth === 0) { width = null; } if (div.parentNode) { div.parentNode.removeChild(div); } if (width != null) { browserScrollbarWidth = width; invisibleScrollbar = width === 0; } } function _isInvisibleScrollbar() { if (invisibleScrollbar == null) { initScrollbarWidthAndVisibility(); } return invisibleScrollbar; } // packages/ag-grid-community/src/utils/dom.ts function _radioCssClass(element, elementClass, otherElementClass) { const parent = element.parentElement; let sibling = parent && parent.firstChild; while (sibling) { if (elementClass) { sibling.classList.toggle(elementClass, sibling === element); } if (otherElementClass) { sibling.classList.toggle(otherElementClass, sibling !== element); } sibling = sibling.nextSibling; } } var FOCUSABLE_SELECTOR = "[tabindex], input, select, button, textarea, [href]"; var FOCUSABLE_EXCLUDE = "[disabled], .ag-disabled:not(.ag-button), .ag-disabled *"; function _isFocusableFormField(element) { const matches = Element.prototype.matches || Element.prototype.msMatchesSelector; const inputSelector = "input, select, button, textarea"; const isFocusable = matches.call(element, inputSelector); const isNotFocusable = matches.call(element, FOCUSABLE_EXCLUDE); const isElementVisible = _isVisible(element); const focusable = isFocusable && !isNotFocusable && isElementVisible; return focusable; } function _setDisplayed(element, displayed, options = {}) { const { skipAriaHidden } = options; element.classList.toggle("ag-hidden", !displayed); if (!skipAriaHidden) { _setAriaHidden(element, !displayed); } } function _setVisible(element, visible, options = {}) { const { skipAriaHidden } = options; element.classList.toggle("ag-invisible", !visible); if (!skipAriaHidden) { _setAriaHidden(element, !visible); } } function _setDisabled(element, disabled) { const attributeName = "disabled"; const addOrRemoveDisabledAttribute = disabled ? (e) => e.setAttribute(attributeName, "") : (e) => e.removeAttribute(attributeName); addOrRemoveDisabledAttribute(element); const inputs = element.querySelectorAll("input") ?? []; for (const input of inputs) { addOrRemoveDisabledAttribute(input); } } function _isElementChildOfClass(element, cls, maxNest) { let counter = 0; while (element) { if (element.classList.contains(cls)) { return true; } element = element.parentElement; if (typeof maxNest == "number") { if (++counter > maxNest) { break; } } else if (element === maxNest) { break; } } return false; } function _getElementSize(el) { const { height, width, borderTopWidth, borderRightWidth, borderBottomWidth, borderLeftWidth, paddingTop, paddingRight, paddingBottom, paddingLeft, marginTop, marginRight, marginBottom, marginLeft, boxSizing } = window.getComputedStyle(el); return { height: parseFloat(height || "0"), width: parseFloat(width || "0"), borderTopWidth: parseFloat(borderTopWidth || "0"), borderRightWidth: parseFloat(borderRightWidth || "0"), borderBottomWidth: parseFloat(borderBottomWidth || "0"), borderLeftWidth: parseFloat(borderLeftWidth || "0"), paddingTop: parseFloat(paddingTop || "0"), paddingRight: parseFloat(paddingRight || "0"), paddingBottom: parseFloat(paddingBottom || "0"), paddingLeft: parseFloat(paddingLeft || "0"), marginTop: parseFloat(marginTop || "0"), marginRight: parseFloat(marginRight || "0"), marginBottom: parseFloat(marginBottom || "0"), marginLeft: parseFloat(marginLeft || "0"), boxSizing }; } function _getInnerHeight(el) { const size = _getElementSize(el); if (size.boxSizing === "border-box") { return size.height - size.paddingTop - size.paddingBottom; } return size.height; } function _getInnerWidth(el) { const size = _getElementSize(el); if (size.boxSizing === "border-box") { return size.width - size.paddingLeft - size.paddingRight; } return size.width; } function _getAbsoluteHeight(el) { const { height, marginBottom, marginTop } = _getElementSize(el); return Math.floor(height + marginBottom + marginTop); } function _getAbsoluteWidth(el) { const { width, marginLeft, marginRight } = _getElementSize(el); return Math.floor(width + marginLeft + marginRight); } function _getElementRectWithOffset(el) { const offsetElementRect = el.getBoundingClientRect(); const { borderTopWidth, borderLeftWidth, borderRightWidth, borderBottomWidth } = _getElementSize(el); return { top: offsetElementRect.top + (borderTopWidth || 0), left: offsetElementRect.left + (borderLeftWidth || 0), right: offsetElementRect.right + (borderRightWidth || 0), bottom: offsetElementRect.bottom + (borderBottomWidth || 0) }; } function _getScrollLeft(element, rtl) { let scrollLeft = element.scrollLeft; if (rtl) { scrollLeft = Math.abs(scrollLeft); } return scrollLeft; } function _setScrollLeft(element, value, rtl) { if (rtl) { value *= -1; } element.scrollLeft = value; } function _clearElement(el) { while (el && el.firstChild) { el.removeChild(el.firstChild); } } function _removeFromParent(node) { if (node && node.parentNode) { node.parentNode.removeChild(node); } } function _isInDOM(element) { return !!element.offsetParent; } function _isVisible(element) { const el = element; if (el.checkVisibility) { return el.checkVisibility({ checkVisibilityCSS: true }); } const isHidden = !_isInDOM(element) || window.getComputedStyle(element).visibility !== "visible"; return !isHidden; } function _loadTemplate(template) { const tempDiv = document.createElement("div"); tempDiv.innerHTML = (template || "").trim(); return tempDiv.firstChild; } function _ensureDomOrder(eContainer, eChild, eChildBefore) { if (eChildBefore && eChildBefore.nextSibling === eChild) { return; } if (!eContainer.firstChild) { eContainer.appendChild(eChild); } else if (eChildBefore) { if (eChildBefore.nextSibling) { eContainer.insertBefore(eChild, eChildBefore.nextSibling); } else { eContainer.appendChild(eChild); } } else if (eContainer.firstChild && eContainer.firstChild !== eChild) { eContainer.insertAdjacentElement("afterbegin", eChild); } } function _setDomChildOrder(eContainer, orderedChildren) { for (let i = 0; i < orderedChildren.length; i++) { const correctCellAtIndex = orderedChildren[i]; const actualCellAtIndex = eContainer.children[i]; if (actualCellAtIndex !== correctCellAtIndex) { eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex); } } } function _camelCaseToHyphenated(camelCase) { return camelCase.replace(/[A-Z]/g, (s) => `-${s.toLocaleLowerCase()}`); } function _addStylesToElement(eElement, styles) { if (!styles) { return; } for (const key of Object.keys(styles)) { const value = styles[key]; if (!key || !key.length || value == null) { continue; } const parsedKey = _camelCaseToHyphenated(key); const valueAsString = value.toString(); const parsedValue = valueAsString.replace(/\s*!important/g, ""); const priority = parsedValue.length != valueAsString.length ? "important" : void 0; eElement.style.setProperty(parsedKey, parsedValue, priority); } } function _isHorizontalScrollShowing(element) { return element.clientWidth < element.scrollWidth; } function _isVerticalScrollShowing(element) { return element.clientHeight < element.scrollHeight; } function _setElementWidth(element, width) { if (width === "flex") { element.style.removeProperty("width"); element.style.removeProperty("minWidth"); element.style.removeProperty("maxWidth"); element.style.flex = "1 1 auto"; } else { _setFixedWidth(element, width); } } function _setFixedWidth(element, width) { width = _formatSize(width); element.style.width = width; element.style.maxWidth = width; element.style.minWidth = width; } function _setFixedHeight(element, height) { height = _formatSize(height); element.style.height = height; element.style.maxHeight = height; element.style.minHeight = height; } function _formatSize(size) { return typeof size === "number" ? `${size}px` : size; } function _isNodeOrElement(o) { return o instanceof Node || o instanceof HTMLElement; } function _addOrRemoveAttribute(element, name, value) { if (value == null || value === "") { element.removeAttribute(name); } else { element.setAttribute(name, value.toString()); } } function _observeResize(beans, element, callback) { const win = _getWindow(beans); const ResizeObserverImpl = win.ResizeObserver; const resizeObserver = ResizeObserverImpl ? new ResizeObserverImpl(callback) : null; resizeObserver?.observe(element); return () => resizeObserver?.disconnect(); } function _getTextSelectionRanges(beans) { const rootNode = _getRootNode(beans); const selection = "getSelection" in rootNode ? rootNode.getSelection() : null; const ranges = []; for (let i = 0; i < (selection?.rangeCount ?? 0); i++) { const range = selection?.getRangeAt(i); if (range) { ranges.push(range); } } return { selection, ranges }; } function _preserveRangesWhile(beans, fn) { const enableCellTextSelection = beans.gos.get("enableCellTextSelection"); if (!enableCellTextSelection) { return fn(); } if (!_isBrowserFirefox() && !_isBrowserSafari()) { return fn(); } const { selection, ranges } = _getTextSelectionRanges(beans); fn(); selection?.removeAllRanges(); for (const range of ranges) { selection?.addRange(range); } } function _requestAnimationFrame(beans, callback) { const win = _getWindow(beans); if (win.requestAnimationFrame) { win.requestAnimationFrame(callback); } else if (win.webkitRequestAnimationFrame) { win.webkitRequestAnimationFrame(callback); } else { win.setTimeout(callback, 0); } } var DataRefAttribute = "data-ref"; var whitespaceNode; function getWhitespaceNode() { whitespaceNode ?? (whitespaceNode = document.createTextNode(" ")); return whitespaceNode.cloneNode(); } function _createElement(params) { const { attrs, children, cls, ref, role, tag } = params; const element = document.createElement(tag); if (cls) { element.className = cls; } if (ref) { element.setAttribute(DataRefAttribute, ref); } if (role) { element.setAttribute("role", role); } if (attrs) { for (const key of Object.keys(attrs)) { element.setAttribute(key, attrs[key]); } } if (children) { if (typeof children === "string") { element.textContent = children; } else { let addFirstWhitespace = true; for (const child of children) { if (child) { if (typeof child === "string") { element.appendChild(document.createTextNode(child)); addFirstWhitespace = false; } else { if (addFirstWhitespace) { element.appendChild(getWhitespaceNode()); addFirstWhitespace = false; } element.append(_createElement(child)); element.appendChild(getWhitespaceNode()); } } } } } return element; } // packages/ag-grid-community/src/utils/function.ts var doOnceFlags = {}; function _doOnce(func, key) { if (doOnceFlags[key]) { return; } func(); doOnceFlags[key] = true; } function _logIfDebug(gos, message, ...args) { if (gos.get("debug")) { console.log("AG Grid: " + message, ...args); } } function _warnOnce(msg, ...args) { _doOnce(() => console.warn("AG Grid: " + msg, ...args), msg + args?.join("")); } function _errorOnce(msg, ...args) { _doOnce(() => console.error("AG Grid: " + msg, ...args), msg + args?.join("")); } var batchedCallsSetTimeout = { pending: false, funcs: [] }; var batchedCallsRaf = { pending: false, funcs: [] }; function _batchCall(func, mode = "setTimeout", beans) { const batch = mode === "raf" ? batchedCallsRaf : batchedCallsSetTimeout; batch.funcs.push(func); if (batch.pending) { return; } batch.pending = true; const runBatch = () => { const funcsCopy = batch.funcs.slice(); batch.funcs.length = 0; batch.pending = false; funcsCopy.forEach((func2) => func2()); }; if (mode === "raf") { _requestAnimationFrame(beans, runBatch); } else { window.setTimeout(runBatch, 0); } } function _debounce(bean, func, delay) { let timeout; return function(...args) { const context = this; window.clearTimeout(timeout); timeout = window.setTimeout(function() { if (bean.isAlive()) { func.apply(context, args); } }, delay); }; } function _throttle(func, wait) { let previousCall = 0; return function(...args) { const context = this; const currentCall = Date.now(); if (currentCall - previousCall < wait) { return; } previousCall = currentCall; func.apply(context, args); }; } function _waitUntil(condition, callback, timeout = 100, timeoutMessage) { const timeStamp = Date.now(); let interval = null; let executed = false; const internalCallback = () => { const reachedTimeout = Date.now() - timeStamp > timeout; if (condition() || reachedTimeout) { callback(); executed = true; if (interval != null) { window.clearInterval(interval); interval = null; } if (reachedTimeout && timeoutMessage) { _warnOnce(timeoutMessage); } } }; internalCallback(); if (!executed) { interval = window.setInterval(internalCallback, 10); } } // packages/ag-grid-community/src/utils/generic.ts function _makeNull(value) { if (value == null || value === "") { return null; } return value; } function _exists(value) { return value != null && value !== ""; } function _missing(value) { return !_exists(value); } function _toStringOrNull(value) { return value != null && typeof value.toString === "function" ? value.toString() : null; } function _jsonEquals(val1, val2) { const val1Json = val1 ? JSON.stringify(val1) : null; const val2Json = val2 ? JSON.stringify(val2) : null; return val1Json === val2Json; } function _defaultComparator(valueA, valueB, accentedCompare = false) { const valueAMissing = valueA == null; const valueBMissing = valueB == null; if (valueA && valueA.toNumber) { valueA = valueA.toNumber(); } if (valueB && valueB.toNumber) { valueB = valueB.toNumber(); } if (valueAMissing && valueBMissing) { return 0; } if (valueAMissing) { return -1; } if (valueBMissing) { return 1; } function doQuickCompare(a, b) { return a > b ? 1 : a < b ? -1 : 0; } if (typeof valueA !== "string") { return doQuickCompare(valueA, valueB); } if (!accentedCompare) { return doQuickCompare(valueA, valueB); } try { return valueA.localeCompare(valueB); } catch (e) { return doQuickCompare(valueA, valueB); } } // packages/ag-grid-community/src/baseUrl.ts var BASE_URL = "https://www.ag-grid.com"; // packages/ag-grid-community/src/version.ts var VERSION = "33.3.0"; // packages/ag-grid-community/src/validation/logging.ts var MAX_URL_LENGTH = 2e3; var MIN_PARAM_LENGTH = 100; var VERSION_PARAM_NAME = "_version_"; var validation = null; var suppressAllLogging = false; var baseDocLink = `${BASE_URL}/javascript-data-grid`; function provideValidationServiceLogger(logger) { validation = logger; } function setValidationDocLink(docLink) { baseDocLink = docLink; } function getErrorParts(id, args, defaultMessage) { return validation?.getConsoleMessage(id, args) ?? [minifiedLog(id, args, defaultMessage)]; } function getMsgOrDefault(logger, id, args, defaultMessage) { if (suppressAllLogging) return; logger(`error #${id}`, ...getErrorParts(id, args, defaultMessage)); } function stringifyObject(inputObj) { if (!inputObj) return String(inputObj); const object = {}; for (const prop of Object.keys(inputObj)) { if (typeof inputObj[prop] !== "object" && typeof inputObj[prop] !== "function") { object[prop] = inputObj[prop]; } } return JSON.stringify(object); } function stringifyValue(value) { let output = value; if (value instanceof Error) { output = value.toString(); } else if (typeof value === "object") { output = stringifyObject(value); } return output; } function toStringWithNullUndefined(str) { return str === void 0 ? "undefined" : str === null ? "null" : str; } function getParamsUrl(baseUrl, params) { return `${baseUrl}?${params.toString()}`; } function truncateUrl(baseUrl, params, maxLength) { const sortedParams = Array.from(params.entries()).sort((a, b) => b[1].length - a[1].length); let url = getParamsUrl(baseUrl, params); for (const [key, value] of sortedParams) { if (key === VERSION_PARAM_NAME) { continue; } const excessLength = url.length - maxLength; if (excessLength <= 0) { break; } const ellipse = "..."; const truncateAmount = excessLength + ellipse.length; const truncatedValue = value.length - truncateAmount > MIN_PARAM_LENGTH ? value.slice(0, value.length - truncateAmount) + ellipse : value.slice(0, MIN_PARAM_LENGTH) + ellipse; params.set(key, truncatedValue); url = getParamsUrl(baseUrl, params); } return url; } function getErrorLink(errorNum, args) { const params = new URLSearchParams(); params.append(VERSION_PARAM_NAME, VERSION); if (args) { for (const key of Object.keys(args)) { params.append(key, stringifyValue(args[key])); } } const baseUrl = `${baseDocLink}/errors/${errorNum}`; const url = getParamsUrl(baseUrl, params); return url.length <= MAX_URL_LENGTH ? url : truncateUrl(baseUrl, params, MAX_URL_LENGTH); } var minifiedLog = (errorNum, args, defaultMessage) => { const errorLink = getErrorLink(errorNum, args); return `${defaultMessage ? defaultMessage + " \n" : ""}Visit ${errorLink}${defaultMessage ? "" : " \n Alternatively register the ValidationModule to see the full message in the console."}`; }; function _warn(...args) { getMsgOrDefault(_warnOnce, args[0], args[1]); } function _error(...args) { getMsgOrDefault(_errorOnce, args[0], args[1]); } function _logPreInitErr(id, args, defaultMessage) { getMsgOrDefault(_errorOnce, id, args, defaultMessage); } function getErrMsg(defaultMessage, args) { const id = args[0]; return `error #${id} ` + getErrorParts(id, args[1], defaultMessage).join(" "); } function _errMsg(...args) { return getErrMsg(void 0, args); } function _preInitErrMsg(...args) { return getErrMsg("\n", args); } // packages/ag-grid-community/src/gridOptionsUtils.ts function isRowModelType(gos, rowModelType) { return gos.get("rowModelType") === rowModelType; } function _isClientSideRowModel(gos, rowModel) { return isRowModelType(gos, "clientSide"); } function _isServerSideRowModel(gos, rowModel) { return isRowModelType(gos, "serverSide"); } function _isDomLayout(gos, domLayout) { return gos.get("domLayout") === domLayout; } function _isRowSelection(gos) { return _getRowSelectionMode(gos) !== void 0; } function _isGetRowHeightFunction(gos) { return typeof gos.get("getRowHeight") === "function"; } function _shouldMaintainColumnOrder(gos, isPivotColumns) { if (isPivotColumns) { return !gos.get("enableStrictPivotColumnOrder"); } return gos.get("maintainColumnOrder"); } function _getRowHeightForNode(beans, rowNode, allowEstimate = false, defaultRowHeight) { const { gos, environment } = beans; if (defaultRowHeight == null) { defaultRowHeight = environment.getDefaultRowHeight(); } if (_isGetRowHeightFunction(gos)) { if (allowEstimate) { return { height: defaultRowHeight, estimated: true }; } const params = { node: rowNode, data: rowNode.data }; const height = gos.getCallback("getRowHeight")(params); if (isNumeric(height)) { if (height === 0) { _warn(23); } return { height: Math.max(1, height), estimated: false }; } } if (rowNode.detail && gos.get("masterDetail")) { return getMasterDetailRowHeight(gos); } const gridOptionsRowHeight = gos.get("rowHeight"); const rowHeight = gridOptionsRowHeight && isNumeric(gridOptionsRowHeight) ? gridOptionsRowHeight : defaultRowHeight; return { height: rowHeight, estimated: false }; } function getMasterDetailRowHeight(gos) { if (gos.get("detailRowAutoHeight")) { return { height: 1, estimated: false }; } const defaultRowHeight = gos.get("detailRowHeight"); if (isNumeric(defaultRowHeight)) { return { height: defaultRowHeight, estimated: false }; } return { height: 300, estimated: false }; } func