@undp/data-viz 2.3.11 → 2.3.12
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/dist/AreaChart.cjs +1 -1
- package/dist/AreaChart.js +1 -1
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.js +4 -4
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.cjs +1 -1
- package/dist/BasicStatCard.js +1 -1
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.js +2 -2
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.cjs.map +1 -1
- package/dist/BiVariateChoroplethMap.js +2 -2
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.cjs.map +1 -1
- package/dist/BulletChart.js +2 -2
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +1 -1
- package/dist/ButterflyChart.cjs.map +1 -1
- package/dist/ButterflyChart.js +39 -39
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.js +2 -2
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.js +2 -2
- package/dist/ColorLegend.cjs +1 -1
- package/dist/ColorLegend.js +1 -1
- package/dist/ColorLegendWithMouseOver.cjs +1 -1
- package/dist/ColorLegendWithMouseOver.js +1 -1
- package/dist/DataCards.cjs +1 -1
- package/dist/DataCards.js +2 -2
- package/dist/DataTable.cjs +1 -1
- package/dist/DataTable.js +1 -1
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.js +1 -1
- package/dist/DonutChart.cjs +1 -1
- package/dist/DonutChart.js +3 -3
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.js +19 -19
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.js +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.js +2 -2
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/{EmptyState-D807L58h.js → EmptyState-B3fPoH6L.js} +2 -2
- package/dist/{EmptyState-D807L58h.js.map → EmptyState-B3fPoH6L.js.map} +1 -1
- package/dist/{EmptyState-N1eHt3vq.cjs → EmptyState-B4c-CrXs.cjs} +2 -2
- package/dist/{EmptyState-N1eHt3vq.cjs.map → EmptyState-B4c-CrXs.cjs.map} +1 -1
- package/dist/FootNote.cjs +1 -1
- package/dist/FootNote.js +1 -1
- package/dist/GeoHubMapWithLayerSelection.cjs +1 -1
- package/dist/GeoHubMapWithLayerSelection.js +1 -1
- package/dist/GraphDescription.cjs +1 -1
- package/dist/GraphDescription.js +1 -1
- package/dist/{GraphEl-DvwOOhF1.cjs → GraphEl-Bgf8w82K.cjs} +2 -2
- package/dist/{GraphEl-DvwOOhF1.cjs.map → GraphEl-Bgf8w82K.cjs.map} +1 -1
- package/dist/{GraphEl-CT3xPv2P.js → GraphEl-CXK-LPsj.js} +3 -3
- package/dist/{GraphEl-CT3xPv2P.js.map → GraphEl-CXK-LPsj.js.map} +1 -1
- package/dist/GraphFooter.cjs +1 -1
- package/dist/GraphFooter.js +1 -1
- package/dist/GraphTitle.cjs +1 -1
- package/dist/GraphTitle.js +1 -1
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.js +1 -1
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.js +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.js +1 -1
- package/dist/HybridMap.cjs +1 -1
- package/dist/HybridMap.cjs.map +1 -1
- package/dist/HybridMap.js +29 -29
- package/dist/HybridMap.js.map +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.js +1 -1
- package/dist/LinearColorLegend.cjs +1 -1
- package/dist/LinearColorLegend.js +1 -1
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.cjs.map +1 -1
- package/dist/MultiLineAltChart.d.ts +2 -0
- package/dist/MultiLineAltChart.js +393 -391
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.js +1 -1
- package/dist/ParetoChart.cjs +1 -1
- package/dist/ParetoChart.js +1 -1
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.js +1 -1
- package/dist/SankeyChart.cjs +1 -1
- package/dist/SankeyChart.js +2 -2
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.cjs.map +1 -1
- package/dist/ScatterPlot.d.ts +2 -0
- package/dist/ScatterPlot.js +439 -437
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.js +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.js +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.cjs +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.js +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.js +1 -1
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.js +1 -1
- package/dist/{Source-24M277ZQ.cjs → Source-BOSAl3UX.cjs} +2 -2
- package/dist/{Source-24M277ZQ.cjs.map → Source-BOSAl3UX.cjs.map} +1 -1
- package/dist/{Source-eILIr4Ov.js → Source-Djkz-7jX.js} +2 -2
- package/dist/{Source-eILIr4Ov.js.map → Source-Djkz-7jX.js.map} +1 -1
- package/dist/Source.cjs +1 -1
- package/dist/Source.js +2 -2
- package/dist/StatCardFromData.cjs +1 -1
- package/dist/StatCardFromData.js +1 -1
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.js +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.js +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.cjs +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.js +1 -1
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.js +2 -2
- package/dist/Typography-CZZxlj1W.cjs +2 -0
- package/dist/Typography-CZZxlj1W.cjs.map +1 -0
- package/dist/{Typography-HicNIA61.js → Typography-DMVW6JnV.js} +67 -60
- package/dist/Typography-DMVW6JnV.js.map +1 -0
- package/dist/UnitChart.cjs +1 -1
- package/dist/UnitChart.js +1 -1
- package/dist/WaterfallChart.cjs +1 -1
- package/dist/WaterfallChart.js +1 -1
- package/dist/{index-B5ggV1vg.js → index-C6VwVS8W.js} +3 -3
- package/dist/{index-B5ggV1vg.js.map → index-C6VwVS8W.js.map} +1 -1
- package/dist/{index-BDR7MlMo.cjs → index-_TlgeI_i.cjs} +2 -2
- package/dist/{index-BDR7MlMo.cjs.map → index-_TlgeI_i.cjs.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -2
- package/dist/style.css +1 -1
- package/package.json +2 -2
- package/dist/Typography-Cc_iHQB-.cjs +0 -2
- package/dist/Typography-Cc_iHQB-.cjs.map +0 -1
- package/dist/Typography-HicNIA61.js.map +0 -1
package/dist/ButterflyChart.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { c as Le, j as i, m as de } from "./index-CHPV5EwG-BCLAYDCV.js";
|
|
2
2
|
import { useRef as pe, useState as Tt, useEffect as ge } from "react";
|
|
3
3
|
import { g as Me, N as Ce } from "./getSliderMarks-vXsR8RrR.js";
|
|
4
|
-
import { f as
|
|
4
|
+
import { f as $e, p as ke } from "./parse-Dv4of-PN.js";
|
|
5
5
|
import { i as ye } from "./index-Bwrro8-q.js";
|
|
6
6
|
import { n as be } from "./numberFormattingFunction-14YCbkN2.js";
|
|
7
|
-
import { T as
|
|
7
|
+
import { T as Ve } from "./Tooltip-CohiIbLZ.js";
|
|
8
8
|
import { X as ve } from "./XTicksAndGridLines-BDmF9etl.js";
|
|
9
9
|
import { A as we } from "./Axis-RyGdzLrG.js";
|
|
10
10
|
import { Y as Ne } from "./YAxesLabels-DoGvgHdw.js";
|
|
@@ -19,7 +19,7 @@ import { GraphFooter as Se } from "./GraphFooter.js";
|
|
|
19
19
|
import { GraphHeader as Fe } from "./GraphHeader.js";
|
|
20
20
|
import { ColorLegend as Ie } from "./ColorLegend.js";
|
|
21
21
|
import { Colors as Be } from "./Colors.js";
|
|
22
|
-
import { E as Ge } from "./EmptyState-
|
|
22
|
+
import { E as Ge } from "./EmptyState-B3fPoH6L.js";
|
|
23
23
|
import { P as Re, e as Pe } from "./index-CZ0elhKR.js";
|
|
24
24
|
import { c as xe } from "./checkIfNullOrUndefined-DmfiKkNw.js";
|
|
25
25
|
import { c as Ee } from "./ensureCompleteData-CDIukSG6.js";
|
|
@@ -74,11 +74,11 @@ function Ye(a) {
|
|
|
74
74
|
left: Kt,
|
|
75
75
|
right: Jt
|
|
76
76
|
}, t[3] = Qt, t[4] = Kt, t[5] = Jt, t[6] = Y, t[7] = Et) : Et = t[7];
|
|
77
|
-
const m = Et, C = L - m.left - m.right,
|
|
78
|
-
let bt, R,
|
|
79
|
-
if (t[8] !== d || t[9] !== f[0] || t[10] !== f[1] || t[11] !== Ft || t[12] !== w || t[13] !== s?.graphObjectValues || t[14] !== s?.xAxis?.gridLines || t[15] !== s?.xAxis?.labels || t[16] !== s?.yAxis?.axis || t[17] !== s?.yAxis?.labels || t[18] !== S || t[19] !== l || t[20] !== T || t[21] !==
|
|
80
|
-
const Zt = l.map(ti), j = De().domain(Zt.map(_e)).range([
|
|
81
|
-
|
|
77
|
+
const m = Et, C = L - m.left - m.right, $ = v - m.top - m.bottom;
|
|
78
|
+
let bt, R, k, z, q, U, J, K, V, A, Q, Z, _, tt;
|
|
79
|
+
if (t[8] !== d || t[9] !== f[0] || t[10] !== f[1] || t[11] !== Ft || t[12] !== w || t[13] !== s?.graphObjectValues || t[14] !== s?.xAxis?.gridLines || t[15] !== s?.xAxis?.labels || t[16] !== s?.yAxis?.axis || t[17] !== s?.yAxis?.labels || t[18] !== S || t[19] !== l || t[20] !== T || t[21] !== $ || t[22] !== C || t[23] !== v || t[24] !== Gt || t[25] !== O || t[26] !== m.bottom || t[27] !== m.left || t[28] !== m.top || t[29] !== mt || t[30] !== jt || t[31] !== F || t[32] !== I || t[33] !== G || t[34] !== It || t[35] !== M || t[36] !== N || t[37] !== ut || t[38] !== pt || t[39] !== xt || t[40] !== h || t[41] !== Mt || t[42] !== Lt || t[43] !== dt || t[44] !== n?.graphObjectValues || t[45] !== n?.xAxis?.gridLines || t[46] !== n?.xAxis?.labels || t[47] !== n?.yAxis?.axis || t[48] !== n?.yAxis?.labels || t[49] !== ht || t[50] !== Y || t[51] !== Bt || t[52] !== L) {
|
|
80
|
+
const Zt = l.map(ti), j = De().domain(Zt.map(_e)).range([$, 0]).paddingInner(Ft), x = je().domain([jt, mt]).range([0, (C - w) / 2]).nice(), D = x.ticks(M), p = je().domain([jt, mt]).range([(C - w) / 2, 0]).nice(), Vt = p.ticks(M);
|
|
81
|
+
k = Dt.svg, _ = `${L}px`, tt = `${v}px`, z = `0 0 ${L} ${v}`, q = "ltr", U = re, V = `translate(${m.left},${m.top})`, t[67] !== S ? (A = S.filter(Ze).map(Qe), t[67] = S, t[68] = A) : A = t[68];
|
|
82
82
|
const c = s?.yAxis?.axis;
|
|
83
83
|
let B;
|
|
84
84
|
t[69] !== c ? (B = {
|
|
@@ -89,7 +89,7 @@ function Ye(a) {
|
|
|
89
89
|
t[71] !== qt ? (Nt = {
|
|
90
90
|
axis: qt
|
|
91
91
|
}, t[71] = qt, t[72] = Nt) : Nt = t[72], Q = /* @__PURE__ */ i.jsxs("g", { transform: "translate(0,0)", children: [
|
|
92
|
-
Lt ? /* @__PURE__ */ i.jsx(ve, { values:
|
|
92
|
+
Lt ? /* @__PURE__ */ i.jsx(ve, { values: Vt.filter(Ke), x: Vt.filter(Je).map((e) => p(e)), y1: 0 - Y, y2: $ + m.bottom, styles: {
|
|
93
93
|
gridLines: n?.xAxis?.gridLines,
|
|
94
94
|
labels: n?.xAxis?.labels
|
|
95
95
|
}, classNames: {
|
|
@@ -151,8 +151,8 @@ function Ye(a) {
|
|
|
151
151
|
}
|
|
152
152
|
}, initial: "initial", animate: O ? "whileInView" : "initial", children: be(e.rightBar, It, pt, xt, ht) }) : null
|
|
153
153
|
] }, e.label)),
|
|
154
|
-
/* @__PURE__ */ i.jsx(we, { hideAxisLine: Gt, y1: -2.5, y2:
|
|
155
|
-
h ? /* @__PURE__ */ i.jsx(i.Fragment, { children: h.map((e, y) => /* @__PURE__ */ i.jsx(Ae, { text: e.text, color: e.color, x: p(e.value), y1: 0 - m.top, y2:
|
|
154
|
+
/* @__PURE__ */ i.jsx(we, { hideAxisLine: Gt, y1: -2.5, y2: $ + m.bottom, x1: p(F < 0 ? 0 : F), x2: p(F < 0 ? 0 : F), classNames: B, styles: Nt }),
|
|
155
|
+
h ? /* @__PURE__ */ i.jsx(i.Fragment, { children: h.map((e, y) => /* @__PURE__ */ i.jsx(Ae, { text: e.text, color: e.color, x: p(e.value), y1: 0 - m.top, y2: $ + m.bottom, textSide: "left", classNames: e.classNames, styles: e.styles, animate: d, isInView: O }, y)) }) : null
|
|
156
156
|
] })
|
|
157
157
|
] });
|
|
158
158
|
const _t = s?.yAxis?.axis;
|
|
@@ -165,7 +165,7 @@ function Ye(a) {
|
|
|
165
165
|
t[75] !== Ot ? (At = {
|
|
166
166
|
axis: Ot
|
|
167
167
|
}, t[75] = Ot, t[76] = At) : At = t[76], Z = /* @__PURE__ */ i.jsxs("g", { transform: `translate(${(C + w) / 2},0)`, children: [
|
|
168
|
-
Lt ? /* @__PURE__ */ i.jsx(ve, { values: D.filter(Ue), x: D.filter(qe).map((e) => x(e)), y1: 0 - Y, y2:
|
|
168
|
+
Lt ? /* @__PURE__ */ i.jsx(ve, { values: D.filter(Ue), x: D.filter(qe).map((e) => x(e)), y1: 0 - Y, y2: $ + m.bottom, styles: {
|
|
169
169
|
gridLines: n?.xAxis?.gridLines,
|
|
170
170
|
labels: n?.xAxis?.labels
|
|
171
171
|
}, classNames: {
|
|
@@ -227,17 +227,17 @@ function Ye(a) {
|
|
|
227
227
|
}
|
|
228
228
|
}, initial: "initial", animate: O ? "whileInView" : "initial", children: be(e.rightBar, It, pt, xt, ht) }) : null
|
|
229
229
|
] }, y)),
|
|
230
|
-
/* @__PURE__ */ i.jsx(we, { hideAxisLine: Gt, y1: -2.5, y2:
|
|
231
|
-
h ? /* @__PURE__ */ i.jsx(i.Fragment, { children: h.map((e, y) => /* @__PURE__ */ i.jsx(Ae, { text: e.text, color: e.color, x: x(e.value), y1: 0 - m.top, y2:
|
|
230
|
+
/* @__PURE__ */ i.jsx(we, { hideAxisLine: Gt, y1: -2.5, y2: $ + m.bottom, x1: x(I < 0 ? 0 : I), x2: x(I < 0 ? 0 : I), classNames: wt, styles: At }),
|
|
231
|
+
h ? /* @__PURE__ */ i.jsx(i.Fragment, { children: h.map((e, y) => /* @__PURE__ */ i.jsx(Ae, { text: e.text, color: e.color, x: x(e.value), y1: 0 - m.top, y2: $ + m.bottom, textSide: "right", classNames: e.classNames, styles: e.styles, animate: d, isInView: O }, y)) }) : null
|
|
232
232
|
] })
|
|
233
|
-
] }), R = he, bt = Dt.g, J = `translate(${C / 2},0)`, K = Zt.map((e, y) => /* @__PURE__ */ i.jsx(Ne, { value: `${e.label}`.length < Bt ? `${e.label}` : `${`${e.label}`.substring(0, Bt)}...`, y: j(`${e.id}`), x: 0 - w / 2, width: w, height: j.bandwidth(), alignment: "center", style: n?.yAxis?.labels, className: s?.yAxis?.labels, animate: d, isInView: O }, y)), t[8] = d, t[9] = f[0], t[10] = f[1], t[11] = Ft, t[12] = w, t[13] = s?.graphObjectValues, t[14] = s?.xAxis?.gridLines, t[15] = s?.xAxis?.labels, t[16] = s?.yAxis?.axis, t[17] = s?.yAxis?.labels, t[18] = S, t[19] = l, t[20] = T, t[21] =
|
|
233
|
+
] }), R = he, bt = Dt.g, J = `translate(${C / 2},0)`, K = Zt.map((e, y) => /* @__PURE__ */ i.jsx(Ne, { value: `${e.label}`.length < Bt ? `${e.label}` : `${`${e.label}`.substring(0, Bt)}...`, y: j(`${e.id}`), x: 0 - w / 2, width: w, height: j.bandwidth(), alignment: "center", style: n?.yAxis?.labels, className: s?.yAxis?.labels, animate: d, isInView: O }, y)), t[8] = d, t[9] = f[0], t[10] = f[1], t[11] = Ft, t[12] = w, t[13] = s?.graphObjectValues, t[14] = s?.xAxis?.gridLines, t[15] = s?.xAxis?.labels, t[16] = s?.yAxis?.axis, t[17] = s?.yAxis?.labels, t[18] = S, t[19] = l, t[20] = T, t[21] = $, t[22] = C, t[23] = v, t[24] = Gt, t[25] = O, t[26] = m.bottom, t[27] = m.left, t[28] = m.top, t[29] = mt, t[30] = jt, t[31] = F, t[32] = I, t[33] = G, t[34] = It, t[35] = M, t[36] = N, t[37] = ut, t[38] = pt, t[39] = xt, t[40] = h, t[41] = Mt, t[42] = Lt, t[43] = dt, t[44] = n?.graphObjectValues, t[45] = n?.xAxis?.gridLines, t[46] = n?.xAxis?.labels, t[47] = n?.yAxis?.axis, t[48] = n?.yAxis?.labels, t[49] = ht, t[50] = Y, t[51] = Bt, t[52] = L, t[53] = bt, t[54] = R, t[55] = k, t[56] = z, t[57] = q, t[58] = U, t[59] = J, t[60] = K, t[61] = V, t[62] = A, t[63] = Q, t[64] = Z, t[65] = _, t[66] = tt;
|
|
234
234
|
} else
|
|
235
|
-
bt = t[53], R = t[54],
|
|
235
|
+
bt = t[53], R = t[54], k = t[55], z = t[56], q = t[57], U = t[58], J = t[59], K = t[60], V = t[61], A = t[62], Q = t[63], Z = t[64], _ = t[65], tt = t[66];
|
|
236
236
|
let P;
|
|
237
237
|
t[77] !== bt || t[78] !== J || t[79] !== K ? (P = /* @__PURE__ */ i.jsx(bt, { transform: J, children: K }), t[77] = bt, t[78] = J, t[79] = K, t[80] = P) : P = t[80];
|
|
238
238
|
let et;
|
|
239
239
|
t[81] !== R || t[82] !== P ? (et = /* @__PURE__ */ i.jsx(R, { children: P }), t[81] = R, t[82] = P, t[83] = et) : et = t[83];
|
|
240
|
-
const Xt = `translate(0,${
|
|
240
|
+
const Xt = `translate(0,${$})`, Ht = n?.yAxis?.title;
|
|
241
241
|
let it;
|
|
242
242
|
t[84] !== f[0] || t[85] !== Ht ? (it = {
|
|
243
243
|
fill: f[0],
|
|
@@ -247,9 +247,9 @@ function Ye(a) {
|
|
|
247
247
|
const Yt = s?.yAxis?.title;
|
|
248
248
|
let E;
|
|
249
249
|
t[87] !== Yt ? (E = de("text-base", Yt), t[87] = Yt, t[88] = E) : E = t[88];
|
|
250
|
-
const
|
|
250
|
+
const $t = C / 2 - w / 2;
|
|
251
251
|
let at;
|
|
252
|
-
t[89] !== ft[0] || t[90] !== it || t[91] !== E || t[92] !==
|
|
252
|
+
t[89] !== ft[0] || t[90] !== it || t[91] !== E || t[92] !== $t ? (at = /* @__PURE__ */ i.jsx("text", { style: it, className: E, x: $t, y: 0, dx: -5, dy: 20, children: ft[0] }), t[89] = ft[0], t[90] = it, t[91] = E, t[92] = $t, t[93] = at) : at = t[93];
|
|
253
253
|
const Wt = n?.yAxis?.title;
|
|
254
254
|
let st;
|
|
255
255
|
t[94] !== f[1] || t[95] !== Wt ? (st = {
|
|
@@ -260,9 +260,9 @@ function Ye(a) {
|
|
|
260
260
|
const zt = s?.yAxis?.title;
|
|
261
261
|
let ot;
|
|
262
262
|
t[97] !== zt ? (ot = de("text-base", zt), t[97] = zt, t[98] = ot) : ot = t[98];
|
|
263
|
-
const
|
|
263
|
+
const kt = C / 2 + w / 2;
|
|
264
264
|
let lt;
|
|
265
|
-
t[99] !== ft[1] || t[100] !== st || t[101] !== ot || t[102] !==
|
|
265
|
+
t[99] !== ft[1] || t[100] !== st || t[101] !== ot || t[102] !== kt ? (lt = /* @__PURE__ */ i.jsx("text", { style: st, className: ot, x: kt, y: 0, dx: 5, dy: 20, children: ft[1] }), t[99] = ft[1], t[100] = st, t[101] = ot, t[102] = kt, t[103] = lt) : lt = t[103];
|
|
266
266
|
let X;
|
|
267
267
|
t[104] !== Xt || t[105] !== at || t[106] !== lt ? (X = /* @__PURE__ */ i.jsxs("g", { transform: Xt, children: [
|
|
268
268
|
at,
|
|
@@ -271,18 +271,18 @@ function Ye(a) {
|
|
|
271
271
|
let nt;
|
|
272
272
|
t[108] !== S ? (nt = S.filter(ze).map(We), t[108] = S, t[109] = nt) : nt = t[109];
|
|
273
273
|
let H;
|
|
274
|
-
t[110] !== et || t[111] !== X || t[112] !== nt || t[113] !==
|
|
274
|
+
t[110] !== et || t[111] !== X || t[112] !== nt || t[113] !== V || t[114] !== A || t[115] !== Q || t[116] !== Z ? (H = /* @__PURE__ */ i.jsxs("g", { transform: V, children: [
|
|
275
275
|
A,
|
|
276
276
|
Q,
|
|
277
277
|
Z,
|
|
278
278
|
et,
|
|
279
279
|
X,
|
|
280
280
|
nt
|
|
281
|
-
] }), t[110] = et, t[111] = X, t[112] = nt, t[113] =
|
|
281
|
+
] }), t[110] = et, t[111] = X, t[112] = nt, t[113] = V, t[114] = A, t[115] = Q, t[116] = Z, t[117] = H) : H = t[117];
|
|
282
282
|
let o;
|
|
283
|
-
t[118] !==
|
|
283
|
+
t[118] !== k || t[119] !== z || t[120] !== q || t[121] !== U || t[122] !== H || t[123] !== _ || t[124] !== tt ? (o = /* @__PURE__ */ i.jsx(k, { width: _, height: tt, viewBox: z, direction: q, ref: U, children: H }), t[118] = k, t[119] = z, t[120] = q, t[121] = U, t[122] = H, t[123] = _, t[124] = tt, t[125] = o) : o = t[125];
|
|
284
284
|
let rt;
|
|
285
|
-
t[126] !== s?.tooltip || t[127] !== u || t[128] !== Pt || t[129] !== Rt || t[130] !== n?.tooltip || t[131] !== St ? (rt = Rt && St && u && Pt ? /* @__PURE__ */ i.jsx(
|
|
285
|
+
t[126] !== s?.tooltip || t[127] !== u || t[128] !== Pt || t[129] !== Rt || t[130] !== n?.tooltip || t[131] !== St ? (rt = Rt && St && u && Pt ? /* @__PURE__ */ i.jsx(Ve, { data: Rt, body: St, xPos: u, yPos: Pt, backgroundStyle: n?.tooltip, className: s?.tooltip }) : null, t[126] = s?.tooltip, t[127] = u, t[128] = Pt, t[129] = Rt, t[130] = n?.tooltip, t[131] = St, t[132] = rt) : rt = t[132];
|
|
286
286
|
let ct;
|
|
287
287
|
t[133] !== s?.modal || t[134] !== T || t[135] !== G ? (ct = T && G !== void 0 ? /* @__PURE__ */ i.jsx(Oe, { body: T, data: G, setData: gt, className: s?.modal }) : null, t[133] = s?.modal, t[134] = T, t[135] = G, t[136] = ct) : ct = t[136];
|
|
288
288
|
let vt;
|
|
@@ -382,15 +382,15 @@ function Ti(a) {
|
|
|
382
382
|
precision: Et,
|
|
383
383
|
customLayers: m,
|
|
384
384
|
timeline: C,
|
|
385
|
-
naLabel:
|
|
385
|
+
naLabel: $,
|
|
386
386
|
hideAxisLine: bt
|
|
387
387
|
} = a;
|
|
388
388
|
let R;
|
|
389
389
|
t[0] !== dt ? (R = dt === void 0 ? [Be.light.categoricalColors.colors[0], Be.light.categoricalColors.colors[1]] : dt, t[0] = dt, t[1] = R) : R = t[1];
|
|
390
|
-
const
|
|
390
|
+
const k = R, z = ft === void 0 ? !1 : ft, q = Jt === void 0 ? 20 : Jt, U = Kt === void 0 ? 20 : Kt, J = Y === void 0 ? 25 : Y, K = Qt === void 0 ? 30 : Qt, V = St === void 0 ? "Right bar graph" : St, A = ut === void 0 ? "Left bar graph" : ut, Q = ht === void 0 ? 0.25 : ht, Z = xt === void 0 ? 999 : xt, _ = T === void 0 ? 100 : T, tt = n === void 0 ? !0 : n;
|
|
391
391
|
let P;
|
|
392
392
|
t[2] !== d ? (P = d === void 0 ? [] : d, t[2] = d, t[3] = P) : P = t[3];
|
|
393
|
-
const et = P, Xt = pt === void 0 ? "" : pt, Ht = S === void 0 ? "" : S, it = F === void 0 ? !0 : F, Yt = I === void 0 ? !1 : I, E = It === void 0 ? !1 : It,
|
|
393
|
+
const et = P, Xt = pt === void 0 ? "" : pt, Ht = S === void 0 ? "" : S, it = F === void 0 ? !0 : F, Yt = I === void 0 ? !1 : I, E = It === void 0 ? !1 : It, $t = Gt === void 0 ? !1 : Gt, at = re === void 0 ? "en" : re, Wt = O === void 0 ? 0 : O, st = Rt === void 0 ? "light" : Rt, zt = G === void 0 ? !0 : G, ot = Pt === void 0 ? 5 : Pt, kt = yt === void 0 ? !1 : yt, lt = Et === void 0 ? 2 : Et;
|
|
394
394
|
let X;
|
|
395
395
|
t[4] !== m ? (X = m === void 0 ? [] : m, t[4] = m, t[5] = X) : X = t[5];
|
|
396
396
|
const nt = X;
|
|
@@ -400,14 +400,14 @@ function Ti(a) {
|
|
|
400
400
|
autoplay: !1,
|
|
401
401
|
showOnlyActiveDate: !0
|
|
402
402
|
} : C, t[6] = C, t[7] = H) : H = t[7];
|
|
403
|
-
const o = H, rt =
|
|
404
|
-
let
|
|
403
|
+
const o = H, rt = $ === void 0 ? "NA" : $, ct = bt === void 0 ? !1 : bt, [vt, Zt] = Tt(0), [j, x] = Tt(0), [D, p] = Tt(o.autoplay);
|
|
404
|
+
let Vt;
|
|
405
405
|
if (t[8] !== l || t[9] !== o.dateFormat) {
|
|
406
406
|
let g;
|
|
407
|
-
t[11] !== o.dateFormat ? (g = (Ut) =>
|
|
407
|
+
t[11] !== o.dateFormat ? (g = (Ut) => ke(`${Ut.date}`, o.dateFormat || "yyyy", /* @__PURE__ */ new Date()).getTime(), t[11] = o.dateFormat, t[12] = g) : g = t[12], Vt = [...new Set(l.filter(ni).map(g))], Vt.sort(li), t[8] = l, t[9] = o.dateFormat, t[10] = Vt;
|
|
408
408
|
} else
|
|
409
|
-
|
|
410
|
-
const c =
|
|
409
|
+
Vt = t[10];
|
|
410
|
+
const c = Vt, [B, qt] = Tt(o.autoplay ? 0 : c.length - 1), Nt = pe(null), _t = pe(null);
|
|
411
411
|
let wt, Ot;
|
|
412
412
|
t[13] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (wt = () => {
|
|
413
413
|
const g = new ResizeObserver((Ut) => {
|
|
@@ -427,13 +427,13 @@ function Ti(a) {
|
|
|
427
427
|
t[20] !== B || t[21] !== y || t[22] !== o.showOnlyActiveDate || t[23] !== c ? (b = Me(c, B, o.showOnlyActiveDate, y), t[20] = B, t[21] = y, t[22] = o.showOnlyActiveDate, t[23] = c, t[24] = b) : b = t[24];
|
|
428
428
|
const ce = b, fe = r?.graphContainer, ue = u?.graphContainer;
|
|
429
429
|
let te;
|
|
430
|
-
t[25] !== r?.description || t[26] !== r?.title || t[27] !== l || t[28] !==
|
|
430
|
+
t[25] !== r?.description || t[26] !== r?.title || t[27] !== l || t[28] !== $t || t[29] !== f || t[30] !== E || t[31] !== L || t[32] !== u?.description || t[33] !== u?.title || t[34] !== h ? (te = L || f || E || $t ? /* @__PURE__ */ i.jsx(Fe, { styles: {
|
|
431
431
|
title: u?.title,
|
|
432
432
|
description: u?.description
|
|
433
433
|
}, classNames: {
|
|
434
434
|
title: r?.title,
|
|
435
435
|
description: r?.description
|
|
436
|
-
}, graphTitle: L, graphDescription: f, width: h, graphDownload: E ? _t : void 0, dataDownload:
|
|
436
|
+
}, graphTitle: L, graphDescription: f, width: h, graphDownload: E ? _t : void 0, dataDownload: $t ? l.map(oi).filter(si).length > 0 ? l.map(ai).filter(ii) : l.filter(ei) : null }) : null, t[25] = r?.description, t[26] = r?.title, t[27] = l, t[28] = $t, t[29] = f, t[30] = E, t[31] = L, t[32] = u?.description, t[33] = u?.title, t[34] = h, t[35] = te) : te = t[35];
|
|
437
437
|
let ee;
|
|
438
438
|
t[36] !== B || t[37] !== ce || t[38] !== D || t[39] !== o.enabled || t[40] !== c ? (ee = o.enabled && c.length > 0 && ce ? /* @__PURE__ */ i.jsxs("div", { className: "flex gap-6 items-center", dir: "ltr", children: [
|
|
439
439
|
/* @__PURE__ */ i.jsx("button", { type: "button", onClick: () => {
|
|
@@ -446,19 +446,19 @@ function Ti(a) {
|
|
|
446
446
|
}, "aria-label": "Time slider. Use arrow keys to adjust selected time period." })
|
|
447
447
|
] }) : null, t[36] = B, t[37] = ce, t[38] = D, t[39] = o.enabled, t[40] = c, t[41] = ee) : ee = t[41];
|
|
448
448
|
let ie;
|
|
449
|
-
t[42] !==
|
|
449
|
+
t[42] !== k || t[43] !== r?.colorLegend || t[44] !== Ct || t[45] !== l.length || t[46] !== A || t[47] !== V || t[48] !== Yt ? (ie = Yt && l.length > 0 ? /* @__PURE__ */ i.jsx(Ie, { colorLegendTitle: Ct, colorDomain: [A, V], colors: k, showNAColor: !1, className: r?.colorLegend }) : null, t[42] = k, t[43] = r?.colorLegend, t[44] = Ct, t[45] = l.length, t[46] = A, t[47] = V, t[48] = Yt, t[49] = ie) : ie = t[49];
|
|
450
450
|
let ae;
|
|
451
451
|
t[50] !== l.length ? (ae = l.length === 0 && /* @__PURE__ */ i.jsx(Ge, {}), t[50] = l.length, t[51] = ae) : ae = t[51];
|
|
452
452
|
let se;
|
|
453
|
-
t[52] !==
|
|
453
|
+
t[52] !== kt || t[53] !== k || t[54] !== Q || t[55] !== K || t[56] !== _ || t[57] !== r || t[58] !== nt || t[59] !== l || t[60] !== gt || t[61] !== ct || t[62] !== B || t[63] !== A || t[64] !== q || t[65] !== s || t[66] !== M || t[67] !== rt || t[68] !== ot || t[69] !== Mt || t[70] !== N || t[71] !== lt || t[72] !== Ht || t[73] !== et || t[74] !== zt || t[75] !== V || t[76] !== U || t[77] !== it || t[78] !== tt || t[79] !== u || t[80] !== Xt || t[81] !== j || t[82] !== vt || t[83] !== o.dateFormat || t[84] !== o.enabled || t[85] !== Ft || t[86] !== J || t[87] !== Z || t[88] !== c ? (se = vt && j && l.length > 0 ? /* @__PURE__ */ i.jsx(Ye, { hideAxisLine: ct, data: Ee(l, o.dateFormat || "yyyy").filter((g) => o.enabled ? `${g.date}` === $e(new Date(c[B]), o.dateFormat || "yyyy") : g), barColors: k, width: vt, centerGap: _, height: j, truncateBy: Z, leftMargin: q, rightMargin: U, topMargin: J, bottomMargin: K, axisTitles: [A, V], tooltip: Ft, onSeriesMouseOver: N, barPadding: Q, refValues: et, maxValue: Math.max(ne(l, "leftBar", M, s).max, ne(l, "rightBar", M, s).max), minValue: Math.min(ne(l, "leftBar", M, s).min, ne(l, "rightBar", M, s).min), minValueLeftBar: ne(l, "leftBar", M, s).min, minValueRightBar: ne(l, "rightBar", M, s).min, showValues: tt, onSeriesMouseClick: Mt, showTicks: it, suffix: Xt, prefix: Ht, resetSelectionOnDoubleClick: zt, detailsOnClick: gt, styles: u, classNames: r, noOfTicks: ot, animate: kt === !0 ? {
|
|
454
454
|
duration: 0.5,
|
|
455
455
|
once: !0,
|
|
456
456
|
amount: 0.5
|
|
457
|
-
} :
|
|
457
|
+
} : kt || {
|
|
458
458
|
duration: 0,
|
|
459
459
|
once: !0,
|
|
460
460
|
amount: 0
|
|
461
|
-
}, precision: lt, customLayers: nt, naLabel: rt }) : null, t[52] =
|
|
461
|
+
}, precision: lt, customLayers: nt, naLabel: rt }) : null, t[52] = kt, t[53] = k, t[54] = Q, t[55] = K, t[56] = _, t[57] = r, t[58] = nt, t[59] = l, t[60] = gt, t[61] = ct, t[62] = B, t[63] = A, t[64] = q, t[65] = s, t[66] = M, t[67] = rt, t[68] = ot, t[69] = Mt, t[70] = N, t[71] = lt, t[72] = Ht, t[73] = et, t[74] = zt, t[75] = V, t[76] = U, t[77] = it, t[78] = tt, t[79] = u, t[80] = Xt, t[81] = j, t[82] = vt, t[83] = o.dateFormat, t[84] = o.enabled, t[85] = Ft, t[86] = J, t[87] = Z, t[88] = c, t[89] = se) : se = t[89];
|
|
462
462
|
let oe;
|
|
463
463
|
t[90] !== ae || t[91] !== se ? (oe = /* @__PURE__ */ i.jsxs(Xe, { ref: Nt, children: [
|
|
464
464
|
ae,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButterflyChart.js","sources":["../src/Components/Graphs/ButterflyChart/Graph.tsx","../src/Components/Graphs/ButterflyChart/index.tsx"],"sourcesContent":["import isEqual from 'fast-deep-equal';\r\nimport { useRef, useState } from 'react';\r\nimport { scaleBand, scaleLinear } from 'd3-scale';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ButterflyChartDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n ReferenceDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { YAxesLabels } from '@/Components/Elements/Axes/YAxesLabels';\r\nimport { RefLineX } from '@/Components/Elements/ReferenceLine';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\n\r\ninterface Props {\r\n data: ButterflyChartDataType[];\r\n barColors: [string, string];\r\n centerGap: number;\r\n refValues: ReferenceDataType[];\r\n axisTitles: [string, string];\r\n width: number;\r\n height: number;\r\n rightMargin: number;\r\n leftMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n maxValue: number;\r\n minValue: number;\r\n barPadding: number;\r\n truncateBy: number;\r\n showValues: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n showTicks: boolean;\r\n suffix: string;\r\n prefix: string;\r\n resetSelectionOnDoubleClick: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n noOfTicks: number;\r\n animate: AnimateDataType;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n minValueLeftBar: number;\r\n minValueRightBar: number;\r\n naLabel: string;\r\n hideAxisLine: boolean;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n width,\r\n height,\r\n barColors,\r\n centerGap,\r\n refValues,\r\n maxValue,\r\n minValue,\r\n showValues,\r\n axisTitles,\r\n rightMargin,\r\n leftMargin,\r\n topMargin,\r\n bottomMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n barPadding,\r\n truncateBy,\r\n onSeriesMouseClick,\r\n showTicks,\r\n suffix,\r\n prefix,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n noOfTicks,\r\n animate,\r\n precision,\r\n customLayers,\r\n minValueLeftBar,\r\n minValueRightBar,\r\n naLabel,\r\n hideAxisLine,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\r\n };\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n const dataWithId = data.map((d, i) => ({ ...d, id: `${i}` }));\r\n const y = scaleBand()\r\n .domain(dataWithId.map(d => `${d.id}`))\r\n .range([graphHeight, 0])\r\n .paddingInner(barPadding);\r\n const xRightBar = scaleLinear()\r\n .domain([minValue, maxValue])\r\n .range([0, (graphWidth - centerGap) / 2])\r\n .nice();\r\n const xRightTicks = xRightBar.ticks(noOfTicks);\r\n const xLeftBar = scaleLinear()\r\n .domain([minValue, maxValue])\r\n .range([(graphWidth - centerGap) / 2, 0])\r\n .nice();\r\n const xLeftTicks = xLeftBar.ticks(noOfTicks);\r\n return (\r\n <>\r\n <motion.svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <g transform={`translate(${0},${0})`}>\r\n {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xLeftTicks.filter(d => d !== 0)}\r\n x={xLeftTicks.filter(d => d !== 0).map(d => xLeftBar(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n leftLabel\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AnimatePresence>\r\n {dataWithId.map((d, i) => {\r\n return (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n opacity={0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n {d.leftBar ? (\r\n <motion.rect\r\n y={y(`${i}`)}\r\n style={{ fill: barColors[0] }}\r\n height={y.bandwidth()}\r\n variants={{\r\n initial: {\r\n x: xLeftBar(0),\r\n width: 0,\r\n },\r\n whileInView: {\r\n x: d.leftBar < 0 ? xLeftBar(0) : xLeftBar(d.leftBar),\r\n width:\r\n d.leftBar < 0\r\n ? xLeftBar(d.leftBar) - xLeftBar(0)\r\n : xLeftBar(0) - xLeftBar(d.leftBar),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n x: xLeftBar(0),\r\n width: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n y={(y(`${i}`) as number) + y.bandwidth() / 2}\r\n style={{\r\n textAnchor: d.rightBar ? (d.rightBar > 0 ? 'end' : 'start') : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n dx={d.rightBar ? (d.rightBar > 0 ? -5 : 5) : 5}\r\n dy='0.33em'\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n x: xLeftBar(0),\r\n opacity: 0,\r\n fill: barColors[0],\r\n },\r\n whileInView: {\r\n x: d.leftBar\r\n ? xLeftBar(d.leftBar)\r\n : xLeftBar(minValueLeftBar < 0 ? 0 : minValueLeftBar),\r\n opacity: 1,\r\n fill: barColors[0],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(d.rightBar, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n );\r\n })}\r\n <Axis\r\n hideAxisLine={hideAxisLine}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n x1={xLeftBar(minValueLeftBar < 0 ? 0 : minValueLeftBar)}\r\n x2={xLeftBar(minValueLeftBar < 0 ? 0 : minValueLeftBar)}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={xLeftBar(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide='left'\r\n classNames={el.classNames}\r\n styles={el.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </>\r\n ) : null}\r\n </AnimatePresence>\r\n </g>\r\n <g transform={`translate(${(graphWidth + centerGap) / 2},${0})`}>\r\n {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xRightTicks.filter(d => d !== 0)}\r\n x={xRightTicks.filter(d => d !== 0).map(d => xRightBar(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AnimatePresence>\r\n {dataWithId.map((d, i) => {\r\n return (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={i}\r\n opacity={0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n {d.rightBar ? (\r\n <motion.rect\r\n y={y(`${i}`)}\r\n style={{ fill: barColors[1] }}\r\n height={y.bandwidth()}\r\n exit={{\r\n x: xRightBar(0),\r\n width: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n x: xRightBar(0),\r\n width: 0,\r\n },\r\n whileInView: {\r\n x: d.rightBar >= 0 ? xRightBar(0) : xRightBar(d.rightBar),\r\n width:\r\n d.rightBar >= 0\r\n ? xRightBar(d.rightBar) - xRightBar(0)\r\n : xRightBar(0) - xRightBar(d.rightBar),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n y={(y(`${i}`) as number) + y.bandwidth() / 2}\r\n style={{\r\n textAnchor: d.rightBar ? (d.rightBar < 0 ? 'end' : 'start') : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dx={d.rightBar ? (d.rightBar < 0 ? -5 : 5) : 5}\r\n dy='0.33em'\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n x: xRightBar(0),\r\n opacity: 0,\r\n fill: barColors[1],\r\n },\r\n whileInView: {\r\n x: d.rightBar\r\n ? xRightBar(d.rightBar)\r\n : xRightBar(minValueRightBar < 0 ? 0 : minValueRightBar),\r\n opacity: 1,\r\n fill: barColors[1],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(d.rightBar, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n );\r\n })}\r\n <Axis\r\n hideAxisLine={hideAxisLine}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n x1={xRightBar(minValueRightBar < 0 ? 0 : minValueRightBar)}\r\n x2={xRightBar(minValueRightBar < 0 ? 0 : minValueRightBar)}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={xRightBar(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide='right'\r\n classNames={el.classNames}\r\n styles={el.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </>\r\n ) : null}\r\n </AnimatePresence>\r\n </g>\r\n <AnimatePresence>\r\n <motion.g transform={`translate(${graphWidth / 2},${0})`}>\r\n {dataWithId.map((d, i) => (\r\n <YAxesLabels\r\n key={i}\r\n value={\r\n `${d.label}`.length < truncateBy\r\n ? `${d.label}`\r\n : `${`${d.label}`.substring(0, truncateBy)}...`\r\n }\r\n y={y(`${d.id}`) as number}\r\n x={0 - centerGap / 2}\r\n width={centerGap}\r\n height={y.bandwidth()}\r\n alignment='center'\r\n style={styles?.yAxis?.labels}\r\n className={classNames?.yAxis?.labels}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </motion.g>\r\n </AnimatePresence>\r\n <g transform={`translate(${0},${graphHeight})`}>\r\n <text\r\n style={{\r\n fill: barColors[0],\r\n textAnchor: 'end',\r\n ...styles?.yAxis?.title,\r\n }}\r\n className={cn('text-base', classNames?.yAxis?.title)}\r\n x={graphWidth / 2 - centerGap / 2}\r\n y={0}\r\n dx={-5}\r\n dy={20}\r\n >\r\n {axisTitles[0]}\r\n </text>\r\n <text\r\n style={{\r\n fill: barColors[1],\r\n textAnchor: 'start',\r\n ...styles?.yAxis?.title,\r\n }}\r\n className={cn('text-base', classNames?.yAxis?.title)}\r\n x={graphWidth / 2 + centerGap / 2}\r\n y={0}\r\n dx={5}\r\n dy={20}\r\n >\r\n {axisTitles[1]}\r\n </text>\r\n </g>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <DetailsModal\r\n body={detailsOnClick}\r\n data={mouseClickData}\r\n setData={setMouseClickData}\r\n className={classNames?.modal}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect, useMemo } from 'react';\r\nimport { SliderUI } from '@undp/design-system-react/SliderUI';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport {\r\n ButterflyChartDataType,\r\n Languages,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { Pause, Play } from '@/Components/Icons';\r\nimport { getSliderMarks } from '@/Utils/getSliderMarks';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { ensureCompleteDataForButterFlyChart } from '@/Utils/ensureCompleteData';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\nfunction getMinMax(\r\n data: ButterflyChartDataType[],\r\n key: 'leftBar' | 'rightBar',\r\n minValue?: number | null,\r\n maxValue?: number | null,\r\n) {\r\n const values = data.map(d => d[key]).filter(v => !checkIfNullOrUndefined(v)) as number[];\r\n\r\n const min = !checkIfNullOrUndefined(minValue)\r\n ? (minValue as number)\r\n : Math.min(...values) >= 0\r\n ? 0\r\n : Math.min(...values);\r\n\r\n const max = !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(...values) < 0\r\n ? 0\r\n : Math.max(...values);\r\n\r\n return { min, max };\r\n}\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: ButterflyChartDataType[];\r\n\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Color for the left and right bars */\r\n barColors?: [string, string];\r\n /** Title for the color legend */\r\n colorLegendTitle?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n /** Padding between bars */\r\n barPadding?: number;\r\n /** Spacing between the left and right bars */\r\n centerGap?: number;\r\n\r\n // Values and Ticks\r\n /** Prefix for values */\r\n prefix?: string;\r\n /** Suffix for values */\r\n suffix?: string;\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n /** Reference values for comparison */\r\n refValues?: ReferenceDataType[];\r\n /** Number of ticks on the axis */\r\n noOfTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Toggle visibility of axis ticks */\r\n showTicks?: boolean;\r\n /** Toggle visibility of axis line for the main axis */\r\n hideAxisLine?: boolean;\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Title for the left bars */\r\n leftBarTitle?: string;\r\n /** Title for the right bars */\r\n rightBarTitle?: string;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Configures playback and slider controls for animating the chart over time. The data must have a key date for it to work properly. */\r\n timeline?: TimelineDataType;\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function ButterflyChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n padding,\r\n barColors = [\r\n Colors.light.categoricalColors.colors[0],\r\n Colors.light.categoricalColors.colors[1],\r\n ],\r\n backgroundColor = false,\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 25,\r\n bottomMargin = 30,\r\n rightBarTitle = 'Right bar graph',\r\n leftBarTitle = 'Left bar graph',\r\n tooltip,\r\n relativeHeight,\r\n onSeriesMouseOver,\r\n graphID,\r\n barPadding = 0.25,\r\n truncateBy = 999,\r\n onSeriesMouseClick,\r\n centerGap = 100,\r\n showValues = true,\r\n maxValue,\r\n minValue,\r\n refValues = [],\r\n suffix = '',\r\n prefix = '',\r\n showTicks = true,\r\n showColorScale = false,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n colorLegendTitle,\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n noOfTicks = 5,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n timeline = { enabled: false, autoplay: false, showOnlyActiveDate: true },\r\n naLabel = 'NA',\r\n hideAxisLine = false,\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [play, setPlay] = useState(timeline.autoplay);\r\n const uniqDatesSorted = useMemo(() => {\r\n const dates = [\r\n ...new Set(\r\n data\r\n .filter(d => d.date)\r\n .map(d => parse(`${d.date}`, timeline.dateFormat || 'yyyy', new Date()).getTime()),\r\n ),\r\n ];\r\n dates.sort((a, b) => a - b);\r\n return dates;\r\n }, [data, timeline.dateFormat]);\r\n const [index, setIndex] = useState(timeline.autoplay ? 0 : uniqDatesSorted.length - 1);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(entries[0].target.clientWidth || 620);\r\n setSvgHeight(entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(\r\n () => {\r\n setIndex(i => (i < uniqDatesSorted.length - 1 ? i + 1 : 0));\r\n },\r\n (timeline.speed || 2) * 1000,\r\n );\r\n if (!play) clearInterval(interval);\r\n return () => clearInterval(interval);\r\n }, [uniqDatesSorted, play, timeline.speed]);\r\n\r\n const markObj = getSliderMarks(\r\n uniqDatesSorted,\r\n index,\r\n timeline.showOnlyActiveDate,\r\n timeline.dateFormat || 'yyyy',\r\n );\r\n\r\n return (\r\n <GraphContainer\r\n className={classNames?.graphContainer}\r\n style={styles?.graphContainer}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={ariaLabel}\r\n backgroundColor={backgroundColor}\r\n theme={theme}\r\n language={language}\r\n minHeight={minHeight}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n padding={padding}\r\n >\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n graphDownload={graphDownload ? graphParentDiv : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n {timeline.enabled && uniqDatesSorted.length > 0 && markObj ? (\r\n <div className='flex gap-6 items-center' dir='ltr'>\r\n <button\r\n type='button'\r\n onClick={() => {\r\n setPlay(!play);\r\n }}\r\n className='p-0 border-0 cursor-pointer bg-transparent'\r\n aria-label={play ? 'Click to pause animation' : 'Click to play animation'}\r\n >\r\n {play ? <Pause /> : <Play />}\r\n </button>\r\n <SliderUI\r\n min={uniqDatesSorted[0]}\r\n max={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n marks={markObj}\r\n step={null}\r\n defaultValue={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n value={uniqDatesSorted[index]}\r\n onChangeComplete={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n onChange={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n aria-label='Time slider. Use arrow keys to adjust selected time period.'\r\n />\r\n </div>\r\n ) : null}\r\n {showColorScale && data.length > 0 ? (\r\n <ColorLegend\r\n colorLegendTitle={colorLegendTitle}\r\n colorDomain={[leftBarTitle, rightBarTitle]}\r\n colors={barColors}\r\n showNAColor={false}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.length === 0 && <EmptyState />}\r\n {svgWidth && svgHeight && data.length > 0 ? (\r\n <Graph\r\n hideAxisLine={hideAxisLine}\r\n data={ensureCompleteDataForButterFlyChart(data, timeline.dateFormat || 'yyyy').filter(\r\n d =>\r\n timeline.enabled\r\n ? d.date ===\r\n format(new Date(uniqDatesSorted[index]), timeline.dateFormat || 'yyyy')\r\n : d,\r\n )}\r\n barColors={barColors}\r\n width={svgWidth}\r\n centerGap={centerGap}\r\n height={svgHeight}\r\n truncateBy={truncateBy}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n axisTitles={[leftBarTitle, rightBarTitle]}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n barPadding={barPadding}\r\n refValues={refValues}\r\n maxValue={Math.max(\r\n getMinMax(data, 'leftBar', minValue, maxValue).max,\r\n getMinMax(data, 'rightBar', minValue, maxValue).max,\r\n )}\r\n minValue={Math.min(\r\n getMinMax(data, 'leftBar', minValue, maxValue).min,\r\n getMinMax(data, 'rightBar', minValue, maxValue).min,\r\n )}\r\n minValueLeftBar={getMinMax(data, 'leftBar', minValue, maxValue).min}\r\n minValueRightBar={getMinMax(data, 'rightBar', minValue, maxValue).min}\r\n showValues={showValues}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n showTicks={showTicks}\r\n suffix={suffix}\r\n prefix={prefix}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n styles={styles}\r\n classNames={classNames}\r\n noOfTicks={noOfTicks}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["Graph","props","$","_c","data","width","height","barColors","centerGap","refValues","maxValue","minValue","showValues","axisTitles","rightMargin","leftMargin","topMargin","bottomMargin","tooltip","onSeriesMouseOver","barPadding","truncateBy","onSeriesMouseClick","showTicks","suffix","prefix","resetSelectionOnDoubleClick","detailsOnClick","styles","classNames","noOfTicks","animate","precision","customLayers","minValueLeftBar","minValueRightBar","naLabel","hideAxisLine","svgRef","useRef","t0","amount","once","isInView","useInView","mouseOverData","setMouseOverData","useState","undefined","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","t1","top","bottom","left","right","margin","graphWidth","graphHeight","T0","T1","T2","t10","t11","t12","t2","t3","t4","t5","t6","t7","t8","t9","graphObjectValues","xAxis","gridLines","labels","yAxis","axis","dataWithId","map","_temp","y","scaleBand","domain","_temp2","range","paddingInner","xRightBar","scaleLinear","nice","xRightTicks","ticks","xLeftBar","xLeftTicks","motion","svg","filter","_temp3","_temp4","t13","t14","t15","t16","jsxs","jsx","XTicksAndGridLines","_temp5","_temp6","d_5","d","AnimatePresence","d_6","i_0","event","clientY","clientX","isEqual","event_0","leftBar","i","fill","bandwidth","initial","x","whileInView","transition","duration","textAnchor","rightBar","cn","opacity","numberFormattingFunction","label","Axis","Fragment","el","i_1","RefLineX","text","color","value","t17","t18","t19","t20","_temp7","_temp8","d_9","d_10","i_2","event_1","event_2","el_0","i_3","g","d_11","i_4","YAxesLabels","length","substring","id","title","t21","t22","t23","t24","t25","t26","t27","t28","t29","_temp9","_temp0","t30","t31","t32","Tooltip","t33","modal","DetailsModal","t34","d_13","layer","d_12","position","d_8","d_7","d_4","d_3","d_2","d_1","d_0","getMinMax","key","values","v","checkIfNullOrUndefined","min","Math","max","ButterflyChart","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","rightBarTitle","leftBarTitle","relativeHeight","graphID","showColorScale","graphDownload","dataDownload","language","colorLegendTitle","minHeight","theme","ariaLabel","timeline","Colors","light","categoricalColors","colors","enabled","autoplay","showOnlyActiveDate","svgWidth","setSvgWidth","svgHeight","setSvgHeight","play","setPlay","dates","dateFormat","parse","date","Date","getTime","Set","sort","uniqDatesSorted","index","setIndex","graphDiv","graphParentDiv","t35","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","t36","t37","speed","interval","setInterval","clearInterval","t38","t39","getSliderMarks","markObj","t40","graphContainer","t41","t42","description","GraphHeader","t43","Pause","Play","SliderUI","nextValue","indexOf","nextValue_0","t44","colorLegend","ColorLegend","t45","EmptyState","t46","ensureCompleteDataForButterFlyChart","format","t47","GraphArea","t48","footnote","source","GraphFooter","t49","GraphContainer","a","b"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ButterflyChart.js","sources":["../src/Components/Graphs/ButterflyChart/Graph.tsx","../src/Components/Graphs/ButterflyChart/index.tsx"],"sourcesContent":["import isEqual from 'fast-deep-equal';\r\nimport { useRef, useState } from 'react';\r\nimport { scaleBand, scaleLinear } from 'd3-scale';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport {\r\n AnimateDataType,\r\n ButterflyChartDataType,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n ReferenceDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { XTicksAndGridLines } from '@/Components/Elements/Axes/XTicksAndGridLines';\r\nimport { Axis } from '@/Components/Elements/Axes/Axis';\r\nimport { YAxesLabels } from '@/Components/Elements/Axes/YAxesLabels';\r\nimport { RefLineX } from '@/Components/Elements/ReferenceLine';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\n\r\ninterface Props {\r\n data: ButterflyChartDataType[];\r\n barColors: [string, string];\r\n centerGap: number;\r\n refValues: ReferenceDataType[];\r\n axisTitles: [string, string];\r\n width: number;\r\n height: number;\r\n rightMargin: number;\r\n leftMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n maxValue: number;\r\n minValue: number;\r\n barPadding: number;\r\n truncateBy: number;\r\n showValues: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n showTicks: boolean;\r\n suffix: string;\r\n prefix: string;\r\n resetSelectionOnDoubleClick: boolean;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n noOfTicks: number;\r\n animate: AnimateDataType;\r\n precision: number;\r\n customLayers: CustomLayerDataType[];\r\n minValueLeftBar: number;\r\n minValueRightBar: number;\r\n naLabel: string;\r\n hideAxisLine: boolean;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n data,\r\n width,\r\n height,\r\n barColors,\r\n centerGap,\r\n refValues,\r\n maxValue,\r\n minValue,\r\n showValues,\r\n axisTitles,\r\n rightMargin,\r\n leftMargin,\r\n topMargin,\r\n bottomMargin,\r\n tooltip,\r\n onSeriesMouseOver,\r\n barPadding,\r\n truncateBy,\r\n onSeriesMouseClick,\r\n showTicks,\r\n suffix,\r\n prefix,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n noOfTicks,\r\n animate,\r\n precision,\r\n customLayers,\r\n minValueLeftBar,\r\n minValueRightBar,\r\n naLabel,\r\n hideAxisLine,\r\n } = props;\r\n const svgRef = useRef(null);\r\n const isInView = useInView(svgRef, {\r\n once: animate.once,\r\n amount: animate.amount,\r\n });\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [mouseClickData, setMouseClickData] = useState<any>(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\r\n };\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n const dataWithId = data.map((d, i) => ({ ...d, id: `${i}` }));\r\n const y = scaleBand()\r\n .domain(dataWithId.map(d => `${d.id}`))\r\n .range([graphHeight, 0])\r\n .paddingInner(barPadding);\r\n const xRightBar = scaleLinear()\r\n .domain([minValue, maxValue])\r\n .range([0, (graphWidth - centerGap) / 2])\r\n .nice();\r\n const xRightTicks = xRightBar.ticks(noOfTicks);\r\n const xLeftBar = scaleLinear()\r\n .domain([minValue, maxValue])\r\n .range([(graphWidth - centerGap) / 2, 0])\r\n .nice();\r\n const xLeftTicks = xLeftBar.ticks(noOfTicks);\r\n return (\r\n <>\r\n <motion.svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`0 0 ${width} ${height}`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n {customLayers.filter(d => d.position === 'before').map(d => d.layer)}\r\n <g transform={`translate(${0},${0})`}>\r\n {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xLeftTicks.filter(d => d !== 0)}\r\n x={xLeftTicks.filter(d => d !== 0).map(d => xLeftBar(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n leftLabel\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AnimatePresence>\r\n {dataWithId.map((d, i) => {\r\n return (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n opacity={0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n {d.leftBar ? (\r\n <motion.rect\r\n y={y(`${i}`)}\r\n style={{ fill: barColors[0] }}\r\n height={y.bandwidth()}\r\n variants={{\r\n initial: {\r\n x: xLeftBar(0),\r\n width: 0,\r\n },\r\n whileInView: {\r\n x: d.leftBar < 0 ? xLeftBar(0) : xLeftBar(d.leftBar),\r\n width:\r\n d.leftBar < 0\r\n ? xLeftBar(d.leftBar) - xLeftBar(0)\r\n : xLeftBar(0) - xLeftBar(d.leftBar),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{\r\n x: xLeftBar(0),\r\n width: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n y={(y(`${i}`) as number) + y.bandwidth() / 2}\r\n style={{\r\n textAnchor: d.rightBar ? (d.rightBar > 0 ? 'end' : 'start') : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n dx={d.rightBar ? (d.rightBar > 0 ? -5 : 5) : 5}\r\n dy='0.33em'\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n x: xLeftBar(0),\r\n opacity: 0,\r\n fill: barColors[0],\r\n },\r\n whileInView: {\r\n x: d.leftBar\r\n ? xLeftBar(d.leftBar)\r\n : xLeftBar(minValueLeftBar < 0 ? 0 : minValueLeftBar),\r\n opacity: 1,\r\n fill: barColors[0],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(d.rightBar, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n );\r\n })}\r\n <Axis\r\n hideAxisLine={hideAxisLine}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n x1={xLeftBar(minValueLeftBar < 0 ? 0 : minValueLeftBar)}\r\n x2={xLeftBar(minValueLeftBar < 0 ? 0 : minValueLeftBar)}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={xLeftBar(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide='left'\r\n classNames={el.classNames}\r\n styles={el.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </>\r\n ) : null}\r\n </AnimatePresence>\r\n </g>\r\n <g transform={`translate(${(graphWidth + centerGap) / 2},${0})`}>\r\n {showTicks ? (\r\n <XTicksAndGridLines\r\n values={xRightTicks.filter(d => d !== 0)}\r\n x={xRightTicks.filter(d => d !== 0).map(d => xRightBar(d))}\r\n y1={0 - topMargin}\r\n y2={graphHeight + margin.bottom}\r\n styles={{\r\n gridLines: styles?.xAxis?.gridLines,\r\n labels: styles?.xAxis?.labels,\r\n }}\r\n classNames={{\r\n gridLines: classNames?.xAxis?.gridLines,\r\n labels: classNames?.xAxis?.labels,\r\n }}\r\n suffix={suffix}\r\n prefix={prefix}\r\n labelType='secondary'\r\n showGridLines\r\n precision={precision}\r\n />\r\n ) : null}\r\n <AnimatePresence>\r\n {dataWithId.map((d, i) => {\r\n return (\r\n <motion.g\r\n className='undp-viz-g-with-hover'\r\n key={i}\r\n opacity={0.85}\r\n onMouseEnter={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n }}\r\n onClick={() => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (isEqual(mouseClickData, d) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n }}\r\n onMouseLeave={() => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n }}\r\n >\r\n {d.rightBar ? (\r\n <motion.rect\r\n y={y(`${i}`)}\r\n style={{ fill: barColors[1] }}\r\n height={y.bandwidth()}\r\n exit={{\r\n x: xRightBar(0),\r\n width: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n x: xRightBar(0),\r\n width: 0,\r\n },\r\n whileInView: {\r\n x: d.rightBar >= 0 ? xRightBar(0) : xRightBar(d.rightBar),\r\n width:\r\n d.rightBar >= 0\r\n ? xRightBar(d.rightBar) - xRightBar(0)\r\n : xRightBar(0) - xRightBar(d.rightBar),\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n />\r\n ) : null}\r\n {showValues ? (\r\n <motion.text\r\n y={(y(`${i}`) as number) + y.bandwidth() / 2}\r\n style={{\r\n textAnchor: d.rightBar ? (d.rightBar < 0 ? 'end' : 'start') : 'start',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n className={cn('graph-value text-sm', classNames?.graphObjectValues)}\r\n dx={d.rightBar ? (d.rightBar < 0 ? -5 : 5) : 5}\r\n dy='0.33em'\r\n exit={{\r\n opacity: 0,\r\n transition: { duration: animate.duration },\r\n }}\r\n variants={{\r\n initial: {\r\n x: xRightBar(0),\r\n opacity: 0,\r\n fill: barColors[1],\r\n },\r\n whileInView: {\r\n x: d.rightBar\r\n ? xRightBar(d.rightBar)\r\n : xRightBar(minValueRightBar < 0 ? 0 : minValueRightBar),\r\n opacity: 1,\r\n fill: barColors[1],\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n >\r\n {numberFormattingFunction(d.rightBar, naLabel, precision, prefix, suffix)}\r\n </motion.text>\r\n ) : null}\r\n </motion.g>\r\n );\r\n })}\r\n <Axis\r\n hideAxisLine={hideAxisLine}\r\n y1={-2.5}\r\n y2={graphHeight + margin.bottom}\r\n x1={xRightBar(minValueRightBar < 0 ? 0 : minValueRightBar)}\r\n x2={xRightBar(minValueRightBar < 0 ? 0 : minValueRightBar)}\r\n classNames={{ axis: classNames?.yAxis?.axis }}\r\n styles={{ axis: styles?.yAxis?.axis }}\r\n />\r\n {refValues ? (\r\n <>\r\n {refValues.map((el, i) => (\r\n <RefLineX\r\n key={i}\r\n text={el.text}\r\n color={el.color}\r\n x={xRightBar(el.value as number)}\r\n y1={0 - margin.top}\r\n y2={graphHeight + margin.bottom}\r\n textSide='right'\r\n classNames={el.classNames}\r\n styles={el.styles}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </>\r\n ) : null}\r\n </AnimatePresence>\r\n </g>\r\n <AnimatePresence>\r\n <motion.g transform={`translate(${graphWidth / 2},${0})`}>\r\n {dataWithId.map((d, i) => (\r\n <YAxesLabels\r\n key={i}\r\n value={\r\n `${d.label}`.length < truncateBy\r\n ? `${d.label}`\r\n : `${`${d.label}`.substring(0, truncateBy)}...`\r\n }\r\n y={y(`${d.id}`) as number}\r\n x={0 - centerGap / 2}\r\n width={centerGap}\r\n height={y.bandwidth()}\r\n alignment='center'\r\n style={styles?.yAxis?.labels}\r\n className={classNames?.yAxis?.labels}\r\n animate={animate}\r\n isInView={isInView}\r\n />\r\n ))}\r\n </motion.g>\r\n </AnimatePresence>\r\n <g transform={`translate(${0},${graphHeight})`}>\r\n <text\r\n style={{\r\n fill: barColors[0],\r\n textAnchor: 'end',\r\n ...styles?.yAxis?.title,\r\n }}\r\n className={cn('text-base', classNames?.yAxis?.title)}\r\n x={graphWidth / 2 - centerGap / 2}\r\n y={0}\r\n dx={-5}\r\n dy={20}\r\n >\r\n {axisTitles[0]}\r\n </text>\r\n <text\r\n style={{\r\n fill: barColors[1],\r\n textAnchor: 'start',\r\n ...styles?.yAxis?.title,\r\n }}\r\n className={cn('text-base', classNames?.yAxis?.title)}\r\n x={graphWidth / 2 + centerGap / 2}\r\n y={0}\r\n dx={5}\r\n dy={20}\r\n >\r\n {axisTitles[1]}\r\n </text>\r\n </g>\r\n {customLayers.filter(d => d.position === 'after').map(d => d.layer)}\r\n </g>\r\n </motion.svg>\r\n {mouseOverData && tooltip && eventX && eventY ? (\r\n <Tooltip\r\n data={mouseOverData}\r\n body={tooltip}\r\n xPos={eventX}\r\n yPos={eventY}\r\n backgroundStyle={styles?.tooltip}\r\n className={classNames?.tooltip}\r\n />\r\n ) : null}\r\n {detailsOnClick && mouseClickData !== undefined ? (\r\n <DetailsModal\r\n body={detailsOnClick}\r\n data={mouseClickData}\r\n setData={setMouseClickData}\r\n className={classNames?.modal}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n}\r\n","import { useState, useRef, useEffect, useMemo } from 'react';\r\nimport { SliderUI } from '@undp/design-system-react/SliderUI';\r\nimport { format } from 'date-fns/format';\r\nimport { parse } from 'date-fns/parse';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport {\r\n ButterflyChartDataType,\r\n Languages,\r\n ReferenceDataType,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n CustomLayerDataType,\r\n AnimateDataType,\r\n TimelineDataType,\r\n} from '@/Types';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { Pause, Play } from '@/Components/Icons';\r\nimport { getSliderMarks } from '@/Utils/getSliderMarks';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { ensureCompleteDataForButterFlyChart } from '@/Utils/ensureCompleteData';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\nfunction getMinMax(\r\n data: ButterflyChartDataType[],\r\n key: 'leftBar' | 'rightBar',\r\n minValue?: number | null,\r\n maxValue?: number | null,\r\n) {\r\n const values = data.map(d => d[key]).filter(v => !checkIfNullOrUndefined(v)) as number[];\r\n\r\n const min = !checkIfNullOrUndefined(minValue)\r\n ? (minValue as number)\r\n : Math.min(...values) >= 0\r\n ? 0\r\n : Math.min(...values);\r\n\r\n const max = !checkIfNullOrUndefined(maxValue)\r\n ? (maxValue as number)\r\n : Math.max(...values) < 0\r\n ? 0\r\n : Math.max(...values);\r\n\r\n return { min, max };\r\n}\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: ButterflyChartDataType[];\r\n\r\n // Titles, Labels, and Sources\r\n /** Title of the graph */\r\n graphTitle?: string | React.ReactNode;\r\n /** Description of the graph */\r\n graphDescription?: string | React.ReactNode;\r\n /** Footnote for the graph */\r\n footNote?: string | React.ReactNode;\r\n /** Source data for the graph */\r\n sources?: SourcesDataType[];\r\n /** Accessibility label */\r\n ariaLabel?: string;\r\n\r\n // Colors and Styling\r\n /** Color for the left and right bars */\r\n barColors?: [string, string];\r\n /** Title for the color legend */\r\n colorLegendTitle?: string;\r\n /** Background color of the graph */\r\n backgroundColor?: string | boolean;\r\n /** Custom styles for the graph. Each object should be a valid React CSS style object. */\r\n styles?: StyleObject;\r\n /** Custom class names */\r\n classNames?: ClassNameObject;\r\n\r\n // Size and Spacing\r\n /** Width of the graph */\r\n width?: number;\r\n /** Height of the graph */\r\n height?: number;\r\n /** Minimum height of the graph */\r\n minHeight?: number;\r\n /** Relative height scaling factor. This overwrites the height props */\r\n relativeHeight?: number;\r\n /** Padding around the graph. Defaults to 0 if no backgroundColor is mentioned else defaults to 1rem */\r\n padding?: string;\r\n /** Left margin of the graph */\r\n leftMargin?: number;\r\n /** Right margin of the graph */\r\n rightMargin?: number;\r\n /** Top margin of the graph */\r\n topMargin?: number;\r\n /** Bottom margin of the graph */\r\n bottomMargin?: number;\r\n /** Padding between bars */\r\n barPadding?: number;\r\n /** Spacing between the left and right bars */\r\n centerGap?: number;\r\n\r\n // Values and Ticks\r\n /** Prefix for values */\r\n prefix?: string;\r\n /** Suffix for values */\r\n suffix?: string;\r\n /** Maximum value for the chart */\r\n maxValue?: number;\r\n /** Minimum value for the chart */\r\n minValue?: number;\r\n /** Truncate labels by specified length */\r\n truncateBy?: number;\r\n /** Reference values for comparison */\r\n refValues?: ReferenceDataType[];\r\n /** Number of ticks on the axis */\r\n noOfTicks?: number;\r\n\r\n // Graph Parameters\r\n /** Toggle visibility of values */\r\n showValues?: boolean;\r\n /** Toggle visibility of axis ticks */\r\n showTicks?: boolean;\r\n /** Toggle visibility of axis line for the main axis */\r\n hideAxisLine?: boolean;\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Title for the left bars */\r\n leftBarTitle?: string;\r\n /** Title for the right bars */\r\n rightBarTitle?: string;\r\n /** Defines how “NA” values should be displayed/labelled in the graph */\r\n naLabel?: string;\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Optional SVG <g> element or function that renders custom content behind or in front of the graph. */\r\n customLayers?: CustomLayerDataType[];\r\n /** Configures playback and slider controls for animating the chart over time. The data must have a key date for it to work properly. */\r\n timeline?: TimelineDataType;\r\n /** Enable graph download option as png */\r\n graphDownload?: boolean;\r\n /** Enable data download option as a csv */\r\n dataDownload?: boolean;\r\n /** Reset selection on double-click. Only applicable when used in a dashboard context with filters. */\r\n resetSelectionOnDoubleClick?: boolean;\r\n\r\n // Interactions and Callbacks\r\n /** Tooltip content. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n /** Details displayed on the modal when user clicks of a data point. If the type is string then this uses the [handlebar](../?path=/docs/misc-handlebars-templates-and-custom-helpers--docs) template to display the data */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n /** Callback for mouse over event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseOver?: (_d: any) => void;\r\n /** Callback for mouse click event */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n\r\n // Configuration and Options\r\n /** Language setting */\r\n language?: Languages;\r\n /** Color theme */\r\n theme?: 'light' | 'dark';\r\n /** Unique ID for the graph */\r\n graphID?: string;\r\n}\r\n\r\nexport function ButterflyChart(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n sources,\r\n graphDescription,\r\n height,\r\n width,\r\n footNote,\r\n padding,\r\n barColors = [\r\n Colors.light.categoricalColors.colors[0],\r\n Colors.light.categoricalColors.colors[1],\r\n ],\r\n backgroundColor = false,\r\n leftMargin = 20,\r\n rightMargin = 20,\r\n topMargin = 25,\r\n bottomMargin = 30,\r\n rightBarTitle = 'Right bar graph',\r\n leftBarTitle = 'Left bar graph',\r\n tooltip,\r\n relativeHeight,\r\n onSeriesMouseOver,\r\n graphID,\r\n barPadding = 0.25,\r\n truncateBy = 999,\r\n onSeriesMouseClick,\r\n centerGap = 100,\r\n showValues = true,\r\n maxValue,\r\n minValue,\r\n refValues = [],\r\n suffix = '',\r\n prefix = '',\r\n showTicks = true,\r\n showColorScale = false,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n colorLegendTitle,\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n noOfTicks = 5,\r\n animate = false,\r\n precision = 2,\r\n customLayers = [],\r\n timeline = { enabled: false, autoplay: false, showOnlyActiveDate: true },\r\n naLabel = 'NA',\r\n hideAxisLine = false,\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [play, setPlay] = useState(timeline.autoplay);\r\n const uniqDatesSorted = useMemo(() => {\r\n const dates = [\r\n ...new Set(\r\n data\r\n .filter(d => d.date)\r\n .map(d => parse(`${d.date}`, timeline.dateFormat || 'yyyy', new Date()).getTime()),\r\n ),\r\n ];\r\n dates.sort((a, b) => a - b);\r\n return dates;\r\n }, [data, timeline.dateFormat]);\r\n const [index, setIndex] = useState(timeline.autoplay ? 0 : uniqDatesSorted.length - 1);\r\n\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const resizeObserver = new ResizeObserver(entries => {\r\n setSvgWidth(entries[0].target.clientWidth || 620);\r\n setSvgHeight(entries[0].target.clientHeight || 480);\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(\r\n () => {\r\n setIndex(i => (i < uniqDatesSorted.length - 1 ? i + 1 : 0));\r\n },\r\n (timeline.speed || 2) * 1000,\r\n );\r\n if (!play) clearInterval(interval);\r\n return () => clearInterval(interval);\r\n }, [uniqDatesSorted, play, timeline.speed]);\r\n\r\n const markObj = getSliderMarks(\r\n uniqDatesSorted,\r\n index,\r\n timeline.showOnlyActiveDate,\r\n timeline.dateFormat || 'yyyy',\r\n );\r\n\r\n return (\r\n <GraphContainer\r\n className={classNames?.graphContainer}\r\n style={styles?.graphContainer}\r\n id={graphID}\r\n ref={graphParentDiv}\r\n aria-label={ariaLabel}\r\n backgroundColor={backgroundColor}\r\n theme={theme}\r\n language={language}\r\n minHeight={minHeight}\r\n width={width}\r\n height={height}\r\n relativeHeight={relativeHeight}\r\n padding={padding}\r\n >\r\n {graphTitle || graphDescription || graphDownload || dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: styles?.title,\r\n description: styles?.description,\r\n }}\r\n classNames={{\r\n title: classNames?.title,\r\n description: classNames?.description,\r\n }}\r\n graphTitle={graphTitle}\r\n graphDescription={graphDescription}\r\n width={width}\r\n graphDownload={graphDownload ? graphParentDiv : undefined}\r\n dataDownload={\r\n dataDownload\r\n ? data.map(d => d.data).filter(d => d !== undefined).length > 0\r\n ? data.map(d => d.data).filter(d => d !== undefined)\r\n : data.filter(d => d !== undefined)\r\n : null\r\n }\r\n />\r\n ) : null}\r\n {timeline.enabled && uniqDatesSorted.length > 0 && markObj ? (\r\n <div className='flex gap-6 items-center' dir='ltr'>\r\n <button\r\n type='button'\r\n onClick={() => {\r\n setPlay(!play);\r\n }}\r\n className='p-0 border-0 cursor-pointer bg-transparent'\r\n aria-label={play ? 'Click to pause animation' : 'Click to play animation'}\r\n >\r\n {play ? <Pause /> : <Play />}\r\n </button>\r\n <SliderUI\r\n min={uniqDatesSorted[0]}\r\n max={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n marks={markObj}\r\n step={null}\r\n defaultValue={uniqDatesSorted[uniqDatesSorted.length - 1]}\r\n value={uniqDatesSorted[index]}\r\n onChangeComplete={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n onChange={nextValue => {\r\n setIndex(uniqDatesSorted.indexOf(nextValue as number));\r\n }}\r\n aria-label='Time slider. Use arrow keys to adjust selected time period.'\r\n />\r\n </div>\r\n ) : null}\r\n {showColorScale && data.length > 0 ? (\r\n <ColorLegend\r\n colorLegendTitle={colorLegendTitle}\r\n colorDomain={[leftBarTitle, rightBarTitle]}\r\n colors={barColors}\r\n showNAColor={false}\r\n className={classNames?.colorLegend}\r\n />\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.length === 0 && <EmptyState />}\r\n {svgWidth && svgHeight && data.length > 0 ? (\r\n <Graph\r\n hideAxisLine={hideAxisLine}\r\n data={ensureCompleteDataForButterFlyChart(data, timeline.dateFormat || 'yyyy').filter(\r\n d =>\r\n timeline.enabled\r\n ? `${d.date}` ===\r\n format(new Date(uniqDatesSorted[index]), timeline.dateFormat || 'yyyy')\r\n : d,\r\n )}\r\n barColors={barColors}\r\n width={svgWidth}\r\n centerGap={centerGap}\r\n height={svgHeight}\r\n truncateBy={truncateBy}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n axisTitles={[leftBarTitle, rightBarTitle]}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n barPadding={barPadding}\r\n refValues={refValues}\r\n maxValue={Math.max(\r\n getMinMax(data, 'leftBar', minValue, maxValue).max,\r\n getMinMax(data, 'rightBar', minValue, maxValue).max,\r\n )}\r\n minValue={Math.min(\r\n getMinMax(data, 'leftBar', minValue, maxValue).min,\r\n getMinMax(data, 'rightBar', minValue, maxValue).min,\r\n )}\r\n minValueLeftBar={getMinMax(data, 'leftBar', minValue, maxValue).min}\r\n minValueRightBar={getMinMax(data, 'rightBar', minValue, maxValue).min}\r\n showValues={showValues}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n showTicks={showTicks}\r\n suffix={suffix}\r\n prefix={prefix}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n styles={styles}\r\n classNames={classNames}\r\n noOfTicks={noOfTicks}\r\n animate={\r\n animate === true\r\n ? { duration: 0.5, once: true, amount: 0.5 }\r\n : animate || { duration: 0, once: true, amount: 0 }\r\n }\r\n precision={precision}\r\n customLayers={customLayers}\r\n naLabel={naLabel}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n {sources || footNote ? (\r\n <GraphFooter\r\n styles={{ footnote: styles?.footnote, source: styles?.source }}\r\n classNames={{\r\n footnote: classNames?.footnote,\r\n source: classNames?.source,\r\n }}\r\n sources={sources}\r\n footNote={footNote}\r\n width={width}\r\n />\r\n ) : null}\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["Graph","props","$","_c","data","width","height","barColors","centerGap","refValues","maxValue","minValue","showValues","axisTitles","rightMargin","leftMargin","topMargin","bottomMargin","tooltip","onSeriesMouseOver","barPadding","truncateBy","onSeriesMouseClick","showTicks","suffix","prefix","resetSelectionOnDoubleClick","detailsOnClick","styles","classNames","noOfTicks","animate","precision","customLayers","minValueLeftBar","minValueRightBar","naLabel","hideAxisLine","svgRef","useRef","t0","amount","once","isInView","useInView","mouseOverData","setMouseOverData","useState","undefined","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","t1","top","bottom","left","right","margin","graphWidth","graphHeight","T0","T1","T2","t10","t11","t12","t2","t3","t4","t5","t6","t7","t8","t9","graphObjectValues","xAxis","gridLines","labels","yAxis","axis","dataWithId","map","_temp","y","scaleBand","domain","_temp2","range","paddingInner","xRightBar","scaleLinear","nice","xRightTicks","ticks","xLeftBar","xLeftTicks","motion","svg","filter","_temp3","_temp4","t13","t14","t15","t16","jsxs","jsx","XTicksAndGridLines","_temp5","_temp6","d_5","d","AnimatePresence","d_6","i_0","event","clientY","clientX","isEqual","event_0","leftBar","i","fill","bandwidth","initial","x","whileInView","transition","duration","textAnchor","rightBar","cn","opacity","numberFormattingFunction","label","Axis","Fragment","el","i_1","RefLineX","text","color","value","t17","t18","t19","t20","_temp7","_temp8","d_9","d_10","i_2","event_1","event_2","el_0","i_3","g","d_11","i_4","YAxesLabels","length","substring","id","title","t21","t22","t23","t24","t25","t26","t27","t28","t29","_temp9","_temp0","t30","t31","t32","Tooltip","t33","modal","DetailsModal","t34","d_13","layer","d_12","position","d_8","d_7","d_4","d_3","d_2","d_1","d_0","getMinMax","key","values","v","checkIfNullOrUndefined","min","Math","max","ButterflyChart","graphTitle","sources","graphDescription","footNote","padding","backgroundColor","rightBarTitle","leftBarTitle","relativeHeight","graphID","showColorScale","graphDownload","dataDownload","language","colorLegendTitle","minHeight","theme","ariaLabel","timeline","Colors","light","categoricalColors","colors","enabled","autoplay","showOnlyActiveDate","svgWidth","setSvgWidth","svgHeight","setSvgHeight","play","setPlay","dates","dateFormat","parse","date","Date","getTime","Set","sort","uniqDatesSorted","index","setIndex","graphDiv","graphParentDiv","t35","Symbol","for","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","useEffect","t36","t37","speed","interval","setInterval","clearInterval","t38","t39","getSliderMarks","markObj","t40","graphContainer","t41","t42","description","GraphHeader","t43","Pause","Play","SliderUI","nextValue","indexOf","nextValue_0","t44","colorLegend","ColorLegend","t45","EmptyState","t46","ensureCompleteDataForButterFlyChart","format","t47","GraphArea","t48","footnote","source","GraphFooter","t49","GraphContainer","a","b"],"mappings":"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"}
|