@undp/data-viz 2.3.19 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/BarGraph.cjs +1 -1
  2. package/dist/BarGraph.cjs.map +1 -1
  3. package/dist/BarGraph.js +1360 -1363
  4. package/dist/BarGraph.js.map +1 -1
  5. package/dist/BeeSwarmChart.cjs +1 -1
  6. package/dist/BeeSwarmChart.cjs.map +1 -1
  7. package/dist/BeeSwarmChart.js +302 -305
  8. package/dist/BeeSwarmChart.js.map +1 -1
  9. package/dist/BiVariateChoroplethMap.cjs +1 -1
  10. package/dist/BiVariateChoroplethMap.cjs.map +1 -1
  11. package/dist/BiVariateChoroplethMap.js +4 -4
  12. package/dist/BiVariateChoroplethMap.js.map +1 -1
  13. package/dist/BulletChart.cjs +1 -1
  14. package/dist/BulletChart.cjs.map +1 -1
  15. package/dist/BulletChart.js +591 -594
  16. package/dist/BulletChart.js.map +1 -1
  17. package/dist/ChoroplethMap.cjs +1 -1
  18. package/dist/ChoroplethMap.cjs.map +1 -1
  19. package/dist/ChoroplethMap.js +4 -4
  20. package/dist/ChoroplethMap.js.map +1 -1
  21. package/dist/CirclePackingGraph.cjs +1 -1
  22. package/dist/CirclePackingGraph.js +1 -1
  23. package/dist/DotDensityMap.cjs +1 -1
  24. package/dist/DotDensityMap.cjs.map +1 -1
  25. package/dist/DotDensityMap.js +255 -258
  26. package/dist/DotDensityMap.js.map +1 -1
  27. package/dist/DumbbellChart.cjs +1 -1
  28. package/dist/DumbbellChart.cjs.map +1 -1
  29. package/dist/DumbbellChart.js +553 -556
  30. package/dist/DumbbellChart.js.map +1 -1
  31. package/dist/{GraphEl-Dorm_qQE.js → GraphEl-B73N4RIA.js} +2 -2
  32. package/dist/{GraphEl-Dorm_qQE.js.map → GraphEl-B73N4RIA.js.map} +1 -1
  33. package/dist/{GraphEl-D8WRC8-j.cjs → GraphEl-Lt1og0C-.cjs} +2 -2
  34. package/dist/{GraphEl-D8WRC8-j.cjs.map → GraphEl-Lt1og0C-.cjs.map} +1 -1
  35. package/dist/GriddedGraphs.cjs +1 -1
  36. package/dist/GriddedGraphs.js +1 -1
  37. package/dist/Histogram.cjs +1 -1
  38. package/dist/Histogram.js +1 -1
  39. package/dist/HybridMap.cjs +1 -1
  40. package/dist/HybridMap.cjs.map +1 -1
  41. package/dist/HybridMap.js +310 -313
  42. package/dist/HybridMap.js.map +1 -1
  43. package/dist/MultiLineAltChart.cjs +1 -1
  44. package/dist/MultiLineAltChart.cjs.map +1 -1
  45. package/dist/MultiLineAltChart.js +269 -272
  46. package/dist/MultiLineAltChart.js.map +1 -1
  47. package/dist/MultiLineChart.cjs +1 -1
  48. package/dist/MultiLineChart.cjs.map +1 -1
  49. package/dist/MultiLineChart.js +319 -322
  50. package/dist/MultiLineChart.js.map +1 -1
  51. package/dist/RadarChart.cjs +1 -1
  52. package/dist/RadarChart.cjs.map +1 -1
  53. package/dist/RadarChart.js +3 -3
  54. package/dist/RadarChart.js.map +1 -1
  55. package/dist/SankeyChart.cjs +1 -1
  56. package/dist/SankeyChart.cjs.map +1 -1
  57. package/dist/SankeyChart.js +274 -280
  58. package/dist/SankeyChart.js.map +1 -1
  59. package/dist/ScatterPlot.cjs +1 -1
  60. package/dist/ScatterPlot.cjs.map +1 -1
  61. package/dist/ScatterPlot.js +341 -344
  62. package/dist/ScatterPlot.js.map +1 -1
  63. package/dist/SingleGraphDashboard.cjs +1 -1
  64. package/dist/SingleGraphDashboard.js +1 -1
  65. package/dist/SlopeChart.cjs +1 -1
  66. package/dist/SlopeChart.cjs.map +1 -1
  67. package/dist/SlopeChart.js +251 -254
  68. package/dist/SlopeChart.js.map +1 -1
  69. package/dist/StripChart.cjs +1 -1
  70. package/dist/StripChart.cjs.map +1 -1
  71. package/dist/StripChart.js +292 -295
  72. package/dist/StripChart.js.map +1 -1
  73. package/dist/ThreeDGlobe.cjs +1 -1
  74. package/dist/ThreeDGlobe.cjs.map +1 -1
  75. package/dist/ThreeDGlobe.js +3 -3
  76. package/dist/ThreeDGlobe.js.map +1 -1
  77. package/dist/TreeMapGraph.cjs +1 -1
  78. package/dist/TreeMapGraph.cjs.map +1 -1
  79. package/dist/TreeMapGraph.js +196 -199
  80. package/dist/TreeMapGraph.js.map +1 -1
  81. package/dist/WaterfallChart.cjs +1 -1
  82. package/dist/WaterfallChart.cjs.map +1 -1
  83. package/dist/WaterfallChart.js +274 -277
  84. package/dist/WaterfallChart.js.map +1 -1
  85. package/dist/index-B0Awa_de.js +377 -0
  86. package/dist/index-B0Awa_de.js.map +1 -0
  87. package/dist/index-CP8cmNzt.cjs +2 -0
  88. package/dist/index-CP8cmNzt.cjs.map +1 -0
  89. package/dist/index.cjs +1 -1
  90. package/dist/index.js +1 -1
  91. package/package.json +1 -1
  92. package/dist/index-Bdo_HXb_.cjs +0 -2
  93. package/dist/index-Bdo_HXb_.cjs.map +0 -1
  94. package/dist/index-CGrBpeUa.js +0 -380
  95. package/dist/index-CGrBpeUa.js.map +0 -1
@@ -1,380 +0,0 @@
1
- import { c as Ft, j as v, m as qt } from "./index-CHPV5EwG-BzibaIRc.js";
2
- import { useRef as Pt, useState as it, useEffect as Xt } from "react";
3
- import { o as It } from "./index-BZQYSqar.js";
4
- import { w as Ut } from "./Spinner-B2IIKg9r.js";
5
- import { _ as Wt } from "./Typography-BO0gQDIT.js";
6
- import { T as Jt } from "./Tooltip-Bj-s__cI.js";
7
- import { n as Kt } from "./numberFormattingFunction-DqMf_v1m.js";
8
- import { g as Yt } from "./getTextColorBasedOnBgColor-CDY808zi.js";
9
- import { Colors as At } from "./Colors.js";
10
- import { c as Rt } from "./checkIfNullOrUndefined-DmfiKkNw.js";
11
- import { D as Qt } from "./DetailsModal-B2XBWR7w.js";
12
- import { s as Zt } from "./pow-BXYLJHCq.js";
13
- import { f as _t, b as te, a as ee, c as oe, d as ne } from "./y-BqfogMAB.js";
14
- import { GraphFooter as ie } from "./GraphFooter.js";
15
- import { GraphHeader as re } from "./GraphHeader.js";
16
- import { ColorLegendWithMouseOver as le } from "./ColorLegendWithMouseOver.js";
17
- import { E as se } from "./EmptyState-CaxXCkiN.js";
18
- import { u as Tt } from "./uniqBy-BHy4I8PK.js";
19
- import { a as ae, G as ce } from "./GraphContainer-B8ZqOzKI.js";
20
- function Lt(i, t) {
21
- let n, l;
22
- if (t === void 0)
23
- for (const s of i)
24
- s != null && (n === void 0 ? s >= s && (n = l = s) : (n > s && (n = s), l < s && (l = s)));
25
- else {
26
- let s = -1;
27
- for (let h of i)
28
- (h = t(h, ++s, i)) != null && (n === void 0 ? h >= h && (n = l = h) : (n > h && (n = h), l < h && (l = h)));
29
- }
30
- return [n, l];
31
- }
32
- function G(i) {
33
- return function() {
34
- return i;
35
- };
36
- }
37
- function fe(i, t, n, l) {
38
- var s = G(0.1), h = !0, D = G(Math.min((n - i) / 2, (l - t) / 2)), a, $, R, u, z, f, w, g, V, L;
39
- typeof i != "function" && (i = G(i == null ? -100 : +i)), typeof n != "function" && (n = G(n == null ? 100 : +n)), typeof t != "function" && (t = G(t == null ? -100 : +t)), typeof l != "function" && (l = G(l == null ? 100 : +l));
40
- function W(e, o, Y, r, A) {
41
- return (e - o) * Math.min(2, Math.abs(e - o) / e) * Y * A;
42
- }
43
- function d(e) {
44
- for (var o = 0, Y = a.length, r; o < Y; ++o)
45
- r = a[o], r.x < u[o] + g[o] || r.x > z[o] - g[o] || r.y < f[o] + g[o] || r.y > w[o] - g[o] ? (r.vx += W(V[o], r.x, $[o], g[o], e), r.vy += W(L[o], r.y, R[o], g[o], e)) : r.y < f[o] + g[o] || r.y > w[o] - g[o], h && (r.x >= z[o] && (r.vx += z[o] - r.x), r.x <= u[o] && (r.vx += u[o] - r.x), r.y >= w[o] && (r.vy += w[o] - r.y), r.y <= f[o] && (r.vy += f[o] - r.y));
46
- }
47
- function N() {
48
- if (a) {
49
- var e, o = a.length;
50
- for ($ = new Array(o), R = new Array(o), u = new Array(o), f = new Array(o), z = new Array(o), w = new Array(o), L = new Array(o), V = new Array(o), g = new Array(o), e = 0; e < o; ++e)
51
- $[e] = isNaN(u[e] = +i(a[e], e, a)) || isNaN(z[e] = +n(a[e], e, a)) ? 0 : +s(a[e], e, a), R[e] = isNaN(f[e] = +t(a[e], e, a)) || isNaN(w[e] = +l(a[e], e, a)) ? 0 : +s(a[e], e, a), V[e] = u[e] + (z[e] - u[e]) / 2, L[e] = f[e] + (w[e] - f[e]) / 2, g[e] = +D(a[e], e, a);
52
- }
53
- }
54
- return d.initialize = function(e) {
55
- a = e, N();
56
- }, d.x0 = function(e) {
57
- return arguments.length ? (i = typeof e == "function" ? e : G(+e), N(), d) : i;
58
- }, d.x1 = function(e) {
59
- return arguments.length ? (n = typeof e == "function" ? e : G(+e), N(), d) : n;
60
- }, d.y0 = function(e) {
61
- return arguments.length ? (t = typeof e == "function" ? e : G(+e), N(), d) : t;
62
- }, d.y1 = function(e) {
63
- return arguments.length ? (l = typeof e == "function" ? e : G(+e), N(), d) : l;
64
- }, d.strength = function(e) {
65
- return arguments.length ? (s = typeof e == "function" ? e : G(+e), N(), d) : s;
66
- }, d.border = function(e) {
67
- return arguments.length ? (D = typeof e == "function" ? e : G(+e), N(), d) : D;
68
- }, d.hardBoundary = function(e) {
69
- return arguments.length ? (h = e, d) : h;
70
- }, d;
71
- }
72
- const ue = (i) => {
73
- const t = Ft.c(107), {
74
- data: n,
75
- colors: l,
76
- leftMargin: s,
77
- width: h,
78
- height: D,
79
- colorDomain: a,
80
- selectedColor: $,
81
- rightMargin: R,
82
- topMargin: u,
83
- bottomMargin: z,
84
- showLabels: f,
85
- tooltip: w,
86
- onSeriesMouseOver: g,
87
- showValues: V,
88
- suffix: L,
89
- prefix: W,
90
- highlightedDataPoints: d,
91
- onSeriesMouseClick: N,
92
- maxRadiusValue: e,
93
- radius: o,
94
- resetSelectionOnDoubleClick: Y,
95
- detailsOnClick: r,
96
- styles: A,
97
- classNames: k,
98
- dimmedOpacity: K,
99
- precision: F,
100
- locale: Q
101
- } = i, Et = Pt(null), [xt, jt] = it(void 0), [P, Ot] = it(void 0), [H, $t] = it(void 0), [Z, yt] = it(void 0), [bt, Mt] = it(void 0), [M, x] = it(null);
102
- let Ct;
103
- t[0] !== z || t[1] !== s || t[2] !== R || t[3] !== u ? (Ct = {
104
- top: u,
105
- bottom: z,
106
- left: s,
107
- right: R
108
- }, t[0] = z, t[1] = s, t[2] = R, t[3] = u, t[4] = Ct) : Ct = t[4];
109
- const _ = Ct, X = h - _.left - _.right, q = D - _.top - _.bottom;
110
- let rt;
111
- t[5] !== n ? (rt = n.filter(he).length === 0 ? n : It(n.filter(me), "radius", "asc"), t[5] = n, t[6] = rt) : rt = t[6];
112
- const I = rt;
113
- let lt;
114
- t[7] !== n || t[8] !== e || t[9] !== o ? (lt = n.filter(ge).length !== n.length ? Zt().domain([0, Rt(e) ? Math.max(...n.map(de).filter(pe)) : e]).range([0.25, o]).nice() : void 0, t[7] = n, t[8] = e, t[9] = o, t[10] = lt) : lt = t[10];
115
- const m = lt;
116
- let st;
117
- t[11] !== I || t[12] !== q || t[13] !== X || t[14] !== o || t[15] !== m ? (st = () => {
118
- (() => {
119
- const p = I.map(ve);
120
- _t(p).force("y", te((y) => q / 2).strength(1)).force("x", ee((y) => X / 2).strength(1)).force("collide", oe((y) => m ? m(y.size || 0) + 1 : o + 1)).force("charge", ne().strength(-15)).force("boundary", fe(0, 0, X, q).strength(0.2).border(50)).alphaDecay(0.05).tick(1e4).on("tick", () => {
121
- x(p);
122
- }).on("end", () => {
123
- x(p);
124
- const y = Lt(p, (b) => b.x - (m ? m(b.size || 0) + 1 : o + 1))[0] || 0, j = Lt(p, (b) => b.y - (m ? m(b.size || 0) + 1 : o + 1))[0] || 0, B = Lt(p, (b) => b.x + (m ? m(b.size || 0) + 1 : o + 1))[1] || 0, T = Lt(p, (b) => b.y + (m ? m(b.size || 0) + 1 : o + 1))[1] || 0;
125
- $t([y, j, y < 0 ? B - y : B, j < 0 ? T - j : T]);
126
- });
127
- })();
128
- }, t[11] = I, t[12] = q, t[13] = X, t[14] = o, t[15] = m, t[16] = st) : st = t[16];
129
- let at;
130
- t[17] !== n || t[18] !== I || t[19] !== q || t[20] !== X || t[21] !== e || t[22] !== o || t[23] !== m ? (at = [n, o, q, X, e, I, m], t[17] = n, t[18] = I, t[19] = q, t[20] = X, t[21] = e, t[22] = o, t[23] = m, t[24] = at) : at = t[24], Xt(st, at);
131
- let ct;
132
- t[25] !== g ? (ct = (c, p) => {
133
- jt(p), Mt(c.clientY), yt(c.clientX), g?.(p);
134
- }, t[25] = g, t[26] = ct) : ct = t[26];
135
- const tt = ct;
136
- let ft;
137
- t[27] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (ft = (c, p) => {
138
- jt(p), Mt(c.clientY), yt(c.clientX);
139
- }, t[27] = ft) : ft = t[27];
140
- const Dt = ft;
141
- let ut;
142
- t[28] !== r || t[29] !== P || t[30] !== N || t[31] !== Y ? (ut = (c) => {
143
- (N || r) && (P === c.label && Y ? (Ot(void 0), N?.(void 0)) : (Ot(c.label), N?.(c)));
144
- }, t[28] = r, t[29] = P, t[30] = N, t[31] = Y, t[32] = ut) : ut = t[32];
145
- const U = ut;
146
- let et;
147
- t[33] !== g ? (et = () => {
148
- jt(void 0), yt(void 0), Mt(void 0), g?.(void 0);
149
- }, t[33] = g, t[34] = et) : et = t[34];
150
- const ot = et;
151
- let ht;
152
- t[35] !== a || t[36] !== l || t[37] !== n ? (ht = (c) => n.filter(xe).length === 0 ? l[0] : c.color ? l[a.indexOf(c.color)] : At.gray, t[35] = a, t[36] = l, t[37] = n, t[38] = ht) : ht = t[38];
153
- const S = ht;
154
- let mt;
155
- t[39] !== a || t[40] !== l || t[41] !== K || t[42] !== d || t[43] !== $ ? (mt = (c) => $ ? c.color && l[a.indexOf(c.color)] === $ ? 1 : K : d.length !== 0 ? d.indexOf(c.label) !== -1 ? 0.85 : K : 0.85, t[39] = a, t[40] = l, t[41] = K, t[42] = d, t[43] = $, t[44] = mt) : mt = t[44];
156
- const nt = mt;
157
- if (!M) {
158
- const c = `${h}px`, p = `${D}px`;
159
- let E;
160
- t[45] !== c || t[46] !== p ? (E = {
161
- width: c,
162
- height: p
163
- }, t[45] = c, t[46] = p, t[47] = E) : E = t[47];
164
- let y;
165
- t[48] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (y = /* @__PURE__ */ v.jsx("div", { className: "flex m-auto items-center justify-center p-0 leading-none text-base h-40", children: /* @__PURE__ */ v.jsx(Ut, {}) }), t[48] = y) : y = t[48];
166
- let j;
167
- return t[49] !== E ? (j = /* @__PURE__ */ v.jsx("div", { style: E, children: y }), t[49] = E, t[50] = j) : j = t[50], j;
168
- }
169
- if (H) {
170
- const c = `${h}px`, p = `${D}px`, E = `${H[0] > 0 ? 0 : H[0]} ${H[1] > 0 ? 0 : H[1]} ${h < H[2] ? H[2] : h} ${D < H[3] ? H[3] : D}`, y = `translate(${_.left},${_.top})`;
171
- let j;
172
- if (t[51] !== k?.graphObjectValues || t[52] !== M || t[53] !== S || t[54] !== nt || t[55] !== U || t[56] !== tt || t[57] !== ot || t[58] !== Q || t[59] !== F || t[60] !== W || t[61] !== o || t[62] !== m || t[63] !== f || t[64] !== V || t[65] !== A?.graphObjectValues || t[66] !== L) {
173
- let wt;
174
- t[68] !== k?.graphObjectValues || t[69] !== S || t[70] !== nt || t[71] !== U || t[72] !== tt || t[73] !== ot || t[74] !== Q || t[75] !== F || t[76] !== W || t[77] !== o || t[78] !== m || t[79] !== f || t[80] !== V || t[81] !== A?.graphObjectValues || t[82] !== L ? (wt = (C) => {
175
- const pt = S(C), Vt = nt(C), O = m ? m(C.size || 0) : o, vt = O > 20 && (f || V);
176
- return /* @__PURE__ */ v.jsxs("g", { className: "undp-viz-g-with-hover", opacity: Vt, transform: `translate(${C.x},${C.y})`, onMouseEnter: (J) => tt(J, C), onMouseMove: (J) => Dt(J, C), onClick: () => U(C), onMouseLeave: ot, children: [
177
- /* @__PURE__ */ v.jsx("circle", { cx: 0, cy: 0, r: O, fill: pt }),
178
- (vt || V) && C.size !== void 0 && C.size !== null && O >= 15 && /* @__PURE__ */ v.jsx("g", { children: /* @__PURE__ */ v.jsx("foreignObject", { y: 0 - O, x: 0 - O, width: 2 * O, height: 2 * O, children: /* @__PURE__ */ v.jsxs("div", { className: "flex flex-col justify-center items-center h-full py-0 px-3", style: {
179
- display: "flex",
180
- flexDirection: "column",
181
- justifyContent: "center",
182
- alignItems: "center",
183
- height: "100%",
184
- padding: "0 0.75rem"
185
- }, children: [
186
- f && /* @__PURE__ */ v.jsx(Wt, { className: qt("text-center leading-[1.25] overflow-hidden m-0 circle-packing-label", k?.graphObjectValues), marginBottom: "none", style: {
187
- fontSize: `${Math.min(Math.max(Math.round(O / 4), 12), Math.max(Math.round(O * 12 / `${C.label}`.length), 12), 14)}px`,
188
- WebkitLineClamp: O * 2 < 60 ? 1 : O * 2 < 75 ? 2 : O * 2 < 100 ? 3 : void 0,
189
- display: "-webkit-box",
190
- WebkitBoxOrient: "vertical",
191
- color: Yt(pt),
192
- hyphens: "auto",
193
- ...A?.graphObjectValues || {}
194
- }, children: C.label }),
195
- V && /* @__PURE__ */ v.jsx(Wt, { className: "text-center font-bold leading-[1.25] w-full m-0 circle-packing-value", marginBottom: "none", style: {
196
- fontSize: `${Math.min(Math.max(Math.round(O / 4), 14), 14)}px`,
197
- color: Yt(pt)
198
- }, children: Kt(C.size, void 0, F, W, L, Q) })
199
- ] }) }) })
200
- ] }, C.label);
201
- }, t[68] = k?.graphObjectValues, t[69] = S, t[70] = nt, t[71] = U, t[72] = tt, t[73] = ot, t[74] = Q, t[75] = F, t[76] = W, t[77] = o, t[78] = m, t[79] = f, t[80] = V, t[81] = A?.graphObjectValues, t[82] = L, t[83] = wt) : wt = t[83], j = M.map(wt), t[51] = k?.graphObjectValues, t[52] = M, t[53] = S, t[54] = nt, t[55] = U, t[56] = tt, t[57] = ot, t[58] = Q, t[59] = F, t[60] = W, t[61] = o, t[62] = m, t[63] = f, t[64] = V, t[65] = A?.graphObjectValues, t[66] = L, t[67] = j;
202
- } else
203
- j = t[67];
204
- let B;
205
- t[84] !== y || t[85] !== j ? (B = /* @__PURE__ */ v.jsx("g", { transform: y, children: j }), t[84] = y, t[85] = j, t[86] = B) : B = t[86];
206
- let T;
207
- t[87] !== c || t[88] !== p || t[89] !== E || t[90] !== B ? (T = /* @__PURE__ */ v.jsx("svg", { width: c, height: p, viewBox: E, direction: "ltr", ref: Et, children: B }), t[87] = c, t[88] = p, t[89] = E, t[90] = B, t[91] = T) : T = t[91];
208
- let b;
209
- t[92] !== k?.tooltip || t[93] !== Z || t[94] !== bt || t[95] !== xt || t[96] !== A?.tooltip || t[97] !== w ? (b = xt && w && Z && bt && /* @__PURE__ */ v.jsx(Jt, { data: xt, body: w, xPos: Z, yPos: bt, backgroundStyle: A?.tooltip, className: k?.tooltip }), t[92] = k?.tooltip, t[93] = Z, t[94] = bt, t[95] = xt, t[96] = A?.tooltip, t[97] = w, t[98] = b) : b = t[98];
210
- let gt;
211
- t[99] !== k?.modal || t[100] !== r || t[101] !== P ? (gt = r && P !== void 0 ? /* @__PURE__ */ v.jsx(Qt, { body: r, data: P, setData: Ot, className: k?.modal }) : null, t[99] = k?.modal, t[100] = r, t[101] = P, t[102] = gt) : gt = t[102];
212
- let dt;
213
- return t[103] !== T || t[104] !== b || t[105] !== gt ? (dt = /* @__PURE__ */ v.jsxs(v.Fragment, { children: [
214
- T,
215
- b,
216
- gt
217
- ] }), t[103] = T, t[104] = b, t[105] = gt, t[106] = dt) : dt = t[106], dt;
218
- }
219
- return null;
220
- };
221
- function he(i) {
222
- return !Rt(i.size);
223
- }
224
- function me(i) {
225
- return !Rt(i.size);
226
- }
227
- function ge(i) {
228
- return i.size === void 0 || i.size === null;
229
- }
230
- function de(i) {
231
- return i.size;
232
- }
233
- function pe(i) {
234
- return i != null;
235
- }
236
- function ve(i) {
237
- return {
238
- ...i,
239
- ...i.data && {
240
- data: {
241
- ...i.data
242
- }
243
- }
244
- };
245
- }
246
- function xe(i) {
247
- return i.color;
248
- }
249
- function ye(i, t, n, l) {
250
- const s = i.filter((u) => u != null), h = l === !1 ? Math.sqrt(t * n / Math.PI) : Math.min(t, n) / 2, D = s.reduce((u, z) => u + z, 0), a = Math.max(...s), $ = (u) => u <= 5 ? 0.9 : u <= 10 ? 0.85 : u <= 20 ? 0.8 : 0.7, R = (u) => u <= 200 ? 0.85 : u <= 250 ? 0.95 : 1;
251
- return h * Math.sqrt(a / D) * (l ? R(h) : 1) * (l ? $(s.length) : 1);
252
- }
253
- function Je(i) {
254
- const t = Ft.c(85), {
255
- data: n,
256
- graphTitle: l,
257
- colors: s,
258
- suffix: h,
259
- sources: D,
260
- prefix: a,
261
- graphDescription: $,
262
- leftMargin: R,
263
- rightMargin: u,
264
- height: z,
265
- width: f,
266
- footNote: w,
267
- colorDomain: g,
268
- colorLegendTitle: V,
269
- padding: L,
270
- backgroundColor: W,
271
- topMargin: d,
272
- bottomMargin: N,
273
- showLabels: e,
274
- relativeHeight: o,
275
- tooltip: Y,
276
- onSeriesMouseOver: r,
277
- showColorScale: A,
278
- showValues: k,
279
- graphID: K,
280
- highlightedDataPoints: F,
281
- onSeriesMouseClick: Q,
282
- graphDownload: Et,
283
- dataDownload: xt,
284
- language: jt,
285
- showNAColor: P,
286
- minHeight: Ot,
287
- theme: H,
288
- ariaLabel: $t,
289
- radius: Z,
290
- maxRadiusValue: yt,
291
- resetSelectionOnDoubleClick: bt,
292
- detailsOnClick: Mt,
293
- styles: M,
294
- classNames: x,
295
- dimmedOpacity: Ct,
296
- precision: _,
297
- circularBoundary: X,
298
- locale: q
299
- } = i, rt = h === void 0 ? "" : h, I = a === void 0 ? "" : a, lt = R === void 0 ? 0 : R, m = u === void 0 ? 0 : u, st = W === void 0 ? !1 : W, at = d === void 0 ? 0 : d, ct = N === void 0 ? 0 : N, tt = e === void 0 ? !0 : e, ft = A === void 0 ? !0 : A;
300
- let Dt;
301
- t[0] !== F ? (Dt = F === void 0 ? [] : F, t[0] = F, t[1] = Dt) : Dt = t[1];
302
- const ut = Dt, U = Et === void 0 ? !1 : Et, et = xt === void 0 ? !1 : xt, ot = jt === void 0 ? "en" : jt, ht = Ot === void 0 ? 0 : Ot, S = H === void 0 ? "light" : H, mt = bt === void 0 ? !0 : bt, nt = Ct === void 0 ? 0.3 : Ct, c = _ === void 0 ? 2 : _, p = X === void 0 ? !0 : X, E = q === void 0 ? "en" : q, [y, j] = it(0), [B, T] = it(0), [b, gt] = it(void 0), dt = Pt(null), wt = Pt(null);
303
- let C, pt;
304
- t[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (C = () => {
305
- const Ht = new ResizeObserver((Gt) => {
306
- j(Gt[0].target.clientWidth || 620), T(Gt[0].target.clientHeight || 480);
307
- });
308
- return dt.current && Ht.observe(dt.current), () => Ht.disconnect();
309
- }, pt = [], t[2] = C, t[3] = pt) : (C = t[2], pt = t[3]), Xt(C, pt);
310
- const Vt = x?.graphContainer, O = M?.graphContainer;
311
- let vt;
312
- t[4] !== x?.description || t[5] !== x?.title || t[6] !== n || t[7] !== et || t[8] !== $ || t[9] !== U || t[10] !== l || t[11] !== M?.description || t[12] !== M?.title || t[13] !== f ? (vt = l || $ || U || et ? /* @__PURE__ */ v.jsx(re, { styles: {
313
- title: M?.title,
314
- description: M?.description
315
- }, classNames: {
316
- title: x?.title,
317
- description: x?.description
318
- }, graphTitle: l, graphDescription: $, width: f, graphDownload: U ? wt : void 0, dataDownload: et ? n.map(ke).filter(Ne).length > 0 ? n.map(ze).filter(De) : n.filter(Oe) : null }) : null, t[4] = x?.description, t[5] = x?.title, t[6] = n, t[7] = et, t[8] = $, t[9] = U, t[10] = l, t[11] = M?.description, t[12] = M?.title, t[13] = f, t[14] = vt) : vt = t[14];
319
- let J;
320
- t[15] !== x?.colorLegend || t[16] !== g || t[17] !== V || t[18] !== s || t[19] !== n || t[20] !== ft || t[21] !== P || t[22] !== S || t[23] !== f ? (J = ft && n.filter(je).length !== 0 && n.length > 0 ? /* @__PURE__ */ v.jsx(le, { width: f, colorLegendTitle: V, colors: s || At[S].categoricalColors.colors, colorDomain: g || Tt(n, "color", !0), setSelectedColor: gt, showNAColor: P ?? !0, isCenter: !0, className: x?.colorLegend }) : null, t[15] = x?.colorLegend, t[16] = g, t[17] = V, t[18] = s, t[19] = n, t[20] = ft, t[21] = P, t[22] = S, t[23] = f, t[24] = J) : J = t[24];
321
- let zt;
322
- t[25] !== n.length ? (zt = n.length === 0 && /* @__PURE__ */ v.jsx(se, {}), t[25] = n.length, t[26] = zt) : zt = t[26];
323
- let Nt;
324
- t[27] !== ct || t[28] !== p || t[29] !== x || t[30] !== g || t[31] !== s || t[32] !== n || t[33] !== Mt || t[34] !== nt || t[35] !== ut || t[36] !== lt || t[37] !== E || t[38] !== yt || t[39] !== Q || t[40] !== r || t[41] !== c || t[42] !== I || t[43] !== Z || t[44] !== mt || t[45] !== m || t[46] !== b || t[47] !== tt || t[48] !== k || t[49] !== M || t[50] !== rt || t[51] !== B || t[52] !== y || t[53] !== S || t[54] !== Y || t[55] !== at ? (Nt = y && B && n.length > 0 ? /* @__PURE__ */ v.jsx(ue, { data: n, colors: n.filter(we).length === 0 ? s ? [s] : [At.primaryColors["blue-600"]] : s || At[S].categoricalColors.colors, colorDomain: n.filter(Ce).length === 0 ? [] : g || Tt(n, "color", !0), width: y, height: B, leftMargin: lt, rightMargin: m, topMargin: at, bottomMargin: ct, showLabels: tt, showValues: k !== !1 ? n.filter(Me).length !== 0 : k, selectedColor: b, suffix: rt, prefix: I, tooltip: Y, onSeriesMouseOver: r, highlightedDataPoints: ut, onSeriesMouseClick: Q, theme: S, radius: Z || ye(n.map(be), y, B, p), maxRadiusValue: yt, resetSelectionOnDoubleClick: mt, detailsOnClick: Mt, styles: M, classNames: x, dimmedOpacity: nt, precision: c, locale: E }) : null, t[27] = ct, t[28] = p, t[29] = x, t[30] = g, t[31] = s, t[32] = n, t[33] = Mt, t[34] = nt, t[35] = ut, t[36] = lt, t[37] = E, t[38] = yt, t[39] = Q, t[40] = r, t[41] = c, t[42] = I, t[43] = Z, t[44] = mt, t[45] = m, t[46] = b, t[47] = tt, t[48] = k, t[49] = M, t[50] = rt, t[51] = B, t[52] = y, t[53] = S, t[54] = Y, t[55] = at, t[56] = Nt) : Nt = t[56];
325
- let kt;
326
- t[57] !== zt || t[58] !== Nt ? (kt = /* @__PURE__ */ v.jsxs(ae, { ref: dt, children: [
327
- zt,
328
- Nt
329
- ] }), t[57] = zt, t[58] = Nt, t[59] = kt) : kt = t[59];
330
- let St;
331
- t[60] !== x?.footnote || t[61] !== x?.source || t[62] !== w || t[63] !== D || t[64] !== M?.footnote || t[65] !== M?.source || t[66] !== f ? (St = D || w ? /* @__PURE__ */ v.jsx(ie, { styles: {
332
- footnote: M?.footnote,
333
- source: M?.source
334
- }, classNames: {
335
- footnote: x?.footnote,
336
- source: x?.source
337
- }, sources: D, footNote: w, width: f }) : null, t[60] = x?.footnote, t[61] = x?.source, t[62] = w, t[63] = D, t[64] = M?.footnote, t[65] = M?.source, t[66] = f, t[67] = St) : St = t[67];
338
- let Bt;
339
- return t[68] !== $t || t[69] !== st || t[70] !== K || t[71] !== z || t[72] !== ot || t[73] !== ht || t[74] !== L || t[75] !== o || t[76] !== Vt || t[77] !== O || t[78] !== vt || t[79] !== J || t[80] !== kt || t[81] !== St || t[82] !== S || t[83] !== f ? (Bt = /* @__PURE__ */ v.jsxs(ce, { className: Vt, style: O, id: K, ref: wt, "aria-label": $t, backgroundColor: st, theme: S, language: ot, minHeight: ht, width: f, height: z, relativeHeight: o, padding: L, children: [
340
- vt,
341
- J,
342
- kt,
343
- St
344
- ] }), t[68] = $t, t[69] = st, t[70] = K, t[71] = z, t[72] = ot, t[73] = ht, t[74] = L, t[75] = o, t[76] = Vt, t[77] = O, t[78] = vt, t[79] = J, t[80] = kt, t[81] = St, t[82] = S, t[83] = f, t[84] = Bt) : Bt = t[84], Bt;
345
- }
346
- function be(i) {
347
- return i.size;
348
- }
349
- function Me(i) {
350
- return i.size;
351
- }
352
- function Ce(i) {
353
- return i.color;
354
- }
355
- function we(i) {
356
- return i.color;
357
- }
358
- function je(i) {
359
- return i.color;
360
- }
361
- function Oe(i) {
362
- return i !== void 0;
363
- }
364
- function De(i) {
365
- return i !== void 0;
366
- }
367
- function ze(i) {
368
- return i.data;
369
- }
370
- function Ne(i) {
371
- return i !== void 0;
372
- }
373
- function ke(i) {
374
- return i.data;
375
- }
376
- export {
377
- Je as C,
378
- Lt as e
379
- };
380
- //# sourceMappingURL=index-CGrBpeUa.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CGrBpeUa.js","sources":["../node_modules/d3-array/src/extent.js","../node_modules/d3-force-boundary/dist/d3-force-boundary.esm.js","../src/Components/Graphs/CirclePackingGraph/Graph.tsx","../src/Components/Graphs/CirclePackingGraph/getMaxCircleRadius.ts","../src/Components/Graphs/CirclePackingGraph/index.tsx"],"sourcesContent":["export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","// https://observablehq.com/@john-guerra/d3-force-boundary v0.0.2 Copyright 2022 John Alexis Guerra Gómez\nfunction constant(x) {\n return function() {\n return x;\n };\n}\n\nfunction forceBoundary(x0, y0, x1, y1) {\n var strength = constant(0.1),\n hardBoundary = true,\n border = constant( Math.min((x1 - x0)/2, (y1 - y0)/2) ),\n nodes,\n strengthsX,\n strengthsY,\n x0z, x1z,\n y0z, y1z,\n borderz,\n halfX, halfY;\n\n if (typeof x0 !== \"function\") x0 = constant(x0 == null ? -100 : +x0);\n if (typeof x1 !== \"function\") x1 = constant(x1 == null ? 100 : +x1);\n if (typeof y0 !== \"function\") y0 = constant(y0 == null ? -100 : +y0);\n if (typeof y1 !== \"function\") y1 = constant(y1 == null ? 100 : +y1);\n\n function getVx(halfX, x, strengthX, border, alpha) {\n return (halfX - x) * Math.min(2, Math.abs( halfX - x) / halfX) * strengthX * alpha;\n }\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i];\n // debugger;\n if ((node.x < (x0z[i] + borderz[i]) || node.x > (x1z[i] - borderz[i])) ||\n (node.y < (y0z[i] + borderz[i]) || node.y > (y1z[i] - borderz[i]))) {\n node.vx += getVx(halfX[i], node.x, strengthsX[i], borderz[i], alpha);\n node.vy += getVx(halfY[i], node.y, strengthsY[i], borderz[i], alpha);\n } else if (node.y < (y0z[i] + borderz[i]) || node.y > (y1z[i] - borderz[i])) ;\n\n if (hardBoundary) {\n if (node.x >= x1z[i]) node.vx += x1z[i] - node.x;\n if (node.x <= x0z[i]) node.vx += x0z[i] - node.x;\n if (node.y >= y1z[i]) node.vy += y1z[i] - node.y;\n if (node.y <= y0z[i]) node.vy += y0z[i] - node.y;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengthsX = new Array(n);\n strengthsY = new Array(n);\n x0z = new Array(n);\n y0z = new Array(n);\n x1z = new Array(n);\n y1z = new Array(n);\n halfY = new Array(n);\n halfX = new Array(n);\n borderz = new Array(n);\n\n for (i = 0; i < n; ++i) {\n strengthsX[i] = (isNaN(x0z[i] = +x0(nodes[i], i, nodes)) ||\n isNaN(x1z[i] = +x1(nodes[i], i, nodes))) ? 0 : +strength(nodes[i], i, nodes);\n strengthsY[i] = (isNaN(y0z[i] = +y0(nodes[i], i, nodes)) ||\n isNaN(y1z[i] = +y1(nodes[i], i, nodes))) ? 0 : +strength(nodes[i], i, nodes);\n halfX[i] = x0z[i] + (x1z[i] - x0z[i])/2,\n halfY[i] = y0z[i] + (y1z[i] - y0z[i])/2;\n borderz[i] = +border(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x0;\n };\n\n force.x1 = function(_) {\n return arguments.length ? (x1 = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x1;\n };\n\n force.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y0;\n };\n\n force.y1 = function(_) {\n return arguments.length ? (y1 = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y1;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.border = function(_) {\n return arguments.length ? (border = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : border;\n };\n\n force.hardBoundary = function(_) {\n return arguments.length ? (hardBoundary = _, force) : hardBoundary;\n };\n\n return force;\n}\n\nexport default forceBoundary;\n","import { useEffect, useState, useRef } from 'react';\r\nimport { forceCollide, forceManyBody, forceSimulation, forceX, forceY } from 'd3-force';\r\nimport orderBy from 'lodash.orderby';\r\nimport { scaleSqrt } from 'd3-scale';\r\nimport { extent } from 'd3-array';\r\nimport forceBoundary from 'd3-force-boundary';\r\nimport { cn } from '@undp/design-system-react/cn';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\nimport { P } from '@undp/design-system-react/Typography';\r\n\r\nimport { ClassNameObject, StyleObject, TreeMapDataType } from '@/Types';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { getTextColorBasedOnBgColor } from '@/Utils/getTextColorBasedOnBgColor';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\n\r\ninterface Props {\r\n data: TreeMapDataType[];\r\n colors: string[];\r\n colorDomain: string[];\r\n leftMargin: number;\r\n rightMargin: number;\r\n topMargin: number;\r\n bottomMargin: number;\r\n showLabels: boolean;\r\n showValues: boolean;\r\n width: number;\r\n height: number;\r\n suffix: string;\r\n prefix: string;\r\n selectedColor?: string;\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 highlightedDataPoints: (string | number)[];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onSeriesMouseClick?: (_d: any) => void;\r\n theme: 'light' | 'dark';\r\n maxRadiusValue?: number;\r\n radius: number;\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 dimmedOpacity: number;\r\n precision: number;\r\n locale: string;\r\n}\r\n\r\ninterface TreeMapDataTypeForBubbleChart extends TreeMapDataType {\r\n x: number;\r\n y: number;\r\n vx: number;\r\n vy: number;\r\n}\r\n\r\nexport const Graph = (props: Props) => {\r\n const {\r\n data,\r\n colors,\r\n leftMargin,\r\n width,\r\n height,\r\n colorDomain,\r\n selectedColor,\r\n rightMargin,\r\n topMargin,\r\n bottomMargin,\r\n showLabels,\r\n tooltip,\r\n onSeriesMouseOver,\r\n showValues,\r\n suffix,\r\n prefix,\r\n highlightedDataPoints,\r\n onSeriesMouseClick,\r\n maxRadiusValue,\r\n radius,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n dimmedOpacity,\r\n precision,\r\n locale,\r\n } = props;\r\n const svgRef = useRef(null);\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 [viewPortDimensions, setViewPortDimensions] = useState<\r\n [number, number, number, number] | undefined\r\n >(undefined);\r\n const [eventX, setEventX] = useState<number | undefined>(undefined);\r\n const [eventY, setEventY] = useState<number | undefined>(undefined);\r\n const [finalData, setFinalData] = useState<TreeMapDataTypeForBubbleChart[] | null>(null);\r\n\r\n const margin = {\r\n top: topMargin,\r\n bottom: bottomMargin,\r\n left: leftMargin,\r\n right: rightMargin,\r\n };\r\n\r\n const graphWidth = width - margin.left - margin.right;\r\n const graphHeight = height - margin.top - margin.bottom;\r\n\r\n // Memoize data ordering and radius scale\r\n const dataOrdered =\r\n data.filter(d => !checkIfNullOrUndefined(d.size)).length === 0\r\n ? data\r\n : orderBy(\r\n data.filter(d => !checkIfNullOrUndefined(d.size)),\r\n 'radius',\r\n 'asc',\r\n );\r\n\r\n const radiusScale =\r\n data.filter(d => d.size === undefined || d.size === null).length !== data.length\r\n ? scaleSqrt()\r\n .domain([\r\n 0,\r\n checkIfNullOrUndefined(maxRadiusValue)\r\n ? Math.max(...data.map(d => d.size).filter(d => d !== undefined && d !== null))\r\n : (maxRadiusValue as number),\r\n ])\r\n .range([0.25, radius])\r\n .nice()\r\n : undefined;\r\n\r\n // Memoize simulation setup\r\n useEffect(() => {\r\n const setupSimulation = () => {\r\n const dataTemp = dataOrdered.map(d => ({ ...d, ...(d.data && { data: { ...d.data } }) }));\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const simulation = forceSimulation(dataTemp as any)\r\n .force('y', forceY(_d => graphHeight / 2).strength(1))\r\n .force('x', forceX(_d => graphWidth / 2).strength(1))\r\n .force(\r\n 'collide',\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n forceCollide((d: any) => (radiusScale ? radiusScale(d.size || 0) + 1 : radius + 1)),\r\n )\r\n .force('charge', forceManyBody().strength(-15))\r\n .force('boundary', forceBoundary(0, 0, graphWidth, graphHeight).strength(0.2).border(50))\r\n .alphaDecay(0.05)\r\n .tick(10000);\r\n\r\n simulation\r\n .on('tick', () => {\r\n setFinalData(dataTemp as TreeMapDataTypeForBubbleChart[]);\r\n })\r\n .on('end', () => {\r\n setFinalData(dataTemp as TreeMapDataTypeForBubbleChart[]);\r\n const xMinExtent =\r\n extent(\r\n dataTemp as TreeMapDataTypeForBubbleChart[],\r\n d => d.x - (radiusScale ? radiusScale(d.size || 0) + 1 : radius + 1),\r\n )[0] || 0;\r\n const yMinExtent =\r\n extent(\r\n dataTemp as TreeMapDataTypeForBubbleChart[],\r\n d => d.y - (radiusScale ? radiusScale(d.size || 0) + 1 : radius + 1),\r\n )[0] || 0;\r\n const xMaxExtent =\r\n extent(\r\n dataTemp as TreeMapDataTypeForBubbleChart[],\r\n d => d.x + (radiusScale ? radiusScale(d.size || 0) + 1 : radius + 1),\r\n )[1] || 0;\r\n const yMaxExtent =\r\n extent(\r\n dataTemp as TreeMapDataTypeForBubbleChart[],\r\n d => d.y + (radiusScale ? radiusScale(d.size || 0) + 1 : radius + 1),\r\n )[1] || 0;\r\n setViewPortDimensions([\r\n xMinExtent,\r\n yMinExtent,\r\n xMinExtent < 0 ? xMaxExtent - xMinExtent : xMaxExtent,\r\n yMinExtent < 0 ? yMaxExtent - yMinExtent : yMaxExtent,\r\n ]);\r\n });\r\n };\r\n\r\n setupSimulation();\r\n }, [data, radius, graphHeight, graphWidth, maxRadiusValue, dataOrdered, radiusScale]);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleMouseEnter = (event: any, d: any) => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n onSeriesMouseOver?.(d);\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleMouseMove = (event: any, d: any) => {\r\n setMouseOverData(d);\r\n setEventY(event.clientY);\r\n setEventX(event.clientX);\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleClick = (d: any) => {\r\n if (onSeriesMouseClick || detailsOnClick) {\r\n if (mouseClickData === d.label && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d.label);\r\n onSeriesMouseClick?.(d);\r\n }\r\n }\r\n };\r\n\r\n const handleMouseLeave = () => {\r\n setMouseOverData(undefined);\r\n setEventX(undefined);\r\n setEventY(undefined);\r\n onSeriesMouseOver?.(undefined);\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const getCircleColor = (d: any) =>\r\n data.filter(el => el.color).length === 0\r\n ? colors[0]\r\n : !d.color\r\n ? Colors.gray\r\n : colors[colorDomain.indexOf(d.color)];\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const getOpacity = (d: any) =>\r\n selectedColor\r\n ? d.color\r\n ? colors[colorDomain.indexOf(d.color)] === selectedColor\r\n ? 1\r\n : dimmedOpacity\r\n : dimmedOpacity\r\n : highlightedDataPoints.length !== 0\r\n ? highlightedDataPoints.indexOf(d.label) !== -1\r\n ? 0.85\r\n : dimmedOpacity\r\n : 0.85;\r\n\r\n // Render loading state\r\n if (!finalData) {\r\n return (\r\n <div style={{ width: `${width}px`, height: `${height}px` }}>\r\n <div className='flex m-auto items-center justify-center p-0 leading-none text-base h-40'>\r\n <Spinner />\r\n </div>\r\n </div>\r\n );\r\n }\r\n if (viewPortDimensions) {\r\n return (\r\n <>\r\n <svg\r\n width={`${width}px`}\r\n height={`${height}px`}\r\n viewBox={`${viewPortDimensions[0] > 0 ? 0 : viewPortDimensions[0]} ${\r\n viewPortDimensions[1] > 0 ? 0 : viewPortDimensions[1]\r\n } ${width < viewPortDimensions[2] ? viewPortDimensions[2] : width} ${\r\n height < viewPortDimensions[3] ? viewPortDimensions[3] : height\r\n }`}\r\n direction='ltr'\r\n ref={svgRef}\r\n >\r\n <g transform={`translate(${margin.left},${margin.top})`}>\r\n {finalData.map(d => {\r\n const circleColor = getCircleColor(d);\r\n const opacity = getOpacity(d);\r\n const bubbleRadius = radiusScale ? radiusScale(d.size || 0) : radius;\r\n const showLabel = bubbleRadius > 20 && (showLabels || showValues);\r\n return (\r\n <g\r\n className='undp-viz-g-with-hover'\r\n key={d.label}\r\n opacity={opacity}\r\n transform={`translate(${d.x},${d.y})`}\r\n onMouseEnter={event => handleMouseEnter(event, d)}\r\n onMouseMove={event => handleMouseMove(event, d)}\r\n onClick={() => handleClick(d)}\r\n onMouseLeave={handleMouseLeave}\r\n >\r\n <circle cx={0} cy={0} r={bubbleRadius} fill={circleColor} />\r\n {(showLabel || showValues) &&\r\n d.size !== undefined &&\r\n d.size !== null &&\r\n bubbleRadius >= 15 && (\r\n <g>\r\n <foreignObject\r\n y={0 - bubbleRadius}\r\n x={0 - bubbleRadius}\r\n width={2 * bubbleRadius}\r\n height={2 * bubbleRadius}\r\n >\r\n <div\r\n className='flex flex-col justify-center items-center h-full py-0 px-3'\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n height: '100%',\r\n padding: '0 0.75rem',\r\n }}\r\n >\r\n {showLabels && (\r\n <P\r\n className={cn(\r\n 'text-center leading-[1.25] overflow-hidden m-0 circle-packing-label',\r\n classNames?.graphObjectValues,\r\n )}\r\n marginBottom='none'\r\n style={{\r\n fontSize: `${Math.min(\r\n Math.max(Math.round(bubbleRadius / 4), 12),\r\n Math.max(\r\n Math.round((bubbleRadius * 12) / `${d.label}`.length),\r\n 12,\r\n ),\r\n 14,\r\n )}px`,\r\n WebkitLineClamp:\r\n bubbleRadius * 2 < 60\r\n ? 1\r\n : bubbleRadius * 2 < 75\r\n ? 2\r\n : bubbleRadius * 2 < 100\r\n ? 3\r\n : undefined,\r\n display: '-webkit-box',\r\n WebkitBoxOrient: 'vertical',\r\n color: getTextColorBasedOnBgColor(circleColor),\r\n hyphens: 'auto',\r\n ...(styles?.graphObjectValues || {}),\r\n }}\r\n >\r\n {d.label}\r\n </P>\r\n )}\r\n {showValues && (\r\n <P\r\n className='text-center font-bold leading-[1.25] w-full m-0 circle-packing-value'\r\n marginBottom='none'\r\n style={{\r\n fontSize: `${Math.min(\r\n Math.max(Math.round(bubbleRadius / 4), 14),\r\n 14,\r\n )}px`,\r\n color: getTextColorBasedOnBgColor(circleColor),\r\n }}\r\n >\r\n {numberFormattingFunction(\r\n d.size,\r\n undefined,\r\n precision,\r\n prefix,\r\n suffix,\r\n locale,\r\n )}\r\n </P>\r\n )}\r\n </div>\r\n </foreignObject>\r\n </g>\r\n )}\r\n </g>\r\n );\r\n })}\r\n </g>\r\n </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 )}\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 return null;\r\n};\r\n","export function getMaxCircleRadius(\r\n values: (number | undefined | null)[],\r\n width: number,\r\n height: number,\r\n circularBoundary?: boolean,\r\n) {\r\n const filteredValues = values.filter(d => d !== undefined && d !== null);\r\n const containerRadius =\r\n circularBoundary === false\r\n ? Math.sqrt((width * height) / Math.PI)\r\n : Math.min(width, height) / 2;\r\n const totalValue = filteredValues.reduce((sum, v) => sum + v, 0);\r\n const maxValue = Math.max(...filteredValues);\r\n const getPackingEfficiency = (n: number) => {\r\n if (n <= 5) return 0.9;\r\n if (n <= 10) return 0.85;\r\n if (n <= 20) return 0.8;\r\n return 0.7;\r\n };\r\n const getEfficiencyBecauseOfContainerRadius = (r: number) => {\r\n if (r <= 200) return 0.85;\r\n if (r <= 250) return 0.95;\r\n return 1;\r\n };\r\n return (\r\n containerRadius *\r\n Math.sqrt(maxValue / totalValue) *\r\n (circularBoundary ? getEfficiencyBecauseOfContainerRadius(containerRadius) : 1) *\r\n (circularBoundary ? getPackingEfficiency(filteredValues.length) : 1)\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\n\r\nimport { Graph } from './Graph';\r\nimport { getMaxCircleRadius } from './getMaxCircleRadius';\r\n\r\nimport { Languages, SourcesDataType, StyleObject, ClassNameObject, TreeMapDataType } from '@/Types';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { ColorLegendWithMouseOver } from '@/Components/Elements/ColorLegendWithMouseOver';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\r\nimport { uniqBy } from '@/Utils/uniqBy';\r\nimport { GraphArea, GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n // Data\r\n /** Array of data objects */\r\n data: TreeMapDataType[];\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 or array of colors for circle */\r\n colors?: string | string[];\r\n /** Domain of colors for the graph */\r\n colorDomain?: 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\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 mapped to the radius chart */\r\n maxRadiusValue?: number;\r\n\r\n // Graph Parameters\r\n /** If true, the graph will be rendered in a circle layout */\r\n circularBoundary?: boolean;\r\n /** Maximum radius of the circle */\r\n radius?: number;\r\n /** Toggle visibility of labels */\r\n showLabels?: boolean;\r\n /** Toggle visibility of values */\r\n showValues?: 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 /** Toggle visibility of NA color in the color scale. This is only applicable if the data props hae color parameter and showColorScale prop is true */\r\n showNAColor?: boolean;\r\n /** Data points to highlight. Use the label value from data to highlight the data point */\r\n highlightedDataPoints?: (string | number)[];\r\n /** Defines the opacity of the non-highlighted data */\r\n dimmedOpacity?: number;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Locale for number formatting. Must matches what `Intl.NumberFormat` expects. */\r\n locale?: string;\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 CirclePackingGraph(props: Props) {\r\n const {\r\n data,\r\n graphTitle,\r\n colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n graphDescription,\r\n leftMargin = 0,\r\n rightMargin = 0,\r\n height,\r\n width,\r\n footNote,\r\n colorDomain,\r\n colorLegendTitle,\r\n padding,\r\n backgroundColor = false,\r\n topMargin = 0,\r\n bottomMargin = 0,\r\n showLabels = true,\r\n relativeHeight,\r\n tooltip,\r\n onSeriesMouseOver,\r\n showColorScale = true,\r\n showValues,\r\n graphID,\r\n highlightedDataPoints = [],\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n language = 'en',\r\n showNAColor,\r\n minHeight = 0,\r\n theme = 'light',\r\n ariaLabel,\r\n radius,\r\n maxRadiusValue,\r\n resetSelectionOnDoubleClick = true,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n dimmedOpacity = 0.3,\r\n precision = 2,\r\n circularBoundary = true,\r\n locale = 'en',\r\n } = props;\r\n const [svgWidth, setSvgWidth] = useState(0);\r\n const [svgHeight, setSvgHeight] = useState(0);\r\n const [selectedColor, setSelectedColor] = useState<string | undefined>(undefined);\r\n const graphDiv = useRef<HTMLDivElement>(null);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\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 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 {showColorScale && data.filter(el => el.color).length !== 0 && data.length > 0 ? (\r\n <ColorLegendWithMouseOver\r\n width={width}\r\n colorLegendTitle={colorLegendTitle}\r\n colors={(colors as string[] | undefined) || Colors[theme].categoricalColors.colors}\r\n colorDomain={colorDomain || (uniqBy(data, 'color', true) as string[])}\r\n setSelectedColor={setSelectedColor}\r\n showNAColor={showNAColor === undefined || showNAColor === null ? true : showNAColor}\r\n isCenter\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 data={data}\r\n colors={\r\n data.filter(el => el.color).length === 0\r\n ? colors\r\n ? [colors as string]\r\n : [Colors.primaryColors['blue-600']]\r\n : (colors as string[] | undefined) || Colors[theme].categoricalColors.colors\r\n }\r\n colorDomain={\r\n data.filter(el => el.color).length === 0\r\n ? []\r\n : colorDomain || (uniqBy(data, 'color', true) as string[])\r\n }\r\n width={svgWidth}\r\n height={svgHeight}\r\n leftMargin={leftMargin}\r\n rightMargin={rightMargin}\r\n topMargin={topMargin}\r\n bottomMargin={bottomMargin}\r\n showLabels={showLabels}\r\n showValues={\r\n showValues !== false\r\n ? data.filter(el => el.size).length !== 0\r\n : (showValues as boolean)\r\n }\r\n selectedColor={selectedColor}\r\n suffix={suffix}\r\n prefix={prefix}\r\n tooltip={tooltip}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n highlightedDataPoints={highlightedDataPoints}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n theme={theme}\r\n radius={\r\n !radius\r\n ? getMaxCircleRadius(\r\n data.map(d => d.size),\r\n svgWidth,\r\n svgHeight,\r\n circularBoundary,\r\n )\r\n : radius\r\n }\r\n maxRadiusValue={maxRadiusValue}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n detailsOnClick={detailsOnClick}\r\n styles={styles}\r\n classNames={classNames}\r\n dimmedOpacity={dimmedOpacity}\r\n precision={precision}\r\n locale={locale}\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":["extent","values","valueof","min","max","value","index","constant","x","forceBoundary","x0","y0","x1","y1","strength","hardBoundary","border","nodes","strengthsX","strengthsY","x0z","x1z","y0z","y1z","borderz","halfX","halfY","getVx","strengthX","alpha","force","i","n","node","initialize","_","Graph","props","$","_c","data","colors","leftMargin","width","height","colorDomain","selectedColor","rightMargin","topMargin","bottomMargin","showLabels","tooltip","onSeriesMouseOver","showValues","suffix","prefix","highlightedDataPoints","onSeriesMouseClick","maxRadiusValue","radius","resetSelectionOnDoubleClick","detailsOnClick","styles","classNames","dimmedOpacity","precision","locale","svgRef","useRef","mouseOverData","setMouseOverData","useState","undefined","mouseClickData","setMouseClickData","viewPortDimensions","setViewPortDimensions","eventX","setEventX","eventY","setEventY","finalData","setFinalData","t0","top","bottom","left","right","margin","graphWidth","graphHeight","t1","filter","_temp","length","orderBy","_temp2","dataOrdered","t2","_temp3","scaleSqrt","domain","checkIfNullOrUndefined","Math","map","_temp4","_temp5","range","nice","radiusScale","t3","setupSimulation","dataTemp","_temp6","simulation","forceSimulation","forceY","_d","forceX","_d_0","forceCollide","d_5","d","size","forceManyBody","alphaDecay","tick","on","xMinExtent","d_6","yMinExtent","d_7","y","xMaxExtent","d_8","yMaxExtent","d_9","t4","useEffect","t5","event","d_10","clientY","clientX","handleMouseEnter","t6","Symbol","for","event_0","d_11","handleMouseMove","t7","d_12","label","handleClick","t8","handleMouseLeave","t9","d_13","_temp7","color","indexOf","Colors","gray","getCircleColor","t10","d_14","getOpacity","t11","t12","t13","t14","jsx","Spinner","t15","graphObjectValues","t16","d_15","circleColor","opacity","bubbleRadius","showLabel","jsxs","event_1","event_2","display","flexDirection","justifyContent","alignItems","padding","P","cn","fontSize","round","WebkitLineClamp","WebkitBoxOrient","getTextColorBasedOnBgColor","hyphens","numberFormattingFunction","t17","t18","Tooltip","t19","modal","DetailsModal","t20","Fragment","d_0","d_3","d_1","d_2","d_4","el","getMaxCircleRadius","circularBoundary","filteredValues","containerRadius","sqrt","PI","totalValue","reduce","sum","v","maxValue","getPackingEfficiency","getEfficiencyBecauseOfContainerRadius","r","CirclePackingGraph","graphTitle","sources","graphDescription","footNote","colorLegendTitle","backgroundColor","relativeHeight","showColorScale","graphID","graphDownload","dataDownload","language","showNAColor","minHeight","theme","ariaLabel","svgWidth","setSvgWidth","svgHeight","setSvgHeight","setSelectedColor","graphDiv","graphParentDiv","t21","t22","resizeObserver","ResizeObserver","entries","target","clientWidth","clientHeight","current","observe","disconnect","t23","graphContainer","t24","t25","description","title","GraphHeader","t26","colorLegend","ColorLegendWithMouseOver","categoricalColors","uniqBy","t27","EmptyState","t28","primaryColors","_temp8","_temp9","_temp0","t29","GraphArea","t30","footnote","source","GraphFooter","t31","GraphContainer","el_2","el_1","el_0"],"mappings":"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","x_google_ignoreList":[0,1]}