@automattic/charts 0.58.0 → 1.0.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 +25 -0
- package/README.md +7 -54
- package/dist/index.cjs +9606 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +20 -25
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +1612 -33
- package/dist/index.d.ts +1612 -33
- package/dist/index.js +9640 -56
- package/dist/index.js.map +1 -1
- package/package.json +8 -125
- package/src/charts/bar-chart/bar-chart.module.scss +0 -5
- package/src/charts/bar-chart/bar-chart.tsx +131 -137
- package/src/charts/leaderboard-chart/leaderboard-chart.tsx +23 -40
- package/src/charts/line-chart/line-chart.module.scss +0 -5
- package/src/charts/line-chart/line-chart.tsx +190 -183
- package/src/charts/line-chart/private/line-chart-annotations-overlay.tsx +1 -2
- package/src/charts/pie-chart/pie-chart.module.scss +2 -10
- package/src/charts/pie-chart/pie-chart.tsx +198 -199
- package/src/charts/pie-chart/test/composition-api.test.tsx +3 -3
- package/src/charts/pie-chart/test/pie-chart.test.tsx +42 -35
- package/src/charts/pie-semi-circle-chart/pie-semi-circle-chart.module.scss +2 -8
- package/src/charts/pie-semi-circle-chart/pie-semi-circle-chart.tsx +155 -155
- package/src/charts/pie-semi-circle-chart/test/pie-semi-circle-chart.test.tsx +25 -25
- package/src/charts/private/chart-layout/chart-layout.module.scss +7 -0
- package/src/charts/private/chart-layout/chart-layout.tsx +106 -0
- package/src/charts/private/chart-layout/index.ts +2 -0
- package/src/charts/private/chart-layout/test/chart-layout.test.tsx +167 -0
- package/src/charts/private/single-chart-context/single-chart-context.tsx +2 -2
- package/src/charts/private/svg-empty-state/index.ts +1 -0
- package/src/charts/private/svg-empty-state/svg-empty-state.module.scss +7 -0
- package/src/charts/private/svg-empty-state/svg-empty-state.tsx +40 -0
- package/src/components/legend/hooks/test/use-chart-legend-items.test.tsx +12 -8
- package/src/components/legend/hooks/use-chart-legend-items.ts +12 -13
- package/src/components/legend/legend.tsx +33 -8
- package/src/components/legend/test/legend.test.tsx +93 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-data-with-percentages.ts +24 -0
- package/src/hooks/use-interactive-legend-data.ts +18 -15
- package/src/index.ts +65 -2
- package/src/providers/chart-context/global-charts-provider.tsx +7 -1
- package/src/providers/chart-context/hooks/use-chart-registration.ts +2 -1
- package/src/providers/chart-context/types.ts +2 -2
- package/src/types.ts +27 -7
- package/src/utils/test/resolve-css-var.test.ts +2 -0
- package/dist/base-tooltip-DOq93wjU.d.cts +0 -38
- package/dist/base-tooltip-DOq93wjU.d.ts +0 -38
- package/dist/charts/bar-chart/index.cjs +0 -17
- package/dist/charts/bar-chart/index.cjs.map +0 -1
- package/dist/charts/bar-chart/index.css +0 -141
- package/dist/charts/bar-chart/index.css.map +0 -1
- package/dist/charts/bar-chart/index.d.cts +0 -36
- package/dist/charts/bar-chart/index.d.ts +0 -36
- package/dist/charts/bar-chart/index.js +0 -17
- package/dist/charts/bar-chart/index.js.map +0 -1
- package/dist/charts/bar-list-chart/index.cjs +0 -18
- package/dist/charts/bar-list-chart/index.cjs.map +0 -1
- package/dist/charts/bar-list-chart/index.css +0 -141
- package/dist/charts/bar-list-chart/index.css.map +0 -1
- package/dist/charts/bar-list-chart/index.d.cts +0 -92
- package/dist/charts/bar-list-chart/index.d.ts +0 -92
- package/dist/charts/bar-list-chart/index.js +0 -18
- package/dist/charts/bar-list-chart/index.js.map +0 -1
- package/dist/charts/conversion-funnel-chart/index.cjs +0 -11
- package/dist/charts/conversion-funnel-chart/index.cjs.map +0 -1
- package/dist/charts/conversion-funnel-chart/index.css +0 -157
- package/dist/charts/conversion-funnel-chart/index.css.map +0 -1
- package/dist/charts/conversion-funnel-chart/index.d.cts +0 -97
- package/dist/charts/conversion-funnel-chart/index.d.ts +0 -97
- package/dist/charts/conversion-funnel-chart/index.js +0 -11
- package/dist/charts/conversion-funnel-chart/index.js.map +0 -1
- package/dist/charts/geo-chart/index.cjs +0 -13
- package/dist/charts/geo-chart/index.cjs.map +0 -1
- package/dist/charts/geo-chart/index.css +0 -23
- package/dist/charts/geo-chart/index.css.map +0 -1
- package/dist/charts/geo-chart/index.d.cts +0 -67
- package/dist/charts/geo-chart/index.d.ts +0 -67
- package/dist/charts/geo-chart/index.js +0 -13
- package/dist/charts/geo-chart/index.js.map +0 -1
- package/dist/charts/leaderboard-chart/index.cjs +0 -21
- package/dist/charts/leaderboard-chart/index.cjs.map +0 -1
- package/dist/charts/leaderboard-chart/index.css +0 -160
- package/dist/charts/leaderboard-chart/index.css.map +0 -1
- package/dist/charts/leaderboard-chart/index.d.cts +0 -46
- package/dist/charts/leaderboard-chart/index.d.ts +0 -46
- package/dist/charts/leaderboard-chart/index.js +0 -21
- package/dist/charts/leaderboard-chart/index.js.map +0 -1
- package/dist/charts/line-chart/index.cjs +0 -17
- package/dist/charts/line-chart/index.cjs.map +0 -1
- package/dist/charts/line-chart/index.css +0 -213
- package/dist/charts/line-chart/index.css.map +0 -1
- package/dist/charts/line-chart/index.d.cts +0 -98
- package/dist/charts/line-chart/index.d.ts +0 -98
- package/dist/charts/line-chart/index.js +0 -17
- package/dist/charts/line-chart/index.js.map +0 -1
- package/dist/charts/pie-chart/index.cjs +0 -19
- package/dist/charts/pie-chart/index.cjs.map +0 -1
- package/dist/charts/pie-chart/index.css +0 -131
- package/dist/charts/pie-chart/index.css.map +0 -1
- package/dist/charts/pie-chart/index.d.cts +0 -91
- package/dist/charts/pie-chart/index.d.ts +0 -91
- package/dist/charts/pie-chart/index.js +0 -19
- package/dist/charts/pie-chart/index.js.map +0 -1
- package/dist/charts/pie-semi-circle-chart/index.cjs +0 -18
- package/dist/charts/pie-semi-circle-chart/index.cjs.map +0 -1
- package/dist/charts/pie-semi-circle-chart/index.css +0 -132
- package/dist/charts/pie-semi-circle-chart/index.css.map +0 -1
- package/dist/charts/pie-semi-circle-chart/index.d.cts +0 -88
- package/dist/charts/pie-semi-circle-chart/index.d.ts +0 -88
- package/dist/charts/pie-semi-circle-chart/index.js +0 -18
- package/dist/charts/pie-semi-circle-chart/index.js.map +0 -1
- package/dist/charts/sparkline/index.cjs +0 -18
- package/dist/charts/sparkline/index.cjs.map +0 -1
- package/dist/charts/sparkline/index.css +0 -230
- package/dist/charts/sparkline/index.css.map +0 -1
- package/dist/charts/sparkline/index.d.cts +0 -113
- package/dist/charts/sparkline/index.d.ts +0 -113
- package/dist/charts/sparkline/index.js +0 -18
- package/dist/charts/sparkline/index.js.map +0 -1
- package/dist/chunk-2A34OA5O.cjs +0 -51
- package/dist/chunk-2A34OA5O.cjs.map +0 -1
- package/dist/chunk-2I67QUIV.js +0 -895
- package/dist/chunk-2I67QUIV.js.map +0 -1
- package/dist/chunk-2ICEEQOC.js +0 -1071
- package/dist/chunk-2ICEEQOC.js.map +0 -1
- package/dist/chunk-4B7BL2DD.js +0 -120
- package/dist/chunk-4B7BL2DD.js.map +0 -1
- package/dist/chunk-4OXMTKAL.js +0 -401
- package/dist/chunk-4OXMTKAL.js.map +0 -1
- package/dist/chunk-ASLARV7L.cjs +0 -81
- package/dist/chunk-ASLARV7L.cjs.map +0 -1
- package/dist/chunk-B6NLZFRW.js +0 -617
- package/dist/chunk-B6NLZFRW.js.map +0 -1
- package/dist/chunk-BBAUQOW6.cjs +0 -120
- package/dist/chunk-BBAUQOW6.cjs.map +0 -1
- package/dist/chunk-BPYKWMI7.js +0 -194
- package/dist/chunk-BPYKWMI7.js.map +0 -1
- package/dist/chunk-CMMHCTBX.cjs +0 -373
- package/dist/chunk-CMMHCTBX.cjs.map +0 -1
- package/dist/chunk-CPPXJATQ.cjs +0 -1071
- package/dist/chunk-CPPXJATQ.cjs.map +0 -1
- package/dist/chunk-DKU775VC.js +0 -219
- package/dist/chunk-DKU775VC.js.map +0 -1
- package/dist/chunk-GRA7Y2ZG.cjs +0 -401
- package/dist/chunk-GRA7Y2ZG.cjs.map +0 -1
- package/dist/chunk-I2276W3I.cjs +0 -66
- package/dist/chunk-I2276W3I.cjs.map +0 -1
- package/dist/chunk-JJIMABHT.js +0 -351
- package/dist/chunk-JJIMABHT.js.map +0 -1
- package/dist/chunk-KJHWXOCZ.js +0 -421
- package/dist/chunk-KJHWXOCZ.js.map +0 -1
- package/dist/chunk-KRWGSOJ2.js +0 -91
- package/dist/chunk-KRWGSOJ2.js.map +0 -1
- package/dist/chunk-KXRWNFQJ.js +0 -51
- package/dist/chunk-KXRWNFQJ.js.map +0 -1
- package/dist/chunk-LTFH7SEG.js +0 -373
- package/dist/chunk-LTFH7SEG.js.map +0 -1
- package/dist/chunk-MUNOKLLE.js +0 -165
- package/dist/chunk-MUNOKLLE.js.map +0 -1
- package/dist/chunk-MXGLYWVP.cjs +0 -351
- package/dist/chunk-MXGLYWVP.cjs.map +0 -1
- package/dist/chunk-OP6PHB2U.js +0 -81
- package/dist/chunk-OP6PHB2U.js.map +0 -1
- package/dist/chunk-OYC34VTO.cjs +0 -3957
- package/dist/chunk-OYC34VTO.cjs.map +0 -1
- package/dist/chunk-PQL5I3F6.cjs +0 -421
- package/dist/chunk-PQL5I3F6.cjs.map +0 -1
- package/dist/chunk-REZTQ4PH.cjs +0 -488
- package/dist/chunk-REZTQ4PH.cjs.map +0 -1
- package/dist/chunk-TZRUHQOH.cjs +0 -91
- package/dist/chunk-TZRUHQOH.cjs.map +0 -1
- package/dist/chunk-UTYVIOWZ.js +0 -3957
- package/dist/chunk-UTYVIOWZ.js.map +0 -1
- package/dist/chunk-W2LDIX26.cjs +0 -165
- package/dist/chunk-W2LDIX26.cjs.map +0 -1
- package/dist/chunk-WSG64BVN.cjs +0 -219
- package/dist/chunk-WSG64BVN.cjs.map +0 -1
- package/dist/chunk-WTQYGUNF.js +0 -400
- package/dist/chunk-WTQYGUNF.js.map +0 -1
- package/dist/chunk-WYK7EL5R.cjs +0 -895
- package/dist/chunk-WYK7EL5R.cjs.map +0 -1
- package/dist/chunk-XC4KHJYX.cjs +0 -617
- package/dist/chunk-XC4KHJYX.cjs.map +0 -1
- package/dist/chunk-XVBH5XHE.cjs +0 -400
- package/dist/chunk-XVBH5XHE.cjs.map +0 -1
- package/dist/chunk-XWYZIFZW.js +0 -66
- package/dist/chunk-XWYZIFZW.js.map +0 -1
- package/dist/chunk-Y3NNQMAX.cjs +0 -194
- package/dist/chunk-Y3NNQMAX.cjs.map +0 -1
- package/dist/chunk-YAFQVVDI.js +0 -488
- package/dist/chunk-YAFQVVDI.js.map +0 -1
- package/dist/components/legend/index.cjs +0 -12
- package/dist/components/legend/index.cjs.map +0 -1
- package/dist/components/legend/index.css +0 -91
- package/dist/components/legend/index.css.map +0 -1
- package/dist/components/legend/index.d.cts +0 -37
- package/dist/components/legend/index.d.ts +0 -37
- package/dist/components/legend/index.js +0 -12
- package/dist/components/legend/index.js.map +0 -1
- package/dist/components/tooltip/index.cjs +0 -12
- package/dist/components/tooltip/index.cjs.map +0 -1
- package/dist/components/tooltip/index.css +0 -13
- package/dist/components/tooltip/index.css.map +0 -1
- package/dist/components/tooltip/index.d.cts +0 -71
- package/dist/components/tooltip/index.d.ts +0 -71
- package/dist/components/tooltip/index.js +0 -12
- package/dist/components/tooltip/index.js.map +0 -1
- package/dist/components/trend-indicator/index.cjs +0 -8
- package/dist/components/trend-indicator/index.cjs.map +0 -1
- package/dist/components/trend-indicator/index.css +0 -27
- package/dist/components/trend-indicator/index.css.map +0 -1
- package/dist/components/trend-indicator/index.d.cts +0 -44
- package/dist/components/trend-indicator/index.d.ts +0 -44
- package/dist/components/trend-indicator/index.js +0 -8
- package/dist/components/trend-indicator/index.js.map +0 -1
- package/dist/format-metric-value-MXm5DtQ_.d.cts +0 -24
- package/dist/format-metric-value-MXm5DtQ_.d.ts +0 -24
- package/dist/hooks/index.cjs +0 -29
- package/dist/hooks/index.cjs.map +0 -1
- package/dist/hooks/index.css +0 -9
- package/dist/hooks/index.css.map +0 -1
- package/dist/hooks/index.d.cts +0 -264
- package/dist/hooks/index.d.ts +0 -264
- package/dist/hooks/index.js +0 -29
- package/dist/hooks/index.js.map +0 -1
- package/dist/leaderboard-chart-BSbg0ufV.d.cts +0 -79
- package/dist/leaderboard-chart-odEYxxEC.d.ts +0 -79
- package/dist/legend-DFkosEvC.d.cts +0 -9
- package/dist/legend-DLswHhOk.d.ts +0 -9
- package/dist/providers/index.cjs +0 -21
- package/dist/providers/index.cjs.map +0 -1
- package/dist/providers/index.css +0 -9
- package/dist/providers/index.css.map +0 -1
- package/dist/providers/index.d.cts +0 -28
- package/dist/providers/index.d.ts +0 -28
- package/dist/providers/index.js +0 -21
- package/dist/providers/index.js.map +0 -1
- package/dist/themes-D0qc5JaW.d.cts +0 -67
- package/dist/themes-itO4Ht5g.d.ts +0 -67
- package/dist/types-B5f6XQ7Q.d.cts +0 -19
- package/dist/types-BsHooDbM.d.ts +0 -19
- package/dist/types-BuSrRM4p.d.ts +0 -49
- package/dist/types-ChOUI9-N.d.cts +0 -545
- package/dist/types-ChOUI9-N.d.ts +0 -545
- package/dist/types-Dfw9VOKI.d.cts +0 -49
- package/dist/utils/index.cjs +0 -44
- package/dist/utils/index.cjs.map +0 -1
- package/dist/utils/index.d.cts +0 -226
- package/dist/utils/index.d.ts +0 -226
- package/dist/utils/index.js +0 -44
- package/dist/utils/index.js.map +0 -1
- package/dist/with-responsive-CNfhzAUu.d.cts +0 -18
- package/dist/with-responsive-CNfhzAUu.d.ts +0 -18
package/dist/chunk-LTFH7SEG.js
DELETED
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
radial_wipe_animation_default
|
|
3
|
-
} from "./chunk-KXRWNFQJ.js";
|
|
4
|
-
import {
|
|
5
|
-
ChartHTML,
|
|
6
|
-
ChartSVG,
|
|
7
|
-
renderLegendSlot,
|
|
8
|
-
useChartChildren
|
|
9
|
-
} from "./chunk-KRWGSOJ2.js";
|
|
10
|
-
import {
|
|
11
|
-
Legend,
|
|
12
|
-
SingleChartContext,
|
|
13
|
-
useChartLegendItems
|
|
14
|
-
} from "./chunk-WTQYGUNF.js";
|
|
15
|
-
import {
|
|
16
|
-
BaseTooltip
|
|
17
|
-
} from "./chunk-BPYKWMI7.js";
|
|
18
|
-
import {
|
|
19
|
-
Stack
|
|
20
|
-
} from "./chunk-YAFQVVDI.js";
|
|
21
|
-
import {
|
|
22
|
-
withResponsive
|
|
23
|
-
} from "./chunk-OP6PHB2U.js";
|
|
24
|
-
import {
|
|
25
|
-
GlobalChartsContext,
|
|
26
|
-
GlobalChartsProvider,
|
|
27
|
-
useChartId,
|
|
28
|
-
useChartRegistration,
|
|
29
|
-
useElementSize,
|
|
30
|
-
useGlobalChartsContext,
|
|
31
|
-
useInteractiveLegendData,
|
|
32
|
-
usePrefersReducedMotion
|
|
33
|
-
} from "./chunk-2I67QUIV.js";
|
|
34
|
-
import {
|
|
35
|
-
attachSubComponents
|
|
36
|
-
} from "./chunk-JJIMABHT.js";
|
|
37
|
-
|
|
38
|
-
// src/charts/pie-semi-circle-chart/pie-semi-circle-chart.tsx
|
|
39
|
-
import { Group } from "@visx/group";
|
|
40
|
-
import { Pie } from "@visx/shape";
|
|
41
|
-
import { Text } from "@visx/text";
|
|
42
|
-
import { useTooltip, useTooltipInPortal } from "@visx/tooltip";
|
|
43
|
-
import { __ } from "@wordpress/i18n";
|
|
44
|
-
import clsx from "clsx";
|
|
45
|
-
import { useCallback, useContext, useMemo } from "react";
|
|
46
|
-
|
|
47
|
-
// src/charts/pie-semi-circle-chart/pie-semi-circle-chart.module.scss
|
|
48
|
-
var pie_semi_circle_chart_module_default = {
|
|
49
|
-
"pie-semi-circle-chart--responsive": "a8ccharts-V0wiEb",
|
|
50
|
-
"pie-semi-circle-chart__svg-wrapper": "a8ccharts-hGowej",
|
|
51
|
-
"pie-semi-circle-chart": "a8ccharts-8tyaQj",
|
|
52
|
-
"label": "a8ccharts-EKZS3j",
|
|
53
|
-
"note": "a8ccharts-v85A8-"
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
// src/charts/pie-semi-circle-chart/pie-semi-circle-chart.tsx
|
|
57
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
58
|
-
var renderDefaultPieSemiCircleTooltip = ({
|
|
59
|
-
tooltipData
|
|
60
|
-
}) => {
|
|
61
|
-
return /* @__PURE__ */ _jsx(BaseTooltip, {
|
|
62
|
-
data: tooltipData,
|
|
63
|
-
top: 0,
|
|
64
|
-
left: 0,
|
|
65
|
-
renderContainer: false
|
|
66
|
-
});
|
|
67
|
-
};
|
|
68
|
-
var PAD_ANGLE = 0.03;
|
|
69
|
-
var DEFAULT_WIDTH = 400;
|
|
70
|
-
var validateData = (data) => {
|
|
71
|
-
if (!data.length) {
|
|
72
|
-
return {
|
|
73
|
-
isValid: false,
|
|
74
|
-
message: "No data available"
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
const hasNegativeValues = data.some((item) => item.percentage < 0 || item.value < 0);
|
|
78
|
-
if (hasNegativeValues) {
|
|
79
|
-
return {
|
|
80
|
-
isValid: false,
|
|
81
|
-
message: "Invalid data: Negative values are not allowed"
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
const totalPercentage = data.reduce((sum, item) => sum + item.percentage, 0);
|
|
85
|
-
if (totalPercentage <= 0) {
|
|
86
|
-
return {
|
|
87
|
-
isValid: false,
|
|
88
|
-
message: "Invalid percentage total: Must be greater than 0"
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
92
|
-
isValid: true,
|
|
93
|
-
message: ""
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
|
-
var PieSemiCircleChartInternal = ({
|
|
97
|
-
data,
|
|
98
|
-
chartId: providedChartId,
|
|
99
|
-
width: propWidth,
|
|
100
|
-
height: propHeight,
|
|
101
|
-
thickness = 0.4,
|
|
102
|
-
clockwise = true,
|
|
103
|
-
withTooltips = false,
|
|
104
|
-
showLegend = false,
|
|
105
|
-
legend = {},
|
|
106
|
-
legendValueDisplay = "percentage",
|
|
107
|
-
label,
|
|
108
|
-
animation,
|
|
109
|
-
note,
|
|
110
|
-
className,
|
|
111
|
-
children,
|
|
112
|
-
tooltipOffsetX = 0,
|
|
113
|
-
tooltipOffsetY = -15,
|
|
114
|
-
renderTooltip = renderDefaultPieSemiCircleTooltip,
|
|
115
|
-
gap = "md"
|
|
116
|
-
}) => {
|
|
117
|
-
const legendInteractive = legend.interactive ?? false;
|
|
118
|
-
const legendPosition = legend.position ?? "bottom";
|
|
119
|
-
const chartId = useChartId(providedChartId);
|
|
120
|
-
const [svgWrapperRef, svgWrapperWidth, svgWrapperHeight] = useElementSize();
|
|
121
|
-
const {
|
|
122
|
-
tooltipOpen,
|
|
123
|
-
tooltipLeft,
|
|
124
|
-
tooltipTop,
|
|
125
|
-
tooltipData,
|
|
126
|
-
hideTooltip,
|
|
127
|
-
showTooltip
|
|
128
|
-
} = useTooltip();
|
|
129
|
-
const {
|
|
130
|
-
containerRef,
|
|
131
|
-
TooltipInPortal,
|
|
132
|
-
containerBounds
|
|
133
|
-
} = useTooltipInPortal({
|
|
134
|
-
detectBounds: true,
|
|
135
|
-
scroll: true,
|
|
136
|
-
debounce: 0
|
|
137
|
-
});
|
|
138
|
-
const handleMouseMove = useCallback((event, arc) => {
|
|
139
|
-
if (containerBounds.width === 0 || containerBounds.height === 0) {
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
showTooltip({
|
|
143
|
-
tooltipData: arc.data,
|
|
144
|
-
tooltipLeft: event.clientX - containerBounds.left + tooltipOffsetX,
|
|
145
|
-
tooltipTop: event.clientY - containerBounds.top + tooltipOffsetY
|
|
146
|
-
});
|
|
147
|
-
}, [containerBounds.width, containerBounds.height, containerBounds.left, containerBounds.top, showTooltip, tooltipOffsetX, tooltipOffsetY]);
|
|
148
|
-
const handleMouseLeave = useCallback(() => {
|
|
149
|
-
hideTooltip();
|
|
150
|
-
}, [hideTooltip]);
|
|
151
|
-
const handleArcMouseMove = useCallback((arc) => (event) => {
|
|
152
|
-
handleMouseMove(event, arc);
|
|
153
|
-
}, [handleMouseMove]);
|
|
154
|
-
const {
|
|
155
|
-
isValid,
|
|
156
|
-
message
|
|
157
|
-
} = validateData(data);
|
|
158
|
-
const {
|
|
159
|
-
getElementStyles,
|
|
160
|
-
isSeriesVisible
|
|
161
|
-
} = useGlobalChartsContext();
|
|
162
|
-
const {
|
|
163
|
-
visibleData,
|
|
164
|
-
allSegmentsHidden,
|
|
165
|
-
legendData
|
|
166
|
-
} = useInteractiveLegendData({
|
|
167
|
-
data,
|
|
168
|
-
chartId,
|
|
169
|
-
legendInteractive,
|
|
170
|
-
isSeriesVisible
|
|
171
|
-
});
|
|
172
|
-
const accessors = useMemo(() => ({
|
|
173
|
-
value: (d) => d.value,
|
|
174
|
-
sort: (a, b) => b.value - a.value,
|
|
175
|
-
fill: (d) => getElementStyles({
|
|
176
|
-
data: d,
|
|
177
|
-
index: d.index
|
|
178
|
-
}).color
|
|
179
|
-
}), [getElementStyles]);
|
|
180
|
-
const legendOptions = useMemo(() => ({
|
|
181
|
-
showValues: true,
|
|
182
|
-
legendValueDisplay
|
|
183
|
-
}), [legendValueDisplay]);
|
|
184
|
-
const legendItems = useChartLegendItems(legendData, legendOptions);
|
|
185
|
-
const {
|
|
186
|
-
svgChildren,
|
|
187
|
-
htmlChildren,
|
|
188
|
-
legendChildren,
|
|
189
|
-
otherChildren
|
|
190
|
-
} = useChartChildren(children, "PieSemiCircleChart");
|
|
191
|
-
const chartMetadata = useMemo(() => ({
|
|
192
|
-
thickness,
|
|
193
|
-
clockwise
|
|
194
|
-
}), [thickness, clockwise]);
|
|
195
|
-
useChartRegistration({
|
|
196
|
-
chartId,
|
|
197
|
-
legendItems,
|
|
198
|
-
chartType: "pie-semi-circle",
|
|
199
|
-
isDataValid: isValid,
|
|
200
|
-
metadata: chartMetadata
|
|
201
|
-
});
|
|
202
|
-
const prefersReducedMotion = usePrefersReducedMotion();
|
|
203
|
-
const effectiveWidth = propWidth || DEFAULT_WIDTH;
|
|
204
|
-
if (!isValid) {
|
|
205
|
-
const errorWidth = propHeight ? Math.min(propWidth || propHeight * 2, propHeight * 2) : effectiveWidth;
|
|
206
|
-
const errorHeight = errorWidth / 2;
|
|
207
|
-
return /* @__PURE__ */ _jsx("div", {
|
|
208
|
-
className: pie_semi_circle_chart_module_default["pie-semi-circle-chart"],
|
|
209
|
-
children: /* @__PURE__ */ _jsx("svg", {
|
|
210
|
-
width: errorWidth,
|
|
211
|
-
height: errorHeight,
|
|
212
|
-
children: /* @__PURE__ */ _jsx("text", {
|
|
213
|
-
x: "50%",
|
|
214
|
-
y: "50%",
|
|
215
|
-
textAnchor: "middle",
|
|
216
|
-
className: pie_semi_circle_chart_module_default.error,
|
|
217
|
-
children: message
|
|
218
|
-
})
|
|
219
|
-
})
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
const availableWidth = svgWrapperWidth > 0 ? svgWrapperWidth : effectiveWidth;
|
|
223
|
-
const availableHeight = svgWrapperHeight > 0 ? svgWrapperHeight : propHeight || effectiveWidth / 2;
|
|
224
|
-
const width = Math.min(availableWidth, availableHeight * 2);
|
|
225
|
-
const height = width / 2;
|
|
226
|
-
const radius = height;
|
|
227
|
-
const innerRadius = radius * (1 - thickness);
|
|
228
|
-
const dataWithIndex = visibleData.map((d) => {
|
|
229
|
-
const originalIndex = data.findIndex((item) => item.label === d.label);
|
|
230
|
-
return {
|
|
231
|
-
...d,
|
|
232
|
-
index: originalIndex >= 0 ? originalIndex : 0
|
|
233
|
-
};
|
|
234
|
-
});
|
|
235
|
-
const startAngle = clockwise ? -Math.PI / 2 : Math.PI / 2;
|
|
236
|
-
const endAngle = clockwise ? Math.PI / 2 : -Math.PI / 2;
|
|
237
|
-
const legendElement = showLegend && /* @__PURE__ */ _jsx(Legend, {
|
|
238
|
-
orientation: legend.orientation ?? "horizontal",
|
|
239
|
-
position: legendPosition,
|
|
240
|
-
alignment: legend.alignment ?? "center",
|
|
241
|
-
labelStyles: legend.labelStyles,
|
|
242
|
-
itemClassName: legend.itemClassName,
|
|
243
|
-
itemStyles: legend.itemStyles,
|
|
244
|
-
shapeStyles: legend.shapeStyles,
|
|
245
|
-
shape: legend.shape ?? "circle",
|
|
246
|
-
chartId,
|
|
247
|
-
interactive: legendInteractive
|
|
248
|
-
});
|
|
249
|
-
return /* @__PURE__ */ _jsx(SingleChartContext.Provider, {
|
|
250
|
-
value: {
|
|
251
|
-
chartId,
|
|
252
|
-
chartWidth: width,
|
|
253
|
-
chartHeight: height
|
|
254
|
-
},
|
|
255
|
-
children: /* @__PURE__ */ _jsxs(Stack, {
|
|
256
|
-
ref: containerRef,
|
|
257
|
-
direction: "column",
|
|
258
|
-
gap,
|
|
259
|
-
className: clsx("pie-semi-circle-chart", pie_semi_circle_chart_module_default["pie-semi-circle-chart"], {
|
|
260
|
-
[pie_semi_circle_chart_module_default["pie-semi-circle-chart--responsive"]]: !propWidth && !propHeight
|
|
261
|
-
}, className),
|
|
262
|
-
style: {
|
|
263
|
-
width: propWidth || void 0,
|
|
264
|
-
height: propHeight || void 0
|
|
265
|
-
},
|
|
266
|
-
children: [legendPosition === "top" && legendElement, renderLegendSlot(legendChildren, "top"), /* @__PURE__ */ _jsx("div", {
|
|
267
|
-
ref: svgWrapperRef,
|
|
268
|
-
className: pie_semi_circle_chart_module_default["pie-semi-circle-chart__svg-wrapper"],
|
|
269
|
-
children: /* @__PURE__ */ _jsxs("svg", {
|
|
270
|
-
width,
|
|
271
|
-
height,
|
|
272
|
-
viewBox: `0 0 ${width} ${height}`,
|
|
273
|
-
children: [/* @__PURE__ */ _jsx("defs", {
|
|
274
|
-
children: /* @__PURE__ */ _jsx(radial_wipe_animation_default, {
|
|
275
|
-
id: `radial-wipe-${chartId}`,
|
|
276
|
-
radius,
|
|
277
|
-
innerRadius,
|
|
278
|
-
startAngle: "-180deg",
|
|
279
|
-
wipePercentage: 50
|
|
280
|
-
})
|
|
281
|
-
}), /* @__PURE__ */ _jsx(Group, {
|
|
282
|
-
top: height,
|
|
283
|
-
left: width / 2,
|
|
284
|
-
mask: animation && !prefersReducedMotion ? `url(#radial-wipe-${chartId})` : null,
|
|
285
|
-
children: allSegmentsHidden ? /* @__PURE__ */ _jsx("text", {
|
|
286
|
-
textAnchor: "middle",
|
|
287
|
-
y: -radius / 2,
|
|
288
|
-
fill: "#ccc",
|
|
289
|
-
fontSize: "14",
|
|
290
|
-
fontFamily: "-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif",
|
|
291
|
-
children: __("All segments are hidden. Click legend items to show data.", "jetpack-charts")
|
|
292
|
-
}) : /* @__PURE__ */ _jsxs(_Fragment, {
|
|
293
|
-
children: [/* @__PURE__ */ _jsx(Pie, {
|
|
294
|
-
data: dataWithIndex,
|
|
295
|
-
pieValue: accessors.value,
|
|
296
|
-
outerRadius: radius,
|
|
297
|
-
innerRadius,
|
|
298
|
-
cornerRadius: 3,
|
|
299
|
-
padAngle: PAD_ANGLE,
|
|
300
|
-
startAngle,
|
|
301
|
-
endAngle,
|
|
302
|
-
pieSort: accessors.sort,
|
|
303
|
-
children: (pie) => {
|
|
304
|
-
return pie.arcs.map((arc) => /* @__PURE__ */ _jsx("g", {
|
|
305
|
-
onMouseMove: withTooltips ? handleArcMouseMove(arc) : void 0,
|
|
306
|
-
onMouseLeave: withTooltips ? handleMouseLeave : void 0,
|
|
307
|
-
children: /* @__PURE__ */ _jsx("path", {
|
|
308
|
-
d: pie.path(arc) || "",
|
|
309
|
-
fill: accessors.fill(arc.data)
|
|
310
|
-
})
|
|
311
|
-
}, arc.data.label));
|
|
312
|
-
}
|
|
313
|
-
}), /* @__PURE__ */ _jsxs(Group, {
|
|
314
|
-
children: [/* @__PURE__ */ _jsx(Text, {
|
|
315
|
-
textAnchor: "middle",
|
|
316
|
-
verticalAnchor: "start",
|
|
317
|
-
y: -40,
|
|
318
|
-
className: pie_semi_circle_chart_module_default.label,
|
|
319
|
-
children: label
|
|
320
|
-
}), /* @__PURE__ */ _jsx(Text, {
|
|
321
|
-
textAnchor: "middle",
|
|
322
|
-
verticalAnchor: "start",
|
|
323
|
-
y: -20,
|
|
324
|
-
className: pie_semi_circle_chart_module_default.note,
|
|
325
|
-
children: note
|
|
326
|
-
})]
|
|
327
|
-
}), !allSegmentsHidden && svgChildren]
|
|
328
|
-
})
|
|
329
|
-
})]
|
|
330
|
-
})
|
|
331
|
-
}), legendPosition === "bottom" && legendElement, renderLegendSlot(legendChildren, "bottom"), withTooltips && tooltipOpen && tooltipData && /* @__PURE__ */ _jsx(TooltipInPortal, {
|
|
332
|
-
top: tooltipTop || 0,
|
|
333
|
-
left: tooltipLeft || 0,
|
|
334
|
-
children: /* @__PURE__ */ _jsx("div", {
|
|
335
|
-
role: "tooltip",
|
|
336
|
-
children: renderTooltip({
|
|
337
|
-
tooltipData
|
|
338
|
-
})
|
|
339
|
-
})
|
|
340
|
-
}), htmlChildren, otherChildren]
|
|
341
|
-
})
|
|
342
|
-
});
|
|
343
|
-
};
|
|
344
|
-
var PieSemiCircleChartWithProvider = (props) => {
|
|
345
|
-
const existingContext = useContext(GlobalChartsContext);
|
|
346
|
-
if (existingContext) {
|
|
347
|
-
return /* @__PURE__ */ _jsx(PieSemiCircleChartInternal, {
|
|
348
|
-
...props
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
return /* @__PURE__ */ _jsx(GlobalChartsProvider, {
|
|
352
|
-
children: /* @__PURE__ */ _jsx(PieSemiCircleChartInternal, {
|
|
353
|
-
...props
|
|
354
|
-
})
|
|
355
|
-
});
|
|
356
|
-
};
|
|
357
|
-
PieSemiCircleChartWithProvider.displayName = "PieSemiCircleChart";
|
|
358
|
-
var PieSemiCircleChart = attachSubComponents(PieSemiCircleChartWithProvider, {
|
|
359
|
-
Legend,
|
|
360
|
-
SVG: ChartSVG,
|
|
361
|
-
HTML: ChartHTML
|
|
362
|
-
});
|
|
363
|
-
var PieSemiCircleChartResponsive = attachSubComponents(withResponsive(PieSemiCircleChartWithProvider), {
|
|
364
|
-
Legend,
|
|
365
|
-
SVG: ChartSVG,
|
|
366
|
-
HTML: ChartHTML
|
|
367
|
-
});
|
|
368
|
-
|
|
369
|
-
export {
|
|
370
|
-
PieSemiCircleChart,
|
|
371
|
-
PieSemiCircleChartResponsive
|
|
372
|
-
};
|
|
373
|
-
//# sourceMappingURL=chunk-LTFH7SEG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/charts/pie-semi-circle-chart/pie-semi-circle-chart.tsx","../src/charts/pie-semi-circle-chart/pie-semi-circle-chart.module.scss"],"sourcesContent":["import { Group } from '@visx/group';\nimport { Pie } from '@visx/shape';\nimport { Text } from '@visx/text';\nimport { useTooltip, useTooltipInPortal } from '@visx/tooltip';\nimport { __ } from '@wordpress/i18n';\nimport { Stack } from '@wordpress/ui';\nimport clsx from 'clsx';\nimport { useCallback, useContext, useMemo } from 'react';\nimport { Legend, useChartLegendItems } from '../../components/legend';\nimport { BaseTooltip } from '../../components/tooltip';\nimport { useElementSize, useInteractiveLegendData, usePrefersReducedMotion } from '../../hooks';\nimport { GlobalChartsProvider, useChartId, useChartRegistration, useGlobalChartsContext, GlobalChartsContext } from '../../providers';\nimport { attachSubComponents } from '../../utils';\nimport { ChartSVG, ChartHTML, useChartChildren, renderLegendSlot } from '../private/chart-composition';\nimport { RadialWipeAnimation } from '../private/radial-wipe-animation';\nimport { SingleChartContext } from '../private/single-chart-context';\nimport { withResponsive } from '../private/with-responsive';\nimport styles from './pie-semi-circle-chart.module.scss';\n\n/**\n * Parameters passed to the renderTooltip function for semi-circle charts.\n */\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\n/**\n * Default tooltip renderer for semi-circle pie charts.\n * Renders a BaseTooltip with the hovered segment's data.\n *\n * @param {PieSemiCircleChartRenderTooltipParams} params - The tooltip parameters containing the hovered data point\n * @return {ReactNode} The rendered tooltip content\n */\nconst renderDefaultPieSemiCircleTooltip = ({\n tooltipData\n}) => {\n return /*#__PURE__*/_jsx(BaseTooltip, {\n data: tooltipData,\n top: 0,\n left: 0,\n renderContainer: false\n });\n};\nconst PAD_ANGLE = 0.03; // Padding between segments\nconst DEFAULT_WIDTH = 400;\n\n// Base props type with optional responsive properties\n\n// Composition API types\n\n/**\n * Validates the semi-circle pie chart data\n * @param data - The data to validate\n * @return Object containing validation result and error message\n */\nconst validateData = data => {\n if (!data.length) {\n return {\n isValid: false,\n message: 'No data available'\n };\n }\n\n // Check for negative values\n const hasNegativeValues = data.some(item => item.percentage < 0 || item.value < 0);\n if (hasNegativeValues) {\n return {\n isValid: false,\n message: 'Invalid data: Negative values are not allowed'\n };\n }\n\n // Validate total percentage is greater than 0\n const totalPercentage = data.reduce((sum, item) => sum + item.percentage, 0);\n if (totalPercentage <= 0) {\n return {\n isValid: false,\n message: 'Invalid percentage total: Must be greater than 0'\n };\n }\n return {\n isValid: true,\n message: ''\n };\n};\nconst PieSemiCircleChartInternal = ({\n data,\n chartId: providedChartId,\n width: propWidth,\n height: propHeight,\n thickness = 0.4,\n clockwise = true,\n withTooltips = false,\n showLegend = false,\n legend = {},\n legendValueDisplay = 'percentage',\n label,\n animation,\n note,\n className,\n children,\n tooltipOffsetX = 0,\n tooltipOffsetY = -15,\n renderTooltip = renderDefaultPieSemiCircleTooltip,\n gap = 'md'\n}) => {\n const legendInteractive = legend.interactive ?? false;\n const legendPosition = legend.position ?? 'bottom';\n const chartId = useChartId(providedChartId);\n // Measure the SVG wrapper to calculate constrained dimensions\n const [svgWrapperRef, svgWrapperWidth, svgWrapperHeight] = useElementSize();\n const {\n tooltipOpen,\n tooltipLeft,\n tooltipTop,\n tooltipData,\n hideTooltip,\n showTooltip\n } = useTooltip();\n\n // Set up portal tooltip for better z-index handling\n // We get containerBounds to cancel out stale offsets in the position calculation\n const {\n containerRef,\n TooltipInPortal,\n containerBounds\n } = useTooltipInPortal({\n detectBounds: true,\n scroll: true,\n debounce: 0\n });\n const handleMouseMove = useCallback((event, arc) => {\n // Don't show tooltip until container bounds are measured\n if (containerBounds.width === 0 || containerBounds.height === 0) {\n return;\n }\n\n // Use clientX/Y and subtract containerBounds to cancel out any stale offset.\n // TooltipInPortal calculates: tooltipLeft + containerBounds.left + scrollX\n // By passing (clientX - containerBounds.left), we get:\n // (clientX - containerBounds.left) + containerBounds.left + scrollX = clientX + scrollX\n // This gives correct page coordinates regardless of stale bounds.\n showTooltip({\n tooltipData: arc.data,\n tooltipLeft: event.clientX - containerBounds.left + tooltipOffsetX,\n tooltipTop: event.clientY - containerBounds.top + tooltipOffsetY\n });\n }, [containerBounds.width, containerBounds.height, containerBounds.left, containerBounds.top, showTooltip, tooltipOffsetX, tooltipOffsetY]);\n const handleMouseLeave = useCallback(() => {\n hideTooltip();\n }, [hideTooltip]);\n const handleArcMouseMove = useCallback(arc => event => {\n handleMouseMove(event, arc);\n }, [handleMouseMove]);\n\n // Validate data first to get validation result\n const {\n isValid,\n message\n } = validateData(data);\n const {\n getElementStyles,\n isSeriesVisible\n } = useGlobalChartsContext();\n\n // Filter and recalculate data for interactive legends\n const {\n visibleData,\n allSegmentsHidden,\n legendData\n } = useInteractiveLegendData({\n data,\n chartId,\n legendInteractive,\n isSeriesVisible\n });\n\n // Define accessors with useMemo to avoid changing dependencies\n const accessors = useMemo(() => ({\n value: d => d.value,\n sort: (a, b) => b.value - a.value,\n fill: d => getElementStyles({\n data: d,\n index: d.index\n }).color\n }), [getElementStyles]);\n\n // Memoize legend options to prevent unnecessary re-calculations\n const legendOptions = useMemo(() => ({\n showValues: true,\n legendValueDisplay\n }), [legendValueDisplay]);\n\n // Create legend items using legendData (has recalculated percentages for visible items)\n const legendItems = useChartLegendItems(legendData, legendOptions);\n\n // Process children to extract compound components\n const {\n svgChildren,\n htmlChildren,\n legendChildren,\n otherChildren\n } = useChartChildren(children, 'PieSemiCircleChart');\n\n // Memoize metadata to prevent unnecessary re-registration\n const chartMetadata = useMemo(() => ({\n thickness,\n clockwise\n }), [thickness, clockwise]);\n\n // Register chart with context only if data is valid\n useChartRegistration({\n chartId,\n legendItems,\n chartType: 'pie-semi-circle',\n isDataValid: isValid,\n metadata: chartMetadata\n });\n const prefersReducedMotion = usePrefersReducedMotion();\n const effectiveWidth = propWidth || DEFAULT_WIDTH;\n if (!isValid) {\n const errorWidth = propHeight ? Math.min(propWidth || propHeight * 2, propHeight * 2) : effectiveWidth;\n const errorHeight = errorWidth / 2;\n return /*#__PURE__*/_jsx(\"div\", {\n className: styles['pie-semi-circle-chart'],\n children: /*#__PURE__*/_jsx(\"svg\", {\n width: errorWidth,\n height: errorHeight,\n children: /*#__PURE__*/_jsx(\"text\", {\n x: \"50%\",\n y: \"50%\",\n textAnchor: \"middle\",\n className: styles.error,\n children: message\n })\n })\n });\n }\n\n // Calculate chart dimensions maintaining the 2:1 width-to-height ratio.\n // Use measured SVG wrapper dimensions to respect height constraints, falling back\n // to explicit props during initial render before measurement is available.\n const availableWidth = svgWrapperWidth > 0 ? svgWrapperWidth : effectiveWidth;\n const availableHeight = svgWrapperHeight > 0 ? svgWrapperHeight : propHeight || effectiveWidth / 2;\n // Constrain width so that height (= width / 2) never exceeds the available height\n const width = Math.min(availableWidth, availableHeight * 2);\n const height = width / 2;\n const radius = height; // For a semi-circle, radius equals the SVG height\n const innerRadius = radius * (1 - thickness);\n\n // Map data with index for color assignment\n // When interactive, we need to find the original index to maintain consistent colors\n const dataWithIndex = visibleData.map(d => {\n const originalIndex = data.findIndex(item => item.label === d.label);\n return {\n ...d,\n index: originalIndex >= 0 ? originalIndex : 0\n };\n });\n\n // Configure pie angles based on clockwise direction\n const startAngle = clockwise ? -Math.PI / 2 : Math.PI / 2;\n const endAngle = clockwise ? Math.PI / 2 : -Math.PI / 2;\n const legendElement = showLegend && /*#__PURE__*/_jsx(Legend, {\n orientation: legend.orientation ?? 'horizontal',\n position: legendPosition,\n alignment: legend.alignment ?? 'center',\n labelStyles: legend.labelStyles,\n itemClassName: legend.itemClassName,\n itemStyles: legend.itemStyles,\n shapeStyles: legend.shapeStyles,\n shape: legend.shape ?? 'circle',\n chartId: chartId,\n interactive: legendInteractive\n });\n return /*#__PURE__*/_jsx(SingleChartContext.Provider, {\n value: {\n chartId,\n chartWidth: width,\n chartHeight: height\n },\n children: /*#__PURE__*/_jsxs(Stack, {\n ref: containerRef,\n direction: \"column\",\n gap: gap,\n className: clsx('pie-semi-circle-chart', styles['pie-semi-circle-chart'], {\n [styles['pie-semi-circle-chart--responsive']]: !propWidth && !propHeight\n }, className),\n style: {\n width: propWidth || undefined,\n height: propHeight || undefined\n },\n children: [legendPosition === 'top' && legendElement, renderLegendSlot(legendChildren, 'top'), /*#__PURE__*/_jsx(\"div\", {\n ref: svgWrapperRef,\n className: styles['pie-semi-circle-chart__svg-wrapper'],\n children: /*#__PURE__*/_jsxs(\"svg\", {\n width: width,\n height: height,\n viewBox: `0 0 ${width} ${height}`,\n children: [/*#__PURE__*/_jsx(\"defs\", {\n children: /*#__PURE__*/_jsx(RadialWipeAnimation, {\n id: `radial-wipe-${chartId}`,\n radius: radius,\n innerRadius: innerRadius,\n startAngle: \"-180deg\",\n wipePercentage: 50\n })\n }), /*#__PURE__*/_jsx(Group, {\n top: height,\n left: width / 2,\n mask: animation && !prefersReducedMotion ? `url(#radial-wipe-${chartId})` : null,\n children: allSegmentsHidden ? /*#__PURE__*/_jsx(\"text\", {\n textAnchor: \"middle\",\n y: -radius / 2,\n fill: \"#ccc\",\n fontSize: \"14\",\n fontFamily: \"-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif\",\n children: __('All segments are hidden. Click legend items to show data.', 'jetpack-charts')\n }) : /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Pie, {\n data: dataWithIndex,\n pieValue: accessors.value,\n outerRadius: radius,\n innerRadius: innerRadius,\n cornerRadius: 3,\n padAngle: PAD_ANGLE,\n startAngle: startAngle,\n endAngle: endAngle,\n pieSort: accessors.sort,\n children: pie => {\n return pie.arcs.map(arc => /*#__PURE__*/_jsx(\"g\", {\n onMouseMove: withTooltips ? handleArcMouseMove(arc) : undefined,\n onMouseLeave: withTooltips ? handleMouseLeave : undefined,\n children: /*#__PURE__*/_jsx(\"path\", {\n d: pie.path(arc) || '',\n fill: accessors.fill(arc.data)\n })\n }, arc.data.label));\n }\n }), /*#__PURE__*/_jsxs(Group, {\n children: [/*#__PURE__*/_jsx(Text, {\n textAnchor: \"middle\",\n verticalAnchor: \"start\",\n y: -40 // Position above the chart with space for note\n ,\n className: styles.label,\n children: label\n }), /*#__PURE__*/_jsx(Text, {\n textAnchor: \"middle\",\n verticalAnchor: \"start\",\n y: -20 // Position between label and chart\n ,\n className: styles.note,\n children: note\n })]\n }), !allSegmentsHidden && svgChildren]\n })\n })]\n })\n }), legendPosition === 'bottom' && legendElement, renderLegendSlot(legendChildren, 'bottom'), withTooltips && tooltipOpen && tooltipData && /*#__PURE__*/_jsx(TooltipInPortal, {\n top: tooltipTop || 0,\n left: tooltipLeft || 0,\n children: /*#__PURE__*/_jsx(\"div\", {\n role: \"tooltip\",\n children: renderTooltip({\n tooltipData\n })\n })\n }), htmlChildren, otherChildren]\n })\n });\n};\nconst PieSemiCircleChartWithProvider = props => {\n const existingContext = useContext(GlobalChartsContext);\n\n // If we're already in a GlobalChartsProvider context, don't create a new one\n if (existingContext) {\n return /*#__PURE__*/_jsx(PieSemiCircleChartInternal, {\n ...props\n });\n }\n\n // Otherwise, create our own GlobalChartsProvider\n return /*#__PURE__*/_jsx(GlobalChartsProvider, {\n children: /*#__PURE__*/_jsx(PieSemiCircleChartInternal, {\n ...props\n })\n });\n};\nPieSemiCircleChartWithProvider.displayName = 'PieSemiCircleChart';\n\n// Create PieSemiCircleChart with composition API\nconst PieSemiCircleChart = attachSubComponents(PieSemiCircleChartWithProvider, {\n Legend: Legend,\n SVG: ChartSVG,\n HTML: ChartHTML\n});\n\n// Create responsive PieSemiCircleChart with composition API\nconst PieSemiCircleChartResponsive = attachSubComponents(withResponsive(PieSemiCircleChartWithProvider), {\n Legend: Legend,\n SVG: ChartSVG,\n HTML: ChartHTML\n});\nexport { PieSemiCircleChartResponsive as default, PieSemiCircleChart as PieSemiCircleChartUnresponsive };","import 'css-chunk:src/charts/pie-semi-circle-chart/pie-semi-circle-chart.module.scss';export default {\n \"pie-semi-circle-chart--responsive\": \"a8ccharts-V0wiEb\",\n \"pie-semi-circle-chart__svg-wrapper\": \"a8ccharts-hGowej\",\n \"pie-semi-circle-chart\": \"a8ccharts-8tyaQj\",\n \"label\": \"a8ccharts-EKZS3j\",\n \"note\": \"a8ccharts-v85A8-\"\n};"],"mappings":"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","names":[]}
|
package/dist/chunk-MUNOKLLE.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
LineChart
|
|
3
|
-
} from "./chunk-2ICEEQOC.js";
|
|
4
|
-
import {
|
|
5
|
-
withResponsive
|
|
6
|
-
} from "./chunk-OP6PHB2U.js";
|
|
7
|
-
import {
|
|
8
|
-
useGlobalChartsTheme
|
|
9
|
-
} from "./chunk-2I67QUIV.js";
|
|
10
|
-
|
|
11
|
-
// src/charts/sparkline/sparkline.tsx
|
|
12
|
-
import clsx from "clsx";
|
|
13
|
-
import { useMemo, forwardRef } from "react";
|
|
14
|
-
|
|
15
|
-
// src/charts/sparkline/sparkline.module.scss
|
|
16
|
-
var sparkline_module_default = {
|
|
17
|
-
"sparkline": "a8ccharts-o-3Z8B",
|
|
18
|
-
"sparkline--empty": "a8ccharts-CbLbcd"
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
// src/charts/sparkline/sparkline.tsx
|
|
22
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
23
|
-
var DEFAULT_WIDTH = 100;
|
|
24
|
-
var DEFAULT_HEIGHT = 40;
|
|
25
|
-
var transformToSeriesData = (data, color, strokeWidth) => {
|
|
26
|
-
const baseDate = new Date(2e3, 0, 1);
|
|
27
|
-
return [{
|
|
28
|
-
label: "sparkline",
|
|
29
|
-
data: data.map((value, index) => ({
|
|
30
|
-
date: new Date(baseDate.getTime() + index * 864e5),
|
|
31
|
-
// Add days
|
|
32
|
-
value
|
|
33
|
-
})),
|
|
34
|
-
options: {
|
|
35
|
-
stroke: color,
|
|
36
|
-
seriesLineStyle: strokeWidth ? {
|
|
37
|
-
strokeWidth
|
|
38
|
-
} : void 0
|
|
39
|
-
}
|
|
40
|
-
}];
|
|
41
|
-
};
|
|
42
|
-
var SparklineComponent = /* @__PURE__ */ forwardRef(({
|
|
43
|
-
data,
|
|
44
|
-
width = DEFAULT_WIDTH,
|
|
45
|
-
height = DEFAULT_HEIGHT,
|
|
46
|
-
color,
|
|
47
|
-
strokeWidth: strokeWidthProp,
|
|
48
|
-
withGradientFill = true,
|
|
49
|
-
gradient,
|
|
50
|
-
className,
|
|
51
|
-
chartId,
|
|
52
|
-
margin: marginProp,
|
|
53
|
-
animation
|
|
54
|
-
}, ref) => {
|
|
55
|
-
const theme = useGlobalChartsTheme();
|
|
56
|
-
const themeStrokeWidth = theme.sparkline?.strokeWidth ?? 1.5;
|
|
57
|
-
const strokeWidth = strokeWidthProp ?? themeStrokeWidth;
|
|
58
|
-
const seriesData = useMemo(() => {
|
|
59
|
-
if (!data || data.length === 0) {
|
|
60
|
-
return [];
|
|
61
|
-
}
|
|
62
|
-
return transformToSeriesData(data, color, strokeWidth);
|
|
63
|
-
}, [data, color, strokeWidth]);
|
|
64
|
-
const finalMargin = useMemo(() => {
|
|
65
|
-
const themeMargin = theme.sparkline?.margin ?? {
|
|
66
|
-
top: 2,
|
|
67
|
-
right: 2,
|
|
68
|
-
bottom: 2,
|
|
69
|
-
left: 2
|
|
70
|
-
};
|
|
71
|
-
const margin = marginProp ?? themeMargin;
|
|
72
|
-
return {
|
|
73
|
-
...themeMargin,
|
|
74
|
-
...margin
|
|
75
|
-
};
|
|
76
|
-
}, [marginProp, theme.sparkline?.margin]);
|
|
77
|
-
const seriesWithGradient = useMemo(() => {
|
|
78
|
-
if (!gradient || seriesData.length === 0) {
|
|
79
|
-
return seriesData;
|
|
80
|
-
}
|
|
81
|
-
return seriesData.map((series) => ({
|
|
82
|
-
...series,
|
|
83
|
-
options: {
|
|
84
|
-
...series.options,
|
|
85
|
-
gradient: {
|
|
86
|
-
from: gradient.from || color || "#000000",
|
|
87
|
-
to: gradient.to || "#ffffff",
|
|
88
|
-
fromOpacity: gradient.fromOpacity ?? 0.5,
|
|
89
|
-
toOpacity: gradient.toOpacity ?? 0
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}));
|
|
93
|
-
}, [seriesData, gradient, color]);
|
|
94
|
-
if (!data || data.length === 0) {
|
|
95
|
-
return /* @__PURE__ */ _jsx("div", {
|
|
96
|
-
ref,
|
|
97
|
-
className: clsx("sparkline", sparkline_module_default.sparkline, sparkline_module_default["sparkline--empty"], className),
|
|
98
|
-
style: {
|
|
99
|
-
width,
|
|
100
|
-
height
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
if (data.length === 1) {
|
|
105
|
-
const cx = width / 2;
|
|
106
|
-
const cy = height / 2;
|
|
107
|
-
const resolvedColor = color || "#000000";
|
|
108
|
-
return /* @__PURE__ */ _jsx("div", {
|
|
109
|
-
ref,
|
|
110
|
-
className: clsx("sparkline", sparkline_module_default.sparkline, sparkline_module_default["sparkline--single-point"], className),
|
|
111
|
-
style: {
|
|
112
|
-
width,
|
|
113
|
-
height
|
|
114
|
-
},
|
|
115
|
-
children: /* @__PURE__ */ _jsx("svg", {
|
|
116
|
-
width,
|
|
117
|
-
height,
|
|
118
|
-
"aria-hidden": "true",
|
|
119
|
-
children: /* @__PURE__ */ _jsx("circle", {
|
|
120
|
-
cx,
|
|
121
|
-
cy,
|
|
122
|
-
r: strokeWidth * 1.5,
|
|
123
|
-
fill: resolvedColor
|
|
124
|
-
})
|
|
125
|
-
})
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
return /* @__PURE__ */ _jsx("div", {
|
|
129
|
-
ref,
|
|
130
|
-
className: clsx("sparkline", sparkline_module_default.sparkline, className),
|
|
131
|
-
children: /* @__PURE__ */ _jsx(LineChart, {
|
|
132
|
-
data: seriesWithGradient,
|
|
133
|
-
width,
|
|
134
|
-
height,
|
|
135
|
-
margin: finalMargin,
|
|
136
|
-
chartId,
|
|
137
|
-
withGradientFill,
|
|
138
|
-
withTooltips: false,
|
|
139
|
-
showLegend: false,
|
|
140
|
-
gridVisibility: "none",
|
|
141
|
-
options: {
|
|
142
|
-
axis: {
|
|
143
|
-
x: {
|
|
144
|
-
display: false
|
|
145
|
-
},
|
|
146
|
-
y: {
|
|
147
|
-
display: false
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
curveType: "monotone",
|
|
152
|
-
animation
|
|
153
|
-
})
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
SparklineComponent.displayName = "SparklineComponent";
|
|
157
|
-
var SparklineUnresponsive = SparklineComponent;
|
|
158
|
-
SparklineUnresponsive.displayName = "SparklineUnresponsive";
|
|
159
|
-
var Sparkline = withResponsive(SparklineUnresponsive);
|
|
160
|
-
|
|
161
|
-
export {
|
|
162
|
-
SparklineUnresponsive,
|
|
163
|
-
Sparkline
|
|
164
|
-
};
|
|
165
|
-
//# sourceMappingURL=chunk-MUNOKLLE.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/charts/sparkline/sparkline.tsx","../src/charts/sparkline/sparkline.module.scss"],"sourcesContent":["import clsx from 'clsx';\nimport { useMemo, forwardRef } from 'react';\nimport { useGlobalChartsTheme } from '../../providers';\nimport { LineChartUnresponsive } from '../line-chart';\nimport { withResponsive } from '../private/with-responsive';\nimport styles from './sparkline.module.scss';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DEFAULT_WIDTH = 100;\nconst DEFAULT_HEIGHT = 40;\n\n/**\n * Transforms a simple number array into SeriesData format for LineChart.\n * Uses index-based dates to create a linear x-axis.\n *\n * @param data - Array of numeric values to plot\n * @param color - Optional color for the line stroke\n * @param strokeWidth - Optional stroke width for the line\n * @return SeriesData array suitable for LineChart\n */\nconst transformToSeriesData = (data, color, strokeWidth) => {\n // Use a fixed base date and increment by index to create linear spacing\n const baseDate = new Date(2000, 0, 1);\n return [{\n label: 'sparkline',\n data: data.map((value, index) => ({\n date: new Date(baseDate.getTime() + index * 86400000),\n // Add days\n value\n })),\n options: {\n stroke: color,\n seriesLineStyle: strokeWidth ? {\n strokeWidth\n } : undefined\n }\n }];\n};\nconst SparklineComponent = /*#__PURE__*/forwardRef(({\n data,\n width = DEFAULT_WIDTH,\n height = DEFAULT_HEIGHT,\n color,\n strokeWidth: strokeWidthProp,\n withGradientFill = true,\n gradient,\n className,\n chartId,\n margin: marginProp,\n animation\n}, ref) => {\n const theme = useGlobalChartsTheme();\n\n // Get theme defaults for sparkline\n const themeStrokeWidth = theme.sparkline?.strokeWidth ?? 1.5;\n\n // Use prop values or fall back to theme defaults\n const strokeWidth = strokeWidthProp ?? themeStrokeWidth;\n\n // Transform number[] to SeriesData[] for LineChart\n const seriesData = useMemo(() => {\n if (!data || data.length === 0) {\n return [];\n }\n return transformToSeriesData(data, color, strokeWidth);\n }, [data, color, strokeWidth]);\n\n // Merge margins with theme defaults\n const finalMargin = useMemo(() => {\n const themeMargin = theme.sparkline?.margin ?? {\n top: 2,\n right: 2,\n bottom: 2,\n left: 2\n };\n const margin = marginProp ?? themeMargin;\n return {\n ...themeMargin,\n ...margin\n };\n }, [marginProp, theme.sparkline?.margin]);\n\n // Build gradient options for the series if custom gradient is provided\n // Note: This must be called before any early returns to follow React hooks rules\n const seriesWithGradient = useMemo(() => {\n if (!gradient || seriesData.length === 0) {\n return seriesData;\n }\n return seriesData.map(series => ({\n ...series,\n options: {\n ...series.options,\n gradient: {\n from: gradient.from || color || '#000000',\n to: gradient.to || '#ffffff',\n fromOpacity: gradient.fromOpacity ?? 0.5,\n toOpacity: gradient.toOpacity ?? 0.0\n }\n }\n }));\n }, [seriesData, gradient, color]);\n\n // Handle empty data\n if (!data || data.length === 0) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: clsx('sparkline', styles.sparkline, styles['sparkline--empty'], className),\n style: {\n width,\n height\n }\n });\n }\n\n // Handle single data point - render a simple dot\n if (data.length === 1) {\n const cx = width / 2;\n const cy = height / 2;\n const resolvedColor = color || '#000000';\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: clsx('sparkline', styles.sparkline, styles['sparkline--single-point'], className),\n style: {\n width,\n height\n },\n children: /*#__PURE__*/_jsx(\"svg\", {\n width: width,\n height: height,\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/_jsx(\"circle\", {\n cx: cx,\n cy: cy,\n r: strokeWidth * 1.5,\n fill: resolvedColor\n })\n })\n });\n }\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: clsx('sparkline', styles.sparkline, className),\n children: /*#__PURE__*/_jsx(LineChartUnresponsive, {\n data: seriesWithGradient,\n width: width,\n height: height,\n margin: finalMargin,\n chartId: chartId,\n withGradientFill: withGradientFill,\n withTooltips: false,\n showLegend: false,\n gridVisibility: \"none\",\n options: {\n axis: {\n x: {\n display: false\n },\n y: {\n display: false\n }\n }\n },\n curveType: \"monotone\",\n animation: animation\n })\n });\n});\nSparklineComponent.displayName = 'SparklineComponent';\n\n/**\n * Sparkline - A minimal line chart for inline data visualization.\n *\n * Sparklines are compact charts designed to be embedded inline with text or\n * displayed in small spaces like table cells or dashboards. They show trends\n * without axes, labels, or other chart chrome.\n *\n * This component is built on top of LineChart with preconfigured settings\n * for minimal display (no axes, grid, tooltips, or legend).\n */\nconst SparklineUnresponsive = SparklineComponent;\nSparklineUnresponsive.displayName = 'SparklineUnresponsive';\n\n/**\n * Responsive Sparkline chart component\n */\nconst Sparkline = withResponsive(SparklineUnresponsive);\nexport { Sparkline as default, SparklineUnresponsive };","import 'css-chunk:src/charts/sparkline/sparkline.module.scss';export default {\n \"sparkline\": \"a8ccharts-o-3Z8B\",\n \"sparkline--empty\": \"a8ccharts-CbLbcd\"\n};"],"mappings":"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","names":[]}
|