@automattic/charts 0.53.0 → 0.53.2

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 (122) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/charts/bar-chart/index.cjs +5 -5
  3. package/dist/charts/bar-chart/index.d.cts +1 -1
  4. package/dist/charts/bar-chart/index.d.ts +1 -1
  5. package/dist/charts/bar-chart/index.js +4 -4
  6. package/dist/charts/bar-list-chart/index.cjs +6 -6
  7. package/dist/charts/bar-list-chart/index.d.cts +1 -1
  8. package/dist/charts/bar-list-chart/index.d.ts +1 -1
  9. package/dist/charts/bar-list-chart/index.js +5 -5
  10. package/dist/charts/conversion-funnel-chart/index.cjs +4 -4
  11. package/dist/charts/conversion-funnel-chart/index.d.cts +1 -1
  12. package/dist/charts/conversion-funnel-chart/index.d.ts +1 -1
  13. package/dist/charts/conversion-funnel-chart/index.js +3 -3
  14. package/dist/charts/geo-chart/index.cjs +13 -0
  15. package/dist/charts/geo-chart/index.cjs.map +1 -0
  16. package/dist/charts/geo-chart/index.css +8 -0
  17. package/dist/charts/geo-chart/index.css.map +1 -0
  18. package/dist/charts/geo-chart/index.d.cts +62 -0
  19. package/dist/charts/geo-chart/index.d.ts +62 -0
  20. package/dist/charts/geo-chart/index.js +13 -0
  21. package/dist/charts/geo-chart/index.js.map +1 -0
  22. package/dist/charts/leaderboard-chart/index.cjs +5 -5
  23. package/dist/charts/leaderboard-chart/index.d.cts +2 -2
  24. package/dist/charts/leaderboard-chart/index.d.ts +2 -2
  25. package/dist/charts/leaderboard-chart/index.js +4 -4
  26. package/dist/charts/line-chart/index.cjs +5 -5
  27. package/dist/charts/line-chart/index.d.cts +1 -1
  28. package/dist/charts/line-chart/index.d.ts +1 -1
  29. package/dist/charts/line-chart/index.js +4 -4
  30. package/dist/charts/pie-chart/index.cjs +6 -6
  31. package/dist/charts/pie-chart/index.d.cts +1 -1
  32. package/dist/charts/pie-chart/index.d.ts +1 -1
  33. package/dist/charts/pie-chart/index.js +5 -5
  34. package/dist/charts/pie-semi-circle-chart/index.cjs +6 -6
  35. package/dist/charts/pie-semi-circle-chart/index.d.cts +1 -1
  36. package/dist/charts/pie-semi-circle-chart/index.d.ts +1 -1
  37. package/dist/charts/pie-semi-circle-chart/index.js +5 -5
  38. package/dist/{chunk-ERGEUE7R.cjs → chunk-4KEE36W3.cjs} +19 -19
  39. package/dist/chunk-4KEE36W3.cjs.map +1 -0
  40. package/dist/{chunk-4RYV2TII.js → chunk-6RKPV3UP.js} +10 -10
  41. package/dist/{chunk-VER6S543.js → chunk-ALDWCNLH.js} +3 -3
  42. package/dist/chunk-CLSMJQCO.cjs +121 -0
  43. package/dist/chunk-CLSMJQCO.cjs.map +1 -0
  44. package/dist/{chunk-2FRTJVQ3.js → chunk-DCZ47KPZ.js} +6 -6
  45. package/dist/chunk-DCZ47KPZ.js.map +1 -0
  46. package/dist/{chunk-GWNXOI4M.cjs → chunk-DDV5726Q.cjs} +25 -25
  47. package/dist/{chunk-GWNXOI4M.cjs.map → chunk-DDV5726Q.cjs.map} +1 -1
  48. package/dist/{chunk-O2BJMTIS.js → chunk-DYMJWNYM.js} +2 -2
  49. package/dist/{chunk-A7X3CNEO.cjs → chunk-FVWTBK44.cjs} +6 -6
  50. package/dist/{chunk-A7X3CNEO.cjs.map → chunk-FVWTBK44.cjs.map} +1 -1
  51. package/dist/{chunk-ZN7KVU4R.cjs → chunk-GX4XTD6V.cjs} +76 -76
  52. package/dist/{chunk-ZN7KVU4R.cjs.map → chunk-GX4XTD6V.cjs.map} +1 -1
  53. package/dist/{chunk-VTMJWCCW.js → chunk-H6XRINJE.js} +10 -10
  54. package/dist/{chunk-CQPKK55N.js → chunk-HPJ5XSZM.js} +60 -60
  55. package/dist/{chunk-CQPKK55N.js.map → chunk-HPJ5XSZM.js.map} +1 -1
  56. package/dist/{chunk-6QCSXXDY.cjs → chunk-JWMWOBAX.cjs} +23 -23
  57. package/dist/{chunk-6QCSXXDY.cjs.map → chunk-JWMWOBAX.cjs.map} +1 -1
  58. package/dist/{chunk-DY7IVYWP.js → chunk-KBORJZKC.js} +8 -8
  59. package/dist/{chunk-W4ZYJ74Q.js → chunk-KORG7ITC.js} +3 -3
  60. package/dist/{chunk-AHUSYMYS.cjs → chunk-LNLHCZ6F.cjs} +28 -28
  61. package/dist/{chunk-AHUSYMYS.cjs.map → chunk-LNLHCZ6F.cjs.map} +1 -1
  62. package/dist/chunk-RDJ5PKC5.js +121 -0
  63. package/dist/chunk-RDJ5PKC5.js.map +1 -0
  64. package/dist/{chunk-P3QEXFTA.js → chunk-TE63Y5PX.js} +9 -1
  65. package/dist/chunk-TE63Y5PX.js.map +1 -0
  66. package/dist/{chunk-O23EGQ3H.cjs → chunk-UWAZGLHG.cjs} +22 -22
  67. package/dist/{chunk-O23EGQ3H.cjs.map → chunk-UWAZGLHG.cjs.map} +1 -1
  68. package/dist/{chunk-W3H42XRV.cjs → chunk-WKN6C4ZE.cjs} +10 -10
  69. package/dist/{chunk-W3H42XRV.cjs.map → chunk-WKN6C4ZE.cjs.map} +1 -1
  70. package/dist/{chunk-RHQIACQT.js → chunk-Z34VYZGR.js} +9 -9
  71. package/dist/{chunk-NYZFVI2P.cjs → chunk-ZPJHWKEK.cjs} +9 -9
  72. package/dist/{chunk-NYZFVI2P.cjs.map → chunk-ZPJHWKEK.cjs.map} +1 -1
  73. package/dist/{chunk-DAKYGZG6.cjs → chunk-ZVGEDXDP.cjs} +10 -2
  74. package/dist/chunk-ZVGEDXDP.cjs.map +1 -0
  75. package/dist/components/legend/index.cjs +4 -4
  76. package/dist/components/legend/index.d.cts +1 -1
  77. package/dist/components/legend/index.d.ts +1 -1
  78. package/dist/components/legend/index.js +3 -3
  79. package/dist/components/tooltip/index.d.cts +1 -1
  80. package/dist/components/tooltip/index.d.ts +1 -1
  81. package/dist/hooks/index.cjs +3 -3
  82. package/dist/hooks/index.d.cts +1 -1
  83. package/dist/hooks/index.d.ts +1 -1
  84. package/dist/hooks/index.js +2 -2
  85. package/dist/index.cjs +26 -126
  86. package/dist/index.cjs.map +1 -1
  87. package/dist/index.d.cts +15 -55
  88. package/dist/index.d.ts +15 -55
  89. package/dist/index.js +38 -138
  90. package/dist/index.js.map +1 -1
  91. package/dist/{leaderboard-chart-3dKYMfoP.d.cts → leaderboard-chart-CN80sJmQ.d.cts} +1 -1
  92. package/dist/{leaderboard-chart-BqH8BLiG.d.ts → leaderboard-chart-DPi2ueOg.d.ts} +1 -1
  93. package/dist/providers/index.cjs +3 -3
  94. package/dist/providers/index.d.cts +2 -2
  95. package/dist/providers/index.d.ts +2 -2
  96. package/dist/providers/index.js +2 -2
  97. package/dist/{themes-ChB_VjWt.d.ts → themes-AriuFXQ2.d.ts} +2 -2
  98. package/dist/{themes-DijSDhqQ.d.cts → themes-Dzg0wE3B.d.cts} +2 -2
  99. package/dist/{types-sQ20gAeB.d.cts → types-D1lTxRyg.d.cts} +1 -1
  100. package/dist/{types-sQ20gAeB.d.ts → types-D1lTxRyg.d.ts} +1 -1
  101. package/dist/utils/index.cjs +4 -2
  102. package/dist/utils/index.cjs.map +1 -1
  103. package/dist/utils/index.d.cts +11 -2
  104. package/dist/utils/index.d.ts +11 -2
  105. package/dist/utils/index.js +3 -1
  106. package/package.json +31 -23
  107. package/src/charts/conversion-funnel-chart/conversion-funnel-chart.tsx +2 -5
  108. package/src/charts/sparkline/sparkline.tsx +2 -0
  109. package/src/charts/sparkline/types.ts +8 -0
  110. package/src/utils/color-utils.ts +19 -0
  111. package/src/utils/test/color-utils.test.ts +232 -0
  112. package/dist/chunk-2FRTJVQ3.js.map +0 -1
  113. package/dist/chunk-DAKYGZG6.cjs.map +0 -1
  114. package/dist/chunk-ERGEUE7R.cjs.map +0 -1
  115. package/dist/chunk-P3QEXFTA.js.map +0 -1
  116. /package/dist/{chunk-4RYV2TII.js.map → chunk-6RKPV3UP.js.map} +0 -0
  117. /package/dist/{chunk-VER6S543.js.map → chunk-ALDWCNLH.js.map} +0 -0
  118. /package/dist/{chunk-O2BJMTIS.js.map → chunk-DYMJWNYM.js.map} +0 -0
  119. /package/dist/{chunk-VTMJWCCW.js.map → chunk-H6XRINJE.js.map} +0 -0
  120. /package/dist/{chunk-DY7IVYWP.js.map → chunk-KBORJZKC.js.map} +0 -0
  121. /package/dist/{chunk-W4ZYJ74Q.js.map → chunk-KORG7ITC.js.map} +0 -0
  122. /package/dist/{chunk-RHQIACQT.js.map → chunk-Z34VYZGR.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-GWNXOI4M.cjs","../src/charts/bar-chart/bar-chart.tsx","../src/charts/bar-chart/bar-chart.module.scss","../src/charts/bar-chart/private/use-bar-chart-options.ts"],"names":["useMemo"],"mappings":"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","file":"/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-GWNXOI4M.cjs","sourcesContent":[null,"import { formatNumber } from '@automattic/number-formatters';\nimport { PatternLines, PatternCircles, PatternWaves, PatternHexagons } from '@visx/pattern';\nimport { Axis, BarSeries, BarGroup, Grid, XYChart } from '@visx/xychart';\nimport { __ } from '@wordpress/i18n';\nimport clsx from 'clsx';\nimport { useCallback, useContext, useState, useRef, useMemo } from 'react';\nimport { Legend, useChartLegendItems } from '../../components/legend';\nimport { AccessibleTooltip, useKeyboardNavigation } from '../../components/tooltip';\nimport {\n\tuseXYChartTheme,\n\tuseChartDataTransform,\n\tuseZeroValueDisplay,\n\tuseChartMargin,\n\tuseElementHeight,\n\tusePrefersReducedMotion,\n} from '../../hooks';\nimport {\n\tGlobalChartsProvider,\n\tuseChartId,\n\tuseChartRegistration,\n\tuseGlobalChartsContext,\n\tuseGlobalChartsTheme,\n\tGlobalChartsContext,\n} from '../../providers';\nimport { attachSubComponents } from '../../utils';\nimport { SingleChartContext } from '../private/single-chart-context';\nimport { withResponsive } from '../private/with-responsive';\nimport styles from './bar-chart.module.scss';\nimport { useBarChartOptions } from './private';\nimport type { BaseChartProps, DataPointDate, SeriesData, Optional } from '../../types';\nimport type { ResponsiveConfig } from '../private/with-responsive';\nimport type { RenderTooltipParams } from '@visx/xychart/lib/components/Tooltip';\nimport type { FC, ReactNode, ComponentType } from 'react';\n\nexport interface BarChartProps extends BaseChartProps< SeriesData[] > {\n\trenderTooltip?: ( params: RenderTooltipParams< DataPointDate > ) => ReactNode;\n\torientation?: 'horizontal' | 'vertical';\n\twithPatterns?: boolean;\n\tshowZeroValues?: boolean;\n\tlegendInteractive?: boolean;\n\tchildren?: ReactNode;\n}\n\n// Base props type with optional responsive properties\ntype BarChartBaseProps = Optional< BarChartProps, 'width' | 'height' | 'size' >;\n\n// Composition API types\ninterface BarChartSubComponents {\n\tLegend: ComponentType< React.ComponentProps< typeof Legend > >;\n}\n\ntype BarChartComponent = FC< BarChartBaseProps > & BarChartSubComponents;\ntype BarChartResponsiveComponent = FC< BarChartBaseProps & ResponsiveConfig > &\n\tBarChartSubComponents;\n\n// Validation function similar to LineChart\nconst validateData = ( data: SeriesData[] ) => {\n\tif ( ! data?.length ) return 'No data available';\n\n\tconst hasInvalidData = data.some( series =>\n\t\tseries.data.some(\n\t\t\tpoint =>\n\t\t\t\tisNaN( point.value as number ) ||\n\t\t\t\tpoint.value === null ||\n\t\t\t\tpoint.value === undefined ||\n\t\t\t\t( ! point.label &&\n\t\t\t\t\t( ! ( 'date' in point && point.date ) || isNaN( point.date.getTime() ) ) )\n\t\t)\n\t);\n\n\tif ( hasInvalidData ) return 'Invalid data';\n\treturn null;\n};\n\nconst getPatternId = ( chartId: string, index: number ) => `bar-pattern-${ chartId }-${ index }`;\n\nconst BarChartInternal: FC< BarChartProps > = ( {\n\tdata,\n\tchartId: providedChartId,\n\twidth,\n\theight = 400,\n\tclassName,\n\tmargin,\n\twithTooltips = false,\n\tshowLegend = false,\n\tlegendOrientation = 'horizontal',\n\tlegendPosition = 'bottom',\n\tlegendAlignment = 'center',\n\tlegendMaxWidth,\n\tlegendTextOverflow = 'wrap',\n\tlegendItemClassName,\n\tlegendShape = 'rect',\n\tgridVisibility: gridVisibilityProp,\n\trenderTooltip,\n\toptions = {},\n\torientation = 'vertical',\n\twithPatterns = false,\n\tshowZeroValues = false,\n\tlegendInteractive = false,\n\tanimation,\n\tchildren,\n} ) => {\n\tconst horizontal = orientation === 'horizontal';\n\tconst chartId = useChartId( providedChartId );\n\tconst theme = useXYChartTheme( data );\n\n\tconst dataSorted = useChartDataTransform( data );\n\n\t// Transform data to add a small value for zero bars to make them visible\n\tconst dataWithVisibleZeros = useZeroValueDisplay( dataSorted, {\n\t\tenabled: showZeroValues,\n\t} );\n\n\t// Create legend items using the reusable hook\n\tconst legendItems = useChartLegendItems( dataSorted );\n\tconst chartOptions = useBarChartOptions( dataWithVisibleZeros, horizontal, options );\n\tconst defaultMargin = useChartMargin( height, chartOptions, dataSorted, theme, horizontal );\n\tconst [ legendRef, legendHeight ] = useElementHeight< HTMLDivElement >();\n\tconst chartRef = useRef< HTMLDivElement >( null );\n\tconst [ selectedIndex, setSelectedIndex ] = useState< number | undefined >( undefined );\n\tconst [ isNavigating, setIsNavigating ] = useState( false );\n\n\tconst totalPoints =\n\t\tMath.max( 0, ...data.map( series => series.data?.length || 0 ) ) * data.length;\n\n\t// Use the keyboard navigation hook\n\tconst { tooltipRef, onChartFocus, onChartBlur, onChartKeyDown } = useKeyboardNavigation( {\n\t\tselectedIndex,\n\t\tsetSelectedIndex,\n\t\tisNavigating,\n\t\tsetIsNavigating,\n\t\tchartRef,\n\t\ttotalPoints,\n\t} );\n\n\tconst { getElementStyles, isSeriesVisible } = useGlobalChartsContext();\n\tconst providerTheme = useGlobalChartsTheme();\n\n\t// Add visibility information to series when using interactive legends\n\tconst seriesWithVisibility = useMemo( () => {\n\t\tif ( ! chartId || ! legendInteractive ) {\n\t\t\treturn dataWithVisibleZeros.map( ( series, index ) => ( {\n\t\t\t\tseries,\n\t\t\t\tindex,\n\t\t\t\tisVisible: true,\n\t\t\t} ) );\n\t\t}\n\t\treturn dataWithVisibleZeros.map( ( series, index ) => ( {\n\t\t\tseries,\n\t\t\tindex,\n\t\t\tisVisible: isSeriesVisible( chartId, series.label ),\n\t\t} ) );\n\t}, [ dataWithVisibleZeros, chartId, isSeriesVisible, legendInteractive ] );\n\n\t// Check if all series are hidden\n\tconst allSeriesHidden = useMemo( () => {\n\t\treturn seriesWithVisibility.every( ( { isVisible } ) => ! isVisible );\n\t}, [ seriesWithVisibility ] );\n\n\tconst getBarBackground = useCallback(\n\t\t( index: number ) => () =>\n\t\t\twithPatterns\n\t\t\t\t? `url(#${ getPatternId( chartId, index ) })`\n\t\t\t\t: getElementStyles( { data: dataSorted[ index ], index } ).color,\n\t\t[ withPatterns, getElementStyles, dataSorted, chartId ]\n\t);\n\n\tconst renderDefaultTooltip = useCallback(\n\t\t( { tooltipData }: RenderTooltipParams< DataPointDate > ) => {\n\t\t\tconst nearestDatum = tooltipData?.nearestDatum?.datum;\n\t\t\tif ( ! nearestDatum ) return null;\n\n\t\t\treturn (\n\t\t\t\t<div className={ styles[ 'bar-chart__tooltip' ] }>\n\t\t\t\t\t<div className={ styles[ 'bar-chart__tooltip-header' ] }>\n\t\t\t\t\t\t{ tooltipData?.nearestDatum?.key }\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ styles[ 'bar-chart__tooltip-row' ] }>\n\t\t\t\t\t\t<span className={ styles[ 'bar-chart__tooltip-label' ] }>\n\t\t\t\t\t\t\t{ chartOptions.tooltip.labelFormatter(\n\t\t\t\t\t\t\t\tnearestDatum.label || ( nearestDatum.date ? nearestDatum.date.getTime() : 0 ),\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className={ styles[ 'bar-chart__tooltip-value' ] }>\n\t\t\t\t\t\t\t{ formatNumber( nearestDatum.value as number ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\t[ chartOptions.tooltip ]\n\t);\n\n\tconst renderPattern = useCallback(\n\t\t( index: number, color: string ) => {\n\t\t\tconst patternType = index % 4;\n\t\t\tconst id = getPatternId( chartId, index );\n\t\t\tconst commonProps = {\n\t\t\t\tid,\n\t\t\t\tstroke: 'white',\n\t\t\t\tstrokeWidth: 1,\n\t\t\t\tbackground: color,\n\t\t\t};\n\n\t\t\tswitch ( patternType ) {\n\t\t\t\tcase 0:\n\t\t\t\tdefault:\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PatternLines\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\t\twidth={ 5 }\n\t\t\t\t\t\t\theight={ 5 }\n\t\t\t\t\t\t\torientation={ [ 'diagonal' ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\tcase 1:\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PatternCircles key={ id } { ...commonProps } width={ 6 } height={ 6 } fill=\"white\" />\n\t\t\t\t\t);\n\t\t\t\tcase 2:\n\t\t\t\t\treturn <PatternWaves key={ id } { ...commonProps } width={ 4 } height={ 4 } />;\n\t\t\t\tcase 3:\n\t\t\t\t\treturn <PatternHexagons key={ id } { ...commonProps } size={ 8 } height={ 3 } />;\n\t\t\t}\n\t\t},\n\t\t[ chartId ]\n\t);\n\n\tconst createPatternBorderStyle = useCallback(\n\t\t( index: number, color: string ) => {\n\t\t\tconst patternId = getPatternId( chartId, index );\n\t\t\treturn `\n\t\t\t.visx-bar[fill=\"url(#${ patternId })\"] {\n\t\t\t\tstroke: ${ color };\n\t\t\t\tstroke-width: 1;\n\t\t\t\t}\n\t\t\t`;\n\t\t},\n\t\t[ chartId ]\n\t);\n\n\tconst createKeyboardHighlightStyle = useCallback( () => {\n\t\tif ( selectedIndex === undefined ) return '';\n\n\t\t// Calculate which bar should be highlighted based on selectedIndex\n\t\t// Pattern: [series1[0], series2[0], series3[0], series1[1], series2[1], series3[1], ...]\n\t\tconst maxDataPoints = Math.max( ...data.map( s => s.data.length ) );\n\t\tconst dataPointIndex = Math.floor( selectedIndex / data.length );\n\t\tconst seriesIndex = selectedIndex % data.length;\n\n\t\t// Only highlight if we're within valid bounds\n\t\tif ( dataPointIndex >= maxDataPoints || seriesIndex >= data.length ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst seriesData = data[ seriesIndex ];\n\t\tif ( dataPointIndex >= seriesData.data.length ) {\n\t\t\treturn '';\n\t\t}\n\n\t\t// Based on the DOM structure analysis:\n\t\t// - All bars are in a single .visx-bar-group\n\t\t// - Bars are ordered as: [series1[0], series1[1], series2[0], series2[1], ...]\n\t\t// - So we need to calculate the actual bar index in the DOM\n\t\tconst actualBarIndex = seriesIndex * maxDataPoints + dataPointIndex;\n\n\t\t// Use a CSS class selector instead of ID since useId() generates invalid CSS ID characters\n\t\tconst generatedStyles = `\n\t\t\t.bar-chart[data-chart-id=\"bar-chart-${ chartId }\"] .visx-bar-group .visx-bar:nth-child(${\n\t\t\t\tactualBarIndex + 1\n\t\t\t}) {\n\t\t\t\tstroke: #005fcc;\n\t\t\t\tstroke-width: 2px;\n\t\t\t}\n\t\t`;\n\n\t\treturn generatedStyles;\n\t}, [ selectedIndex, data, chartId ] );\n\n\t// Validate data first\n\tconst error = validateData( dataSorted );\n\tconst isDataValid = ! error;\n\n\t// Memoize metadata to prevent unnecessary re-registration\n\tconst chartMetadata = useMemo(\n\t\t() => ( {\n\t\t\torientation,\n\t\t\twithPatterns,\n\t\t} ),\n\t\t[ orientation, withPatterns ]\n\t);\n\n\t// Register chart with context only if data is valid\n\tuseChartRegistration( {\n\t\tchartId,\n\t\tlegendItems,\n\t\tchartType: 'bar',\n\t\tisDataValid,\n\t\tmetadata: chartMetadata,\n\t} );\n\n\tconst prefersReducedMotion = usePrefersReducedMotion();\n\n\tif ( error ) {\n\t\treturn <div className={ clsx( 'bar-chart', styles[ 'bar-chart' ] ) }>{ error }</div>;\n\t}\n\n\tconst gridVisibility = gridVisibilityProp ?? chartOptions.gridVisibility;\n\tconst highlightedBarStyle = createKeyboardHighlightStyle();\n\n\treturn (\n\t\t<SingleChartContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tchartId,\n\t\t\t\tchartWidth: width,\n\t\t\t\tchartHeight: height - ( showLegend ? legendHeight : 0 ),\n\t\t\t} }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'bar-chart',\n\t\t\t\t\tstyles[ 'bar-chart' ],\n\t\t\t\t\t{\n\t\t\t\t\t\t[ styles[ `bar-chart--animated${ horizontal ? '-horizontal' : '' }` ] ]:\n\t\t\t\t\t\t\tanimation && ! prefersReducedMotion,\n\t\t\t\t\t\t[ styles[ 'bar-chart--legend-top' ] ]: showLegend && legendPosition === 'top',\n\t\t\t\t\t},\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\tdata-testid=\"bar-chart\"\n\t\t\t\trole=\"grid\"\n\t\t\t\taria-label={ __( 'Bar chart', 'jetpack-charts' ) }\n\t\t\t\tstyle={ {\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t} }\n\t\t\t\ttabIndex={ 0 }\n\t\t\t\tonKeyDown={ onChartKeyDown }\n\t\t\t\tonFocus={ onChartFocus }\n\t\t\t\tonBlur={ onChartBlur }\n\t\t\t\tref={ chartRef }\n\t\t\t\tdata-chart-id={ `bar-chart-${ chartId }` } // Unique ID for the chart\n\t\t\t>\n\t\t\t\t<XYChart\n\t\t\t\t\ttheme={ theme }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height - ( showLegend ? legendHeight : 0 ) }\n\t\t\t\t\tmargin={ {\n\t\t\t\t\t\t...defaultMargin,\n\t\t\t\t\t\t...margin,\n\t\t\t\t\t\t...( showLegend && legendPosition === 'top'\n\t\t\t\t\t\t\t? { top: ( defaultMargin.top || 0 ) + legendHeight }\n\t\t\t\t\t\t\t: {} ),\n\t\t\t\t\t} }\n\t\t\t\t\txScale={ chartOptions.xScale }\n\t\t\t\t\tyScale={ chartOptions.yScale }\n\t\t\t\t\thorizontal={ horizontal }\n\t\t\t\t\tpointerEventsDataKey=\"nearest\"\n\t\t\t\t>\n\t\t\t\t\t<Grid\n\t\t\t\t\t\tcolumns={ gridVisibility.includes( 'y' ) }\n\t\t\t\t\t\trows={ gridVisibility.includes( 'x' ) }\n\t\t\t\t\t\tnumTicks={ 4 }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ withPatterns && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<defs data-testid=\"bar-chart-patterns\">\n\t\t\t\t\t\t\t\t{ dataSorted.map( ( seriesData, index ) =>\n\t\t\t\t\t\t\t\t\trenderPattern( index, getElementStyles( { data: seriesData, index } ).color )\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t{ dataSorted.map( ( seriesData, index ) =>\n\t\t\t\t\t\t\t\t\tcreatePatternBorderStyle(\n\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\tgetElementStyles( { data: seriesData, index } ).color\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ highlightedBarStyle && <style>{ highlightedBarStyle }</style> }\n\n\t\t\t\t\t{ allSeriesHidden ? (\n\t\t\t\t\t\t<text\n\t\t\t\t\t\t\tx={ width / 2 }\n\t\t\t\t\t\t\ty={ ( height - ( showLegend ? legendHeight : 0 ) ) / 2 }\n\t\t\t\t\t\t\ttextAnchor=\"middle\"\n\t\t\t\t\t\t\tfill={ providerTheme.gridStyles?.stroke || '#ccc' }\n\t\t\t\t\t\t\tfontSize=\"14\"\n\t\t\t\t\t\t\tfontFamily=\"-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'All series are hidden. Click legend items to show data.', 'jetpack-charts' ) }\n\t\t\t\t\t\t</text>\n\t\t\t\t\t) : null }\n\n\t\t\t\t\t<BarGroup padding={ chartOptions.barGroup.padding }>\n\t\t\t\t\t\t{ seriesWithVisibility.map( ( { series: seriesData, index, isVisible } ) => {\n\t\t\t\t\t\t\t// Skip rendering invisible series\n\t\t\t\t\t\t\tif ( ! isVisible ) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<BarSeries\n\t\t\t\t\t\t\t\t\tkey={ seriesData?.label }\n\t\t\t\t\t\t\t\t\tdataKey={ seriesData?.label }\n\t\t\t\t\t\t\t\t\tdata={ seriesData.data as DataPointDate[] }\n\t\t\t\t\t\t\t\t\tyAccessor={ chartOptions.accessors.yAccessor }\n\t\t\t\t\t\t\t\t\txAccessor={ chartOptions.accessors.xAccessor }\n\t\t\t\t\t\t\t\t\tcolorAccessor={ getBarBackground( index ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</BarGroup>\n\n\t\t\t\t\t<Axis { ...chartOptions.axis.x } />\n\t\t\t\t\t<Axis { ...chartOptions.axis.y } />\n\n\t\t\t\t\t{ withTooltips && (\n\t\t\t\t\t\t<AccessibleTooltip\n\t\t\t\t\t\t\tdetectBounds\n\t\t\t\t\t\t\tsnapTooltipToDatumX\n\t\t\t\t\t\t\tsnapTooltipToDatumY\n\t\t\t\t\t\t\trenderTooltip={ renderTooltip || renderDefaultTooltip }\n\t\t\t\t\t\t\tselectedIndex={ selectedIndex }\n\t\t\t\t\t\t\ttooltipRef={ tooltipRef }\n\t\t\t\t\t\t\tkeyboardFocusedClassName={ styles[ 'bar-chart__tooltip--keyboard-focused' ] }\n\t\t\t\t\t\t\tseries={ data }\n\t\t\t\t\t\t\tmode=\"individual\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</XYChart>\n\n\t\t\t\t{ showLegend && (\n\t\t\t\t\t<Legend\n\t\t\t\t\t\torientation={ legendOrientation }\n\t\t\t\t\t\tposition={ legendPosition }\n\t\t\t\t\t\talignment={ legendAlignment }\n\t\t\t\t\t\tmaxWidth={ legendMaxWidth }\n\t\t\t\t\t\ttextOverflow={ legendTextOverflow }\n\t\t\t\t\t\tlegendItemClassName={ legendItemClassName }\n\t\t\t\t\t\tclassName={ styles[ 'bar-chart__legend' ] }\n\t\t\t\t\t\tshape={ legendShape }\n\t\t\t\t\t\tref={ legendRef }\n\t\t\t\t\t\tchartId={ chartId }\n\t\t\t\t\t\tinteractive={ legendInteractive }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</SingleChartContext.Provider>\n\t);\n};\n\nconst BarChartWithProvider: FC< BarChartProps > = 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 <BarChartInternal { ...props } />;\n\t}\n\n\t// Otherwise, create our own GlobalChartsProvider\n\treturn (\n\t\t<GlobalChartsProvider>\n\t\t\t<BarChartInternal { ...props } />\n\t\t</GlobalChartsProvider>\n\t);\n};\n\nBarChartWithProvider.displayName = 'BarChart';\n\n// Create BarChart with composition API\nconst BarChart = attachSubComponents( BarChartWithProvider, {\n\tLegend: Legend,\n} ) as BarChartComponent;\n\n// Create responsive BarChart with composition API\nconst BarChartResponsive = attachSubComponents(\n\twithResponsive< BarChartProps >( BarChartWithProvider ),\n\t{\n\t\tLegend: Legend,\n\t}\n) as BarChartResponsiveComponent;\n\nexport { BarChartResponsive as default, BarChart as BarChartUnresponsive };\n","import 'css-chunk:src/charts/bar-chart/bar-chart.module.scss';export default {\n \"bar-chart\": \"a8ccharts-3gflnB\",\n \"bar-chart--legend-top\": \"a8ccharts-8Vnz-c\",\n \"bar-chart-legend\": \"a8ccharts-XhI9HR\",\n \"bar-chart--animated\": \"a8ccharts-98W-yu\",\n \"rise\": \"a8ccharts-z6AsiQ\",\n \"bar-chart--animated-horizontal\": \"a8ccharts-HFA3FF\",\n \"stretch\": \"a8ccharts-DQp37O\"\n};","import { formatNumberCompact } from '@automattic/number-formatters';\nimport { useMemo } from 'react';\nimport type { EnhancedDataPoint } from '../../../hooks/use-zero-value-display';\nimport type { DataPointDate, BaseChartProps, SeriesData } from '../../../types';\nimport type { TickFormatter } from '@visx/axis';\n\nconst formatDateTick = ( timestamp: number ) => {\n\tconst date = new Date( timestamp );\n\treturn date.toLocaleDateString( undefined, {\n\t\tmonth: 'short',\n\t\tday: 'numeric',\n\t} );\n};\n\n/**\n * Get the group padding of a scale.\n *\n * @param scale - The scale to get the group padding of.\n * @return The group padding of the scale.\n */\nconst getGroupPadding = ( scale: Record< string, unknown > ): number => {\n\treturn typeof scale.paddingInner === 'number' ? ( scale.paddingInner as number ) : 0;\n};\n\n/**\n * Returns the merged options for the bar chart, including axis and scale configuration based on the orientation.\n *\n * @param data - The data to be displayed in the chart.\n * @param horizontal - Whether the chart is horizontal or vertical.\n * @param options - The options for the chart.\n * @return The merged options for the chart.\n */\nexport function useBarChartOptions(\n\tdata: SeriesData[],\n\thorizontal: boolean,\n\toptions: BaseChartProps[ 'options' ] = {}\n) {\n\tconst defaultOptions = useMemo( () => {\n\t\tconst bandScale = {\n\t\t\ttype: 'band' as const,\n\t\t\tpadding: 0.2,\n\t\t\tpaddingInner: 0.1,\n\t\t};\n\t\tconst linearScale = {\n\t\t\ttype: 'linear' as const,\n\t\t\tnice: true,\n\t\t\tzero: false,\n\t\t};\n\n\t\tconst labelFormatter = data?.[ 0 ]?.data?.[ 0 ]?.label\n\t\t\t? ( label: string ) => label\n\t\t\t: formatDateTick;\n\t\tconst valueFormatter = formatNumberCompact as TickFormatter< unknown >;\n\n\t\tconst labelAccessor = ( d: DataPointDate ) => d?.label || d?.date;\n\t\tconst valueAccessor = ( d: DataPointDate | EnhancedDataPoint ) => {\n\t\t\t// Use visualValue for bar rendering if available (for zero values), otherwise use value\n\t\t\tconst enhancedPoint = d as EnhancedDataPoint;\n\t\t\treturn enhancedPoint?.visualValue !== undefined ? enhancedPoint.visualValue : d?.value;\n\t\t};\n\n\t\treturn {\n\t\t\tvertical: {\n\t\t\t\txTickFormat: labelFormatter,\n\t\t\t\tyTickFormat: valueFormatter,\n\t\t\t\ttooltipLabelFormatter: labelFormatter,\n\t\t\t\txAccessor: labelAccessor,\n\t\t\t\tyAccessor: valueAccessor,\n\t\t\t\tgridVisibility: 'x',\n\t\t\t\txScale: bandScale,\n\t\t\t\tyScale: linearScale,\n\t\t\t},\n\t\t\thorizontal: {\n\t\t\t\txTickFormat: valueFormatter,\n\t\t\t\tyTickFormat: labelFormatter,\n\t\t\t\ttooltipLabelFormatter: labelFormatter,\n\t\t\t\txAccessor: valueAccessor,\n\t\t\t\tyAccessor: labelAccessor,\n\t\t\t\tgridVisibility: 'y',\n\t\t\t\txScale: linearScale,\n\t\t\t\tyScale: bandScale,\n\t\t\t},\n\t\t};\n\t}, [ data ] );\n\n\treturn useMemo( () => {\n\t\tconst orientationKey = horizontal ? 'horizontal' : 'vertical';\n\t\tconst {\n\t\t\txTickFormat,\n\t\t\tyTickFormat,\n\t\t\ttooltipLabelFormatter: defaultTooltipLabelFormatter,\n\t\t\txAccessor,\n\t\t\tyAccessor,\n\t\t\tgridVisibility,\n\t\t\txScale: baseXScale,\n\t\t\tyScale: baseYScale,\n\t\t} = defaultOptions[ orientationKey ];\n\n\t\tconst xScale = { ...baseXScale, ...( options.xScale || {} ) };\n\t\tconst yScale = { ...baseYScale, ...( options.yScale || {} ) };\n\t\tconst providedToolTipLabelFormatter = horizontal\n\t\t\t? options.axis?.y?.tickFormat\n\t\t\t: options.axis?.x?.tickFormat;\n\n\t\treturn {\n\t\t\tgridVisibility,\n\t\t\txScale,\n\t\t\tyScale,\n\t\t\taccessors: {\n\t\t\t\txAccessor,\n\t\t\t\tyAccessor,\n\t\t\t},\n\t\t\taxis: {\n\t\t\t\tx: {\n\t\t\t\t\torientation: 'bottom' as const,\n\t\t\t\t\tnumTicks: 4,\n\t\t\t\t\ttickFormat: xTickFormat,\n\t\t\t\t\t...( options.axis?.x || {} ),\n\t\t\t\t},\n\t\t\t\ty: {\n\t\t\t\t\torientation: 'left' as const,\n\t\t\t\t\tnumTicks: 4,\n\t\t\t\t\ttickFormat: yTickFormat,\n\t\t\t\t\t...( options.axis?.y || {} ),\n\t\t\t\t},\n\t\t\t},\n\t\t\tbarGroup: {\n\t\t\t\tpadding: getGroupPadding( horizontal ? yScale : xScale ),\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\tlabelFormatter: providedToolTipLabelFormatter || defaultTooltipLabelFormatter,\n\t\t\t},\n\t\t};\n\t}, [ defaultOptions, options, horizontal ] );\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-DDV5726Q.cjs","../src/charts/bar-chart/bar-chart.tsx","../src/charts/bar-chart/bar-chart.module.scss","../src/charts/bar-chart/private/use-bar-chart-options.ts"],"names":["useMemo"],"mappings":"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","file":"/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-DDV5726Q.cjs","sourcesContent":[null,"import { formatNumber } from '@automattic/number-formatters';\nimport { PatternLines, PatternCircles, PatternWaves, PatternHexagons } from '@visx/pattern';\nimport { Axis, BarSeries, BarGroup, Grid, XYChart } from '@visx/xychart';\nimport { __ } from '@wordpress/i18n';\nimport clsx from 'clsx';\nimport { useCallback, useContext, useState, useRef, useMemo } from 'react';\nimport { Legend, useChartLegendItems } from '../../components/legend';\nimport { AccessibleTooltip, useKeyboardNavigation } from '../../components/tooltip';\nimport {\n\tuseXYChartTheme,\n\tuseChartDataTransform,\n\tuseZeroValueDisplay,\n\tuseChartMargin,\n\tuseElementHeight,\n\tusePrefersReducedMotion,\n} from '../../hooks';\nimport {\n\tGlobalChartsProvider,\n\tuseChartId,\n\tuseChartRegistration,\n\tuseGlobalChartsContext,\n\tuseGlobalChartsTheme,\n\tGlobalChartsContext,\n} from '../../providers';\nimport { attachSubComponents } from '../../utils';\nimport { SingleChartContext } from '../private/single-chart-context';\nimport { withResponsive } from '../private/with-responsive';\nimport styles from './bar-chart.module.scss';\nimport { useBarChartOptions } from './private';\nimport type { BaseChartProps, DataPointDate, SeriesData, Optional } from '../../types';\nimport type { ResponsiveConfig } from '../private/with-responsive';\nimport type { RenderTooltipParams } from '@visx/xychart/lib/components/Tooltip';\nimport type { FC, ReactNode, ComponentType } from 'react';\n\nexport interface BarChartProps extends BaseChartProps< SeriesData[] > {\n\trenderTooltip?: ( params: RenderTooltipParams< DataPointDate > ) => ReactNode;\n\torientation?: 'horizontal' | 'vertical';\n\twithPatterns?: boolean;\n\tshowZeroValues?: boolean;\n\tlegendInteractive?: boolean;\n\tchildren?: ReactNode;\n}\n\n// Base props type with optional responsive properties\ntype BarChartBaseProps = Optional< BarChartProps, 'width' | 'height' | 'size' >;\n\n// Composition API types\ninterface BarChartSubComponents {\n\tLegend: ComponentType< React.ComponentProps< typeof Legend > >;\n}\n\ntype BarChartComponent = FC< BarChartBaseProps > & BarChartSubComponents;\ntype BarChartResponsiveComponent = FC< BarChartBaseProps & ResponsiveConfig > &\n\tBarChartSubComponents;\n\n// Validation function similar to LineChart\nconst validateData = ( data: SeriesData[] ) => {\n\tif ( ! data?.length ) return 'No data available';\n\n\tconst hasInvalidData = data.some( series =>\n\t\tseries.data.some(\n\t\t\tpoint =>\n\t\t\t\tisNaN( point.value as number ) ||\n\t\t\t\tpoint.value === null ||\n\t\t\t\tpoint.value === undefined ||\n\t\t\t\t( ! point.label &&\n\t\t\t\t\t( ! ( 'date' in point && point.date ) || isNaN( point.date.getTime() ) ) )\n\t\t)\n\t);\n\n\tif ( hasInvalidData ) return 'Invalid data';\n\treturn null;\n};\n\nconst getPatternId = ( chartId: string, index: number ) => `bar-pattern-${ chartId }-${ index }`;\n\nconst BarChartInternal: FC< BarChartProps > = ( {\n\tdata,\n\tchartId: providedChartId,\n\twidth,\n\theight = 400,\n\tclassName,\n\tmargin,\n\twithTooltips = false,\n\tshowLegend = false,\n\tlegendOrientation = 'horizontal',\n\tlegendPosition = 'bottom',\n\tlegendAlignment = 'center',\n\tlegendMaxWidth,\n\tlegendTextOverflow = 'wrap',\n\tlegendItemClassName,\n\tlegendShape = 'rect',\n\tgridVisibility: gridVisibilityProp,\n\trenderTooltip,\n\toptions = {},\n\torientation = 'vertical',\n\twithPatterns = false,\n\tshowZeroValues = false,\n\tlegendInteractive = false,\n\tanimation,\n\tchildren,\n} ) => {\n\tconst horizontal = orientation === 'horizontal';\n\tconst chartId = useChartId( providedChartId );\n\tconst theme = useXYChartTheme( data );\n\n\tconst dataSorted = useChartDataTransform( data );\n\n\t// Transform data to add a small value for zero bars to make them visible\n\tconst dataWithVisibleZeros = useZeroValueDisplay( dataSorted, {\n\t\tenabled: showZeroValues,\n\t} );\n\n\t// Create legend items using the reusable hook\n\tconst legendItems = useChartLegendItems( dataSorted );\n\tconst chartOptions = useBarChartOptions( dataWithVisibleZeros, horizontal, options );\n\tconst defaultMargin = useChartMargin( height, chartOptions, dataSorted, theme, horizontal );\n\tconst [ legendRef, legendHeight ] = useElementHeight< HTMLDivElement >();\n\tconst chartRef = useRef< HTMLDivElement >( null );\n\tconst [ selectedIndex, setSelectedIndex ] = useState< number | undefined >( undefined );\n\tconst [ isNavigating, setIsNavigating ] = useState( false );\n\n\tconst totalPoints =\n\t\tMath.max( 0, ...data.map( series => series.data?.length || 0 ) ) * data.length;\n\n\t// Use the keyboard navigation hook\n\tconst { tooltipRef, onChartFocus, onChartBlur, onChartKeyDown } = useKeyboardNavigation( {\n\t\tselectedIndex,\n\t\tsetSelectedIndex,\n\t\tisNavigating,\n\t\tsetIsNavigating,\n\t\tchartRef,\n\t\ttotalPoints,\n\t} );\n\n\tconst { getElementStyles, isSeriesVisible } = useGlobalChartsContext();\n\tconst providerTheme = useGlobalChartsTheme();\n\n\t// Add visibility information to series when using interactive legends\n\tconst seriesWithVisibility = useMemo( () => {\n\t\tif ( ! chartId || ! legendInteractive ) {\n\t\t\treturn dataWithVisibleZeros.map( ( series, index ) => ( {\n\t\t\t\tseries,\n\t\t\t\tindex,\n\t\t\t\tisVisible: true,\n\t\t\t} ) );\n\t\t}\n\t\treturn dataWithVisibleZeros.map( ( series, index ) => ( {\n\t\t\tseries,\n\t\t\tindex,\n\t\t\tisVisible: isSeriesVisible( chartId, series.label ),\n\t\t} ) );\n\t}, [ dataWithVisibleZeros, chartId, isSeriesVisible, legendInteractive ] );\n\n\t// Check if all series are hidden\n\tconst allSeriesHidden = useMemo( () => {\n\t\treturn seriesWithVisibility.every( ( { isVisible } ) => ! isVisible );\n\t}, [ seriesWithVisibility ] );\n\n\tconst getBarBackground = useCallback(\n\t\t( index: number ) => () =>\n\t\t\twithPatterns\n\t\t\t\t? `url(#${ getPatternId( chartId, index ) })`\n\t\t\t\t: getElementStyles( { data: dataSorted[ index ], index } ).color,\n\t\t[ withPatterns, getElementStyles, dataSorted, chartId ]\n\t);\n\n\tconst renderDefaultTooltip = useCallback(\n\t\t( { tooltipData }: RenderTooltipParams< DataPointDate > ) => {\n\t\t\tconst nearestDatum = tooltipData?.nearestDatum?.datum;\n\t\t\tif ( ! nearestDatum ) return null;\n\n\t\t\treturn (\n\t\t\t\t<div className={ styles[ 'bar-chart__tooltip' ] }>\n\t\t\t\t\t<div className={ styles[ 'bar-chart__tooltip-header' ] }>\n\t\t\t\t\t\t{ tooltipData?.nearestDatum?.key }\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={ styles[ 'bar-chart__tooltip-row' ] }>\n\t\t\t\t\t\t<span className={ styles[ 'bar-chart__tooltip-label' ] }>\n\t\t\t\t\t\t\t{ chartOptions.tooltip.labelFormatter(\n\t\t\t\t\t\t\t\tnearestDatum.label || ( nearestDatum.date ? nearestDatum.date.getTime() : 0 ),\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t[]\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span className={ styles[ 'bar-chart__tooltip-value' ] }>\n\t\t\t\t\t\t\t{ formatNumber( nearestDatum.value as number ) }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t);\n\t\t},\n\t\t[ chartOptions.tooltip ]\n\t);\n\n\tconst renderPattern = useCallback(\n\t\t( index: number, color: string ) => {\n\t\t\tconst patternType = index % 4;\n\t\t\tconst id = getPatternId( chartId, index );\n\t\t\tconst commonProps = {\n\t\t\t\tid,\n\t\t\t\tstroke: 'white',\n\t\t\t\tstrokeWidth: 1,\n\t\t\t\tbackground: color,\n\t\t\t};\n\n\t\t\tswitch ( patternType ) {\n\t\t\t\tcase 0:\n\t\t\t\tdefault:\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PatternLines\n\t\t\t\t\t\t\tkey={ id }\n\t\t\t\t\t\t\t{ ...commonProps }\n\t\t\t\t\t\t\twidth={ 5 }\n\t\t\t\t\t\t\theight={ 5 }\n\t\t\t\t\t\t\torientation={ [ 'diagonal' ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\tcase 1:\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<PatternCircles key={ id } { ...commonProps } width={ 6 } height={ 6 } fill=\"white\" />\n\t\t\t\t\t);\n\t\t\t\tcase 2:\n\t\t\t\t\treturn <PatternWaves key={ id } { ...commonProps } width={ 4 } height={ 4 } />;\n\t\t\t\tcase 3:\n\t\t\t\t\treturn <PatternHexagons key={ id } { ...commonProps } size={ 8 } height={ 3 } />;\n\t\t\t}\n\t\t},\n\t\t[ chartId ]\n\t);\n\n\tconst createPatternBorderStyle = useCallback(\n\t\t( index: number, color: string ) => {\n\t\t\tconst patternId = getPatternId( chartId, index );\n\t\t\treturn `\n\t\t\t.visx-bar[fill=\"url(#${ patternId })\"] {\n\t\t\t\tstroke: ${ color };\n\t\t\t\tstroke-width: 1;\n\t\t\t\t}\n\t\t\t`;\n\t\t},\n\t\t[ chartId ]\n\t);\n\n\tconst createKeyboardHighlightStyle = useCallback( () => {\n\t\tif ( selectedIndex === undefined ) return '';\n\n\t\t// Calculate which bar should be highlighted based on selectedIndex\n\t\t// Pattern: [series1[0], series2[0], series3[0], series1[1], series2[1], series3[1], ...]\n\t\tconst maxDataPoints = Math.max( ...data.map( s => s.data.length ) );\n\t\tconst dataPointIndex = Math.floor( selectedIndex / data.length );\n\t\tconst seriesIndex = selectedIndex % data.length;\n\n\t\t// Only highlight if we're within valid bounds\n\t\tif ( dataPointIndex >= maxDataPoints || seriesIndex >= data.length ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst seriesData = data[ seriesIndex ];\n\t\tif ( dataPointIndex >= seriesData.data.length ) {\n\t\t\treturn '';\n\t\t}\n\n\t\t// Based on the DOM structure analysis:\n\t\t// - All bars are in a single .visx-bar-group\n\t\t// - Bars are ordered as: [series1[0], series1[1], series2[0], series2[1], ...]\n\t\t// - So we need to calculate the actual bar index in the DOM\n\t\tconst actualBarIndex = seriesIndex * maxDataPoints + dataPointIndex;\n\n\t\t// Use a CSS class selector instead of ID since useId() generates invalid CSS ID characters\n\t\tconst generatedStyles = `\n\t\t\t.bar-chart[data-chart-id=\"bar-chart-${ chartId }\"] .visx-bar-group .visx-bar:nth-child(${\n\t\t\t\tactualBarIndex + 1\n\t\t\t}) {\n\t\t\t\tstroke: #005fcc;\n\t\t\t\tstroke-width: 2px;\n\t\t\t}\n\t\t`;\n\n\t\treturn generatedStyles;\n\t}, [ selectedIndex, data, chartId ] );\n\n\t// Validate data first\n\tconst error = validateData( dataSorted );\n\tconst isDataValid = ! error;\n\n\t// Memoize metadata to prevent unnecessary re-registration\n\tconst chartMetadata = useMemo(\n\t\t() => ( {\n\t\t\torientation,\n\t\t\twithPatterns,\n\t\t} ),\n\t\t[ orientation, withPatterns ]\n\t);\n\n\t// Register chart with context only if data is valid\n\tuseChartRegistration( {\n\t\tchartId,\n\t\tlegendItems,\n\t\tchartType: 'bar',\n\t\tisDataValid,\n\t\tmetadata: chartMetadata,\n\t} );\n\n\tconst prefersReducedMotion = usePrefersReducedMotion();\n\n\tif ( error ) {\n\t\treturn <div className={ clsx( 'bar-chart', styles[ 'bar-chart' ] ) }>{ error }</div>;\n\t}\n\n\tconst gridVisibility = gridVisibilityProp ?? chartOptions.gridVisibility;\n\tconst highlightedBarStyle = createKeyboardHighlightStyle();\n\n\treturn (\n\t\t<SingleChartContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tchartId,\n\t\t\t\tchartWidth: width,\n\t\t\t\tchartHeight: height - ( showLegend ? legendHeight : 0 ),\n\t\t\t} }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'bar-chart',\n\t\t\t\t\tstyles[ 'bar-chart' ],\n\t\t\t\t\t{\n\t\t\t\t\t\t[ styles[ `bar-chart--animated${ horizontal ? '-horizontal' : '' }` ] ]:\n\t\t\t\t\t\t\tanimation && ! prefersReducedMotion,\n\t\t\t\t\t\t[ styles[ 'bar-chart--legend-top' ] ]: showLegend && legendPosition === 'top',\n\t\t\t\t\t},\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\tdata-testid=\"bar-chart\"\n\t\t\t\trole=\"grid\"\n\t\t\t\taria-label={ __( 'Bar chart', 'jetpack-charts' ) }\n\t\t\t\tstyle={ {\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t} }\n\t\t\t\ttabIndex={ 0 }\n\t\t\t\tonKeyDown={ onChartKeyDown }\n\t\t\t\tonFocus={ onChartFocus }\n\t\t\t\tonBlur={ onChartBlur }\n\t\t\t\tref={ chartRef }\n\t\t\t\tdata-chart-id={ `bar-chart-${ chartId }` } // Unique ID for the chart\n\t\t\t>\n\t\t\t\t<XYChart\n\t\t\t\t\ttheme={ theme }\n\t\t\t\t\twidth={ width }\n\t\t\t\t\theight={ height - ( showLegend ? legendHeight : 0 ) }\n\t\t\t\t\tmargin={ {\n\t\t\t\t\t\t...defaultMargin,\n\t\t\t\t\t\t...margin,\n\t\t\t\t\t\t...( showLegend && legendPosition === 'top'\n\t\t\t\t\t\t\t? { top: ( defaultMargin.top || 0 ) + legendHeight }\n\t\t\t\t\t\t\t: {} ),\n\t\t\t\t\t} }\n\t\t\t\t\txScale={ chartOptions.xScale }\n\t\t\t\t\tyScale={ chartOptions.yScale }\n\t\t\t\t\thorizontal={ horizontal }\n\t\t\t\t\tpointerEventsDataKey=\"nearest\"\n\t\t\t\t>\n\t\t\t\t\t<Grid\n\t\t\t\t\t\tcolumns={ gridVisibility.includes( 'y' ) }\n\t\t\t\t\t\trows={ gridVisibility.includes( 'x' ) }\n\t\t\t\t\t\tnumTicks={ 4 }\n\t\t\t\t\t/>\n\n\t\t\t\t\t{ withPatterns && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<defs data-testid=\"bar-chart-patterns\">\n\t\t\t\t\t\t\t\t{ dataSorted.map( ( seriesData, index ) =>\n\t\t\t\t\t\t\t\t\trenderPattern( index, getElementStyles( { data: seriesData, index } ).color )\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</defs>\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t{ dataSorted.map( ( seriesData, index ) =>\n\t\t\t\t\t\t\t\t\tcreatePatternBorderStyle(\n\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\tgetElementStyles( { data: seriesData, index } ).color\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ highlightedBarStyle && <style>{ highlightedBarStyle }</style> }\n\n\t\t\t\t\t{ allSeriesHidden ? (\n\t\t\t\t\t\t<text\n\t\t\t\t\t\t\tx={ width / 2 }\n\t\t\t\t\t\t\ty={ ( height - ( showLegend ? legendHeight : 0 ) ) / 2 }\n\t\t\t\t\t\t\ttextAnchor=\"middle\"\n\t\t\t\t\t\t\tfill={ providerTheme.gridStyles?.stroke || '#ccc' }\n\t\t\t\t\t\t\tfontSize=\"14\"\n\t\t\t\t\t\t\tfontFamily=\"-apple-system,BlinkMacSystemFont,Roboto,Helvetica Neue,sans-serif\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'All series are hidden. Click legend items to show data.', 'jetpack-charts' ) }\n\t\t\t\t\t\t</text>\n\t\t\t\t\t) : null }\n\n\t\t\t\t\t<BarGroup padding={ chartOptions.barGroup.padding }>\n\t\t\t\t\t\t{ seriesWithVisibility.map( ( { series: seriesData, index, isVisible } ) => {\n\t\t\t\t\t\t\t// Skip rendering invisible series\n\t\t\t\t\t\t\tif ( ! isVisible ) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<BarSeries\n\t\t\t\t\t\t\t\t\tkey={ seriesData?.label }\n\t\t\t\t\t\t\t\t\tdataKey={ seriesData?.label }\n\t\t\t\t\t\t\t\t\tdata={ seriesData.data as DataPointDate[] }\n\t\t\t\t\t\t\t\t\tyAccessor={ chartOptions.accessors.yAccessor }\n\t\t\t\t\t\t\t\t\txAccessor={ chartOptions.accessors.xAccessor }\n\t\t\t\t\t\t\t\t\tcolorAccessor={ getBarBackground( index ) }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</BarGroup>\n\n\t\t\t\t\t<Axis { ...chartOptions.axis.x } />\n\t\t\t\t\t<Axis { ...chartOptions.axis.y } />\n\n\t\t\t\t\t{ withTooltips && (\n\t\t\t\t\t\t<AccessibleTooltip\n\t\t\t\t\t\t\tdetectBounds\n\t\t\t\t\t\t\tsnapTooltipToDatumX\n\t\t\t\t\t\t\tsnapTooltipToDatumY\n\t\t\t\t\t\t\trenderTooltip={ renderTooltip || renderDefaultTooltip }\n\t\t\t\t\t\t\tselectedIndex={ selectedIndex }\n\t\t\t\t\t\t\ttooltipRef={ tooltipRef }\n\t\t\t\t\t\t\tkeyboardFocusedClassName={ styles[ 'bar-chart__tooltip--keyboard-focused' ] }\n\t\t\t\t\t\t\tseries={ data }\n\t\t\t\t\t\t\tmode=\"individual\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</XYChart>\n\n\t\t\t\t{ showLegend && (\n\t\t\t\t\t<Legend\n\t\t\t\t\t\torientation={ legendOrientation }\n\t\t\t\t\t\tposition={ legendPosition }\n\t\t\t\t\t\talignment={ legendAlignment }\n\t\t\t\t\t\tmaxWidth={ legendMaxWidth }\n\t\t\t\t\t\ttextOverflow={ legendTextOverflow }\n\t\t\t\t\t\tlegendItemClassName={ legendItemClassName }\n\t\t\t\t\t\tclassName={ styles[ 'bar-chart__legend' ] }\n\t\t\t\t\t\tshape={ legendShape }\n\t\t\t\t\t\tref={ legendRef }\n\t\t\t\t\t\tchartId={ chartId }\n\t\t\t\t\t\tinteractive={ legendInteractive }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</SingleChartContext.Provider>\n\t);\n};\n\nconst BarChartWithProvider: FC< BarChartProps > = 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 <BarChartInternal { ...props } />;\n\t}\n\n\t// Otherwise, create our own GlobalChartsProvider\n\treturn (\n\t\t<GlobalChartsProvider>\n\t\t\t<BarChartInternal { ...props } />\n\t\t</GlobalChartsProvider>\n\t);\n};\n\nBarChartWithProvider.displayName = 'BarChart';\n\n// Create BarChart with composition API\nconst BarChart = attachSubComponents( BarChartWithProvider, {\n\tLegend: Legend,\n} ) as BarChartComponent;\n\n// Create responsive BarChart with composition API\nconst BarChartResponsive = attachSubComponents(\n\twithResponsive< BarChartProps >( BarChartWithProvider ),\n\t{\n\t\tLegend: Legend,\n\t}\n) as BarChartResponsiveComponent;\n\nexport { BarChartResponsive as default, BarChart as BarChartUnresponsive };\n","import 'css-chunk:src/charts/bar-chart/bar-chart.module.scss';export default {\n \"bar-chart\": \"a8ccharts-3gflnB\",\n \"bar-chart--legend-top\": \"a8ccharts-8Vnz-c\",\n \"bar-chart-legend\": \"a8ccharts-XhI9HR\",\n \"bar-chart--animated\": \"a8ccharts-98W-yu\",\n \"rise\": \"a8ccharts-z6AsiQ\",\n \"bar-chart--animated-horizontal\": \"a8ccharts-HFA3FF\",\n \"stretch\": \"a8ccharts-DQp37O\"\n};","import { formatNumberCompact } from '@automattic/number-formatters';\nimport { useMemo } from 'react';\nimport type { EnhancedDataPoint } from '../../../hooks/use-zero-value-display';\nimport type { DataPointDate, BaseChartProps, SeriesData } from '../../../types';\nimport type { TickFormatter } from '@visx/axis';\n\nconst formatDateTick = ( timestamp: number ) => {\n\tconst date = new Date( timestamp );\n\treturn date.toLocaleDateString( undefined, {\n\t\tmonth: 'short',\n\t\tday: 'numeric',\n\t} );\n};\n\n/**\n * Get the group padding of a scale.\n *\n * @param scale - The scale to get the group padding of.\n * @return The group padding of the scale.\n */\nconst getGroupPadding = ( scale: Record< string, unknown > ): number => {\n\treturn typeof scale.paddingInner === 'number' ? ( scale.paddingInner as number ) : 0;\n};\n\n/**\n * Returns the merged options for the bar chart, including axis and scale configuration based on the orientation.\n *\n * @param data - The data to be displayed in the chart.\n * @param horizontal - Whether the chart is horizontal or vertical.\n * @param options - The options for the chart.\n * @return The merged options for the chart.\n */\nexport function useBarChartOptions(\n\tdata: SeriesData[],\n\thorizontal: boolean,\n\toptions: BaseChartProps[ 'options' ] = {}\n) {\n\tconst defaultOptions = useMemo( () => {\n\t\tconst bandScale = {\n\t\t\ttype: 'band' as const,\n\t\t\tpadding: 0.2,\n\t\t\tpaddingInner: 0.1,\n\t\t};\n\t\tconst linearScale = {\n\t\t\ttype: 'linear' as const,\n\t\t\tnice: true,\n\t\t\tzero: false,\n\t\t};\n\n\t\tconst labelFormatter = data?.[ 0 ]?.data?.[ 0 ]?.label\n\t\t\t? ( label: string ) => label\n\t\t\t: formatDateTick;\n\t\tconst valueFormatter = formatNumberCompact as TickFormatter< unknown >;\n\n\t\tconst labelAccessor = ( d: DataPointDate ) => d?.label || d?.date;\n\t\tconst valueAccessor = ( d: DataPointDate | EnhancedDataPoint ) => {\n\t\t\t// Use visualValue for bar rendering if available (for zero values), otherwise use value\n\t\t\tconst enhancedPoint = d as EnhancedDataPoint;\n\t\t\treturn enhancedPoint?.visualValue !== undefined ? enhancedPoint.visualValue : d?.value;\n\t\t};\n\n\t\treturn {\n\t\t\tvertical: {\n\t\t\t\txTickFormat: labelFormatter,\n\t\t\t\tyTickFormat: valueFormatter,\n\t\t\t\ttooltipLabelFormatter: labelFormatter,\n\t\t\t\txAccessor: labelAccessor,\n\t\t\t\tyAccessor: valueAccessor,\n\t\t\t\tgridVisibility: 'x',\n\t\t\t\txScale: bandScale,\n\t\t\t\tyScale: linearScale,\n\t\t\t},\n\t\t\thorizontal: {\n\t\t\t\txTickFormat: valueFormatter,\n\t\t\t\tyTickFormat: labelFormatter,\n\t\t\t\ttooltipLabelFormatter: labelFormatter,\n\t\t\t\txAccessor: valueAccessor,\n\t\t\t\tyAccessor: labelAccessor,\n\t\t\t\tgridVisibility: 'y',\n\t\t\t\txScale: linearScale,\n\t\t\t\tyScale: bandScale,\n\t\t\t},\n\t\t};\n\t}, [ data ] );\n\n\treturn useMemo( () => {\n\t\tconst orientationKey = horizontal ? 'horizontal' : 'vertical';\n\t\tconst {\n\t\t\txTickFormat,\n\t\t\tyTickFormat,\n\t\t\ttooltipLabelFormatter: defaultTooltipLabelFormatter,\n\t\t\txAccessor,\n\t\t\tyAccessor,\n\t\t\tgridVisibility,\n\t\t\txScale: baseXScale,\n\t\t\tyScale: baseYScale,\n\t\t} = defaultOptions[ orientationKey ];\n\n\t\tconst xScale = { ...baseXScale, ...( options.xScale || {} ) };\n\t\tconst yScale = { ...baseYScale, ...( options.yScale || {} ) };\n\t\tconst providedToolTipLabelFormatter = horizontal\n\t\t\t? options.axis?.y?.tickFormat\n\t\t\t: options.axis?.x?.tickFormat;\n\n\t\treturn {\n\t\t\tgridVisibility,\n\t\t\txScale,\n\t\t\tyScale,\n\t\t\taccessors: {\n\t\t\t\txAccessor,\n\t\t\t\tyAccessor,\n\t\t\t},\n\t\t\taxis: {\n\t\t\t\tx: {\n\t\t\t\t\torientation: 'bottom' as const,\n\t\t\t\t\tnumTicks: 4,\n\t\t\t\t\ttickFormat: xTickFormat,\n\t\t\t\t\t...( options.axis?.x || {} ),\n\t\t\t\t},\n\t\t\t\ty: {\n\t\t\t\t\torientation: 'left' as const,\n\t\t\t\t\tnumTicks: 4,\n\t\t\t\t\ttickFormat: yTickFormat,\n\t\t\t\t\t...( options.axis?.y || {} ),\n\t\t\t\t},\n\t\t\t},\n\t\t\tbarGroup: {\n\t\t\t\tpadding: getGroupPadding( horizontal ? yScale : xScale ),\n\t\t\t},\n\t\t\ttooltip: {\n\t\t\t\tlabelFormatter: providedToolTipLabelFormatter || defaultTooltipLabelFormatter,\n\t\t\t},\n\t\t};\n\t}, [ defaultOptions, options, horizontal ] );\n}\n"]}
@@ -7,7 +7,7 @@ import {
7
7
  normalizeColorToHex,
8
8
  parseAsLocalDate,
9
9
  resolveCssVariable
10
- } from "./chunk-P3QEXFTA.js";
10
+ } from "./chunk-TE63Y5PX.js";
11
11
 
12
12
  // src/hooks/use-deep-memo.ts
13
13
  import isEqual from "fast-deep-equal";
@@ -726,4 +726,4 @@ export {
726
726
  useChartRegistration,
727
727
  useGlobalChartsTheme
728
728
  };
729
- //# sourceMappingURL=chunk-O2BJMTIS.js.map
729
+ //# sourceMappingURL=chunk-DYMJWNYM.js.map
@@ -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 _chunkGWNXOI4Mcjs = require('./chunk-GWNXOI4M.cjs');
3
+ var _chunkDDV5726Qcjs = require('./chunk-DDV5726Q.cjs');
4
4
 
5
5
 
6
6
  var _chunkMUUSZ7J5cjs = require('./chunk-MUUSZ7J5.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkW3H42XRVcjs = require('./chunk-W3H42XRV.cjs');
10
+ var _chunkWKN6C4ZEcjs = require('./chunk-WKN6C4ZE.cjs');
11
11
 
12
12
  // src/charts/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
- _chunkGWNXOI4Mcjs.BarChartResponsive,
145
+ _chunkDDV5726Qcjs.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, _chunkW3H42XRVcjs.GlobalChartsContext);
183
+ const existingContext = _react.useContext.call(void 0, _chunkWKN6C4ZEcjs.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, _chunkW3H42XRVcjs.GlobalChartsProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BarListChartInternal, { ...props }) });
187
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWKN6C4ZEcjs.GlobalChartsProvider, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BarListChartInternal, { ...props }) });
188
188
  };
189
189
  BarListChart.displayName = "BarListChart";
190
190
  var BarListChartResponsive = _chunkMUUSZ7J5cjs.withResponsive.call(void 0, BarListChart);
@@ -193,4 +193,4 @@ var BarListChartResponsive = _chunkMUUSZ7J5cjs.withResponsive.call(void 0, BarLi
193
193
 
194
194
 
195
195
  exports.BarListChart = BarListChart; exports.BarListChartResponsive = BarListChartResponsive;
196
- //# sourceMappingURL=chunk-A7X3CNEO.cjs.map
196
+ //# sourceMappingURL=chunk-FVWTBK44.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/jetpack/jetpack/projects/js-packages/charts/dist/chunk-A7X3CNEO.cjs","../src/charts/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-A7X3CNEO.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-FVWTBK44.cjs","../src/charts/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-FVWTBK44.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"]}