@mui/x-charts-pro 8.5.2 → 8.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/CHANGELOG.md +203 -11
- package/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
- package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +1 -1
- package/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +20 -31
- package/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +1 -8
- package/ChartZoomSlider/internals/zoom-utils.d.ts +3 -1
- package/ChartZoomSlider/internals/zoom-utils.js +19 -8
- package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.d.ts +27 -0
- package/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +77 -0
- package/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.d.ts +33 -0
- package/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +75 -0
- package/ChartsToolbarPro/ChartsToolbarPro.d.ts +16 -3
- package/ChartsToolbarPro/ChartsToolbarPro.js +118 -8
- package/ChartsToolbarPro/index.d.ts +3 -1
- package/ChartsToolbarPro/index.js +22 -0
- package/ChartsToolbarPro/internals/ChartsMenu.d.ts +14 -0
- package/ChartsToolbarPro/internals/ChartsMenu.js +73 -0
- package/ChartsToolbarPro/internals/ChartsToolbarDivider.d.ts +5 -0
- package/ChartsToolbarPro/internals/ChartsToolbarDivider.js +47 -0
- package/FunnelChart/FunnelPlot.js +56 -40
- package/FunnelChart/FunnelSection.js +2 -0
- package/FunnelChart/curves/bump.d.ts +3 -3
- package/FunnelChart/curves/bump.js +3 -0
- package/FunnelChart/curves/curve.types.d.ts +14 -1
- package/FunnelChart/curves/getFunnelCurve.d.ts +7 -2
- package/FunnelChart/curves/linear.d.ts +3 -3
- package/FunnelChart/curves/linear.js +23 -18
- package/FunnelChart/curves/pyramid.d.ts +3 -3
- package/FunnelChart/curves/pyramid.js +17 -12
- package/FunnelChart/curves/step-pyramid.d.ts +5 -5
- package/FunnelChart/curves/step-pyramid.js +20 -18
- package/FunnelChart/curves/step.d.ts +3 -3
- package/FunnelChart/curves/step.js +14 -12
- package/FunnelChart/funnelAxisPlugin/useChartFunnelAxisRendering.selectors.d.ts +18 -1444
- package/FunnelChart/labelUtils.d.ts +4 -12
- package/FunnelChart/labelUtils.js +43 -44
- package/esm/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +1 -1
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderActiveTrack.js +21 -32
- package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderTrack.js +1 -8
- package/esm/ChartZoomSlider/internals/zoom-utils.d.ts +3 -1
- package/esm/ChartZoomSlider/internals/zoom-utils.js +19 -9
- package/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.d.ts +27 -0
- package/esm/ChartsToolbarPro/ChartsToolbarImageExportTrigger.js +70 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.d.ts +33 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPrintExportTrigger.js +68 -0
- package/esm/ChartsToolbarPro/ChartsToolbarPro.d.ts +16 -3
- package/esm/ChartsToolbarPro/ChartsToolbarPro.js +120 -8
- package/esm/ChartsToolbarPro/index.d.ts +3 -1
- package/esm/ChartsToolbarPro/index.js +3 -1
- package/esm/ChartsToolbarPro/internals/ChartsMenu.d.ts +14 -0
- package/esm/ChartsToolbarPro/internals/ChartsMenu.js +67 -0
- package/esm/ChartsToolbarPro/internals/ChartsToolbarDivider.d.ts +5 -0
- package/esm/ChartsToolbarPro/internals/ChartsToolbarDivider.js +40 -0
- package/esm/FunnelChart/FunnelPlot.js +56 -40
- package/esm/FunnelChart/FunnelSection.js +2 -0
- package/esm/FunnelChart/curves/bump.d.ts +3 -3
- package/esm/FunnelChart/curves/bump.js +3 -0
- package/esm/FunnelChart/curves/curve.types.d.ts +14 -1
- package/esm/FunnelChart/curves/getFunnelCurve.d.ts +7 -2
- package/esm/FunnelChart/curves/linear.d.ts +3 -3
- package/esm/FunnelChart/curves/linear.js +23 -18
- package/esm/FunnelChart/curves/pyramid.d.ts +3 -3
- package/esm/FunnelChart/curves/pyramid.js +17 -12
- package/esm/FunnelChart/curves/step-pyramid.d.ts +5 -5
- package/esm/FunnelChart/curves/step-pyramid.js +20 -18
- package/esm/FunnelChart/curves/step.d.ts +3 -3
- package/esm/FunnelChart/curves/step.js +14 -12
- package/esm/FunnelChart/funnelAxisPlugin/useChartFunnelAxisRendering.selectors.d.ts +18 -1444
- package/esm/FunnelChart/labelUtils.d.ts +4 -12
- package/esm/FunnelChart/labelUtils.js +43 -44
- package/esm/index.d.ts +2 -1
- package/esm/index.js +1 -1
- package/esm/internals/material/components/BaseMenuItem.d.ts +3 -0
- package/esm/internals/material/components/BaseMenuItem.js +27 -0
- package/esm/internals/material/components/BasePopper.d.ts +3 -0
- package/esm/internals/material/components/BasePopper.js +122 -0
- package/esm/internals/material/icons.d.ts +2 -1
- package/esm/internals/material/icons.js +4 -1
- package/esm/internals/material/index.d.ts +1 -0
- package/esm/internals/material/index.js +12 -3
- package/esm/internals/plugins/useChartProExport/print.js +1 -1
- package/esm/internals/plugins/useChartProExport/useChartProExport.types.d.ts +7 -6
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +16 -595
- package/esm/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +2 -2
- package/esm/internals/slots/chartBaseSlotProps.d.ts +50 -3
- package/esm/internals/slots/chartsBaseSlots.d.ts +5 -1
- package/esm/internals/slots/chartsIconSlots.d.ts +5 -0
- package/index.d.ts +2 -1
- package/index.js +1 -1
- package/internals/material/components/BaseMenuItem.d.ts +3 -0
- package/internals/material/components/BaseMenuItem.js +35 -0
- package/internals/material/components/BasePopper.d.ts +3 -0
- package/internals/material/components/BasePopper.js +130 -0
- package/internals/material/icons.d.ts +2 -1
- package/internals/material/icons.js +5 -2
- package/internals/material/index.d.ts +1 -0
- package/internals/material/index.js +11 -2
- package/internals/plugins/useChartProExport/print.js +1 -1
- package/internals/plugins/useChartProExport/useChartProExport.types.d.ts +7 -6
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.d.ts +16 -595
- package/internals/plugins/useChartProZoom/useChartProZoom.selectors.js +2 -2
- package/internals/slots/chartBaseSlotProps.d.ts +50 -3
- package/internals/slots/chartsBaseSlots.d.ts +5 -1
- package/internals/slots/chartsIconSlots.d.ts +5 -0
- package/package.json +5 -5
- package/FunnelChart/positionGetter.d.ts +0 -1
- package/FunnelChart/positionGetter.js +0 -5
- package/esm/FunnelChart/positionGetter.d.ts +0 -1
- package/esm/FunnelChart/positionGetter.js +0 -1
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import { ChartsToolbarProps } from '@mui/x-charts/Toolbar';
|
|
2
1
|
import * as React from 'react';
|
|
3
|
-
|
|
2
|
+
import { ChartsToolbarProps } from '@mui/x-charts/Toolbar';
|
|
3
|
+
import { ChartsToolbarPrintExportOptions } from "./ChartsToolbarPrintExportTrigger.js";
|
|
4
|
+
import { ChartsToolbarImageExportOptions } from "./ChartsToolbarImageExportTrigger.js";
|
|
5
|
+
export interface ChartsToolbarProProps extends ChartsToolbarProps {
|
|
6
|
+
printOptions?: ChartsToolbarPrintExportOptions;
|
|
7
|
+
imageExportOptions?: ChartsToolbarImageExportOptions[];
|
|
8
|
+
}
|
|
4
9
|
/**
|
|
5
10
|
* The chart toolbar component for the pro package.
|
|
6
11
|
*/
|
|
7
|
-
|
|
12
|
+
declare function ChartsToolbarPro({
|
|
13
|
+
printOptions,
|
|
14
|
+
imageExportOptions: rawImageExportOptions,
|
|
15
|
+
...other
|
|
16
|
+
}: ChartsToolbarProProps): React.JSX.Element | null;
|
|
17
|
+
declare namespace ChartsToolbarPro {
|
|
18
|
+
var propTypes: any;
|
|
19
|
+
}
|
|
20
|
+
export { ChartsToolbarPro };
|
|
@@ -1,24 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
'use client';
|
|
2
3
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
4
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
6
|
Object.defineProperty(exports, "__esModule", {
|
|
6
7
|
value: true
|
|
7
8
|
});
|
|
8
9
|
exports.ChartsToolbarPro = ChartsToolbarPro;
|
|
9
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var
|
|
11
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
|
+
var _Toolbar = require("@mui/x-charts/Toolbar");
|
|
12
15
|
var _internals = require("@mui/x-charts/internals");
|
|
13
16
|
var _hooks = require("@mui/x-charts/hooks");
|
|
17
|
+
var _useId = _interopRequireDefault(require("@mui/utils/useId"));
|
|
18
|
+
var _ChartsToolbarDivider = require("./internals/ChartsToolbarDivider");
|
|
19
|
+
var _ChartsMenu = require("./internals/ChartsMenu");
|
|
14
20
|
var _useChartProZoom = require("../internals/plugins/useChartProZoom");
|
|
15
21
|
var _ChartsToolbarZoomInTrigger = require("./ChartsToolbarZoomInTrigger");
|
|
16
22
|
var _ChartsToolbarZoomOutTrigger = require("./ChartsToolbarZoomOutTrigger");
|
|
23
|
+
var _ChartsToolbarPrintExportTrigger = require("./ChartsToolbarPrintExportTrigger");
|
|
24
|
+
var _ChartsToolbarImageExportTrigger = require("./ChartsToolbarImageExportTrigger");
|
|
17
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
|
+
const _excluded = ["printOptions", "imageExportOptions"];
|
|
27
|
+
const DEFAULT_IMAGE_EXPORT_OPTIONS = [{
|
|
28
|
+
type: 'image/png'
|
|
29
|
+
}];
|
|
30
|
+
|
|
18
31
|
/**
|
|
19
32
|
* The chart toolbar component for the pro package.
|
|
20
33
|
*/
|
|
21
|
-
function ChartsToolbarPro(
|
|
34
|
+
function ChartsToolbarPro(_ref) {
|
|
35
|
+
let {
|
|
36
|
+
printOptions,
|
|
37
|
+
imageExportOptions: rawImageExportOptions
|
|
38
|
+
} = _ref,
|
|
39
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
22
40
|
const {
|
|
23
41
|
slots,
|
|
24
42
|
slotProps
|
|
@@ -29,7 +47,13 @@ function ChartsToolbarPro(props) {
|
|
|
29
47
|
const {
|
|
30
48
|
localeText
|
|
31
49
|
} = (0, _hooks.useChartsLocalization)();
|
|
50
|
+
const [exportMenuOpen, setExportMenuOpen] = React.useState(false);
|
|
51
|
+
const exportMenuTriggerRef = React.useRef(null);
|
|
52
|
+
const exportMenuId = (0, _useId.default)();
|
|
53
|
+
const exportMenuTriggerId = (0, _useId.default)();
|
|
32
54
|
const isZoomEnabled = (0, _internals.useSelector)(store, _useChartProZoom.selectorChartZoomIsEnabled);
|
|
55
|
+
const imageExportOptionList = rawImageExportOptions ?? DEFAULT_IMAGE_EXPORT_OPTIONS;
|
|
56
|
+
const showExportMenu = !printOptions?.disableToolbarButton || imageExportOptionList.length > 0;
|
|
33
57
|
const children = [];
|
|
34
58
|
if (isZoomEnabled) {
|
|
35
59
|
const Tooltip = slots.baseTooltip;
|
|
@@ -38,22 +62,108 @@ function ChartsToolbarPro(props) {
|
|
|
38
62
|
children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, slotProps.baseTooltip, {
|
|
39
63
|
title: localeText.zoomIn,
|
|
40
64
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomInTrigger.ChartsToolbarZoomInTrigger, {
|
|
41
|
-
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {
|
|
42
|
-
|
|
65
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {
|
|
66
|
+
size: "small"
|
|
67
|
+
}),
|
|
68
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomInIcon, (0, _extends2.default)({
|
|
69
|
+
fontSize: "small"
|
|
70
|
+
}, slotProps.zoomInIcon))
|
|
43
71
|
})
|
|
44
72
|
}), "zoom-in"));
|
|
45
73
|
children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, slotProps.baseTooltip, {
|
|
46
74
|
title: localeText.zoomOut,
|
|
47
75
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarZoomOutTrigger.ChartsToolbarZoomOutTrigger, {
|
|
48
|
-
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {
|
|
49
|
-
|
|
76
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {
|
|
77
|
+
size: "small"
|
|
78
|
+
}),
|
|
79
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomOutIcon, (0, _extends2.default)({
|
|
80
|
+
fontSize: "small"
|
|
81
|
+
}, slotProps.zoomOutIcon))
|
|
50
82
|
})
|
|
51
83
|
}), "zoom-out"));
|
|
52
84
|
}
|
|
85
|
+
if (showExportMenu) {
|
|
86
|
+
const Tooltip = slots.baseTooltip;
|
|
87
|
+
const MenuList = slots.baseMenuList;
|
|
88
|
+
const MenuItem = slots.baseMenuItem;
|
|
89
|
+
const ExportIcon = slots.exportIcon;
|
|
90
|
+
const closeExportMenu = () => setExportMenuOpen(false);
|
|
91
|
+
const handleListKeyDown = event => {
|
|
92
|
+
if (event.key === 'Tab') {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
}
|
|
95
|
+
if (isHideMenuKey(event.key)) {
|
|
96
|
+
closeExportMenu();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
if (children.length > 0) {
|
|
100
|
+
children.push(/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarDivider.ChartsToolbarDivider, {}, "divider"));
|
|
101
|
+
}
|
|
102
|
+
children.push(/*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
103
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, {
|
|
104
|
+
title: localeText.toolbarExport,
|
|
105
|
+
disableInteractive: exportMenuOpen,
|
|
106
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.ToolbarButton, {
|
|
107
|
+
ref: exportMenuTriggerRef,
|
|
108
|
+
id: exportMenuTriggerId,
|
|
109
|
+
"aria-controls": exportMenuId,
|
|
110
|
+
"aria-haspopup": "true",
|
|
111
|
+
"aria-expanded": exportMenuOpen ? 'true' : undefined,
|
|
112
|
+
onClick: () => setExportMenuOpen(!exportMenuOpen),
|
|
113
|
+
size: "small",
|
|
114
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ExportIcon, {
|
|
115
|
+
fontSize: "small"
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsMenu.ChartsMenu, {
|
|
119
|
+
target: exportMenuTriggerRef.current,
|
|
120
|
+
open: exportMenuOpen,
|
|
121
|
+
onClose: closeExportMenu,
|
|
122
|
+
position: "bottom-end",
|
|
123
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(MenuList, (0, _extends2.default)({
|
|
124
|
+
id: exportMenuId,
|
|
125
|
+
"aria-labelledby": exportMenuTriggerId,
|
|
126
|
+
onKeyDown: handleListKeyDown,
|
|
127
|
+
autoFocusItem: true
|
|
128
|
+
}, slotProps?.baseMenuList, {
|
|
129
|
+
children: [!printOptions?.disableToolbarButton && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarPrintExportTrigger.ChartsToolbarPrintExportTrigger, {
|
|
130
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(MenuItem, (0, _extends2.default)({
|
|
131
|
+
dense: true
|
|
132
|
+
}, slotProps?.baseMenuItem)),
|
|
133
|
+
options: printOptions,
|
|
134
|
+
onClick: closeExportMenu,
|
|
135
|
+
children: localeText.toolbarExportPrint
|
|
136
|
+
}), imageExportOptionList.map(imageExportOptions => /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarImageExportTrigger.ChartsToolbarImageExportTrigger, {
|
|
137
|
+
render: /*#__PURE__*/(0, _jsxRuntime.jsx)(MenuItem, (0, _extends2.default)({
|
|
138
|
+
dense: true
|
|
139
|
+
}, slotProps?.baseMenuItem)),
|
|
140
|
+
options: imageExportOptions,
|
|
141
|
+
onClick: closeExportMenu,
|
|
142
|
+
children: localeText.toolbarExportImage(imageExportOptions.type)
|
|
143
|
+
}, imageExportOptions.type))]
|
|
144
|
+
}))
|
|
145
|
+
})]
|
|
146
|
+
}, "export-menu"));
|
|
147
|
+
}
|
|
53
148
|
if (children.length === 0) {
|
|
54
149
|
return null;
|
|
55
150
|
}
|
|
56
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.Toolbar, (0, _extends2.default)({},
|
|
151
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Toolbar.Toolbar, (0, _extends2.default)({}, other, {
|
|
57
152
|
children: children
|
|
58
153
|
}));
|
|
154
|
+
}
|
|
155
|
+
process.env.NODE_ENV !== "production" ? ChartsToolbarPro.propTypes = {
|
|
156
|
+
// ----------------------------- Warning --------------------------------
|
|
157
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
158
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
159
|
+
// ----------------------------------------------------------------------
|
|
160
|
+
imageExportOptions: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
161
|
+
fileName: _propTypes.default.string,
|
|
162
|
+
quality: _propTypes.default.number,
|
|
163
|
+
type: _propTypes.default.string.isRequired
|
|
164
|
+
})),
|
|
165
|
+
printOptions: _propTypes.default.object
|
|
166
|
+
} : void 0;
|
|
167
|
+
function isHideMenuKey(key) {
|
|
168
|
+
return key === 'Tab' || key === 'Escape';
|
|
59
169
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export * from "./ChartsToolbarPro.js";
|
|
2
2
|
export * from "./ChartsToolbarZoomInTrigger.js";
|
|
3
|
-
export * from "./ChartsToolbarZoomOutTrigger.js";
|
|
3
|
+
export * from "./ChartsToolbarZoomOutTrigger.js";
|
|
4
|
+
export * from "./ChartsToolbarPrintExportTrigger.js";
|
|
5
|
+
export * from "./ChartsToolbarImageExportTrigger.js";
|
|
@@ -35,4 +35,26 @@ Object.keys(_ChartsToolbarZoomOutTrigger).forEach(function (key) {
|
|
|
35
35
|
return _ChartsToolbarZoomOutTrigger[key];
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
|
+
});
|
|
39
|
+
var _ChartsToolbarPrintExportTrigger = require("./ChartsToolbarPrintExportTrigger");
|
|
40
|
+
Object.keys(_ChartsToolbarPrintExportTrigger).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _ChartsToolbarPrintExportTrigger[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _ChartsToolbarPrintExportTrigger[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
var _ChartsToolbarImageExportTrigger = require("./ChartsToolbarImageExportTrigger");
|
|
51
|
+
Object.keys(_ChartsToolbarImageExportTrigger).forEach(function (key) {
|
|
52
|
+
if (key === "default" || key === "__esModule") return;
|
|
53
|
+
if (key in exports && exports[key] === _ChartsToolbarImageExportTrigger[key]) return;
|
|
54
|
+
Object.defineProperty(exports, key, {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _ChartsToolbarImageExportTrigger[key];
|
|
58
|
+
}
|
|
59
|
+
});
|
|
38
60
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ChartBasePopperProps, Placement } from "../../internals/slots/chartBaseSlotProps.js";
|
|
3
|
+
export interface ChartsMenuProps extends Pick<ChartBasePopperProps, 'className' | 'onExited'> {
|
|
4
|
+
open: boolean;
|
|
5
|
+
target: HTMLElement | null;
|
|
6
|
+
onClose: (event?: Event) => void;
|
|
7
|
+
position?: Placement;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}
|
|
10
|
+
declare function ChartsMenu(props: ChartsMenuProps): React.JSX.Element;
|
|
11
|
+
declare namespace ChartsMenu {
|
|
12
|
+
var propTypes: any;
|
|
13
|
+
}
|
|
14
|
+
export { ChartsMenu };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.ChartsMenu = ChartsMenu;
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
12
|
+
var React = _interopRequireWildcard(require("react"));
|
|
13
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
14
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
15
|
+
var _HTMLElementType = _interopRequireDefault(require("@mui/utils/HTMLElementType"));
|
|
16
|
+
var _internals = require("@mui/x-charts/internals");
|
|
17
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
+
const _excluded = ["open", "target", "onClose", "children", "position", "className", "onExited"];
|
|
19
|
+
function ChartsMenu(props) {
|
|
20
|
+
const {
|
|
21
|
+
open,
|
|
22
|
+
target,
|
|
23
|
+
onClose,
|
|
24
|
+
children,
|
|
25
|
+
position,
|
|
26
|
+
onExited
|
|
27
|
+
} = props,
|
|
28
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
29
|
+
const {
|
|
30
|
+
slots,
|
|
31
|
+
slotProps
|
|
32
|
+
} = (0, _internals.useChartsSlots)();
|
|
33
|
+
const Popper = slots.basePopper;
|
|
34
|
+
const savedFocusRef = React.useRef(null);
|
|
35
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
36
|
+
if (open) {
|
|
37
|
+
savedFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
38
|
+
} else {
|
|
39
|
+
savedFocusRef.current?.focus?.();
|
|
40
|
+
savedFocusRef.current = null;
|
|
41
|
+
}
|
|
42
|
+
}, [open]);
|
|
43
|
+
const handleClickAway = event => {
|
|
44
|
+
if (event.target && (target === event.target || target?.contains(event.target))) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
onClose(event);
|
|
48
|
+
};
|
|
49
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Popper, (0, _extends2.default)({
|
|
50
|
+
open: open,
|
|
51
|
+
target: target,
|
|
52
|
+
transition: true,
|
|
53
|
+
placement: position,
|
|
54
|
+
onClickAway: handleClickAway,
|
|
55
|
+
onExited: onExited,
|
|
56
|
+
clickAwayMouseEvent: "onMouseDown"
|
|
57
|
+
}, other, slotProps?.basePopper, {
|
|
58
|
+
children: children
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
process.env.NODE_ENV !== "production" ? ChartsMenu.propTypes = {
|
|
62
|
+
// ----------------------------- Warning --------------------------------
|
|
63
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
64
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
65
|
+
// ----------------------------------------------------------------------
|
|
66
|
+
children: _propTypes.default.node,
|
|
67
|
+
className: _propTypes.default.string,
|
|
68
|
+
onClose: _propTypes.default.func.isRequired,
|
|
69
|
+
onExited: _propTypes.default.func,
|
|
70
|
+
open: _propTypes.default.bool.isRequired,
|
|
71
|
+
position: _propTypes.default.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),
|
|
72
|
+
target: _HTMLElementType.default
|
|
73
|
+
} : void 0;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ChartBaseDividerProps } from "../../internals/slots/chartBaseSlotProps.js";
|
|
3
|
+
export interface ChartsToolbarDividerProps extends ChartBaseDividerProps {}
|
|
4
|
+
declare const ChartsToolbarDivider: React.ForwardRefExoticComponent<Omit<ChartsToolbarDividerProps, "ref"> & React.RefAttributes<HTMLHRElement>>;
|
|
5
|
+
export { ChartsToolbarDivider };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ChartsToolbarDivider = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
+
var _system = require("@mui/system");
|
|
13
|
+
var _internals = require("@mui/x-charts/internals");
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
// This is workaround because api-docs-builder does not support the `NotRendered<ChartBaseDividerProps>` syntax.
|
|
16
|
+
const NotRenderedDivider = _internals.NotRendered;
|
|
17
|
+
const Divider = (0, _system.styled)(NotRenderedDivider, {
|
|
18
|
+
name: 'MuiChartsToolbar',
|
|
19
|
+
slot: 'Divider'
|
|
20
|
+
})(({
|
|
21
|
+
theme
|
|
22
|
+
}) => ({
|
|
23
|
+
margin: theme.spacing(0, 0.5),
|
|
24
|
+
height: '50%'
|
|
25
|
+
}));
|
|
26
|
+
const ChartsToolbarDivider = exports.ChartsToolbarDivider = /*#__PURE__*/React.forwardRef(function ChartsToolbarDivider(props, ref) {
|
|
27
|
+
const {
|
|
28
|
+
slots,
|
|
29
|
+
slotProps
|
|
30
|
+
} = (0, _internals.useChartsSlots)();
|
|
31
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Divider, (0, _extends2.default)({
|
|
32
|
+
as: slots.baseDivider,
|
|
33
|
+
orientation: "vertical"
|
|
34
|
+
}, slotProps.baseDivider, props, {
|
|
35
|
+
ref: ref
|
|
36
|
+
}));
|
|
37
|
+
});
|
|
38
|
+
if (process.env.NODE_ENV !== "production") ChartsToolbarDivider.displayName = "ChartsToolbarDivider";
|
|
39
|
+
process.env.NODE_ENV !== "production" ? ChartsToolbarDivider.propTypes = {
|
|
40
|
+
// ----------------------------- Warning --------------------------------
|
|
41
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
42
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
43
|
+
// ----------------------------------------------------------------------
|
|
44
|
+
className: _propTypes.default.string,
|
|
45
|
+
orientation: _propTypes.default.oneOf(['horizontal', 'vertical']),
|
|
46
|
+
style: _propTypes.default.object
|
|
47
|
+
} : void 0;
|
|
@@ -105,21 +105,21 @@ const useAggregatedData = () => {
|
|
|
105
105
|
min: minPoint,
|
|
106
106
|
max: maxPoint
|
|
107
107
|
});
|
|
108
|
-
const
|
|
108
|
+
const bandPoints = curve({}).processPoints(values.map(v => ({
|
|
109
|
+
x: xPosition(v.x, dataIndex, baseScaleConfig.data?.[dataIndex], v.stackOffset, v.useBandWidth),
|
|
110
|
+
y: yPosition(v.y, dataIndex, baseScaleConfig.data?.[dataIndex], v.stackOffset, v.useBandWidth)
|
|
111
|
+
})));
|
|
112
|
+
const line = (0, _d3Shape.line)().x(v => v.x).y(v => v.y).curve(curve);
|
|
109
113
|
return {
|
|
110
|
-
d: line(
|
|
114
|
+
d: line(bandPoints),
|
|
111
115
|
color,
|
|
112
116
|
id,
|
|
113
117
|
seriesId,
|
|
114
118
|
dataIndex,
|
|
115
119
|
variant: currentSeries.variant,
|
|
116
120
|
label: sectionLabel !== false && (0, _extends2.default)({}, (0, _labelUtils.positionLabel)((0, _extends2.default)({}, sectionLabel, {
|
|
117
|
-
xPosition,
|
|
118
|
-
yPosition,
|
|
119
121
|
isHorizontal,
|
|
120
|
-
values
|
|
121
|
-
dataIndex,
|
|
122
|
-
baseScaleData: baseScaleConfig.data ?? []
|
|
122
|
+
values: bandPoints
|
|
123
123
|
})), (0, _labelUtils.alignLabel)(sectionLabel ?? {}), {
|
|
124
124
|
value: valueFormatter ? valueFormatter(currentSeries.data[dataIndex], {
|
|
125
125
|
dataIndex
|
|
@@ -128,7 +128,7 @@ const useAggregatedData = () => {
|
|
|
128
128
|
};
|
|
129
129
|
});
|
|
130
130
|
});
|
|
131
|
-
return result
|
|
131
|
+
return result;
|
|
132
132
|
}, [seriesData, xAxis, xAxisIds, yAxis, yAxisIds, gap]);
|
|
133
133
|
return allData;
|
|
134
134
|
};
|
|
@@ -139,41 +139,57 @@ function FunnelPlot(props) {
|
|
|
139
139
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
140
140
|
const data = useAggregatedData();
|
|
141
141
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
142
|
-
children: [data.map(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
key: id,
|
|
153
|
-
dataIndex: dataIndex,
|
|
154
|
-
seriesId: seriesId,
|
|
155
|
-
variant: variant,
|
|
156
|
-
onClick: onItemClick && (event => {
|
|
157
|
-
onItemClick(event, {
|
|
158
|
-
type: 'funnel',
|
|
142
|
+
children: [data.map(series => {
|
|
143
|
+
if (series.length === 0) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
|
|
147
|
+
"data-series": series[0].seriesId,
|
|
148
|
+
children: series.map(({
|
|
149
|
+
d,
|
|
150
|
+
color,
|
|
151
|
+
id,
|
|
159
152
|
seriesId,
|
|
160
|
-
dataIndex
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
153
|
+
dataIndex,
|
|
154
|
+
variant
|
|
155
|
+
}) => /*#__PURE__*/(0, _react.createElement)(_FunnelSection.FunnelSection, (0, _extends2.default)({}, other, {
|
|
156
|
+
d: d,
|
|
157
|
+
color: color,
|
|
158
|
+
key: id,
|
|
159
|
+
dataIndex: dataIndex,
|
|
160
|
+
seriesId: seriesId,
|
|
161
|
+
variant: variant,
|
|
162
|
+
onClick: onItemClick && (event => {
|
|
163
|
+
onItemClick(event, {
|
|
164
|
+
type: 'funnel',
|
|
165
|
+
seriesId,
|
|
166
|
+
dataIndex
|
|
167
|
+
});
|
|
168
|
+
})
|
|
169
|
+
})))
|
|
170
|
+
}, series[0].seriesId);
|
|
171
|
+
}), data.map(series => {
|
|
172
|
+
if (series.length === 0) {
|
|
170
173
|
return null;
|
|
171
174
|
}
|
|
172
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
|
|
176
|
+
"data-series": series[0].seriesId,
|
|
177
|
+
children: series.map(({
|
|
178
|
+
id,
|
|
179
|
+
label,
|
|
180
|
+
seriesId,
|
|
181
|
+
dataIndex
|
|
182
|
+
}) => {
|
|
183
|
+
if (!label || !label.value) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FunnelSectionLabel.FunnelSectionLabel, (0, _extends2.default)({
|
|
187
|
+
label: label,
|
|
188
|
+
dataIndex: dataIndex,
|
|
189
|
+
seriesId: seriesId
|
|
190
|
+
}, other), id);
|
|
191
|
+
})
|
|
192
|
+
}, series[0].seriesId);
|
|
177
193
|
})]
|
|
178
194
|
});
|
|
179
195
|
}
|
|
@@ -60,6 +60,8 @@ const FunnelSection = exports.FunnelSection = (0, _internals.consumeSlots)('MuiF
|
|
|
60
60
|
strokeWidth: isOutlined ? 1.5 : 0,
|
|
61
61
|
cursor: onClick ? 'pointer' : 'unset',
|
|
62
62
|
onClick: onClick,
|
|
63
|
+
"data-highlighted": isHighlighted || undefined,
|
|
64
|
+
"data-faded": isFaded || undefined,
|
|
63
65
|
className: (0, _clsx.default)(classes?.root, className, isOutlined ? classes?.outlined : classes?.filled, isHighlighted && classes?.highlighted, isFaded && classes?.faded)
|
|
64
66
|
}, other, {
|
|
65
67
|
ref: ref
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CurveOptions } from "./curve.types.js";
|
|
1
|
+
import { FunnelCurveGenerator, CurveOptions, Point } from "./curve.types.js";
|
|
3
2
|
/**
|
|
4
3
|
* This is a custom "bump" curve generator.
|
|
5
4
|
* It draws smooth curves for the 4 provided points,
|
|
@@ -8,7 +7,7 @@ import { CurveOptions } from "./curve.types.js";
|
|
|
8
7
|
* The implementation is based on the d3-shape bump curve generator.
|
|
9
8
|
* https://github.com/d3/d3-shape/blob/a82254af78f08799c71d7ab25df557c4872a3c51/src/curve/bump.js
|
|
10
9
|
*/
|
|
11
|
-
export declare class Bump implements
|
|
10
|
+
export declare class Bump implements FunnelCurveGenerator {
|
|
12
11
|
private context;
|
|
13
12
|
private isHorizontal;
|
|
14
13
|
private min;
|
|
@@ -24,6 +23,7 @@ export declare class Bump implements CurveGenerator {
|
|
|
24
23
|
areaEnd(): void;
|
|
25
24
|
lineStart(): void;
|
|
26
25
|
lineEnd(): void;
|
|
26
|
+
processPoints(points: Point[]): Point[];
|
|
27
27
|
point(x: number, y: number): void;
|
|
28
28
|
private drawPath;
|
|
29
29
|
private drawHorizontalPath;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CurveGenerator } from '@mui/x-charts-vendor/d3-shape';
|
|
1
2
|
export type CurveOptions = {
|
|
2
3
|
/**
|
|
3
4
|
* The gap between each segment.
|
|
@@ -44,4 +45,16 @@ export type FunnelPointShape = 'square' | 'sharp';
|
|
|
44
45
|
export type Point = {
|
|
45
46
|
x: number;
|
|
46
47
|
y: number;
|
|
47
|
-
};
|
|
48
|
+
};
|
|
49
|
+
export interface FunnelCurveGenerator extends CurveGenerator {
|
|
50
|
+
/**
|
|
51
|
+
* Processes the points to create a curve based on the provided options.
|
|
52
|
+
* This does not draw the curve but prepares the points for rendering.
|
|
53
|
+
*
|
|
54
|
+
* @param points The points to process.
|
|
55
|
+
* @param options The options for the curve.
|
|
56
|
+
* @returns The processed points.
|
|
57
|
+
*/
|
|
58
|
+
processPoints(points: Point[], xPosition: PositionGetter, yPosition: PositionGetter): Point[];
|
|
59
|
+
}
|
|
60
|
+
export type PositionGetter = (value: number, bandIndex: number, bandIdentifier: string | number, stackOffset?: number, useBand?: boolean) => number;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Path } from '@mui/x-charts-vendor/d3-path';
|
|
2
2
|
import { CurveOptions, FunnelCurveType } from "./curve.types.js";
|
|
3
|
-
|
|
3
|
+
import { Step } from "./step.js";
|
|
4
|
+
import { Linear } from "./linear.js";
|
|
5
|
+
import { Bump } from "./bump.js";
|
|
6
|
+
import { Pyramid } from "./pyramid.js";
|
|
7
|
+
import { StepPyramid } from "./step-pyramid.js";
|
|
8
|
+
export declare const getFunnelCurve: (curve: FunnelCurveType | undefined, options: CurveOptions) => (context: CanvasRenderingContext2D | Path) => Step | Linear | Bump | Pyramid | StepPyramid;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CurveOptions } from "./curve.types.js";
|
|
1
|
+
import { FunnelCurveGenerator, CurveOptions, Point } from "./curve.types.js";
|
|
3
2
|
/**
|
|
4
3
|
* This is a custom "linear" curve generator.
|
|
5
4
|
* It draws straight lines for the 4 provided points,
|
|
@@ -8,7 +7,7 @@ import { CurveOptions } from "./curve.types.js";
|
|
|
8
7
|
* The implementation is based on the d3-shape linear curve generator.
|
|
9
8
|
* https://github.com/d3/d3-shape/blob/a82254af78f08799c71d7ab25df557c4872a3c51/src/curve/linear.js
|
|
10
9
|
*/
|
|
11
|
-
export declare class Linear implements
|
|
10
|
+
export declare class Linear implements FunnelCurveGenerator {
|
|
12
11
|
private context;
|
|
13
12
|
private position;
|
|
14
13
|
private sections;
|
|
@@ -36,5 +35,6 @@ export declare class Linear implements CurveGenerator {
|
|
|
36
35
|
lineStart(): void;
|
|
37
36
|
lineEnd(): void;
|
|
38
37
|
protected getBorderRadius(): number | number[];
|
|
38
|
+
processPoints(points: Point[]): Point[];
|
|
39
39
|
point(xIn: number, yIn: number): void;
|
|
40
40
|
}
|