@mantine/charts 9.4.0 → 9.4.1
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/cjs/ChartTooltip/ChartTooltip.cjs +2 -2
- package/cjs/ChartTooltip/ChartTooltip.cjs.map +1 -1
- package/cjs/Heatmap/get-heat-color/get-heat-color.cjs +2 -1
- package/cjs/Heatmap/get-heat-color/get-heat-color.cjs.map +1 -1
- package/esm/ChartTooltip/ChartTooltip.mjs +2 -2
- package/esm/ChartTooltip/ChartTooltip.mjs.map +1 -1
- package/esm/Heatmap/get-heat-color/get-heat-color.mjs +2 -1
- package/esm/Heatmap/get-heat-color/get-heat-color.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -71,7 +71,7 @@ const ChartTooltip = (0, _mantine_core.factory)((_props) => {
|
|
|
71
71
|
const scatterLabel = type === "scatter" ? payload[0]?.payload?.name : null;
|
|
72
72
|
const labels = require_get_series_labels.getSeriesLabels(series);
|
|
73
73
|
const _label = label || scatterLabel;
|
|
74
|
-
const items = filteredPayload.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
74
|
+
const items = filteredPayload.map((item, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
75
75
|
"data-type": type,
|
|
76
76
|
...getStyles("tooltipItem"),
|
|
77
77
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -94,7 +94,7 @@ const ChartTooltip = (0, _mantine_core.factory)((_props) => {
|
|
|
94
94
|
...getStyles("tooltipItemData"),
|
|
95
95
|
children: [typeof valueFormatter === "function" ? valueFormatter(getData(item, type)) : getData(item, type), unit || item.unit]
|
|
96
96
|
})]
|
|
97
|
-
}, item?.key ?? item.name));
|
|
97
|
+
}, item?.key ?? `${item.name}-${index}`));
|
|
98
98
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_mantine_core.Box, {
|
|
99
99
|
...getStyles("tooltip"),
|
|
100
100
|
mod: [{ type }, mod],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartTooltip.cjs","names":["getSeriesLabels","Box"],"sources":["../../src/ChartTooltip/ChartTooltip.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n StylesApiProps,\n useMantineTheme,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ChartSeries } from '../types';\nimport { getSeriesLabels } from '../utils';\nimport classes from './ChartTooltip.module.css';\n\nfunction updateChartTooltipPayload(payload: Record<string, any>[]): Record<string, any>[] {\n return payload.map((item) => {\n if (!item.payload || item.payload[item.name]) {\n return item;\n }\n const matchFound = item.name.search(/\\./);\n if (matchFound >= 0) {\n const newDataKey = item.name.substring(0, matchFound);\n const nestedPayload = { ...item.payload[newDataKey] };\n const shallowPayload = Object.entries(item.payload).reduce((acc, current) => {\n const [k, v] = current;\n return k === newDataKey ? acc : { ...acc, [k]: v };\n }, {});\n\n return {\n ...item,\n name: item.name.substring(matchFound + 1),\n payload: {\n ...shallowPayload,\n ...nestedPayload,\n },\n };\n }\n return item;\n });\n}\n\nexport function getFilteredChartTooltipPayload(\n payload: readonly Record<string, any>[] | Record<string, any>[],\n segmentId?: string | number\n) {\n const duplicatesFilter = updateChartTooltipPayload(\n payload.filter((item) => item.fill !== 'none' || !item.color)\n );\n\n if (segmentId === undefined || segmentId === null) {\n return duplicatesFilter;\n }\n\n if (typeof segmentId === 'number') {\n const item = duplicatesFilter[segmentId];\n return item ? [item] : [];\n }\n\n return duplicatesFilter.filter((item) => item.name === segmentId);\n}\n\nfunction getData(item: Record<string, any>, type: 'area' | 'radial' | 'scatter') {\n if (type === 'radial' || type === 'scatter') {\n if (Array.isArray(item.value)) {\n return item.value[1] - item.value[0];\n }\n return item.value;\n }\n\n if (Array.isArray(item.payload[item.dataKey])) {\n return item.payload[item.dataKey][1] - item.payload[item.dataKey][0];\n }\n return item.payload[item.name];\n}\n\nexport type ChartTooltipStylesNames =\n | 'tooltip'\n | 'tooltipItem'\n | 'tooltipItemBody'\n | 'tooltipItemColor'\n | 'tooltipItemName'\n | 'tooltipItemData'\n | 'tooltipLabel'\n | 'tooltipBody';\n\nexport interface ChartTooltipProps\n extends BoxProps, StylesApiProps<ChartTooltipFactory>, ElementProps<'div'> {\n /** Main tooltip label */\n label?: React.ReactNode;\n\n /** Chart data provided by recharts */\n payload: readonly Record<string, any>[] | Record<string, any>[] | undefined;\n\n /** Data units, provided by parent component */\n unit?: string;\n\n /** Tooltip type that determines the content and styles, `area` for LineChart, AreaChart and BarChart, `radial` for DonutChart and PieChart @default 'area' */\n type?: 'area' | 'radial' | 'scatter';\n\n /** Segment to display data for, identified by its index in the data array (preferred, isolates duplicate names) or by its name. Only applicable when `type=\"radial\"`. If not set, all data is rendered. */\n segmentId?: string | number;\n\n /** Chart series data, applicable only for `area` type */\n series?: ChartSeries[];\n\n /** A function to format values */\n valueFormatter?: (value: number) => React.ReactNode;\n\n /** Determines whether the color swatch should be visible @default true */\n showColor?: boolean;\n}\n\nexport type ChartTooltipFactory = Factory<{\n props: ChartTooltipProps;\n ref: HTMLDivElement;\n stylesNames: ChartTooltipStylesNames;\n}>;\n\nconst defaultProps = {\n type: 'area',\n showColor: true,\n} satisfies Partial<ChartTooltipProps>;\n\nexport const ChartTooltip = factory<ChartTooltipFactory>((_props) => {\n const props = useProps('ChartTooltip', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n payload,\n label,\n unit,\n type,\n segmentId,\n mod,\n series,\n valueFormatter,\n showColor,\n attributes,\n ...others\n } = props;\n\n const theme = useMantineTheme();\n\n const getStyles = useStyles<ChartTooltipFactory>({\n name: 'ChartTooltip',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n });\n\n if (!payload) {\n return null;\n }\n\n const filteredPayload = getFilteredChartTooltipPayload(payload, segmentId);\n const scatterLabel = type === 'scatter' ? payload[0]?.payload?.name : null;\n const labels = getSeriesLabels(series);\n const _label = label || scatterLabel;\n\n const items = filteredPayload.map((item) => (\n <div key={item?.key ?? item.name} data-type={type} {...getStyles('tooltipItem')}>\n <div {...getStyles('tooltipItemBody')}>\n {showColor && (\n <svg {...getStyles('tooltipItemColor')}>\n <circle\n r={6}\n fill={getThemeColor(item.color, theme)}\n width={12}\n height={12}\n cx={6}\n cy={6}\n />\n </svg>\n )}\n <div {...getStyles('tooltipItemName')}>{labels[item.name] || item.name}</div>\n </div>\n <div {...getStyles('tooltipItemData')}>\n {typeof valueFormatter === 'function'\n ? valueFormatter(getData(item, type))\n : getData(item, type)}\n {unit || item.unit}\n </div>\n </div>\n ));\n\n return (\n <Box {...getStyles('tooltip')} mod={[{ type }, mod]} {...others}>\n {_label && <div {...getStyles('tooltipLabel')}>{_label}</div>}\n <div {...getStyles('tooltipBody')}>{items}</div>\n </Box>\n );\n});\n\nChartTooltip.displayName = '@mantine/charts/ChartTooltip';\n"],"mappings":";;;;;;AAgBA,SAAS,0BAA0B,SAAuD;CACxF,OAAO,QAAQ,KAAK,SAAS;EAC3B,IAAI,CAAC,KAAK,WAAW,KAAK,QAAQ,KAAK,OACrC,OAAO;EAET,MAAM,aAAa,KAAK,KAAK,OAAO,IAAI;EACxC,IAAI,cAAc,GAAG;GACnB,MAAM,aAAa,KAAK,KAAK,UAAU,GAAG,UAAU;GACpD,MAAM,gBAAgB,EAAE,GAAG,KAAK,QAAQ,YAAY;GACpD,MAAM,iBAAiB,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,QAAQ,KAAK,YAAY;IAC3E,MAAM,CAAC,GAAG,KAAK;IACf,OAAO,MAAM,aAAa,MAAM;KAAE,GAAG;MAAM,IAAI;IAAE;GACnD,GAAG,CAAC,CAAC;GAEL,OAAO;IACL,GAAG;IACH,MAAM,KAAK,KAAK,UAAU,aAAa,CAAC;IACxC,SAAS;KACP,GAAG;KACH,GAAG;IACL;GACF;EACF;EACA,OAAO;CACT,CAAC;AACH;AAEA,SAAgB,+BACd,SACA,WACA;CACA,MAAM,mBAAmB,0BACvB,QAAQ,QAAQ,SAAS,KAAK,SAAS,UAAU,CAAC,KAAK,KAAK,CAC9D;CAEA,IAAI,cAAc,KAAA,KAAa,cAAc,MAC3C,OAAO;CAGT,IAAI,OAAO,cAAc,UAAU;EACjC,MAAM,OAAO,iBAAiB;EAC9B,OAAO,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;CAEA,OAAO,iBAAiB,QAAQ,SAAS,KAAK,SAAS,SAAS;AAClE;AAEA,SAAS,QAAQ,MAA2B,MAAqC;CAC/E,IAAI,SAAS,YAAY,SAAS,WAAW;EAC3C,IAAI,MAAM,QAAQ,KAAK,KAAK,GAC1B,OAAO,KAAK,MAAM,KAAK,KAAK,MAAM;EAEpC,OAAO,KAAK;CACd;CAEA,IAAI,MAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,GAC1C,OAAO,KAAK,QAAQ,KAAK,QAAQ,CAAC,KAAK,KAAK,QAAQ,KAAK,QAAQ,CAAC;CAEpE,OAAO,KAAK,QAAQ,KAAK;AAC3B;AA6CA,MAAM,eAAe;CACnB,MAAM;CACN,WAAW;AACb;AAEA,MAAa,gBAAA,GAAA,cAAA,QAAA,EAA6C,WAAW;CACnE,MAAM,SAAA,GAAA,cAAA,SAAA,CAAiB,gBAAgB,cAAc,MAAM;CAC3D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,SACA,OACA,MACA,MACA,WACA,KACA,QACA,gBACA,WACA,YACA,GAAG,WACD;CAEJ,MAAM,SAAA,GAAA,cAAA,gBAAA,CAAwB;CAE9B,MAAM,aAAA,GAAA,cAAA,UAAA,CAA2C;EAC/C,MAAM;EACN,SAAA,4BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,CAAC,SACH,OAAO;CAGT,MAAM,kBAAkB,+BAA+B,SAAS,SAAS;CACzE,MAAM,eAAe,SAAS,YAAY,QAAQ,EAAE,EAAE,SAAS,OAAO;CACtE,MAAM,SAASA,0BAAAA,gBAAgB,MAAM;CACrC,MAAM,SAAS,SAAS;CAExB,MAAM,QAAQ,gBAAgB,KAAK,
|
|
1
|
+
{"version":3,"file":"ChartTooltip.cjs","names":["getSeriesLabels","Box"],"sources":["../../src/ChartTooltip/ChartTooltip.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n StylesApiProps,\n useMantineTheme,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ChartSeries } from '../types';\nimport { getSeriesLabels } from '../utils';\nimport classes from './ChartTooltip.module.css';\n\nfunction updateChartTooltipPayload(payload: Record<string, any>[]): Record<string, any>[] {\n return payload.map((item) => {\n if (!item.payload || item.payload[item.name]) {\n return item;\n }\n const matchFound = item.name.search(/\\./);\n if (matchFound >= 0) {\n const newDataKey = item.name.substring(0, matchFound);\n const nestedPayload = { ...item.payload[newDataKey] };\n const shallowPayload = Object.entries(item.payload).reduce((acc, current) => {\n const [k, v] = current;\n return k === newDataKey ? acc : { ...acc, [k]: v };\n }, {});\n\n return {\n ...item,\n name: item.name.substring(matchFound + 1),\n payload: {\n ...shallowPayload,\n ...nestedPayload,\n },\n };\n }\n return item;\n });\n}\n\nexport function getFilteredChartTooltipPayload(\n payload: readonly Record<string, any>[] | Record<string, any>[],\n segmentId?: string | number\n) {\n const duplicatesFilter = updateChartTooltipPayload(\n payload.filter((item) => item.fill !== 'none' || !item.color)\n );\n\n if (segmentId === undefined || segmentId === null) {\n return duplicatesFilter;\n }\n\n if (typeof segmentId === 'number') {\n const item = duplicatesFilter[segmentId];\n return item ? [item] : [];\n }\n\n return duplicatesFilter.filter((item) => item.name === segmentId);\n}\n\nfunction getData(item: Record<string, any>, type: 'area' | 'radial' | 'scatter') {\n if (type === 'radial' || type === 'scatter') {\n if (Array.isArray(item.value)) {\n return item.value[1] - item.value[0];\n }\n return item.value;\n }\n\n if (Array.isArray(item.payload[item.dataKey])) {\n return item.payload[item.dataKey][1] - item.payload[item.dataKey][0];\n }\n return item.payload[item.name];\n}\n\nexport type ChartTooltipStylesNames =\n | 'tooltip'\n | 'tooltipItem'\n | 'tooltipItemBody'\n | 'tooltipItemColor'\n | 'tooltipItemName'\n | 'tooltipItemData'\n | 'tooltipLabel'\n | 'tooltipBody';\n\nexport interface ChartTooltipProps\n extends BoxProps, StylesApiProps<ChartTooltipFactory>, ElementProps<'div'> {\n /** Main tooltip label */\n label?: React.ReactNode;\n\n /** Chart data provided by recharts */\n payload: readonly Record<string, any>[] | Record<string, any>[] | undefined;\n\n /** Data units, provided by parent component */\n unit?: string;\n\n /** Tooltip type that determines the content and styles, `area` for LineChart, AreaChart and BarChart, `radial` for DonutChart and PieChart @default 'area' */\n type?: 'area' | 'radial' | 'scatter';\n\n /** Segment to display data for, identified by its index in the data array (preferred, isolates duplicate names) or by its name. Only applicable when `type=\"radial\"`. If not set, all data is rendered. */\n segmentId?: string | number;\n\n /** Chart series data, applicable only for `area` type */\n series?: ChartSeries[];\n\n /** A function to format values */\n valueFormatter?: (value: number) => React.ReactNode;\n\n /** Determines whether the color swatch should be visible @default true */\n showColor?: boolean;\n}\n\nexport type ChartTooltipFactory = Factory<{\n props: ChartTooltipProps;\n ref: HTMLDivElement;\n stylesNames: ChartTooltipStylesNames;\n}>;\n\nconst defaultProps = {\n type: 'area',\n showColor: true,\n} satisfies Partial<ChartTooltipProps>;\n\nexport const ChartTooltip = factory<ChartTooltipFactory>((_props) => {\n const props = useProps('ChartTooltip', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n payload,\n label,\n unit,\n type,\n segmentId,\n mod,\n series,\n valueFormatter,\n showColor,\n attributes,\n ...others\n } = props;\n\n const theme = useMantineTheme();\n\n const getStyles = useStyles<ChartTooltipFactory>({\n name: 'ChartTooltip',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n });\n\n if (!payload) {\n return null;\n }\n\n const filteredPayload = getFilteredChartTooltipPayload(payload, segmentId);\n const scatterLabel = type === 'scatter' ? payload[0]?.payload?.name : null;\n const labels = getSeriesLabels(series);\n const _label = label || scatterLabel;\n\n const items = filteredPayload.map((item, index) => (\n <div key={item?.key ?? `${item.name}-${index}`} data-type={type} {...getStyles('tooltipItem')}>\n <div {...getStyles('tooltipItemBody')}>\n {showColor && (\n <svg {...getStyles('tooltipItemColor')}>\n <circle\n r={6}\n fill={getThemeColor(item.color, theme)}\n width={12}\n height={12}\n cx={6}\n cy={6}\n />\n </svg>\n )}\n <div {...getStyles('tooltipItemName')}>{labels[item.name] || item.name}</div>\n </div>\n <div {...getStyles('tooltipItemData')}>\n {typeof valueFormatter === 'function'\n ? valueFormatter(getData(item, type))\n : getData(item, type)}\n {unit || item.unit}\n </div>\n </div>\n ));\n\n return (\n <Box {...getStyles('tooltip')} mod={[{ type }, mod]} {...others}>\n {_label && <div {...getStyles('tooltipLabel')}>{_label}</div>}\n <div {...getStyles('tooltipBody')}>{items}</div>\n </Box>\n );\n});\n\nChartTooltip.displayName = '@mantine/charts/ChartTooltip';\n"],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
//#region packages/@mantine/charts/src/Heatmap/get-heat-color/get-heat-color.ts
|
|
3
3
|
function getHeatColor({ value, min, max, colors }) {
|
|
4
4
|
const percent = max === min ? 1 : (value - min) / (max - min);
|
|
5
|
-
|
|
5
|
+
const clampedPercent = Math.min(1, Math.max(0, percent));
|
|
6
|
+
return colors[Math.round((colors.length - 1) * clampedPercent)];
|
|
6
7
|
}
|
|
7
8
|
//#endregion
|
|
8
9
|
exports.getHeatColor = getHeatColor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-heat-color.cjs","names":[],"sources":["../../../src/Heatmap/get-heat-color/get-heat-color.ts"],"sourcesContent":["interface GetHeatColorInput {\n value: number;\n min: number;\n max: number;\n colors: string[];\n}\n\nexport function getHeatColor({ value, min, max, colors }: GetHeatColorInput) {\n const percent = max === min ? 1 : (value - min) / (max - min);\n const colorIndex = Math.round((colors.length - 1) *
|
|
1
|
+
{"version":3,"file":"get-heat-color.cjs","names":[],"sources":["../../../src/Heatmap/get-heat-color/get-heat-color.ts"],"sourcesContent":["interface GetHeatColorInput {\n value: number;\n min: number;\n max: number;\n colors: string[];\n}\n\nexport function getHeatColor({ value, min, max, colors }: GetHeatColorInput) {\n const percent = max === min ? 1 : (value - min) / (max - min);\n const clampedPercent = Math.min(1, Math.max(0, percent));\n const colorIndex = Math.round((colors.length - 1) * clampedPercent);\n return colors[colorIndex];\n}\n"],"mappings":";;AAOA,SAAgB,aAAa,EAAE,OAAO,KAAK,KAAK,UAA6B;CAC3E,MAAM,UAAU,QAAQ,MAAM,KAAK,QAAQ,QAAQ,MAAM;CACzD,MAAM,iBAAiB,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC;CAEvD,OAAO,OADY,KAAK,OAAO,OAAO,SAAS,KAAK,cAC7B;AACzB"}
|
|
@@ -71,7 +71,7 @@ const ChartTooltip = factory((_props) => {
|
|
|
71
71
|
const scatterLabel = type === "scatter" ? payload[0]?.payload?.name : null;
|
|
72
72
|
const labels = getSeriesLabels(series);
|
|
73
73
|
const _label = label || scatterLabel;
|
|
74
|
-
const items = filteredPayload.map((item) => /* @__PURE__ */ jsxs("div", {
|
|
74
|
+
const items = filteredPayload.map((item, index) => /* @__PURE__ */ jsxs("div", {
|
|
75
75
|
"data-type": type,
|
|
76
76
|
...getStyles("tooltipItem"),
|
|
77
77
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
@@ -94,7 +94,7 @@ const ChartTooltip = factory((_props) => {
|
|
|
94
94
|
...getStyles("tooltipItemData"),
|
|
95
95
|
children: [typeof valueFormatter === "function" ? valueFormatter(getData(item, type)) : getData(item, type), unit || item.unit]
|
|
96
96
|
})]
|
|
97
|
-
}, item?.key ?? item.name));
|
|
97
|
+
}, item?.key ?? `${item.name}-${index}`));
|
|
98
98
|
return /* @__PURE__ */ jsxs(Box, {
|
|
99
99
|
...getStyles("tooltip"),
|
|
100
100
|
mod: [{ type }, mod],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartTooltip.mjs","names":[],"sources":["../../src/ChartTooltip/ChartTooltip.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n StylesApiProps,\n useMantineTheme,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ChartSeries } from '../types';\nimport { getSeriesLabels } from '../utils';\nimport classes from './ChartTooltip.module.css';\n\nfunction updateChartTooltipPayload(payload: Record<string, any>[]): Record<string, any>[] {\n return payload.map((item) => {\n if (!item.payload || item.payload[item.name]) {\n return item;\n }\n const matchFound = item.name.search(/\\./);\n if (matchFound >= 0) {\n const newDataKey = item.name.substring(0, matchFound);\n const nestedPayload = { ...item.payload[newDataKey] };\n const shallowPayload = Object.entries(item.payload).reduce((acc, current) => {\n const [k, v] = current;\n return k === newDataKey ? acc : { ...acc, [k]: v };\n }, {});\n\n return {\n ...item,\n name: item.name.substring(matchFound + 1),\n payload: {\n ...shallowPayload,\n ...nestedPayload,\n },\n };\n }\n return item;\n });\n}\n\nexport function getFilteredChartTooltipPayload(\n payload: readonly Record<string, any>[] | Record<string, any>[],\n segmentId?: string | number\n) {\n const duplicatesFilter = updateChartTooltipPayload(\n payload.filter((item) => item.fill !== 'none' || !item.color)\n );\n\n if (segmentId === undefined || segmentId === null) {\n return duplicatesFilter;\n }\n\n if (typeof segmentId === 'number') {\n const item = duplicatesFilter[segmentId];\n return item ? [item] : [];\n }\n\n return duplicatesFilter.filter((item) => item.name === segmentId);\n}\n\nfunction getData(item: Record<string, any>, type: 'area' | 'radial' | 'scatter') {\n if (type === 'radial' || type === 'scatter') {\n if (Array.isArray(item.value)) {\n return item.value[1] - item.value[0];\n }\n return item.value;\n }\n\n if (Array.isArray(item.payload[item.dataKey])) {\n return item.payload[item.dataKey][1] - item.payload[item.dataKey][0];\n }\n return item.payload[item.name];\n}\n\nexport type ChartTooltipStylesNames =\n | 'tooltip'\n | 'tooltipItem'\n | 'tooltipItemBody'\n | 'tooltipItemColor'\n | 'tooltipItemName'\n | 'tooltipItemData'\n | 'tooltipLabel'\n | 'tooltipBody';\n\nexport interface ChartTooltipProps\n extends BoxProps, StylesApiProps<ChartTooltipFactory>, ElementProps<'div'> {\n /** Main tooltip label */\n label?: React.ReactNode;\n\n /** Chart data provided by recharts */\n payload: readonly Record<string, any>[] | Record<string, any>[] | undefined;\n\n /** Data units, provided by parent component */\n unit?: string;\n\n /** Tooltip type that determines the content and styles, `area` for LineChart, AreaChart and BarChart, `radial` for DonutChart and PieChart @default 'area' */\n type?: 'area' | 'radial' | 'scatter';\n\n /** Segment to display data for, identified by its index in the data array (preferred, isolates duplicate names) or by its name. Only applicable when `type=\"radial\"`. If not set, all data is rendered. */\n segmentId?: string | number;\n\n /** Chart series data, applicable only for `area` type */\n series?: ChartSeries[];\n\n /** A function to format values */\n valueFormatter?: (value: number) => React.ReactNode;\n\n /** Determines whether the color swatch should be visible @default true */\n showColor?: boolean;\n}\n\nexport type ChartTooltipFactory = Factory<{\n props: ChartTooltipProps;\n ref: HTMLDivElement;\n stylesNames: ChartTooltipStylesNames;\n}>;\n\nconst defaultProps = {\n type: 'area',\n showColor: true,\n} satisfies Partial<ChartTooltipProps>;\n\nexport const ChartTooltip = factory<ChartTooltipFactory>((_props) => {\n const props = useProps('ChartTooltip', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n payload,\n label,\n unit,\n type,\n segmentId,\n mod,\n series,\n valueFormatter,\n showColor,\n attributes,\n ...others\n } = props;\n\n const theme = useMantineTheme();\n\n const getStyles = useStyles<ChartTooltipFactory>({\n name: 'ChartTooltip',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n });\n\n if (!payload) {\n return null;\n }\n\n const filteredPayload = getFilteredChartTooltipPayload(payload, segmentId);\n const scatterLabel = type === 'scatter' ? payload[0]?.payload?.name : null;\n const labels = getSeriesLabels(series);\n const _label = label || scatterLabel;\n\n const items = filteredPayload.map((item) => (\n <div key={item?.key ?? item.name} data-type={type} {...getStyles('tooltipItem')}>\n <div {...getStyles('tooltipItemBody')}>\n {showColor && (\n <svg {...getStyles('tooltipItemColor')}>\n <circle\n r={6}\n fill={getThemeColor(item.color, theme)}\n width={12}\n height={12}\n cx={6}\n cy={6}\n />\n </svg>\n )}\n <div {...getStyles('tooltipItemName')}>{labels[item.name] || item.name}</div>\n </div>\n <div {...getStyles('tooltipItemData')}>\n {typeof valueFormatter === 'function'\n ? valueFormatter(getData(item, type))\n : getData(item, type)}\n {unit || item.unit}\n </div>\n </div>\n ));\n\n return (\n <Box {...getStyles('tooltip')} mod={[{ type }, mod]} {...others}>\n {_label && <div {...getStyles('tooltipLabel')}>{_label}</div>}\n <div {...getStyles('tooltipBody')}>{items}</div>\n </Box>\n );\n});\n\nChartTooltip.displayName = '@mantine/charts/ChartTooltip';\n"],"mappings":";;;;;;AAgBA,SAAS,0BAA0B,SAAuD;CACxF,OAAO,QAAQ,KAAK,SAAS;EAC3B,IAAI,CAAC,KAAK,WAAW,KAAK,QAAQ,KAAK,OACrC,OAAO;EAET,MAAM,aAAa,KAAK,KAAK,OAAO,IAAI;EACxC,IAAI,cAAc,GAAG;GACnB,MAAM,aAAa,KAAK,KAAK,UAAU,GAAG,UAAU;GACpD,MAAM,gBAAgB,EAAE,GAAG,KAAK,QAAQ,YAAY;GACpD,MAAM,iBAAiB,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,QAAQ,KAAK,YAAY;IAC3E,MAAM,CAAC,GAAG,KAAK;IACf,OAAO,MAAM,aAAa,MAAM;KAAE,GAAG;MAAM,IAAI;IAAE;GACnD,GAAG,CAAC,CAAC;GAEL,OAAO;IACL,GAAG;IACH,MAAM,KAAK,KAAK,UAAU,aAAa,CAAC;IACxC,SAAS;KACP,GAAG;KACH,GAAG;IACL;GACF;EACF;EACA,OAAO;CACT,CAAC;AACH;AAEA,SAAgB,+BACd,SACA,WACA;CACA,MAAM,mBAAmB,0BACvB,QAAQ,QAAQ,SAAS,KAAK,SAAS,UAAU,CAAC,KAAK,KAAK,CAC9D;CAEA,IAAI,cAAc,KAAA,KAAa,cAAc,MAC3C,OAAO;CAGT,IAAI,OAAO,cAAc,UAAU;EACjC,MAAM,OAAO,iBAAiB;EAC9B,OAAO,OAAO,CAAC,IAAI,IAAI,CAAC;CAC1B;CAEA,OAAO,iBAAiB,QAAQ,SAAS,KAAK,SAAS,SAAS;AAClE;AAEA,SAAS,QAAQ,MAA2B,MAAqC;CAC/E,IAAI,SAAS,YAAY,SAAS,WAAW;EAC3C,IAAI,MAAM,QAAQ,KAAK,KAAK,GAC1B,OAAO,KAAK,MAAM,KAAK,KAAK,MAAM;EAEpC,OAAO,KAAK;CACd;CAEA,IAAI,MAAM,QAAQ,KAAK,QAAQ,KAAK,QAAQ,GAC1C,OAAO,KAAK,QAAQ,KAAK,QAAQ,CAAC,KAAK,KAAK,QAAQ,KAAK,QAAQ,CAAC;CAEpE,OAAO,KAAK,QAAQ,KAAK;AAC3B;AA6CA,MAAM,eAAe;CACnB,MAAM;CACN,WAAW;AACb;AAEA,MAAa,eAAe,SAA8B,WAAW;CACnE,MAAM,QAAQ,SAAS,gBAAgB,cAAc,MAAM;CAC3D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,SACA,OACA,MACA,MACA,WACA,KACA,QACA,gBACA,WACA,YACA,GAAG,WACD;CAEJ,MAAM,QAAQ,gBAAgB;CAE9B,MAAM,YAAY,UAA+B;EAC/C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,IAAI,CAAC,SACH,OAAO;CAGT,MAAM,kBAAkB,+BAA+B,SAAS,SAAS;CACzE,MAAM,eAAe,SAAS,YAAY,QAAQ,EAAE,EAAE,SAAS,OAAO;CACtE,MAAM,SAAS,gBAAgB,MAAM;CACrC,MAAM,SAAS,SAAS;CAExB,MAAM,QAAQ,gBAAgB,KAAK,
|
|
1
|
+
{"version":3,"file":"ChartTooltip.mjs","names":[],"sources":["../../src/ChartTooltip/ChartTooltip.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n getThemeColor,\n StylesApiProps,\n useMantineTheme,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { ChartSeries } from '../types';\nimport { getSeriesLabels } from '../utils';\nimport classes from './ChartTooltip.module.css';\n\nfunction updateChartTooltipPayload(payload: Record<string, any>[]): Record<string, any>[] {\n return payload.map((item) => {\n if (!item.payload || item.payload[item.name]) {\n return item;\n }\n const matchFound = item.name.search(/\\./);\n if (matchFound >= 0) {\n const newDataKey = item.name.substring(0, matchFound);\n const nestedPayload = { ...item.payload[newDataKey] };\n const shallowPayload = Object.entries(item.payload).reduce((acc, current) => {\n const [k, v] = current;\n return k === newDataKey ? acc : { ...acc, [k]: v };\n }, {});\n\n return {\n ...item,\n name: item.name.substring(matchFound + 1),\n payload: {\n ...shallowPayload,\n ...nestedPayload,\n },\n };\n }\n return item;\n });\n}\n\nexport function getFilteredChartTooltipPayload(\n payload: readonly Record<string, any>[] | Record<string, any>[],\n segmentId?: string | number\n) {\n const duplicatesFilter = updateChartTooltipPayload(\n payload.filter((item) => item.fill !== 'none' || !item.color)\n );\n\n if (segmentId === undefined || segmentId === null) {\n return duplicatesFilter;\n }\n\n if (typeof segmentId === 'number') {\n const item = duplicatesFilter[segmentId];\n return item ? [item] : [];\n }\n\n return duplicatesFilter.filter((item) => item.name === segmentId);\n}\n\nfunction getData(item: Record<string, any>, type: 'area' | 'radial' | 'scatter') {\n if (type === 'radial' || type === 'scatter') {\n if (Array.isArray(item.value)) {\n return item.value[1] - item.value[0];\n }\n return item.value;\n }\n\n if (Array.isArray(item.payload[item.dataKey])) {\n return item.payload[item.dataKey][1] - item.payload[item.dataKey][0];\n }\n return item.payload[item.name];\n}\n\nexport type ChartTooltipStylesNames =\n | 'tooltip'\n | 'tooltipItem'\n | 'tooltipItemBody'\n | 'tooltipItemColor'\n | 'tooltipItemName'\n | 'tooltipItemData'\n | 'tooltipLabel'\n | 'tooltipBody';\n\nexport interface ChartTooltipProps\n extends BoxProps, StylesApiProps<ChartTooltipFactory>, ElementProps<'div'> {\n /** Main tooltip label */\n label?: React.ReactNode;\n\n /** Chart data provided by recharts */\n payload: readonly Record<string, any>[] | Record<string, any>[] | undefined;\n\n /** Data units, provided by parent component */\n unit?: string;\n\n /** Tooltip type that determines the content and styles, `area` for LineChart, AreaChart and BarChart, `radial` for DonutChart and PieChart @default 'area' */\n type?: 'area' | 'radial' | 'scatter';\n\n /** Segment to display data for, identified by its index in the data array (preferred, isolates duplicate names) or by its name. Only applicable when `type=\"radial\"`. If not set, all data is rendered. */\n segmentId?: string | number;\n\n /** Chart series data, applicable only for `area` type */\n series?: ChartSeries[];\n\n /** A function to format values */\n valueFormatter?: (value: number) => React.ReactNode;\n\n /** Determines whether the color swatch should be visible @default true */\n showColor?: boolean;\n}\n\nexport type ChartTooltipFactory = Factory<{\n props: ChartTooltipProps;\n ref: HTMLDivElement;\n stylesNames: ChartTooltipStylesNames;\n}>;\n\nconst defaultProps = {\n type: 'area',\n showColor: true,\n} satisfies Partial<ChartTooltipProps>;\n\nexport const ChartTooltip = factory<ChartTooltipFactory>((_props) => {\n const props = useProps('ChartTooltip', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n payload,\n label,\n unit,\n type,\n segmentId,\n mod,\n series,\n valueFormatter,\n showColor,\n attributes,\n ...others\n } = props;\n\n const theme = useMantineTheme();\n\n const getStyles = useStyles<ChartTooltipFactory>({\n name: 'ChartTooltip',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n });\n\n if (!payload) {\n return null;\n }\n\n const filteredPayload = getFilteredChartTooltipPayload(payload, segmentId);\n const scatterLabel = type === 'scatter' ? payload[0]?.payload?.name : null;\n const labels = getSeriesLabels(series);\n const _label = label || scatterLabel;\n\n const items = filteredPayload.map((item, index) => (\n <div key={item?.key ?? `${item.name}-${index}`} data-type={type} {...getStyles('tooltipItem')}>\n <div {...getStyles('tooltipItemBody')}>\n {showColor && (\n <svg {...getStyles('tooltipItemColor')}>\n <circle\n r={6}\n fill={getThemeColor(item.color, theme)}\n width={12}\n height={12}\n cx={6}\n cy={6}\n />\n </svg>\n )}\n <div {...getStyles('tooltipItemName')}>{labels[item.name] || item.name}</div>\n </div>\n <div {...getStyles('tooltipItemData')}>\n {typeof valueFormatter === 'function'\n ? valueFormatter(getData(item, type))\n : getData(item, type)}\n {unit || item.unit}\n </div>\n </div>\n ));\n\n return (\n <Box {...getStyles('tooltip')} mod={[{ type }, mod]} {...others}>\n {_label && <div {...getStyles('tooltipLabel')}>{_label}</div>}\n <div {...getStyles('tooltipBody')}>{items}</div>\n </Box>\n );\n});\n\nChartTooltip.displayName = '@mantine/charts/ChartTooltip';\n"],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
//#region packages/@mantine/charts/src/Heatmap/get-heat-color/get-heat-color.ts
|
|
3
3
|
function getHeatColor({ value, min, max, colors }) {
|
|
4
4
|
const percent = max === min ? 1 : (value - min) / (max - min);
|
|
5
|
-
|
|
5
|
+
const clampedPercent = Math.min(1, Math.max(0, percent));
|
|
6
|
+
return colors[Math.round((colors.length - 1) * clampedPercent)];
|
|
6
7
|
}
|
|
7
8
|
//#endregion
|
|
8
9
|
export { getHeatColor };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-heat-color.mjs","names":[],"sources":["../../../src/Heatmap/get-heat-color/get-heat-color.ts"],"sourcesContent":["interface GetHeatColorInput {\n value: number;\n min: number;\n max: number;\n colors: string[];\n}\n\nexport function getHeatColor({ value, min, max, colors }: GetHeatColorInput) {\n const percent = max === min ? 1 : (value - min) / (max - min);\n const colorIndex = Math.round((colors.length - 1) *
|
|
1
|
+
{"version":3,"file":"get-heat-color.mjs","names":[],"sources":["../../../src/Heatmap/get-heat-color/get-heat-color.ts"],"sourcesContent":["interface GetHeatColorInput {\n value: number;\n min: number;\n max: number;\n colors: string[];\n}\n\nexport function getHeatColor({ value, min, max, colors }: GetHeatColorInput) {\n const percent = max === min ? 1 : (value - min) / (max - min);\n const clampedPercent = Math.min(1, Math.max(0, percent));\n const colorIndex = Math.round((colors.length - 1) * clampedPercent);\n return colors[colorIndex];\n}\n"],"mappings":";;AAOA,SAAgB,aAAa,EAAE,OAAO,KAAK,KAAK,UAA6B;CAC3E,MAAM,UAAU,QAAQ,MAAM,KAAK,QAAQ,QAAQ,MAAM;CACzD,MAAM,iBAAiB,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC;CAEvD,OAAO,OADY,KAAK,OAAO,OAAO,SAAS,KAAK,cAC7B;AACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mantine/charts",
|
|
3
|
-
"version": "9.4.
|
|
3
|
+
"version": "9.4.1",
|
|
4
4
|
"description": "Charts components built with recharts and Mantine",
|
|
5
5
|
"homepage": "https://mantine.dev/",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"directory": "packages/@mantine/charts"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@mantine/core": "9.4.
|
|
39
|
-
"@mantine/hooks": "9.4.
|
|
38
|
+
"@mantine/core": "9.4.1",
|
|
39
|
+
"@mantine/hooks": "9.4.1",
|
|
40
40
|
"react": "^19.2.0",
|
|
41
41
|
"react-dom": "^19.2.0",
|
|
42
42
|
"recharts": ">=3.2.1"
|