@automattic/charts 0.49.1 → 0.50.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 (132) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{chunk-SQUQ6W4W.cjs → chunk-3VZG47VH.cjs} +6 -6
  3. package/dist/{chunk-SQUQ6W4W.cjs.map → chunk-3VZG47VH.cjs.map} +1 -1
  4. package/dist/{chunk-55WZQTJG.js → chunk-7PK4ZDO4.js} +13 -10
  5. package/dist/chunk-7PK4ZDO4.js.map +1 -0
  6. package/dist/{chunk-5LQRPB4Q.cjs → chunk-A4IXXP53.cjs} +23 -21
  7. package/dist/chunk-A4IXXP53.cjs.map +1 -0
  8. package/dist/{chunk-4OOCYYLB.js → chunk-AG7HFTYL.js} +7 -5
  9. package/dist/{chunk-4OOCYYLB.js.map → chunk-AG7HFTYL.js.map} +1 -1
  10. package/dist/{chunk-E7IFXPVN.cjs → chunk-AS2SQOQ7.cjs} +20 -18
  11. package/dist/chunk-AS2SQOQ7.cjs.map +1 -0
  12. package/dist/chunk-AVHWSXUP.js +264 -0
  13. package/dist/chunk-AVHWSXUP.js.map +1 -0
  14. package/dist/{chunk-SIY3XU3K.cjs → chunk-BODJOUH3.cjs} +21 -18
  15. package/dist/chunk-BODJOUH3.cjs.map +1 -0
  16. package/dist/{chunk-63TAXJQT.js → chunk-BUSMF7CB.js} +6 -4
  17. package/dist/{chunk-63TAXJQT.js.map → chunk-BUSMF7CB.js.map} +1 -1
  18. package/dist/{chunk-DYFLDDOO.js → chunk-CC2UH5Y7.js} +3 -3
  19. package/dist/{chunk-4JNKQ6G2.cjs → chunk-EUTMYGCP.cjs} +27 -25
  20. package/dist/chunk-EUTMYGCP.cjs.map +1 -0
  21. package/dist/{chunk-MNZD6UDQ.cjs → chunk-I7MCBD76.cjs} +72 -265
  22. package/dist/chunk-I7MCBD76.cjs.map +1 -0
  23. package/dist/{chunk-HQT2DW27.cjs → chunk-KFWS6CHF.cjs} +24 -22
  24. package/dist/chunk-KFWS6CHF.cjs.map +1 -0
  25. package/dist/{chunk-4TN6B3QG.cjs → chunk-LACY6G6I.cjs} +10 -8
  26. package/dist/chunk-LACY6G6I.cjs.map +1 -0
  27. package/dist/{chunk-DVBXMTIC.cjs → chunk-MKU6O3UY.cjs} +21 -19
  28. package/dist/chunk-MKU6O3UY.cjs.map +1 -0
  29. package/dist/{chunk-5OB3F7GC.js → chunk-OZYA4QTY.js} +68 -261
  30. package/dist/chunk-OZYA4QTY.js.map +1 -0
  31. package/dist/{chunk-ZPLVNCGW.js → chunk-QDWN3ATP.js} +6 -4
  32. package/dist/{chunk-ZPLVNCGW.js.map → chunk-QDWN3ATP.js.map} +1 -1
  33. package/dist/{chunk-CVD6K4R2.js → chunk-SQMTTC4F.js} +7 -5
  34. package/dist/{chunk-CVD6K4R2.js.map → chunk-SQMTTC4F.js.map} +1 -1
  35. package/dist/{chunk-JX6O5KKS.js → chunk-SUMZU44N.js} +5 -3
  36. package/dist/{chunk-JX6O5KKS.js.map → chunk-SUMZU44N.js.map} +1 -1
  37. package/dist/chunk-WPSB7BRR.cjs +264 -0
  38. package/dist/chunk-WPSB7BRR.cjs.map +1 -0
  39. package/dist/{chunk-V7KEYPLG.js → chunk-YH6KCYUQ.js} +6 -4
  40. package/dist/{chunk-V7KEYPLG.js.map → chunk-YH6KCYUQ.js.map} +1 -1
  41. package/dist/components/bar-chart/index.cjs +5 -4
  42. package/dist/components/bar-chart/index.cjs.map +1 -1
  43. package/dist/components/bar-chart/index.d.cts +1 -1
  44. package/dist/components/bar-chart/index.d.ts +1 -1
  45. package/dist/components/bar-chart/index.js +4 -3
  46. package/dist/components/bar-list-chart/index.cjs +6 -5
  47. package/dist/components/bar-list-chart/index.cjs.map +1 -1
  48. package/dist/components/bar-list-chart/index.d.cts +1 -1
  49. package/dist/components/bar-list-chart/index.d.ts +1 -1
  50. package/dist/components/bar-list-chart/index.js +5 -4
  51. package/dist/components/conversion-funnel-chart/index.cjs +4 -3
  52. package/dist/components/conversion-funnel-chart/index.cjs.map +1 -1
  53. package/dist/components/conversion-funnel-chart/index.d.cts +1 -1
  54. package/dist/components/conversion-funnel-chart/index.d.ts +1 -1
  55. package/dist/components/conversion-funnel-chart/index.js +3 -2
  56. package/dist/components/leaderboard-chart/index.cjs +5 -4
  57. package/dist/components/leaderboard-chart/index.cjs.map +1 -1
  58. package/dist/components/leaderboard-chart/index.d.cts +4 -26
  59. package/dist/components/leaderboard-chart/index.d.ts +4 -26
  60. package/dist/components/leaderboard-chart/index.js +4 -3
  61. package/dist/components/legend/index.cjs +4 -3
  62. package/dist/components/legend/index.cjs.map +1 -1
  63. package/dist/components/legend/index.d.cts +1 -1
  64. package/dist/components/legend/index.d.ts +1 -1
  65. package/dist/components/legend/index.js +3 -2
  66. package/dist/components/line-chart/index.cjs +5 -4
  67. package/dist/components/line-chart/index.cjs.map +1 -1
  68. package/dist/components/line-chart/index.d.cts +1 -1
  69. package/dist/components/line-chart/index.d.ts +1 -1
  70. package/dist/components/line-chart/index.js +4 -3
  71. package/dist/components/pie-chart/index.cjs +5 -4
  72. package/dist/components/pie-chart/index.cjs.map +1 -1
  73. package/dist/components/pie-chart/index.d.cts +1 -1
  74. package/dist/components/pie-chart/index.d.ts +1 -1
  75. package/dist/components/pie-chart/index.js +4 -3
  76. package/dist/components/pie-semi-circle-chart/index.cjs +5 -4
  77. package/dist/components/pie-semi-circle-chart/index.cjs.map +1 -1
  78. package/dist/components/pie-semi-circle-chart/index.d.cts +1 -1
  79. package/dist/components/pie-semi-circle-chart/index.d.ts +1 -1
  80. package/dist/components/pie-semi-circle-chart/index.js +4 -3
  81. package/dist/components/tooltip/index.d.cts +1 -1
  82. package/dist/components/tooltip/index.d.ts +1 -1
  83. package/dist/format-metric-value-DVBZSN0R.d.cts +24 -0
  84. package/dist/format-metric-value-DVBZSN0R.d.ts +24 -0
  85. package/dist/hooks/index.cjs +3 -2
  86. package/dist/hooks/index.cjs.map +1 -1
  87. package/dist/hooks/index.d.cts +1 -1
  88. package/dist/hooks/index.d.ts +1 -1
  89. package/dist/hooks/index.js +2 -1
  90. package/dist/index.cjs +11 -10
  91. package/dist/index.cjs.map +1 -1
  92. package/dist/index.d.cts +3 -3
  93. package/dist/index.d.ts +3 -3
  94. package/dist/index.js +10 -9
  95. package/dist/{leaderboard-chart-CaZgGytL.d.ts → leaderboard-chart-B3dPiEl8.d.ts} +1 -1
  96. package/dist/{leaderboard-chart-B3CQbXhp.d.cts → leaderboard-chart-BlBexVz4.d.cts} +1 -1
  97. package/dist/providers/index.cjs +3 -2
  98. package/dist/providers/index.cjs.map +1 -1
  99. package/dist/providers/index.d.cts +2 -2
  100. package/dist/providers/index.d.ts +2 -2
  101. package/dist/providers/index.js +2 -1
  102. package/dist/{themes-_t_7uxnQ.d.ts → themes-CNy453Lb.d.ts} +1 -1
  103. package/dist/{themes-DL0AAxyZ.d.cts → themes-Dv70Dz7B.d.cts} +1 -1
  104. package/dist/{types-DU5eF3uf.d.ts → types-4wyyzjot.d.cts} +2 -2
  105. package/dist/{types-DU5eF3uf.d.cts → types-4wyyzjot.d.ts} +2 -2
  106. package/dist/utils/index.cjs +34 -0
  107. package/dist/utils/index.cjs.map +1 -0
  108. package/dist/utils/index.d.cts +180 -0
  109. package/dist/utils/index.d.ts +180 -0
  110. package/dist/utils/index.js +34 -0
  111. package/dist/utils/index.js.map +1 -0
  112. package/package.json +8 -1
  113. package/src/components/conversion-funnel-chart/conversion-funnel-chart.tsx +12 -6
  114. package/src/providers/chart-context/global-charts-provider.tsx +74 -13
  115. package/src/providers/chart-context/private/get-chart-color.ts +16 -9
  116. package/src/providers/chart-context/test/chart-context.test.tsx +700 -0
  117. package/src/providers/chart-context/themes.ts +0 -7
  118. package/src/types.ts +10 -2
  119. package/src/utils/index.ts +3 -0
  120. package/src/utils/resolve-css-var.ts +31 -0
  121. package/src/utils/test/resolve-css-var.test.ts +383 -0
  122. package/dist/chunk-4JNKQ6G2.cjs.map +0 -1
  123. package/dist/chunk-4TN6B3QG.cjs.map +0 -1
  124. package/dist/chunk-55WZQTJG.js.map +0 -1
  125. package/dist/chunk-5LQRPB4Q.cjs.map +0 -1
  126. package/dist/chunk-5OB3F7GC.js.map +0 -1
  127. package/dist/chunk-DVBXMTIC.cjs.map +0 -1
  128. package/dist/chunk-E7IFXPVN.cjs.map +0 -1
  129. package/dist/chunk-HQT2DW27.cjs.map +0 -1
  130. package/dist/chunk-MNZD6UDQ.cjs.map +0 -1
  131. package/dist/chunk-SIY3XU3K.cjs.map +0 -1
  132. /package/dist/{chunk-DYFLDDOO.js.map → chunk-CC2UH5Y7.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.50.0] - 2025-11-26
9
+ ### Added
10
+ - Add Charts utils to package exports [#46095]
11
+ - Global theme: enable color generation from CSS custom properties [#45889]
12
+
8
13
  ## [0.49.1] - 2025-11-20
9
14
  ### Changed
10
15
  - Update package dependencies. [#46022]
@@ -570,6 +575,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
570
575
  - Fixed lints following ESLint rule changes for TS [#40584]
571
576
  - Fixing a bug in Chart storybook data. [#40640]
572
577
 
578
+ [0.50.0]: https://github.com/Automattic/charts/compare/v0.49.1...v0.50.0
573
579
  [0.49.1]: https://github.com/Automattic/charts/compare/v0.49.0...v0.49.1
574
580
  [0.49.0]: https://github.com/Automattic/charts/compare/v0.48.0...v0.49.0
575
581
  [0.48.0]: https://github.com/Automattic/charts/compare/v0.47.0...v0.48.0
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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; }
2
2
 
3
- var _chunkHQT2DW27cjs = require('./chunk-HQT2DW27.cjs');
3
+ var _chunkKFWS6CHFcjs = require('./chunk-KFWS6CHF.cjs');
4
4
 
5
5
 
6
6
  var _chunkFX2PTUFCcjs = require('./chunk-FX2PTUFC.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkMNZD6UDQcjs = require('./chunk-MNZD6UDQ.cjs');
10
+ var _chunkI7MCBD76cjs = require('./chunk-I7MCBD76.cjs');
11
11
 
12
12
  // src/components/bar-list-chart/bar-list-chart.tsx
13
13
  var _numberformatters = require('@automattic/number-formatters');
@@ -142,7 +142,7 @@ var BarListChartInternal = ({
142
142
  };
143
143
  }, [options, width, data, height]);
144
144
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
145
- _chunkHQT2DW27cjs.BarChartResponsive,
145
+ _chunkKFWS6CHFcjs.BarChartResponsive,
146
146
  {
147
147
  orientation: "horizontal",
148
148
  gridVisibility: "none",
@@ -180,11 +180,11 @@ var BarListChartInternal = ({
180
180
  );
181
181
  };
182
182
  var BarListChart = (props) => {
183
- const existingContext = _react.useContext.call(void 0, _chunkMNZD6UDQcjs.GlobalChartsContext);
183
+ const existingContext = _react.useContext.call(void 0, _chunkI7MCBD76cjs.GlobalChartsContext);
184
184
  if (existingContext) {
185
185
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BarListChartInternal, { ...props });
186
186
  }
187
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMNZD6UDQcjs.GlobalChartsProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BarListChartInternal, { ...props }) });
187
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkI7MCBD76cjs.GlobalChartsProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BarListChartInternal, { ...props }) });
188
188
  };
189
189
  BarListChart.displayName = "BarListChart";
190
190
  var BarListChartResponsive = _chunkFX2PTUFCcjs.withResponsive.call(void 0, BarListChart);
@@ -193,4 +193,4 @@ var BarListChartResponsive = _chunkFX2PTUFCcjs.withResponsive.call(void 0, BarLi
193
193
 
194
194
 
195
195
  exports.BarListChart = BarListChart; exports.BarListChartResponsive = BarListChartResponsive;
196
- //# sourceMappingURL=chunk-SQUQ6W4W.cjs.map
196
+ //# sourceMappingURL=chunk-3VZG47VH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-SQUQ6W4W.cjs","../src/components/bar-list-chart/bar-list-chart.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-SQUQ6W4W.cjs","sourcesContent":[null,"import { formatNumberCompact } from '@automattic/number-formatters';\nimport { Group } from '@visx/group';\nimport { createScale, scaleBand } from '@visx/scale';\nimport { Text, type TextProps } from '@visx/text';\nimport { useContext, useMemo } from 'react';\nimport { GlobalChartsContext, GlobalChartsProvider } from '../../providers';\nimport { BarChart } from '../bar-chart';\nimport { withResponsive } from '../private/with-responsive';\nimport type { SeriesData } from '../..';\nimport type { ScaleOptions } from '../../types';\nimport type { BarChartProps } from '../bar-chart/bar-chart';\nimport type { AxisRendererProps, AxisScale } from '@visx/axis';\nimport type { AnyD3Scale } from '@visx/scale';\nimport type { ComponentType, FC } from 'react';\n\nexport interface BarListChartProps\n\textends Exclude< BarChartProps, 'orientation' | 'size' | 'gridVisibility' > {\n\toptions?: {\n\t\t/**\n\t\t * Scale for the y axis. Exclude the type property.\n\t\t */\n\t\tyScale: Omit< ScaleOptions, 'type' >;\n\t\t/**\n\t\t * Scale for the x axis. Exclude the type property.\n\t\t */\n\t\txScale: Omit< ScaleOptions, 'type' >;\n\t\t/**\n\t\t * Formatter for the label.\n\t\t */\n\t\tlabelFormatter?: ( value: string ) => string;\n\t\t/**\n\t\t * Formatter for the value.\n\t\t */\n\t\tvalueFormatter?: ( value: number ) => string;\n\t\t/**\n\t\t * y offset of the label and value. Default is based on the number of series, automatically computed.\n\t\t */\n\t\tyOffset?: number;\n\t\t/**\n\t\t * x position of the label.\n\t\t */\n\t\tlabelPosition?: number;\n\t\t/**\n\t\t * x position of the value.\n\t\t */\n\t\tvaluePosition?: number;\n\t\t/**\n\t\t * Custom render function for the label.\n\t\t */\n\t\tlabelComponent?: ComponentType< RenderLabelProps >;\n\t\t/**\n\t\t * Custom render function for the value.\n\t\t */\n\t\tvalueComponent?: ComponentType< RenderValueProps >;\n\t};\n}\n\nexport interface RenderLabelProps {\n\ttextProps: TextProps;\n\tx: number;\n\ty: number;\n\tlabel: string;\n\tformatter: ( value: string ) => string;\n}\n\nexport interface RenderValueProps {\n\ttextProps: TextProps;\n\tx: number;\n\ty: number;\n\tvalue: number;\n\t/**\n\t * Original data\n\t */\n\tdata: SeriesData[];\n\t/**\n\t * Index of the data point\n\t */\n\tindex: number;\n\tformatter: ( value: number ) => string;\n}\n\n/**\n * Get the bandwidth of a scale\n * @param scale - The scale to get the bandwidth of\n * @return The bandwidth of the scale\n */\nconst getScaleBandwidth = < Scale extends AxisScale >( scale?: Scale ) => {\n\t// Broaden type before using 'xxx' in s as typeguard.\n\tconst s = scale as AxisScale;\n\treturn s && 'bandwidth' in s ? s?.bandwidth() ?? 0 : 0;\n};\n\nconst DefaultLabelComponent = ( { textProps, x, y, label, formatter } ) => {\n\treturn (\n\t\t<Text { ...textProps } textAnchor=\"start\" x={ x } y={ y }>\n\t\t\t{ formatter( label ) }\n\t\t</Text>\n\t);\n};\n\nconst DefaultValueComponent = ( { textProps, x, y, value, formatter }: RenderValueProps ) => {\n\treturn (\n\t\t<Text { ...textProps } textAnchor=\"end\" x={ x } y={ y } fontWeight={ 500 }>\n\t\t\t{ formatter( value ) }\n\t\t</Text>\n\t);\n};\n\nconst AxisRenderer = ( {\n\tticks,\n\ttickLabelProps,\n\tyOffset,\n\tlabelPosition,\n\tvaluePosition,\n\tdata,\n\tlabelFormatter,\n\tvalueFormatter,\n\tLabelComponent = DefaultLabelComponent,\n\tValueComponent = DefaultValueComponent,\n}: AxisRendererProps< AnyD3Scale > & {\n\tyOffset: number;\n\tlabelPosition: number;\n\tvaluePosition: number;\n\tdata: SeriesData[];\n\tlabelFormatter?: ( value: string ) => string;\n\tvalueFormatter?: ( value: number ) => string;\n\tLabelComponent?: ComponentType< RenderLabelProps >;\n\tValueComponent?: ComponentType< RenderValueProps >;\n} ) => {\n\tif ( ticks.length === 0 ) {\n\t\treturn null;\n\t}\n\n\t// compute the max tick label size to compute label offset\n\tconst allTickLabelProps = ticks.map( ( { value, index } ) =>\n\t\ttypeof tickLabelProps === 'function' ? tickLabelProps( value, index, ticks ) : {}\n\t);\n\n\treturn ticks.map( ( { from, formattedValue }, index ) => {\n\t\tconst textProps = allTickLabelProps[ index ] ?? {};\n\t\t// No need to pass textAnchor and dx. It will be handled by the component.\n\t\tdelete textProps.textAnchor;\n\t\tdelete textProps.dx;\n\n\t\tconst sum = data.reduce(\n\t\t\t( acc, { data: seriesData } ) => acc + ( seriesData[ index ]?.value ?? 0 ),\n\t\t\t0\n\t\t);\n\t\tconst y = from.y + yOffset;\n\n\t\treturn (\n\t\t\t<Group key={ index }>\n\t\t\t\t<LabelComponent\n\t\t\t\t\ttextProps={ textProps }\n\t\t\t\t\tx={ labelPosition }\n\t\t\t\t\ty={ y }\n\t\t\t\t\tlabel={ formattedValue }\n\t\t\t\t\tformatter={ labelFormatter }\n\t\t\t\t/>\n\t\t\t\t<ValueComponent\n\t\t\t\t\ttextProps={ textProps }\n\t\t\t\t\tx={ valuePosition }\n\t\t\t\t\ty={ y }\n\t\t\t\t\tvalue={ sum }\n\t\t\t\t\tformatter={ valueFormatter }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tindex={ index }\n\t\t\t\t/>\n\t\t\t</Group>\n\t\t);\n\t} );\n};\n\n/**\n * Calculate the default y offset for the bar list chart.\n * @param data - The data to calculate the default y offset for.\n * @param yScaleConfig - The y scale configuration.\n * @param height - The height of the chart.\n * @param isMultiSeries - Whether the chart is a multi series chart.\n * @return The default y offset.\n */\nconst getDefaultYOffset = (\n\tdata: SeriesData[],\n\tyScaleConfig: Omit< ScaleOptions, 'type' >,\n\theight: number,\n\tisMultiSeries: boolean\n) => {\n\tif ( ! isMultiSeries ) {\n\t\treturn 0;\n\t}\n\n\tconst dataKeys = data.map( ( { label } ) => label );\n\n\tconst yScale = createScale< string >( {\n\t\ttype: 'band' as const,\n\t\trange: [ 0, height ],\n\t\tdomain: dataKeys,\n\t\t...yScaleConfig,\n\t} );\n\n\tconst groupScale = scaleBand< string >( {\n\t\tdomain: dataKeys,\n\t\trange: [ 0, getScaleBandwidth( yScale ) ],\n\t\tpadding: yScaleConfig.paddingInner,\n\t} );\n\n\tconst GAP_BETWEEN_BARS = 6;\n\tconst barThickness = getScaleBandwidth( groupScale );\n\n\t// Use negative value to move the label up.\n\treturn -( barThickness + GAP_BETWEEN_BARS );\n};\n\nconst BarListChartInternal: FC< BarListChartProps > = ( {\n\tdata,\n\twidth,\n\theight,\n\toptions = {},\n\tmargin = {\n\t\tleft: 0,\n\t\tright: 20,\n\t\tbottom: 0,\n\t\ttop: 0,\n\t},\n\t...rest\n} ) => {\n\tconst chartOptions = useMemo( () => {\n\t\tconst isMultiSeries = data.length > 1;\n\n\t\tconst defaultYScale = {\n\t\t\t// For multi series, set default padding larger to look better.\n\t\t\tpaddingInner: isMultiSeries ? 0.3 : 0.1,\n\t\t\tpadding: isMultiSeries ? 0.3 : 0.1,\n\t\t};\n\t\tconst defaultXScale = {\n\t\t\t// Always begin at zero since the x axis is hidden.\n\t\t\tzero: true,\n\t\t};\n\t\tconst yScale = {\n\t\t\t...defaultYScale,\n\t\t\t...( options.yScale ?? {} ),\n\t\t};\n\t\tconst xScale = {\n\t\t\t...defaultXScale,\n\t\t\t...( options.xScale ?? {} ),\n\t\t};\n\n\t\treturn {\n\t\t\tyScale,\n\t\t\txScale,\n\t\t\tlabelPosition: options.labelPosition ?? ( isMultiSeries ? 0 : 10 ),\n\t\t\tvalueFormatter: options.valueFormatter ?? ( value => formatNumberCompact( value ) ),\n\t\t\tlabelFormatter: options.labelFormatter ?? ( value => String( value ) ),\n\t\t\tvaluePosition: options.valuePosition ?? width,\n\t\t\tyOffset: options.yOffset ?? getDefaultYOffset( data, yScale, height, isMultiSeries ),\n\t\t};\n\t}, [ options, width, data, height ] );\n\n\treturn (\n\t\t<BarChart\n\t\t\torientation=\"horizontal\"\n\t\t\tgridVisibility={ 'none' }\n\t\t\tdata={ data }\n\t\t\twidth={ width }\n\t\t\theight={ height }\n\t\t\tmargin={ margin }\n\t\t\toptions={ {\n\t\t\t\taxis: {\n\t\t\t\t\ty: {\n\t\t\t\t\t\tchildren: ( renderProps: AxisRendererProps< AnyD3Scale > ) => (\n\t\t\t\t\t\t\t<AxisRenderer\n\t\t\t\t\t\t\t\t{ ...renderProps }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tyOffset={ chartOptions.yOffset }\n\t\t\t\t\t\t\t\tlabelPosition={ chartOptions.labelPosition }\n\t\t\t\t\t\t\t\tvaluePosition={ chartOptions.valuePosition }\n\t\t\t\t\t\t\t\tlabelFormatter={ chartOptions.labelFormatter }\n\t\t\t\t\t\t\t\tvalueFormatter={ chartOptions.valueFormatter }\n\t\t\t\t\t\t\t\tLabelComponent={ options.labelComponent }\n\t\t\t\t\t\t\t\tValueComponent={ options.valueComponent }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\tx: {\n\t\t\t\t\t\tchildren: () => null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\txScale: chartOptions.xScale,\n\t\t\t\tyScale: chartOptions.yScale,\n\t\t\t} }\n\t\t\t{ ...rest }\n\t\t/>\n\t);\n};\n\nconst BarListChart: FC< BarListChartProps > = props => {\n\tconst existingContext = useContext( GlobalChartsContext );\n\n\t// If we're already in a GlobalChartsProvider context, render the core component directly\n\tif ( existingContext ) {\n\t\treturn <BarListChartInternal { ...props } />;\n\t}\n\n\t// Otherwise, wrap with our own GlobalChartsProvider\n\treturn (\n\t\t<GlobalChartsProvider>\n\t\t\t<BarListChartInternal { ...props } />\n\t\t</GlobalChartsProvider>\n\t);\n};\n\nBarListChart.displayName = 'BarListChart';\n\nconst BarListChartResponsive = withResponsive< BarListChartProps >( BarListChart );\n\nexport { BarListChartResponsive as default, BarListChart as BarListChartUnresponsive };\n"]}
1
+ {"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-3VZG47VH.cjs","../src/components/bar-list-chart/bar-list-chart.tsx"],"names":[],"mappings":"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","file":"/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-3VZG47VH.cjs","sourcesContent":[null,"import { formatNumberCompact } from '@automattic/number-formatters';\nimport { Group } from '@visx/group';\nimport { createScale, scaleBand } from '@visx/scale';\nimport { Text, type TextProps } from '@visx/text';\nimport { useContext, useMemo } from 'react';\nimport { GlobalChartsContext, GlobalChartsProvider } from '../../providers';\nimport { BarChart } from '../bar-chart';\nimport { withResponsive } from '../private/with-responsive';\nimport type { SeriesData } from '../..';\nimport type { ScaleOptions } from '../../types';\nimport type { BarChartProps } from '../bar-chart/bar-chart';\nimport type { AxisRendererProps, AxisScale } from '@visx/axis';\nimport type { AnyD3Scale } from '@visx/scale';\nimport type { ComponentType, FC } from 'react';\n\nexport interface BarListChartProps\n\textends Exclude< BarChartProps, 'orientation' | 'size' | 'gridVisibility' > {\n\toptions?: {\n\t\t/**\n\t\t * Scale for the y axis. Exclude the type property.\n\t\t */\n\t\tyScale: Omit< ScaleOptions, 'type' >;\n\t\t/**\n\t\t * Scale for the x axis. Exclude the type property.\n\t\t */\n\t\txScale: Omit< ScaleOptions, 'type' >;\n\t\t/**\n\t\t * Formatter for the label.\n\t\t */\n\t\tlabelFormatter?: ( value: string ) => string;\n\t\t/**\n\t\t * Formatter for the value.\n\t\t */\n\t\tvalueFormatter?: ( value: number ) => string;\n\t\t/**\n\t\t * y offset of the label and value. Default is based on the number of series, automatically computed.\n\t\t */\n\t\tyOffset?: number;\n\t\t/**\n\t\t * x position of the label.\n\t\t */\n\t\tlabelPosition?: number;\n\t\t/**\n\t\t * x position of the value.\n\t\t */\n\t\tvaluePosition?: number;\n\t\t/**\n\t\t * Custom render function for the label.\n\t\t */\n\t\tlabelComponent?: ComponentType< RenderLabelProps >;\n\t\t/**\n\t\t * Custom render function for the value.\n\t\t */\n\t\tvalueComponent?: ComponentType< RenderValueProps >;\n\t};\n}\n\nexport interface RenderLabelProps {\n\ttextProps: TextProps;\n\tx: number;\n\ty: number;\n\tlabel: string;\n\tformatter: ( value: string ) => string;\n}\n\nexport interface RenderValueProps {\n\ttextProps: TextProps;\n\tx: number;\n\ty: number;\n\tvalue: number;\n\t/**\n\t * Original data\n\t */\n\tdata: SeriesData[];\n\t/**\n\t * Index of the data point\n\t */\n\tindex: number;\n\tformatter: ( value: number ) => string;\n}\n\n/**\n * Get the bandwidth of a scale\n * @param scale - The scale to get the bandwidth of\n * @return The bandwidth of the scale\n */\nconst getScaleBandwidth = < Scale extends AxisScale >( scale?: Scale ) => {\n\t// Broaden type before using 'xxx' in s as typeguard.\n\tconst s = scale as AxisScale;\n\treturn s && 'bandwidth' in s ? s?.bandwidth() ?? 0 : 0;\n};\n\nconst DefaultLabelComponent = ( { textProps, x, y, label, formatter } ) => {\n\treturn (\n\t\t<Text { ...textProps } textAnchor=\"start\" x={ x } y={ y }>\n\t\t\t{ formatter( label ) }\n\t\t</Text>\n\t);\n};\n\nconst DefaultValueComponent = ( { textProps, x, y, value, formatter }: RenderValueProps ) => {\n\treturn (\n\t\t<Text { ...textProps } textAnchor=\"end\" x={ x } y={ y } fontWeight={ 500 }>\n\t\t\t{ formatter( value ) }\n\t\t</Text>\n\t);\n};\n\nconst AxisRenderer = ( {\n\tticks,\n\ttickLabelProps,\n\tyOffset,\n\tlabelPosition,\n\tvaluePosition,\n\tdata,\n\tlabelFormatter,\n\tvalueFormatter,\n\tLabelComponent = DefaultLabelComponent,\n\tValueComponent = DefaultValueComponent,\n}: AxisRendererProps< AnyD3Scale > & {\n\tyOffset: number;\n\tlabelPosition: number;\n\tvaluePosition: number;\n\tdata: SeriesData[];\n\tlabelFormatter?: ( value: string ) => string;\n\tvalueFormatter?: ( value: number ) => string;\n\tLabelComponent?: ComponentType< RenderLabelProps >;\n\tValueComponent?: ComponentType< RenderValueProps >;\n} ) => {\n\tif ( ticks.length === 0 ) {\n\t\treturn null;\n\t}\n\n\t// compute the max tick label size to compute label offset\n\tconst allTickLabelProps = ticks.map( ( { value, index } ) =>\n\t\ttypeof tickLabelProps === 'function' ? tickLabelProps( value, index, ticks ) : {}\n\t);\n\n\treturn ticks.map( ( { from, formattedValue }, index ) => {\n\t\tconst textProps = allTickLabelProps[ index ] ?? {};\n\t\t// No need to pass textAnchor and dx. It will be handled by the component.\n\t\tdelete textProps.textAnchor;\n\t\tdelete textProps.dx;\n\n\t\tconst sum = data.reduce(\n\t\t\t( acc, { data: seriesData } ) => acc + ( seriesData[ index ]?.value ?? 0 ),\n\t\t\t0\n\t\t);\n\t\tconst y = from.y + yOffset;\n\n\t\treturn (\n\t\t\t<Group key={ index }>\n\t\t\t\t<LabelComponent\n\t\t\t\t\ttextProps={ textProps }\n\t\t\t\t\tx={ labelPosition }\n\t\t\t\t\ty={ y }\n\t\t\t\t\tlabel={ formattedValue }\n\t\t\t\t\tformatter={ labelFormatter }\n\t\t\t\t/>\n\t\t\t\t<ValueComponent\n\t\t\t\t\ttextProps={ textProps }\n\t\t\t\t\tx={ valuePosition }\n\t\t\t\t\ty={ y }\n\t\t\t\t\tvalue={ sum }\n\t\t\t\t\tformatter={ valueFormatter }\n\t\t\t\t\tdata={ data }\n\t\t\t\t\tindex={ index }\n\t\t\t\t/>\n\t\t\t</Group>\n\t\t);\n\t} );\n};\n\n/**\n * Calculate the default y offset for the bar list chart.\n * @param data - The data to calculate the default y offset for.\n * @param yScaleConfig - The y scale configuration.\n * @param height - The height of the chart.\n * @param isMultiSeries - Whether the chart is a multi series chart.\n * @return The default y offset.\n */\nconst getDefaultYOffset = (\n\tdata: SeriesData[],\n\tyScaleConfig: Omit< ScaleOptions, 'type' >,\n\theight: number,\n\tisMultiSeries: boolean\n) => {\n\tif ( ! isMultiSeries ) {\n\t\treturn 0;\n\t}\n\n\tconst dataKeys = data.map( ( { label } ) => label );\n\n\tconst yScale = createScale< string >( {\n\t\ttype: 'band' as const,\n\t\trange: [ 0, height ],\n\t\tdomain: dataKeys,\n\t\t...yScaleConfig,\n\t} );\n\n\tconst groupScale = scaleBand< string >( {\n\t\tdomain: dataKeys,\n\t\trange: [ 0, getScaleBandwidth( yScale ) ],\n\t\tpadding: yScaleConfig.paddingInner,\n\t} );\n\n\tconst GAP_BETWEEN_BARS = 6;\n\tconst barThickness = getScaleBandwidth( groupScale );\n\n\t// Use negative value to move the label up.\n\treturn -( barThickness + GAP_BETWEEN_BARS );\n};\n\nconst BarListChartInternal: FC< BarListChartProps > = ( {\n\tdata,\n\twidth,\n\theight,\n\toptions = {},\n\tmargin = {\n\t\tleft: 0,\n\t\tright: 20,\n\t\tbottom: 0,\n\t\ttop: 0,\n\t},\n\t...rest\n} ) => {\n\tconst chartOptions = useMemo( () => {\n\t\tconst isMultiSeries = data.length > 1;\n\n\t\tconst defaultYScale = {\n\t\t\t// For multi series, set default padding larger to look better.\n\t\t\tpaddingInner: isMultiSeries ? 0.3 : 0.1,\n\t\t\tpadding: isMultiSeries ? 0.3 : 0.1,\n\t\t};\n\t\tconst defaultXScale = {\n\t\t\t// Always begin at zero since the x axis is hidden.\n\t\t\tzero: true,\n\t\t};\n\t\tconst yScale = {\n\t\t\t...defaultYScale,\n\t\t\t...( options.yScale ?? {} ),\n\t\t};\n\t\tconst xScale = {\n\t\t\t...defaultXScale,\n\t\t\t...( options.xScale ?? {} ),\n\t\t};\n\n\t\treturn {\n\t\t\tyScale,\n\t\t\txScale,\n\t\t\tlabelPosition: options.labelPosition ?? ( isMultiSeries ? 0 : 10 ),\n\t\t\tvalueFormatter: options.valueFormatter ?? ( value => formatNumberCompact( value ) ),\n\t\t\tlabelFormatter: options.labelFormatter ?? ( value => String( value ) ),\n\t\t\tvaluePosition: options.valuePosition ?? width,\n\t\t\tyOffset: options.yOffset ?? getDefaultYOffset( data, yScale, height, isMultiSeries ),\n\t\t};\n\t}, [ options, width, data, height ] );\n\n\treturn (\n\t\t<BarChart\n\t\t\torientation=\"horizontal\"\n\t\t\tgridVisibility={ 'none' }\n\t\t\tdata={ data }\n\t\t\twidth={ width }\n\t\t\theight={ height }\n\t\t\tmargin={ margin }\n\t\t\toptions={ {\n\t\t\t\taxis: {\n\t\t\t\t\ty: {\n\t\t\t\t\t\tchildren: ( renderProps: AxisRendererProps< AnyD3Scale > ) => (\n\t\t\t\t\t\t\t<AxisRenderer\n\t\t\t\t\t\t\t\t{ ...renderProps }\n\t\t\t\t\t\t\t\tdata={ data }\n\t\t\t\t\t\t\t\tyOffset={ chartOptions.yOffset }\n\t\t\t\t\t\t\t\tlabelPosition={ chartOptions.labelPosition }\n\t\t\t\t\t\t\t\tvaluePosition={ chartOptions.valuePosition }\n\t\t\t\t\t\t\t\tlabelFormatter={ chartOptions.labelFormatter }\n\t\t\t\t\t\t\t\tvalueFormatter={ chartOptions.valueFormatter }\n\t\t\t\t\t\t\t\tLabelComponent={ options.labelComponent }\n\t\t\t\t\t\t\t\tValueComponent={ options.valueComponent }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\tx: {\n\t\t\t\t\t\tchildren: () => null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\txScale: chartOptions.xScale,\n\t\t\t\tyScale: chartOptions.yScale,\n\t\t\t} }\n\t\t\t{ ...rest }\n\t\t/>\n\t);\n};\n\nconst BarListChart: FC< BarListChartProps > = props => {\n\tconst existingContext = useContext( GlobalChartsContext );\n\n\t// If we're already in a GlobalChartsProvider context, render the core component directly\n\tif ( existingContext ) {\n\t\treturn <BarListChartInternal { ...props } />;\n\t}\n\n\t// Otherwise, wrap with our own GlobalChartsProvider\n\treturn (\n\t\t<GlobalChartsProvider>\n\t\t\t<BarListChartInternal { ...props } />\n\t\t</GlobalChartsProvider>\n\t);\n};\n\nBarListChart.displayName = 'BarListChart';\n\nconst BarListChartResponsive = withResponsive< BarListChartProps >( BarListChart );\n\nexport { BarListChartResponsive as default, BarListChart as BarListChartUnresponsive };\n"]}
@@ -1,13 +1,16 @@
1
1
  import {
2
2
  GlobalChartsContext,
3
3
  GlobalChartsProvider,
4
- formatPercentage,
5
- hexToRgba,
6
4
  useChartId,
7
5
  useChartRegistration,
6
+ useGlobalChartsContext,
8
7
  useGlobalChartsTheme,
9
8
  usePrefersReducedMotion
10
- } from "./chunk-5OB3F7GC.js";
9
+ } from "./chunk-OZYA4QTY.js";
10
+ import {
11
+ formatPercentage,
12
+ hexToRgba
13
+ } from "./chunk-AVHWSXUP.js";
11
14
 
12
15
  // src/components/conversion-funnel-chart/conversion-funnel-chart.tsx
13
16
  import { localPoint } from "@visx/event";
@@ -111,6 +114,7 @@ var ConversionFunnelChartInternal = ({
111
114
  }) => {
112
115
  const chartId = useChartId(providedChartId);
113
116
  const { conversionFunnelChart: conversionFunnelChartSettings } = useGlobalChartsTheme();
117
+ const { getElementStyles } = useGlobalChartsContext();
114
118
  const chartRef = useRef(null);
115
119
  const selectedBarRef = useRef(null);
116
120
  const { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } = useTooltip();
@@ -222,12 +226,11 @@ var ConversionFunnelChartInternal = ({
222
226
  document.removeEventListener("mousedown", handleDocumentClick);
223
227
  };
224
228
  }, [clearSelectionAndRef]);
225
- const {
226
- primaryColor: barColor,
227
- backgroundColor,
228
- positiveChangeColor,
229
- negativeChangeColor
230
- } = conversionFunnelChartSettings;
229
+ const { primaryColor, backgroundColor, positiveChangeColor, negativeChangeColor } = conversionFunnelChartSettings;
230
+ const { color: barColor } = getElementStyles ? getElementStyles({
231
+ index: 0,
232
+ overrideColor: primaryColor
233
+ }) : { color: primaryColor || "#000000" };
231
234
  const isPositiveChange = changeIndicator?.startsWith("+");
232
235
  const changeColor = isPositiveChange ? positiveChangeColor : negativeChangeColor;
233
236
  const barBackgroundColor = backgroundColor || hexToRgba(barColor, 0.08);
@@ -373,4 +376,4 @@ ConversionFunnelChartWithProvider.displayName = "ConversionFunnelChart";
373
376
  export {
374
377
  ConversionFunnelChartWithProvider
375
378
  };
376
- //# sourceMappingURL=chunk-55WZQTJG.js.map
379
+ //# sourceMappingURL=chunk-7PK4ZDO4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/conversion-funnel-chart/conversion-funnel-chart.tsx","../src/components/conversion-funnel-chart/conversion-funnel-chart.module.scss","../src/components/conversion-funnel-chart/private/use-funnel-selection.ts"],"sourcesContent":["import { localPoint } from '@visx/event';\nimport { useTooltip, useTooltipInPortal } from '@visx/tooltip';\nimport clsx from 'clsx';\nimport { type FC, useRef, useMemo, useEffect, useCallback, useContext } from 'react';\nimport { usePrefersReducedMotion } from '../../hooks';\nimport {\n\tGlobalChartsProvider,\n\tGlobalChartsContext,\n\tuseChartId,\n\tuseChartRegistration,\n\tuseGlobalChartsTheme,\n\tuseGlobalChartsContext,\n} from '../../providers';\nimport { hexToRgba, formatPercentage } from '../../utils';\nimport styles from './conversion-funnel-chart.module.scss';\nimport { useFunnelSelection } from './private';\nimport type { FunnelStep, ConversionFunnelChartProps } from './types';\n\n/**\n * Internal ConversionFunnelChart component with chart registration\n *\n * @param props - Component props\n * @param props.chartId - Optional unique identifier for the chart\n * @param props.mainRate - Main conversion rate to highlight\n * @param props.changeIndicator - Change indicator (e.g., +2%, -1.5%)\n * @param props.steps - Array of funnel steps\n * @param props.loading - Whether the chart is in loading state\n * @param props.animation - Whether to show chart animation on initial render or not\n * @param props.className - Additional CSS class name\n * @param props.style - Custom styling\n * @param props.renderStepLabel - Custom render function for step labels\n * @param props.renderStepRate - Custom render function for step rates\n * @param props.renderMainMetric - Custom render function for the entire main metric section\n * @param props.renderTooltip - Custom render function for tooltip content\n * @return JSX element representing the conversion funnel chart\n */\nconst ConversionFunnelChartInternal: FC< ConversionFunnelChartProps > = ( {\n\tmainRate,\n\tchangeIndicator,\n\tsteps,\n\tloading = false,\n\tanimation,\n\tclassName,\n\tchartId: providedChartId,\n\tstyle,\n\trenderStepLabel,\n\trenderStepRate,\n\trenderMainMetric,\n\trenderTooltip,\n} ) => {\n\tconst chartId = useChartId( providedChartId );\n\tconst { conversionFunnelChart: conversionFunnelChartSettings } = useGlobalChartsTheme();\n\tconst { getElementStyles } = useGlobalChartsContext();\n\tconst chartRef = useRef< HTMLDivElement >( null );\n\tconst selectedBarRef = useRef< HTMLDivElement | null >( null );\n\n\t// Use @visx/tooltip hooks for tooltip positioning\n\tconst { tooltipData, tooltipLeft, tooltipTop, tooltipOpen, showTooltip, hideTooltip } =\n\t\tuseTooltip();\n\n\t// Use custom hook for selection management\n\tconst { handleBarClick, handleBarKeyDown, clearSelection, getStepState } =\n\t\tuseFunnelSelection( hideTooltip );\n\tconst { containerRef: portalContainerRef, TooltipInPortal } = useTooltipInPortal( {\n\t\t// use TooltipWithBounds for boundary detection\n\t\tdetectBounds: true,\n\t\t// when tooltip containers are scrolled, this will correctly update the Tooltip position\n\t\tscroll: true,\n\t} );\n\n\t// Wrapper to clear selectedBarRef after clearing selection\n\tconst clearSelectionAndRef = useCallback( () => {\n\t\tclearSelection();\n\t\tselectedBarRef.current = null;\n\t\thideTooltip();\n\t}, [ clearSelection, hideTooltip ] );\n\n\t// Helper function to show tooltip at specific coordinates\n\tconst showTooltipAt = useCallback(\n\t\t( step: FunnelStep, x: number, y: number ) => {\n\t\t\tshowTooltip( {\n\t\t\t\ttooltipData: step,\n\t\t\t\ttooltipLeft: x,\n\t\t\t\ttooltipTop: y - 10,\n\t\t\t} );\n\t\t},\n\t\t[ showTooltip ]\n\t);\n\n\t// Helper function to get tooltip coordinates for mouse events\n\tconst getMouseTooltipCoords = useCallback( ( event: React.MouseEvent ) => {\n\t\tconst containerElement = chartRef.current;\n\t\tif ( containerElement ) {\n\t\t\tconst coords = localPoint( containerElement, event.nativeEvent );\n\t\t\tif ( coords ) {\n\t\t\t\treturn { x: coords.x, y: coords.y };\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}, [] );\n\n\t// Helper function to get tooltip coordinates for keyboard events\n\tconst getKeyboardTooltipCoords = useCallback( ( event: React.KeyboardEvent ) => {\n\t\tconst rect = event.currentTarget.getBoundingClientRect();\n\t\tconst containerElement = chartRef.current;\n\t\tif ( containerElement ) {\n\t\t\tconst containerRect = containerElement.getBoundingClientRect();\n\t\t\tconst x = rect.left + rect.width / 2 - containerRect.left;\n\t\t\tconst y = rect.top - containerRect.top;\n\t\t\treturn { x, y };\n\t\t}\n\t\treturn null;\n\t}, [] );\n\n\t// Helper function to handle step interaction (both click and keyboard)\n\tconst handleStepInteraction = useCallback(\n\t\t(\n\t\t\tstep: FunnelStep,\n\t\t\tevent: React.MouseEvent | React.KeyboardEvent,\n\t\t\tinteractionType: 'click' | 'keyboard'\n\t\t) => {\n\t\t\t// Store reference to the interacted element\n\t\t\tselectedBarRef.current = event.currentTarget as HTMLDivElement;\n\n\t\t\t// Check if deselecting the same step\n\t\t\tconst { isClicked } = getStepState( step.id );\n\t\t\tif ( isClicked ) {\n\t\t\t\t// Deselecting - clear selection (tooltip will be hidden by hook)\n\t\t\t\tif ( interactionType === 'click' ) {\n\t\t\t\t\thandleBarClick( step.id );\n\t\t\t\t} else {\n\t\t\t\t\thandleBarKeyDown( step.id, event as React.KeyboardEvent );\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Selecting - handle selection and show tooltip\n\t\t\tif ( interactionType === 'click' ) {\n\t\t\t\thandleBarClick( step.id );\n\t\t\t\tconst coords = getMouseTooltipCoords( event as React.MouseEvent );\n\t\t\t\tif ( coords ) {\n\t\t\t\t\tshowTooltipAt( step, coords.x, coords.y );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thandleBarKeyDown( step.id, event as React.KeyboardEvent );\n\t\t\t\tconst coords = getKeyboardTooltipCoords( event as React.KeyboardEvent );\n\t\t\t\tif ( coords ) {\n\t\t\t\t\tshowTooltipAt( step, coords.x, coords.y );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tgetStepState,\n\t\t\thandleBarClick,\n\t\t\thandleBarKeyDown,\n\t\t\tshowTooltipAt,\n\t\t\tgetMouseTooltipCoords,\n\t\t\tgetKeyboardTooltipCoords,\n\t\t]\n\t);\n\n\t// Create handler factories to avoid arrow functions in JSX\n\tconst stepHandlers = useMemo( () => {\n\t\tconst handlers = new Map<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\tonClick: ( event: React.MouseEvent ) => void;\n\t\t\t\tonKeyDown: ( event: React.KeyboardEvent ) => void;\n\t\t\t}\n\t\t>();\n\n\t\tsteps.forEach( step => {\n\t\t\tconst onClick = ( event: React.MouseEvent ) => {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\thandleStepInteraction( step, event, 'click' );\n\t\t\t};\n\n\t\t\tconst onKeyDown = ( event: React.KeyboardEvent ) => {\n\t\t\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\t\t\thandleStepInteraction( step, event, 'keyboard' );\n\t\t\t\t} else {\n\t\t\t\t\t// For other keys (like Escape), just handle the selection\n\t\t\t\t\tselectedBarRef.current = event.currentTarget as HTMLDivElement;\n\t\t\t\t\thandleBarKeyDown( step.id, event );\n\t\t\t\t}\n\t\t\t};\n\n\t\t\thandlers.set( step.id, { onClick, onKeyDown } );\n\t\t} );\n\n\t\treturn handlers;\n\t}, [ steps, handleStepInteraction, handleBarKeyDown ] );\n\n\t// Handle document-level click to clear selection when clicking outside selected bar\n\tuseEffect( () => {\n\t\tconst handleDocumentClick = ( event: MouseEvent ) => {\n\t\t\t// Only clear selection if there's an active selection and click is outside the selected bar\n\t\t\tif ( selectedBarRef.current && ! selectedBarRef.current.contains( event.target as Node ) ) {\n\t\t\t\tclearSelectionAndRef();\n\t\t\t}\n\t\t};\n\n\t\tdocument.addEventListener( 'mousedown', handleDocumentClick );\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener( 'mousedown', handleDocumentClick );\n\t\t};\n\t}, [ clearSelectionAndRef ] );\n\n\t// Get component settings from theme with fallbacks\n\tconst { primaryColor, backgroundColor, positiveChangeColor, negativeChangeColor } =\n\t\tconversionFunnelChartSettings;\n\n\t// Resolve bar color using getElementStyles with primaryColor as override\n\tconst { color: barColor } = getElementStyles\n\t\t? getElementStyles( {\n\t\t\t\tindex: 0,\n\t\t\t\toverrideColor: primaryColor,\n\t\t } )\n\t\t: { color: primaryColor || '#000000' };\n\n\t// Determine change indicator color\n\tconst isPositiveChange = changeIndicator?.startsWith( '+' );\n\tconst changeColor = isPositiveChange ? positiveChangeColor : negativeChangeColor;\n\n\t// Create light background version of primary color if not set\n\tconst barBackgroundColor = backgroundColor || hexToRgba( barColor, 0.08 );\n\n\t// Default main metric rendering function\n\tconst renderDefaultMainMetric = () => (\n\t\t<>\n\t\t\t<span className={ styles[ 'main-rate' ] }>{ formatPercentage( mainRate ) }</span>\n\t\t\t{ changeIndicator && (\n\t\t\t\t<span className={ styles[ 'change-indicator' ] } style={ { color: changeColor } }>\n\t\t\t\t\t{ changeIndicator }\n\t\t\t\t</span>\n\t\t\t) }\n\t\t</>\n\t);\n\n\t// Default tooltip rendering function\n\tconst renderDefaultTooltip = ( step: FunnelStep ) => (\n\t\t<>\n\t\t\t<div className={ styles[ 'tooltip-title' ] }>{ step.label }</div>\n\t\t\t<div className={ styles[ 'tooltip-content' ] }>\n\t\t\t\t{ formatPercentage( step.rate ) }\n\t\t\t\t{ step.count && ` • ${ step.count.toLocaleString() } items` }\n\t\t\t</div>\n\t\t</>\n\t);\n\n\t// Validate data\n\tconst isDataValid = Boolean( steps && steps.length > 0 );\n\n\t// Memoize metadata to prevent unnecessary re-registration\n\tconst chartMetadata = useMemo(\n\t\t() => ( {\n\t\t\tmainRate,\n\t\t\tchangeIndicator,\n\t\t\tstepsCount: steps?.length || 0,\n\t\t} ),\n\t\t[ mainRate, changeIndicator, steps?.length ]\n\t);\n\n\tuseChartRegistration( {\n\t\tchartId,\n\t\tlegendItems: [],\n\t\tchartType: 'conversion-funnel',\n\t\tisDataValid,\n\t\tmetadata: chartMetadata,\n\t} );\n\n\tconst prefersReducedMotion = usePrefersReducedMotion();\n\n\t// Handle empty or undefined data\n\tif ( ! isDataValid ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( styles.conversionFunnelChart, loading && styles.loading, className ) }\n\t\t\t\tstyle={ style }\n\t\t\t>\n\t\t\t\t<div className={ styles[ 'empty-state' ] }>\n\t\t\t\t\t{ loading ? 'Loading...' : 'No data available' }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Calculate bar heights relative to the maximum (first step)\n\tconst maxRate = Math.max( ...steps.map( step => step.rate ) );\n\n\treturn (\n\t\t<>\n\t\t\t<div\n\t\t\t\tref={ node => {\n\t\t\t\t\t// Set containerRef for @visx coordinate system\n\t\t\t\t\tportalContainerRef( node );\n\t\t\t\t\tchartRef.current = node;\n\t\t\t\t} }\n\t\t\t\tclassName={ clsx( styles.conversionFunnelChart, loading && styles.loading, className ) }\n\t\t\t\tstyle={ style }\n\t\t\t>\n\t\t\t\t{ /* Main Metric */ }\n\t\t\t\t{ renderMainMetric ? (\n\t\t\t\t\trenderMainMetric( {\n\t\t\t\t\t\tmainRate,\n\t\t\t\t\t\tchangeIndicator,\n\t\t\t\t\t\tclassName: styles[ 'main-metric' ],\n\t\t\t\t\t\tchangeColor,\n\t\t\t\t\t} )\n\t\t\t\t) : (\n\t\t\t\t\t<div className={ styles[ 'main-metric' ] }>{ renderDefaultMainMetric() }</div>\n\t\t\t\t) }\n\n\t\t\t\t{ /* Funnel Steps */ }\n\t\t\t\t<div className={ styles[ 'funnel-container' ] }>\n\t\t\t\t\t{ steps.map( ( step, index ) => {\n\t\t\t\t\t\tconst barHeight = ( step.rate / maxRate ) * 100;\n\t\t\t\t\t\tconst { isBlurred } = getStepState( step.id );\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={ step.id }\n\t\t\t\t\t\t\t\tclassName={ clsx( styles[ 'funnel-step' ], isBlurred && styles.blurred ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ /* Step Label and Rate */ }\n\t\t\t\t\t\t\t\t<div className={ styles[ 'step-header' ] }>\n\t\t\t\t\t\t\t\t\t{ renderStepLabel ? (\n\t\t\t\t\t\t\t\t\t\trenderStepLabel( {\n\t\t\t\t\t\t\t\t\t\t\tstep,\n\t\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\t\tclassName: styles[ 'step-label' ],\n\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<span className={ styles[ 'step-label' ] }>{ step.label }</span>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ renderStepRate ? (\n\t\t\t\t\t\t\t\t\t\trenderStepRate( {\n\t\t\t\t\t\t\t\t\t\t\tstep,\n\t\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\t\tclassName: styles[ 'step-rate' ],\n\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<span className={ styles[ 'step-rate' ] }>\n\t\t\t\t\t\t\t\t\t\t\t{ formatPercentage( step.rate ) }\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{ /* Funnel Bar */ }\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={ clsx( styles[ 'bar-container' ], isBlurred && styles.disabled ) }\n\t\t\t\t\t\t\t\t\tonClick={ stepHandlers.get( step.id )?.onClick }\n\t\t\t\t\t\t\t\t\tonKeyDown={ stepHandlers.get( step.id )?.onKeyDown }\n\t\t\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\t\t\ttabIndex={ isBlurred ? -1 : 0 }\n\t\t\t\t\t\t\t\t\taria-label={ step.label }\n\t\t\t\t\t\t\t\t\tstyle={ { backgroundColor: barBackgroundColor } }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={ clsx( styles[ 'funnel-bar' ], {\n\t\t\t\t\t\t\t\t\t\t\t[ styles[ 'funnel-bar--animated' ] ]:\n\t\t\t\t\t\t\t\t\t\t\t\tanimation && ! loading && ! prefersReducedMotion,\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\theight: `${ barHeight }%`,\n\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: barColor,\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{ /* Tooltip Portal */ }\n\t\t\t{ tooltipOpen &&\n\t\t\t\ttooltipData &&\n\t\t\t\t( () => {\n\t\t\t\t\tconst tooltipContent = renderTooltip\n\t\t\t\t\t\t? renderTooltip( {\n\t\t\t\t\t\t\t\tstep: tooltipData as FunnelStep,\n\t\t\t\t\t\t\t\tindex: steps.findIndex( s => s.id === ( tooltipData as FunnelStep ).id ),\n\t\t\t\t\t\t\t\ttop: tooltipTop,\n\t\t\t\t\t\t\t\tleft: tooltipLeft,\n\t\t\t\t\t\t\t\tclassName: styles[ 'tooltip-wrapper' ],\n\t\t\t\t\t\t } )\n\t\t\t\t\t\t: renderDefaultTooltip( tooltipData as FunnelStep );\n\n\t\t\t\t\t// Don't render tooltip if renderTooltip returns falsy\n\t\t\t\t\tif ( ! tooltipContent ) return null;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TooltipInPortal\n\t\t\t\t\t\t\t// set this to random so it correctly updates with parent bounds\n\t\t\t\t\t\t\tkey={ Math.random() }\n\t\t\t\t\t\t\ttop={ tooltipTop }\n\t\t\t\t\t\t\tleft={ tooltipLeft }\n\t\t\t\t\t\t\tclassName={ styles[ 'tooltip-wrapper' ] }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ tooltipContent }\n\t\t\t\t\t\t</TooltipInPortal>\n\t\t\t\t\t);\n\t\t\t\t} )() }\n\t\t</>\n\t);\n};\n\n/**\n * ConversionFunnelChart component with provider wrapper\n *\n * @param props - Component props\n * @return JSX element representing the conversion funnel chart\n */\nconst ConversionFunnelChartWithProvider: FC< ConversionFunnelChartProps > = props => {\n\tconst existingContext = useContext( GlobalChartsContext );\n\n\t// If we're already in a GlobalChartsProvider context, don't create a new one\n\tif ( existingContext ) {\n\t\treturn <ConversionFunnelChartInternal { ...props } />;\n\t}\n\n\t// Otherwise, create our own GlobalChartsProvider\n\treturn (\n\t\t<GlobalChartsProvider>\n\t\t\t<ConversionFunnelChartInternal { ...props } />\n\t\t</GlobalChartsProvider>\n\t);\n};\n\nConversionFunnelChartWithProvider.displayName = 'ConversionFunnelChart';\n\nexport { ConversionFunnelChartWithProvider as default };\n","import 'css-chunk:src/components/conversion-funnel-chart/conversion-funnel-chart.module.scss';export default {\n \"conversionFunnelChart\": \"a8ccharts--9Qsb0\",\n \"loading\": \"a8ccharts-Kw-iZo\",\n \"main-metric\": \"a8ccharts-8mIwVL\",\n \"main-rate\": \"a8ccharts-D93Ubo\",\n \"change-indicator\": \"a8ccharts-QWypVS\",\n \"funnel-container\": \"a8ccharts-RR7xaC\",\n \"funnel-step\": \"a8ccharts-VIVztE\",\n \"blurred\": \"a8ccharts-Ax4cuC\",\n \"step-header\": \"a8ccharts-bUrZ0x\",\n \"step-label\": \"a8ccharts-SCy8FA\",\n \"step-rate\": \"a8ccharts-A0irBo\",\n \"bar-container\": \"a8ccharts-5Dl5-j\",\n \"disabled\": \"a8ccharts-Reovk6\",\n \"funnel-bar\": \"a8ccharts-tG5m3L\",\n \"selected\": \"a8ccharts-W40FYh\",\n \"funnel-bar--animated\": \"a8ccharts-YVRBpF\",\n \"stretch\": \"a8ccharts-4otxiv\",\n \"tooltip-wrapper\": \"a8ccharts-NohPt6\",\n \"tooltip-title\": \"a8ccharts-hjZr33\",\n \"tooltip-content\": \"a8ccharts-ocwAPj\",\n \"empty-state\": \"a8ccharts-9c0psv\"\n};","import { useCallback, useState } from 'react';\n\n/**\n * Custom hook to manage funnel bar selection state and interactions\n * @param hideTooltip - Function to hide tooltip when selection is cleared\n * @return Object containing selection state and event handlers\n */\nexport const useFunnelSelection = ( hideTooltip?: () => void ) => {\n\tconst [ clickedStep, setClickedStep ] = useState< string | null >( null );\n\n\t// Handle bar click\n\tconst handleBarClick = useCallback(\n\t\t( stepId: string ) => {\n\t\t\tif ( clickedStep === stepId ) {\n\t\t\t\t// If clicking the same step, deselect it\n\t\t\t\tsetClickedStep( null );\n\t\t\t\thideTooltip?.();\n\t\t\t} else {\n\t\t\t\t// Otherwise, select this step\n\t\t\t\tsetClickedStep( stepId );\n\t\t\t}\n\t\t},\n\t\t[ clickedStep, hideTooltip ]\n\t);\n\n\t// Handle bar keydown\n\tconst handleBarKeyDown = useCallback(\n\t\t( stepId: string, event: React.KeyboardEvent ) => {\n\t\t\tif ( event.key === 'Enter' || event.key === ' ' ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( clickedStep === stepId ) {\n\t\t\t\t\tsetClickedStep( null );\n\t\t\t\t\thideTooltip?.();\n\t\t\t\t} else {\n\t\t\t\t\tsetClickedStep( stepId );\n\t\t\t\t}\n\t\t\t} else if ( event.key === 'Escape' ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetClickedStep( null );\n\t\t\t\thideTooltip?.();\n\t\t\t}\n\t\t},\n\t\t[ clickedStep, hideTooltip ]\n\t);\n\n\t// Clear selection (for chart-level click)\n\tconst clearSelection = useCallback( () => {\n\t\tsetClickedStep( null );\n\t\thideTooltip?.();\n\t}, [ hideTooltip ] );\n\n\t// Get step state helpers\n\tconst getStepState = useCallback(\n\t\t( stepId: string ) => ( {\n\t\t\tisClicked: clickedStep === stepId,\n\t\t\tisBlurred: clickedStep !== null && clickedStep !== stepId,\n\t\t} ),\n\t\t[ clickedStep ]\n\t);\n\n\treturn {\n\t\tclickedStep,\n\t\thandleBarClick,\n\t\thandleBarKeyDown,\n\t\tclearSelection,\n\t\tgetStepState,\n\t};\n};\n"],"mappings":"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","names":["useCallback","useCallback"]}
@@ -7,7 +7,7 @@ var _chunkFX2PTUFCcjs = require('./chunk-FX2PTUFC.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunk4TN6B3QGcjs = require('./chunk-4TN6B3QG.cjs');
10
+ var _chunkLACY6G6Icjs = require('./chunk-LACY6G6I.cjs');
11
11
 
12
12
 
13
13
 
@@ -16,9 +16,11 @@ var _chunk4TN6B3QGcjs = require('./chunk-4TN6B3QG.cjs');
16
16
 
17
17
 
18
18
 
19
+ var _chunkI7MCBD76cjs = require('./chunk-I7MCBD76.cjs');
19
20
 
20
21
 
21
- var _chunkMNZD6UDQcjs = require('./chunk-MNZD6UDQ.cjs');
22
+
23
+ var _chunkWPSB7BRRcjs = require('./chunk-WPSB7BRR.cjs');
22
24
 
23
25
 
24
26
 
@@ -4214,8 +4216,8 @@ function useLeaderboardLegendItems({
4214
4216
  withOverlayLabel = false,
4215
4217
  legendLabels
4216
4218
  }) {
4217
- const { leaderboardChart: leaderboardChartSettings } = _chunkMNZD6UDQcjs.useGlobalChartsTheme.call(void 0, );
4218
- const { getElementStyles } = _chunkMNZD6UDQcjs.useGlobalChartsContext.call(void 0, );
4219
+ const { leaderboardChart: leaderboardChartSettings } = _chunkI7MCBD76cjs.useGlobalChartsTheme.call(void 0, );
4220
+ const { getElementStyles } = _chunkI7MCBD76cjs.useGlobalChartsContext.call(void 0, );
4219
4221
  return _react.useMemo.call(void 0, () => {
4220
4222
  if (!data || data.length === 0) {
4221
4223
  return [];
@@ -4274,13 +4276,13 @@ var leaderboard_chart_module_default = {
4274
4276
  // src/components/leaderboard-chart/leaderboard-chart.tsx
4275
4277
 
4276
4278
  var defaultValueFormatter = (value) => {
4277
- return _chunkMNZD6UDQcjs.formatMetricValue.call(void 0, value, "number", {
4279
+ return _chunkWPSB7BRRcjs.formatMetricValue.call(void 0, value, "number", {
4278
4280
  useMultipliers: true,
4279
4281
  decimals: 1
4280
4282
  });
4281
4283
  };
4282
4284
  var defaultDeltaFormatter = (value) => {
4283
- return _chunkMNZD6UDQcjs.formatMetricValue.call(void 0, value / 100, "average", {
4285
+ return _chunkWPSB7BRRcjs.formatMetricValue.call(void 0, value / 100, "average", {
4284
4286
  decimals: 0,
4285
4287
  signDisplay: "exceptZero"
4286
4288
  });
@@ -4354,8 +4356,8 @@ var LeaderboardChartInternal = ({
4354
4356
  style,
4355
4357
  children
4356
4358
  }) => {
4357
- const chartId = _chunkMNZD6UDQcjs.useChartId.call(void 0, providedChartId);
4358
- const { leaderboardChart: leaderboardChartSettings } = _chunkMNZD6UDQcjs.useGlobalChartsTheme.call(void 0, );
4359
+ const chartId = _chunkI7MCBD76cjs.useChartId.call(void 0, providedChartId);
4360
+ const { leaderboardChart: leaderboardChartSettings } = _chunkI7MCBD76cjs.useGlobalChartsTheme.call(void 0, );
4359
4361
  const { otherChildren } = _chunk3Z526IL2cjs.useChartChildren.call(void 0, children, "LeaderboardChart");
4360
4362
  const {
4361
4363
  labelSpacing,
@@ -4365,7 +4367,7 @@ var LeaderboardChartInternal = ({
4365
4367
  secondaryColor: settingsSecondaryColor,
4366
4368
  deltaColors
4367
4369
  } = leaderboardChartSettings;
4368
- const { getElementStyles, isSeriesVisible } = _chunkMNZD6UDQcjs.useGlobalChartsContext.call(void 0, );
4370
+ const { getElementStyles, isSeriesVisible } = _chunkI7MCBD76cjs.useGlobalChartsContext.call(void 0, );
4369
4371
  const { color: resolvedPrimaryColor } = getElementStyles({
4370
4372
  index: 0,
4371
4373
  overrideColor: primaryColor || settingsPrimaryColor
@@ -4415,17 +4417,17 @@ var LeaderboardChartInternal = ({
4415
4417
  }),
4416
4418
  [withComparison, withOverlayLabel]
4417
4419
  );
4418
- _chunkMNZD6UDQcjs.useChartRegistration.call(void 0, {
4420
+ _chunkI7MCBD76cjs.useChartRegistration.call(void 0, {
4419
4421
  chartId,
4420
4422
  legendItems,
4421
4423
  chartType: "leaderboard",
4422
4424
  isDataValid,
4423
4425
  metadata: chartMetadata
4424
4426
  });
4425
- const prefersReducedMotion = _chunkMNZD6UDQcjs.usePrefersReducedMotion.call(void 0, );
4427
+ const prefersReducedMotion = _chunkI7MCBD76cjs.usePrefersReducedMotion.call(void 0, );
4426
4428
  if (!data || data.length === 0) {
4427
4429
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4428
- _chunk4TN6B3QGcjs.SingleChartContext.Provider,
4430
+ _chunkLACY6G6Icjs.SingleChartContext.Provider,
4429
4431
  {
4430
4432
  value: {
4431
4433
  chartId,
@@ -4452,7 +4454,7 @@ var LeaderboardChartInternal = ({
4452
4454
  );
4453
4455
  }
4454
4456
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4455
- _chunk4TN6B3QGcjs.SingleChartContext.Provider,
4457
+ _chunkLACY6G6Icjs.SingleChartContext.Provider,
4456
4458
  {
4457
4459
  value: {
4458
4460
  chartId,
@@ -4506,7 +4508,7 @@ var LeaderboardChartInternal = ({
4506
4508
  ] }, entry.id);
4507
4509
  }) }),
4508
4510
  showLegend && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4509
- _chunk4TN6B3QGcjs.Legend,
4511
+ _chunkLACY6G6Icjs.Legend,
4510
4512
  {
4511
4513
  orientation: legendOrientation,
4512
4514
  position: legendPosition,
@@ -4526,20 +4528,20 @@ var LeaderboardChartInternal = ({
4526
4528
  );
4527
4529
  };
4528
4530
  var LeaderboardChartWithProvider = (props) => {
4529
- const existingContext = _react.useContext.call(void 0, _chunkMNZD6UDQcjs.GlobalChartsContext);
4531
+ const existingContext = _react.useContext.call(void 0, _chunkI7MCBD76cjs.GlobalChartsContext);
4530
4532
  if (existingContext) {
4531
4533
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LeaderboardChartInternal, { ...props });
4532
4534
  }
4533
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMNZD6UDQcjs.GlobalChartsProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LeaderboardChartInternal, { ...props }) });
4535
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkI7MCBD76cjs.GlobalChartsProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LeaderboardChartInternal, { ...props }) });
4534
4536
  };
4535
4537
  LeaderboardChartWithProvider.displayName = "LeaderboardChart";
4536
- var LeaderboardChart = _chunkMNZD6UDQcjs.attachSubComponents.call(void 0, LeaderboardChartWithProvider, {
4537
- Legend: _chunk4TN6B3QGcjs.Legend
4538
+ var LeaderboardChart = _chunkWPSB7BRRcjs.attachSubComponents.call(void 0, LeaderboardChartWithProvider, {
4539
+ Legend: _chunkLACY6G6Icjs.Legend
4538
4540
  });
4539
- var LeaderboardChartResponsive = _chunkMNZD6UDQcjs.attachSubComponents.call(void 0,
4541
+ var LeaderboardChartResponsive = _chunkWPSB7BRRcjs.attachSubComponents.call(void 0,
4540
4542
  _chunkFX2PTUFCcjs.withResponsive.call(void 0, LeaderboardChartWithProvider),
4541
4543
  {
4542
- Legend: _chunk4TN6B3QGcjs.Legend
4544
+ Legend: _chunkLACY6G6Icjs.Legend
4543
4545
  }
4544
4546
  );
4545
4547
 
@@ -4578,4 +4580,4 @@ is-plain-object/dist/is-plain-object.mjs:
4578
4580
  * Released under the MIT License.
4579
4581
  *)
4580
4582
  */
4581
- //# sourceMappingURL=chunk-5LQRPB4Q.cjs.map
4583
+ //# sourceMappingURL=chunk-A4IXXP53.cjs.map