@mui/x-data-grid 8.29.1 → 8.29.2

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 (28) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/components/columnsPanel/ColumnsPanelTrigger.js +2 -2
  3. package/components/columnsPanel/ColumnsPanelTrigger.mjs +2 -2
  4. package/components/containers/GridRootStyles.js +3 -2
  5. package/components/containers/GridRootStyles.mjs +3 -2
  6. package/components/filterPanel/FilterPanelTrigger.js +2 -2
  7. package/components/filterPanel/FilterPanelTrigger.mjs +2 -2
  8. package/components/panel/GridPanelContext.d.mts +9 -3
  9. package/components/panel/GridPanelContext.d.ts +9 -3
  10. package/components/panel/GridPanelContext.js +41 -7
  11. package/components/panel/GridPanelContext.mjs +40 -7
  12. package/components/panel/GridPreferencesPanel.js +4 -6
  13. package/components/panel/GridPreferencesPanel.mjs +4 -6
  14. package/components/toolbar/GridToolbarColumnsButton.js +2 -2
  15. package/components/toolbar/GridToolbarColumnsButton.mjs +2 -2
  16. package/components/toolbar/GridToolbarFilterButton.js +2 -2
  17. package/components/toolbar/GridToolbarFilterButton.mjs +2 -2
  18. package/components/virtualization/GridVirtualScrollbar.js +9 -53
  19. package/components/virtualization/GridVirtualScrollbar.mjs +9 -53
  20. package/components/virtualization/GridVirtualScroller.js +12 -0
  21. package/components/virtualization/GridVirtualScroller.mjs +12 -0
  22. package/hooks/features/columnResize/useGridColumnResize.js +56 -2
  23. package/hooks/features/columnResize/useGridColumnResize.mjs +57 -3
  24. package/hooks/features/rows/gridRowsUtils.js +1 -1
  25. package/hooks/features/rows/gridRowsUtils.mjs +1 -1
  26. package/index.js +1 -1
  27. package/index.mjs +1 -1
  28. package/package.json +31 -31
package/CHANGELOG.md CHANGED
@@ -5,6 +5,91 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.29.2
9
+
10
+ _Jul 2, 2026_
11
+
12
+ We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 🐞 Bugfixes
15
+
16
+ Special thanks go out to these community members for their valuable contributions:
17
+ @Anexus5919, @timbuckley
18
+
19
+ The following team members contributed to this release:
20
+ @alexfauquette, @arminmeh, @brijeshb42, @cherniavskii, @LukasTy, @MBilalShafi
21
+
22
+ ### Data Grid
23
+
24
+ #### `@mui/x-data-grid@8.29.2`
25
+
26
+ - [DataGrid] Avoid reading `type` of `undefined` in `gridRowUtils` (#22963) @timbuckley
27
+ - [DataGrid] Define `overflowAnchor` style at the right element (#22860) @arminmeh
28
+ - [DataGrid] Fix panel placement jump on mount (#22946) @cherniavskii
29
+ - [DataGrid] Fix scrollbars not showing up on scroll on iOS (#22884) @cherniavskii
30
+ - [DataGrid] Wait for rows before reacting on `autosizeOnMount` (#22886) @MBilalShafi
31
+
32
+ #### `@mui/x-data-grid-pro@8.29.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
33
+
34
+ Same changes as in `@mui/x-data-grid@8.29.2`.
35
+
36
+ #### `@mui/x-data-grid-premium@8.29.2` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
37
+
38
+ Same changes as in `@mui/x-data-grid-pro@8.29.2`, plus:
39
+
40
+ - [DataGridPremium] Escape `singleSelect` values in Excel export with `escapeFormulas` enabled (#22966) @Anexus5919
41
+
42
+ ### Date and Time Pickers
43
+
44
+ #### `@mui/x-date-pickers@8.29.2`
45
+
46
+ - [pickers] Fix localized digit crash (#23010) @alexfauquette
47
+ - [pickers] Respect explicit `notched` prop on the outlined `PickersTextField` (#22875) (#22893) @LukasTy
48
+
49
+ #### `@mui/x-date-pickers-pro@8.29.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
50
+
51
+ Same changes as in `@mui/x-date-pickers@8.29.2`.
52
+
53
+ ### Charts
54
+
55
+ #### `@mui/x-charts@8.29.2`
56
+
57
+ Internal changes.
58
+
59
+ #### `@mui/x-charts-pro@8.29.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
60
+
61
+ Same changes as in `@mui/x-charts@8.29.2`.
62
+
63
+ #### `@mui/x-charts-premium@8.29.2` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
64
+
65
+ Same changes as in `@mui/x-charts-pro@8.29.2`.
66
+
67
+ ### Tree View
68
+
69
+ #### `@mui/x-tree-view@8.29.2`
70
+
71
+ Internal changes.
72
+
73
+ #### `@mui/x-tree-view-pro@8.29.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
74
+
75
+ Same changes as in `@mui/x-tree-view@8.29.2`.
76
+
77
+ ### Codemod
78
+
79
+ #### `@mui/x-codemod@8.29.2`
80
+
81
+ Internal changes.
82
+
83
+ ### Core
84
+
85
+ - [code-infra] Pin mui-public actions to nearest git hash (#22824) @brijeshb42
86
+ - [internal] Switch resolutions to workspace overrides (#22865) @cherniavskii
87
+
88
+ ### Miscellaneous
89
+
90
+ - [virtualizer] Improve the dimensions' initial state (#22890) @arminmeh
91
+ - [virtualizer] Remeasure scrollbars when layout changes (#23003) @arminmeh
92
+
8
93
  ## 8.29.1
9
94
 
10
95
  _Jun 11, 2026_
@@ -51,9 +51,9 @@ const ColumnsPanelTrigger = exports.ColumnsPanelTrigger = (0, _forwardRef.forwar
51
51
  };
52
52
  const resolvedClassName = typeof className === 'function' ? className(state) : className;
53
53
  const {
54
- columnsPanelTriggerRef
54
+ triggers
55
55
  } = (0, _GridPanelContext.useGridPanelContext)();
56
- const handleRef = (0, _useForkRef.default)(ref, columnsPanelTriggerRef);
56
+ const handleRef = (0, _useForkRef.default)(ref, triggers.columnsPanel.setRef);
57
57
  const handleClick = event => {
58
58
  if (open) {
59
59
  apiRef.current.hidePreferences();
@@ -43,9 +43,9 @@ const ColumnsPanelTrigger = forwardRef(function ColumnsPanelTrigger(props, ref)
43
43
  };
44
44
  const resolvedClassName = typeof className === 'function' ? className(state) : className;
45
45
  const {
46
- columnsPanelTriggerRef
46
+ triggers
47
47
  } = useGridPanelContext();
48
- const handleRef = useForkRef(ref, columnsPanelTriggerRef);
48
+ const handleRef = useForkRef(ref, triggers.columnsPanel.setRef);
49
49
  const handleClick = event => {
50
50
  if (open) {
51
51
  apiRef.current.hidePreferences();
@@ -126,11 +126,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
126
126
  minHeight: 0,
127
127
  flexDirection: 'column',
128
128
  overflow: 'hidden',
129
- overflowAnchor: 'none',
130
- // Keep the same scrolling position
131
129
  transform: 'translate(0, 0)',
132
130
  // Create a stacking context to keep scrollbars from showing on top
133
131
 
132
+ [`& .${_gridClasses.gridClasses.virtualScroller}`]: {
133
+ overflowAnchor: 'none' // Keep the same scrolling position
134
+ },
134
135
  [`.${_gridClasses.gridClasses.main} > *:first-child${ignoreSsrWarning}`]: {
135
136
  borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
136
137
  borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
@@ -120,11 +120,12 @@ export const GridRootStyles = styled('div', {
120
120
  minHeight: 0,
121
121
  flexDirection: 'column',
122
122
  overflow: 'hidden',
123
- overflowAnchor: 'none',
124
- // Keep the same scrolling position
125
123
  transform: 'translate(0, 0)',
126
124
  // Create a stacking context to keep scrollbars from showing on top
127
125
 
126
+ [`& .${c.virtualScroller}`]: {
127
+ overflowAnchor: 'none' // Keep the same scrolling position
128
+ },
128
129
  [`.${c.main} > *:first-child${ignoreSsrWarning}`]: {
129
130
  borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
130
131
  borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
@@ -54,9 +54,9 @@ const FilterPanelTrigger = exports.FilterPanelTrigger = (0, _forwardRef.forwardR
54
54
  };
55
55
  const resolvedClassName = typeof className === 'function' ? className(state) : className;
56
56
  const {
57
- filterPanelTriggerRef
57
+ triggers
58
58
  } = (0, _GridPanelContext.useGridPanelContext)();
59
- const handleRef = (0, _useForkRef.default)(ref, filterPanelTriggerRef);
59
+ const handleRef = (0, _useForkRef.default)(ref, triggers.filterPanel.setRef);
60
60
  const handleClick = event => {
61
61
  if (open) {
62
62
  apiRef.current.hidePreferences();
@@ -46,9 +46,9 @@ const FilterPanelTrigger = forwardRef(function FilterPanelTrigger(props, ref) {
46
46
  };
47
47
  const resolvedClassName = typeof className === 'function' ? className(state) : className;
48
48
  const {
49
- filterPanelTriggerRef
49
+ triggers
50
50
  } = useGridPanelContext();
51
- const handleRef = useForkRef(ref, filterPanelTriggerRef);
51
+ const handleRef = useForkRef(ref, triggers.filterPanel.setRef);
52
52
  const handleClick = event => {
53
53
  if (open) {
54
54
  apiRef.current.hidePreferences();
@@ -1,8 +1,14 @@
1
1
  import * as React from 'react';
2
+ export interface GridPanelTrigger {
3
+ setRef: (instance: HTMLElement | null) => void;
4
+ element: HTMLElement | null;
5
+ }
2
6
  export interface GridPanelContextValue {
3
- columnsPanelTriggerRef: React.RefObject<HTMLButtonElement | null>;
4
- filterPanelTriggerRef: React.RefObject<HTMLButtonElement | null>;
5
- aiAssistantPanelTriggerRef: React.RefObject<HTMLButtonElement | null>;
7
+ triggers: {
8
+ filterPanel: GridPanelTrigger;
9
+ aiAssistantPanel: GridPanelTrigger;
10
+ columnsPanel: GridPanelTrigger;
11
+ };
6
12
  }
7
13
  export declare const GridPanelContext: React.Context<GridPanelContextValue | undefined>;
8
14
  export declare function useGridPanelContext(): GridPanelContextValue;
@@ -1,8 +1,14 @@
1
1
  import * as React from 'react';
2
+ export interface GridPanelTrigger {
3
+ setRef: (instance: HTMLElement | null) => void;
4
+ element: HTMLElement | null;
5
+ }
2
6
  export interface GridPanelContextValue {
3
- columnsPanelTriggerRef: React.RefObject<HTMLButtonElement | null>;
4
- filterPanelTriggerRef: React.RefObject<HTMLButtonElement | null>;
5
- aiAssistantPanelTriggerRef: React.RefObject<HTMLButtonElement | null>;
7
+ triggers: {
8
+ filterPanel: GridPanelTrigger;
9
+ aiAssistantPanel: GridPanelTrigger;
10
+ columnsPanel: GridPanelTrigger;
11
+ };
6
12
  }
7
13
  export declare const GridPanelContext: React.Context<GridPanelContextValue | undefined>;
8
14
  export declare function useGridPanelContext(): GridPanelContextValue;
@@ -2,12 +2,14 @@
2
2
  'use client';
3
3
 
4
4
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
6
  Object.defineProperty(exports, "__esModule", {
6
7
  value: true
7
8
  });
8
9
  exports.GridPanelContext = void 0;
9
10
  exports.GridPanelContextProvider = GridPanelContextProvider;
10
11
  exports.useGridPanelContext = useGridPanelContext;
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
13
  var React = _interopRequireWildcard(require("react"));
12
14
  var _jsxRuntime = require("react/jsx-runtime");
13
15
  const GridPanelContext = exports.GridPanelContext = /*#__PURE__*/React.createContext(undefined);
@@ -22,14 +24,46 @@ function useGridPanelContext() {
22
24
  function GridPanelContextProvider({
23
25
  children
24
26
  }) {
25
- const columnsPanelTriggerRef = React.useRef(null);
26
- const filterPanelTriggerRef = React.useRef(null);
27
- const aiAssistantPanelTriggerRef = React.useRef(null);
27
+ const [triggerElements, setTriggerElements] = React.useState({
28
+ columnsPanel: null,
29
+ filterPanel: null,
30
+ aiAssistantPanel: null
31
+ });
32
+ const updateTriggerElement = React.useCallback((key, instance) => {
33
+ setTriggerElements(prev => {
34
+ if (prev[key] === instance) {
35
+ return prev;
36
+ }
37
+ return (0, _extends2.default)({}, prev, {
38
+ [key]: instance
39
+ });
40
+ });
41
+ }, []);
42
+ const setColumnsPanelTrigger = React.useCallback(instance => {
43
+ updateTriggerElement('columnsPanel', instance);
44
+ }, [updateTriggerElement]);
45
+ const setFilterPanelTrigger = React.useCallback(instance => {
46
+ updateTriggerElement('filterPanel', instance);
47
+ }, [updateTriggerElement]);
48
+ const setAiAssistantPanelTrigger = React.useCallback(instance => {
49
+ updateTriggerElement('aiAssistantPanel', instance);
50
+ }, [updateTriggerElement]);
28
51
  const value = React.useMemo(() => ({
29
- columnsPanelTriggerRef,
30
- filterPanelTriggerRef,
31
- aiAssistantPanelTriggerRef
32
- }), []);
52
+ triggers: {
53
+ columnsPanel: {
54
+ element: triggerElements.columnsPanel,
55
+ setRef: setColumnsPanelTrigger
56
+ },
57
+ filterPanel: {
58
+ element: triggerElements.filterPanel,
59
+ setRef: setFilterPanelTrigger
60
+ },
61
+ aiAssistantPanel: {
62
+ element: triggerElements.aiAssistantPanel,
63
+ setRef: setAiAssistantPanelTrigger
64
+ }
65
+ }
66
+ }), [triggerElements, setColumnsPanelTrigger, setFilterPanelTrigger, setAiAssistantPanelTrigger]);
33
67
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridPanelContext.Provider, {
34
68
  value: value,
35
69
  children: children
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
 
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
4
  import * as React from 'react';
4
5
  import { jsx as _jsx } from "react/jsx-runtime";
5
6
  export const GridPanelContext = /*#__PURE__*/React.createContext(undefined);
@@ -14,14 +15,46 @@ export function useGridPanelContext() {
14
15
  export function GridPanelContextProvider({
15
16
  children
16
17
  }) {
17
- const columnsPanelTriggerRef = React.useRef(null);
18
- const filterPanelTriggerRef = React.useRef(null);
19
- const aiAssistantPanelTriggerRef = React.useRef(null);
18
+ const [triggerElements, setTriggerElements] = React.useState({
19
+ columnsPanel: null,
20
+ filterPanel: null,
21
+ aiAssistantPanel: null
22
+ });
23
+ const updateTriggerElement = React.useCallback((key, instance) => {
24
+ setTriggerElements(prev => {
25
+ if (prev[key] === instance) {
26
+ return prev;
27
+ }
28
+ return _extends({}, prev, {
29
+ [key]: instance
30
+ });
31
+ });
32
+ }, []);
33
+ const setColumnsPanelTrigger = React.useCallback(instance => {
34
+ updateTriggerElement('columnsPanel', instance);
35
+ }, [updateTriggerElement]);
36
+ const setFilterPanelTrigger = React.useCallback(instance => {
37
+ updateTriggerElement('filterPanel', instance);
38
+ }, [updateTriggerElement]);
39
+ const setAiAssistantPanelTrigger = React.useCallback(instance => {
40
+ updateTriggerElement('aiAssistantPanel', instance);
41
+ }, [updateTriggerElement]);
20
42
  const value = React.useMemo(() => ({
21
- columnsPanelTriggerRef,
22
- filterPanelTriggerRef,
23
- aiAssistantPanelTriggerRef
24
- }), []);
43
+ triggers: {
44
+ columnsPanel: {
45
+ element: triggerElements.columnsPanel,
46
+ setRef: setColumnsPanelTrigger
47
+ },
48
+ filterPanel: {
49
+ element: triggerElements.filterPanel,
50
+ setRef: setFilterPanelTrigger
51
+ },
52
+ aiAssistantPanel: {
53
+ element: triggerElements.aiAssistantPanel,
54
+ setRef: setAiAssistantPanelTrigger
55
+ }
56
+ }
57
+ }), [triggerElements, setColumnsPanelTrigger, setFilterPanelTrigger, setAiAssistantPanelTrigger]);
25
58
  return /*#__PURE__*/_jsx(GridPanelContext.Provider, {
26
59
  value: value,
27
60
  children: children
@@ -20,21 +20,19 @@ function GridPreferencesPanel() {
20
20
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
21
21
  const preferencePanelState = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
22
22
  const {
23
- columnsPanelTriggerRef,
24
- filterPanelTriggerRef,
25
- aiAssistantPanelTriggerRef
23
+ triggers
26
24
  } = (0, _GridPanelContext.useGridPanelContext)();
27
25
  const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? _gridPreferencePanelsValue.GridPreferencePanelsValue.filters);
28
26
  let target = null;
29
27
  switch (preferencePanelState.openedPanelValue) {
30
28
  case _gridPreferencePanelsValue.GridPreferencePanelsValue.filters:
31
- target = filterPanelTriggerRef.current;
29
+ target = triggers.filterPanel.element;
32
30
  break;
33
31
  case _gridPreferencePanelsValue.GridPreferencePanelsValue.columns:
34
- target = columnsPanelTriggerRef.current;
32
+ target = triggers.columnsPanel.element;
35
33
  break;
36
34
  case _gridPreferencePanelsValue.GridPreferencePanelsValue.aiAssistant:
37
- target = aiAssistantPanelTriggerRef.current;
35
+ target = triggers.aiAssistantPanel.element;
38
36
  break;
39
37
  default:
40
38
  }
@@ -13,21 +13,19 @@ export function GridPreferencesPanel() {
13
13
  const rootProps = useGridRootProps();
14
14
  const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
15
15
  const {
16
- columnsPanelTriggerRef,
17
- filterPanelTriggerRef,
18
- aiAssistantPanelTriggerRef
16
+ triggers
19
17
  } = useGridPanelContext();
20
18
  const panelContent = apiRef.current.unstable_applyPipeProcessors('preferencePanel', null, preferencePanelState.openedPanelValue ?? GridPreferencePanelsValue.filters);
21
19
  let target = null;
22
20
  switch (preferencePanelState.openedPanelValue) {
23
21
  case GridPreferencePanelsValue.filters:
24
- target = filterPanelTriggerRef.current;
22
+ target = triggers.filterPanel.element;
25
23
  break;
26
24
  case GridPreferencePanelsValue.columns:
27
- target = columnsPanelTriggerRef.current;
25
+ target = triggers.columnsPanel.element;
28
26
  break;
29
27
  case GridPreferencePanelsValue.aiAssistant:
30
- target = aiAssistantPanelTriggerRef.current;
28
+ target = triggers.aiAssistantPanel.element;
31
29
  break;
32
30
  default:
33
31
  }
@@ -34,10 +34,10 @@ const GridToolbarColumnsButton = exports.GridToolbarColumnsButton = (0, _forward
34
34
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
35
35
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
36
36
  const {
37
- columnsPanelTriggerRef
37
+ triggers
38
38
  } = (0, _GridPanelContext.useGridPanelContext)();
39
39
  const preferencePanel = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
40
- const handleRef = (0, _useForkRef.default)(ref, columnsPanelTriggerRef);
40
+ const handleRef = (0, _useForkRef.default)(ref, triggers.columnsPanel.setRef);
41
41
  const showColumns = event => {
42
42
  if (preferencePanel.open && preferencePanel.openedPanelValue === _gridPreferencePanelsValue.GridPreferencePanelsValue.columns) {
43
43
  apiRef.current.hidePreferences();
@@ -27,10 +27,10 @@ const GridToolbarColumnsButton = forwardRef(function GridToolbarColumnsButton(pr
27
27
  const apiRef = useGridApiContext();
28
28
  const rootProps = useGridRootProps();
29
29
  const {
30
- columnsPanelTriggerRef
30
+ triggers
31
31
  } = useGridPanelContext();
32
32
  const preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);
33
- const handleRef = useForkRef(ref, columnsPanelTriggerRef);
33
+ const handleRef = useForkRef(ref, triggers.columnsPanel.setRef);
34
34
  const showColumns = event => {
35
35
  if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {
36
36
  apiRef.current.hidePreferences();
@@ -62,9 +62,9 @@ const GridToolbarFilterButton = exports.GridToolbarFilterButton = (0, _forwardRe
62
62
  const filterButtonId = (0, _useId.default)();
63
63
  const filterPanelId = (0, _useId.default)();
64
64
  const {
65
- filterPanelTriggerRef
65
+ triggers
66
66
  } = (0, _GridPanelContext.useGridPanelContext)();
67
- const handleRef = (0, _useForkRef.default)(ref, filterPanelTriggerRef);
67
+ const handleRef = (0, _useForkRef.default)(ref, triggers.filterPanel.setRef);
68
68
  const tooltipContentNode = React.useMemo(() => {
69
69
  if (preferencePanel.open) {
70
70
  return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
@@ -55,9 +55,9 @@ const GridToolbarFilterButton = forwardRef(function GridToolbarFilterButton(prop
55
55
  const filterButtonId = useId();
56
56
  const filterPanelId = useId();
57
57
  const {
58
- filterPanelTriggerRef
58
+ triggers
59
59
  } = useGridPanelContext();
60
- const handleRef = useForkRef(ref, filterPanelTriggerRef);
60
+ const handleRef = useForkRef(ref, triggers.filterPanel.setRef);
61
61
  const tooltipContentNode = React.useMemo(() => {
62
62
  if (preferencePanel.open) {
63
63
  return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
@@ -9,11 +9,9 @@ Object.defineProperty(exports, "__esModule", {
9
9
  exports.scrollbarSizeCssExpression = exports.ScrollbarCorner = exports.GridVirtualScrollbar = void 0;
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _styles = require("@mui/material/styles");
12
- var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
13
- var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
14
12
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
13
  var _forwardRef = require("@mui/x-internals/forwardRef");
16
- var _useOnMount = require("../../hooks/utils/useOnMount");
14
+ var _platform = require("@mui/x-internals/platform");
17
15
  var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
18
16
  var _hooks = require("../../hooks");
19
17
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
@@ -45,7 +43,13 @@ const Scrollbar = (0, _styles.styled)('div', {
45
43
  '&:hover': {
46
44
  zIndex: 70
47
45
  },
48
- '--size': scrollbarSizeCssExpression
46
+ '--size': scrollbarSizeCssExpression,
47
+ // [iOS-scrollbar-swap]
48
+ // On iOS, native scrollbars of the `GridVirtualScroller` are shown instead,
49
+ // so hide these to avoid a duplicate thumb.
50
+ [_platform.iOSMediaQuery]: {
51
+ display: 'none'
52
+ }
49
53
  });
50
54
  const ScrollbarVertical = (0, _styles.styled)(Scrollbar, {
51
55
  slot: 'internal'
@@ -91,64 +95,16 @@ const ScrollbarCorner = exports.ScrollbarCorner = (0, _styles.styled)(Scrollbar,
91
95
  const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forwardRef)(function GridVirtualScrollbar(props, ref) {
92
96
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
93
97
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
94
- const isLocked = React.useRef(false);
95
- const lastPosition = React.useRef(0);
96
- const scrollbarRef = React.useRef(null);
97
98
  const classes = useUtilityClasses(rootProps, props.position);
98
99
  const dimensions = (0, _hooks.useGridSelector)(apiRef, _hooks.gridDimensionsSelector);
99
100
  const propertyDimension = props.position === 'vertical' ? 'height' : 'width';
100
- const propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';
101
- const propertyScrollPosition = props.position === 'vertical' ? 'top' : 'left';
102
101
  const scrollbarInnerSize = props.position === 'horizontal' ? dimensions.minimumSize.width : dimensions.minimumSize.height - dimensions.headersTotalHeight;
103
- const onScrollerScroll = (0, _useEventCallback.default)(() => {
104
- const scrollbar = scrollbarRef.current;
105
- const scrollPosition = props.scrollPosition.current;
106
- if (!scrollbar) {
107
- return;
108
- }
109
- if (scrollPosition[propertyScrollPosition] === lastPosition.current) {
110
- return;
111
- }
112
- lastPosition.current = scrollPosition[propertyScrollPosition];
113
- if (isLocked.current) {
114
- isLocked.current = false;
115
- return;
116
- }
117
- isLocked.current = true;
118
- scrollbar[propertyScroll] = props.scrollPosition.current[propertyScrollPosition];
119
- });
120
- const onScrollbarScroll = (0, _useEventCallback.default)(() => {
121
- const scroller = apiRef.current.virtualScrollerRef.current;
122
- const scrollbar = scrollbarRef.current;
123
- if (!scrollbar) {
124
- return;
125
- }
126
- if (isLocked.current) {
127
- isLocked.current = false;
128
- return;
129
- }
130
- isLocked.current = true;
131
- scroller[propertyScroll] = scrollbar[propertyScroll];
132
- });
133
- (0, _useOnMount.useOnMount)(() => {
134
- const scroller = apiRef.current.virtualScrollerRef.current;
135
- const scrollbar = scrollbarRef.current;
136
- const options = {
137
- passive: true
138
- };
139
- scroller.addEventListener('scroll', onScrollerScroll, options);
140
- scrollbar.addEventListener('scroll', onScrollbarScroll, options);
141
- return () => {
142
- scroller.removeEventListener('scroll', onScrollerScroll, options);
143
- scrollbar.removeEventListener('scroll', onScrollbarScroll, options);
144
- };
145
- });
146
102
  const Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;
147
103
  const scrollbarInnerStyle = React.useMemo(() => ({
148
104
  [propertyDimension]: `${scrollbarInnerSize}px`
149
105
  }), [propertyDimension, scrollbarInnerSize]);
150
106
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
151
- ref: (0, _useForkRef.default)(ref, scrollbarRef),
107
+ ref: ref,
152
108
  className: classes.root,
153
109
  tabIndex: -1,
154
110
  "aria-hidden": "true"
@@ -2,11 +2,9 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { styled } from '@mui/material/styles';
5
- import useEventCallback from '@mui/utils/useEventCallback';
6
- import useForkRef from '@mui/utils/useForkRef';
7
5
  import composeClasses from '@mui/utils/composeClasses';
8
6
  import { forwardRef } from '@mui/x-internals/forwardRef';
9
- import { useOnMount } from "../../hooks/utils/useOnMount.mjs";
7
+ import { iOSMediaQuery } from '@mui/x-internals/platform';
10
8
  import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.mjs";
11
9
  import { gridDimensionsSelector, useGridSelector } from "../../hooks/index.mjs";
12
10
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.mjs";
@@ -38,7 +36,13 @@ const Scrollbar = styled('div', {
38
36
  '&:hover': {
39
37
  zIndex: 70
40
38
  },
41
- '--size': scrollbarSizeCssExpression
39
+ '--size': scrollbarSizeCssExpression,
40
+ // [iOS-scrollbar-swap]
41
+ // On iOS, native scrollbars of the `GridVirtualScroller` are shown instead,
42
+ // so hide these to avoid a duplicate thumb.
43
+ [iOSMediaQuery]: {
44
+ display: 'none'
45
+ }
42
46
  });
43
47
  const ScrollbarVertical = styled(Scrollbar, {
44
48
  slot: 'internal'
@@ -84,64 +88,16 @@ export const ScrollbarCorner = styled(Scrollbar, {
84
88
  const GridVirtualScrollbar = forwardRef(function GridVirtualScrollbar(props, ref) {
85
89
  const apiRef = useGridPrivateApiContext();
86
90
  const rootProps = useGridRootProps();
87
- const isLocked = React.useRef(false);
88
- const lastPosition = React.useRef(0);
89
- const scrollbarRef = React.useRef(null);
90
91
  const classes = useUtilityClasses(rootProps, props.position);
91
92
  const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
92
93
  const propertyDimension = props.position === 'vertical' ? 'height' : 'width';
93
- const propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';
94
- const propertyScrollPosition = props.position === 'vertical' ? 'top' : 'left';
95
94
  const scrollbarInnerSize = props.position === 'horizontal' ? dimensions.minimumSize.width : dimensions.minimumSize.height - dimensions.headersTotalHeight;
96
- const onScrollerScroll = useEventCallback(() => {
97
- const scrollbar = scrollbarRef.current;
98
- const scrollPosition = props.scrollPosition.current;
99
- if (!scrollbar) {
100
- return;
101
- }
102
- if (scrollPosition[propertyScrollPosition] === lastPosition.current) {
103
- return;
104
- }
105
- lastPosition.current = scrollPosition[propertyScrollPosition];
106
- if (isLocked.current) {
107
- isLocked.current = false;
108
- return;
109
- }
110
- isLocked.current = true;
111
- scrollbar[propertyScroll] = props.scrollPosition.current[propertyScrollPosition];
112
- });
113
- const onScrollbarScroll = useEventCallback(() => {
114
- const scroller = apiRef.current.virtualScrollerRef.current;
115
- const scrollbar = scrollbarRef.current;
116
- if (!scrollbar) {
117
- return;
118
- }
119
- if (isLocked.current) {
120
- isLocked.current = false;
121
- return;
122
- }
123
- isLocked.current = true;
124
- scroller[propertyScroll] = scrollbar[propertyScroll];
125
- });
126
- useOnMount(() => {
127
- const scroller = apiRef.current.virtualScrollerRef.current;
128
- const scrollbar = scrollbarRef.current;
129
- const options = {
130
- passive: true
131
- };
132
- scroller.addEventListener('scroll', onScrollerScroll, options);
133
- scrollbar.addEventListener('scroll', onScrollbarScroll, options);
134
- return () => {
135
- scroller.removeEventListener('scroll', onScrollerScroll, options);
136
- scrollbar.removeEventListener('scroll', onScrollbarScroll, options);
137
- };
138
- });
139
95
  const Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;
140
96
  const scrollbarInnerStyle = React.useMemo(() => ({
141
97
  [propertyDimension]: `${scrollbarInnerSize}px`
142
98
  }), [propertyDimension, scrollbarInnerSize]);
143
99
  return /*#__PURE__*/_jsx(Container, {
144
- ref: useForkRef(ref, scrollbarRef),
100
+ ref: ref,
145
101
  className: classes.root,
146
102
  tabIndex: -1,
147
103
  "aria-hidden": "true"
@@ -10,6 +10,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _styles = require("@mui/material/styles");
12
12
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
13
+ var _platform = require("@mui/x-internals/platform");
13
14
  var _gridDimensionsSelectors = require("../../hooks/features/dimensions/gridDimensionsSelectors");
14
15
  var _rows = require("../../hooks/features/rows");
15
16
  var _GridScrollArea = require("../GridScrollArea");
@@ -64,6 +65,17 @@ const Scroller = (0, _styles.styled)('div', {
64
65
  '&::-webkit-scrollbar': {
65
66
  display: 'none' /* Safari and Chrome */
66
67
  },
68
+ // [iOS-scrollbar-swap]
69
+ // On iOS, virtual scrollbars do not show a thumb unless the user scrolls the element directly:
70
+ // https://github.com/mui/mui-x/issues/22386
71
+ // So keep this scroller's own native scrollbars and hide the ones in `GridVirtualScrollbar`
72
+ // instead to avoid a duplicate thumb.
73
+ [_platform.iOSMediaQuery]: {
74
+ scrollbarWidth: 'auto',
75
+ '&::-webkit-scrollbar': {
76
+ display: 'block'
77
+ }
78
+ },
67
79
  '@media print': {
68
80
  overflow: 'hidden'
69
81
  },
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { styled } from '@mui/material/styles';
4
4
  import composeClasses from '@mui/utils/composeClasses';
5
+ import { iOSMediaQuery } from '@mui/x-internals/platform';
5
6
  import { gridHasBottomFillerSelector, gridHasScrollXSelector, gridHasScrollYSelector } from "../../hooks/features/dimensions/gridDimensionsSelectors.mjs";
6
7
  import { gridRowTreeSelector } from "../../hooks/features/rows/index.mjs";
7
8
  import { GridScrollArea } from "../GridScrollArea.mjs";
@@ -56,6 +57,17 @@ const Scroller = styled('div', {
56
57
  '&::-webkit-scrollbar': {
57
58
  display: 'none' /* Safari and Chrome */
58
59
  },
60
+ // [iOS-scrollbar-swap]
61
+ // On iOS, virtual scrollbars do not show a thumb unless the user scrolls the element directly:
62
+ // https://github.com/mui/mui-x/issues/22386
63
+ // So keep this scroller's own native scrollbars and hide the ones in `GridVirtualScrollbar`
64
+ // instead to avoid a duplicate thumb.
65
+ [iOSMediaQuery]: {
66
+ scrollbarWidth: 'auto',
67
+ '&::-webkit-scrollbar': {
68
+ display: 'block'
69
+ }
70
+ },
59
71
  '@media print': {
60
72
  overflow: 'hidden'
61
73
  },
@@ -25,7 +25,30 @@ var _gridColumnsInterfaces = require("../columns/gridColumnsInterfaces");
25
25
  var _columns = require("../columns");
26
26
  var _dimensions = require("../dimensions");
27
27
  var _headerFiltering = require("../headerFiltering");
28
+ var _pagination = require("../pagination");
28
29
  var _columnResizeSelector = require("./columnResizeSelector");
30
+ function isRenderContextReadyForAutosizeOnMount(apiRef) {
31
+ const dimensions = (0, _dimensions.gridDimensionsSelector)(apiRef);
32
+ if (!dimensions.isReady) {
33
+ return false;
34
+ }
35
+ const {
36
+ rows
37
+ } = (0, _pagination.gridVisibleRowsSelector)(apiRef);
38
+ if (rows.length === 0) {
39
+ return true;
40
+ }
41
+ const renderContext = (0, _virtualization.gridRenderContextSelector)(apiRef);
42
+ if (renderContext.lastRowIndex <= renderContext.firstRowIndex) {
43
+ return false;
44
+ }
45
+
46
+ // If all rows fit in the viewport, wait for them all; otherwise we can only measure the rendered rows.
47
+ if (!dimensions.hasScrollY) {
48
+ return renderContext.firstRowIndex === 0 && renderContext.lastRowIndex >= rows.length;
49
+ }
50
+ return true;
51
+ }
29
52
  function trackFinger(event, currentTouchId) {
30
53
  if (currentTouchId !== undefined && event.changedTouches) {
31
54
  for (let i = 0; i < event.changedTouches.length; i += 1) {
@@ -589,10 +612,41 @@ const useGridColumnResize = (apiRef, props) => {
589
612
  React.useEffect(() => stopListening, [stopListening]);
590
613
  (0, _utils.useOnMount)(() => {
591
614
  if (props.autosizeOnMount) {
592
- Promise.resolve().then(() => {
615
+ let frameHandle;
616
+ let unsubscribeStateChange;
617
+ let unsubscribeRenderedRowsIntervalChange;
618
+ const cleanupListeners = () => {
619
+ unsubscribeStateChange?.();
620
+ unsubscribeRenderedRowsIntervalChange?.();
621
+ unsubscribeStateChange = undefined;
622
+ unsubscribeRenderedRowsIntervalChange = undefined;
623
+ };
624
+ const runAutosize = () => {
625
+ frameHandle = undefined;
626
+ cleanupListeners();
593
627
  apiRef.current.autosizeColumns(props.autosizeOptions);
594
- });
628
+ };
629
+ const scheduleAutosize = () => {
630
+ if (frameHandle === undefined) {
631
+ frameHandle = requestAnimationFrame(runAutosize);
632
+ }
633
+ };
634
+ const checkRenderContext = () => {
635
+ if (isRenderContextReadyForAutosizeOnMount(apiRef)) {
636
+ scheduleAutosize();
637
+ }
638
+ };
639
+ unsubscribeStateChange = apiRef.current.subscribeEvent('stateChange', checkRenderContext);
640
+ unsubscribeRenderedRowsIntervalChange = apiRef.current.subscribeEvent('renderedRowsIntervalChange', checkRenderContext);
641
+ checkRenderContext();
642
+ return () => {
643
+ cleanupListeners();
644
+ if (frameHandle !== undefined) {
645
+ cancelAnimationFrame(frameHandle);
646
+ }
647
+ };
595
648
  }
649
+ return undefined;
596
650
  });
597
651
  (0, _utils.useGridNativeEventListener)(apiRef, () => apiRef.current.columnHeadersContainerRef?.current, 'touchstart', handleTouchStart, {
598
652
  passive: true
@@ -10,7 +10,7 @@ import { findGridCellElementsFromCol, findGridElement, findLeftPinnedCellsAfterC
10
10
  import { DEFAULT_GRID_AUTOSIZE_OPTIONS } from "./gridColumnResizeApi.mjs";
11
11
  import { gridClasses } from "../../../constants/gridClasses.mjs";
12
12
  import { useGridEvent, useGridApiMethod, useGridEventPriority, useGridLogger, useGridNativeEventListener, useGridSelector, useOnMount } from "../../utils/index.mjs";
13
- import { gridVirtualizationColumnEnabledSelector } from "../virtualization/index.mjs";
13
+ import { gridRenderContextSelector, gridVirtualizationColumnEnabledSelector } from "../virtualization/index.mjs";
14
14
  import { createControllablePromise } from "../../../utils/createControllablePromise.mjs";
15
15
  import { clamp } from "../../../utils/utils.mjs";
16
16
  import { useTimeout } from "../../utils/useTimeout.mjs";
@@ -18,7 +18,30 @@ import { GridPinnedColumnPosition } from "../columns/gridColumnsInterfaces.mjs";
18
18
  import { gridColumnsStateSelector } from "../columns/index.mjs";
19
19
  import { gridDimensionsSelector } from "../dimensions/index.mjs";
20
20
  import { gridHeaderFilteringEnabledSelector } from "../headerFiltering/index.mjs";
21
+ import { gridVisibleRowsSelector } from "../pagination/index.mjs";
21
22
  import { gridResizingColumnFieldSelector } from "./columnResizeSelector.mjs";
23
+ function isRenderContextReadyForAutosizeOnMount(apiRef) {
24
+ const dimensions = gridDimensionsSelector(apiRef);
25
+ if (!dimensions.isReady) {
26
+ return false;
27
+ }
28
+ const {
29
+ rows
30
+ } = gridVisibleRowsSelector(apiRef);
31
+ if (rows.length === 0) {
32
+ return true;
33
+ }
34
+ const renderContext = gridRenderContextSelector(apiRef);
35
+ if (renderContext.lastRowIndex <= renderContext.firstRowIndex) {
36
+ return false;
37
+ }
38
+
39
+ // If all rows fit in the viewport, wait for them all; otherwise we can only measure the rendered rows.
40
+ if (!dimensions.hasScrollY) {
41
+ return renderContext.firstRowIndex === 0 && renderContext.lastRowIndex >= rows.length;
42
+ }
43
+ return true;
44
+ }
22
45
  function trackFinger(event, currentTouchId) {
23
46
  if (currentTouchId !== undefined && event.changedTouches) {
24
47
  for (let i = 0; i < event.changedTouches.length; i += 1) {
@@ -581,10 +604,41 @@ export const useGridColumnResize = (apiRef, props) => {
581
604
  React.useEffect(() => stopListening, [stopListening]);
582
605
  useOnMount(() => {
583
606
  if (props.autosizeOnMount) {
584
- Promise.resolve().then(() => {
607
+ let frameHandle;
608
+ let unsubscribeStateChange;
609
+ let unsubscribeRenderedRowsIntervalChange;
610
+ const cleanupListeners = () => {
611
+ unsubscribeStateChange?.();
612
+ unsubscribeRenderedRowsIntervalChange?.();
613
+ unsubscribeStateChange = undefined;
614
+ unsubscribeRenderedRowsIntervalChange = undefined;
615
+ };
616
+ const runAutosize = () => {
617
+ frameHandle = undefined;
618
+ cleanupListeners();
585
619
  apiRef.current.autosizeColumns(props.autosizeOptions);
586
- });
620
+ };
621
+ const scheduleAutosize = () => {
622
+ if (frameHandle === undefined) {
623
+ frameHandle = requestAnimationFrame(runAutosize);
624
+ }
625
+ };
626
+ const checkRenderContext = () => {
627
+ if (isRenderContextReadyForAutosizeOnMount(apiRef)) {
628
+ scheduleAutosize();
629
+ }
630
+ };
631
+ unsubscribeStateChange = apiRef.current.subscribeEvent('stateChange', checkRenderContext);
632
+ unsubscribeRenderedRowsIntervalChange = apiRef.current.subscribeEvent('renderedRowsIntervalChange', checkRenderContext);
633
+ checkRenderContext();
634
+ return () => {
635
+ cleanupListeners();
636
+ if (frameHandle !== undefined) {
637
+ cancelAnimationFrame(frameHandle);
638
+ }
639
+ };
587
640
  }
641
+ return undefined;
588
642
  });
589
643
  useGridNativeEventListener(apiRef, () => apiRef.current.columnHeadersContainerRef?.current, 'touchstart', handleTouchStart, {
590
644
  passive: true
@@ -149,7 +149,7 @@ const isAutogeneratedRowNode = rowNode => rowNode.type === 'skeletonRow' || rowN
149
149
  exports.isAutogeneratedRowNode = isAutogeneratedRowNode;
150
150
  const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows, directChildrenOnly) => {
151
151
  const node = tree[parentId];
152
- if (node.type !== 'group') {
152
+ if (node?.type !== 'group') {
153
153
  return [];
154
154
  }
155
155
  const validDescendants = [];
@@ -131,7 +131,7 @@ export const isAutogeneratedRow = row => GRID_ID_AUTOGENERATED in row;
131
131
  export const isAutogeneratedRowNode = rowNode => rowNode.type === 'skeletonRow' || rowNode.type === 'footer' || rowNode.type === 'group' && rowNode.isAutoGenerated || rowNode.type === 'pinnedRow' && rowNode.isAutoGenerated;
132
132
  export const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows, directChildrenOnly) => {
133
133
  const node = tree[parentId];
134
- if (node.type !== 'group') {
134
+ if (node?.type !== 'group') {
135
135
  return [];
136
136
  }
137
137
  const validDescendants = [];
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v8.29.1
2
+ * @mui/x-data-grid v8.29.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v8.29.1
2
+ * @mui/x-data-grid v8.29.2
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "8.29.1",
3
+ "version": "8.29.2",
4
4
  "author": "MUI Team",
5
5
  "description": "The Community plan edition of the MUI X Data Grid components.",
6
6
  "license": "MIT",
@@ -42,8 +42,8 @@
42
42
  "clsx": "^2.1.1",
43
43
  "prop-types": "^15.8.1",
44
44
  "use-sync-external-store": "^1.6.0",
45
- "@mui/x-internals": "8.29.0",
46
- "@mui/x-virtualizer": "0.4.0"
45
+ "@mui/x-internals": "8.29.2",
46
+ "@mui/x-virtualizer": "0.4.1"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@emotion/react": "^11.9.0",
@@ -166,98 +166,98 @@
166
166
  }
167
167
  },
168
168
  "./context": {
169
- "import": {
170
- "types": "./context/index.d.mts",
171
- "default": "./context/index.mjs"
172
- },
173
169
  "require": {
174
170
  "types": "./context/index.d.ts",
175
171
  "default": "./context/index.js"
176
172
  },
173
+ "import": {
174
+ "types": "./context/index.d.mts",
175
+ "default": "./context/index.mjs"
176
+ },
177
177
  "default": {
178
178
  "types": "./context/index.d.mts",
179
179
  "default": "./context/index.mjs"
180
180
  }
181
181
  },
182
182
  "./hooks": {
183
- "import": {
184
- "types": "./hooks/index.d.mts",
185
- "default": "./hooks/index.mjs"
186
- },
187
183
  "require": {
188
184
  "types": "./hooks/index.d.ts",
189
185
  "default": "./hooks/index.js"
190
186
  },
187
+ "import": {
188
+ "types": "./hooks/index.d.mts",
189
+ "default": "./hooks/index.mjs"
190
+ },
191
191
  "default": {
192
192
  "types": "./hooks/index.d.mts",
193
193
  "default": "./hooks/index.mjs"
194
194
  }
195
195
  },
196
196
  "./internals": {
197
- "import": {
198
- "types": "./internals/index.d.mts",
199
- "default": "./internals/index.mjs"
200
- },
201
197
  "require": {
202
198
  "types": "./internals/index.d.ts",
203
199
  "default": "./internals/index.js"
204
200
  },
201
+ "import": {
202
+ "types": "./internals/index.d.mts",
203
+ "default": "./internals/index.mjs"
204
+ },
205
205
  "default": {
206
206
  "types": "./internals/index.d.mts",
207
207
  "default": "./internals/index.mjs"
208
208
  }
209
209
  },
210
210
  "./locales": {
211
- "import": {
212
- "types": "./locales/index.d.mts",
213
- "default": "./locales/index.mjs"
214
- },
215
211
  "require": {
216
212
  "types": "./locales/index.d.ts",
217
213
  "default": "./locales/index.js"
218
214
  },
215
+ "import": {
216
+ "types": "./locales/index.d.mts",
217
+ "default": "./locales/index.mjs"
218
+ },
219
219
  "default": {
220
220
  "types": "./locales/index.d.mts",
221
221
  "default": "./locales/index.mjs"
222
222
  }
223
223
  },
224
224
  "./models": {
225
- "import": {
226
- "types": "./models/index.d.mts",
227
- "default": "./models/index.mjs"
228
- },
229
225
  "require": {
230
226
  "types": "./models/index.d.ts",
231
227
  "default": "./models/index.js"
232
228
  },
229
+ "import": {
230
+ "types": "./models/index.d.mts",
231
+ "default": "./models/index.mjs"
232
+ },
233
233
  "default": {
234
234
  "types": "./models/index.d.mts",
235
235
  "default": "./models/index.mjs"
236
236
  }
237
237
  },
238
238
  "./themeAugmentation": {
239
- "import": {
240
- "types": "./themeAugmentation/index.d.mts",
241
- "default": "./themeAugmentation/index.mjs"
242
- },
243
239
  "require": {
244
240
  "types": "./themeAugmentation/index.d.ts",
245
241
  "default": "./themeAugmentation/index.js"
246
242
  },
243
+ "import": {
244
+ "types": "./themeAugmentation/index.d.mts",
245
+ "default": "./themeAugmentation/index.mjs"
246
+ },
247
247
  "default": {
248
248
  "types": "./themeAugmentation/index.d.mts",
249
249
  "default": "./themeAugmentation/index.mjs"
250
250
  }
251
251
  },
252
252
  "./utils": {
253
- "import": {
254
- "types": "./utils/index.d.mts",
255
- "default": "./utils/index.mjs"
256
- },
257
253
  "require": {
258
254
  "types": "./utils/index.d.ts",
259
255
  "default": "./utils/index.js"
260
256
  },
257
+ "import": {
258
+ "types": "./utils/index.d.mts",
259
+ "default": "./utils/index.mjs"
260
+ },
261
261
  "default": {
262
262
  "types": "./utils/index.d.mts",
263
263
  "default": "./utils/index.mjs"