@mui/x-charts-premium 9.4.0 → 9.6.0
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.
- package/BarChartPremium/BarChartPremium.js +5 -3
- package/BarChartPremium/BarChartPremium.mjs +5 -3
- package/BarChartPremium/BarPlotPremium.js +1 -1
- package/BarChartPremium/BarPlotPremium.mjs +1 -1
- package/BarChartPremium/RangeBar/RangeBarPlot.js +2 -2
- package/BarChartPremium/RangeBar/RangeBarPlot.mjs +2 -2
- package/BarChartPremium/RangeBar/seriesConfig/getColor.js +2 -5
- package/BarChartPremium/RangeBar/seriesConfig/getColor.mjs +2 -5
- package/BarChartPremium/webgl/useWebGLBarLikePlotData.d.mts +1 -0
- package/BarChartPremium/webgl/useWebGLBarLikePlotData.d.ts +1 -0
- package/BarChartPremium/webgl/useWebGLBarLikePlotData.js +66 -7
- package/BarChartPremium/webgl/useWebGLBarLikePlotData.mjs +66 -7
- package/CHANGELOG.md +251 -0
- package/CandlestickChart/CandlestickChart.js +1 -1
- package/CandlestickChart/CandlestickChart.mjs +1 -1
- package/CandlestickChart/index.d.mts +11 -2
- package/CandlestickChart/index.d.ts +11 -2
- package/CandlestickChart/index.js +15 -3
- package/CandlestickChart/index.mjs +16 -2
- package/CandlestickChart/seriesConfig/getColor.js +2 -5
- package/CandlestickChart/seriesConfig/getColor.mjs +2 -5
- package/ChartsDataProviderPremium/ChartsDataProviderPremium.js +7 -3
- package/ChartsDataProviderPremium/ChartsDataProviderPremium.mjs +7 -3
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.js +11 -3
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.mjs +11 -3
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.plugins.d.mts +1 -1
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.plugins.d.ts +1 -1
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.js +11 -3
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.mjs +11 -3
- package/ChartsRenderer/ChartsRenderer.js +1 -1
- package/ChartsRenderer/ChartsRenderer.mjs +1 -1
- package/HeatmapPremium/HeatmapPremium.js +5 -3
- package/HeatmapPremium/HeatmapPremium.mjs +5 -3
- package/Map/GeoDataPlot.js +1 -1
- package/Map/GeoDataPlot.mjs +1 -1
- package/Map/MapShape.d.mts +3 -0
- package/Map/MapShape.d.ts +3 -0
- package/Map/MapShape.js +10 -1
- package/Map/MapShape.mjs +9 -0
- package/Map/MapShapePlot.d.mts +5 -1
- package/Map/MapShapePlot.d.ts +5 -1
- package/Map/MapShapePlot.js +27 -3
- package/Map/MapShapePlot.mjs +28 -4
- package/Map/index.d.mts +3 -1
- package/Map/index.d.ts +3 -1
- package/Map/seriesConfig/getColor.js +4 -9
- package/Map/seriesConfig/getColor.mjs +4 -9
- package/Map/seriesConfig/index.js +2 -0
- package/Map/seriesConfig/index.mjs +2 -0
- package/Map/seriesConfig/tooltip.js +5 -1
- package/Map/seriesConfig/tooltip.mjs +5 -1
- package/Map/seriesConfig/tooltipPosition.d.mts +3 -0
- package/Map/seriesConfig/tooltipPosition.d.ts +3 -0
- package/Map/seriesConfig/tooltipPosition.js +64 -0
- package/Map/seriesConfig/tooltipPosition.mjs +58 -0
- package/RadialBarChart/RadialBarChart.d.mts +1 -1
- package/RadialBarChart/RadialBarChart.d.ts +1 -1
- package/RadialBarChart/RadialBarChart.js +3 -3
- package/RadialBarChart/RadialBarChart.mjs +2 -2
- package/RadialBarChart/RadialBarPlot.js +1 -1
- package/RadialBarChart/RadialBarPlot.mjs +1 -1
- package/RadialBarChart/index.d.mts +4 -0
- package/RadialBarChart/index.d.ts +4 -0
- package/RadialBarChart/index.js +8 -1
- package/RadialBarChart/index.mjs +6 -0
- package/RadialLineChart/RadialAreaPlot.d.mts +5 -1
- package/RadialLineChart/RadialAreaPlot.d.ts +5 -1
- package/RadialLineChart/RadialAreaPlot.js +10 -1
- package/RadialLineChart/RadialAreaPlot.mjs +11 -2
- package/RadialLineChart/RadialLineChart.d.mts +1 -1
- package/RadialLineChart/RadialLineChart.d.ts +1 -1
- package/RadialLineChart/RadialLineChart.js +5 -5
- package/RadialLineChart/RadialLineChart.mjs +6 -6
- package/RadialLineChart/RadialLineHighlightElement.d.mts +3 -0
- package/RadialLineChart/RadialLineHighlightElement.d.ts +3 -0
- package/RadialLineChart/RadialLineHighlightElement.js +10 -1
- package/RadialLineChart/RadialLineHighlightElement.mjs +9 -0
- package/RadialLineChart/RadialLineHighlightPlot.d.mts +3 -0
- package/RadialLineChart/RadialLineHighlightPlot.d.ts +3 -0
- package/RadialLineChart/RadialLineHighlightPlot.js +18 -1
- package/RadialLineChart/RadialLineHighlightPlot.mjs +17 -0
- package/RadialLineChart/RadialLinePlot.d.mts +5 -1
- package/RadialLineChart/RadialLinePlot.d.ts +5 -1
- package/RadialLineChart/RadialLinePlot.js +10 -1
- package/RadialLineChart/RadialLinePlot.mjs +11 -2
- package/RadialLineChart/RadialMarkPlot.d.mts +5 -1
- package/RadialLineChart/RadialMarkPlot.d.ts +5 -1
- package/RadialLineChart/RadialMarkPlot.js +10 -1
- package/RadialLineChart/RadialMarkPlot.mjs +11 -2
- package/RadialLineChart/index.d.mts +4 -0
- package/RadialLineChart/index.d.ts +4 -0
- package/RadialLineChart/index.js +16 -1
- package/RadialLineChart/index.mjs +6 -0
- package/ScatterChartPremium/ScatterChartPremium.js +9 -5
- package/ScatterChartPremium/ScatterChartPremium.mjs +10 -6
- package/ScatterChartPremium/ScatterChartPremium.plugins.d.mts +1 -1
- package/ScatterChartPremium/ScatterChartPremium.plugins.d.ts +1 -1
- package/ScatterChartPremium/ScatterPlotPremium.d.mts +20 -4
- package/ScatterChartPremium/ScatterPlotPremium.d.ts +20 -4
- package/ScatterChartPremium/ScatterPlotPremium.js +34 -1
- package/ScatterChartPremium/ScatterPlotPremium.mjs +36 -2
- package/ScatterChartPremium/index.d.mts +1 -1
- package/ScatterChartPremium/index.d.ts +1 -1
- package/context/ChartPremiumApi.d.mts +4 -1
- package/context/ChartPremiumApi.d.ts +4 -1
- package/hooks/useGeoData.js +1 -1
- package/hooks/useGeoData.mjs +2 -2
- package/index.d.mts +1 -1
- package/index.d.ts +1 -1
- package/index.js +8 -1
- package/index.mjs +2 -2
- package/internals/plugins/allPlugins.d.mts +5 -5
- package/internals/plugins/allPlugins.d.ts +5 -5
- package/internals/plugins/allPlugins.js +2 -2
- package/internals/plugins/allPlugins.mjs +3 -3
- package/internals/plugins/useGeoProjection/useGeoProjection.d.mts +1 -1
- package/internals/plugins/useGeoProjection/useGeoProjection.d.ts +1 -1
- package/internals/plugins/useGeoProjection/useGeoProjection.js +32 -3
- package/internals/plugins/useGeoProjection/useGeoProjection.mjs +32 -3
- package/internals/plugins/useGeoProjection/useGeoProjection.selectors.d.mts +12 -34
- package/internals/plugins/useGeoProjection/useGeoProjection.selectors.d.ts +12 -34
- package/internals/plugins/useGeoProjection/useGeoProjection.selectors.js +8 -129
- package/internals/plugins/useGeoProjection/useGeoProjection.selectors.mjs +8 -128
- package/internals/plugins/useGeoProjection/useGeoProjection.types.d.mts +2 -55
- package/internals/plugins/useGeoProjection/useGeoProjection.types.d.ts +2 -55
- package/models/seriesType/mapShape.d.mts +1 -1
- package/models/seriesType/mapShape.d.ts +1 -1
- package/models/seriesType/ohlc.d.mts +1 -1
- package/models/seriesType/ohlc.d.ts +1 -1
- package/models/seriesType/radialBar.d.mts +1 -1
- package/models/seriesType/radialBar.d.ts +1 -1
- package/models/seriesType/radialLine.d.mts +1 -1
- package/models/seriesType/radialLine.d.ts +1 -1
- package/models/seriesType/rangeBar.d.mts +1 -1
- package/models/seriesType/rangeBar.d.ts +1 -1
- package/package.json +9 -6
|
@@ -107,7 +107,7 @@ const BarChartPremium = exports.BarChartPremium = /*#__PURE__*/React.forwardRef(
|
|
|
107
107
|
}));
|
|
108
108
|
});
|
|
109
109
|
if (process.env.NODE_ENV !== "production") BarChartPremium.displayName = "BarChartPremium";
|
|
110
|
-
process.env.NODE_ENV !== "production" ? BarChartPremium.propTypes = {
|
|
110
|
+
process.env.NODE_ENV !== "production" ? BarChartPremium.propTypes /* remove-proptypes */ = {
|
|
111
111
|
// ----------------------------- Warning --------------------------------
|
|
112
112
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
113
113
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -458,11 +458,13 @@ process.env.NODE_ENV !== "production" ? BarChartPremium.propTypes = {
|
|
|
458
458
|
color: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string.isRequired), _propTypes.default.func]).isRequired,
|
|
459
459
|
max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
460
460
|
min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
|
|
461
|
-
type: _propTypes.default.oneOf(['continuous']).isRequired
|
|
461
|
+
type: _propTypes.default.oneOf(['continuous']).isRequired,
|
|
462
|
+
unknownColor: _propTypes.default.string
|
|
462
463
|
}), _propTypes.default.shape({
|
|
463
464
|
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
464
465
|
thresholds: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]).isRequired).isRequired,
|
|
465
|
-
type: _propTypes.default.oneOf(['piecewise']).isRequired
|
|
466
|
+
type: _propTypes.default.oneOf(['piecewise']).isRequired,
|
|
467
|
+
unknownColor: _propTypes.default.string
|
|
466
468
|
}), _propTypes.default.shape({
|
|
467
469
|
colors: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,
|
|
468
470
|
type: _propTypes.default.oneOf(['ordinal']).isRequired,
|
|
@@ -100,7 +100,7 @@ const BarChartPremium = /*#__PURE__*/React.forwardRef(function BarChartPremium(i
|
|
|
100
100
|
}));
|
|
101
101
|
});
|
|
102
102
|
if (process.env.NODE_ENV !== "production") BarChartPremium.displayName = "BarChartPremium";
|
|
103
|
-
process.env.NODE_ENV !== "production" ? BarChartPremium.propTypes = {
|
|
103
|
+
process.env.NODE_ENV !== "production" ? BarChartPremium.propTypes /* remove-proptypes */ = {
|
|
104
104
|
// ----------------------------- Warning --------------------------------
|
|
105
105
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
106
106
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -451,11 +451,13 @@ process.env.NODE_ENV !== "production" ? BarChartPremium.propTypes = {
|
|
|
451
451
|
color: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]).isRequired,
|
|
452
452
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
453
453
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
454
|
-
type: PropTypes.oneOf(['continuous']).isRequired
|
|
454
|
+
type: PropTypes.oneOf(['continuous']).isRequired,
|
|
455
|
+
unknownColor: PropTypes.string
|
|
455
456
|
}), PropTypes.shape({
|
|
456
457
|
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
457
458
|
thresholds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired).isRequired,
|
|
458
|
-
type: PropTypes.oneOf(['piecewise']).isRequired
|
|
459
|
+
type: PropTypes.oneOf(['piecewise']).isRequired,
|
|
460
|
+
unknownColor: PropTypes.string
|
|
459
461
|
}), PropTypes.shape({
|
|
460
462
|
colors: PropTypes.arrayOf(PropTypes.string).isRequired,
|
|
461
463
|
type: PropTypes.oneOf(['ordinal']).isRequired,
|
|
@@ -31,7 +31,7 @@ function BarPlotPremium(_ref) {
|
|
|
31
31
|
borderRadius: borderRadius
|
|
32
32
|
}, other));
|
|
33
33
|
}
|
|
34
|
-
process.env.NODE_ENV !== "production" ? BarPlotPremium.propTypes = {
|
|
34
|
+
process.env.NODE_ENV !== "production" ? BarPlotPremium.propTypes /* remove-proptypes */ = {
|
|
35
35
|
// ----------------------------- Warning --------------------------------
|
|
36
36
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
37
37
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -24,7 +24,7 @@ function BarPlotPremium(_ref) {
|
|
|
24
24
|
borderRadius: borderRadius
|
|
25
25
|
}, other));
|
|
26
26
|
}
|
|
27
|
-
process.env.NODE_ENV !== "production" ? BarPlotPremium.propTypes = {
|
|
27
|
+
process.env.NODE_ENV !== "production" ? BarPlotPremium.propTypes /* remove-proptypes */ = {
|
|
28
28
|
// ----------------------------- Warning --------------------------------
|
|
29
29
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
30
30
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -127,7 +127,7 @@ function RangeBarSvgPlot(props) {
|
|
|
127
127
|
})
|
|
128
128
|
});
|
|
129
129
|
}
|
|
130
|
-
process.env.NODE_ENV !== "production" ? RangeBarSvgPlot.propTypes = {
|
|
130
|
+
process.env.NODE_ENV !== "production" ? RangeBarSvgPlot.propTypes /* remove-proptypes */ = {
|
|
131
131
|
// ----------------------------- Warning --------------------------------
|
|
132
132
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
133
133
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -158,7 +158,7 @@ process.env.NODE_ENV !== "production" ? RangeBarSvgPlot.propTypes = {
|
|
|
158
158
|
*/
|
|
159
159
|
slots: _propTypes.default.object
|
|
160
160
|
} : void 0;
|
|
161
|
-
process.env.NODE_ENV !== "production" ? RangeBarPlot.propTypes = {
|
|
161
|
+
process.env.NODE_ENV !== "production" ? RangeBarPlot.propTypes /* remove-proptypes */ = {
|
|
162
162
|
// ----------------------------- Warning --------------------------------
|
|
163
163
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
164
164
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -120,7 +120,7 @@ function RangeBarSvgPlot(props) {
|
|
|
120
120
|
})
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
-
process.env.NODE_ENV !== "production" ? RangeBarSvgPlot.propTypes = {
|
|
123
|
+
process.env.NODE_ENV !== "production" ? RangeBarSvgPlot.propTypes /* remove-proptypes */ = {
|
|
124
124
|
// ----------------------------- Warning --------------------------------
|
|
125
125
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
126
126
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -151,7 +151,7 @@ process.env.NODE_ENV !== "production" ? RangeBarSvgPlot.propTypes = {
|
|
|
151
151
|
*/
|
|
152
152
|
slots: PropTypes.object
|
|
153
153
|
} : void 0;
|
|
154
|
-
process.env.NODE_ENV !== "production" ? RangeBarPlot.propTypes = {
|
|
154
|
+
process.env.NODE_ENV !== "production" ? RangeBarPlot.propTypes /* remove-proptypes */ = {
|
|
155
155
|
// ----------------------------- Warning --------------------------------
|
|
156
156
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
157
157
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -16,11 +16,8 @@ const getColor = (series, xAxis, yAxis) => {
|
|
|
16
16
|
return series.color;
|
|
17
17
|
}
|
|
18
18
|
const value = bandValues[dataIndex];
|
|
19
|
-
const color = value
|
|
20
|
-
|
|
21
|
-
dataIndex
|
|
22
|
-
}) : bandColorScale(value);
|
|
23
|
-
if (color === null) {
|
|
19
|
+
const color = bandColorScale(value);
|
|
20
|
+
if (typeof color !== 'string') {
|
|
24
21
|
return getSeriesColor({
|
|
25
22
|
value,
|
|
26
23
|
dataIndex
|
|
@@ -10,11 +10,8 @@ const getColor = (series, xAxis, yAxis) => {
|
|
|
10
10
|
return series.color;
|
|
11
11
|
}
|
|
12
12
|
const value = bandValues[dataIndex];
|
|
13
|
-
const color = value
|
|
14
|
-
|
|
15
|
-
dataIndex
|
|
16
|
-
}) : bandColorScale(value);
|
|
17
|
-
if (color === null) {
|
|
13
|
+
const color = bandColorScale(value);
|
|
14
|
+
if (typeof color !== 'string') {
|
|
18
15
|
return getSeriesColor({
|
|
19
16
|
value,
|
|
20
17
|
dataIndex
|
|
@@ -15,6 +15,7 @@ export interface WebGLBarLikeItem {
|
|
|
15
15
|
export interface WebGLBarLikeSeries<T extends WebGLBarLikeItem> {
|
|
16
16
|
seriesId: SeriesId;
|
|
17
17
|
data: readonly T[];
|
|
18
|
+
layout?: 'vertical' | 'horizontal';
|
|
18
19
|
}
|
|
19
20
|
export interface WebGLBarLikePlotData {
|
|
20
21
|
centers: Float32Array;
|
|
@@ -15,6 +15,7 @@ export interface WebGLBarLikeItem {
|
|
|
15
15
|
export interface WebGLBarLikeSeries<T extends WebGLBarLikeItem> {
|
|
16
16
|
seriesId: SeriesId;
|
|
17
17
|
data: readonly T[];
|
|
18
|
+
layout?: 'vertical' | 'horizontal';
|
|
18
19
|
}
|
|
19
20
|
export interface WebGLBarLikePlotData {
|
|
20
21
|
centers: Float32Array;
|
|
@@ -35,6 +35,12 @@ function ensureCapacity(pool, maxCount) {
|
|
|
35
35
|
// don't need a separate per-instance attribute on the GPU side.
|
|
36
36
|
const HIGHLIGHTED_BRIGHTNESS = 1.2;
|
|
37
37
|
const FADED_OPACITY = 0.3;
|
|
38
|
+
// Gaps below this (CSS px) get filled by expanding band half-size to half the
|
|
39
|
+
// step, avoiding sub-pixel hairlines from the rasterizer.
|
|
40
|
+
const GAP_FILL_THRESHOLD_PX = 1;
|
|
41
|
+
// Floor to keep thin quads from falling between pixel centers and getting
|
|
42
|
+
// culled at extreme zoom-out.
|
|
43
|
+
const MIN_BAND_HALF_SIZE_PX = 0.5;
|
|
38
44
|
function setCornerRadii(radius, side, fullRounded, target, offset) {
|
|
39
45
|
// CSS order: top-left, top-right, bottom-right, bottom-left.
|
|
40
46
|
let tl = 0;
|
|
@@ -95,16 +101,66 @@ function useWebGLBarLikePlotData(drawingArea, completedData, borderRadius, optio
|
|
|
95
101
|
const drawingAreaLeft = drawingArea.left;
|
|
96
102
|
const drawingAreaTop = drawingArea.top;
|
|
97
103
|
let cursor = 0;
|
|
98
|
-
for (let
|
|
99
|
-
const processed = completedData[
|
|
104
|
+
for (let seriesIndex = 0; seriesIndex < completedData.length; seriesIndex += 1) {
|
|
105
|
+
const processed = completedData[seriesIndex];
|
|
100
106
|
const seriesId = processed.seriesId;
|
|
101
107
|
const data = processed.data;
|
|
102
108
|
const dataLength = data.length;
|
|
109
|
+
const bandIsY = processed.layout === 'horizontal';
|
|
110
|
+
|
|
111
|
+
// `hidden` is series-level (mirrored onto every bar by useBarPlotData);
|
|
112
|
+
// peek at the first bar to skip the whole series.
|
|
113
|
+
if (dataLength === 0 || data[0].hidden) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Probe 1 = bar size; probe 2 = center-to-center step. Track dataIndex
|
|
118
|
+
// so null bars between probes don't inflate the step.
|
|
119
|
+
let probe = null;
|
|
120
|
+
let probeIndex = 0;
|
|
121
|
+
let probe2 = null;
|
|
122
|
+
let probe2Index = 0;
|
|
103
123
|
for (let i = 0; i < dataLength; i += 1) {
|
|
104
|
-
const
|
|
105
|
-
if (
|
|
106
|
-
|
|
124
|
+
const candidate = data[i];
|
|
125
|
+
if (candidate.value != null && candidate.width > 0 && candidate.height > 0) {
|
|
126
|
+
if (probe === null) {
|
|
127
|
+
probe = candidate;
|
|
128
|
+
probeIndex = i;
|
|
129
|
+
} else {
|
|
130
|
+
probe2 = candidate;
|
|
131
|
+
probe2Index = i;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
107
134
|
}
|
|
135
|
+
}
|
|
136
|
+
if (probe === null) {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Round to whole pixels so the rendered half-size stays stable across
|
|
141
|
+
// zoom steps; sub-pixel jitter causes an "accordion" effect.
|
|
142
|
+
const rawBarSize = bandIsY ? probe.height : probe.width;
|
|
143
|
+
const barSize = Math.round(rawBarSize);
|
|
144
|
+
let step;
|
|
145
|
+
if (probe2 === null) {
|
|
146
|
+
step = barSize;
|
|
147
|
+
} else {
|
|
148
|
+
const indexGap = probe2Index - probeIndex;
|
|
149
|
+
const span = bandIsY ? probe2.y - probe.y : probe2.x - probe.x;
|
|
150
|
+
step = span / indexGap;
|
|
151
|
+
}
|
|
152
|
+
// Use the linear lower bound of the gap (`step - rawBarSize - 0.5`)
|
|
153
|
+
// rather than `step - barSize`: rounding makes the discrete gap jump by
|
|
154
|
+
// 1px at zoom boundaries, flipping `fillGap` and causing visible
|
|
155
|
+
// oscillation. The lower bound is continuous in zoom.
|
|
156
|
+
const gapLowerBound = step - rawBarSize - 0.5;
|
|
157
|
+
const fillGap = gapLowerBound > 0 && gapLowerBound < GAP_FILL_THRESHOLD_PX;
|
|
158
|
+
let bandHalfRender = fillGap ? step * 0.5 : barSize * 0.5;
|
|
159
|
+
if (bandHalfRender < MIN_BAND_HALF_SIZE_PX) {
|
|
160
|
+
bandHalfRender = MIN_BAND_HALF_SIZE_PX;
|
|
161
|
+
}
|
|
162
|
+
for (let i = 0; i < dataLength; i += 1) {
|
|
163
|
+
const bar = data[i];
|
|
108
164
|
const value = bar.value;
|
|
109
165
|
if (value == null) {
|
|
110
166
|
continue;
|
|
@@ -116,11 +172,14 @@ function useWebGLBarLikePlotData(drawingArea, completedData, borderRadius, optio
|
|
|
116
172
|
}
|
|
117
173
|
const halfW = w * 0.5;
|
|
118
174
|
const halfH = h * 0.5;
|
|
175
|
+
// Value axis stays exact; band axis uses the per-series override.
|
|
176
|
+
const renderHalfW = bandIsY ? halfW : bandHalfRender;
|
|
177
|
+
const renderHalfH = bandIsY ? bandHalfRender : halfH;
|
|
119
178
|
const c2 = cursor * 2;
|
|
120
179
|
centers[c2] = bar.x + halfW - drawingAreaLeft;
|
|
121
180
|
centers[c2 + 1] = bar.y + halfH - drawingAreaTop;
|
|
122
|
-
halfSizes[c2] =
|
|
123
|
-
halfSizes[c2 + 1] =
|
|
181
|
+
halfSizes[c2] = renderHalfW;
|
|
182
|
+
halfSizes[c2 + 1] = renderHalfH;
|
|
124
183
|
const rgba = (0, _parseColor.parseColor)(bar.color);
|
|
125
184
|
const c4 = cursor * 4;
|
|
126
185
|
let r = rgba[0];
|
|
@@ -29,6 +29,12 @@ function ensureCapacity(pool, maxCount) {
|
|
|
29
29
|
// don't need a separate per-instance attribute on the GPU side.
|
|
30
30
|
const HIGHLIGHTED_BRIGHTNESS = 1.2;
|
|
31
31
|
const FADED_OPACITY = 0.3;
|
|
32
|
+
// Gaps below this (CSS px) get filled by expanding band half-size to half the
|
|
33
|
+
// step, avoiding sub-pixel hairlines from the rasterizer.
|
|
34
|
+
const GAP_FILL_THRESHOLD_PX = 1;
|
|
35
|
+
// Floor to keep thin quads from falling between pixel centers and getting
|
|
36
|
+
// culled at extreme zoom-out.
|
|
37
|
+
const MIN_BAND_HALF_SIZE_PX = 0.5;
|
|
32
38
|
function setCornerRadii(radius, side, fullRounded, target, offset) {
|
|
33
39
|
// CSS order: top-left, top-right, bottom-right, bottom-left.
|
|
34
40
|
let tl = 0;
|
|
@@ -89,16 +95,66 @@ export function useWebGLBarLikePlotData(drawingArea, completedData, borderRadius
|
|
|
89
95
|
const drawingAreaLeft = drawingArea.left;
|
|
90
96
|
const drawingAreaTop = drawingArea.top;
|
|
91
97
|
let cursor = 0;
|
|
92
|
-
for (let
|
|
93
|
-
const processed = completedData[
|
|
98
|
+
for (let seriesIndex = 0; seriesIndex < completedData.length; seriesIndex += 1) {
|
|
99
|
+
const processed = completedData[seriesIndex];
|
|
94
100
|
const seriesId = processed.seriesId;
|
|
95
101
|
const data = processed.data;
|
|
96
102
|
const dataLength = data.length;
|
|
103
|
+
const bandIsY = processed.layout === 'horizontal';
|
|
104
|
+
|
|
105
|
+
// `hidden` is series-level (mirrored onto every bar by useBarPlotData);
|
|
106
|
+
// peek at the first bar to skip the whole series.
|
|
107
|
+
if (dataLength === 0 || data[0].hidden) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Probe 1 = bar size; probe 2 = center-to-center step. Track dataIndex
|
|
112
|
+
// so null bars between probes don't inflate the step.
|
|
113
|
+
let probe = null;
|
|
114
|
+
let probeIndex = 0;
|
|
115
|
+
let probe2 = null;
|
|
116
|
+
let probe2Index = 0;
|
|
97
117
|
for (let i = 0; i < dataLength; i += 1) {
|
|
98
|
-
const
|
|
99
|
-
if (
|
|
100
|
-
|
|
118
|
+
const candidate = data[i];
|
|
119
|
+
if (candidate.value != null && candidate.width > 0 && candidate.height > 0) {
|
|
120
|
+
if (probe === null) {
|
|
121
|
+
probe = candidate;
|
|
122
|
+
probeIndex = i;
|
|
123
|
+
} else {
|
|
124
|
+
probe2 = candidate;
|
|
125
|
+
probe2Index = i;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
101
128
|
}
|
|
129
|
+
}
|
|
130
|
+
if (probe === null) {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Round to whole pixels so the rendered half-size stays stable across
|
|
135
|
+
// zoom steps; sub-pixel jitter causes an "accordion" effect.
|
|
136
|
+
const rawBarSize = bandIsY ? probe.height : probe.width;
|
|
137
|
+
const barSize = Math.round(rawBarSize);
|
|
138
|
+
let step;
|
|
139
|
+
if (probe2 === null) {
|
|
140
|
+
step = barSize;
|
|
141
|
+
} else {
|
|
142
|
+
const indexGap = probe2Index - probeIndex;
|
|
143
|
+
const span = bandIsY ? probe2.y - probe.y : probe2.x - probe.x;
|
|
144
|
+
step = span / indexGap;
|
|
145
|
+
}
|
|
146
|
+
// Use the linear lower bound of the gap (`step - rawBarSize - 0.5`)
|
|
147
|
+
// rather than `step - barSize`: rounding makes the discrete gap jump by
|
|
148
|
+
// 1px at zoom boundaries, flipping `fillGap` and causing visible
|
|
149
|
+
// oscillation. The lower bound is continuous in zoom.
|
|
150
|
+
const gapLowerBound = step - rawBarSize - 0.5;
|
|
151
|
+
const fillGap = gapLowerBound > 0 && gapLowerBound < GAP_FILL_THRESHOLD_PX;
|
|
152
|
+
let bandHalfRender = fillGap ? step * 0.5 : barSize * 0.5;
|
|
153
|
+
if (bandHalfRender < MIN_BAND_HALF_SIZE_PX) {
|
|
154
|
+
bandHalfRender = MIN_BAND_HALF_SIZE_PX;
|
|
155
|
+
}
|
|
156
|
+
for (let i = 0; i < dataLength; i += 1) {
|
|
157
|
+
const bar = data[i];
|
|
102
158
|
const value = bar.value;
|
|
103
159
|
if (value == null) {
|
|
104
160
|
continue;
|
|
@@ -110,11 +166,14 @@ export function useWebGLBarLikePlotData(drawingArea, completedData, borderRadius
|
|
|
110
166
|
}
|
|
111
167
|
const halfW = w * 0.5;
|
|
112
168
|
const halfH = h * 0.5;
|
|
169
|
+
// Value axis stays exact; band axis uses the per-series override.
|
|
170
|
+
const renderHalfW = bandIsY ? halfW : bandHalfRender;
|
|
171
|
+
const renderHalfH = bandIsY ? bandHalfRender : halfH;
|
|
113
172
|
const c2 = cursor * 2;
|
|
114
173
|
centers[c2] = bar.x + halfW - drawingAreaLeft;
|
|
115
174
|
centers[c2 + 1] = bar.y + halfH - drawingAreaTop;
|
|
116
|
-
halfSizes[c2] =
|
|
117
|
-
halfSizes[c2 + 1] =
|
|
175
|
+
halfSizes[c2] = renderHalfW;
|
|
176
|
+
halfSizes[c2 + 1] = renderHalfH;
|
|
118
177
|
const rgba = parseColor(bar.color);
|
|
119
178
|
const c4 = cursor * 4;
|
|
120
179
|
let r = rgba[0];
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,256 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 9.6.0
|
|
4
|
+
|
|
5
|
+
_Jun 18, 2026_
|
|
6
|
+
|
|
7
|
+
We'd like to extend a big thank you to the 17 contributors who made this release possible. Here are some highlights ✨:
|
|
8
|
+
|
|
9
|
+
- 📊 New features for the radial bar charts, like percentage min radius and disabling tick labels.
|
|
10
|
+
|
|
11
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
12
|
+
@adamowski10, @Anexus5919, @Morteza-hp, @mustafajw07, @TargiX
|
|
13
|
+
|
|
14
|
+
The following team members contributed to this release:
|
|
15
|
+
@alexfauquette, @arminmeh, @brijeshb42, @cherniavskii, @hasdfa, @Janpot, @JCQuintas, @michelengelen, @noraleonte, @oliviertassinari, @rita-codes, @sai6855
|
|
16
|
+
|
|
17
|
+
### Data Grid
|
|
18
|
+
|
|
19
|
+
#### `@mui/x-data-grid@9.6.0`
|
|
20
|
+
|
|
21
|
+
- [DataGrid] Define `overflowAnchor` style at the right element (#22849) @arminmeh
|
|
22
|
+
- [DataGrid] Fix scrollbars not showing up on scroll on iOS (#22832) @cherniavskii
|
|
23
|
+
|
|
24
|
+
#### `@mui/x-data-grid-pro@9.6.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
25
|
+
|
|
26
|
+
Same changes as in `@mui/x-data-grid@9.6.0`, plus:
|
|
27
|
+
|
|
28
|
+
- [DataGridPro] Prevent incorrect row range capping on the first page with known `rowCount` (#22808) @michelengelen
|
|
29
|
+
|
|
30
|
+
#### `@mui/x-data-grid-premium@9.6.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
31
|
+
|
|
32
|
+
Same changes as in `@mui/x-data-grid-pro@9.6.0`.
|
|
33
|
+
|
|
34
|
+
### Date and Time Pickers
|
|
35
|
+
|
|
36
|
+
#### `@mui/x-date-pickers@9.6.0`
|
|
37
|
+
|
|
38
|
+
- [pickers] Fix `AdapterMomentHijri.getDaysInMonth` returning the Gregorian month length (#22774) @Anexus5919
|
|
39
|
+
- [l10n] Improve Persian (fa-IR) locale (#22454) @Morteza-hp
|
|
40
|
+
|
|
41
|
+
#### `@mui/x-date-pickers-pro@9.6.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
42
|
+
|
|
43
|
+
Same changes as in `@mui/x-date-pickers@9.6.0`.
|
|
44
|
+
|
|
45
|
+
### Charts
|
|
46
|
+
|
|
47
|
+
#### `@mui/x-charts@9.6.0`
|
|
48
|
+
|
|
49
|
+
- [charts] Add `disableTickLabel` prop to radial axes (#22801) @JCQuintas
|
|
50
|
+
- [charts] Fix bug when `min` is in axis domain (#22827) @alexfauquette
|
|
51
|
+
- [charts] Fix wheel zoom not centering on cursor position (#22811) @JCQuintas
|
|
52
|
+
- [charts] Remove zoom gesture registration from community package (#22753) @sai6855
|
|
53
|
+
- [charts] Support percentage values for radial axis `minRadius`/`maxRadius` (#22803) @JCQuintas
|
|
54
|
+
- [charts] Support `unknownColor` in color scale (#22813) @alexfauquette
|
|
55
|
+
- [charts] Document click listener for scatter composition (#22809) @sai6855
|
|
56
|
+
|
|
57
|
+
#### `@mui/x-charts-pro@9.6.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
58
|
+
|
|
59
|
+
Same changes as in `@mui/x-charts@9.6.0`.
|
|
60
|
+
|
|
61
|
+
#### `@mui/x-charts-premium@9.6.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
62
|
+
|
|
63
|
+
Same changes as in `@mui/x-charts-pro@9.6.0`, plus:
|
|
64
|
+
|
|
65
|
+
- [charts-premium] Add `geoFeatureKey` to transform features identifier (#22848) @alexfauquette
|
|
66
|
+
- [charts-premium] Allow to remove Antartica (#22815) @alexfauquette
|
|
67
|
+
- [charts-premium] Regenerate `ScatterPlotPremium` `propTypes` (#22829) @rita-codes
|
|
68
|
+
- [charts-premium] Support maps tooltip positioned on items (#22648) @alexfauquette
|
|
69
|
+
- [docs] Show how to export maps (#22837) @alexfauquette
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
### Tree View
|
|
73
|
+
|
|
74
|
+
#### `@mui/x-tree-view@9.6.0`
|
|
75
|
+
|
|
76
|
+
Internal changes.
|
|
77
|
+
|
|
78
|
+
#### `@mui/x-tree-view-pro@9.6.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
79
|
+
|
|
80
|
+
Same changes as in `@mui/x-tree-view@9.6.0`.
|
|
81
|
+
|
|
82
|
+
### Scheduler
|
|
83
|
+
|
|
84
|
+
#### `@mui/x-scheduler@9.0.0-beta.2`
|
|
85
|
+
|
|
86
|
+
- [scheduler] Add dispose lifecycle to `SchedulerLazyLoadingPlugin` (#22532) @rita-codes
|
|
87
|
+
- [scheduler] Add responsive mobile week view and responsive typography (#22593) @noraleonte
|
|
88
|
+
- [scheduler] Add stable weekday token to `recurrenceWeeklyPresetLabel` (#22733) @mustafajw07
|
|
89
|
+
- [scheduler] Create accessibility documentation section (#22557) @mustafajw07
|
|
90
|
+
- [scheduler] Decouple `MonthViewProps` from day time grid props (#22802) @mustafajw07
|
|
91
|
+
- [scheduler] Export missing public scheduler types (#22785) @mustafajw07
|
|
92
|
+
- [scheduler] Fix JSDoc defaults and improve public type readability (#22784) @mustafajw07
|
|
93
|
+
- [scheduler] Fix `aria-labelledby` on events referencing non-existent header IDs (#22778) @rita-codes
|
|
94
|
+
- [scheduler] Move `EventCalendarStyledContext` to internals (#22787) @mustafajw07
|
|
95
|
+
- [scheduler] Normalize all-day recurring occurrences to whole days (#22792) @Anexus5919
|
|
96
|
+
- [scheduler] Recalculate `DayTimeGrid` `hasScroll` on container resize (#22780) @Anexus5919
|
|
97
|
+
- [scheduler] Recompute `nowUpdatedEveryMinute` only on timezone change (#22793) @Anexus5919
|
|
98
|
+
- [scheduler] Register auto-scroll once instead of on every render (#22794) @Anexus5919
|
|
99
|
+
- [scheduler] Remove duplicate dividers in the day/time grid (#22795) @Anexus5919
|
|
100
|
+
- [scheduler] Remove unused `--has-scroll` CSS variable from `DayTimeGrid` (#22799) @Anexus5919
|
|
101
|
+
- [scheduler] Remove vestigial async from internal drop handler (#22781) @mustafajw07
|
|
102
|
+
- [scheduler] Return a primitive key from the Calendar lazy-loading selector (#22791) @Anexus5919
|
|
103
|
+
- [scheduler] Throw on invalid event dates instead of emitting `NaN` timestamps (#22740) @rita-codes
|
|
104
|
+
- [scheduler] Tighten `StandaloneEventProps` data typing (#22796) @mustafajw07
|
|
105
|
+
- [scheduler] Update feedback banner to say beta instead of alpha (#22804) @rita-codes
|
|
106
|
+
- [scheduler] Use `@base-ui` `generateId` for event ids in `createEventModel` (#22788) @rita-codes
|
|
107
|
+
- [scheduler] Clear clipboard after pasting a cut event (#22773) @Anexus5919
|
|
108
|
+
- [scheduler] Show drag placeholder when re-entering the same position (#22775) @Anexus5919
|
|
109
|
+
- [scheduler] Validate missing and duplicate event ids (#22790) @Anexus5919
|
|
110
|
+
- [l10n] Improve Polish (pl-PL) locale (#22612) @adamowski10
|
|
111
|
+
|
|
112
|
+
#### `@mui/x-scheduler-premium@9.0.0-beta.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
113
|
+
|
|
114
|
+
Same changes as in `@mui/x-scheduler@9.0.0-beta.2`, plus:
|
|
115
|
+
|
|
116
|
+
- [scheduler-premium] Expose premium model types through public API (#22798) @mustafajw07
|
|
117
|
+
- [scheduler-premium] Remove non-functional `onPreferencesChange` prop from `EventTimelinePremium` (#22777) @rita-codes
|
|
118
|
+
- [scheduler-premium] Validate the `FREQ` value in `parseRRule`] (#22786) @rita-codes
|
|
119
|
+
|
|
120
|
+
### Codemod
|
|
121
|
+
|
|
122
|
+
#### `@mui/x-codemod@9.6.0`
|
|
123
|
+
|
|
124
|
+
Internal changes.
|
|
125
|
+
|
|
126
|
+
### Docs
|
|
127
|
+
|
|
128
|
+
- [docs] Fix link-check build timeout by disabling serve directory listing (#22836) @Janpot
|
|
129
|
+
- [docs] Show how to export maps (#22837) @alexfauquette
|
|
130
|
+
- [docs] Add radial bar overview demo with custom overlays (#22776) @JCQuintas
|
|
131
|
+
- [docs] Add weather composition demo (#22723) @TargiX
|
|
132
|
+
- [docs] Add docs overview gallery and playground (#22488) @hasdfa
|
|
133
|
+
- [docs] Clarify 'Scrolling without render gaps' (#22629) @oliviertassinari
|
|
134
|
+
- [docs] Fix typo in release instructions (#22864) @brijeshb42
|
|
135
|
+
|
|
136
|
+
### Core
|
|
137
|
+
|
|
138
|
+
- [code-infra] Fix lint issues (#22757) @brijeshb42
|
|
139
|
+
- [code-infra] Fix remaining Dependabot security alerts (#22761) @Janpot
|
|
140
|
+
- [code-infra] Remove release:build from docs:build script (#22852) @brijeshb42
|
|
141
|
+
- [code-infra] Unpin `@mui/utils` version to allow dedupe (#22828) @mustafajw07
|
|
142
|
+
- [docs-infra] Cap Netlify Next.js build parallelism to avoid OOM (#22847) @Janpot
|
|
143
|
+
- [docs-infra] Remove i18n codebase (#22591) @brijeshb42
|
|
144
|
+
- [internal] Fix failing React 18 unit tests (#22846) @brijeshb42
|
|
145
|
+
|
|
146
|
+
### Miscellaneous
|
|
147
|
+
|
|
148
|
+
- [core] Add remove-proptypes markers to generated `propTypes` (#22850) @JCQuintas
|
|
149
|
+
- [core] Bump vitest packages to 4.1.8 to fix browser-test version skew (#22845) @Janpot
|
|
150
|
+
- [core] Reduce e2e build concurrency to avoid OOM (#22843) @Janpot
|
|
151
|
+
- [core] Strip proptypes from Production bundles (#22750) @sai6855
|
|
152
|
+
- [test] Wait for `GridToolbarCustom` rows before screenshot (#22844) @Janpot
|
|
153
|
+
|
|
154
|
+
## 9.5.0
|
|
155
|
+
|
|
156
|
+
_Jun 11, 2026_
|
|
157
|
+
|
|
158
|
+
We'd like to extend a big thank you to the 9 contributors who made this release possible. Here are some highlights ✨:
|
|
159
|
+
|
|
160
|
+
- 🎁 New [`multiSelect` column type for Data Grid Pro](https://mui.com/x/react-data-grid/column-definition/#MultiSelectColumn)
|
|
161
|
+
- 🚀 New [renderer="svg-progressive"](https://mui.com/x/react-charts/scatter/#progressive-renderer) paints scatter points in batched frames so large datasets render smoothly without blocking the main thread.
|
|
162
|
+
- 🐞 Bugfixes
|
|
163
|
+
- 📚 Documentation improvements
|
|
164
|
+
|
|
165
|
+
Special thanks go out to community members @mustafajw07 and @Anexus5919 for their valuable contribution.
|
|
166
|
+
|
|
167
|
+
The following team members contributed to this release:
|
|
168
|
+
@alexfauquette, @JCQuintas, @rita-codes, @rluzists1, @sai6855, @siriwatknp, @arminmeh, @brijeshb42
|
|
169
|
+
|
|
170
|
+
### Data Grid
|
|
171
|
+
|
|
172
|
+
#### `@mui/x-data-grid@9.5.0`
|
|
173
|
+
|
|
174
|
+
- [DataGrid] Restrict warning messages to non-production environments in various components (#22461) @sai6855
|
|
175
|
+
- [DataGrid] Prevent React state update before mount (#22374) @arminmeh
|
|
176
|
+
|
|
177
|
+
#### `@mui/x-data-grid-pro@9.5.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
178
|
+
|
|
179
|
+
Same changes as in `@mui/x-data-grid@9.5.0`, plus:
|
|
180
|
+
|
|
181
|
+
- [DataGridPro] Add new `multiSelect` column type (#21157) @siriwatknp
|
|
182
|
+
|
|
183
|
+
#### `@mui/x-data-grid-premium@9.5.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
184
|
+
|
|
185
|
+
Same changes as in `@mui/x-data-grid-pro@9.5.0`.
|
|
186
|
+
|
|
187
|
+
### Date and Time Pickers
|
|
188
|
+
|
|
189
|
+
#### `@mui/x-date-pickers@9.5.0`
|
|
190
|
+
|
|
191
|
+
- [pickers] Fix missing export of `th-TH` (#22703) @alexfauquette
|
|
192
|
+
|
|
193
|
+
#### `@mui/x-date-pickers-pro@9.5.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
194
|
+
|
|
195
|
+
Same changes as in `@mui/x-date-pickers@9.5.0`.
|
|
196
|
+
|
|
197
|
+
### Charts
|
|
198
|
+
|
|
199
|
+
#### `@mui/x-charts@9.5.0`
|
|
200
|
+
|
|
201
|
+
- [charts] Add `FocusedBar` component to `BarScatterComposition` demo (#22704) @sai6855
|
|
202
|
+
- [charts] Add dedicated Bubble Chart documentation page (#22688) @mustafajw07
|
|
203
|
+
- [charts] Add progressive scatter renderer (#22518) @JCQuintas
|
|
204
|
+
- [charts] Avoid full axis pipeline rebuild on resize (#22695) @JCQuintas
|
|
205
|
+
- [charts] Document focus indicator in composition page (#22712) @JCQuintas
|
|
206
|
+
- [charts] Fix `ChartsTooltip` `container` and `disablePortal` props being ignored (#22690) @JCQuintas
|
|
207
|
+
- [charts] Make ordinal scales O(1) to copy and re-range (#22691) @JCQuintas
|
|
208
|
+
- [charts] Stabilize WebGL bar rendering at sub-pixel widths (#22678) @JCQuintas
|
|
209
|
+
- [charts] Use the series config to define value types (#22693) @sai6855
|
|
210
|
+
- [charts] Decouple interaction hook from the cartesian zoom (#22708) @alexfauquette
|
|
211
|
+
|
|
212
|
+
#### `@mui/x-charts-pro@9.5.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
213
|
+
|
|
214
|
+
Same changes as in `@mui/x-charts@9.5.0`, plus:
|
|
215
|
+
|
|
216
|
+
- [charts-pro] Add missing focus highlight (#22689) @alexfauquette
|
|
217
|
+
|
|
218
|
+
#### `@mui/x-charts-premium@9.5.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
219
|
+
|
|
220
|
+
Same changes as in `@mui/x-charts-pro@9.5.0`, plus:
|
|
221
|
+
|
|
222
|
+
- [charts-premium] Set `Heatmap` WebGL render as stable (#22665) @alexfauquette
|
|
223
|
+
- [charts-premium] Stabilize candlestick charts (#22666) @alexfauquette
|
|
224
|
+
- [charts-premium] Stabilize the radial charts (#22655) @alexfauquette
|
|
225
|
+
|
|
226
|
+
### Scheduler
|
|
227
|
+
|
|
228
|
+
#### `@mui/x-scheduler@9.0.0-beta.1`
|
|
229
|
+
|
|
230
|
+
Internal changes.
|
|
231
|
+
|
|
232
|
+
#### `@mui/x-scheduler-premium@9.0.0-beta.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
233
|
+
|
|
234
|
+
Same changes as in `@mui/x-scheduler@9.0.0-beta.1`, plus:
|
|
235
|
+
|
|
236
|
+
- [scheduler] Remove dead CSS variable writes in `EventTimelinePremiumContent` (#22720) @rita-codes
|
|
237
|
+
- [scheduler] Show scope dialog when deleting a recurring event (#22552) @Anexus5919
|
|
238
|
+
|
|
239
|
+
### Core
|
|
240
|
+
|
|
241
|
+
- [docs-infra] Fix immutable cache headers for `/\_next/static` assets (#22747) @brijeshb42
|
|
242
|
+
- [docs-infra] Prefix `/\_next/static` cache header rule with `/x` basePath (#22748) @brijeshb42
|
|
243
|
+
- [code-infra] Update dependencies to resolve Dependabot security alerts (#22714) @Janpot
|
|
244
|
+
|
|
245
|
+
### Docs
|
|
246
|
+
|
|
247
|
+
- [docs] Fix broken links checker crashing on 404 known-targets fetch (#22707) @sai6855
|
|
248
|
+
- [docs] Fix country data (#22716) @alexfauquette
|
|
249
|
+
|
|
250
|
+
### Miscellaneous
|
|
251
|
+
|
|
252
|
+
- [legal] Update EULA links in docs (#22717) @rluzists1
|
|
253
|
+
|
|
3
254
|
## 9.4.0
|
|
4
255
|
|
|
5
256
|
<!-- generated comparing v9.3.0..master -->
|
|
@@ -89,7 +89,7 @@ const CandlestickChart = exports.CandlestickChart = /*#__PURE__*/React.forwardRe
|
|
|
89
89
|
}));
|
|
90
90
|
});
|
|
91
91
|
if (process.env.NODE_ENV !== "production") CandlestickChart.displayName = "CandlestickChart";
|
|
92
|
-
process.env.NODE_ENV !== "production" ? CandlestickChart.propTypes = {
|
|
92
|
+
process.env.NODE_ENV !== "production" ? CandlestickChart.propTypes /* remove-proptypes */ = {
|
|
93
93
|
// ----------------------------- Warning --------------------------------
|
|
94
94
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
95
95
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -81,7 +81,7 @@ const CandlestickChart = /*#__PURE__*/React.forwardRef(function CandlestickChart
|
|
|
81
81
|
}));
|
|
82
82
|
});
|
|
83
83
|
if (process.env.NODE_ENV !== "production") CandlestickChart.displayName = "CandlestickChart";
|
|
84
|
-
process.env.NODE_ENV !== "production" ? CandlestickChart.propTypes = {
|
|
84
|
+
process.env.NODE_ENV !== "production" ? CandlestickChart.propTypes /* remove-proptypes */ = {
|
|
85
85
|
// ----------------------------- Warning --------------------------------
|
|
86
86
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
87
87
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { CandlestickPlot } from "./CandlestickPlot.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated candlestick chart is now stable, import `ChartsCandlestickChart` instead
|
|
4
|
+
*/
|
|
5
|
+
export declare const Unstable_CandlestickChart: import("react").ForwardRefExoticComponent<import("./CandlestickChart.mjs").CandlestickChartProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated candlestick plot is now stable, import `ChartsCandlestickPlot` instead
|
|
8
|
+
*/
|
|
9
|
+
export declare const Unstable_CandlestickPlot: typeof CandlestickPlot;
|
|
10
|
+
export { CandlestickChart, type CandlestickChartProps, type CandlestickChartSlots, type CandlestickChartSlotProps, type OHLCSeries } from "./CandlestickChart.mjs";
|
|
11
|
+
export { CandlestickPlot, type CandlestickPlotProps } from "./CandlestickPlot.mjs";
|