@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
155 lines (151 loc) • 10.5 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { useGridInitialization, useGridInitializeState, useGridClipboard, useGridColumnMenu, useGridColumns, columnsStateInitializer, useGridDensity, useGridCsvExport, useGridPrintExport, useGridFilter, filterStateInitializer, useGridFocus, useGridKeyboardNavigation, useGridPagination, paginationStateInitializer, useGridPreferencesPanel, useGridEditing, editingStateInitializer, useGridRows, useGridRowsPreProcessors, rowsStateInitializer, useGridParamsApi, useGridRowSelection, useGridSorting, sortingStateInitializer, useGridScroll, useGridEvents, dimensionsStateInitializer, useGridDimensions, useGridStatePersistence, useGridRowSelectionPreProcessors, columnMenuStateInitializer, densityStateInitializer, focusStateInitializer, preferencePanelStateInitializer, rowsMetaStateInitializer, rowSelectionStateInitializer, useGridColumnReorder, columnReorderStateInitializer, useGridColumnResize, columnResizeStateInitializer, useGridTreeData, useGridTreeDataPreProcessors, useGridColumnPinning, columnPinningStateInitializer, useGridColumnPinningPreProcessors, useGridDetailPanel, detailPanelStateInitializer, useGridDetailPanelPreProcessors, useGridInfiniteLoader, useGridColumnSpanning, useGridRowReorder, useGridRowReorderPreProcessors, useGridRowPinning, useGridRowPinningPreProcessors, rowPinningStateInitializer, useGridColumnGrouping, columnGroupsStateInitializer, useGridLazyLoader, useGridLazyLoaderPreProcessors, useGridDataSourceLazyLoader, useGridInfiniteLoadingIntersection, headerFilteringStateInitializer, useGridHeaderFiltering, virtualizationStateInitializer, useGridVirtualization, useGridDataSourceTreeDataPreProcessors, dataSourceStateInitializer, useGridRowSpanning, rowSpanningStateInitializer, useGridListView, listViewStateInitializer, propsStateInitializer, rowReorderStateInitializer, useFirstRender } from '@mui/x-data-grid-pro/internals';
import { useGridSelector } from '@mui/x-data-grid-pro';
import { useGridDataSourcePremium as useGridDataSource } from "../hooks/features/dataSource/useGridDataSourcePremium.js";
// Premium-only features
import { useGridAggregation, aggregationStateInitializer } from "../hooks/features/aggregation/useGridAggregation.js";
import { useGridAggregationPreProcessors } from "../hooks/features/aggregation/useGridAggregationPreProcessors.js";
import { useGridRowGrouping, rowGroupingStateInitializer } from "../hooks/features/rowGrouping/useGridRowGrouping.js";
import { useGridRowGroupingPreProcessors } from "../hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js";
import { useGridDataSourceRowGroupingPreProcessors } from "../hooks/features/rowGrouping/useGridDataSourceRowGroupingPreProcessors.js";
import { useGridExcelExport } from "../hooks/features/export/useGridExcelExport.js";
import { cellSelectionStateInitializer, useGridCellSelection } from "../hooks/features/cellSelection/useGridCellSelection.js";
import { useGridClipboardImport } from "../hooks/features/clipboard/useGridClipboardImport.js";
import { pivotingStateInitializer, useGridPivoting, useGridPivotingExportState } from "../hooks/features/pivoting/useGridPivoting.js";
import { gridPivotPropsOverridesSelector } from "../hooks/features/pivoting/gridPivotingSelectors.js";
import { useGridAiAssistant, aiAssistantStateInitializer } from "../hooks/features/aiAssistant/useGridAiAssistant.js";
import { useGridSidebar, sidebarStateInitializer } from "../hooks/features/sidebar/useGridSidebar.js";
import { chartsIntegrationStateInitializer, useGridChartsIntegration } from "../hooks/features/chartsIntegration/useGridChartsIntegration.js";
import { historyStateInitializer, useGridHistory } from "../hooks/features/history/useGridHistory.js";
export const useDataGridPremiumComponent = (apiRef, inProps, configuration) => {
const pivotPropsOverrides = useGridSelector(apiRef, gridPivotPropsOverridesSelector);
const props = React.useMemo(() => {
if (pivotPropsOverrides) {
return _extends({}, inProps, pivotPropsOverrides, {
initialState: _extends({}, inProps.initialState, {
columns: undefined
})
});
}
return inProps;
}, [inProps, pivotPropsOverrides]);
useGridInitialization(apiRef, props);
const key = pivotPropsOverrides ? 'pivoting' : undefined;
/**
* Register all pre-processors called during state initialization here.
* Some pre-processors are changing the same part of the state (like the order of the columns).
* Order them in descending order of priority.
* For example, left pinned columns should always render first from the left, so the `hydrateColumns` pre-processor from `useGridColumnPinningPreProcessors` should be called last (after all other `hydrateColumns` pre-processors).
* Similarly, the `hydrateColumns` pre-processor from `useGridRowSelectionPreProcessors` should be called after `useGridRowGroupingPreProcessors` because the selection checkboxes should appear before the grouping columns.
* Desired autogenerated columns order is:
* left pinned columns -> row reordering column -> checkbox column -> tree data / row grouping column -> master detail column -> rest of the columns
*/
useGridDetailPanelPreProcessors(apiRef, props);
useGridRowGroupingPreProcessors(apiRef, props);
useGridDataSourceRowGroupingPreProcessors(apiRef, props);
useGridTreeDataPreProcessors(apiRef, props);
useGridDataSourceTreeDataPreProcessors(apiRef, props);
useGridRowSelectionPreProcessors(apiRef, props);
useGridLazyLoaderPreProcessors(apiRef, props);
useGridRowPinningPreProcessors(apiRef);
useGridAggregationPreProcessors(apiRef, props);
useGridRowReorderPreProcessors(apiRef, props);
useGridColumnPinningPreProcessors(apiRef, props);
useGridRowsPreProcessors(apiRef);
/**
* Register all state initializers here.
*/
useGridInitializeState(propsStateInitializer, apiRef, props);
useGridInitializeState(headerFilteringStateInitializer, apiRef, props, key);
useGridInitializeState(rowGroupingStateInitializer, apiRef, props, key);
useGridInitializeState(aggregationStateInitializer, apiRef, props, key);
useGridInitializeState(rowSelectionStateInitializer, apiRef, props);
useGridInitializeState(rowReorderStateInitializer, apiRef, props);
useGridInitializeState(cellSelectionStateInitializer, apiRef, props);
useGridInitializeState(detailPanelStateInitializer, apiRef, props);
useGridInitializeState(columnPinningStateInitializer, apiRef, props, key);
useGridInitializeState(columnsStateInitializer, apiRef, props, key);
useGridInitializeState(sidebarStateInitializer, apiRef, props);
useGridInitializeState(pivotingStateInitializer, apiRef, props);
useGridInitializeState(rowPinningStateInitializer, apiRef, props);
useGridInitializeState(rowsStateInitializer, apiRef, props);
useGridInitializeState(paginationStateInitializer, apiRef, props);
useGridInitializeState(editingStateInitializer, apiRef, props);
useGridInitializeState(focusStateInitializer, apiRef, props);
useGridInitializeState(sortingStateInitializer, apiRef, props);
useGridInitializeState(preferencePanelStateInitializer, apiRef, props);
useGridInitializeState(filterStateInitializer, apiRef, props);
useGridInitializeState(rowSpanningStateInitializer, apiRef, props);
useGridInitializeState(densityStateInitializer, apiRef, props);
useGridInitializeState(columnReorderStateInitializer, apiRef, props);
useGridInitializeState(columnResizeStateInitializer, apiRef, props);
useGridInitializeState(columnMenuStateInitializer, apiRef, props);
useGridInitializeState(columnGroupsStateInitializer, apiRef, props, key);
useGridInitializeState(virtualizationStateInitializer, apiRef, props);
useGridInitializeState(dataSourceStateInitializer, apiRef, props);
useGridInitializeState(dimensionsStateInitializer, apiRef, props);
useGridInitializeState(rowsMetaStateInitializer, apiRef, props);
useGridInitializeState(listViewStateInitializer, apiRef, props);
useGridInitializeState(aiAssistantStateInitializer, apiRef, props);
useGridInitializeState(chartsIntegrationStateInitializer, apiRef, props);
useGridInitializeState(historyStateInitializer, apiRef, props);
useGridSidebar(apiRef, props);
useGridPivoting(apiRef, props, inProps.columns, inProps.rows);
useGridRowGrouping(apiRef, props);
useGridHeaderFiltering(apiRef, props);
useGridTreeData(apiRef, props);
useGridAggregation(apiRef, props);
useGridKeyboardNavigation(apiRef, props);
useGridRowSelection(apiRef, props);
useGridCellSelection(apiRef, props);
useGridColumnPinning(apiRef, props);
useGridRowPinning(apiRef, props);
useGridColumns(apiRef, props);
useGridRows(apiRef, props, configuration);
useGridRowSpanning(apiRef, props);
useGridParamsApi(apiRef, props, configuration);
useGridDetailPanel(apiRef, props);
useGridColumnSpanning(apiRef);
useGridColumnGrouping(apiRef, props);
useGridClipboardImport(apiRef, props);
useGridEditing(apiRef, props, configuration);
useGridFocus(apiRef, props);
useGridPreferencesPanel(apiRef, props);
useGridFilter(apiRef, props, configuration);
useGridSorting(apiRef, props);
useGridDensity(apiRef, props);
useGridColumnReorder(apiRef, props);
useGridColumnResize(apiRef, props);
useGridPagination(apiRef, props);
useGridRowReorder(apiRef, props);
useGridScroll(apiRef, props);
useGridInfiniteLoader(apiRef, props);
useGridLazyLoader(apiRef, props);
useGridDataSourceLazyLoader(apiRef, props);
useGridInfiniteLoadingIntersection(apiRef, props);
useGridColumnMenu(apiRef);
useGridCsvExport(apiRef, props);
useGridPrintExport(apiRef, props);
useGridExcelExport(apiRef, props);
useGridClipboard(apiRef, props);
useGridDimensions(apiRef, props);
useGridEvents(apiRef, props);
useGridStatePersistence(apiRef);
useGridDataSource(apiRef, props);
useGridVirtualization(apiRef, props);
useGridListView(apiRef, props);
useGridAiAssistant(apiRef, props);
useGridChartsIntegration(apiRef, props);
useGridHistory(apiRef, props);
useGridPivotingExportState(apiRef);
// Should be the last thing to run, because all pre-processors should have been registered by now.
useFirstRender(() => {
apiRef.current.runAppliersForPendingProcessors();
});
React.useEffect(() => {
apiRef.current.runAppliersForPendingProcessors();
});
return props;
};