@automattic/charts 0.57.0 → 0.59.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 (267) hide show
  1. package/CHANGELOG.md +36 -2
  2. package/README.md +7 -54
  3. package/dist/index.cjs +9607 -21
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.css +32 -49
  6. package/dist/index.css.map +1 -1
  7. package/dist/index.d.cts +1612 -33
  8. package/dist/index.d.ts +1612 -33
  9. package/dist/index.js +9640 -54
  10. package/dist/index.js.map +1 -1
  11. package/package.json +9 -126
  12. package/src/charts/bar-chart/bar-chart.module.scss +0 -5
  13. package/src/charts/bar-chart/bar-chart.tsx +142 -149
  14. package/src/charts/bar-chart/test/bar-chart.test.tsx +48 -31
  15. package/src/charts/leaderboard-chart/leaderboard-chart.tsx +54 -74
  16. package/src/charts/leaderboard-chart/test/leaderboard-chart.test.tsx +4 -5
  17. package/src/charts/leaderboard-chart/types.ts +1 -11
  18. package/src/charts/line-chart/line-chart.module.scss +0 -5
  19. package/src/charts/line-chart/line-chart.tsx +202 -193
  20. package/src/charts/line-chart/private/line-chart-annotations-overlay.tsx +1 -2
  21. package/src/charts/line-chart/test/line-chart.test.tsx +49 -27
  22. package/src/charts/line-chart/types.ts +0 -1
  23. package/src/charts/pie-chart/pie-chart.module.scss +2 -10
  24. package/src/charts/pie-chart/pie-chart.tsx +212 -212
  25. package/src/charts/pie-chart/test/composition-api.test.tsx +44 -3
  26. package/src/charts/pie-chart/test/pie-chart.test.tsx +51 -44
  27. package/src/charts/pie-semi-circle-chart/pie-semi-circle-chart.module.scss +2 -8
  28. package/src/charts/pie-semi-circle-chart/pie-semi-circle-chart.tsx +166 -168
  29. package/src/charts/pie-semi-circle-chart/test/pie-semi-circle-chart.test.tsx +58 -30
  30. package/src/charts/private/chart-composition/index.ts +2 -0
  31. package/src/charts/private/chart-composition/render-legend-slot.ts +22 -0
  32. package/src/charts/private/chart-composition/test/render-legend-slot.test.tsx +60 -0
  33. package/src/charts/private/chart-composition/test/use-chart-children.test.tsx +91 -0
  34. package/src/charts/private/chart-composition/use-chart-children.ts +34 -2
  35. package/src/charts/private/chart-layout/chart-layout.module.scss +7 -0
  36. package/src/charts/private/chart-layout/chart-layout.tsx +106 -0
  37. package/src/charts/private/chart-layout/index.ts +2 -0
  38. package/src/charts/private/chart-layout/test/chart-layout.test.tsx +167 -0
  39. package/src/charts/private/single-chart-context/single-chart-context.tsx +2 -2
  40. package/src/charts/private/svg-empty-state/index.ts +1 -0
  41. package/src/charts/private/svg-empty-state/svg-empty-state.module.scss +7 -0
  42. package/src/charts/private/svg-empty-state/svg-empty-state.tsx +40 -0
  43. package/src/components/legend/hooks/test/use-chart-legend-items.test.tsx +12 -8
  44. package/src/components/legend/hooks/use-chart-legend-items.ts +12 -13
  45. package/src/components/legend/index.ts +1 -8
  46. package/src/components/legend/legend.tsx +33 -8
  47. package/src/components/legend/private/base-legend.module.scss +19 -37
  48. package/src/components/legend/private/base-legend.tsx +0 -2
  49. package/src/components/legend/test/legend.test.tsx +93 -1
  50. package/src/components/legend/types.ts +7 -34
  51. package/src/hooks/index.ts +1 -1
  52. package/src/hooks/use-data-with-percentages.ts +24 -0
  53. package/src/hooks/use-interactive-legend-data.ts +18 -15
  54. package/src/index.ts +66 -9
  55. package/src/providers/chart-context/global-charts-provider.tsx +7 -1
  56. package/src/providers/chart-context/hooks/use-chart-registration.ts +2 -1
  57. package/src/providers/chart-context/types.ts +2 -2
  58. package/src/types.ts +110 -45
  59. package/src/utils/date-parsing.ts +10 -1
  60. package/src/utils/test/date-parsing.test.ts +12 -0
  61. package/src/utils/test/resolve-css-var.test.ts +4 -2
  62. package/tsup.config.ts +1 -1
  63. package/dist/base-tooltip-DOq93wjU.d.cts +0 -38
  64. package/dist/base-tooltip-DOq93wjU.d.ts +0 -38
  65. package/dist/charts/bar-chart/index.cjs +0 -15
  66. package/dist/charts/bar-chart/index.cjs.map +0 -1
  67. package/dist/charts/bar-chart/index.css +0 -153
  68. package/dist/charts/bar-chart/index.css.map +0 -1
  69. package/dist/charts/bar-chart/index.d.cts +0 -37
  70. package/dist/charts/bar-chart/index.d.ts +0 -37
  71. package/dist/charts/bar-chart/index.js +0 -15
  72. package/dist/charts/bar-chart/index.js.map +0 -1
  73. package/dist/charts/bar-list-chart/index.cjs +0 -16
  74. package/dist/charts/bar-list-chart/index.cjs.map +0 -1
  75. package/dist/charts/bar-list-chart/index.css +0 -153
  76. package/dist/charts/bar-list-chart/index.css.map +0 -1
  77. package/dist/charts/bar-list-chart/index.d.cts +0 -92
  78. package/dist/charts/bar-list-chart/index.d.ts +0 -92
  79. package/dist/charts/bar-list-chart/index.js +0 -16
  80. package/dist/charts/bar-list-chart/index.js.map +0 -1
  81. package/dist/charts/conversion-funnel-chart/index.cjs +0 -11
  82. package/dist/charts/conversion-funnel-chart/index.cjs.map +0 -1
  83. package/dist/charts/conversion-funnel-chart/index.css +0 -251
  84. package/dist/charts/conversion-funnel-chart/index.css.map +0 -1
  85. package/dist/charts/conversion-funnel-chart/index.d.cts +0 -97
  86. package/dist/charts/conversion-funnel-chart/index.d.ts +0 -97
  87. package/dist/charts/conversion-funnel-chart/index.js +0 -11
  88. package/dist/charts/conversion-funnel-chart/index.js.map +0 -1
  89. package/dist/charts/geo-chart/index.cjs +0 -13
  90. package/dist/charts/geo-chart/index.cjs.map +0 -1
  91. package/dist/charts/geo-chart/index.css +0 -117
  92. package/dist/charts/geo-chart/index.css.map +0 -1
  93. package/dist/charts/geo-chart/index.d.cts +0 -67
  94. package/dist/charts/geo-chart/index.d.ts +0 -67
  95. package/dist/charts/geo-chart/index.js +0 -13
  96. package/dist/charts/geo-chart/index.js.map +0 -1
  97. package/dist/charts/leaderboard-chart/index.cjs +0 -20
  98. package/dist/charts/leaderboard-chart/index.cjs.map +0 -1
  99. package/dist/charts/leaderboard-chart/index.css +0 -172
  100. package/dist/charts/leaderboard-chart/index.css.map +0 -1
  101. package/dist/charts/leaderboard-chart/index.d.cts +0 -46
  102. package/dist/charts/leaderboard-chart/index.d.ts +0 -46
  103. package/dist/charts/leaderboard-chart/index.js +0 -20
  104. package/dist/charts/leaderboard-chart/index.js.map +0 -1
  105. package/dist/charts/line-chart/index.cjs +0 -15
  106. package/dist/charts/line-chart/index.cjs.map +0 -1
  107. package/dist/charts/line-chart/index.css +0 -225
  108. package/dist/charts/line-chart/index.css.map +0 -1
  109. package/dist/charts/line-chart/index.d.cts +0 -99
  110. package/dist/charts/line-chart/index.d.ts +0 -99
  111. package/dist/charts/line-chart/index.js +0 -15
  112. package/dist/charts/line-chart/index.js.map +0 -1
  113. package/dist/charts/pie-chart/index.cjs +0 -18
  114. package/dist/charts/pie-chart/index.cjs.map +0 -1
  115. package/dist/charts/pie-chart/index.css +0 -143
  116. package/dist/charts/pie-chart/index.css.map +0 -1
  117. package/dist/charts/pie-chart/index.d.cts +0 -97
  118. package/dist/charts/pie-chart/index.d.ts +0 -97
  119. package/dist/charts/pie-chart/index.js +0 -18
  120. package/dist/charts/pie-chart/index.js.map +0 -1
  121. package/dist/charts/pie-semi-circle-chart/index.cjs +0 -17
  122. package/dist/charts/pie-semi-circle-chart/index.cjs.map +0 -1
  123. package/dist/charts/pie-semi-circle-chart/index.css +0 -144
  124. package/dist/charts/pie-semi-circle-chart/index.css.map +0 -1
  125. package/dist/charts/pie-semi-circle-chart/index.d.cts +0 -94
  126. package/dist/charts/pie-semi-circle-chart/index.d.ts +0 -94
  127. package/dist/charts/pie-semi-circle-chart/index.js +0 -17
  128. package/dist/charts/pie-semi-circle-chart/index.js.map +0 -1
  129. package/dist/charts/sparkline/index.cjs +0 -16
  130. package/dist/charts/sparkline/index.cjs.map +0 -1
  131. package/dist/charts/sparkline/index.css +0 -242
  132. package/dist/charts/sparkline/index.css.map +0 -1
  133. package/dist/charts/sparkline/index.d.cts +0 -113
  134. package/dist/charts/sparkline/index.d.ts +0 -113
  135. package/dist/charts/sparkline/index.js +0 -16
  136. package/dist/charts/sparkline/index.js.map +0 -1
  137. package/dist/chunk-2A34OA5O.cjs +0 -51
  138. package/dist/chunk-2A34OA5O.cjs.map +0 -1
  139. package/dist/chunk-2NCY7R4G.js +0 -3897
  140. package/dist/chunk-2NCY7R4G.js.map +0 -1
  141. package/dist/chunk-32DH6JDF.js +0 -1263
  142. package/dist/chunk-32DH6JDF.js.map +0 -1
  143. package/dist/chunk-4OPFE4RM.js +0 -614
  144. package/dist/chunk-4OPFE4RM.js.map +0 -1
  145. package/dist/chunk-6CCZL2JJ.js +0 -63
  146. package/dist/chunk-6CCZL2JJ.js.map +0 -1
  147. package/dist/chunk-77OKCVQN.cjs +0 -421
  148. package/dist/chunk-77OKCVQN.cjs.map +0 -1
  149. package/dist/chunk-7FQX4ALL.cjs +0 -219
  150. package/dist/chunk-7FQX4ALL.cjs.map +0 -1
  151. package/dist/chunk-ASLARV7L.cjs +0 -81
  152. package/dist/chunk-ASLARV7L.cjs.map +0 -1
  153. package/dist/chunk-BCX5THDQ.js +0 -403
  154. package/dist/chunk-BCX5THDQ.js.map +0 -1
  155. package/dist/chunk-BPYKWMI7.js +0 -194
  156. package/dist/chunk-BPYKWMI7.js.map +0 -1
  157. package/dist/chunk-CZGYJKG6.js +0 -421
  158. package/dist/chunk-CZGYJKG6.js.map +0 -1
  159. package/dist/chunk-D2UH4CFE.cjs +0 -120
  160. package/dist/chunk-D2UH4CFE.cjs.map +0 -1
  161. package/dist/chunk-DAU3HNEG.js +0 -344
  162. package/dist/chunk-DAU3HNEG.js.map +0 -1
  163. package/dist/chunk-H2V4JMSA.js +0 -219
  164. package/dist/chunk-H2V4JMSA.js.map +0 -1
  165. package/dist/chunk-I2276W3I.cjs +0 -66
  166. package/dist/chunk-I2276W3I.cjs.map +0 -1
  167. package/dist/chunk-I35UYJJR.cjs +0 -468
  168. package/dist/chunk-I35UYJJR.cjs.map +0 -1
  169. package/dist/chunk-IU4DYUAV.js +0 -120
  170. package/dist/chunk-IU4DYUAV.js.map +0 -1
  171. package/dist/chunk-KXRWNFQJ.js +0 -51
  172. package/dist/chunk-KXRWNFQJ.js.map +0 -1
  173. package/dist/chunk-OP6PHB2U.js +0 -81
  174. package/dist/chunk-OP6PHB2U.js.map +0 -1
  175. package/dist/chunk-PXLEMUGJ.js +0 -165
  176. package/dist/chunk-PXLEMUGJ.js.map +0 -1
  177. package/dist/chunk-RCY6XLGU.cjs +0 -63
  178. package/dist/chunk-RCY6XLGU.cjs.map +0 -1
  179. package/dist/chunk-RHHVEJHJ.cjs +0 -1263
  180. package/dist/chunk-RHHVEJHJ.cjs.map +0 -1
  181. package/dist/chunk-TO3OQBXG.cjs +0 -165
  182. package/dist/chunk-TO3OQBXG.cjs.map +0 -1
  183. package/dist/chunk-V36ERY7Y.js +0 -375
  184. package/dist/chunk-V36ERY7Y.js.map +0 -1
  185. package/dist/chunk-VJM5XCB4.cjs +0 -614
  186. package/dist/chunk-VJM5XCB4.cjs.map +0 -1
  187. package/dist/chunk-VTS3PNMS.cjs +0 -344
  188. package/dist/chunk-VTS3PNMS.cjs.map +0 -1
  189. package/dist/chunk-WLODYNLB.js +0 -1067
  190. package/dist/chunk-WLODYNLB.js.map +0 -1
  191. package/dist/chunk-XKRJL2QT.cjs +0 -375
  192. package/dist/chunk-XKRJL2QT.cjs.map +0 -1
  193. package/dist/chunk-XWYZIFZW.js +0 -66
  194. package/dist/chunk-XWYZIFZW.js.map +0 -1
  195. package/dist/chunk-Y3NNQMAX.cjs +0 -194
  196. package/dist/chunk-Y3NNQMAX.cjs.map +0 -1
  197. package/dist/chunk-YE2T52VZ.cjs +0 -1067
  198. package/dist/chunk-YE2T52VZ.cjs.map +0 -1
  199. package/dist/chunk-Z26M4V2M.js +0 -468
  200. package/dist/chunk-Z26M4V2M.js.map +0 -1
  201. package/dist/chunk-Z45KX47P.cjs +0 -3897
  202. package/dist/chunk-Z45KX47P.cjs.map +0 -1
  203. package/dist/chunk-ZH4F5RMG.cjs +0 -403
  204. package/dist/chunk-ZH4F5RMG.cjs.map +0 -1
  205. package/dist/components/legend/index.cjs +0 -11
  206. package/dist/components/legend/index.cjs.map +0 -1
  207. package/dist/components/legend/index.css +0 -103
  208. package/dist/components/legend/index.css.map +0 -1
  209. package/dist/components/legend/index.d.cts +0 -37
  210. package/dist/components/legend/index.d.ts +0 -37
  211. package/dist/components/legend/index.js +0 -11
  212. package/dist/components/legend/index.js.map +0 -1
  213. package/dist/components/tooltip/index.cjs +0 -12
  214. package/dist/components/tooltip/index.cjs.map +0 -1
  215. package/dist/components/tooltip/index.css +0 -13
  216. package/dist/components/tooltip/index.css.map +0 -1
  217. package/dist/components/tooltip/index.d.cts +0 -71
  218. package/dist/components/tooltip/index.d.ts +0 -71
  219. package/dist/components/tooltip/index.js +0 -12
  220. package/dist/components/tooltip/index.js.map +0 -1
  221. package/dist/components/trend-indicator/index.cjs +0 -8
  222. package/dist/components/trend-indicator/index.cjs.map +0 -1
  223. package/dist/components/trend-indicator/index.css +0 -27
  224. package/dist/components/trend-indicator/index.css.map +0 -1
  225. package/dist/components/trend-indicator/index.d.cts +0 -44
  226. package/dist/components/trend-indicator/index.d.ts +0 -44
  227. package/dist/components/trend-indicator/index.js +0 -8
  228. package/dist/components/trend-indicator/index.js.map +0 -1
  229. package/dist/format-metric-value-MXm5DtQ_.d.cts +0 -24
  230. package/dist/format-metric-value-MXm5DtQ_.d.ts +0 -24
  231. package/dist/hooks/index.cjs +0 -31
  232. package/dist/hooks/index.cjs.map +0 -1
  233. package/dist/hooks/index.css +0 -103
  234. package/dist/hooks/index.css.map +0 -1
  235. package/dist/hooks/index.d.cts +0 -272
  236. package/dist/hooks/index.d.ts +0 -272
  237. package/dist/hooks/index.js +0 -31
  238. package/dist/hooks/index.js.map +0 -1
  239. package/dist/leaderboard-chart-BKYYXcg2.d.ts +0 -83
  240. package/dist/leaderboard-chart-DR7CGb0L.d.cts +0 -83
  241. package/dist/legend-C2grwnWk.d.cts +0 -9
  242. package/dist/legend-Cj0xM5dU.d.ts +0 -9
  243. package/dist/providers/index.cjs +0 -21
  244. package/dist/providers/index.cjs.map +0 -1
  245. package/dist/providers/index.css +0 -103
  246. package/dist/providers/index.css.map +0 -1
  247. package/dist/providers/index.d.cts +0 -28
  248. package/dist/providers/index.d.ts +0 -28
  249. package/dist/providers/index.js +0 -21
  250. package/dist/providers/index.js.map +0 -1
  251. package/dist/themes-BmVGrYnF.d.ts +0 -67
  252. package/dist/themes-CyjKm-P_.d.cts +0 -67
  253. package/dist/types-CuUEszrM.d.ts +0 -19
  254. package/dist/types-DZordNiO.d.cts +0 -505
  255. package/dist/types-DZordNiO.d.ts +0 -505
  256. package/dist/types-I67mddpr.d.cts +0 -78
  257. package/dist/types-I67mddpr.d.ts +0 -78
  258. package/dist/types-KtOPPzPX.d.cts +0 -19
  259. package/dist/utils/index.cjs +0 -44
  260. package/dist/utils/index.cjs.map +0 -1
  261. package/dist/utils/index.d.cts +0 -226
  262. package/dist/utils/index.d.ts +0 -226
  263. package/dist/utils/index.js +0 -44
  264. package/dist/utils/index.js.map +0 -1
  265. package/dist/with-responsive-CNfhzAUu.d.cts +0 -18
  266. package/dist/with-responsive-CNfhzAUu.d.ts +0 -18
  267. package/src/hooks/use-has-legend-child.ts +0 -22
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/trend-indicator/trend-indicator.tsx","../src/components/trend-indicator/trend-indicator.module.scss"],"sourcesContent":["import clsx from 'clsx';\nimport styles from './trend-indicator.module.scss';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst DIRECTION_LABELS = {\n up: 'Increase',\n down: 'Decrease',\n neutral: 'No change'\n};\nconst Icon = ({\n direction\n}) => {\n if (direction === 'neutral') {\n return null;\n }\n const isUp = direction === 'up';\n return /*#__PURE__*/_jsx(\"svg\", {\n className: styles['trend-indicator__icon'],\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n \"aria-hidden\": \"true\",\n children: /*#__PURE__*/_jsx(\"path\", {\n d: isUp ? 'M8 13V3M4 7l4-4 4 4' : 'M8 3v10M4 9l4 4 4-4',\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })\n });\n};\n\n/**\n * TrendIndicator displays a directional trend with a value.\n * Used to show percentage changes or growth metrics.\n *\n * @param {TrendIndicatorProps} props - Component props\n * @return {JSX.Element} The rendered trend indicator\n */\nexport function TrendIndicator({\n direction,\n value,\n className,\n style,\n showIcon = true\n}) {\n const ariaLabel = `${DIRECTION_LABELS[direction]}: ${value}`;\n return /*#__PURE__*/_jsxs(\"span\", {\n className: clsx(styles['trend-indicator'], styles[`trend-indicator--${direction}`], className),\n style: style,\n \"aria-label\": ariaLabel,\n children: [showIcon && /*#__PURE__*/_jsx(Icon, {\n direction: direction\n }), /*#__PURE__*/_jsx(\"span\", {\n className: styles['trend-indicator__value'],\n children: value\n })]\n });\n}","import 'css-chunk:src/components/trend-indicator/trend-indicator.module.scss';export default {\n \"trend-indicator\": \"a8ccharts-tGw1PY\",\n \"trend-indicator--up\": \"a8ccharts-Fn-D1W\",\n \"trend-indicator--down\": \"a8ccharts-HqtGQO\",\n \"trend-indicator--neutral\": \"a8ccharts-S10nvO\",\n \"trend-indicator__icon\": \"a8ccharts-5HjpOT\",\n \"trend-indicator__value\": \"a8ccharts-muLL2Q\"\n};"],"mappings":";AAAA,OAAO,UAAU;;;ACA6D,IAAO,iCAAQ;AAAA,EAC3F,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,4BAA4B;AAAA,EAC5B,yBAAyB;AAAA,EACzB,0BAA0B;AAC5B;;;ADLA,SAAS,OAAO,MAAM,QAAQ,aAAa;AAC3C,IAAM,mBAAmB;AAAA,EACvB,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,SAAS;AACX;AACA,IAAM,OAAO,CAAC;AAAA,EACZ;AACF,MAAM;AACJ,MAAI,cAAc,WAAW;AAC3B,WAAO;AAAA,EACT;AACA,QAAM,OAAO,cAAc;AAC3B,SAAoB,qBAAK,OAAO;AAAA,IAC9B,WAAW,+BAAO,uBAAuB;AAAA,IACzC,SAAS;AAAA,IACT,MAAM;AAAA,IACN,eAAe;AAAA,IACf,UAAuB,qBAAK,QAAQ;AAAA,MAClC,GAAG,OAAO,wBAAwB;AAAA,MAClC,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,eAAe;AAAA,MACf,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH,CAAC;AACH;AASO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAAG;AACD,QAAM,YAAY,GAAG,iBAAiB,SAAS,CAAC,KAAK,KAAK;AAC1D,SAAoB,sBAAM,QAAQ;AAAA,IAChC,WAAW,KAAK,+BAAO,iBAAiB,GAAG,+BAAO,oBAAoB,SAAS,EAAE,GAAG,SAAS;AAAA,IAC7F;AAAA,IACA,cAAc;AAAA,IACd,UAAU,CAAC,YAAyB,qBAAK,MAAM;AAAA,MAC7C;AAAA,IACF,CAAC,GAAgB,qBAAK,QAAQ;AAAA,MAC5B,WAAW,+BAAO,wBAAwB;AAAA,MAC1C,UAAU;AAAA,IACZ,CAAC,CAAC;AAAA,EACJ,CAAC;AACH;","names":[]}
@@ -1,194 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/components/tooltip/base-tooltip.tsx
2
- var _numberformatters = require('@automattic/number-formatters');
3
-
4
- // src/components/tooltip/base-tooltip.module.scss
5
- var base_tooltip_module_default = {
6
- "tooltip": "a8ccharts-OfX6nd"
7
- };
8
-
9
- // src/components/tooltip/base-tooltip.tsx
10
- var _jsxruntime = require('react/jsx-runtime');
11
- var DefaultTooltipContent = ({
12
- data
13
- }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, {
14
- children: [_optionalChain([data, 'optionalAccess', _ => _.label]), ": ", _optionalChain([data, 'optionalAccess', _2 => _2.valueDisplay]) || _numberformatters.formatNumber.call(void 0, _optionalChain([data, 'optionalAccess', _3 => _3.value]))]
15
- });
16
- var BaseTooltip = ({
17
- data,
18
- top,
19
- left,
20
- component: Component = DefaultTooltipContent,
21
- children,
22
- className,
23
- style,
24
- renderContainer = true
25
- }) => {
26
- const content = children || data && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Component, {
27
- data,
28
- className
29
- });
30
- if (!renderContainer) {
31
- return content;
32
- }
33
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {
34
- className: base_tooltip_module_default.tooltip,
35
- style: {
36
- top,
37
- left,
38
- ...style
39
- },
40
- role: "tooltip",
41
- children: content
42
- });
43
- };
44
-
45
- // src/components/tooltip/accessible-tooltip.tsx
46
- var _xychart = require('@visx/xychart');
47
- var _react = require('react');
48
-
49
- var AccessibleTooltip = ({
50
- renderTooltip,
51
- selectedIndex,
52
- tooltipRef,
53
- keyboardFocusedClassName,
54
- series = [],
55
- mode = "group",
56
- ...props
57
- }) => {
58
- const tooltipContext = _react.useContext.call(void 0, _xychart.TooltipContext);
59
- const tooltipData = _react.useMemo.call(void 0, () => {
60
- if (mode !== "individual") return [];
61
- if (series.length === 0) return [];
62
- const maxDataPoints = Math.max(...series.map((s) => s.data.length));
63
- const flattened = [];
64
- for (let dataPointIndex = 0; dataPointIndex < maxDataPoints; dataPointIndex++) {
65
- for (let seriesIndex = 0; seriesIndex < series.length; seriesIndex++) {
66
- const seriesData = series[seriesIndex];
67
- if (dataPointIndex < seriesData.data.length) {
68
- flattened.push({
69
- datum: seriesData.data[dataPointIndex],
70
- seriesLabel: seriesData.label,
71
- seriesIndex,
72
- dataPointIndex
73
- });
74
- }
75
- }
76
- }
77
- return flattened;
78
- }, [series, mode]);
79
- _react.useEffect.call(void 0, () => {
80
- if (selectedIndex === void 0) {
81
- _optionalChain([tooltipContext, 'optionalAccess', _4 => _4.hideTooltip, 'call', _5 => _5()]);
82
- return;
83
- }
84
- if (mode === "group") {
85
- series.forEach((s, index) => {
86
- if (selectedIndex < s.data.length) {
87
- const datum = s.data[selectedIndex];
88
- _optionalChain([tooltipContext, 'optionalAccess', _6 => _6.showTooltip, 'call', _7 => _7({
89
- datum,
90
- key: s.label,
91
- index
92
- })]);
93
- }
94
- });
95
- } else if (mode === "individual") {
96
- if (selectedIndex < tooltipData.length) {
97
- const tooltipItem = tooltipData[selectedIndex];
98
- _optionalChain([tooltipContext, 'optionalAccess', _8 => _8.showTooltip, 'call', _9 => _9({
99
- datum: tooltipItem.datum,
100
- key: tooltipItem.seriesLabel,
101
- index: tooltipItem.seriesIndex
102
- })]);
103
- }
104
- }
105
- }, [selectedIndex, tooltipData, series]);
106
- const focusableRenderTooltip = _react.useMemo.call(void 0, () => {
107
- if (!renderTooltip) return void 0;
108
- return (params) => {
109
- const tooltipContent = renderTooltip(params);
110
- if (selectedIndex !== void 0) {
111
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {
112
- ref: tooltipRef,
113
- tabIndex: -1,
114
- role: "tooltip",
115
- "aria-atomic": "true",
116
- className: keyboardFocusedClassName,
117
- children: tooltipContent
118
- }, `chart-tooltip-${selectedIndex}`);
119
- }
120
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", {
121
- role: "tooltip",
122
- "aria-live": "polite",
123
- children: tooltipContent
124
- });
125
- };
126
- }, [renderTooltip, selectedIndex, tooltipRef, keyboardFocusedClassName]);
127
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _xychart.Tooltip, {
128
- ...props,
129
- renderTooltip: focusableRenderTooltip
130
- });
131
- };
132
- var useKeyboardNavigation = ({
133
- selectedIndex,
134
- setSelectedIndex,
135
- isNavigating,
136
- setIsNavigating,
137
- chartRef,
138
- totalPoints
139
- }) => {
140
- const tooltipRef = _react.useCallback.call(void 0, (element) => {
141
- if (element && selectedIndex !== void 0) {
142
- element.focus();
143
- }
144
- }, [selectedIndex]);
145
- const onChartFocus = _react.useCallback.call(void 0, () => {
146
- if (!isNavigating && selectedIndex !== void 0) {
147
- setSelectedIndex(0);
148
- }
149
- }, [isNavigating, selectedIndex, setSelectedIndex]);
150
- const onChartBlur = _react.useCallback.call(void 0, () => {
151
- setIsNavigating(false);
152
- }, [setIsNavigating]);
153
- const onChartKeyDown = _react.useCallback.call(void 0, (event) => {
154
- if (totalPoints === 0) return;
155
- if (event.key === "Tab") {
156
- _optionalChain([chartRef, 'access', _10 => _10.current, 'optionalAccess', _11 => _11.focus, 'call', _12 => _12()]);
157
- setSelectedIndex(void 0);
158
- setIsNavigating(false);
159
- return;
160
- }
161
- const currentSelectedIndex = selectedIndex === void 0 ? -1 : selectedIndex;
162
- if (currentSelectedIndex + 1 >= totalPoints && ["ArrowRight"].includes(event.key)) {
163
- _optionalChain([chartRef, 'access', _13 => _13.current, 'optionalAccess', _14 => _14.focus, 'call', _15 => _15()]);
164
- setSelectedIndex(void 0);
165
- setIsNavigating(false);
166
- return;
167
- }
168
- event.preventDefault();
169
- if (["ArrowRight"].includes(event.key)) {
170
- setIsNavigating(true);
171
- setSelectedIndex((currentSelectedIndex + 1) % totalPoints);
172
- } else if (["ArrowLeft"].includes(event.key)) {
173
- setIsNavigating(true);
174
- setSelectedIndex((currentSelectedIndex - 1 + totalPoints) % totalPoints);
175
- } else if (event.key === "Escape") {
176
- setSelectedIndex(void 0);
177
- setIsNavigating(false);
178
- _optionalChain([chartRef, 'access', _16 => _16.current, 'optionalAccess', _17 => _17.focus, 'call', _18 => _18()]);
179
- }
180
- }, [totalPoints, selectedIndex, setSelectedIndex, setIsNavigating, chartRef]);
181
- return {
182
- tooltipRef,
183
- onChartFocus,
184
- onChartBlur,
185
- onChartKeyDown
186
- };
187
- };
188
-
189
-
190
-
191
-
192
-
193
- exports.BaseTooltip = BaseTooltip; exports.AccessibleTooltip = AccessibleTooltip; exports.useKeyboardNavigation = useKeyboardNavigation;
194
- //# sourceMappingURL=chunk-Y3NNQMAX.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-Y3NNQMAX.cjs","../src/components/tooltip/base-tooltip.tsx","../src/components/tooltip/base-tooltip.module.scss","../src/components/tooltip/accessible-tooltip.tsx"],"names":["_jsx"],"mappings":"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","file":"/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-Y3NNQMAX.cjs","sourcesContent":[null,"import { formatNumber } from '@automattic/number-formatters';\nimport styles from './base-tooltip.module.scss';\nimport { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from \"react/jsx-runtime\";\nconst DefaultTooltipContent = ({\n data\n}) => /*#__PURE__*/_jsxs(_Fragment, {\n children: [data?.label, \": \", data?.valueDisplay || formatNumber(data?.value)]\n});\nexport const BaseTooltip = ({\n data,\n top,\n left,\n component: Component = DefaultTooltipContent,\n children,\n className,\n style,\n renderContainer = true\n}) => {\n const content = children || data && /*#__PURE__*/_jsx(Component, {\n data: data,\n className: className\n });\n if (!renderContainer) {\n return content;\n }\n return /*#__PURE__*/_jsx(\"div\", {\n className: styles.tooltip,\n style: {\n top,\n left,\n ...style\n },\n role: \"tooltip\",\n children: content\n });\n};","import 'css-chunk:src/components/tooltip/base-tooltip.module.scss';export default {\n \"tooltip\": \"a8ccharts-OfX6nd\"\n};","import { Tooltip, TooltipContext } from '@visx/xychart';\nimport { useContext, useEffect, useCallback, useMemo } from 'react';\n\n// Type for flattened tooltip data used in individual mode\n\n// Enhanced tooltip with keyboard navigation and accessibility\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const AccessibleTooltip = ({\n renderTooltip,\n selectedIndex,\n tooltipRef,\n keyboardFocusedClassName,\n series = [],\n mode = 'group',\n ...props\n}) => {\n const tooltipContext = useContext(TooltipContext);\n const tooltipData = useMemo(() => {\n if (mode !== 'individual') return [];\n if (series.length === 0) return [];\n const maxDataPoints = Math.max(...series.map(s => s.data.length));\n const flattened = [];\n\n // Pattern: [series1[0], series2[0], series3[0], series1[1], series2[1], series3[1], ...]\n for (let dataPointIndex = 0; dataPointIndex < maxDataPoints; dataPointIndex++) {\n for (let seriesIndex = 0; seriesIndex < series.length; seriesIndex++) {\n const seriesData = series[seriesIndex];\n if (dataPointIndex < seriesData.data.length) {\n flattened.push({\n datum: seriesData.data[dataPointIndex],\n seriesLabel: seriesData.label,\n seriesIndex,\n dataPointIndex\n });\n }\n }\n }\n return flattened;\n }, [series, mode]);\n\n // Handle tooltip highlighting for keyboard navigation\n useEffect(() => {\n if (selectedIndex === undefined) {\n tooltipContext?.hideTooltip();\n return;\n }\n if (mode === 'group') {\n // Show all series at the selected data point index in single tooltip.\n series.forEach((s, index) => {\n if (selectedIndex < s.data.length) {\n const datum = s.data[selectedIndex];\n tooltipContext?.showTooltip({\n datum,\n key: s.label,\n index\n });\n }\n });\n } else if (mode === 'individual') {\n // Show individual tooltips for each datapoint from each series.\n if (selectedIndex < tooltipData.length) {\n const tooltipItem = tooltipData[selectedIndex];\n tooltipContext?.showTooltip({\n datum: tooltipItem.datum,\n key: tooltipItem.seriesLabel,\n index: tooltipItem.seriesIndex\n });\n }\n }\n\n // Don't include tooltipContext in the dependency array to avoid loop.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedIndex, tooltipData, series]);\n\n // Create a focusable renderTooltip that includes accessibility features\n const focusableRenderTooltip = useMemo(() => {\n if (!renderTooltip) return undefined;\n return params => {\n const tooltipContent = renderTooltip(params);\n if (selectedIndex !== undefined) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: tooltipRef,\n tabIndex: -1,\n role: \"tooltip\",\n \"aria-atomic\": \"true\",\n className: keyboardFocusedClassName,\n children: tooltipContent\n }, `chart-tooltip-${selectedIndex}`);\n }\n return /*#__PURE__*/_jsx(\"div\", {\n role: \"tooltip\",\n \"aria-live\": \"polite\",\n children: tooltipContent\n });\n };\n }, [renderTooltip, selectedIndex, tooltipRef, keyboardFocusedClassName]);\n return /*#__PURE__*/_jsx(Tooltip, {\n ...props,\n renderTooltip: focusableRenderTooltip\n });\n};\n\n// Keyboard navigation hook for charts\n\nexport const useKeyboardNavigation = ({\n selectedIndex,\n setSelectedIndex,\n isNavigating,\n setIsNavigating,\n chartRef,\n totalPoints\n}) => {\n // Focus the tooltip as soon as it is rendered\n const tooltipRef = useCallback(element => {\n if (element && selectedIndex !== undefined) {\n element.focus();\n }\n }, [selectedIndex]);\n\n // On each focus of chart, reset the selectedIndex to 0, if keyboard navigation is not already active\n const onChartFocus = useCallback(() => {\n if (!isNavigating && selectedIndex !== undefined) {\n setSelectedIndex(0);\n }\n }, [isNavigating, selectedIndex, setSelectedIndex]);\n\n // On each blur of chart, keyboard navigation should restart from first tooltip\n const onChartBlur = useCallback(() => {\n setIsNavigating(false);\n }, [setIsNavigating]);\n const onChartKeyDown = useCallback(event => {\n if (totalPoints === 0) return;\n\n // Keep focus on the chart if tab is pressed\n if (event.key === 'Tab') {\n chartRef.current?.focus();\n setSelectedIndex(undefined);\n setIsNavigating(false);\n return;\n }\n const currentSelectedIndex = selectedIndex === undefined ? -1 : selectedIndex;\n if (currentSelectedIndex + 1 >= totalPoints && ['ArrowRight'].includes(event.key)) {\n chartRef.current?.focus();\n setSelectedIndex(undefined);\n setIsNavigating(false);\n return;\n }\n event.preventDefault();\n if (['ArrowRight'].includes(event.key)) {\n setIsNavigating(true);\n setSelectedIndex((currentSelectedIndex + 1) % totalPoints);\n } else if (['ArrowLeft'].includes(event.key)) {\n setIsNavigating(true);\n setSelectedIndex((currentSelectedIndex - 1 + totalPoints) % totalPoints);\n } else if (event.key === 'Escape') {\n setSelectedIndex(undefined);\n setIsNavigating(false);\n chartRef.current?.focus();\n }\n }, [totalPoints, selectedIndex, setSelectedIndex, setIsNavigating, chartRef]);\n return {\n tooltipRef,\n onChartFocus,\n onChartBlur,\n onChartKeyDown\n };\n};\n\n// Re-export the base Tooltip for backwards compatibility\nexport { Tooltip };"]}