@undp/data-viz 2.1.2 → 2.1.4

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 (162) hide show
  1. package/dist/AreaChart.cjs +1 -1
  2. package/dist/AreaChart.cjs.map +1 -1
  3. package/dist/AreaChart.js +281 -274
  4. package/dist/AreaChart.js.map +1 -1
  5. package/dist/BarGraph.cjs +1 -1
  6. package/dist/BarGraph.cjs.map +1 -1
  7. package/dist/BarGraph.d.ts +2 -0
  8. package/dist/BarGraph.js +1795 -1724
  9. package/dist/BarGraph.js.map +1 -1
  10. package/dist/BeeSwarmChart.cjs +1 -1
  11. package/dist/BeeSwarmChart.cjs.map +1 -1
  12. package/dist/BeeSwarmChart.js +312 -305
  13. package/dist/BeeSwarmChart.js.map +1 -1
  14. package/dist/BulletChart.cjs +1 -1
  15. package/dist/BulletChart.cjs.map +1 -1
  16. package/dist/BulletChart.js +367 -356
  17. package/dist/BulletChart.js.map +1 -1
  18. package/dist/ButterflyChart.cjs +1 -1
  19. package/dist/ButterflyChart.cjs.map +1 -1
  20. package/dist/ButterflyChart.js +224 -217
  21. package/dist/ButterflyChart.js.map +1 -1
  22. package/dist/CirclePackingGraph.cjs +1 -1
  23. package/dist/CirclePackingGraph.js +2 -2
  24. package/dist/DifferenceLineChart.cjs +1 -1
  25. package/dist/DifferenceLineChart.cjs.map +1 -1
  26. package/dist/DifferenceLineChart.js +406 -399
  27. package/dist/DifferenceLineChart.js.map +1 -1
  28. package/dist/DonutChart.cjs +1 -1
  29. package/dist/DonutChart.cjs.map +1 -1
  30. package/dist/DonutChart.d.ts +10 -0
  31. package/dist/DonutChart.js +232 -263
  32. package/dist/DonutChart.js.map +1 -1
  33. package/dist/DualAxisLineChart.cjs +1 -1
  34. package/dist/DualAxisLineChart.cjs.map +1 -1
  35. package/dist/DualAxisLineChart.js +320 -313
  36. package/dist/DualAxisLineChart.js.map +1 -1
  37. package/dist/DumbbellChart.cjs +1 -1
  38. package/dist/DumbbellChart.cjs.map +1 -1
  39. package/dist/DumbbellChart.js +298 -291
  40. package/dist/DumbbellChart.js.map +1 -1
  41. package/dist/{EmptyState-BZo1BbAn.js → EmptyState-C7ZXkZWd.js} +4 -4
  42. package/dist/EmptyState-C7ZXkZWd.js.map +1 -0
  43. package/dist/EmptyState-gLDRXBHm.cjs +2 -0
  44. package/dist/EmptyState-gLDRXBHm.cjs.map +1 -0
  45. package/dist/GraphEl-C2Fgg8PA.cjs +2 -0
  46. package/dist/GraphEl-C2Fgg8PA.cjs.map +1 -0
  47. package/dist/{GraphEl-sVZvlyWe.js → GraphEl-oZwZiTHI.js} +6 -3
  48. package/dist/GraphEl-oZwZiTHI.js.map +1 -0
  49. package/dist/GriddedGraphs.cjs +1 -1
  50. package/dist/GriddedGraphs.d.ts +1 -0
  51. package/dist/GriddedGraphs.js +1 -1
  52. package/dist/GriddedGraphsFromConfig.d.ts +1 -0
  53. package/dist/HeatMap.cjs +1 -1
  54. package/dist/HeatMap.cjs.map +1 -1
  55. package/dist/HeatMap.js +179 -172
  56. package/dist/HeatMap.js.map +1 -1
  57. package/dist/Histogram.cjs +1 -1
  58. package/dist/Histogram.js +1 -1
  59. package/dist/LineChartWithConfidenceInterval.cjs +1 -1
  60. package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
  61. package/dist/LineChartWithConfidenceInterval.js +370 -363
  62. package/dist/LineChartWithConfidenceInterval.js.map +1 -1
  63. package/dist/MultiGraphDashboard.d.ts +1 -0
  64. package/dist/MultiGraphDashboardFromConfig.d.ts +1 -0
  65. package/dist/MultiLineAltChart.cjs +1 -1
  66. package/dist/MultiLineAltChart.cjs.map +1 -1
  67. package/dist/MultiLineAltChart.js +328 -321
  68. package/dist/MultiLineAltChart.js.map +1 -1
  69. package/dist/MultiLineChart.cjs +1 -1
  70. package/dist/MultiLineChart.cjs.map +1 -1
  71. package/dist/MultiLineChart.js +375 -368
  72. package/dist/MultiLineChart.js.map +1 -1
  73. package/dist/ParetoChart.cjs +1 -1
  74. package/dist/ParetoChart.cjs.map +1 -1
  75. package/dist/ParetoChart.js +385 -378
  76. package/dist/ParetoChart.js.map +1 -1
  77. package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +1 -0
  78. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +1 -0
  79. package/dist/PerformanceIntensiveScrollStory.d.ts +1 -0
  80. package/dist/RadarChart.cjs +1 -1
  81. package/dist/RadarChart.cjs.map +1 -1
  82. package/dist/RadarChart.js +35 -34
  83. package/dist/RadarChart.js.map +1 -1
  84. package/dist/SankeyChart.cjs +1 -1
  85. package/dist/SankeyChart.cjs.map +1 -1
  86. package/dist/SankeyChart.js +176 -169
  87. package/dist/SankeyChart.js.map +1 -1
  88. package/dist/ScatterPlot.cjs +1 -1
  89. package/dist/ScatterPlot.cjs.map +1 -1
  90. package/dist/ScatterPlot.js +367 -360
  91. package/dist/ScatterPlot.js.map +1 -1
  92. package/dist/ScrollStory.d.ts +1 -0
  93. package/dist/SimpleLineChart.cjs +1 -1
  94. package/dist/SimpleLineChart.cjs.map +1 -1
  95. package/dist/SimpleLineChart.js +286 -279
  96. package/dist/SimpleLineChart.js.map +1 -1
  97. package/dist/SingleGraphDashboard.cjs +1 -1
  98. package/dist/SingleGraphDashboard.d.ts +1 -0
  99. package/dist/SingleGraphDashboard.js +1 -1
  100. package/dist/SingleGraphDashboardFromConfig.d.ts +1 -0
  101. package/dist/SingleGraphDashboardGeoHubMaps.d.ts +1 -0
  102. package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +1 -0
  103. package/dist/SingleGraphDashboardThreeDGraphs.d.ts +1 -0
  104. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +1 -0
  105. package/dist/SlopeChart.cjs +1 -1
  106. package/dist/SlopeChart.cjs.map +1 -1
  107. package/dist/SlopeChart.js +243 -236
  108. package/dist/SlopeChart.js.map +1 -1
  109. package/dist/SparkLine.cjs +1 -1
  110. package/dist/SparkLine.js +2 -2
  111. package/dist/StripChart.cjs +1 -1
  112. package/dist/StripChart.cjs.map +1 -1
  113. package/dist/StripChart.js +293 -286
  114. package/dist/StripChart.js.map +1 -1
  115. package/dist/TreeMapGraph.cjs +1 -1
  116. package/dist/TreeMapGraph.cjs.map +1 -1
  117. package/dist/TreeMapGraph.js +222 -215
  118. package/dist/TreeMapGraph.js.map +1 -1
  119. package/dist/Types.d.ts +1 -0
  120. package/dist/{area-BE2wo7fv.js → area-B6r7cv2o.js} +5 -5
  121. package/dist/{area-BE2wo7fv.js.map → area-B6r7cv2o.js.map} +1 -1
  122. package/dist/area-C1gxfNGD.cjs +2 -0
  123. package/dist/{area-D3Qx7k7K.cjs.map → area-C1gxfNGD.cjs.map} +1 -1
  124. package/dist/array-DMyR1sql.cjs +2 -0
  125. package/dist/array-DMyR1sql.cjs.map +1 -0
  126. package/dist/array-USo-Szhp.js +13 -0
  127. package/dist/array-USo-Szhp.js.map +1 -0
  128. package/dist/{ensureCompleteData-DS7gCvVd.js → ensureCompleteData-DH5c52Ub.js} +6 -6
  129. package/dist/{ensureCompleteData-DS7gCvVd.js.map → ensureCompleteData-DH5c52Ub.js.map} +1 -1
  130. package/dist/{ensureCompleteData-Oib-vGb0.cjs → ensureCompleteData-pZ9QO6kB.cjs} +2 -2
  131. package/dist/{ensureCompleteData-Oib-vGb0.cjs.map → ensureCompleteData-pZ9QO6kB.cjs.map} +1 -1
  132. package/dist/index-Blvf-Q3U.cjs +2 -0
  133. package/dist/{index-CF5hnGvG.cjs.map → index-Blvf-Q3U.cjs.map} +1 -1
  134. package/dist/index-D1RrKgK6.js +337 -0
  135. package/dist/index-D1RrKgK6.js.map +1 -0
  136. package/dist/index.cjs +1 -1
  137. package/dist/index.d.ts +7 -0
  138. package/dist/index.js +1 -1
  139. package/dist/line-DFlZsxI1.js +144 -0
  140. package/dist/line-DFlZsxI1.js.map +1 -0
  141. package/dist/line-DaEMhXmx.cjs +2 -0
  142. package/dist/line-DaEMhXmx.cjs.map +1 -0
  143. package/dist/style.css +1 -1
  144. package/package.json +1 -1
  145. package/dist/EmptyState-BZo1BbAn.js.map +0 -1
  146. package/dist/EmptyState-sAEZ_5rU.cjs +0 -2
  147. package/dist/EmptyState-sAEZ_5rU.cjs.map +0 -1
  148. package/dist/GraphEl-YKUlz-37.cjs +0 -2
  149. package/dist/GraphEl-YKUlz-37.cjs.map +0 -1
  150. package/dist/GraphEl-sVZvlyWe.js.map +0 -1
  151. package/dist/area-D3Qx7k7K.cjs +0 -2
  152. package/dist/array-B7TkkRH0.js +0 -89
  153. package/dist/array-B7TkkRH0.js.map +0 -1
  154. package/dist/array-DKbXV8lR.cjs +0 -2
  155. package/dist/array-DKbXV8lR.cjs.map +0 -1
  156. package/dist/index-CF5hnGvG.cjs +0 -2
  157. package/dist/index-DPGq3eIL.js +0 -330
  158. package/dist/index-DPGq3eIL.js.map +0 -1
  159. package/dist/line-CPfhohvF.js +0 -68
  160. package/dist/line-CPfhohvF.js.map +0 -1
  161. package/dist/line-DHV4JwCR.cjs +0 -2
  162. package/dist/line-DHV4JwCR.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DonutChart.cjs","sources":["../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../src/Components/Graphs/DonutChart/Graph.tsx","../src/Components/Graphs/DonutChart/index.tsx"],"sourcesContent":["export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it’s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport isEqual from 'fast-deep-equal';\r\nimport { pie, arc } from 'd3-shape';\r\nimport { useState } from 'react';\r\nimport { H2, P } from '@undp/design-system-react/Typography';\r\n\r\nimport { ClassNameObject, DonutChartDataType, StyleObject } from '@/Types';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\n\r\ninterface Props {\r\n mainText?: string | { label: string; suffix?: string; prefix?: string };\r\n radius: number;\r\n colors: string[];\r\n subNote?: string;\r\n strokeWidth: number;\r\n data: DonutChartDataType[];\r\n\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n\r\n onSeriesMouseOver?: (_d: any) => void;\r\n\r\n onSeriesMouseClick?: (_d: any) => void;\r\n colorDomain: string[];\r\n resetSelectionOnDoubleClick: boolean;\r\n\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n precision: number;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n mainText,\r\n data,\r\n radius,\r\n colors,\r\n subNote,\r\n strokeWidth,\r\n tooltip,\r\n onSeriesMouseOver,\r\n onSeriesMouseClick,\r\n colorDomain,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n precision,\r\n } = props;\r\n const pieData = pie()\r\n .sort(null)\r\n .startAngle(0)\r\n\r\n .value((d: any) => d.size);\r\n\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n\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 return (\r\n <>\r\n <svg\r\n width={`${radius * 2}px`}\r\n height={`${radius * 2}px`}\r\n viewBox={`0 0 ${radius * 2} ${radius * 2}`}\r\n direction='ltr'\r\n className='mx-auto'\r\n >\r\n <g transform={`translate(${radius} ${radius})`}>\r\n {mainText || subNote ? (\r\n <foreignObject\r\n y={0 - (radius - strokeWidth)}\r\n x={0 - (radius - strokeWidth)}\r\n width={2 * (radius - strokeWidth)}\r\n height={2 * (radius - strokeWidth)}\r\n >\r\n <div className='flex flex-col gap-0.5 justify-center items-center h-inherit py-0 px-4'>\r\n {mainText ? (\r\n <H2\r\n marginBottom='none'\r\n className='donut-main-text text-primary-gray-700 dark:text-primary-gray-100 leading-none text-center'\r\n >\r\n {typeof mainText === 'string'\r\n ? mainText\r\n : data.findIndex(d => d.label === mainText.label) !== -1\r\n ? numberFormattingFunction(\r\n data[data.findIndex(d => d.label === mainText.label)].size,\r\n 'NA',\r\n precision,\r\n mainText.prefix,\r\n mainText.suffix,\r\n )\r\n : 'NA'}\r\n </H2>\r\n ) : null}\r\n {subNote ? (\r\n <P\r\n marginBottom='none'\r\n size='base'\r\n leading='none'\r\n className='donut-sub-note text-primary-gray-700 dark:text-primary-gray-100 text-center font-bold'\r\n >\r\n {subNote}\r\n </P>\r\n ) : typeof mainText === 'string' || !mainText ? null : (\r\n <P\r\n size='base'\r\n marginBottom='none'\r\n leading='none'\r\n className='donut-label text-primary-gray-700 dark:text-primary-gray-100 text-center font-bold'\r\n >\r\n {mainText.label}\r\n </P>\r\n )}\r\n </div>\r\n </foreignObject>\r\n ) : null}\r\n {pieData(data as any).map((d, i) => (\r\n <path\r\n key={i}\r\n d={\r\n arc()({\r\n innerRadius: radius - strokeWidth,\r\n outerRadius: radius,\r\n startAngle: d.startAngle,\r\n endAngle: d.endAngle,\r\n }) as string\r\n }\r\n style={{\r\n fill:\r\n colorDomain.indexOf((d.data as any).label) !== -1\r\n ? colors[colorDomain.indexOf((d.data as any).label) % colors.length]\r\n : Colors.gray,\r\n opacity: mouseOverData\r\n ? mouseOverData.label === (d.data as any).label\r\n ? 1\r\n : 0.3\r\n : 1,\r\n }}\r\n onMouseEnter={event => {\r\n setMouseOverData(d.data);\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.data) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d.data);\r\n if (onSeriesMouseClick) onSeriesMouseClick(d.data);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d.data);\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 ))}\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 ) : 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 { useEffect, useRef, useState } from 'react';\r\nimport { P } from '@undp/design-system-react/Typography';\r\nimport orderBy from 'lodash.orderby';\r\nimport { Spacer } from '@undp/design-system-react/Spacer';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport {\r\n DonutChartDataType,\r\n Languages,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\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: DonutChartDataType[];\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 /** Array of colors for each segment */\r\n colors?: string[];\r\n /** Domain of colors for the graph */\r\n colorDomain?: 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 /** Radius of the donut chart */\r\n radius?: 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\r\n // Graph Parameters\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Max width of the color scale as a css property */\r\n colorScaleMaxWidth?: string;\r\n /** Stroke width of the arcs and circle of the donut */\r\n strokeWidth?: number;\r\n /** Sorting order for data. This is overwritten by labelOrder prop */\r\n sortData?: 'asc' | 'desc';\r\n /** Large text at the center of the donut chart. If the type is an object then the text is the value in the data for the label mentioned in the object */\r\n mainText?: string | { label: string; suffix?: string; prefix?: string };\r\n /** Small text at the center of the donut chart */\r\n subNote?: string;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\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 DonutChart(props: Props) {\r\n const {\r\n mainText,\r\n graphTitle,\r\n colors = Colors.light.categoricalColors.colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n strokeWidth = 50,\r\n graphDescription,\r\n subNote,\r\n footNote,\r\n radius,\r\n data,\r\n showColorScale = true,\r\n padding,\r\n backgroundColor = false,\r\n tooltip,\r\n onSeriesMouseOver,\r\n graphID,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n colorDomain,\r\n sortData,\r\n language = 'en',\r\n theme = 'light',\r\n width,\r\n height,\r\n minHeight = 0,\r\n relativeHeight,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n colorScaleMaxWidth,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n precision = 2,\r\n } = props;\r\n\r\n const [graphRadius, setGraphRadius] = useState(0);\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 setGraphRadius(\r\n (Math.min(\r\n ...[\r\n entries[0].target.clientWidth || 620,\r\n entries[0].target.clientHeight || 480,\r\n radius || Infinity,\r\n ],\r\n ) || 420) / 2,\r\n );\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [radius]);\r\n\r\n const sortedData = sortData ? orderBy(data, ['size'], [sortData]) : data;\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 {data.length === 0 ? (\r\n <EmptyState />\r\n ) : (\r\n <>\r\n {showColorScale ? (\r\n <div\r\n className={cn(\r\n 'leading-0 flex mb-0 ml-auto mr-auto justify-center gap-x-3 gap-y-0 flex-wrap',\r\n classNames?.colorLegend,\r\n )}\r\n style={{ maxWidth: colorScaleMaxWidth }}\r\n aria-label='Color legend'\r\n >\r\n {sortedData.map((d, i) => (\r\n <div className='flex gap-2 items-center pb-3' key={i}>\r\n <div\r\n className='w-3 h-3 rounded-full'\r\n style={{\r\n backgroundColor:\r\n (colorDomain || sortedData.map(el => el.label)).indexOf(d.label) !== -1\r\n ? (colors || Colors[theme].categoricalColors.colors)[\r\n (colorDomain || sortedData.map(el => el.label)).indexOf(d.label) %\r\n (colors || Colors[theme].categoricalColors.colors).length\r\n ]\r\n : Colors.gray,\r\n }}\r\n />\r\n <P\r\n marginBottom='none'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n {d.label}:{' '}\r\n <span className='font-bold' style={{ fontSize: 'inherit' }}>\r\n {numberFormattingFunction(d.size, 'NA', precision, prefix, suffix)}\r\n </span>\r\n </P>\r\n </div>\r\n ))}\r\n </div>\r\n ) : null}\r\n <Spacer size='lg' />\r\n <GraphArea ref={graphDiv}>\r\n {graphRadius ? (\r\n <Graph\r\n mainText={mainText}\r\n data={sortedData}\r\n colors={colors}\r\n radius={graphRadius}\r\n subNote={subNote}\r\n strokeWidth={strokeWidth}\r\n tooltip={tooltip}\r\n colorDomain={colorDomain || sortedData.map(d => d.label)}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n precision={precision}\r\n />\r\n ) : null}\r\n </GraphArea>\r\n </>\r\n )}\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":["abs","atan2","cos","max","min","sin","sqrt","epsilon","pi","halfPi","tau","acos","x","asin","arcInnerRadius","d","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x0","y0","x1","y1","x2","y2","x3","y3","x10","y10","x32","y32","t","cornerTangents","r1","rc","cw","x01","y01","lo","ox","oy","x11","y11","x00","y00","dx","dy","d2","r","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","arc","innerRadius","outerRadius","cornerRadius","constant","padRadius","startAngle","endAngle","padAngle","context","path","withPath","buffer","r0","a0","a1","da","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","t0","t1","p0","p1","oc","ax","ay","bx","by","kc","lc","a","_","descending","b","identity","pie","value","sortValues","sort","data","i","n","array","j","k","sum","index","arcs","p","pa","v","Graph","props","$","_c","mainText","radius","colors","subNote","strokeWidth","tooltip","onSeriesMouseOver","onSeriesMouseClick","colorDomain","resetSelectionOnDoubleClick","detailsOnClick","styles","classNames","precision","pieData","_temp","mouseOverData","setMouseOverData","useState","undefined","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","t2","t3","t4","t5","t6","jsx","jsxs","H2","findIndex","d_1","label","numberFormattingFunction","d_0","size","prefix","suffix","P","t7","d_2","fill","indexOf","length","Colors","gray","opacity","event","clientY","clientX","isEqual","event_0","t8","map","t9","t10","t11","Tooltip","t12","modal","DetailsModal","t13","Fragment","DonutChart","graphTitle","light","categoricalColors","sources","graphDescription","footNote","showColorScale","padding","backgroundColor","graphID","graphDownload","dataDownload","sortData","language","theme","width","height","minHeight","relativeHeight","ariaLabel","colorScaleMaxWidth","graphRadius","setGraphRadius","graphDiv","useRef","graphParentDiv","useEffect","resizeObserver","ResizeObserver","entries","Math","target","clientWidth","clientHeight","Infinity","current","observe","disconnect","sortedData","orderBy","GraphContainer","graphContainer","GraphHeader","title","description","filter","EmptyState","cn","colorLegend","maxWidth","el","fontSize","Spacer","GraphArea","GraphFooter","footnote","source"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
1
+ {"version":3,"file":"DonutChart.cjs","sources":["../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../src/Utils/getArc.ts","../src/Components/Graphs/DonutChart/Graph.tsx","../src/Components/Graphs/DonutChart/index.tsx"],"sourcesContent":["export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","const polarToCartesian = (\r\n centerX: number,\r\n centerY: number,\r\n radius: number,\r\n angleInRadians: number,\r\n) => {\r\n return {\r\n x: centerX + radius * Math.cos(angleInRadians),\r\n y: centerY + radius * Math.sin(angleInRadians),\r\n };\r\n};\r\n\r\nexport function getArc(\r\n x: number,\r\n y: number,\r\n radius: number,\r\n startAngleInRadians: number,\r\n endAngleInRadians: number,\r\n) {\r\n const start = polarToCartesian(x, y, radius, startAngleInRadians);\r\n const end = polarToCartesian(x, y, radius, endAngleInRadians);\r\n const largeArcFlag = endAngleInRadians - startAngleInRadians <= Math.PI ? '0' : '1';\r\n const d = ['M', start.x, start.y, 'A', radius, radius, 0, largeArcFlag, 1, end.x, end.y].join(\r\n ' ',\r\n );\r\n return d;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport isEqual from 'fast-deep-equal';\r\nimport { pie } from 'd3-shape';\r\nimport { useRef, useState } from 'react';\r\nimport { H2, P } from '@undp/design-system-react/Typography';\r\nimport { AnimatePresence, motion, useInView } from 'motion/react';\r\n\r\nimport { AnimateDataType, ClassNameObject, DonutChartDataType, StyleObject } from '@/Types';\r\nimport { Tooltip } from '@/Components/Elements/Tooltip';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { DetailsModal } from '@/Components/Elements/DetailsModal';\r\nimport { getArc } from '@/Utils/getArc';\r\n\r\ninterface Props {\r\n mainText?: string | { label: string; suffix?: string; prefix?: string };\r\n radius: number;\r\n colors: string[];\r\n subNote?: string;\r\n strokeWidth: number;\r\n data: DonutChartDataType[];\r\n tooltip?: string | ((_d: any) => React.ReactNode);\r\n onSeriesMouseOver?: (_d: any) => void;\r\n onSeriesMouseClick?: (_d: any) => void;\r\n colorDomain: string[];\r\n resetSelectionOnDoubleClick: boolean;\r\n detailsOnClick?: string | ((_d: any) => React.ReactNode);\r\n styles?: StyleObject;\r\n classNames?: ClassNameObject;\r\n precision: number;\r\n animate: AnimateDataType;\r\n trackColor: string;\r\n}\r\n\r\nexport function Graph(props: Props) {\r\n const {\r\n mainText,\r\n data,\r\n radius,\r\n colors,\r\n subNote,\r\n strokeWidth,\r\n tooltip,\r\n onSeriesMouseOver,\r\n onSeriesMouseClick,\r\n colorDomain,\r\n resetSelectionOnDoubleClick,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n precision,\r\n animate,\r\n trackColor,\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 const pieData = pie()\r\n .sort(null)\r\n .startAngle(0)\r\n .value((d: any) => d.size);\r\n\r\n const [mouseOverData, setMouseOverData] = useState<any>(undefined);\r\n\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 return (\r\n <>\r\n <motion.svg\r\n ref={svgRef}\r\n width={`${radius * 2}px`}\r\n height={`${radius * 2}px`}\r\n viewBox={`0 0 ${radius * 2} ${radius * 2}`}\r\n direction='ltr'\r\n className='mx-auto'\r\n >\r\n <motion.g transform={`translate(${radius} ${radius})`}>\r\n {mainText || subNote ? (\r\n <foreignObject\r\n y={0 - (radius - strokeWidth)}\r\n x={0 - (radius - strokeWidth)}\r\n width={2 * (radius - strokeWidth)}\r\n height={2 * (radius - strokeWidth)}\r\n >\r\n <div className='flex flex-col gap-0.5 justify-center items-center h-inherit py-0 px-4'>\r\n {mainText ? (\r\n <H2\r\n marginBottom='none'\r\n className='donut-main-text text-primary-gray-700 dark:text-primary-gray-100 leading-none text-center'\r\n >\r\n {typeof mainText === 'string'\r\n ? mainText\r\n : data.findIndex(d => d.label === mainText.label) !== -1\r\n ? numberFormattingFunction(\r\n data[data.findIndex(d => d.label === mainText.label)].size,\r\n 'NA',\r\n precision,\r\n mainText.prefix,\r\n mainText.suffix,\r\n )\r\n : 'NA'}\r\n </H2>\r\n ) : null}\r\n {subNote ? (\r\n <P\r\n marginBottom='none'\r\n size='base'\r\n leading='none'\r\n className='donut-sub-note text-primary-gray-700 dark:text-primary-gray-100 text-center font-bold'\r\n >\r\n {subNote}\r\n </P>\r\n ) : typeof mainText === 'string' || !mainText ? null : (\r\n <P\r\n size='base'\r\n marginBottom='none'\r\n leading='none'\r\n className='donut-label text-primary-gray-700 dark:text-primary-gray-100 text-center font-bold'\r\n >\r\n {mainText.label}\r\n </P>\r\n )}\r\n </div>\r\n </foreignObject>\r\n ) : null}\r\n <circle\r\n cx={0}\r\n cy={0}\r\n r={radius - strokeWidth / 2}\r\n fill='none'\r\n stroke={trackColor}\r\n strokeWidth={strokeWidth}\r\n />\r\n <AnimatePresence>\r\n {pieData(data as any).map((d, i) => (\r\n <motion.path\r\n key={i}\r\n variants={{\r\n initial: {\r\n pathLength: 0,\r\n d: getArc(\r\n 0,\r\n 0,\r\n radius - strokeWidth / 2,\r\n d.startAngle - Math.PI / 2,\r\n d.endAngle - Math.PI / 2,\r\n ),\r\n opacity: mouseOverData\r\n ? mouseOverData.label === (d.data as any).label\r\n ? 1\r\n : 0.3\r\n : 1,\r\n },\r\n whileInView: {\r\n pathLength: 1,\r\n d: getArc(\r\n 0,\r\n 0,\r\n radius - strokeWidth / 2,\r\n d.startAngle - Math.PI / 2,\r\n d.endAngle - Math.PI / 2,\r\n ),\r\n opacity: mouseOverData\r\n ? mouseOverData.label === (d.data as any).label\r\n ? 1\r\n : 0.3\r\n : 1,\r\n transition: { duration: animate.duration },\r\n },\r\n }}\r\n initial='initial'\r\n animate={isInView ? 'whileInView' : 'initial'}\r\n exit={{ opacity: 0, transition: { duration: animate.duration } }}\r\n style={{\r\n stroke:\r\n colorDomain.indexOf((d.data as any).label) !== -1\r\n ? colors[colorDomain.indexOf((d.data as any).label) % colors.length]\r\n : Colors.gray,\r\n strokeWidth,\r\n fill: 'none',\r\n }}\r\n onMouseEnter={event => {\r\n setMouseOverData(d.data);\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.data) && resetSelectionOnDoubleClick) {\r\n setMouseClickData(undefined);\r\n onSeriesMouseClick?.(undefined);\r\n } else {\r\n setMouseClickData(d.data);\r\n if (onSeriesMouseClick) onSeriesMouseClick(d.data);\r\n }\r\n }\r\n }}\r\n onMouseMove={event => {\r\n setMouseOverData(d.data);\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 ))}\r\n </AnimatePresence>\r\n </motion.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 { useEffect, useRef, useState } from 'react';\r\nimport { P } from '@undp/design-system-react/Typography';\r\nimport orderBy from 'lodash.orderby';\r\nimport { Spacer } from '@undp/design-system-react/Spacer';\r\nimport { cn } from '@undp/design-system-react/cn';\r\n\r\nimport { Graph } from './Graph';\r\n\r\nimport {\r\n DonutChartDataType,\r\n Languages,\r\n SourcesDataType,\r\n StyleObject,\r\n ClassNameObject,\r\n AnimateDataType,\r\n} from '@/Types';\r\nimport { numberFormattingFunction } from '@/Utils/numberFormattingFunction';\r\nimport { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { EmptyState } from '@/Components/Elements/EmptyState';\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: DonutChartDataType[];\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 /** Array of colors for each segment */\r\n colors?: string[];\r\n /** Domain of colors for the graph */\r\n colorDomain?: 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 /** Radius of the donut chart */\r\n radius?: 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\r\n // Graph Parameters\r\n /** Toggle visibility of color scale. This is only applicable if the data props hae color parameter */\r\n showColorScale?: boolean;\r\n /** Max width of the color scale as a css property */\r\n colorScaleMaxWidth?: string;\r\n /** Stroke width of the arcs and circle of the donut */\r\n strokeWidth?: number;\r\n /** Sorting order for data. This is overwritten by labelOrder prop */\r\n sortData?: 'asc' | 'desc';\r\n /** Toggles if the graph animates in when loaded. */\r\n animate?: boolean | AnimateDataType;\r\n /** Large text at the center of the donut chart. If the type is an object then the text is the value in the data for the label mentioned in the object */\r\n mainText?: string | { label: string; suffix?: string; prefix?: string };\r\n /** Small text at the center of the donut chart */\r\n subNote?: string;\r\n /** Specifies the number of decimal places to display in the value. */\r\n precision?: number;\r\n /** Track color (i.e. the color of the donut chart's background) of the donut chart */\r\n trackColor?: 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 DonutChart(props: Props) {\r\n const {\r\n mainText,\r\n graphTitle,\r\n colors = Colors.light.categoricalColors.colors,\r\n suffix = '',\r\n sources,\r\n prefix = '',\r\n strokeWidth = 50,\r\n graphDescription,\r\n subNote,\r\n footNote,\r\n radius,\r\n data,\r\n showColorScale = true,\r\n padding,\r\n backgroundColor = false,\r\n tooltip,\r\n onSeriesMouseOver,\r\n graphID,\r\n onSeriesMouseClick,\r\n graphDownload = false,\r\n dataDownload = false,\r\n colorDomain,\r\n sortData,\r\n language = 'en',\r\n theme = 'light',\r\n width,\r\n height,\r\n minHeight = 0,\r\n relativeHeight,\r\n ariaLabel,\r\n resetSelectionOnDoubleClick = true,\r\n colorScaleMaxWidth,\r\n detailsOnClick,\r\n styles,\r\n classNames,\r\n precision = 2,\r\n animate = false,\r\n trackColor = Colors.light.grays['gray-200'],\r\n } = props;\r\n\r\n const [graphRadius, setGraphRadius] = useState(0);\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 setGraphRadius(\r\n (Math.min(\r\n ...[\r\n entries[0].target.clientWidth || 620,\r\n entries[0].target.clientHeight || 480,\r\n radius || Infinity,\r\n ],\r\n ) || 420) / 2,\r\n );\r\n });\r\n if (graphDiv.current) {\r\n resizeObserver.observe(graphDiv.current);\r\n }\r\n return () => resizeObserver.disconnect();\r\n }, [radius]);\r\n\r\n const sortedData = sortData ? orderBy(data, ['size'], [sortData]) : data;\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.length > 0 ? (\r\n <>\r\n <div\r\n className={cn(\r\n 'leading-0 flex mb-0 ml-auto mr-auto justify-center gap-x-3 gap-y-0 flex-wrap',\r\n classNames?.colorLegend,\r\n )}\r\n style={{ maxWidth: colorScaleMaxWidth }}\r\n aria-label='Color legend'\r\n >\r\n {sortedData.map((d, i) => (\r\n <div className='flex gap-2 items-center pb-3' key={i}>\r\n <div\r\n className='w-3 h-3 rounded-full'\r\n style={{\r\n backgroundColor:\r\n (colorDomain || sortedData.map(el => el.label)).indexOf(d.label) !== -1\r\n ? (colors || Colors[theme].categoricalColors.colors)[\r\n (colorDomain || sortedData.map(el => el.label)).indexOf(d.label) %\r\n (colors || Colors[theme].categoricalColors.colors).length\r\n ]\r\n : Colors.gray,\r\n }}\r\n />\r\n <P\r\n marginBottom='none'\r\n size='sm'\r\n className='text-primary-gray-700 dark:text-primary-gray-100'\r\n >\r\n {d.label}:{' '}\r\n <span className='font-bold' style={{ fontSize: 'inherit' }}>\r\n {numberFormattingFunction(d.size, 'NA', precision, prefix, suffix)}\r\n </span>\r\n </P>\r\n </div>\r\n ))}\r\n </div>\r\n <Spacer size='lg' />\r\n </>\r\n ) : null}\r\n <GraphArea ref={graphDiv}>\r\n {data.length === 0 && <EmptyState />}\r\n {graphRadius && data.length > 0 ? (\r\n <Graph\r\n mainText={mainText}\r\n data={sortedData}\r\n colors={colors}\r\n radius={graphRadius}\r\n subNote={subNote}\r\n strokeWidth={strokeWidth}\r\n tooltip={tooltip}\r\n colorDomain={colorDomain || sortedData.map(d => d.label)}\r\n onSeriesMouseOver={onSeriesMouseOver}\r\n onSeriesMouseClick={onSeriesMouseClick}\r\n resetSelectionOnDoubleClick={resetSelectionOnDoubleClick}\r\n styles={styles}\r\n detailsOnClick={detailsOnClick}\r\n precision={precision}\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 trackColor={trackColor}\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":["pi","tau","descending","a","b","identity","d","pie","value","sortValues","sort","startAngle","constant","endAngle","padAngle","data","i","n","array","j","k","sum","index","arcs","a0","da","a1","p","pa","v","_","polarToCartesian","centerX","centerY","radius","angleInRadians","x","Math","cos","y","sin","getArc","startAngleInRadians","endAngleInRadians","start","end","largeArcFlag","PI","join","Graph","props","$","_c","mainText","colors","subNote","strokeWidth","tooltip","onSeriesMouseOver","onSeriesMouseClick","colorDomain","resetSelectionOnDoubleClick","detailsOnClick","styles","classNames","precision","animate","trackColor","svgRef","useRef","t0","amount","once","isInView","useInView","pieData","_temp","mouseOverData","setMouseOverData","useState","undefined","mouseClickData","setMouseClickData","eventX","setEventX","eventY","setEventY","t1","motion","t2","t3","t4","t5","t6","t7","t8","t9","jsx","jsxs","H2","findIndex","d_1","label","numberFormattingFunction","d_0","size","prefix","suffix","P","t10","t11","T0","AnimatePresence","t12","duration","d_2","initial","pathLength","opacity","whileInView","transition","stroke","indexOf","length","Colors","gray","fill","event","clientY","clientX","isEqual","event_0","t13","map","t14","t15","g","t16","svg","t17","Tooltip","t18","modal","DetailsModal","t19","Fragment","DonutChart","graphTitle","light","categoricalColors","sources","graphDescription","footNote","showColorScale","padding","backgroundColor","graphID","graphDownload","dataDownload","sortData","language","theme","width","height","minHeight","relativeHeight","ariaLabel","colorScaleMaxWidth","grays","graphRadius","setGraphRadius","graphDiv","graphParentDiv","useEffect","resizeObserver","ResizeObserver","entries","min","target","clientWidth","clientHeight","Infinity","current","observe","disconnect","sortedData","orderBy","GraphContainer","graphContainer","GraphHeader","title","description","filter","cn","colorLegend","maxWidth","el","fontSize","Spacer","GraphArea","EmptyState","GraphFooter","footnote","source"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -1,5 +1,11 @@
1
1
  import { JSX } from 'react/jsx-runtime';
2
2
 
3
+ declare interface AnimateDataType {
4
+ duration: number;
5
+ once: boolean;
6
+ amount: 'some' | 'all' | number;
7
+ }
8
+
3
9
  declare interface AxesClassNameObject {
4
10
  gridLines?: string;
5
11
  labels?: string;
@@ -90,6 +96,8 @@ declare interface Props {
90
96
  strokeWidth?: number;
91
97
  /** Sorting order for data. This is overwritten by labelOrder prop */
92
98
  sortData?: 'asc' | 'desc';
99
+ /** Toggles if the graph animates in when loaded. */
100
+ animate?: boolean | AnimateDataType;
93
101
  /** Large text at the center of the donut chart. If the type is an object then the text is the value in the data for the label mentioned in the object */
94
102
  mainText?: string | {
95
103
  label: string;
@@ -100,6 +108,8 @@ declare interface Props {
100
108
  subNote?: string;
101
109
  /** Specifies the number of decimal places to display in the value. */
102
110
  precision?: number;
111
+ /** Track color (i.e. the color of the donut chart's background) of the donut chart */
112
+ trackColor?: string;
103
113
  /** Enable graph download option as png */
104
114
  graphDownload?: boolean;
105
115
  /** Enable data download option as a csv */