@mui/x-data-grid 7.0.0-beta.3 → 7.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. package/CHANGELOG.md +226 -15
  2. package/colDef/gridActionsColDef.js +1 -0
  3. package/colDef/gridBooleanColDef.js +1 -0
  4. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  5. package/components/GridScrollbarFillerCell.js +6 -21
  6. package/components/cell/GridCell.js +10 -12
  7. package/components/columnSelection/GridCellCheckboxRenderer.js +1 -2
  8. package/components/containers/GridRootStyles.js +50 -19
  9. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
  10. package/constants/gridClasses.d.ts +24 -8
  11. package/constants/gridClasses.js +1 -1
  12. package/hooks/features/clipboard/useGridClipboard.js +1 -1
  13. package/hooks/features/editing/useGridCellEditing.js +3 -4
  14. package/hooks/features/editing/useGridRowEditing.js +3 -4
  15. package/hooks/features/sorting/useGridSorting.js +1 -2
  16. package/index.js +1 -1
  17. package/internals/index.d.ts +1 -1
  18. package/internals/index.js +1 -1
  19. package/models/colDef/gridColDef.d.ts +6 -0
  20. package/modern/colDef/gridActionsColDef.js +1 -0
  21. package/modern/colDef/gridBooleanColDef.js +1 -0
  22. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
  23. package/modern/components/GridScrollbarFillerCell.js +6 -21
  24. package/modern/components/cell/GridCell.js +10 -12
  25. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +1 -2
  26. package/modern/components/containers/GridRootStyles.js +50 -19
  27. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
  28. package/modern/constants/gridClasses.js +1 -1
  29. package/modern/hooks/features/clipboard/useGridClipboard.js +1 -1
  30. package/modern/hooks/features/editing/useGridCellEditing.js +3 -4
  31. package/modern/hooks/features/editing/useGridRowEditing.js +3 -4
  32. package/modern/hooks/features/sorting/useGridSorting.js +1 -2
  33. package/modern/index.js +1 -1
  34. package/modern/internals/index.js +1 -1
  35. package/modern/utils/keyboardUtils.js +20 -11
  36. package/node/colDef/gridActionsColDef.js +1 -0
  37. package/node/colDef/gridBooleanColDef.js +1 -0
  38. package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
  39. package/node/components/GridScrollbarFillerCell.js +5 -20
  40. package/node/components/cell/GridCell.js +10 -12
  41. package/node/components/columnSelection/GridCellCheckboxRenderer.js +1 -2
  42. package/node/components/containers/GridRootStyles.js +50 -19
  43. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +8 -2
  44. package/node/constants/gridClasses.js +1 -1
  45. package/node/hooks/features/clipboard/useGridClipboard.js +1 -1
  46. package/node/hooks/features/editing/useGridCellEditing.js +2 -3
  47. package/node/hooks/features/editing/useGridRowEditing.js +2 -3
  48. package/node/hooks/features/sorting/useGridSorting.js +1 -2
  49. package/node/index.js +1 -1
  50. package/node/internals/index.js +7 -0
  51. package/node/utils/keyboardUtils.js +25 -20
  52. package/package.json +1 -1
  53. package/utils/keyboardUtils.d.ts +7 -6
  54. package/utils/keyboardUtils.js +20 -11
  55. package/legacy/DataGrid/DataGrid.js +0 -664
  56. package/legacy/DataGrid/index.js +0 -2
  57. package/legacy/DataGrid/useDataGridComponent.js +0 -81
  58. package/legacy/DataGrid/useDataGridProps.js +0 -98
  59. package/legacy/colDef/gridActionsColDef.js +0 -18
  60. package/legacy/colDef/gridBooleanColDef.js +0 -42
  61. package/legacy/colDef/gridBooleanOperators.js +0 -16
  62. package/legacy/colDef/gridCheckboxSelectionColDef.js +0 -33
  63. package/legacy/colDef/gridDateColDef.js +0 -62
  64. package/legacy/colDef/gridDateOperators.js +0 -115
  65. package/legacy/colDef/gridDefaultColumnTypes.js +0 -19
  66. package/legacy/colDef/gridNumericColDef.js +0 -19
  67. package/legacy/colDef/gridNumericOperators.js +0 -145
  68. package/legacy/colDef/gridSingleSelectColDef.js +0 -64
  69. package/legacy/colDef/gridSingleSelectOperators.js +0 -46
  70. package/legacy/colDef/gridStringColDef.js +0 -27
  71. package/legacy/colDef/gridStringOperators.js +0 -112
  72. package/legacy/colDef/index.js +0 -13
  73. package/legacy/components/GridApiContext.js +0 -5
  74. package/legacy/components/GridColumnHeaders.js +0 -94
  75. package/legacy/components/GridDetailPanels.js +0 -4
  76. package/legacy/components/GridFooter.js +0 -42
  77. package/legacy/components/GridHeader.js +0 -13
  78. package/legacy/components/GridHeaders.js +0 -53
  79. package/legacy/components/GridLoadingOverlay.js +0 -21
  80. package/legacy/components/GridNoResultsOverlay.js +0 -14
  81. package/legacy/components/GridNoRowsOverlay.js +0 -23
  82. package/legacy/components/GridPagination.js +0 -85
  83. package/legacy/components/GridPinnedRows.js +0 -4
  84. package/legacy/components/GridRow.js +0 -465
  85. package/legacy/components/GridRowCount.js +0 -63
  86. package/legacy/components/GridScrollbarFillerCell.js +0 -34
  87. package/legacy/components/GridSelectedRowCount.js +0 -66
  88. package/legacy/components/base/GridBody.js +0 -2
  89. package/legacy/components/base/GridFooterPlaceholder.js +0 -12
  90. package/legacy/components/base/GridOverlays.js +0 -122
  91. package/legacy/components/base/index.js +0 -3
  92. package/legacy/components/cell/GridActionsCell.js +0 -294
  93. package/legacy/components/cell/GridActionsCellItem.js +0 -69
  94. package/legacy/components/cell/GridBooleanCell.js +0 -121
  95. package/legacy/components/cell/GridCell.js +0 -350
  96. package/legacy/components/cell/GridEditBooleanCell.js +0 -174
  97. package/legacy/components/cell/GridEditDateCell.js +0 -230
  98. package/legacy/components/cell/GridEditInputCell.js +0 -198
  99. package/legacy/components/cell/GridEditSingleSelectCell.js +0 -231
  100. package/legacy/components/cell/GridSkeletonCell.js +0 -52
  101. package/legacy/components/cell/index.js +0 -9
  102. package/legacy/components/columnHeaders/ColumnHeaderMenuIcon.js +0 -59
  103. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +0 -41
  104. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +0 -132
  105. package/legacy/components/columnHeaders/GridColumnHeaderFilterIconButton.js +0 -93
  106. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +0 -212
  107. package/legacy/components/columnHeaders/GridColumnHeaderSeparator.js +0 -71
  108. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +0 -79
  109. package/legacy/components/columnHeaders/GridColumnHeaderTitle.js +0 -84
  110. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +0 -55
  111. package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +0 -107
  112. package/legacy/components/columnHeaders/GridIconButtonContainer.js +0 -41
  113. package/legacy/components/columnHeaders/index.js +0 -5
  114. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +0 -160
  115. package/legacy/components/columnSelection/GridHeaderCheckbox.js +0 -134
  116. package/legacy/components/columnSelection/index.js +0 -2
  117. package/legacy/components/columnsManagement/GridColumnsManagement.js +0 -307
  118. package/legacy/components/columnsManagement/index.js +0 -1
  119. package/legacy/components/columnsManagement/utils.js +0 -22
  120. package/legacy/components/containers/GridFooterContainer.js +0 -50
  121. package/legacy/components/containers/GridOverlay.js +0 -52
  122. package/legacy/components/containers/GridRoot.js +0 -79
  123. package/legacy/components/containers/GridRootStyles.js +0 -395
  124. package/legacy/components/containers/GridToolbarContainer.js +0 -59
  125. package/legacy/components/containers/index.js +0 -4
  126. package/legacy/components/index.js +0 -19
  127. package/legacy/components/menu/GridMenu.js +0 -132
  128. package/legacy/components/menu/columnMenu/GridColumnHeaderMenu.js +0 -61
  129. package/legacy/components/menu/columnMenu/GridColumnMenu.js +0 -81
  130. package/legacy/components/menu/columnMenu/GridColumnMenuContainer.js +0 -56
  131. package/legacy/components/menu/columnMenu/GridColumnMenuItemProps.js +0 -1
  132. package/legacy/components/menu/columnMenu/GridColumnMenuProps.js +0 -1
  133. package/legacy/components/menu/columnMenu/index.js +0 -9
  134. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.js +0 -21
  135. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.js +0 -41
  136. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.js +0 -60
  137. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.js +0 -41
  138. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +0 -80
  139. package/legacy/components/menu/columnMenu/menuItems/index.js +0 -5
  140. package/legacy/components/menu/index.js +0 -2
  141. package/legacy/components/panel/GridColumnsPanel.js +0 -22
  142. package/legacy/components/panel/GridPanel.js +0 -137
  143. package/legacy/components/panel/GridPanelContent.js +0 -49
  144. package/legacy/components/panel/GridPanelFooter.js +0 -50
  145. package/legacy/components/panel/GridPanelHeader.js +0 -48
  146. package/legacy/components/panel/GridPanelWrapper.js +0 -64
  147. package/legacy/components/panel/GridPreferencesPanel.js +0 -26
  148. package/legacy/components/panel/filterPanel/GridFilterForm.js +0 -528
  149. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +0 -118
  150. package/legacy/components/panel/filterPanel/GridFilterInputDate.js +0 -121
  151. package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -116
  152. package/legacy/components/panel/filterPanel/GridFilterInputMultipleValue.js +0 -102
  153. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +0 -149
  154. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +0 -106
  155. package/legacy/components/panel/filterPanel/GridFilterInputValueProps.js +0 -1
  156. package/legacy/components/panel/filterPanel/GridFilterPanel.js +0 -264
  157. package/legacy/components/panel/filterPanel/filterPanelUtils.js +0 -22
  158. package/legacy/components/panel/filterPanel/index.js +0 -9
  159. package/legacy/components/panel/index.js +0 -7
  160. package/legacy/components/reexportable.js +0 -1
  161. package/legacy/components/toolbar/GridToolbar.js +0 -64
  162. package/legacy/components/toolbar/GridToolbarColumnsButton.js +0 -68
  163. package/legacy/components/toolbar/GridToolbarDensitySelector.js +0 -142
  164. package/legacy/components/toolbar/GridToolbarExport.js +0 -80
  165. package/legacy/components/toolbar/GridToolbarExportContainer.js +0 -105
  166. package/legacy/components/toolbar/GridToolbarFilterButton.js +0 -136
  167. package/legacy/components/toolbar/GridToolbarQuickFilter.js +0 -164
  168. package/legacy/components/toolbar/index.js +0 -7
  169. package/legacy/components/virtualization/GridBottomContainer.js +0 -25
  170. package/legacy/components/virtualization/GridMainContainer.js +0 -20
  171. package/legacy/components/virtualization/GridTopContainer.js +0 -35
  172. package/legacy/components/virtualization/GridVirtualScrollbar.js +0 -129
  173. package/legacy/components/virtualization/GridVirtualScroller.js +0 -93
  174. package/legacy/components/virtualization/GridVirtualScrollerContent.js +0 -35
  175. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +0 -70
  176. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +0 -49
  177. package/legacy/constants/defaultGridSlotsComponents.js +0 -33
  178. package/legacy/constants/envConstants.js +0 -19
  179. package/legacy/constants/gridClasses.js +0 -5
  180. package/legacy/constants/gridDetailPanelToggleField.js +0 -2
  181. package/legacy/constants/index.js +0 -3
  182. package/legacy/constants/localeTextConstants.js +0 -158
  183. package/legacy/context/GridContextProvider.js +0 -21
  184. package/legacy/context/GridRootPropsContext.js +0 -6
  185. package/legacy/context/index.js +0 -1
  186. package/legacy/hooks/core/gridCoreSelector.js +0 -7
  187. package/legacy/hooks/core/index.js +0 -1
  188. package/legacy/hooks/core/pipeProcessing/gridPipeProcessingApi.js +0 -1
  189. package/legacy/hooks/core/pipeProcessing/index.js +0 -4
  190. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +0 -114
  191. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +0 -26
  192. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -26
  193. package/legacy/hooks/core/strategyProcessing/gridStrategyProcessingApi.js +0 -1
  194. package/legacy/hooks/core/strategyProcessing/index.js +0 -3
  195. package/legacy/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.js +0 -18
  196. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +0 -116
  197. package/legacy/hooks/core/useGridApiInitialization.js +0 -124
  198. package/legacy/hooks/core/useGridInitialization.js +0 -26
  199. package/legacy/hooks/core/useGridLocaleText.js +0 -12
  200. package/legacy/hooks/core/useGridLoggerFactory.js +0 -51
  201. package/legacy/hooks/core/useGridRefs.js +0 -13
  202. package/legacy/hooks/core/useGridStateInitialization.js +0 -106
  203. package/legacy/hooks/core/useGridTheme.js +0 -21
  204. package/legacy/hooks/features/clipboard/useGridClipboard.js +0 -92
  205. package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +0 -1
  206. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +0 -24
  207. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +0 -92
  208. package/legacy/hooks/features/columnGrouping/index.js +0 -2
  209. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +0 -140
  210. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +0 -272
  211. package/legacy/hooks/features/columnMenu/columnMenuInterfaces.js +0 -1
  212. package/legacy/hooks/features/columnMenu/columnMenuSelector.js +0 -3
  213. package/legacy/hooks/features/columnMenu/index.js +0 -2
  214. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +0 -108
  215. package/legacy/hooks/features/columnMenu/useGridColumnMenuSlots.js +0 -71
  216. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +0 -9
  217. package/legacy/hooks/features/columns/gridColumnsSelector.js +0 -174
  218. package/legacy/hooks/features/columns/gridColumnsUtils.js +0 -338
  219. package/legacy/hooks/features/columns/index.js +0 -2
  220. package/legacy/hooks/features/columns/useGridColumnSpanning.js +0 -105
  221. package/legacy/hooks/features/columns/useGridColumns.js +0 -319
  222. package/legacy/hooks/features/density/densitySelector.js +0 -10
  223. package/legacy/hooks/features/density/densityState.js +0 -1
  224. package/legacy/hooks/features/density/index.js +0 -2
  225. package/legacy/hooks/features/density/useGridDensity.js +0 -48
  226. package/legacy/hooks/features/dimensions/gridDimensionsApi.js +0 -1
  227. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +0 -3
  228. package/legacy/hooks/features/dimensions/index.js +0 -2
  229. package/legacy/hooks/features/dimensions/useGridDimensions.js +0 -302
  230. package/legacy/hooks/features/editing/gridEditingSelectors.js +0 -4
  231. package/legacy/hooks/features/editing/useGridCellEditing.js +0 -456
  232. package/legacy/hooks/features/editing/useGridEditing.js +0 -145
  233. package/legacy/hooks/features/editing/useGridRowEditing.js +0 -567
  234. package/legacy/hooks/features/events/useGridEvents.js +0 -23
  235. package/legacy/hooks/features/export/serializers/csvSerializer.js +0 -155
  236. package/legacy/hooks/features/export/useGridCsvExport.js +0 -75
  237. package/legacy/hooks/features/export/useGridPrintExport.js +0 -313
  238. package/legacy/hooks/features/export/utils.js +0 -49
  239. package/legacy/hooks/features/filter/gridFilterSelector.js +0 -165
  240. package/legacy/hooks/features/filter/gridFilterState.js +0 -20
  241. package/legacy/hooks/features/filter/gridFilterUtils.js +0 -330
  242. package/legacy/hooks/features/filter/index.js +0 -2
  243. package/legacy/hooks/features/filter/useGridFilter.js +0 -378
  244. package/legacy/hooks/features/focus/gridFocusState.js +0 -1
  245. package/legacy/hooks/features/focus/gridFocusStateSelector.js +0 -31
  246. package/legacy/hooks/features/focus/index.js +0 -2
  247. package/legacy/hooks/features/focus/useGridFocus.js +0 -408
  248. package/legacy/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +0 -10
  249. package/legacy/hooks/features/headerFiltering/index.js +0 -1
  250. package/legacy/hooks/features/headerFiltering/useGridHeaderFiltering.js +0 -93
  251. package/legacy/hooks/features/index.js +0 -16
  252. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +0 -565
  253. package/legacy/hooks/features/pagination/gridPaginationInterfaces.js +0 -1
  254. package/legacy/hooks/features/pagination/gridPaginationSelector.js +0 -115
  255. package/legacy/hooks/features/pagination/gridPaginationUtils.js +0 -31
  256. package/legacy/hooks/features/pagination/index.js +0 -2
  257. package/legacy/hooks/features/pagination/useGridPagination.js +0 -175
  258. package/legacy/hooks/features/preferencesPanel/gridPreferencePanelSelector.js +0 -3
  259. package/legacy/hooks/features/preferencesPanel/gridPreferencePanelState.js +0 -1
  260. package/legacy/hooks/features/preferencesPanel/gridPreferencePanelsValue.js +0 -6
  261. package/legacy/hooks/features/preferencesPanel/index.js +0 -3
  262. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +0 -125
  263. package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +0 -19
  264. package/legacy/hooks/features/rowSelection/index.js +0 -1
  265. package/legacy/hooks/features/rowSelection/useGridRowSelection.js +0 -419
  266. package/legacy/hooks/features/rowSelection/useGridRowSelectionPreProcessors.js +0 -45
  267. package/legacy/hooks/features/rowSelection/utils.js +0 -8
  268. package/legacy/hooks/features/rows/gridRowsInterfaces.js +0 -1
  269. package/legacy/hooks/features/rows/gridRowsMetaSelector.js +0 -3
  270. package/legacy/hooks/features/rows/gridRowsMetaState.js +0 -1
  271. package/legacy/hooks/features/rows/gridRowsSelector.js +0 -90
  272. package/legacy/hooks/features/rows/gridRowsUtils.js +0 -294
  273. package/legacy/hooks/features/rows/index.js +0 -4
  274. package/legacy/hooks/features/rows/useGridParamsApi.js +0 -142
  275. package/legacy/hooks/features/rows/useGridRows.js +0 -466
  276. package/legacy/hooks/features/rows/useGridRowsMeta.js +0 -236
  277. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +0 -82
  278. package/legacy/hooks/features/scroll/useGridScroll.js +0 -133
  279. package/legacy/hooks/features/sorting/gridSortingSelector.js +0 -56
  280. package/legacy/hooks/features/sorting/gridSortingState.js +0 -1
  281. package/legacy/hooks/features/sorting/gridSortingUtils.js +0 -154
  282. package/legacy/hooks/features/sorting/index.js +0 -2
  283. package/legacy/hooks/features/sorting/useGridSorting.js +0 -276
  284. package/legacy/hooks/features/statePersistence/gridStatePersistenceInterface.js +0 -1
  285. package/legacy/hooks/features/statePersistence/index.js +0 -1
  286. package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +0 -25
  287. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -61
  288. package/legacy/hooks/features/virtualization/index.js +0 -2
  289. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +0 -646
  290. package/legacy/hooks/features/virtualization/useGridVirtualization.js +0 -63
  291. package/legacy/hooks/index.js +0 -3
  292. package/legacy/hooks/utils/index.js +0 -9
  293. package/legacy/hooks/utils/useFirstRender.js +0 -8
  294. package/legacy/hooks/utils/useGridApiContext.js +0 -9
  295. package/legacy/hooks/utils/useGridApiEventHandler.js +0 -105
  296. package/legacy/hooks/utils/useGridApiMethod.js +0 -11
  297. package/legacy/hooks/utils/useGridApiRef.js +0 -7
  298. package/legacy/hooks/utils/useGridAriaAttributes.js +0 -25
  299. package/legacy/hooks/utils/useGridInitializeState.js +0 -8
  300. package/legacy/hooks/utils/useGridLogger.js +0 -10
  301. package/legacy/hooks/utils/useGridNativeEventListener.js +0 -32
  302. package/legacy/hooks/utils/useGridPrivateApiContext.js +0 -12
  303. package/legacy/hooks/utils/useGridRootProps.js +0 -9
  304. package/legacy/hooks/utils/useGridSelector.js +0 -54
  305. package/legacy/hooks/utils/useGridVisibleRows.js +0 -42
  306. package/legacy/hooks/utils/useLazyRef.js +0 -11
  307. package/legacy/hooks/utils/useOnMount.js +0 -7
  308. package/legacy/hooks/utils/useResizeObserver.js +0 -36
  309. package/legacy/hooks/utils/useRunOnce.js +0 -18
  310. package/legacy/hooks/utils/useTimeout.js +0 -38
  311. package/legacy/index.js +0 -38
  312. package/legacy/internals/index.js +0 -68
  313. package/legacy/internals/utils/computeSlots.js +0 -17
  314. package/legacy/internals/utils/index.js +0 -3
  315. package/legacy/internals/utils/propValidation.js +0 -21
  316. package/legacy/internals/utils/useProps.js +0 -32
  317. package/legacy/joy/icons.js +0 -432
  318. package/legacy/joy/index.js +0 -2
  319. package/legacy/joy/joySlots.js +0 -420
  320. package/legacy/locales/arSD.js +0 -160
  321. package/legacy/locales/beBY.js +0 -184
  322. package/legacy/locales/bgBG.js +0 -160
  323. package/legacy/locales/coreLocales.js +0 -62
  324. package/legacy/locales/csCZ.js +0 -181
  325. package/legacy/locales/daDK.js +0 -160
  326. package/legacy/locales/deDE.js +0 -160
  327. package/legacy/locales/elGR.js +0 -160
  328. package/legacy/locales/enUS.js +0 -4
  329. package/legacy/locales/esES.js +0 -160
  330. package/legacy/locales/faIR.js +0 -160
  331. package/legacy/locales/fiFI.js +0 -160
  332. package/legacy/locales/frFR.js +0 -160
  333. package/legacy/locales/heIL.js +0 -160
  334. package/legacy/locales/hrHR.js +0 -160
  335. package/legacy/locales/huHU.js +0 -160
  336. package/legacy/locales/index.js +0 -35
  337. package/legacy/locales/itIT.js +0 -160
  338. package/legacy/locales/jaJP.js +0 -160
  339. package/legacy/locales/koKR.js +0 -162
  340. package/legacy/locales/nbNO.js +0 -162
  341. package/legacy/locales/nlNL.js +0 -160
  342. package/legacy/locales/plPL.js +0 -163
  343. package/legacy/locales/ptBR.js +0 -160
  344. package/legacy/locales/ptPT.js +0 -160
  345. package/legacy/locales/roRO.js +0 -160
  346. package/legacy/locales/ruRU.js +0 -181
  347. package/legacy/locales/skSK.js +0 -181
  348. package/legacy/locales/svSE.js +0 -160
  349. package/legacy/locales/trTR.js +0 -161
  350. package/legacy/locales/ukUA.js +0 -182
  351. package/legacy/locales/urPK.js +0 -160
  352. package/legacy/locales/viVN.js +0 -160
  353. package/legacy/locales/zhCN.js +0 -160
  354. package/legacy/locales/zhHK.js +0 -160
  355. package/legacy/locales/zhTW.js +0 -160
  356. package/legacy/material/components/MUISelectOption.js +0 -14
  357. package/legacy/material/icons/GridColumnUnsortedIcon.js +0 -16
  358. package/legacy/material/icons/index.js +0 -89
  359. package/legacy/material/index.js +0 -69
  360. package/legacy/models/api/gridApiCommon.js +0 -1
  361. package/legacy/models/api/gridApiCommunity.js +0 -1
  362. package/legacy/models/api/gridCallbackDetails.js +0 -1
  363. package/legacy/models/api/gridColumnApi.js +0 -1
  364. package/legacy/models/api/gridColumnGroupingApi.js +0 -1
  365. package/legacy/models/api/gridColumnMenuApi.js +0 -1
  366. package/legacy/models/api/gridColumnSpanning.js +0 -1
  367. package/legacy/models/api/gridCoreApi.js +0 -1
  368. package/legacy/models/api/gridCsvExportApi.js +0 -1
  369. package/legacy/models/api/gridDensityApi.js +0 -1
  370. package/legacy/models/api/gridEditingApi.js +0 -1
  371. package/legacy/models/api/gridFilterApi.js +0 -1
  372. package/legacy/models/api/gridFocusApi.js +0 -1
  373. package/legacy/models/api/gridHeaderFilteringApi.js +0 -1
  374. package/legacy/models/api/gridLocaleTextApi.js +0 -1
  375. package/legacy/models/api/gridLoggerApi.js +0 -1
  376. package/legacy/models/api/gridParamsApi.js +0 -1
  377. package/legacy/models/api/gridPreferencesPanelApi.js +0 -1
  378. package/legacy/models/api/gridPrintExportApi.js +0 -1
  379. package/legacy/models/api/gridRowApi.js +0 -1
  380. package/legacy/models/api/gridRowSelectionApi.js +0 -1
  381. package/legacy/models/api/gridRowsMetaApi.js +0 -1
  382. package/legacy/models/api/gridScrollApi.js +0 -1
  383. package/legacy/models/api/gridSortApi.js +0 -1
  384. package/legacy/models/api/gridStateApi.js +0 -1
  385. package/legacy/models/api/gridVirtualizationApi.js +0 -1
  386. package/legacy/models/api/index.js +0 -16
  387. package/legacy/models/colDef/gridColDef.js +0 -1
  388. package/legacy/models/colDef/gridColType.js +0 -1
  389. package/legacy/models/colDef/gridColumnTypesRecord.js +0 -1
  390. package/legacy/models/colDef/index.js +0 -6
  391. package/legacy/models/controlStateItem.js +0 -1
  392. package/legacy/models/cursorCoordinates.js +0 -1
  393. package/legacy/models/elementSize.js +0 -1
  394. package/legacy/models/events/gridEventListener.js +0 -1
  395. package/legacy/models/events/gridEventLookup.js +0 -1
  396. package/legacy/models/events/gridEventPublisher.js +0 -1
  397. package/legacy/models/events/index.js +0 -3
  398. package/legacy/models/gridApiCaches.js +0 -1
  399. package/legacy/models/gridCell.js +0 -1
  400. package/legacy/models/gridCellClass.js +0 -1
  401. package/legacy/models/gridColumnGrouping.js +0 -11
  402. package/legacy/models/gridColumnHeaderClass.js +0 -1
  403. package/legacy/models/gridColumnSpanning.js +0 -1
  404. package/legacy/models/gridDensity.js +0 -1
  405. package/legacy/models/gridEditRowModel.js +0 -16
  406. package/legacy/models/gridExport.js +0 -1
  407. package/legacy/models/gridFeatureMode.js +0 -1
  408. package/legacy/models/gridFilterItem.js +0 -11
  409. package/legacy/models/gridFilterModel.js +0 -1
  410. package/legacy/models/gridFilterOperator.js +0 -1
  411. package/legacy/models/gridHeaderFilteringModel.js +0 -1
  412. package/legacy/models/gridIconSlotsComponent.js +0 -1
  413. package/legacy/models/gridPaginationProps.js +0 -1
  414. package/legacy/models/gridRenderContextProps.js +0 -1
  415. package/legacy/models/gridRowSelectionModel.js +0 -1
  416. package/legacy/models/gridRows.js +0 -1
  417. package/legacy/models/gridSlotsComponent.js +0 -1
  418. package/legacy/models/gridSlotsComponentsProps.js +0 -1
  419. package/legacy/models/gridSortModel.js +0 -1
  420. package/legacy/models/gridStateCommunity.js +0 -1
  421. package/legacy/models/index.js +0 -29
  422. package/legacy/models/logger.js +0 -1
  423. package/legacy/models/muiEvent.js +0 -1
  424. package/legacy/models/params/gridCellParams.js +0 -1
  425. package/legacy/models/params/gridColumnGroupHeaderParams.js +0 -1
  426. package/legacy/models/params/gridColumnHeaderParams.js +0 -1
  427. package/legacy/models/params/gridColumnOrderChangeParams.js +0 -1
  428. package/legacy/models/params/gridColumnResizeParams.js +0 -1
  429. package/legacy/models/params/gridEditCellParams.js +0 -27
  430. package/legacy/models/params/gridHeaderSelectionCheckboxParams.js +0 -1
  431. package/legacy/models/params/gridMenuParams.js +0 -1
  432. package/legacy/models/params/gridPreferencePanelParams.js +0 -1
  433. package/legacy/models/params/gridRowParams.js +0 -44
  434. package/legacy/models/params/gridRowSelectionCheckboxParams.js +0 -1
  435. package/legacy/models/params/gridScrollParams.js +0 -1
  436. package/legacy/models/params/gridValueOptionsParams.js +0 -1
  437. package/legacy/models/params/index.js +0 -13
  438. package/legacy/models/props/DataGridProps.js +0 -1
  439. package/legacy/themeAugmentation/index.js +0 -4
  440. package/legacy/themeAugmentation/overrides.js +0 -1
  441. package/legacy/themeAugmentation/props.js +0 -1
  442. package/legacy/utils/EventManager.js +0 -91
  443. package/legacy/utils/Store.js +0 -34
  444. package/legacy/utils/cleanupTracking/CleanupTracking.js +0 -1
  445. package/legacy/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -29
  446. package/legacy/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -52
  447. package/legacy/utils/createControllablePromise.js +0 -11
  448. package/legacy/utils/createSelector.js +0 -120
  449. package/legacy/utils/doesSupportPreventScroll.js +0 -13
  450. package/legacy/utils/domUtils.js +0 -49
  451. package/legacy/utils/exportAs.js +0 -40
  452. package/legacy/utils/fastMemo.js +0 -5
  453. package/legacy/utils/fastObjectShallowCompare.js +0 -32
  454. package/legacy/utils/getGridLocalization.js +0 -15
  455. package/legacy/utils/getPublicApiRef.js +0 -5
  456. package/legacy/utils/index.js +0 -1
  457. package/legacy/utils/keyboardUtils.js +0 -60
  458. package/legacy/utils/utils.js +0 -189
  459. package/legacy/utils/warning.js +0 -25
@@ -1,646 +0,0 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
- import * as React from 'react';
5
- import * as ReactDOM from 'react-dom';
6
- import { unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback } from '@mui/utils';
7
- import { useTheme } from '@mui/material/styles';
8
- import { defaultMemoize } from 'reselect';
9
- import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';
10
- import { useGridRootProps } from '../../utils/useGridRootProps';
11
- import { useGridSelector } from '../../utils/useGridSelector';
12
- import { useLazyRef } from '../../utils/useLazyRef';
13
- import { useResizeObserver } from '../../utils/useResizeObserver';
14
- import { useRunOnce } from '../../utils/useRunOnce';
15
- import { gridVisibleColumnDefinitionsSelector, gridVisiblePinnedColumnDefinitionsSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
16
- import { gridDimensionsSelector } from '../dimensions/gridDimensionsSelectors';
17
- import { gridPinnedRowsSelector } from '../rows/gridRowsSelector';
18
- import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
19
- import { useGridVisibleRows, getVisibleRows } from '../../utils/useGridVisibleRows';
20
- import { clamp } from '../../../utils/utils';
21
- import { selectedIdsLookupSelector } from '../rowSelection/gridRowSelectionSelector';
22
- import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
23
- import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils';
24
- import { getMinimalContentHeight } from '../rows/gridRowsUtils';
25
- import { gridOffsetsSelector, gridRenderContextSelector, gridVirtualizationEnabledSelector, gridVirtualizationColumnEnabledSelector } from './gridVirtualizationSelectors';
26
- import { EMPTY_RENDER_CONTEXT } from './useGridVirtualization';
27
- import { jsx as _jsx } from "react/jsx-runtime";
28
- export var EMPTY_DETAIL_PANELS = Object.freeze(new Map());
29
- export var useGridVirtualScroller = function useGridVirtualScroller() {
30
- var apiRef = useGridPrivateApiContext();
31
- var rootProps = useGridRootProps();
32
- var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
33
- var enabled = useGridSelector(apiRef, gridVirtualizationEnabledSelector);
34
- var enabledForColumns = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector);
35
- var dimensions = useGridSelector(apiRef, gridDimensionsSelector);
36
- var outerSize = dimensions.viewportOuterSize;
37
- var pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);
38
- var pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
39
- var hasBottomPinnedRows = pinnedRows.bottom.length > 0;
40
- var _React$useState = React.useState(EMPTY_DETAIL_PANELS),
41
- _React$useState2 = _slicedToArray(_React$useState, 2),
42
- panels = _React$useState2[0],
43
- setPanels = _React$useState2[1];
44
- var theme = useTheme();
45
- var cellFocus = useGridSelector(apiRef, gridFocusCellSelector);
46
- var cellTabIndex = useGridSelector(apiRef, gridTabIndexCellSelector);
47
- var rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
48
- var selectedRowsLookup = useGridSelector(apiRef, selectedIdsLookupSelector);
49
- var currentPage = useGridVisibleRows(apiRef, rootProps);
50
- var gridRootRef = apiRef.current.rootElementRef;
51
- var mainRef = apiRef.current.mainElementRef;
52
- var scrollerRef = apiRef.current.virtualScrollerRef;
53
- var scrollbarVerticalRef = React.useRef(null);
54
- var scrollbarHorizontalRef = React.useRef(null);
55
- var contentHeight = dimensions.contentSize.height;
56
- var columnsTotalWidth = dimensions.columnsTotalWidth;
57
- useResizeObserver(mainRef, function () {
58
- return apiRef.current.resize();
59
- });
60
- var previousContext = React.useRef(EMPTY_RENDER_CONTEXT);
61
- var previousRowContext = React.useRef(EMPTY_RENDER_CONTEXT);
62
- var offsets = useGridSelector(apiRef, gridOffsetsSelector);
63
- var renderContext = useGridSelector(apiRef, gridRenderContextSelector);
64
- var scrollPosition = React.useRef({
65
- top: 0,
66
- left: 0
67
- }).current;
68
- var prevTotalWidth = React.useRef(columnsTotalWidth);
69
- var getRenderedColumns = useLazyRef(createGetRenderedColumns).current;
70
- var indexOfRowWithFocusedCell = React.useMemo(function () {
71
- if (cellFocus !== null) {
72
- return currentPage.rows.findIndex(function (row) {
73
- return row.id === cellFocus.id;
74
- });
75
- }
76
- return -1;
77
- }, [cellFocus, currentPage.rows]);
78
- var indexOfColumnWithFocusedCell = React.useMemo(function () {
79
- if (cellFocus !== null) {
80
- return visibleColumns.findIndex(function (column) {
81
- return column.field === cellFocus.field;
82
- });
83
- }
84
- return -1;
85
- }, [cellFocus, visibleColumns]);
86
- var updateRenderContext = React.useCallback(function (nextRenderContext, rawRenderContext) {
87
- if (areRenderContextsEqual(nextRenderContext, apiRef.current.state.virtualization.renderContext)) {
88
- return;
89
- }
90
- var didRowsIntervalChange = nextRenderContext.firstRowIndex !== previousRowContext.current.firstRowIndex || nextRenderContext.lastRowIndex !== previousRowContext.current.lastRowIndex;
91
- var nextOffsets = computeOffsets(apiRef, nextRenderContext, theme.direction, pinnedColumns.left.length);
92
- apiRef.current.setState(function (state) {
93
- return _extends({}, state, {
94
- virtualization: _extends({}, state.virtualization, {
95
- renderContext: nextRenderContext,
96
- offsets: nextOffsets
97
- })
98
- });
99
- });
100
-
101
- // The lazy-loading hook is listening to `renderedRowsIntervalChange`,
102
- // but only does something if the dimensions are also available.
103
- // So we wait until we have valid dimensions before publishing the first event.
104
- if (dimensions.isReady && didRowsIntervalChange) {
105
- previousRowContext.current = nextRenderContext;
106
- apiRef.current.publishEvent('renderedRowsIntervalChange', nextRenderContext);
107
- }
108
- previousContext.current = rawRenderContext;
109
- prevTotalWidth.current = dimensions.columnsTotalWidth;
110
- }, [apiRef, pinnedColumns.left.length, theme.direction, dimensions.isReady, dimensions.columnsTotalWidth]);
111
- var triggerUpdateRenderContext = function triggerUpdateRenderContext() {
112
- var inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns);
113
- var _computeRenderContext = computeRenderContext(inputs, scrollPosition),
114
- _computeRenderContext2 = _slicedToArray(_computeRenderContext, 2),
115
- nextRenderContext = _computeRenderContext2[0],
116
- rawRenderContext = _computeRenderContext2[1];
117
-
118
- // Since previous render, we have scrolled...
119
- var topRowsScrolled = Math.abs(rawRenderContext.firstRowIndex - previousContext.current.firstRowIndex);
120
- var bottomRowsScrolled = Math.abs(rawRenderContext.lastRowIndex - previousContext.current.lastRowIndex);
121
- var topColumnsScrolled = Math.abs(rawRenderContext.firstColumnIndex - previousContext.current.firstColumnIndex);
122
- var bottomColumnsScrolled = Math.abs(rawRenderContext.lastColumnIndex - previousContext.current.lastColumnIndex);
123
- var shouldUpdate = topRowsScrolled >= rootProps.rowThreshold || bottomRowsScrolled >= rootProps.rowThreshold || topColumnsScrolled >= rootProps.columnThreshold || bottomColumnsScrolled >= rootProps.columnThreshold || prevTotalWidth.current !== dimensions.columnsTotalWidth;
124
- if (!shouldUpdate) {
125
- return previousContext.current;
126
- }
127
-
128
- // Prevents batching render context changes
129
- ReactDOM.flushSync(function () {
130
- updateRenderContext(nextRenderContext, rawRenderContext);
131
- });
132
- return nextRenderContext;
133
- };
134
- var forceUpdateRenderContext = function forceUpdateRenderContext() {
135
- var inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns);
136
- var _computeRenderContext3 = computeRenderContext(inputs, scrollPosition),
137
- _computeRenderContext4 = _slicedToArray(_computeRenderContext3, 2),
138
- nextRenderContext = _computeRenderContext4[0],
139
- rawRenderContext = _computeRenderContext4[1];
140
- updateRenderContext(nextRenderContext, rawRenderContext);
141
- };
142
- var handleScroll = useEventCallback(function (event) {
143
- var _event$currentTarget = event.currentTarget,
144
- scrollTop = _event$currentTarget.scrollTop,
145
- scrollLeft = _event$currentTarget.scrollLeft;
146
- scrollPosition.top = scrollTop;
147
- scrollPosition.left = scrollLeft;
148
-
149
- // On iOS and macOS, negative offsets are possible when swiping past the start
150
- if (scrollTop < 0) {
151
- return;
152
- }
153
- if (theme.direction === 'ltr') {
154
- if (scrollLeft < 0) {
155
- return;
156
- }
157
- }
158
- if (theme.direction === 'rtl') {
159
- if (scrollLeft > 0) {
160
- return;
161
- }
162
- }
163
- var nextRenderContext = triggerUpdateRenderContext();
164
- apiRef.current.publishEvent('scrollPositionChange', {
165
- top: scrollTop,
166
- left: scrollLeft,
167
- renderContext: nextRenderContext
168
- });
169
- });
170
- var handleWheel = useEventCallback(function (event) {
171
- apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
172
- });
173
- var handleTouchMove = useEventCallback(function (event) {
174
- apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
175
- });
176
- var minFirstColumn = pinnedColumns.left.length;
177
- var maxLastColumn = visibleColumns.length - pinnedColumns.right.length;
178
- var getRows = function getRows() {
179
- var _params$rows, _rootProps$slotProps;
180
- var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
181
- var isLastSection = !hasBottomPinnedRows && params.position === undefined || hasBottomPinnedRows && params.position === 'bottom';
182
- var isPinnedSection = params.position !== undefined;
183
- var rowIndexOffset;
184
- // FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?
185
- // eslint-disable-next-line default-case
186
- switch (params.position) {
187
- case 'top':
188
- rowIndexOffset = 0;
189
- break;
190
- case 'bottom':
191
- rowIndexOffset = pinnedRows.top.length + currentPage.rows.length;
192
- break;
193
- case undefined:
194
- rowIndexOffset = pinnedRows.top.length;
195
- break;
196
- }
197
- var firstRowToRender = renderContext.firstRowIndex;
198
- var lastRowToRender = renderContext.lastRowIndex;
199
- var firstColumnToRender = renderContext.firstColumnIndex;
200
- var lastColumnToRender = renderContext.lastColumnIndex;
201
- if (!params.rows && !currentPage.range) {
202
- return [];
203
- }
204
- var renderedRows = (_params$rows = params.rows) != null ? _params$rows : currentPage.rows.slice(firstRowToRender, lastRowToRender);
205
-
206
- // If the selected row is not within the current range of rows being displayed,
207
- // we need to render it at either the top or bottom of the rows,
208
- // depending on whether it is above or below the range.
209
- var isRowWithFocusedCellNotInRange = false;
210
- if (!isPinnedSection && indexOfRowWithFocusedCell > -1 && (firstRowToRender > indexOfRowWithFocusedCell || lastRowToRender < indexOfRowWithFocusedCell)) {
211
- isRowWithFocusedCellNotInRange = true;
212
- var rowWithFocusedCell = currentPage.rows[indexOfRowWithFocusedCell];
213
- if (indexOfRowWithFocusedCell > firstRowToRender) {
214
- renderedRows.push(rowWithFocusedCell);
215
- } else {
216
- renderedRows.unshift(rowWithFocusedCell);
217
- }
218
- }
219
- var isColumnWihFocusedCellNotInRange = false;
220
- if (!isPinnedSection && (firstColumnToRender > indexOfColumnWithFocusedCell || lastColumnToRender < indexOfColumnWithFocusedCell)) {
221
- isColumnWihFocusedCellNotInRange = true;
222
- }
223
- var _getRenderedColumns = getRenderedColumns(visibleColumns, firstColumnToRender, lastColumnToRender, minFirstColumn, maxLastColumn, isColumnWihFocusedCellNotInRange ? indexOfColumnWithFocusedCell : -1),
224
- focusedCellColumnIndexNotInRange = _getRenderedColumns.focusedCellColumnIndexNotInRange,
225
- renderedColumns = _getRenderedColumns.renderedColumns;
226
- renderedRows.forEach(function (row) {
227
- apiRef.current.calculateColSpan({
228
- rowId: row.id,
229
- minFirstColumn: minFirstColumn,
230
- maxLastColumn: maxLastColumn,
231
- columns: visibleColumns
232
- });
233
- if (pinnedColumns.left.length > 0) {
234
- apiRef.current.calculateColSpan({
235
- rowId: row.id,
236
- minFirstColumn: 0,
237
- maxLastColumn: pinnedColumns.left.length,
238
- columns: visibleColumns
239
- });
240
- }
241
- if (pinnedColumns.right.length > 0) {
242
- apiRef.current.calculateColSpan({
243
- rowId: row.id,
244
- minFirstColumn: visibleColumns.length - pinnedColumns.right.length,
245
- maxLastColumn: visibleColumns.length,
246
- columns: visibleColumns
247
- });
248
- }
249
- });
250
- var rows = [];
251
- var rowProps = (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.row;
252
- var isRowWithFocusedCellRendered = false;
253
- for (var i = 0; i < renderedRows.length; i += 1) {
254
- var _currentPage$range;
255
- var _renderedRows$i = renderedRows[i],
256
- id = _renderedRows$i.id,
257
- model = _renderedRows$i.model;
258
- var rowIndexInPage = ((currentPage == null || (_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.firstRowIndex) || 0) + firstRowToRender + i;
259
- var index = rowIndexOffset + rowIndexInPage;
260
- if (isRowWithFocusedCellNotInRange && (cellFocus == null ? void 0 : cellFocus.id) === id) {
261
- index = indexOfRowWithFocusedCell;
262
- isRowWithFocusedCellRendered = true;
263
- } else if (isRowWithFocusedCellRendered) {
264
- index -= 1;
265
- }
266
- var isRowNotVisible = isRowWithFocusedCellNotInRange && cellFocus.id === id;
267
- var baseRowHeight = !apiRef.current.rowHasAutoHeight(id) ? apiRef.current.unstable_getRowHeight(id) : 'auto';
268
- var isSelected = void 0;
269
- if (selectedRowsLookup[id] == null) {
270
- isSelected = false;
271
- } else {
272
- isSelected = apiRef.current.isRowSelectable(id);
273
- }
274
- var isFirstVisible = false;
275
- if (params.position === undefined) {
276
- isFirstVisible = rowIndexInPage === 0;
277
- }
278
- var isLastVisible = false;
279
- if (isLastSection) {
280
- if (!isPinnedSection) {
281
- var lastIndex = currentPage.rows.length - 1;
282
- var isLastVisibleRowIndex = isRowWithFocusedCellNotInRange ? firstRowToRender + i === lastIndex + 1 : firstRowToRender + i === lastIndex;
283
- if (isLastVisibleRowIndex) {
284
- isLastVisible = true;
285
- }
286
- } else {
287
- isLastVisible = i === renderedRows.length - 1;
288
- }
289
- }
290
- var focusedCell = cellFocus !== null && cellFocus.id === id ? cellFocus.field : null;
291
- var columnWithFocusedCellNotInRange = focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange];
292
- var renderedColumnsWithFocusedCell = columnWithFocusedCellNotInRange && focusedCell ? [columnWithFocusedCellNotInRange].concat(_toConsumableArray(renderedColumns)) : renderedColumns;
293
- var tabbableCell = null;
294
- if (cellTabIndex !== null && cellTabIndex.id === id) {
295
- var cellParams = apiRef.current.getCellParams(id, cellTabIndex.field);
296
- tabbableCell = cellParams.cellMode === 'view' ? cellTabIndex.field : null;
297
- }
298
- rows.push( /*#__PURE__*/_jsx(rootProps.slots.row, _extends({
299
- row: model,
300
- rowId: id,
301
- index: index,
302
- rowHeight: baseRowHeight,
303
- focusedCell: focusedCell,
304
- tabbableCell: tabbableCell,
305
- focusedCellColumnIndexNotInRange: focusedCellColumnIndexNotInRange,
306
- renderedColumns: renderedColumnsWithFocusedCell,
307
- visibleColumns: visibleColumns,
308
- pinnedColumns: pinnedColumns,
309
- firstColumnToRender: firstColumnToRender,
310
- lastColumnToRender: lastColumnToRender,
311
- selected: isSelected,
312
- offsets: offsets,
313
- dimensions: dimensions,
314
- isFirstVisible: isFirstVisible,
315
- isLastVisible: isLastVisible,
316
- isNotVisible: isRowNotVisible
317
- }, rowProps), id));
318
- var panel = panels.get(id);
319
- if (panel) {
320
- rows.push(panel);
321
- }
322
- }
323
- return rows;
324
- };
325
- var needsHorizontalScrollbar = outerSize.width && columnsTotalWidth >= outerSize.width;
326
- var scrollerStyle = React.useMemo(function () {
327
- return {
328
- overflowX: !needsHorizontalScrollbar ? 'hidden' : undefined,
329
- overflowY: rootProps.autoHeight ? 'hidden' : undefined
330
- };
331
- }, [needsHorizontalScrollbar, rootProps.autoHeight]);
332
- var contentSize = React.useMemo(function () {
333
- // In cases where the columns exceed the available width,
334
- // the horizontal scrollbar should be shown even when there're no rows.
335
- // Keeping 1px as minimum height ensures that the scrollbar will visible if necessary.
336
- var height = Math.max(contentHeight, 1);
337
- var size = {
338
- width: needsHorizontalScrollbar ? columnsTotalWidth : 'auto',
339
- height: height
340
- };
341
- if (rootProps.autoHeight) {
342
- if (currentPage.rows.length === 0) {
343
- size.height = getMinimalContentHeight(apiRef); // Give room to show the overlay when there no rows.
344
- } else {
345
- size.height = contentHeight;
346
- }
347
- }
348
- return size;
349
- }, [apiRef, columnsTotalWidth, contentHeight, needsHorizontalScrollbar, rootProps.autoHeight, currentPage.rows.length]);
350
- React.useEffect(function () {
351
- apiRef.current.publishEvent('virtualScrollerContentSizeChange');
352
- }, [apiRef, contentSize]);
353
- useEnhancedEffect(function () {
354
- // FIXME: Is this really necessary?
355
- apiRef.current.resize();
356
- }, [apiRef, rowsMeta.currentPageTotalHeight]);
357
- useEnhancedEffect(function () {
358
- if (enabled) {
359
- // TODO a scroll reset should not be necessary
360
- scrollerRef.current.scrollLeft = 0;
361
- scrollerRef.current.scrollTop = 0;
362
- }
363
- }, [enabled, gridRootRef, scrollerRef]);
364
- useRunOnce(outerSize.width !== 0, function () {
365
- var inputs = inputsSelector(apiRef, rootProps, enabled, enabledForColumns);
366
- var _computeRenderContext5 = computeRenderContext(inputs, scrollPosition),
367
- _computeRenderContext6 = _slicedToArray(_computeRenderContext5, 2),
368
- initialRenderContext = _computeRenderContext6[0],
369
- rawRenderContext = _computeRenderContext6[1];
370
- updateRenderContext(initialRenderContext, rawRenderContext);
371
- apiRef.current.publishEvent('scrollPositionChange', {
372
- top: scrollPosition.top,
373
- left: scrollPosition.left,
374
- renderContext: initialRenderContext
375
- });
376
- });
377
- apiRef.current.register('private', {
378
- updateRenderContext: forceUpdateRenderContext
379
- });
380
- return {
381
- renderContext: renderContext,
382
- setPanels: setPanels,
383
- getRows: getRows,
384
- getContainerProps: function getContainerProps() {
385
- return {
386
- ref: mainRef
387
- };
388
- },
389
- getScrollerProps: function getScrollerProps() {
390
- return {
391
- ref: scrollerRef,
392
- tabIndex: -1,
393
- onScroll: handleScroll,
394
- onWheel: handleWheel,
395
- onTouchMove: handleTouchMove,
396
- style: scrollerStyle,
397
- role: 'presentation'
398
- };
399
- },
400
- getContentProps: function getContentProps() {
401
- return {
402
- style: contentSize,
403
- role: 'presentation'
404
- };
405
- },
406
- getRenderZoneProps: function getRenderZoneProps() {
407
- return {
408
- role: 'rowgroup'
409
- };
410
- },
411
- getScrollbarVerticalProps: function getScrollbarVerticalProps() {
412
- return {
413
- ref: scrollbarVerticalRef,
414
- role: 'presentation'
415
- };
416
- },
417
- getScrollbarHorizontalProps: function getScrollbarHorizontalProps() {
418
- return {
419
- ref: scrollbarHorizontalRef,
420
- role: 'presentation'
421
- };
422
- }
423
- };
424
- };
425
- function createGetRenderedColumns() {
426
- return defaultMemoize(function (columns, firstColumnToRender, lastColumnToRender, minFirstColumn, maxLastColumn, indexOfColumnWithFocusedCell) {
427
- // If the selected column is not within the current range of columns being displayed,
428
- // we need to render it at either the left or right of the columns,
429
- // depending on whether it is above or below the range.
430
- var focusedCellColumnIndexNotInRange;
431
- var renderedColumns = columns.slice(firstColumnToRender, lastColumnToRender);
432
- if (indexOfColumnWithFocusedCell > -1) {
433
- // check if it is not on the left pinned column.
434
- if (firstColumnToRender > indexOfColumnWithFocusedCell && indexOfColumnWithFocusedCell >= minFirstColumn) {
435
- focusedCellColumnIndexNotInRange = indexOfColumnWithFocusedCell;
436
- }
437
- // check if it is not on the right pinned column.
438
- else if (lastColumnToRender < indexOfColumnWithFocusedCell && indexOfColumnWithFocusedCell < maxLastColumn) {
439
- focusedCellColumnIndexNotInRange = indexOfColumnWithFocusedCell;
440
- }
441
- }
442
- return {
443
- focusedCellColumnIndexNotInRange: focusedCellColumnIndexNotInRange,
444
- renderedColumns: renderedColumns
445
- };
446
- });
447
- }
448
- function inputsSelector(apiRef, rootProps, enabled, enabledForColumns) {
449
- var dimensions = gridDimensionsSelector(apiRef.current.state);
450
- var currentPage = getVisibleRows(apiRef, rootProps);
451
- return {
452
- enabled: enabled,
453
- enabledForColumns: enabledForColumns,
454
- apiRef: apiRef,
455
- autoHeight: rootProps.autoHeight,
456
- rowBuffer: rootProps.rowBuffer,
457
- columnBuffer: rootProps.columnBuffer,
458
- leftPinnedWidth: dimensions.leftPinnedWidth,
459
- columnsTotalWidth: dimensions.columnsTotalWidth,
460
- viewportInnerWidth: dimensions.viewportInnerSize.width,
461
- viewportInnerHeight: dimensions.viewportInnerSize.height,
462
- rowsMeta: gridRowsMetaSelector(apiRef.current.state),
463
- columnPositions: gridColumnPositionsSelector(apiRef),
464
- rows: currentPage.rows,
465
- range: currentPage.range,
466
- pinnedColumns: gridVisiblePinnedColumnDefinitionsSelector(apiRef),
467
- visibleColumns: gridVisibleColumnDefinitionsSelector(apiRef)
468
- };
469
- }
470
- function computeRenderContext(inputs, scrollPosition) {
471
- var renderContext;
472
- if (!inputs.enabled) {
473
- renderContext = {
474
- firstRowIndex: 0,
475
- lastRowIndex: inputs.rows.length,
476
- firstColumnIndex: 0,
477
- lastColumnIndex: inputs.visibleColumns.length
478
- };
479
- } else {
480
- var top = scrollPosition.top,
481
- left = scrollPosition.left;
482
- var realLeft = Math.abs(left) + inputs.leftPinnedWidth;
483
-
484
- // Clamp the value because the search may return an index out of bounds.
485
- // In the last index, this is not needed because Array.slice doesn't include it.
486
- var firstRowIndex = Math.min(getNearestIndexToRender(inputs, top), inputs.rowsMeta.positions.length - 1);
487
- var lastRowIndex = inputs.autoHeight ? firstRowIndex + inputs.rows.length : getNearestIndexToRender(inputs, top + inputs.viewportInnerHeight);
488
- var firstColumnIndex = 0;
489
- var lastColumnIndex = inputs.columnPositions.length;
490
- if (inputs.enabledForColumns) {
491
- var hasRowWithAutoHeight = false;
492
- var _getIndexesToRender = getIndexesToRender({
493
- firstIndex: firstRowIndex,
494
- lastIndex: lastRowIndex,
495
- minFirstIndex: 0,
496
- maxLastIndex: inputs.rows.length,
497
- buffer: inputs.rowBuffer
498
- }),
499
- _getIndexesToRender2 = _slicedToArray(_getIndexesToRender, 2),
500
- firstRowToRender = _getIndexesToRender2[0],
501
- lastRowToRender = _getIndexesToRender2[1];
502
- for (var i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
503
- var row = inputs.rows[i];
504
- hasRowWithAutoHeight = inputs.apiRef.current.rowHasAutoHeight(row.id);
505
- }
506
- if (!hasRowWithAutoHeight) {
507
- firstColumnIndex = binarySearch(realLeft, inputs.columnPositions, {
508
- atStart: true,
509
- lastPosition: inputs.columnsTotalWidth
510
- });
511
- lastColumnIndex = binarySearch(realLeft + inputs.viewportInnerWidth, inputs.columnPositions);
512
- }
513
- }
514
- renderContext = {
515
- firstRowIndex: firstRowIndex,
516
- lastRowIndex: lastRowIndex,
517
- firstColumnIndex: firstColumnIndex,
518
- lastColumnIndex: lastColumnIndex
519
- };
520
- }
521
- var actualRenderContext = deriveRenderContext(inputs.apiRef, inputs.rowBuffer, inputs.columnBuffer, inputs.rows, inputs.pinnedColumns, inputs.visibleColumns, renderContext);
522
- return [actualRenderContext, renderContext];
523
- }
524
- function getNearestIndexToRender(inputs, offset) {
525
- var _inputs$range, _inputs$range2;
526
- var lastMeasuredIndexRelativeToAllRows = inputs.apiRef.current.getLastMeasuredRowIndex();
527
- var allRowsMeasured = lastMeasuredIndexRelativeToAllRows === Infinity;
528
- if ((_inputs$range = inputs.range) != null && _inputs$range.lastRowIndex && !allRowsMeasured) {
529
- // Check if all rows in this page are already measured
530
- allRowsMeasured = lastMeasuredIndexRelativeToAllRows >= inputs.range.lastRowIndex;
531
- }
532
- var lastMeasuredIndexRelativeToCurrentPage = clamp(lastMeasuredIndexRelativeToAllRows - (((_inputs$range2 = inputs.range) == null ? void 0 : _inputs$range2.firstRowIndex) || 0), 0, inputs.rowsMeta.positions.length);
533
- if (allRowsMeasured || inputs.rowsMeta.positions[lastMeasuredIndexRelativeToCurrentPage] >= offset) {
534
- // If all rows were measured (when no row has "auto" as height) or all rows before the offset
535
- // were measured, then use a binary search because it's faster.
536
- return binarySearch(offset, inputs.rowsMeta.positions);
537
- }
538
-
539
- // Otherwise, use an exponential search.
540
- // If rows have "auto" as height, their positions will be based on estimated heights.
541
- // In this case, we can skip several steps until we find a position higher than the offset.
542
- // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
543
- return exponentialSearch(offset, inputs.rowsMeta.positions, lastMeasuredIndexRelativeToCurrentPage);
544
- }
545
-
546
- /**
547
- * Accepts as input a raw render context (the area visible in the viewport) and adds
548
- * computes the actual render context based on pinned elements, buffer dimensions and
549
- * spanning.
550
- */
551
- function deriveRenderContext(apiRef, rowBuffer, columnBuffer, rows, pinnedColumns, visibleColumns, nextRenderContext) {
552
- var _getIndexesToRender3 = getIndexesToRender({
553
- firstIndex: nextRenderContext.firstRowIndex,
554
- lastIndex: nextRenderContext.lastRowIndex,
555
- minFirstIndex: 0,
556
- maxLastIndex: rows.length,
557
- buffer: rowBuffer
558
- }),
559
- _getIndexesToRender4 = _slicedToArray(_getIndexesToRender3, 2),
560
- firstRowToRender = _getIndexesToRender4[0],
561
- lastRowToRender = _getIndexesToRender4[1];
562
- var _getIndexesToRender5 = getIndexesToRender({
563
- firstIndex: nextRenderContext.firstColumnIndex,
564
- lastIndex: nextRenderContext.lastColumnIndex,
565
- minFirstIndex: pinnedColumns.left.length,
566
- maxLastIndex: visibleColumns.length - pinnedColumns.right.length,
567
- buffer: columnBuffer
568
- }),
569
- _getIndexesToRender6 = _slicedToArray(_getIndexesToRender5, 2),
570
- initialFirstColumnToRender = _getIndexesToRender6[0],
571
- lastColumnToRender = _getIndexesToRender6[1];
572
- var firstColumnToRender = getFirstNonSpannedColumnToRender({
573
- firstColumnToRender: initialFirstColumnToRender,
574
- apiRef: apiRef,
575
- firstRowToRender: firstRowToRender,
576
- lastRowToRender: lastRowToRender,
577
- visibleRows: rows
578
- });
579
- return {
580
- firstRowIndex: firstRowToRender,
581
- lastRowIndex: lastRowToRender,
582
- firstColumnIndex: firstColumnToRender,
583
- lastColumnIndex: lastColumnToRender
584
- };
585
- }
586
- /**
587
- * Use binary search to avoid looping through all possible positions.
588
- * The `options.atStart` provides the possibility to match for the first element that
589
- * intersects the screen, even if said element's start position is before `offset`. In
590
- * other words, we search for `offset + width`.
591
- */
592
- function binarySearch(offset, positions) {
593
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
594
- var sliceStart = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
595
- var sliceEnd = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : positions.length;
596
- if (positions.length <= 0) {
597
- return -1;
598
- }
599
- if (sliceStart >= sliceEnd) {
600
- return sliceStart;
601
- }
602
- var pivot = sliceStart + Math.floor((sliceEnd - sliceStart) / 2);
603
- var position = positions[pivot];
604
- var isBefore;
605
- if (options != null && options.atStart) {
606
- var width = (pivot === positions.length - 1 ? options.lastPosition : positions[pivot + 1]) - position;
607
- isBefore = offset - width < position;
608
- } else {
609
- isBefore = offset <= position;
610
- }
611
- return isBefore ? binarySearch(offset, positions, options, sliceStart, pivot) : binarySearch(offset, positions, options, pivot + 1, sliceEnd);
612
- }
613
- function exponentialSearch(offset, positions, index) {
614
- var interval = 1;
615
- while (index < positions.length && Math.abs(positions[index]) < offset) {
616
- index += interval;
617
- interval *= 2;
618
- }
619
- return binarySearch(offset, positions, undefined, Math.floor(index / 2), Math.min(index, positions.length));
620
- }
621
- function getIndexesToRender(_ref) {
622
- var firstIndex = _ref.firstIndex,
623
- lastIndex = _ref.lastIndex,
624
- buffer = _ref.buffer,
625
- minFirstIndex = _ref.minFirstIndex,
626
- maxLastIndex = _ref.maxLastIndex;
627
- return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
628
- }
629
- export function areRenderContextsEqual(context1, context2) {
630
- if (context1 === context2) {
631
- return true;
632
- }
633
- return context1.firstRowIndex === context2.firstRowIndex && context1.lastRowIndex === context2.lastRowIndex && context1.firstColumnIndex === context2.firstColumnIndex && context1.lastColumnIndex === context2.lastColumnIndex;
634
- }
635
- function computeOffsets(apiRef, renderContext, direction, pinnedLeftLength) {
636
- var _rowPositions$renderC, _columnPositions$rend, _columnPositions$pinn;
637
- var factor = direction === 'ltr' ? 1 : -1;
638
- var rowPositions = gridRowsMetaSelector(apiRef.current.state).positions;
639
- var columnPositions = gridColumnPositionsSelector(apiRef);
640
- var top = (_rowPositions$renderC = rowPositions[renderContext.firstRowIndex]) != null ? _rowPositions$renderC : 0;
641
- var left = factor * ((_columnPositions$rend = columnPositions[renderContext.firstColumnIndex]) != null ? _columnPositions$rend : 0) - ((_columnPositions$pinn = columnPositions[pinnedLeftLength]) != null ? _columnPositions$pinn : 0);
642
- return {
643
- top: top,
644
- left: left
645
- };
646
- }