@mui/x-charts-premium 9.3.0 → 9.4.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 +35 -5
- package/BarChartPremium/BarChartPremium.mjs +35 -5
- package/BarChartPremium/RangeBar/RangeBarPlot.d.mts +10 -0
- package/BarChartPremium/RangeBar/RangeBarPlot.d.ts +10 -0
- package/BarChartPremium/RangeBar/RangeBarPlot.js +59 -2
- package/BarChartPremium/RangeBar/RangeBarPlot.mjs +59 -2
- package/BarChartPremium/RangeBar/RangeBarWebGLPlot.d.mts +10 -0
- package/BarChartPremium/RangeBar/RangeBarWebGLPlot.d.ts +10 -0
- package/BarChartPremium/RangeBar/RangeBarWebGLPlot.js +82 -0
- package/BarChartPremium/RangeBar/RangeBarWebGLPlot.mjs +76 -0
- package/BarChartPremium/RangeBar/seriesConfig/extrema.js +3 -0
- package/BarChartPremium/RangeBar/seriesConfig/extrema.mjs +3 -0
- package/BarChartPremium/RangeBar/seriesConfig/seriesProcessor.js +2 -2
- package/BarChartPremium/RangeBar/seriesConfig/seriesProcessor.mjs +2 -2
- package/BarChartPremium/useBarChartPremiumProps.js +2 -1
- package/BarChartPremium/useBarChartPremiumProps.mjs +2 -1
- package/BarChartPremium/webgl/useBarWebGLPlotData.d.mts +2 -7
- package/BarChartPremium/webgl/useBarWebGLPlotData.d.ts +2 -7
- package/BarChartPremium/webgl/useBarWebGLPlotData.js +4 -151
- package/BarChartPremium/webgl/useBarWebGLPlotData.mjs +4 -150
- package/BarChartPremium/webgl/useWebGLBarLikePlotData.d.mts +39 -0
- package/BarChartPremium/webgl/useWebGLBarLikePlotData.d.ts +39 -0
- package/BarChartPremium/webgl/useWebGLBarLikePlotData.js +169 -0
- package/BarChartPremium/webgl/useWebGLBarLikePlotData.mjs +163 -0
- package/CHANGELOG.md +196 -0
- package/CandlestickChart/CandlestickChart.js +11 -2
- package/CandlestickChart/CandlestickChart.mjs +11 -2
- package/CandlestickChart/seriesConfig/extrema.js +3 -0
- package/CandlestickChart/seriesConfig/extrema.mjs +3 -0
- package/CandlestickChart/seriesConfig/seriesProcessor.js +2 -2
- package/CandlestickChart/seriesConfig/seriesProcessor.mjs +2 -2
- package/ChartsDataProviderPremium/ChartsDataProviderPremium.js +2 -2
- package/ChartsDataProviderPremium/ChartsDataProviderPremium.mjs +2 -2
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.d.mts +35 -0
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.d.ts +35 -0
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.js +125 -0
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.mjs +119 -0
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.plugins.d.mts +5 -0
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.plugins.d.ts +5 -0
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.plugins.js +10 -0
- package/ChartsGeoDataProviderPremium/ChartsGeoDataProviderPremium.plugins.mjs +4 -0
- package/ChartsGeoDataProviderPremium/index.d.mts +3 -0
- package/ChartsGeoDataProviderPremium/index.d.ts +3 -0
- package/ChartsGeoDataProviderPremium/index.js +20 -0
- package/ChartsGeoDataProviderPremium/index.mjs +3 -0
- package/ChartsGeoDataProviderPremium/useChartsGeoDataProviderPremiumProps.d.mts +10 -0
- package/ChartsGeoDataProviderPremium/useChartsGeoDataProviderPremiumProps.d.ts +10 -0
- package/ChartsGeoDataProviderPremium/useChartsGeoDataProviderPremiumProps.js +49 -0
- package/ChartsGeoDataProviderPremium/useChartsGeoDataProviderPremiumProps.mjs +42 -0
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.js +2 -2
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.mjs +2 -2
- package/HeatmapPremium/HeatmapPremium.js +32 -2
- package/HeatmapPremium/HeatmapPremium.mjs +32 -2
- package/Map/FocusedMapShape.d.mts +4 -0
- package/Map/FocusedMapShape.d.ts +4 -0
- package/Map/FocusedMapShape.js +66 -0
- package/Map/FocusedMapShape.mjs +60 -0
- package/Map/GeoDataPlot.d.mts +26 -0
- package/Map/GeoDataPlot.d.ts +26 -0
- package/Map/GeoDataPlot.js +65 -0
- package/Map/GeoDataPlot.mjs +60 -0
- package/Map/Graticule.d.mts +1 -0
- package/Map/Graticule.d.ts +1 -0
- package/Map/Graticule.js +30 -0
- package/Map/Graticule.mjs +24 -0
- package/Map/MapShape.d.mts +10 -0
- package/Map/MapShape.d.ts +10 -0
- package/Map/MapShape.js +55 -0
- package/Map/MapShape.mjs +49 -0
- package/Map/MapShapePlot.d.mts +21 -0
- package/Map/MapShapePlot.d.ts +21 -0
- package/Map/MapShapePlot.js +86 -0
- package/Map/MapShapePlot.mjs +80 -0
- package/Map/index.d.mts +7 -0
- package/Map/index.d.ts +7 -0
- package/Map/index.js +60 -0
- package/Map/index.mjs +8 -0
- package/Map/seriesConfig/descriptionGetter.d.mts +3 -0
- package/Map/seriesConfig/descriptionGetter.d.ts +3 -0
- package/Map/seriesConfig/descriptionGetter.js +19 -0
- package/Map/seriesConfig/descriptionGetter.mjs +13 -0
- package/Map/seriesConfig/getColor.d.mts +3 -0
- package/Map/seriesConfig/getColor.d.ts +3 -0
- package/Map/seriesConfig/getColor.js +35 -0
- package/Map/seriesConfig/getColor.mjs +29 -0
- package/Map/seriesConfig/getSeriesWithDefaultValues.d.mts +3 -0
- package/Map/seriesConfig/getSeriesWithDefaultValues.d.ts +3 -0
- package/Map/seriesConfig/getSeriesWithDefaultValues.js +15 -0
- package/Map/seriesConfig/getSeriesWithDefaultValues.mjs +8 -0
- package/Map/seriesConfig/index.d.mts +2 -0
- package/Map/seriesConfig/index.d.ts +2 -0
- package/Map/seriesConfig/index.js +28 -0
- package/Map/seriesConfig/index.mjs +21 -0
- package/Map/seriesConfig/keyboardFocusHandler.d.mts +9 -0
- package/Map/seriesConfig/keyboardFocusHandler.d.ts +9 -0
- package/Map/seriesConfig/keyboardFocusHandler.js +19 -0
- package/Map/seriesConfig/keyboardFocusHandler.mjs +13 -0
- package/Map/seriesConfig/legend.d.mts +3 -0
- package/Map/seriesConfig/legend.d.ts +3 -0
- package/Map/seriesConfig/legend.js +28 -0
- package/Map/seriesConfig/legend.mjs +22 -0
- package/Map/seriesConfig/seriesProcessor.d.mts +3 -0
- package/Map/seriesConfig/seriesProcessor.d.ts +3 -0
- package/Map/seriesConfig/seriesProcessor.js +66 -0
- package/Map/seriesConfig/seriesProcessor.mjs +59 -0
- package/Map/seriesConfig/tooltip.d.mts +3 -0
- package/Map/seriesConfig/tooltip.d.ts +3 -0
- package/Map/seriesConfig/tooltip.js +33 -0
- package/Map/seriesConfig/tooltip.mjs +27 -0
- package/RadialLineChart/RadialLineHighlightPlot.d.mts +3 -2
- package/RadialLineChart/RadialLineHighlightPlot.d.ts +3 -2
- package/ScatterChartPremium/ScatterChartPremium.d.mts +2 -1
- package/ScatterChartPremium/ScatterChartPremium.d.ts +2 -1
- package/ScatterChartPremium/ScatterChartPremium.js +32 -2
- package/ScatterChartPremium/ScatterChartPremium.mjs +32 -2
- package/hooks/index.d.mts +4 -1
- package/hooks/index.d.ts +4 -1
- package/hooks/index.js +33 -0
- package/hooks/index.mjs +4 -1
- package/hooks/useGeoData.d.mts +6 -0
- package/hooks/useGeoData.d.ts +6 -0
- package/hooks/useGeoData.js +17 -0
- package/hooks/useGeoData.mjs +13 -0
- package/hooks/useGeoFeatureIndexesByName.d.mts +7 -0
- package/hooks/useGeoFeatureIndexesByName.d.ts +7 -0
- package/hooks/useGeoFeatureIndexesByName.js +19 -0
- package/hooks/useGeoFeatureIndexesByName.mjs +15 -0
- package/hooks/useGeoPath.d.mts +6 -0
- package/hooks/useGeoPath.d.ts +6 -0
- package/hooks/useGeoPath.js +17 -0
- package/hooks/useGeoPath.mjs +13 -0
- package/hooks/useMapShapeSeries.d.mts +34 -0
- package/hooks/useMapShapeSeries.d.ts +34 -0
- package/hooks/useMapShapeSeries.js +45 -0
- package/hooks/useMapShapeSeries.mjs +40 -0
- package/index.d.mts +2 -0
- package/index.d.ts +2 -0
- package/index.js +25 -1
- package/index.mjs +3 -1
- package/internals/plugins/useGeoProjection/index.d.mts +3 -0
- package/internals/plugins/useGeoProjection/index.d.ts +3 -0
- package/internals/plugins/useGeoProjection/index.js +38 -0
- package/internals/plugins/useGeoProjection/index.mjs +3 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.d.mts +3 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.d.ts +3 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.js +58 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.mjs +50 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.selectors.d.mts +39 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.selectors.d.ts +39 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.selectors.js +135 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.selectors.mjs +128 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.types.d.mts +55 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.types.d.ts +55 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.types.js +5 -0
- package/internals/plugins/useGeoProjection/useGeoProjection.types.mjs +1 -0
- package/models/chartsSlotsComponentsPropsPremium.d.mts +1 -0
- package/models/chartsSlotsComponentsPropsPremium.d.ts +1 -0
- package/models/chartsSlotsComponentsPropsPremium.js +5 -0
- package/models/chartsSlotsComponentsPropsPremium.mjs +1 -0
- package/models/index.d.mts +2 -1
- package/models/index.d.ts +2 -1
- package/models/index.js +11 -0
- package/models/index.mjs +2 -1
- package/models/seriesType/index.d.mts +2 -1
- package/models/seriesType/index.d.ts +2 -1
- package/models/seriesType/index.js +11 -0
- package/models/seriesType/index.mjs +2 -1
- package/models/seriesType/mapShape.d.mts +105 -0
- package/models/seriesType/mapShape.d.ts +105 -0
- package/models/seriesType/mapShape.js +5 -0
- package/models/seriesType/mapShape.mjs +1 -0
- package/package.json +35 -7
- package/typeOverloads/modules.d.mts +16 -1
- package/typeOverloads/modules.d.ts +16 -1
- package/utils/webgl/useWebGLResizeObserver.js +3 -3
- package/utils/webgl/useWebGLResizeObserver.mjs +2 -2
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.useGeoProjection = void 0;
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var React = _interopRequireWildcard(require("react"));
|
|
12
|
+
const useGeoProjection = ({
|
|
13
|
+
params,
|
|
14
|
+
store
|
|
15
|
+
}) => {
|
|
16
|
+
const {
|
|
17
|
+
geoData,
|
|
18
|
+
projection,
|
|
19
|
+
translate,
|
|
20
|
+
rotate,
|
|
21
|
+
scale
|
|
22
|
+
} = params;
|
|
23
|
+
const isFirstRender = React.useRef(true);
|
|
24
|
+
React.useEffect(() => {
|
|
25
|
+
if (isFirstRender.current) {
|
|
26
|
+
isFirstRender.current = false;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
store.set('geoProjection', {
|
|
30
|
+
geoData: geoData ?? null,
|
|
31
|
+
projection: projection ?? null,
|
|
32
|
+
translate: translate ?? null,
|
|
33
|
+
rotate: rotate ?? null,
|
|
34
|
+
scale: scale ?? null
|
|
35
|
+
});
|
|
36
|
+
}, [geoData, projection, translate, rotate, scale, store]);
|
|
37
|
+
return {};
|
|
38
|
+
};
|
|
39
|
+
exports.useGeoProjection = useGeoProjection;
|
|
40
|
+
useGeoProjection.params = {
|
|
41
|
+
geoData: true,
|
|
42
|
+
projection: true,
|
|
43
|
+
translate: true,
|
|
44
|
+
rotate: true,
|
|
45
|
+
scale: true
|
|
46
|
+
};
|
|
47
|
+
useGeoProjection.getDefaultizedParams = ({
|
|
48
|
+
params
|
|
49
|
+
}) => (0, _extends2.default)({}, params);
|
|
50
|
+
useGeoProjection.getInitialState = params => ({
|
|
51
|
+
geoProjection: {
|
|
52
|
+
geoData: params.geoData ?? null,
|
|
53
|
+
projection: params.projection ?? null,
|
|
54
|
+
translate: params.translate ?? null,
|
|
55
|
+
rotate: params.rotate ?? null,
|
|
56
|
+
scale: params.scale ?? null
|
|
57
|
+
}
|
|
58
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
export const useGeoProjection = ({
|
|
6
|
+
params,
|
|
7
|
+
store
|
|
8
|
+
}) => {
|
|
9
|
+
const {
|
|
10
|
+
geoData,
|
|
11
|
+
projection,
|
|
12
|
+
translate,
|
|
13
|
+
rotate,
|
|
14
|
+
scale
|
|
15
|
+
} = params;
|
|
16
|
+
const isFirstRender = React.useRef(true);
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
if (isFirstRender.current) {
|
|
19
|
+
isFirstRender.current = false;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
store.set('geoProjection', {
|
|
23
|
+
geoData: geoData ?? null,
|
|
24
|
+
projection: projection ?? null,
|
|
25
|
+
translate: translate ?? null,
|
|
26
|
+
rotate: rotate ?? null,
|
|
27
|
+
scale: scale ?? null
|
|
28
|
+
});
|
|
29
|
+
}, [geoData, projection, translate, rotate, scale, store]);
|
|
30
|
+
return {};
|
|
31
|
+
};
|
|
32
|
+
useGeoProjection.params = {
|
|
33
|
+
geoData: true,
|
|
34
|
+
projection: true,
|
|
35
|
+
translate: true,
|
|
36
|
+
rotate: true,
|
|
37
|
+
scale: true
|
|
38
|
+
};
|
|
39
|
+
useGeoProjection.getDefaultizedParams = ({
|
|
40
|
+
params
|
|
41
|
+
}) => _extends({}, params);
|
|
42
|
+
useGeoProjection.getInitialState = params => ({
|
|
43
|
+
geoProjection: {
|
|
44
|
+
geoData: params.geoData ?? null,
|
|
45
|
+
projection: params.projection ?? null,
|
|
46
|
+
translate: params.translate ?? null,
|
|
47
|
+
rotate: params.rotate ?? null,
|
|
48
|
+
scale: params.scale ?? null
|
|
49
|
+
}
|
|
50
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ChartState } from '@mui/x-charts/internals';
|
|
2
|
+
import { type ExtendedFeatureCollection, type GeoProjection, type GeoPath } from '@mui/x-charts-vendor/d3-geo';
|
|
3
|
+
import type { GeoProjectionInput, UseGeoProjectionSignature, UseGeoProjectionState } from "./useGeoProjection.types.mjs";
|
|
4
|
+
export declare const selectorChartGeoProjectionState: (state: ChartState<[], [UseGeoProjectionSignature]>) => UseGeoProjectionState["geoProjection"] | undefined;
|
|
5
|
+
export declare const selectorChartRawGeoData: (state: ChartState<[], [UseGeoProjectionSignature]>) => ExtendedFeatureCollection | null;
|
|
6
|
+
export declare const selectorChartRawProjection: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
7
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
8
|
+
}) => GeoProjectionInput | null;
|
|
9
|
+
export declare const selectorChartRawScale: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
10
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
11
|
+
}) => number | null;
|
|
12
|
+
/**
|
|
13
|
+
* Map a feature's `properties.name` to its index in `geoData.features`,
|
|
14
|
+
* for fast lookup by name when joining series rows to features.
|
|
15
|
+
*
|
|
16
|
+
* Features without a string `properties.name` are skipped; on duplicates,
|
|
17
|
+
* the first occurrence wins.
|
|
18
|
+
*/
|
|
19
|
+
export declare const selectorChartGeoFeatureIndexesByName: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
20
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
21
|
+
}) => ReadonlyMap<string, number[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Resolves the raw `projection` input into a ready-to-use `GeoProjection` instance
|
|
24
|
+
* fitted to the chart's drawing area.
|
|
25
|
+
*
|
|
26
|
+
* - String inputs (e.g. `'mercator'`) are mapped to the matching d3-geo factory.
|
|
27
|
+
* - `GeoProjection` instances are used as-is, then fitted.
|
|
28
|
+
* - Returns `null` when no projection is registered or the name is unknown.
|
|
29
|
+
*/
|
|
30
|
+
export declare const selectorChartProjection: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
31
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
32
|
+
}) => GeoProjection | null;
|
|
33
|
+
/**
|
|
34
|
+
* Resolves the raw `projection` input into a ready-to-use `GeoPath` instance
|
|
35
|
+
* fitted to the chart's drawing area.
|
|
36
|
+
*/
|
|
37
|
+
export declare const selectorChartGeoPath: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
38
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
39
|
+
}) => GeoPath<any, import("@mui/x-charts-vendor/d3-geo").GeoPermissibleObjects> | null;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ChartState } from '@mui/x-charts/internals';
|
|
2
|
+
import { type ExtendedFeatureCollection, type GeoProjection, type GeoPath } from '@mui/x-charts-vendor/d3-geo';
|
|
3
|
+
import type { GeoProjectionInput, UseGeoProjectionSignature, UseGeoProjectionState } from "./useGeoProjection.types.js";
|
|
4
|
+
export declare const selectorChartGeoProjectionState: (state: ChartState<[], [UseGeoProjectionSignature]>) => UseGeoProjectionState["geoProjection"] | undefined;
|
|
5
|
+
export declare const selectorChartRawGeoData: (state: ChartState<[], [UseGeoProjectionSignature]>) => ExtendedFeatureCollection | null;
|
|
6
|
+
export declare const selectorChartRawProjection: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
7
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
8
|
+
}) => GeoProjectionInput | null;
|
|
9
|
+
export declare const selectorChartRawScale: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
10
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
11
|
+
}) => number | null;
|
|
12
|
+
/**
|
|
13
|
+
* Map a feature's `properties.name` to its index in `geoData.features`,
|
|
14
|
+
* for fast lookup by name when joining series rows to features.
|
|
15
|
+
*
|
|
16
|
+
* Features without a string `properties.name` are skipped; on duplicates,
|
|
17
|
+
* the first occurrence wins.
|
|
18
|
+
*/
|
|
19
|
+
export declare const selectorChartGeoFeatureIndexesByName: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
20
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
21
|
+
}) => ReadonlyMap<string, number[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Resolves the raw `projection` input into a ready-to-use `GeoProjection` instance
|
|
24
|
+
* fitted to the chart's drawing area.
|
|
25
|
+
*
|
|
26
|
+
* - String inputs (e.g. `'mercator'`) are mapped to the matching d3-geo factory.
|
|
27
|
+
* - `GeoProjection` instances are used as-is, then fitted.
|
|
28
|
+
* - Returns `null` when no projection is registered or the name is unknown.
|
|
29
|
+
*/
|
|
30
|
+
export declare const selectorChartProjection: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
31
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
32
|
+
}) => GeoProjection | null;
|
|
33
|
+
/**
|
|
34
|
+
* Resolves the raw `projection` input into a ready-to-use `GeoPath` instance
|
|
35
|
+
* fitted to the chart's drawing area.
|
|
36
|
+
*/
|
|
37
|
+
export declare const selectorChartGeoPath: (args_0: import("@mui/x-charts/internals/plugins/corePlugins/useChartId/useChartId.types").UseChartIdState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeriesConfig/useChartSeriesConfig.types").UseChartSeriesConfigState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartExperimentalFeature/useChartExperimentalFeature.types").UseChartExperimentalFeaturesState & import("@mui/x-charts/internals/plugins/corePlugins/useChartDimensions/useChartDimensions.types").UseChartDimensionsState & import("@mui/x-charts/internals/plugins/corePlugins/useChartSeries/useChartSeries.types").UseChartSeriesState<keyof import("@mui/x-charts/internals").ChartsSeriesConfig> & import("@mui/x-charts/internals/plugins/corePlugins/useChartAnimation/useChartAnimation.types").UseChartAnimationState & import("@mui/x-charts/internals").UseChartInteractionListenerState & Partial<UseGeoProjectionState> & {
|
|
38
|
+
cacheKey: import("@mui/x-charts/internals").ChartStateCacheKey;
|
|
39
|
+
}) => GeoPath<any, import("@mui/x-charts-vendor/d3-geo").GeoPermissibleObjects> | null;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.selectorChartRawScale = exports.selectorChartRawProjection = exports.selectorChartRawGeoData = exports.selectorChartProjection = exports.selectorChartGeoProjectionState = exports.selectorChartGeoPath = exports.selectorChartGeoFeatureIndexesByName = void 0;
|
|
7
|
+
var _store = require("@mui/x-internals/store");
|
|
8
|
+
var _internals = require("@mui/x-charts/internals");
|
|
9
|
+
var _d3Geo = require("@mui/x-charts-vendor/d3-geo");
|
|
10
|
+
const PROJECTION_FACTORIES = {
|
|
11
|
+
// Azimuthal projections (https://d3js.org/d3-geo/azimuthal)
|
|
12
|
+
azimuthalEqualArea: _d3Geo.geoAzimuthalEqualArea,
|
|
13
|
+
azimuthalEquidistant: _d3Geo.geoAzimuthalEquidistant,
|
|
14
|
+
gnomonic: _d3Geo.geoGnomonic,
|
|
15
|
+
orthographic: _d3Geo.geoOrthographic,
|
|
16
|
+
stereographic: _d3Geo.geoStereographic,
|
|
17
|
+
// Conic projections (https://d3js.org/d3-geo/conic)
|
|
18
|
+
conicConformal: _d3Geo.geoConicConformal,
|
|
19
|
+
conicEqualArea: _d3Geo.geoConicEqualArea,
|
|
20
|
+
conicEquidistant: _d3Geo.geoConicEquidistant,
|
|
21
|
+
albers: _d3Geo.geoAlbers,
|
|
22
|
+
albersUsa: _d3Geo.geoAlbersUsa,
|
|
23
|
+
// Special composition for the USA with an edge case for Alaska and Hawaii.
|
|
24
|
+
|
|
25
|
+
// Cylindrical projections (https://d3js.org/d3-geo/cylindrical)
|
|
26
|
+
equirectangular: _d3Geo.geoEquirectangular,
|
|
27
|
+
mercator: _d3Geo.geoMercator,
|
|
28
|
+
transverseMercator: _d3Geo.geoTransverseMercator,
|
|
29
|
+
equalEarth: _d3Geo.geoEqualEarth,
|
|
30
|
+
naturalEarth1: _d3Geo.geoNaturalEarth1
|
|
31
|
+
};
|
|
32
|
+
const isConicProjection = projection => {
|
|
33
|
+
return 'parallels' in projection && typeof projection.parallels === 'function';
|
|
34
|
+
};
|
|
35
|
+
const selectorChartGeoProjectionState = state => state.geoProjection;
|
|
36
|
+
exports.selectorChartGeoProjectionState = selectorChartGeoProjectionState;
|
|
37
|
+
const selectorChartRawGeoData = exports.selectorChartRawGeoData = (0, _store.createSelector)(selectorChartGeoProjectionState, geoProjection => geoProjection?.geoData ?? null);
|
|
38
|
+
const selectorChartRawProjection = exports.selectorChartRawProjection = (0, _store.createSelector)(selectorChartGeoProjectionState, geoProjection => geoProjection?.projection ?? null);
|
|
39
|
+
const selectorChartRawScale = exports.selectorChartRawScale = (0, _store.createSelector)(selectorChartGeoProjectionState, geoProjection => geoProjection?.scale ?? null);
|
|
40
|
+
const selectorChartRotate = (0, _store.createSelectorMemoized)(selectorChartGeoProjectionState, geoProjection => geoProjection?.rotate ?? null);
|
|
41
|
+
const selectorChartTranslate = (0, _store.createSelectorMemoized)(selectorChartGeoProjectionState, geoProjection => geoProjection?.translate ?? null);
|
|
42
|
+
const selectorChartParallels = (0, _store.createSelectorMemoized)(selectorChartGeoProjectionState, selectorChartRotate, (geoProjection, rotate) => geoProjection?.parallels ?? (rotate ? [rotate[1] - 15, rotate[1] + 15] : [30, 30]));
|
|
43
|
+
/**
|
|
44
|
+
* Map a feature's `properties.name` to its index in `geoData.features`,
|
|
45
|
+
* for fast lookup by name when joining series rows to features.
|
|
46
|
+
*
|
|
47
|
+
* Features without a string `properties.name` are skipped; on duplicates,
|
|
48
|
+
* the first occurrence wins.
|
|
49
|
+
*/
|
|
50
|
+
const selectorChartGeoFeatureIndexesByName = exports.selectorChartGeoFeatureIndexesByName = (0, _store.createSelectorMemoized)(selectorChartRawGeoData, geoData => {
|
|
51
|
+
const map = new Map();
|
|
52
|
+
if (!geoData) {
|
|
53
|
+
return map;
|
|
54
|
+
}
|
|
55
|
+
geoData.features.forEach((feature, index) => {
|
|
56
|
+
const name = feature.properties?.name;
|
|
57
|
+
if (typeof name !== 'string') {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (map.has(name)) {
|
|
61
|
+
map.get(name).push(index);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
map.set(name, [index]);
|
|
65
|
+
});
|
|
66
|
+
return map;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Resolves the raw `projection` input into a ready-to-use `GeoProjection` instance
|
|
71
|
+
* fitted to the chart's drawing area.
|
|
72
|
+
*
|
|
73
|
+
* - String inputs (e.g. `'mercator'`) are mapped to the matching d3-geo factory.
|
|
74
|
+
* - `GeoProjection` instances are used as-is, then fitted.
|
|
75
|
+
* - Returns `null` when no projection is registered or the name is unknown.
|
|
76
|
+
*/
|
|
77
|
+
const selectorChartProjection = exports.selectorChartProjection = (0, _store.createSelectorMemoized)(selectorChartRawProjection, selectorChartRawGeoData, selectorChartParallels, selectorChartRotate, selectorChartTranslate, selectorChartRawScale, _internals.selectorChartDrawingArea, (projectionInput, geoData, parallels, rotate, translate, scale, drawingArea) => {
|
|
78
|
+
if (!projectionInput) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
let projection;
|
|
82
|
+
if (typeof projectionInput === 'string') {
|
|
83
|
+
const factory = PROJECTION_FACTORIES[projectionInput];
|
|
84
|
+
if (!factory) {
|
|
85
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
86
|
+
console.error(`MUI X Charts: Unknown projection name '${projectionInput}'. ` + `Expected one of: ${Object.keys(PROJECTION_FACTORIES).join(', ')}.`);
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
projection = factory();
|
|
91
|
+
if (isConicProjection(projection)) {
|
|
92
|
+
projection.parallels(parallels);
|
|
93
|
+
}
|
|
94
|
+
} else {
|
|
95
|
+
projection = projectionInput;
|
|
96
|
+
}
|
|
97
|
+
if (geoData) {
|
|
98
|
+
if (isConicProjection(projection)) {
|
|
99
|
+
if (rotate) {
|
|
100
|
+
projection.rotate?.(rotate);
|
|
101
|
+
}
|
|
102
|
+
if (!scale) {
|
|
103
|
+
const [[x0, y0], [x1, y1]] = (0, _d3Geo.geoPath)(projection).bounds(geoData);
|
|
104
|
+
const currentScale = projection.scale();
|
|
105
|
+
const fitScale = Math.min(currentScale * (drawingArea.width / (x1 - x0)), currentScale * (drawingArea.height / (y1 - y0)));
|
|
106
|
+
projection.scale(fitScale);
|
|
107
|
+
} else {
|
|
108
|
+
projection.scale(scale);
|
|
109
|
+
}
|
|
110
|
+
return projection;
|
|
111
|
+
}
|
|
112
|
+
if (rotate) {
|
|
113
|
+
projection.rotate?.(rotate);
|
|
114
|
+
}
|
|
115
|
+
if (scale) {
|
|
116
|
+
projection.scale(scale);
|
|
117
|
+
projection.clipExtent?.([[drawingArea.left, drawingArea.top], [drawingArea.left + drawingArea.width, drawingArea.top + drawingArea.height]]);
|
|
118
|
+
} else {
|
|
119
|
+
projection.fitExtent?.([[drawingArea.left, drawingArea.top], [drawingArea.left + drawingArea.width, drawingArea.top + drawingArea.height]], geoData);
|
|
120
|
+
}
|
|
121
|
+
projection.translate(translate ?? [drawingArea.left + drawingArea.width / 2, drawingArea.top + drawingArea.height / 2]);
|
|
122
|
+
}
|
|
123
|
+
return projection;
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Resolves the raw `projection` input into a ready-to-use `GeoPath` instance
|
|
128
|
+
* fitted to the chart's drawing area.
|
|
129
|
+
*/
|
|
130
|
+
const selectorChartGeoPath = exports.selectorChartGeoPath = (0, _store.createSelectorMemoized)(selectorChartProjection, projection => {
|
|
131
|
+
if (!projection) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
return (0, _d3Geo.geoPath)(projection);
|
|
135
|
+
});
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';
|
|
2
|
+
import { selectorChartDrawingArea } from '@mui/x-charts/internals';
|
|
3
|
+
import { geoAlbers, geoAlbersUsa, geoAzimuthalEqualArea, geoAzimuthalEquidistant, geoConicConformal, geoConicEqualArea, geoConicEquidistant, geoEqualEarth, geoEquirectangular, geoGnomonic, geoMercator, geoNaturalEarth1, geoOrthographic, geoStereographic, geoTransverseMercator, geoPath } from '@mui/x-charts-vendor/d3-geo';
|
|
4
|
+
const PROJECTION_FACTORIES = {
|
|
5
|
+
// Azimuthal projections (https://d3js.org/d3-geo/azimuthal)
|
|
6
|
+
azimuthalEqualArea: geoAzimuthalEqualArea,
|
|
7
|
+
azimuthalEquidistant: geoAzimuthalEquidistant,
|
|
8
|
+
gnomonic: geoGnomonic,
|
|
9
|
+
orthographic: geoOrthographic,
|
|
10
|
+
stereographic: geoStereographic,
|
|
11
|
+
// Conic projections (https://d3js.org/d3-geo/conic)
|
|
12
|
+
conicConformal: geoConicConformal,
|
|
13
|
+
conicEqualArea: geoConicEqualArea,
|
|
14
|
+
conicEquidistant: geoConicEquidistant,
|
|
15
|
+
albers: geoAlbers,
|
|
16
|
+
albersUsa: geoAlbersUsa,
|
|
17
|
+
// Special composition for the USA with an edge case for Alaska and Hawaii.
|
|
18
|
+
|
|
19
|
+
// Cylindrical projections (https://d3js.org/d3-geo/cylindrical)
|
|
20
|
+
equirectangular: geoEquirectangular,
|
|
21
|
+
mercator: geoMercator,
|
|
22
|
+
transverseMercator: geoTransverseMercator,
|
|
23
|
+
equalEarth: geoEqualEarth,
|
|
24
|
+
naturalEarth1: geoNaturalEarth1
|
|
25
|
+
};
|
|
26
|
+
const isConicProjection = projection => {
|
|
27
|
+
return 'parallels' in projection && typeof projection.parallels === 'function';
|
|
28
|
+
};
|
|
29
|
+
export const selectorChartGeoProjectionState = state => state.geoProjection;
|
|
30
|
+
export const selectorChartRawGeoData = createSelector(selectorChartGeoProjectionState, geoProjection => geoProjection?.geoData ?? null);
|
|
31
|
+
export const selectorChartRawProjection = createSelector(selectorChartGeoProjectionState, geoProjection => geoProjection?.projection ?? null);
|
|
32
|
+
export const selectorChartRawScale = createSelector(selectorChartGeoProjectionState, geoProjection => geoProjection?.scale ?? null);
|
|
33
|
+
const selectorChartRotate = createSelectorMemoized(selectorChartGeoProjectionState, geoProjection => geoProjection?.rotate ?? null);
|
|
34
|
+
const selectorChartTranslate = createSelectorMemoized(selectorChartGeoProjectionState, geoProjection => geoProjection?.translate ?? null);
|
|
35
|
+
const selectorChartParallels = createSelectorMemoized(selectorChartGeoProjectionState, selectorChartRotate, (geoProjection, rotate) => geoProjection?.parallels ?? (rotate ? [rotate[1] - 15, rotate[1] + 15] : [30, 30]));
|
|
36
|
+
/**
|
|
37
|
+
* Map a feature's `properties.name` to its index in `geoData.features`,
|
|
38
|
+
* for fast lookup by name when joining series rows to features.
|
|
39
|
+
*
|
|
40
|
+
* Features without a string `properties.name` are skipped; on duplicates,
|
|
41
|
+
* the first occurrence wins.
|
|
42
|
+
*/
|
|
43
|
+
export const selectorChartGeoFeatureIndexesByName = createSelectorMemoized(selectorChartRawGeoData, geoData => {
|
|
44
|
+
const map = new Map();
|
|
45
|
+
if (!geoData) {
|
|
46
|
+
return map;
|
|
47
|
+
}
|
|
48
|
+
geoData.features.forEach((feature, index) => {
|
|
49
|
+
const name = feature.properties?.name;
|
|
50
|
+
if (typeof name !== 'string') {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (map.has(name)) {
|
|
54
|
+
map.get(name).push(index);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
map.set(name, [index]);
|
|
58
|
+
});
|
|
59
|
+
return map;
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Resolves the raw `projection` input into a ready-to-use `GeoProjection` instance
|
|
64
|
+
* fitted to the chart's drawing area.
|
|
65
|
+
*
|
|
66
|
+
* - String inputs (e.g. `'mercator'`) are mapped to the matching d3-geo factory.
|
|
67
|
+
* - `GeoProjection` instances are used as-is, then fitted.
|
|
68
|
+
* - Returns `null` when no projection is registered or the name is unknown.
|
|
69
|
+
*/
|
|
70
|
+
export const selectorChartProjection = createSelectorMemoized(selectorChartRawProjection, selectorChartRawGeoData, selectorChartParallels, selectorChartRotate, selectorChartTranslate, selectorChartRawScale, selectorChartDrawingArea, (projectionInput, geoData, parallels, rotate, translate, scale, drawingArea) => {
|
|
71
|
+
if (!projectionInput) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
let projection;
|
|
75
|
+
if (typeof projectionInput === 'string') {
|
|
76
|
+
const factory = PROJECTION_FACTORIES[projectionInput];
|
|
77
|
+
if (!factory) {
|
|
78
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
79
|
+
console.error(`MUI X Charts: Unknown projection name '${projectionInput}'. ` + `Expected one of: ${Object.keys(PROJECTION_FACTORIES).join(', ')}.`);
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
projection = factory();
|
|
84
|
+
if (isConicProjection(projection)) {
|
|
85
|
+
projection.parallels(parallels);
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
projection = projectionInput;
|
|
89
|
+
}
|
|
90
|
+
if (geoData) {
|
|
91
|
+
if (isConicProjection(projection)) {
|
|
92
|
+
if (rotate) {
|
|
93
|
+
projection.rotate?.(rotate);
|
|
94
|
+
}
|
|
95
|
+
if (!scale) {
|
|
96
|
+
const [[x0, y0], [x1, y1]] = geoPath(projection).bounds(geoData);
|
|
97
|
+
const currentScale = projection.scale();
|
|
98
|
+
const fitScale = Math.min(currentScale * (drawingArea.width / (x1 - x0)), currentScale * (drawingArea.height / (y1 - y0)));
|
|
99
|
+
projection.scale(fitScale);
|
|
100
|
+
} else {
|
|
101
|
+
projection.scale(scale);
|
|
102
|
+
}
|
|
103
|
+
return projection;
|
|
104
|
+
}
|
|
105
|
+
if (rotate) {
|
|
106
|
+
projection.rotate?.(rotate);
|
|
107
|
+
}
|
|
108
|
+
if (scale) {
|
|
109
|
+
projection.scale(scale);
|
|
110
|
+
projection.clipExtent?.([[drawingArea.left, drawingArea.top], [drawingArea.left + drawingArea.width, drawingArea.top + drawingArea.height]]);
|
|
111
|
+
} else {
|
|
112
|
+
projection.fitExtent?.([[drawingArea.left, drawingArea.top], [drawingArea.left + drawingArea.width, drawingArea.top + drawingArea.height]], geoData);
|
|
113
|
+
}
|
|
114
|
+
projection.translate(translate ?? [drawingArea.left + drawingArea.width / 2, drawingArea.top + drawingArea.height / 2]);
|
|
115
|
+
}
|
|
116
|
+
return projection;
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Resolves the raw `projection` input into a ready-to-use `GeoPath` instance
|
|
121
|
+
* fitted to the chart's drawing area.
|
|
122
|
+
*/
|
|
123
|
+
export const selectorChartGeoPath = createSelectorMemoized(selectorChartProjection, projection => {
|
|
124
|
+
if (!projection) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
return geoPath(projection);
|
|
128
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type ChartPluginSignature } from '@mui/x-charts/internals';
|
|
2
|
+
import { type GeoProjection, type ExtendedFeatureCollection } from '@mui/x-charts-vendor/d3-geo';
|
|
3
|
+
export type D3NamedProjection = 'azimuthalEqualArea' | 'azimuthalEquidistant' | 'gnomonic' | 'orthographic' | 'stereographic' | 'conicConformal' | 'conicEqualArea' | 'conicEquidistant' | 'albers' | 'albersUsa' | 'equirectangular' | 'mercator' | 'transverseMercator' | 'equalEarth' | 'naturalEarth1';
|
|
4
|
+
/**
|
|
5
|
+
* A d3-geo projection accepted by `useGeoProjection`.
|
|
6
|
+
*
|
|
7
|
+
* Either a built-in projection name (e.g. `'mercator'`, `'naturalEarth1'`)
|
|
8
|
+
* or a `GeoProjection` instance returned by a d3-geo factory.
|
|
9
|
+
*/
|
|
10
|
+
export type GeoProjectionInput = D3NamedProjection | GeoProjection;
|
|
11
|
+
export interface UseGeoProjectionParameters {
|
|
12
|
+
/**
|
|
13
|
+
* The GeoJSON `FeatureCollection` whose features will be rendered on the map.
|
|
14
|
+
*/
|
|
15
|
+
geoData?: ExtendedFeatureCollection;
|
|
16
|
+
/**
|
|
17
|
+
* The d3-geo projection used to map geographic coordinates to SVG coordinates.
|
|
18
|
+
* Accepts a d3-geo projection name (e.g. `'mercator'`, `'naturalEarth1'`)
|
|
19
|
+
* or a custom `GeoProjection` instance.
|
|
20
|
+
*/
|
|
21
|
+
projection?: GeoProjectionInput;
|
|
22
|
+
/**
|
|
23
|
+
* The center of the projection, specified as a `[longitude, latitude]` pair in degrees.
|
|
24
|
+
*/
|
|
25
|
+
translate?: [number, number];
|
|
26
|
+
/**
|
|
27
|
+
* The rotation of the projection, specified as a `[longitude, latitude]` pair in degrees.
|
|
28
|
+
*/
|
|
29
|
+
rotate?: [number, number];
|
|
30
|
+
/**
|
|
31
|
+
* The scale of the projection.
|
|
32
|
+
* Id not provided the scale will default to fit the entire geoData in the drawing area.
|
|
33
|
+
*/
|
|
34
|
+
scale?: number;
|
|
35
|
+
}
|
|
36
|
+
export type UseGeoProjectionDefaultizedParameters = UseGeoProjectionParameters;
|
|
37
|
+
export interface UseGeoProjectionState {
|
|
38
|
+
geoProjection: {
|
|
39
|
+
geoData: ExtendedFeatureCollection | null;
|
|
40
|
+
projection: GeoProjectionInput | null;
|
|
41
|
+
translate: [number, number] | null;
|
|
42
|
+
rotate: [number, number] | null;
|
|
43
|
+
scale: number | null;
|
|
44
|
+
/**
|
|
45
|
+
* The two standard parallels used by conic projections, if applicable.
|
|
46
|
+
* Used for projection 'conicConformal', 'conicEqualArea', 'conicEquidistant'.
|
|
47
|
+
*/
|
|
48
|
+
parallels?: [number, number] | null;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export type UseGeoProjectionSignature = ChartPluginSignature<{
|
|
52
|
+
params: UseGeoProjectionParameters;
|
|
53
|
+
defaultizedParams: UseGeoProjectionDefaultizedParameters;
|
|
54
|
+
state: UseGeoProjectionState;
|
|
55
|
+
}>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type ChartPluginSignature } from '@mui/x-charts/internals';
|
|
2
|
+
import { type GeoProjection, type ExtendedFeatureCollection } from '@mui/x-charts-vendor/d3-geo';
|
|
3
|
+
export type D3NamedProjection = 'azimuthalEqualArea' | 'azimuthalEquidistant' | 'gnomonic' | 'orthographic' | 'stereographic' | 'conicConformal' | 'conicEqualArea' | 'conicEquidistant' | 'albers' | 'albersUsa' | 'equirectangular' | 'mercator' | 'transverseMercator' | 'equalEarth' | 'naturalEarth1';
|
|
4
|
+
/**
|
|
5
|
+
* A d3-geo projection accepted by `useGeoProjection`.
|
|
6
|
+
*
|
|
7
|
+
* Either a built-in projection name (e.g. `'mercator'`, `'naturalEarth1'`)
|
|
8
|
+
* or a `GeoProjection` instance returned by a d3-geo factory.
|
|
9
|
+
*/
|
|
10
|
+
export type GeoProjectionInput = D3NamedProjection | GeoProjection;
|
|
11
|
+
export interface UseGeoProjectionParameters {
|
|
12
|
+
/**
|
|
13
|
+
* The GeoJSON `FeatureCollection` whose features will be rendered on the map.
|
|
14
|
+
*/
|
|
15
|
+
geoData?: ExtendedFeatureCollection;
|
|
16
|
+
/**
|
|
17
|
+
* The d3-geo projection used to map geographic coordinates to SVG coordinates.
|
|
18
|
+
* Accepts a d3-geo projection name (e.g. `'mercator'`, `'naturalEarth1'`)
|
|
19
|
+
* or a custom `GeoProjection` instance.
|
|
20
|
+
*/
|
|
21
|
+
projection?: GeoProjectionInput;
|
|
22
|
+
/**
|
|
23
|
+
* The center of the projection, specified as a `[longitude, latitude]` pair in degrees.
|
|
24
|
+
*/
|
|
25
|
+
translate?: [number, number];
|
|
26
|
+
/**
|
|
27
|
+
* The rotation of the projection, specified as a `[longitude, latitude]` pair in degrees.
|
|
28
|
+
*/
|
|
29
|
+
rotate?: [number, number];
|
|
30
|
+
/**
|
|
31
|
+
* The scale of the projection.
|
|
32
|
+
* Id not provided the scale will default to fit the entire geoData in the drawing area.
|
|
33
|
+
*/
|
|
34
|
+
scale?: number;
|
|
35
|
+
}
|
|
36
|
+
export type UseGeoProjectionDefaultizedParameters = UseGeoProjectionParameters;
|
|
37
|
+
export interface UseGeoProjectionState {
|
|
38
|
+
geoProjection: {
|
|
39
|
+
geoData: ExtendedFeatureCollection | null;
|
|
40
|
+
projection: GeoProjectionInput | null;
|
|
41
|
+
translate: [number, number] | null;
|
|
42
|
+
rotate: [number, number] | null;
|
|
43
|
+
scale: number | null;
|
|
44
|
+
/**
|
|
45
|
+
* The two standard parallels used by conic projections, if applicable.
|
|
46
|
+
* Used for projection 'conicConformal', 'conicEqualArea', 'conicEquidistant'.
|
|
47
|
+
*/
|
|
48
|
+
parallels?: [number, number] | null;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export type UseGeoProjectionSignature = ChartPluginSignature<{
|
|
52
|
+
params: UseGeoProjectionParameters;
|
|
53
|
+
defaultizedParams: UseGeoProjectionDefaultizedParameters;
|
|
54
|
+
state: UseGeoProjectionState;
|
|
55
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export interface RadialLineHighlightPropsOverrides {}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export interface RadialLineHighlightPropsOverrides {}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/models/index.d.mts
CHANGED
package/models/index.d.ts
CHANGED
package/models/index.js
CHANGED
|
@@ -24,4 +24,15 @@ Object.keys(_seriesType).forEach(function (key) {
|
|
|
24
24
|
return _seriesType[key];
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
|
+
});
|
|
28
|
+
var _chartsSlotsComponentsPropsPremium = require("./chartsSlotsComponentsPropsPremium");
|
|
29
|
+
Object.keys(_chartsSlotsComponentsPropsPremium).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (key in exports && exports[key] === _chartsSlotsComponentsPropsPremium[key]) return;
|
|
32
|
+
Object.defineProperty(exports, key, {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _chartsSlotsComponentsPropsPremium[key];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
27
38
|
});
|