UNPKG

@ag-grid-community/core

Version:

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

1,386 lines (1,376 loc) 1.56 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); // community-modules/core/src/main.ts var main_exports = {}; __export(main_exports, { ALWAYS_SYNC_GLOBAL_EVENTS: () => ALWAYS_SYNC_GLOBAL_EVENTS, AbstractHeaderCellCtrl: () => AbstractHeaderCellCtrl, AgAbstractField: () => AgAbstractField, 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, AnimateShowChangeCellRenderer: () => AnimateShowChangeCellRenderer, AnimateSlideCellRenderer: () => AnimateSlideCellRenderer, AnimationFrameService: () => AnimationFrameService, AriaAnnouncementService: () => AriaAnnouncementService, AutoScrollService: () => AutoScrollService, AutoWidthCalculator: () => AutoWidthCalculator, BarColumnLabelPlacement: () => BarColumnLabelPlacement, BaseComponentWrapper: () => BaseComponentWrapper, BeanStub: () => BeanStub, BodyDropPivotTarget: () => BodyDropPivotTarget, BodyDropTarget: () => BodyDropTarget, CellComp: () => CellComp, CellCtrl: () => CellCtrl, CellNavigationService: () => CellNavigationService, CellPositionUtils: () => CellPositionUtils, CellRangeType: () => CellRangeType, ChangedPath: () => ChangedPath, ChartMappings: () => ChartMappings, CheckboxCellEditor: () => CheckboxCellEditor, CheckboxCellRenderer: () => CheckboxCellRenderer, CheckboxSelectionComponent: () => CheckboxSelectionComponent, ClientSideRowModelSteps: () => ClientSideRowModelSteps, ColumnApplyStateService: () => ColumnApplyStateService, ColumnAutosizeService: () => ColumnAutosizeService, ColumnFactory: () => ColumnFactory, ColumnKeyCreator: () => ColumnKeyCreator, ColumnModel: () => ColumnModel, ColumnMoveService: () => ColumnMoveService, ColumnNameService: () => ColumnNameService, ColumnSizeService: () => ColumnSizeService, CommunityFeaturesModule: () => CommunityFeaturesModule, Component: () => Component, ComponentUtil: () => ComponentUtil, Context: () => Context, CssClassManager: () => CssClassManager, CtrlsService: () => CtrlsService, DataTypeService: () => DataTypeService, DateCellEditor: () => DateCellEditor, DateFilter: () => DateFilter, DateStringCellEditor: () => DateStringCellEditor, DragAndDropService: () => DragAndDropService, DragService: () => DragService, DragSourceType: () => DragSourceType, Environment: () => Environment, EventService: () => EventService, ExcelFactoryMode: () => ExcelFactoryMode, ExpansionService: () => ExpansionService, ExpressionService: () => ExpressionService, FakeHScrollComp: () => FakeHScrollComp, FakeVScrollComp: () => FakeVScrollComp, FilterManager: () => FilterManager, FilterWrapperComp: () => FilterWrapperComp, FocusService: () => FocusService, FuncColsService: () => FuncColsService, GROUP_AUTO_COLUMN_ID: () => GROUP_AUTO_COLUMN_ID, Grid: () => Grid, GridBodyComp: () => GridBodyComp, GridBodyCtrl: () => GridBodyCtrl, GridComp: () => GridComp, GridCoreCreator: () => GridCoreCreator, GridCoreModule: () => GridCoreModule, GridCtrl: () => GridCtrl, GridHeaderComp: () => GridHeaderComp, GridHeaderCtrl: () => GridHeaderCtrl, GridOptionsService: () => GridOptionsService, GroupInstanceIdCreator: () => GroupInstanceIdCreator, HeaderCellCtrl: () => HeaderCellCtrl, HeaderFilterCellComp: () => HeaderFilterCellComp, HeaderFilterCellCtrl: () => HeaderFilterCellCtrl, HeaderGroupCellCtrl: () => HeaderGroupCellCtrl, HeaderNavigationDirection: () => HeaderNavigationDirection, HeaderNavigationService: () => HeaderNavigationService, HeaderPositionUtils: () => HeaderPositionUtils, HeaderRowComp: () => HeaderRowComp, HeaderRowContainerComp: () => HeaderRowContainerComp, HeaderRowContainerCtrl: () => HeaderRowContainerCtrl, HeaderRowCtrl: () => HeaderRowCtrl, HeaderRowType: () => HeaderRowType, HorizontalDirection: () => HorizontalDirection, HorizontalResizeService: () => HorizontalResizeService, KeyCode: () => KeyCode, LargeTextCellEditor: () => LargeTextCellEditor, LayoutCssClasses: () => LayoutCssClasses, LocalEventService: () => LocalEventService, LocaleService: () => LocaleService, ManagedFocusFeature: () => ManagedFocusFeature, MenuService: () => MenuService, ModuleNames: () => ModuleNames, ModuleRegistry: () => ModuleRegistry, MouseEventService: () => MouseEventService, MoveColumnFeature: () => MoveColumnFeature, NavigationService: () => NavigationService, NumberCellEditor: () => NumberCellEditor, NumberFilter: () => NumberFilter, NumberSequence: () => NumberSequence, OverlayWrapperComponent: () => OverlayWrapperComponent, PinnedRowModel: () => PinnedRowModel, PivotResultColsService: () => PivotResultColsService, PopupComponent: () => PopupComponent, PopupEditorWrapper: () => PopupEditorWrapper, PopupService: () => PopupService, PositionableFeature: () => PositionableFeature, PropertyKeys: () => PropertyKeys, ProvidedFilter: () => ProvidedFilter, RefPlaceholder: () => RefPlaceholder, ResizeObserverService: () => ResizeObserverService, RowContainerComp: () => RowContainerComp, RowContainerCtrl: () => RowContainerCtrl, RowCtrl: () => RowCtrl, RowDragComp: () => RowDragComp, RowHighlightPosition: () => RowHighlightPosition, RowModelHelperService: () => RowModelHelperService, RowNode: () => RowNode, RowNodeBlock: () => RowNodeBlock, RowNodeBlockLoader: () => RowNodeBlockLoader, RowNodeSorter: () => RowNodeSorter, RowPositionUtils: () => RowPositionUtils, RowRenderer: () => RowRenderer, ScalarFilter: () => ScalarFilter, ScrollVisibleService: () => ScrollVisibleService, SelectCellEditor: () => SelectCellEditor, SelectableService: () => SelectableService, SelectionHandleType: () => SelectionHandleType, ServerSideTransactionResultStatus: () => ServerSideTransactionResultStatus, SetLeftFeature: () => SetLeftFeature, SimpleFilter: () => SimpleFilter, SortController: () => SortController, SortIndicatorComp: () => SortIndicatorComp, SortIndicatorSelector: () => SortIndicatorSelector, StandardMenuFactory: () => StandardMenuFactory, StylingService: () => StylingService, TabGuardClassNames: () => TabGuardClassNames, TabGuardComp: () => TabGuardComp, TabGuardCtrl: () => TabGuardCtrl, TabGuardFeature: () => TabGuardFeature, TextCellEditor: () => TextCellEditor, TextFilter: () => TextFilter, TextFloatingFilter: () => TextFloatingFilter, TooltipFeature: () => TooltipFeature, TooltipStateManager: () => TooltipStateManager, TouchListener: () => TouchListener, UserComponentFactory: () => UserComponentFactory, UserComponentRegistry: () => UserComponentRegistry, ValueCache: () => ValueCache, ValueService: () => ValueService, VanillaFrameworkOverrides: () => VanillaFrameworkOverrides, VerticalDirection: () => VerticalDirection, VisibleColsService: () => VisibleColsService, _ColumnFilterModule: () => ColumnFilterModule, _CommunityMenuApiModule: () => CommunityMenuApiModule, _CsrmSsrmSharedApiModule: () => CsrmSsrmSharedApiModule, _EditCoreModule: () => EditCoreModule, _EmptyBean: () => EmptyBean, _FilterCoreModule: () => FilterCoreModule, _FloatingFilterModule: () => FloatingFilterModule, _ReadOnlyFloatingFilterModule: () => ReadOnlyFloatingFilterModule, _RowNodeBlockModule: () => RowNodeBlockModule, _SsrmInfiniteSharedApiModule: () => SsrmInfiniteSharedApiModule, _addFocusableContainerListener: () => _addFocusableContainerListener, _areEqual: () => _areEqual, _bindCellRendererToHtmlElement: () => _bindCellRendererToHtmlElement, _capitalise: () => _capitalise, _clearElement: () => _clearElement, _cloneObject: () => _cloneObject, _combineAttributesAndGridOptions: () => _combineAttributesAndGridOptions, _compose: () => _compose, _createIcon: () => _createIcon, _createIconNoSpan: () => _createIconNoSpan, _debounce: () => _debounce, _defaultComparator: () => _defaultComparator, _defineModule: () => _defineModule, _doOnce: () => _doOnce, _errorOnce: () => _errorOnce, _escapeString: () => _escapeString, _exists: () => _exists, _existsAndNotEmpty: () => _existsAndNotEmpty, _flatten: () => _flatten, _forEachReverse: () => _forEachReverse, _formatNumberCommas: () => _formatNumberCommas, _formatNumberTwoDecimalPlacesAndCommas: () => _formatNumberTwoDecimalPlacesAndCommas, _fuzzySuggestions: () => _fuzzySuggestions, _getAbsoluteHeight: () => _getAbsoluteHeight, _getAbsoluteWidth: () => _getAbsoluteWidth, _getActiveDomElement: () => _getActiveDomElement, _getAllValuesInObject: () => _getAllValuesInObject, _getAriaPosInSet: () => _getAriaPosInSet, _getCtrlForEventTarget: () => _getCtrlForEventTarget, _getDocument: () => _getDocument, _getFillHandle: () => _getFillHandle, _getGlobalGridOption: () => _getGlobalGridOption, _getGrandTotalRow: () => _getGrandTotalRow, _getGroupAggFiltering: () => _getGroupAggFiltering, _getGroupSelection: () => _getGroupSelection, _getGroupSelectsDescendants: () => _getGroupSelectsDescendants, _getGroupTotalRowCallback: () => _getGroupTotalRowCallback, _getHeaderCheckbox: () => _getHeaderCheckbox, _getHeaderClassesFromColDef: () => _getHeaderClassesFromColDef, _getInnerHeight: () => _getInnerHeight, _getInnerWidth: () => _getInnerWidth, _getIsRowSelectable: () => _getIsRowSelectable, _getRowContainerOptions: () => _getRowContainerOptions, _getRowHeightAsNumber: () => _getRowHeightAsNumber, _getRowHeightForNode: () => _getRowHeightForNode, _getRowIdCallback: () => _getRowIdCallback, _getRowSelectionMode: () => _getRowSelectionMode, _getSuppressMultiRanges: () => _getSuppressMultiRanges, _getToolPanelClassesFromColDef: () => _getToolPanelClassesFromColDef, _includes: () => _includes, _insertArrayIntoArray: () => _insertArrayIntoArray, _insertIntoArray: () => _insertIntoArray, _isAnimateRows: () => _isAnimateRows, _isCellSelectionEnabled: () => _isCellSelectionEnabled, _isClientSideRowModel: () => _isClientSideRowModel, _isColumnsSortingCoupledToGroup: () => _isColumnsSortingCoupledToGroup, _isDomLayout: () => _isDomLayout, _isElementInEventPath: () => _isElementInEventPath, _isEventFromPrintableCharacter: () => _isEventFromPrintableCharacter, _isGetRowHeightFunction: () => _isGetRowHeightFunction, _isGroupMultiAutoColumn: () => _isGroupMultiAutoColumn, _isGroupUseEntireRow: () => _isGroupUseEntireRow, _isIOSUserAgent: () => _isIOSUserAgent, _isMultiRowSelection: () => _isMultiRowSelection, _isNodeOrElement: () => _isNodeOrElement, _isNothingFocused: () => _isNothingFocused, _isRowSelection: () => _isRowSelection, _isServerSideRowModel: () => _isServerSideRowModel, _isStopPropagationForAgGrid: () => _isStopPropagationForAgGrid, _isUsingNewCellSelectionAPI: () => _isUsingNewCellSelectionAPI, _isUsingNewRowSelectionAPI: () => _isUsingNewRowSelectionAPI, _isVisible: () => _isVisible, _iterateObject: () => _iterateObject, _jsonEquals: () => _jsonEquals, _last: () => _last, _loadTemplate: () => _loadTemplate, _log: () => _log, _makeNull: () => _makeNull, _mergeDeep: () => _mergeDeep, _missing: () => _missing, _missingOrEmpty: () => _missingOrEmpty, _parseDateTimeFromString: () => _parseDateTimeFromString, _processOnChange: () => _processOnChange, _radioCssClass: () => _radioCssClass, _removeAriaExpanded: () => _removeAriaExpanded, _removeAriaSort: () => _removeAriaSort, _removeFromArray: () => _removeFromArray, _removeFromParent: () => _removeFromParent, _removeRepeatsFromArray: () => _removeRepeatsFromArray, _serialiseDate: () => _serialiseDate, _setAriaActiveDescendant: () => _setAriaActiveDescendant, _setAriaChecked: () => _setAriaChecked, _setAriaColCount: () => _setAriaColCount, _setAriaColIndex: () => _setAriaColIndex, _setAriaColSpan: () => _setAriaColSpan, _setAriaControls: () => _setAriaControls, _setAriaDescribedBy: () => _setAriaDescribedBy, _setAriaDisabled: () => _setAriaDisabled, _setAriaExpanded: () => _setAriaExpanded, _setAriaHidden: () => _setAriaHidden, _setAriaLabel: () => _setAriaLabel, _setAriaLabelledBy: () => _setAriaLabelledBy, _setAriaLevel: () => _setAriaLevel, _setAriaPosInSet: () => _setAriaPosInSet, _setAriaRole: () => _setAriaRole, _setAriaRowCount: () => _setAriaRowCount, _setAriaRowIndex: () => _setAriaRowIndex, _setAriaSelected: () => _setAriaSelected, _setAriaSetSize: () => _setAriaSetSize, _setAriaSort: () => _setAriaSort, _setDisabled: () => _setDisabled, _setDisplayed: () => _setDisplayed, _setFixedWidth: () => _setFixedWidth, _setVisible: () => _setVisible, _shallowCompare: () => _shallowCompare, _stopPropagationForAgGrid: () => _stopPropagationForAgGrid, _toStringOrNull: () => _toStringOrNull, _unwrapUserComp: () => _unwrapUserComp, _utf8_encode: () => _utf8_encode, _values: () => _values, _waitUntil: () => _waitUntil, _warnOnce: () => _warnOnce, createGrid: () => createGrid, getDefaultFloatingFilterType: () => getDefaultFloatingFilterType, isColumn: () => isColumn, isColumnControlsCol: () => isColumnControlsCol, isColumnGroup: () => isColumnGroup, isColumnGroupAutoCol: () => isColumnGroupAutoCol, isProvidedColumnGroup: () => isProvidedColumnGroup, isSelectionUIEvent: () => isSelectionUIEvent, provideGlobalGridOptions: () => provideGlobalGridOptions }); module.exports = __toCommonJS(main_exports); // community-modules/core/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) { const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners; listenerMap.delete(eventType); } } addGlobalListener(listener, async = false) { (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener); } removeGlobalListener(listener, async = false) { (async ? this.globalAsyncListeners : this.globalSyncListeners).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 processEventListeners = (listeners2, originalListeners2) => listeners2.forEach((listener) => { if (!originalListeners2.has(listener)) { return; } const callback = this.frameworkOverrides ? () => this.frameworkOverrides.wrapIncoming(() => listener(event)) : () => listener(event); if (async) { this.dispatchAsync(callback); } else { callback(); } }); const originalListeners = this.getListeners(eventType, async, false) ?? /* @__PURE__ */ new Set(); const listeners = new Set(originalListeners); if (listeners.size > 0) { processEventListeners(listeners, originalListeners); } const globalListeners = new Set( async ? this.globalAsyncListeners : this.globalSyncListeners ); globalListeners.forEach((listener) => { const callback = this.frameworkOverrides ? () => this.frameworkOverrides.wrapIncoming(() => listener(eventType, event)) : () => listener(eventType, event); if (async) { this.dispatchAsync(callback); } else { callback(); } }); } // 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()); } }; // community-modules/core/src/modules/moduleNames.ts var ModuleNames = /* @__PURE__ */ ((ModuleNames2) => { ModuleNames2["CommunityCoreModule"] = "@ag-grid-community/core"; ModuleNames2["InfiniteRowModelModule"] = "@ag-grid-community/infinite-row-model"; ModuleNames2["ClientSideRowModelModule"] = "@ag-grid-community/client-side-row-model"; ModuleNames2["CsvExportModule"] = "@ag-grid-community/csv-export"; ModuleNames2["EnterpriseCoreModule"] = "@ag-grid-enterprise/core"; ModuleNames2["RowGroupingModule"] = "@ag-grid-enterprise/row-grouping"; ModuleNames2["ColumnsToolPanelModule"] = "@ag-grid-enterprise/column-tool-panel"; ModuleNames2["FiltersToolPanelModule"] = "@ag-grid-enterprise/filter-tool-panel"; ModuleNames2["MenuModule"] = "@ag-grid-enterprise/menu"; ModuleNames2["SetFilterModule"] = "@ag-grid-enterprise/set-filter"; ModuleNames2["MultiFilterModule"] = "@ag-grid-enterprise/multi-filter"; ModuleNames2["StatusBarModule"] = "@ag-grid-enterprise/status-bar"; ModuleNames2["SideBarModule"] = "@ag-grid-enterprise/side-bar"; ModuleNames2["RangeSelectionModule"] = "@ag-grid-enterprise/range-selection"; ModuleNames2["MasterDetailModule"] = "@ag-grid-enterprise/master-detail"; ModuleNames2["RichSelectModule"] = "@ag-grid-enterprise/rich-select"; ModuleNames2["GridChartsModule"] = "@ag-grid-enterprise/charts"; ModuleNames2["ViewportRowModelModule"] = "@ag-grid-enterprise/viewport-row-model"; ModuleNames2["ServerSideRowModelModule"] = "@ag-grid-enterprise/server-side-row-model"; ModuleNames2["ExcelExportModule"] = "@ag-grid-enterprise/excel-export"; ModuleNames2["ClipboardModule"] = "@ag-grid-enterprise/clipboard"; ModuleNames2["SparklinesModule"] = "@ag-grid-enterprise/sparklines"; ModuleNames2["AdvancedFilterModule"] = "@ag-grid-enterprise/advanced-filter"; ModuleNames2["AngularModule"] = "@ag-grid-community/angular"; ModuleNames2["ReactModule"] = "@ag-grid-community/react"; ModuleNames2["VueModule"] = "@ag-grid-community/vue"; return ModuleNames2; })(ModuleNames || {}); // community-modules/core/src/utils/function.ts var doOnceFlags = {}; function _doOnce(func, key) { if (doOnceFlags[key]) { return; } func(); doOnceFlags[key] = true; } function _log(message, ...args) { 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("")); } function _isFunction(val) { return !!(val && val.constructor && val.call && val.apply); } function _executeInAWhile(funcs) { _executeAfter(funcs, 400); } var executeNextVMTurnFuncs = []; var executeNextVMTurnPending = false; function _executeNextVMTurn(func) { executeNextVMTurnFuncs.push(func); if (executeNextVMTurnPending) { return; } executeNextVMTurnPending = true; window.setTimeout(() => { const funcsCopy = executeNextVMTurnFuncs.slice(); executeNextVMTurnFuncs.length = 0; executeNextVMTurnPending = false; funcsCopy.forEach((func2) => func2()); }, 0); } function _executeAfter(funcs, milliseconds = 0) { if (funcs.length > 0) { window.setTimeout(() => funcs.forEach((func) => func()), milliseconds); } } function _debounce(func, delay) { let timeout; return function(...args) { const context = this; window.clearTimeout(timeout); timeout = window.setTimeout(function() { func.apply(context, args); }, delay); }; } function _throttle(func, wait) { let previousCall = 0; return function(...args) { const context = this; const currentCall = (/* @__PURE__ */ new Date()).getTime(); if (currentCall - previousCall < wait) { return; } previousCall = currentCall; func.apply(context, args); }; } function _waitUntil(condition, callback, timeout = 100, timeoutMessage) { const timeStamp = (/* @__PURE__ */ new Date()).getTime(); let interval = null; let executed = false; const internalCallback = () => { const reachedTimeout = (/* @__PURE__ */ new Date()).getTime() - 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); } } function _compose(...fns) { return (arg) => fns.reduce((composed, f) => f(composed), arg); } // community-modules/core/src/utils/generic.ts function _makeNull(value) { if (value == null || value === "") { return null; } return value; } function _exists(value, allowEmptyString = false) { return value != null && (value !== "" || allowEmptyString); } function _missing(value) { return !_exists(value); } function _missingOrEmpty(value) { return value == null || value.length === 0; } function _toStringOrNull(value) { return value != null && typeof value.toString === "function" ? value.toString() : null; } function _attrToNumber(value) { if (value === void 0) { return; } if (value === null || value === "") { return null; } if (typeof value === "number") { return isNaN(value) ? void 0 : value; } const valueParsed = parseInt(value, 10); return isNaN(valueParsed) ? void 0 : valueParsed; } function _attrToBoolean(value) { if (value === void 0) { return; } if (value === null || value === "") { return false; } return toBoolean(value); } function toBoolean(value) { if (typeof value === "boolean") { return value; } if (typeof value === "string") { return value.toUpperCase() === "TRUE" || value == ""; } return false; } 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); } } function _values(object) { if (object instanceof Set || object instanceof Map) { const arr = []; object.forEach((value) => arr.push(value)); return arr; } return Object.values(object); } // community-modules/core/src/gridOptionsUtils.ts function isRowModelType(gos, rowModelType) { return gos.get("rowModelType") === rowModelType; } function _isClientSideRowModel(gos) { return isRowModelType(gos, "clientSide"); } function _isServerSideRowModel(gos) { return isRowModelType(gos, "serverSide"); } function _isDomLayout(gos, domLayout) { return gos.get("domLayout") === domLayout; } function _isRowSelection(gos) { return _getRowSelectionMode(gos) !== void 0; } function _useAsyncEvents(gos) { return !gos.get("suppressAsyncEvents"); } 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(gos, rowNode, allowEstimate = false, defaultRowHeight) { if (defaultRowHeight == null) { defaultRowHeight = gos.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) { _warnOnce( "The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead." ); } 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 }; } function _getRowHeightAsNumber(gos) { const { environment } = gos; const gridOptionsRowHeight = gos.get("rowHeight"); if (!gridOptionsRowHeight || _missing(gridOptionsRowHeight)) { return environment.getDefaultRowHeight(); } const rowHeight = environment.refreshRowHeightVariable(); if (rowHeight !== -1) { return rowHeight; } _warnOnce("row height must be a number if not using standard row model"); return environment.getDefaultRowHeight(); } function isNumeric(value) { return !isNaN(value) && typeof value === "number" && isFinite(value); } function _getDomData(gos, element, key) { const domData = element[gos.getDomDataKey()]; return domData ? domData[key] : void 0; } function _setDomData(gos, element, key, value) { const domDataKey = gos.getDomDataKey(); let domData = element[domDataKey]; if (_missing(domData)) { domData = {}; element[domDataKey] = domData; } domData[key] = value; } function _getDocument(gos) { let result = null; const gridOptionsGetDocument = gos.get("getDocument"); if (gridOptionsGetDocument && _exists(gridOptionsGetDocument)) { result = gridOptionsGetDocument(); } else if (gos.eGridDiv) { result = gos.eGridDiv.ownerDocument; } if (result && _exists(result)) { return result; } return document; } function _getWindow(gos) { const eDocument = _getDocument(gos); return eDocument.defaultView || window; } function _getRootNode(gos) { return gos.eGridDiv.getRootNode(); } function _getActiveDomElement(gos) { return _getRootNode(gos).activeElement; } function _isNothingFocused(gos) { const eDocument = _getDocument(gos); const activeEl = _getActiveDomElement(gos); return activeEl === null || activeEl === eDocument.body; } function _isAnimateRows(gos) { if (gos.get("ensureDomOrder")) { return false; } return gos.get("animateRows"); } function _isGroupRowsSticky(gos) { if (gos.get("paginateChildRows") || gos.get("groupHideOpenParents") || _isDomLayout(gos, "print")) { return false; } return true; } function _isColumnsSortingCoupledToGroup(gos) { const autoGroupColumnDef = gos.get("autoGroupColumnDef"); return !autoGroupColumnDef?.comparator && !gos.get("treeData"); } function _getGroupAggFiltering(gos) { const userValue = gos.get("groupAggFiltering"); if (typeof userValue === "function") { return gos.getCallback("groupAggFiltering"); } if (userValue === true) { return () => true; } return void 0; } function _getGrandTotalRow(gos) { const userValue = gos.get("grandTotalRow"); if (userValue) { return userValue; } const legacyValue = gos.get("groupIncludeTotalFooter"); if (legacyValue) { return "bottom"; } return void 0; } function _getGroupTotalRowCallback(gos) { const userValue = gos.get("groupTotalRow"); if (typeof userValue === "function") { return gos.getCallback("groupTotalRow"); } if (userValue) { return () => userValue; } const legacyValue = gos.get("groupIncludeFooter"); if (typeof legacyValue === "function") { const legacyCallback = gos.getCallback("groupIncludeFooter"); return (p) => { return legacyCallback(p) ? "bottom" : void 0; }; } return () => legacyValue ? "bottom" : void 0; } function _isGroupMultiAutoColumn(gos) { if (gos.exists("groupDisplayType")) { return gos.get("groupDisplayType") === "multipleColumns"; } return gos.get("groupHideOpenParents"); } function _isGroupUseEntireRow(gos, pivotMode) { if (pivotMode) { return false; } return gos.get("groupDisplayType") === "groupRows"; } function _getRowIdCallback(gos) { const getRowId = gos.getCallback("getRowId"); if (getRowId === void 0) { return getRowId; } return (params) => { let id = getRowId(params); if (typeof id !== "string") { _warnOnce(`The getRowId callback must return a string. The ID `, id, ` is being cast to a string.`); id = String(id); } return id; }; } function _getCheckboxes(selection) { return selection?.checkboxes ?? true; } function _getHeaderCheckbox(selection) { return selection?.mode === "multiRow" && (selection.headerCheckbox ?? true); } function _getHideDisabledCheckboxes(selection) { return selection?.hideDisabledCheckboxes ?? false; } function _isUsingNewRowSelectionAPI(gos) { const rowSelection = gos.get("rowSelection"); return typeof rowSelection !== "string"; } function _isUsingNewCellSelectionAPI(gos) { return gos.get("cellSelection") !== void 0; } function _getSuppressMultiRanges(gos) { const selection = gos.get("cellSelection"); const useNewAPI = selection !== void 0; if (!useNewAPI) { return gos.get("suppressMultiRangeSelection"); } return typeof selection !== "boolean" ? selection?.suppressMultiRanges ?? false : false; } function _isCellSelectionEnabled(gos) { const selection = gos.get("cellSelection"); const useNewAPI = selection !== void 0; return useNewAPI ? !!selection : gos.get("enableRangeSelection"); } function _isRangeHandleEnabled(gos) { const selection = gos.get("cellSelection"); const useNewAPI = selection !== void 0; if (!useNewAPI) { return gos.get("enableRangeHandle"); } return typeof selection !== "boolean" ? selection.handle?.mode === "range" : false; } function _isFillHandleEnabled(gos) { const selection = gos.get("cellSelection"); const useNewAPI = selection !== void 0; if (!useNewAPI) { return gos.get("enableFillHandle"); } return typeof selection !== "boolean" ? selection.handle?.mode === "fill" : false; } function _getFillHandle(gos) { const selection = gos.get("cellSelection"); const useNewAPI = selection !== void 0; if (!useNewAPI) { return { mode: "fill", setFillValue: gos.get("fillOperation"), direction: gos.get("fillHandleDirection"), suppressClearOnFillReduction: gos.get("suppressClearOnFillReduction") }; } return typeof selection !== "boolean" && selection.handle?.mode === "fill" ? selection.handle : void 0; } function _getEnableClickSelection(gos) { const selection = gos.get("rowSelection") ?? "single"; if (typeof selection === "string") { const suppressRowClickSelection = gos.get("suppressRowClickSelection"); const suppressRowDeselection = gos.get("suppressRowDeselection"); if (suppressRowClickSelection && suppressRowDeselection) { return false; } else if (suppressRowClickSelection) { return "enableDeselection"; } else if (suppressRowDeselection) { return "enableSelection"; } else { return true; } } return selection.mode === "singleRow" || selection.mode === "multiRow" ? selection.enableClickSelection ?? false : false; } function _getEnableSelection(gos) { const enableClickSelection = _getEnableClickSelection(gos); return enableClickSelection === true || enableClickSelection === "enableSelection"; } function _getEnableDeselection(gos) { const enableClickSelection = _getEnableClickSelection(gos); return enableClickSelection === true || enableClickSelection === "enableDeselection"; } function _getIsRowSelectable(gos) { const selection = gos.get("rowSelection"); if (typeof selection === "string") { return gos.get("isRowSelectable"); } return selection?.isRowSelectable; } function _getRowSelectionMode(gos) { const selection = gos.get("rowSelection"); if (typeof selection === "string") { switch (selection) { case "multiple": return "multiRow"; case "single": return "singleRow"; default: return; } } return selection?.mode; } function _isMultiRowSelection(gos) { const mode = _getRowSelectionMode(gos); return mode === "multiRow"; } function _getEnableSelectionWithoutKeys(gos) { const selection = gos.get("rowSelection"); if (typeof selection === "string") { return gos.get("rowMultiSelectWithClick"); } return selection?.enableSelectionWithoutKeys ?? false; } function _getGroupSelection(gos) { const selection = gos.get("rowSelection"); if (typeof selection === "string") { const groupSelectsChildren = gos.get("groupSelectsChildren"); const groupSelectsFiltered = gos.get("groupSelectsFiltered"); if (groupSelectsChildren && groupSelectsFiltered) { return "filteredDescendants"; } else if (groupSelectsChildren) { return "descendants"; } else { return "self"; } } return selection?.mode === "multiRow" ? selection.groupSelects : void 0; } function _getGroupSelectsDescendants(gos) { const groupSelection = _getGroupSelection(gos); return groupSelection === "descendants" || groupSelection === "filteredDescendants"; } function _isSetFilterByDefault(gos) { return gos.isModuleRegistered("@ag-grid-enterprise/set-filter" /* SetFilterModule */) && !gos.get("suppressSetFilterByDefault"); } // community-modules/core/src/utils/array.ts function _existsAndNotEmpty(value) { return value != null && value.length > 0; } function _last(arr) { if (!arr || !arr.length) { return; } return arr[arr.length - 1]; } function _areEqual(a, b, comparator) { if (a == null && b == null) { return true; } return a != null && b != null && a.length === b.length && a.every((value, index) => comparator ? comparator(value, b[index]) : b[index] === value); } function _shallowCompare(arr1, arr2) { return _areEqual(arr1, arr2); } function _sortNumerically(array) { return array.sort((a, b) => a - b); } function _removeRepeatsFromArray(array, object) { if (!array) { return; } for (let index = array.length - 2; index >= 0; index--) { const thisOneMatches = array[index] === object; const nextOneMatches = array[index + 1] === object; if (thisOneMatches && nextOneMatches) { array.splice(index + 1, 1); } } } function _removeFromUnorderedArray(array, object) { const index = array.indexOf(object); if (index >= 0) { array[index] = array[array.length - 1]; array.pop(); } } function _removeFromArray(array, object) { const index = array.indexOf(object); if (index >= 0) { array.splice(index, 1); } } function _removeAllFromUnorderedArray(array, toRemove) { for (let i = 0; i < toRemove.length; i++) { _removeFromUnorderedArray(array, toRemove[i]); } } function _removeAllFromArray(array, toRemove) { for (let i = 0; i < toRemove.length; i++) { _removeFromArray(array, toRemove[i]); } } function _insertIntoArray(array, object, toIndex) { array.splice(toIndex, 0, object); } function _insertArrayIntoArray(dest, src, toIndex) { if (dest == null || src == null) { return; } for (let i = src.length - 1; i >= 0; i--) { const item = src[i]; _insertIntoArray(dest, item, toIndex); } } function _moveInArray(array, objectsToMove, toIndex) { _removeAllFromArray(array, objectsToMove); objectsToMove.slice().reverse().forEach((obj) => _insertIntoArray(array, obj, toIndex)); } function _includes(array, value) { return array.indexOf(value) > -1; } function _flatten(arrayOfArrays) { return arrayOfArrays?.flatMap((t) => t) ?? []; } function _pushAll(target, source) { if (source == null || target == null) { return; } source.forEach((value) => target.push(value)); } function _forEachReverse(list, action) { if (list == null) { return; } for (let i = list.length - 1; i >= 0; i--) { action(list[i], i); } } // community-modules/core/src/utils/event.ts var AG_GRID_STOP_PROPAGATION = "__ag_Grid_Stop_Propagation"; var PASSIVE_EVENTS = ["touchstart", "touchend", "touchmove", "touchcancel", "scroll"]; var supports = {}; function _stopPropagationForAgGrid(event) { event[AG_GRID_STOP_PROPAGATION] = true; } function _isStopPropagationForAgGrid(event) { return event[AG_GRID_STOP_PROPAGATION] === true; } var _isEventSupported = /* @__PURE__ */ (() => { const tags = { select: "input", change: "input", submit: "form", reset: "form", error: "img", load: "img", abort: "img" }; const eventChecker = (eventName) => { if (typeof supports[eventName] === "boolean") { return supports[eventName]; } const el = document.createElement(tags[eventName] || "div"); eventName = "on" + eventName; return supports[eventName] = eventName in el; }; return eventChecker; })(); function _getCtrlForEventTarget(gos, eventTarget, type) { let sourceElement = eventTarget; while (sourceElement) { const renderedComp = _getDomData(gos, sourceElement, type); if (renderedComp) { return renderedComp; } sourceElement = sourceElement.parentElement; } return null; } function _isElementInEventPath(element, event) { if (!event || !element) { return false; } return _getEventPath(event).indexOf(element) >= 0; } function _createEventPath(event) { const res = []; let pointer = event.target; while (pointer) { res.push(pointer); pointer = pointer.parentElement; } return res; } function _getEventPath(event) { const eventNoType = event; if (eventNoType.path) { return eventNoType.path; } if (eventNoType.composedPath) { return eventNoType.composedPath(); } return _createEventPath(eventNoType); } function _addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) { const isPassive = _includes(PASSIVE_EVENTS, event); const options = isPassive ? { passive: true } : void 0; if (frameworkOverrides && frameworkOverrides.addEventListener) { frameworkOverrides.addEventListener(eElement, event, listener, options); } } // community-modules/core/src/context/beanStub.ts var BeanStub = class { constructor() { // not named context to allow children to use 'context' as a variable name this.destroyFunctions = []; this.destroyed = false; // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive // prevents vue from creating proxies for created objects and prevents identity related issues this.__v_skip = true; this.propertyListenerId = 0; // Enable multiple grid properties to be updated together by the user but only trigger shared logic once. // Closely related to logic in ComponentUtil.ts this.lastChangeSetIdLookup = {}; this.isAlive = () => !this.destroyed; } preWireBeans(beans) { this.frameworkOverrides = beans.frameworkOverrides; this.stubContext = beans.context; this.eventService = beans.eventService; this.gos = beans.gos; this.localeService = beans.localeService; } // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed // points to a bean or component that was not properly disposed of. // constructor() { // setTimeout(()=> { // if (this.isAlive()) { // let prototype: any = Object.getPrototypeOf(this); // const constructor: any = prototype.constructor; // const constructorString = constructor.toString(); // const beanName = constructorString.substring(9, constructorString.indexOf("(")); // console.log('is alive ' + beanName); // } // }, 5000); // } // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean getFrameworkOverrides() { return this.frameworkOverrides; } destroy() { for (let i = 0; i < this.destroyFunctions.length; i++) { this.destroyFunctions[i](); } this.destroyFunctions.length = 0; this.destroyed = true; this.dispatchLocalEvent({ type: "destroyed" }); } // The typing of AgEventListener<any, any, any> is not ideal, but it's the best we can do at the moment to enable // eventService to have the best typing at the expense of BeanStub local events /** Add a local event listener against this BeanStub */ addEventListener(eventType, listener, async) { if (!this.localEventService) { this.localEventService = new LocalEventService(); } this.localEventService.addEventListener(eventType, listener, async); } /** Remove a local event listener from this BeanStub */ removeEventListener(eventType, listener, async) { if (this.localEventService) { this.localEventService.removeEventListener(eventType, listener, async); } } dispatchLocalEvent(event) { if (this.localEventService) { this.localEventService.dispatchEvent(event); } } addManagedElementListeners(object, handlers) { return this._setupListeners(object, handlers); } addManagedEventListeners(handlers) { return this._setupListeners(this.eventService, handlers); } addManagedListeners(object, handlers) { return this._setupListeners(object, handlers); } _setupListeners(object, handlers) { const destroyFuncs = []; for (const k in handlers) { const handler = handlers[k]; if (handler) { destroyFuncs.push(this._setupListener(object, k, handler)); } } return destroyFuncs; } _setupListener(object, event, listener) { if (this.destroyed) { return () => null; } if (object instanceof HTMLElement) { _addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener); } else { object.addEventListener(event, listener); } const destroyFunc = () => { object.removeEventListener(event, listener); return null; }; this.destroyFunctions.push(destroyFunc); return () => { destroyFunc(); this.destroyFunctions = this.destroyFunctions.filter((fn) => fn !== destroyFunc); return null; }; } /** * Setup a managed property listener for the given GridOption property. * However, stores the destroy function in the beanStub so that if this bean * is a component the destroy function will be called when the component is destroyed * as opposed to being cleaned up only when the GridOptionsService is destroyed. */ setupGridOptionListener(event, listener) { this.gos.addPropertyEventListener(event, listener); const destroyFunc = () => { this.gos.removePropertyEventListener(event, listener); return null; }; this.destroyFunctions.push(destroyFunc); return () => { destroyFunc(); this.destroyFunctions = this.destroyFunctions.filter((fn) => fn !== destroyFunc); return null; }; } /** * Setup a managed property listener for the given GridOption property. * @param event GridOption property to listen to changes for. * @param listener Listener to run when property value changes */ addManagedPropertyListener(event, listener) { if (this.destroyed) { return () => null; } return this.setupGridOptionListener(event, listener); } /** * Setup managed property listeners for the given set of GridOption properties. * The listener will be run if any of the property changes but will only run once if * multiple of the properties change within the same framework lifecycle event. * Works on the basis that GridOptionsService updates all properties *before* any property change events are fired. * @param events Array of GridOption properties to listen for changes too. * @param listener Shared listener to run if any of the properties change */ addManagedPropertyListeners(events, listener) { if (this.destroyed) { return; } const eventsKey = events.join("-") + this.propertyListenerId++; const wrappedListener = (event) => { if (event.changeSet) { if (event.changeSet && event.changeSet.id === this.lastChangeSetIdLookup[eventsKey]) { return; } this.lastChangeSetIdLookup[eventsKey] = event.changeSet.id; } const propertiesChangeEvent = { type: "gridPropertyChanged", changeSet: event.changeSet, source: event.source }; listener(propertiesChangeEvent); }; events.forEach((event) => this.setupGridOptionListener(event, wrappedListener)); } addDestroyFunc(func) { if (this.isAlive()) { this.destroyFunctions.push(func); } else { func(); } } createManagedBean(bean, context) { const res = this.createBean(bean, context); this.addDestroyFunc(this.destroyBean.bind(this, bean, context)); return res; } createBean(bean, context, afterPreCreateCallback) { return (context || this.stubContext).createBean(bean, afterPreCreateCallback); } /** * Destroys a bean and returns undefined to support destruction and clean up in a single line. * this.dateComp = this.context.destroyBean(this.dateComp); */ destroyBean(bean, context) { return (context || this.stubContext).destroyBean(bean); } /** * Destroys an array of beans and returns an empty array to support destruction and clean up in a single line. * this.dateComps = this.context.destroyBeans(this.dateComps); */ destroyBeans(beans, context) { return (context || this.stubContext).destroyBeans(beans); } }; // community-modules/core/src/entities/agProvidedColumnGroup.ts function isProvidedColumnGroup(col) { return col instanceof AgProvidedColumnGroup; } var AgProvidedCo