@fluentui/react-charts 9.3.8 → 9.3.9

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 (199) hide show
  1. package/CHANGELOG.md +35 -2
  2. package/dist/index.d.ts +378 -0
  3. package/lib/PolarChart.js +1 -0
  4. package/lib/PolarChart.js.map +1 -0
  5. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -1
  6. package/lib/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  7. package/lib/components/ChartTable/ChartTable.js +21 -7
  8. package/lib/components/ChartTable/ChartTable.js.map +1 -1
  9. package/lib/components/ChartTable/ChartTable.types.js.map +1 -1
  10. package/lib/components/ChartTable/useChartTableStyles.styles.js +24 -3
  11. package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
  12. package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +14 -2
  13. package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
  14. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +7 -5
  15. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  16. package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
  17. package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +47 -3
  18. package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
  19. package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +24 -17
  20. package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
  21. package/lib/components/CommonComponents/CartesianChart.js +32 -13
  22. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  23. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  24. package/lib/components/DeclarativeChart/DeclarativeChart.js +33 -29
  25. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  26. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +413 -210
  27. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  28. package/lib/components/DonutChart/DonutChart.js +18 -6
  29. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  30. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  31. package/lib/components/DonutChart/useDonutChartStyles.styles.js +25 -5
  32. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  33. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +16 -5
  34. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  35. package/lib/components/FunnelChart/FunnelChart.js +28 -6
  36. package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
  37. package/lib/components/FunnelChart/FunnelChart.types.js.map +1 -1
  38. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js +26 -4
  39. package/lib/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
  40. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js +15 -3
  41. package/lib/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
  42. package/lib/components/GaugeChart/GaugeChart.js +7 -6
  43. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  44. package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
  45. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +31 -19
  46. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  47. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js +23 -18
  48. package/lib/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
  49. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
  50. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  51. package/lib/components/HeatMapChart/HeatMapChart.js +5 -1
  52. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  53. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +58 -6
  54. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  55. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
  56. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +18 -3
  57. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  58. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +13 -2
  59. package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
  60. package/lib/components/Legends/OverflowMenu.js +9 -2
  61. package/lib/components/Legends/OverflowMenu.js.map +1 -1
  62. package/lib/components/LineChart/LineChart.js +5 -6
  63. package/lib/components/LineChart/LineChart.js.map +1 -1
  64. package/lib/components/PolarChart/PolarChart.js +577 -0
  65. package/lib/components/PolarChart/PolarChart.js.map +1 -0
  66. package/lib/components/PolarChart/PolarChart.types.js +1 -0
  67. package/lib/components/PolarChart/PolarChart.types.js.map +1 -0
  68. package/lib/components/PolarChart/PolarChart.utils.js +174 -0
  69. package/lib/components/PolarChart/PolarChart.utils.js.map +1 -0
  70. package/lib/components/PolarChart/index.js +2 -0
  71. package/lib/components/PolarChart/index.js.map +1 -0
  72. package/lib/components/PolarChart/usePolarChartStyles.styles.js +72 -0
  73. package/lib/components/PolarChart/usePolarChartStyles.styles.js.map +1 -0
  74. package/lib/components/PolarChart/usePolarChartStyles.styles.raw.js +61 -0
  75. package/lib/components/PolarChart/usePolarChartStyles.styles.raw.js.map +1 -0
  76. package/lib/components/SankeyChart/SankeyChart.js +14 -4
  77. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  78. package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -1
  79. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +23 -6
  80. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  81. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +15 -5
  82. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  83. package/lib/components/ScatterChart/ScatterChart.js +1 -5
  84. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  85. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +29 -38
  86. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  87. package/lib/index.js +1 -0
  88. package/lib/index.js.map +1 -1
  89. package/lib/types/DataPoint.js +1 -1
  90. package/lib/types/DataPoint.js.map +1 -1
  91. package/lib/utilities/ChartTitle.js +45 -0
  92. package/lib/utilities/ChartTitle.js.map +1 -0
  93. package/lib/utilities/Common.styles.js +73 -1
  94. package/lib/utilities/Common.styles.js.map +1 -1
  95. package/lib/utilities/Common.styles.raw.js +70 -0
  96. package/lib/utilities/Common.styles.raw.js.map +1 -1
  97. package/lib/utilities/index.js +1 -0
  98. package/lib/utilities/index.js.map +1 -1
  99. package/lib/utilities/utilities.js +6 -6
  100. package/lib/utilities/utilities.js.map +1 -1
  101. package/lib-commonjs/PolarChart.js +6 -0
  102. package/lib-commonjs/PolarChart.js.map +1 -0
  103. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js +2 -1
  104. package/lib-commonjs/components/AnnotationOnlyChart/AnnotationOnlyChart.js.map +1 -1
  105. package/lib-commonjs/components/ChartTable/ChartTable.js +21 -7
  106. package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
  107. package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -1
  108. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +34 -3
  109. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -1
  110. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +14 -2
  111. package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -1
  112. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +7 -5
  113. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
  114. package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.types.js.map +1 -1
  115. package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +58 -4
  116. package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
  117. package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +24 -17
  118. package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
  119. package/lib-commonjs/components/CommonComponents/CartesianChart.js +31 -12
  120. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  121. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  122. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +59 -56
  123. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  124. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +419 -213
  125. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  126. package/lib-commonjs/components/DonutChart/DonutChart.js +17 -5
  127. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  128. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  129. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +31 -4
  130. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  131. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +15 -4
  132. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  133. package/lib-commonjs/components/FunnelChart/FunnelChart.js +27 -5
  134. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
  135. package/lib-commonjs/components/FunnelChart/FunnelChart.types.js.map +1 -1
  136. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js +36 -4
  137. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.js.map +1 -1
  138. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js +15 -3
  139. package/lib-commonjs/components/FunnelChart/useFunnelChartStyles.styles.raw.js.map +1 -1
  140. package/lib-commonjs/components/GaugeChart/GaugeChart.js +6 -5
  141. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  142. package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -1
  143. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +39 -18
  144. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  145. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js +23 -18
  146. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.raw.js.map +1 -1
  147. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
  148. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  149. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +5 -1
  150. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  151. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +57 -5
  152. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  153. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
  154. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +26 -3
  155. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
  156. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +13 -2
  157. package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
  158. package/lib-commonjs/components/Legends/OverflowMenu.js +9 -2
  159. package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
  160. package/lib-commonjs/components/LineChart/LineChart.js +5 -6
  161. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  162. package/lib-commonjs/components/PolarChart/PolarChart.js +587 -0
  163. package/lib-commonjs/components/PolarChart/PolarChart.js.map +1 -0
  164. package/lib-commonjs/components/PolarChart/PolarChart.types.js +6 -0
  165. package/lib-commonjs/components/PolarChart/PolarChart.types.js.map +1 -0
  166. package/lib-commonjs/components/PolarChart/PolarChart.utils.js +204 -0
  167. package/lib-commonjs/components/PolarChart/PolarChart.utils.js.map +1 -0
  168. package/lib-commonjs/components/PolarChart/index.js +7 -0
  169. package/lib-commonjs/components/PolarChart/index.js.map +1 -0
  170. package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.js +107 -0
  171. package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.js.map +1 -0
  172. package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.raw.js +75 -0
  173. package/lib-commonjs/components/PolarChart/usePolarChartStyles.styles.raw.js.map +1 -0
  174. package/lib-commonjs/components/SankeyChart/SankeyChart.js +14 -4
  175. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  176. package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -1
  177. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +28 -4
  178. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  179. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +14 -3
  180. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  181. package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -5
  182. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  183. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +29 -38
  184. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  185. package/lib-commonjs/index.js +1 -0
  186. package/lib-commonjs/index.js.map +1 -1
  187. package/lib-commonjs/types/DataPoint.js +1 -1
  188. package/lib-commonjs/types/DataPoint.js.map +1 -1
  189. package/lib-commonjs/utilities/ChartTitle.js +53 -0
  190. package/lib-commonjs/utilities/ChartTitle.js.map +1 -0
  191. package/lib-commonjs/utilities/Common.styles.js +69 -0
  192. package/lib-commonjs/utilities/Common.styles.js.map +1 -1
  193. package/lib-commonjs/utilities/Common.styles.raw.js +69 -0
  194. package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
  195. package/lib-commonjs/utilities/index.js +1 -0
  196. package/lib-commonjs/utilities/index.js.map +1 -1
  197. package/lib-commonjs/utilities/utilities.js +10 -4
  198. package/lib-commonjs/utilities/utilities.js.map +1 -1
  199. package/package.json +10 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/FunnelChart/FunnelChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { useRtl } from '../../utilities/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from './FunnelChart.types';\nimport { Legend, Legends } from '../Legends/index';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { getContrastTextColor } from '../../utilities/colors';\nimport { useFunnelChartStyles } from './useFunnelChartStyles.styles';\nimport {\n getHorizontalFunnelSegmentGeometry,\n getVerticalFunnelSegmentGeometry,\n getSegmentTextProps,\n getStackedHorizontalFunnelSegmentGeometry,\n getStackedVerticalFunnelSegmentGeometry,\n} from './funnelGeometry';\nimport { ChartPopoverProps } from '../../index';\nimport { useImageExport } from '../../utilities/hooks';\n\nexport const FunnelChart: React.FunctionComponent<FunnelChartProps> = React.forwardRef<\n HTMLDivElement,\n FunnelChartProps\n>(({ orientation = 'vertical', ...restProps }, forwardedRef) => {\n const props = { orientation, ...restProps };\n const _emptyChartId: string = useId('_FunnelChart_empty');\n const isRTL = useRtl();\n\n const [hoveredStage, setHoveredStage] = React.useState<string | null>(null);\n const [calloutData, setCalloutData] = React.useState<FunnelChartDataPoint | null>(null);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>([]);\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [refSelected, setRefSelected] = React.useState<HTMLElement | null>(null);\n const isStacked = isStackedFunnelData(props.data);\n const { chartContainerRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend, false);\n\n React.useEffect(() => {\n if (props.legendProps?.selectedLegends) {\n setSelectedLegends(props.legendProps.selectedLegends);\n }\n }, [props.legendProps?.selectedLegends]);\n\n function _handleHover(\n data: FunnelChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n targetElement?: HTMLElement | null,\n ) {\n mouseEvent?.persist();\n setCalloutData(data);\n setRefSelected(targetElement!);\n setPopoverOpen(true);\n }\n\n function _handleFocus(\n data: FunnelChartDataPoint,\n focusEvent: React.FocusEvent<SVGPathElement>,\n targetElement?: HTMLElement | null,\n ) {\n focusEvent?.persist();\n setCalloutData(data);\n setRefSelected(targetElement!);\n setPopoverOpen(true);\n }\n\n function _handleStackedHover(\n stage: string,\n subValue: { category: string; value: number; color: string },\n mouseEvent: React.MouseEvent<SVGElement>,\n targetElement?: HTMLElement | null,\n ) {\n mouseEvent?.persist();\n setCalloutData({\n stage,\n value: subValue.value,\n color: subValue.color,\n category: subValue.category,\n } as FunnelChartDataPoint);\n setRefSelected(targetElement!);\n setPopoverOpen(true);\n }\n\n function _handleStackedFocus(\n stage: string,\n subValue: { category: string; value: number; color: string },\n focusEvent: React.FocusEvent<SVGPathElement>,\n targetElement?: HTMLElement | null,\n ) {\n focusEvent?.persist();\n setCalloutData({\n stage,\n value: subValue.value,\n color: subValue.color,\n category: subValue.category,\n } as FunnelChartDataPoint);\n setRefSelected(targetElement!);\n setPopoverOpen(true);\n }\n\n function _handleMouseOut() {\n setHoveredStage(null);\n setPopoverOpen(false);\n setCalloutData(null);\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n const _onLegendSelectionChangeCallback = React.useCallback(_onLegendSelectionChange, [props.legendProps]);\n\n function getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : hoveredStage ? [hoveredStage] : [];\n }\n\n function legendHighlighted(legend: string): boolean {\n return getHighlightedLegend().includes(legend);\n }\n\n function noLegendHighlighted(): boolean {\n return getHighlightedLegend().length === 0;\n }\n\n function _getEventHandlerProps(\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } },\n opacity?: number,\n segmentId?: string,\n ) {\n const targetElement = document.getElementById(segmentId!);\n if ('subValue' in data) {\n return {\n culture: props.culture,\n onMouseOver:\n opacity == 1\n ? (event: React.MouseEvent<SVGElement>) =>\n _handleStackedHover(data.stage, data.subValue, event, targetElement)\n : undefined,\n onMouseMove:\n opacity == 1\n ? (event: React.MouseEvent<SVGElement>) =>\n _handleStackedHover(data.stage, data.subValue, event, targetElement)\n : undefined,\n onFocus: (event: React.FocusEvent<SVGPathElement>) =>\n _handleStackedFocus(data.stage, data.subValue, event, targetElement),\n onBlur: () => _handleMouseOut(),\n onMouseOut: () => _handleMouseOut(),\n };\n } else {\n return {\n culture: props.culture,\n onMouseOver:\n opacity == 1 ? (event: React.MouseEvent<SVGElement>) => _handleHover(data, event, targetElement) : undefined,\n onMouseMove:\n opacity == 1 ? (event: React.MouseEvent<SVGElement>) => _handleHover(data, event, targetElement) : undefined,\n onFocus: (event: React.FocusEvent<SVGPathElement>) => _handleFocus(data, event, targetElement),\n onBlur: () => _handleMouseOut(),\n onMouseOut: () => _handleMouseOut(),\n };\n }\n }\n\n function _renderSegmentText({\n show,\n x,\n y,\n value,\n textColor,\n opacity,\n }: {\n show: boolean;\n x: number;\n y: number;\n value: number;\n textColor: string;\n opacity: number;\n }) {\n if (!show) {\n return null;\n }\n\n const textElement = (\n <text\n x={isRTL ? funnelWidth - x : x}\n y={y}\n opacity={opacity}\n textAnchor=\"middle\"\n alignmentBaseline=\"middle\"\n fill={textColor}\n >\n {formatToLocaleString(value.toString(), props.culture) as React.ReactNode}\n </text>\n );\n\n if (isRTL) {\n return <g transform={`scale(-1,1) translate(${-funnelWidth},0)`}>{textElement}</g>;\n }\n return textElement;\n }\n\n function _renderFunnelSegment({\n key,\n pathD,\n fill,\n opacity,\n textProps,\n data,\n tabIndex,\n }: {\n key: string | number;\n pathD: string;\n fill: string;\n opacity: number;\n textProps?: {\n show: boolean;\n x: number;\n y: number;\n value: number;\n };\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } };\n tabIndex?: number;\n }) {\n const segmentId = `funnel-segment-${key}`;\n const eventHandlers = _getEventHandlerProps(data, opacity, segmentId);\n const textColor = getContrastTextColor(fill);\n return (\n <g key={key}>\n <path id={segmentId} d={pathD} fill={fill} opacity={opacity} {...eventHandlers} tabIndex={tabIndex} />\n {textProps && <g {...eventHandlers}>{_renderSegmentText({ ...textProps, textColor, opacity })}</g>}\n </g>\n );\n }\n\n function _createFunnel(containerHeight: number, containerWidth: number): JSXElement[] {\n const { data } = props;\n const funnelWidth = containerWidth;\n const funnelHeight = containerHeight * 0.8;\n\n return data.map((d, i) => {\n const geometryProps =\n props.orientation === 'vertical'\n ? getVerticalFunnelSegmentGeometry({ d, i, data, funnelWidth, funnelHeight, isRTL })\n : getHorizontalFunnelSegmentGeometry({ d, i, data, funnelWidth, funnelHeight, isRTL });\n\n const { pathD, textX, textY, availableWidth } = geometryProps;\n const minTextWidth = 16;\n const eventHandlerProps = _getEventHandlerProps(d);\n const textProps = getSegmentTextProps({\n availableWidth,\n minTextWidth,\n textX,\n textY,\n value: d.value!,\n ...eventHandlerProps,\n });\n\n return _renderFunnelSegment({\n key: i,\n pathD,\n fill: d.color!,\n opacity: legendHighlighted(d.stage as string) || noLegendHighlighted() ? 1 : 0.1,\n textProps,\n data: d,\n tabIndex: legendHighlighted(d.stage as string) || noLegendHighlighted() ? 0 : undefined,\n });\n });\n }\n\n function isStackedFunnelData(data: FunnelChartDataPoint[]): boolean {\n return Array.isArray(data) && data.every(stage => Array.isArray(stage.subValues));\n }\n\n function _renderStackedSegment(\n stage: FunnelChartDataPoint,\n subValue: { value: number; color: string; category: string },\n stageIndex: number,\n subValueIndex: number,\n geometryParams: {\n stages: FunnelChartDataPoint[];\n totals: number[];\n maxTotal: number;\n funnelWidth: number;\n funnelHeight: number;\n isRTL: boolean;\n },\n ): JSXElement {\n // Ensure stages have subValues for geometry functions\n const stagesWithSubValues = geometryParams.stages.map(s => ({\n ...s,\n subValues: s.subValues || [],\n }));\n const geom =\n props.orientation === 'vertical'\n ? getStackedVerticalFunnelSegmentGeometry({\n ...geometryParams,\n stages: stagesWithSubValues,\n i: stageIndex,\n k: subValueIndex,\n })\n : getStackedHorizontalFunnelSegmentGeometry({\n ...geometryParams,\n stages: stagesWithSubValues,\n i: stageIndex,\n k: subValueIndex,\n });\n\n const minTextWidth = 16;\n const eventHandlerProps = _getEventHandlerProps({ stage: stage.stage as string, subValue });\n const textProps = getSegmentTextProps({\n availableWidth: geom.availableWidth,\n minTextWidth,\n textX: geom.textX,\n textY: geom.textY,\n value: subValue.value,\n ...eventHandlerProps,\n });\n\n return _renderFunnelSegment({\n key: `${stageIndex}-${subValueIndex}`,\n pathD: geom.pathD,\n fill: subValue.color,\n opacity:\n (isStackedFunnelData(props.data) && legendHighlighted(subValue.category)) || noLegendHighlighted() ? 1 : 0.1,\n textProps,\n data: { stage: stage.stage as string, subValue },\n tabIndex: legendHighlighted(subValue.category) || noLegendHighlighted() ? 0 : undefined,\n });\n }\n\n function _createStackedFunnel(containerHeight: number, containerWidth: number): JSXElement[] {\n const { data } = props;\n\n const stages = data;\n const totals = stages.map(s => s?.subValues?.reduce((sum, subValue) => sum + subValue.value, 0) ?? 0);\n const maxTotal = Math.max(...totals);\n\n const funnelWidth = containerWidth;\n const funnelHeight = containerHeight * 0.8;\n\n const paths: JSXElement[] = [];\n\n const geometryParams = {\n stages,\n totals,\n maxTotal,\n funnelWidth,\n funnelHeight,\n isRTL,\n };\n\n for (let i = 0; i < stages.length; i++) {\n const cur = stages[i];\n for (let k = 0; k < (cur.subValues ?? []).length; k++) {\n const v = cur.subValues?.[k];\n if (!v) {\n continue;\n }\n paths.push(_renderStackedSegment(cur, v, i, k, geometryParams));\n }\n }\n return paths;\n }\n\n function _renderLegends(): JSXElement {\n if (props.hideLegend) {\n return <></>;\n }\n let legends: Legend[];\n\n if (isStacked) {\n // Collect unique categories and their color\n const categoryMap: Record<string, string> = {};\n props.data.forEach((stage: FunnelChartDataPoint) => {\n (stage.subValues || []).forEach(sub => {\n if (!(sub.category in categoryMap)) {\n categoryMap[sub.category] = sub.color;\n }\n });\n });\n legends = Object.entries(categoryMap).map(([category, color]) => ({\n title: category,\n color,\n hoverAction: () => setHoveredStage(category),\n onMouseOutAction: () => setHoveredStage(null),\n }));\n } else {\n legends = props.data.map((d: FunnelChartDataPoint) => ({\n title: d.stage as string,\n color: d.color!,\n hoverAction: () => setHoveredStage(d.stage as string),\n onMouseOutAction: () => setHoveredStage(null),\n }));\n }\n\n return (\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Legends\n legends={legends}\n centerLegends={true}\n onChange={_onLegendSelectionChangeCallback}\n {...props.legendProps}\n legendRef={_legendsRef}\n />\n </div>\n );\n }\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n const classes = useFunnelChartStyles(props);\n\n const calloutProps: ChartPopoverProps = {\n ...props.calloutProps,\n color: calloutData?.color,\n hoverXValue: calloutData?.stage,\n YValue: calloutData?.value,\n };\n\n const width = props.width || 350;\n const height = props.height || 500;\n\n const funnelMarginTop = 40;\n const funnelWidth = width * 0.8;\n const funnelOffsetX = (width - funnelWidth) / 2;\n const arrowAttributes = useArrowNavigationGroup({ circular: true, axis: 'horizontal' });\n\n return !_isChartEmpty() ? (\n <div ref={chartContainerRef} className={classes.root} {...arrowAttributes} style={{ width, height }}>\n <svg width={width} height={height} className={classes.chart} role={'img'} aria-label={props.chartTitle}>\n <g\n transform={\n isRTL\n ? `translate(${funnelOffsetX + funnelWidth}, ${funnelMarginTop}) scale(-1,1)`\n : `translate(${funnelOffsetX}, ${funnelMarginTop})`\n }\n >\n {isStacked\n ? _createStackedFunnel(height - funnelMarginTop, funnelWidth)\n : _createFunnel(height - funnelMarginTop, funnelWidth)}\n </g>\n </svg>\n {isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n XValue={calloutProps?.hoverXValue as string}\n yCalloutValue={calloutProps?.YValue as string}\n culture={props.culture}\n positioning={{\n target: refSelected,\n }}\n isPopoverOpen={isPopoverOpen}\n color={calloutProps?.color}\n isCartesian={false}\n />\n )}\n {_renderLegends()}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nFunnelChart.displayName = 'FunnelChart';\n"],"names":["React","useId","useRtl","Legends","useArrowNavigationGroup","ChartPopover","formatToLocaleString","getContrastTextColor","useFunnelChartStyles","getHorizontalFunnelSegmentGeometry","getVerticalFunnelSegmentGeometry","getSegmentTextProps","getStackedHorizontalFunnelSegmentGeometry","getStackedVerticalFunnelSegmentGeometry","useImageExport","FunnelChart","forwardRef","orientation","restProps","forwardedRef","props","_emptyChartId","isRTL","hoveredStage","setHoveredStage","useState","calloutData","setCalloutData","selectedLegends","setSelectedLegends","isPopoverOpen","setPopoverOpen","refSelected","setRefSelected","isStacked","isStackedFunnelData","data","chartContainerRef","legendsRef","_legendsRef","componentRef","hideLegend","useEffect","legendProps","_handleHover","mouseEvent","targetElement","persist","_handleFocus","focusEvent","_handleStackedHover","stage","subValue","value","color","category","_handleStackedFocus","_handleMouseOut","_onLegendSelectionChange","legendsSelected","event","currentLegend","canSelectMultipleLegends","slice","onChange","_onLegendSelectionChangeCallback","useCallback","getHighlightedLegend","length","legendHighlighted","legend","includes","noLegendHighlighted","_getEventHandlerProps","opacity","segmentId","document","getElementById","culture","onMouseOver","undefined","onMouseMove","onFocus","onBlur","onMouseOut","_renderSegmentText","show","x","y","textColor","textElement","text","funnelWidth","textAnchor","alignmentBaseline","fill","toString","g","transform","_renderFunnelSegment","key","pathD","textProps","tabIndex","eventHandlers","path","id","d","_createFunnel","containerHeight","containerWidth","funnelHeight","map","i","geometryProps","textX","textY","availableWidth","minTextWidth","eventHandlerProps","Array","isArray","every","subValues","_renderStackedSegment","stageIndex","subValueIndex","geometryParams","stagesWithSubValues","stages","s","geom","k","_createStackedFunnel","totals","reduce","sum","maxTotal","Math","max","paths","cur","v","push","_renderLegends","legends","categoryMap","forEach","sub","Object","entries","title","hoverAction","onMouseOutAction","div","style","display","justifyContent","centerLegends","legendRef","_isChartEmpty","classes","calloutProps","hoverXValue","YValue","width","height","funnelMarginTop","funnelOffsetX","arrowAttributes","circular","axis","ref","className","root","svg","chart","role","aria-label","chartTitle","XValue","yCalloutValue","positioning","target","isCartesian","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/FunnelChart/FunnelChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { useRtl, ChartTitle, CHART_TITLE_PADDING } from '../../utilities/index';\nimport { FunnelChartDataPoint, FunnelChartProps } from './FunnelChart.types';\nimport { Legend, Legends } from '../Legends/index';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { ChartPopover } from '../CommonComponents/ChartPopover';\nimport { formatToLocaleString } from '@fluentui/chart-utilities';\nimport { getContrastTextColor } from '../../utilities/colors';\nimport { useFunnelChartStyles } from './useFunnelChartStyles.styles';\nimport {\n getHorizontalFunnelSegmentGeometry,\n getVerticalFunnelSegmentGeometry,\n getSegmentTextProps,\n getStackedHorizontalFunnelSegmentGeometry,\n getStackedVerticalFunnelSegmentGeometry,\n} from './funnelGeometry';\nimport { ChartPopoverProps } from '../../index';\nimport { useImageExport } from '../../utilities/hooks';\n\nexport const FunnelChart: React.FunctionComponent<FunnelChartProps> = React.forwardRef<\n HTMLDivElement,\n FunnelChartProps\n>(({ orientation = 'vertical', ...restProps }, forwardedRef) => {\n const props = { orientation, ...restProps };\n const _emptyChartId: string = useId('_FunnelChart_empty');\n const isRTL = useRtl();\n\n const [hoveredStage, setHoveredStage] = React.useState<string | null>(null);\n const [calloutData, setCalloutData] = React.useState<FunnelChartDataPoint | null>(null);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>([]);\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [refSelected, setRefSelected] = React.useState<HTMLElement | null>(null);\n const isStacked = isStackedFunnelData(props.data);\n const { chartContainerRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend, false);\n\n React.useEffect(() => {\n if (props.legendProps?.selectedLegends) {\n setSelectedLegends(props.legendProps.selectedLegends);\n }\n }, [props.legendProps?.selectedLegends]);\n\n function _handleHover(\n data: FunnelChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n targetElement?: HTMLElement | null,\n ) {\n mouseEvent?.persist();\n setCalloutData(data);\n setRefSelected(targetElement!);\n setPopoverOpen(true);\n }\n\n function _handleFocus(\n data: FunnelChartDataPoint,\n focusEvent: React.FocusEvent<SVGPathElement>,\n targetElement?: HTMLElement | null,\n ) {\n focusEvent?.persist();\n setCalloutData(data);\n setRefSelected(targetElement!);\n setPopoverOpen(true);\n }\n\n function _handleStackedHover(\n stage: string,\n subValue: { category: string; value: number; color: string },\n mouseEvent: React.MouseEvent<SVGElement>,\n targetElement?: HTMLElement | null,\n ) {\n mouseEvent?.persist();\n setCalloutData({\n stage,\n value: subValue.value,\n color: subValue.color,\n category: subValue.category,\n } as FunnelChartDataPoint);\n setRefSelected(targetElement!);\n setPopoverOpen(true);\n }\n\n function _handleStackedFocus(\n stage: string,\n subValue: { category: string; value: number; color: string },\n focusEvent: React.FocusEvent<SVGPathElement>,\n targetElement?: HTMLElement | null,\n ) {\n focusEvent?.persist();\n setCalloutData({\n stage,\n value: subValue.value,\n color: subValue.color,\n category: subValue.category,\n } as FunnelChartDataPoint);\n setRefSelected(targetElement!);\n setPopoverOpen(true);\n }\n\n function _handleMouseOut() {\n setHoveredStage(null);\n setPopoverOpen(false);\n setCalloutData(null);\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n const _onLegendSelectionChangeCallback = React.useCallback(_onLegendSelectionChange, [props.legendProps]);\n\n function getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : hoveredStage ? [hoveredStage] : [];\n }\n\n function legendHighlighted(legend: string): boolean {\n return getHighlightedLegend().includes(legend);\n }\n\n function noLegendHighlighted(): boolean {\n return getHighlightedLegend().length === 0;\n }\n\n function _getAriaLabel(\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } },\n ): string {\n if ('subValue' in data) {\n // Stacked funnel segment\n const formattedValue = formatToLocaleString(data.subValue.value.toString(), props.culture);\n return `${data.stage}, ${data.subValue.category}, ${formattedValue}.`;\n } else {\n // Non-stacked funnel segment\n const formattedValue = formatToLocaleString((data.value ?? 0).toString(), props.culture);\n return `${data.stage}, ${formattedValue}.`;\n }\n }\n\n function _getEventHandlerProps(\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } },\n opacity?: number,\n segmentId?: string,\n ) {\n const targetElement = document.getElementById(segmentId!);\n if ('subValue' in data) {\n return {\n culture: props.culture,\n onMouseOver:\n opacity == 1\n ? (event: React.MouseEvent<SVGElement>) =>\n _handleStackedHover(data.stage, data.subValue, event, targetElement)\n : undefined,\n onMouseMove:\n opacity == 1\n ? (event: React.MouseEvent<SVGElement>) =>\n _handleStackedHover(data.stage, data.subValue, event, targetElement)\n : undefined,\n onFocus: (event: React.FocusEvent<SVGPathElement>) =>\n _handleStackedFocus(data.stage, data.subValue, event, targetElement),\n onBlur: () => _handleMouseOut(),\n onMouseOut: () => _handleMouseOut(),\n };\n } else {\n return {\n culture: props.culture,\n onMouseOver:\n opacity == 1 ? (event: React.MouseEvent<SVGElement>) => _handleHover(data, event, targetElement) : undefined,\n onMouseMove:\n opacity == 1 ? (event: React.MouseEvent<SVGElement>) => _handleHover(data, event, targetElement) : undefined,\n onFocus: (event: React.FocusEvent<SVGPathElement>) => _handleFocus(data, event, targetElement),\n onBlur: () => _handleMouseOut(),\n onMouseOut: () => _handleMouseOut(),\n };\n }\n }\n\n function _renderSegmentText({\n show,\n x,\n y,\n value,\n textColor,\n opacity,\n }: {\n show: boolean;\n x: number;\n y: number;\n value: number;\n textColor: string;\n opacity: number;\n }) {\n if (!show) {\n return null;\n }\n\n const textElement = (\n <text\n x={isRTL ? funnelWidth - x : x}\n y={y}\n opacity={opacity}\n textAnchor=\"middle\"\n alignmentBaseline=\"middle\"\n fill={textColor}\n >\n {formatToLocaleString(value.toString(), props.culture) as React.ReactNode}\n </text>\n );\n\n if (isRTL) {\n return <g transform={`scale(-1,1) translate(${-funnelWidth},0)`}>{textElement}</g>;\n }\n return textElement;\n }\n\n function _renderFunnelSegment({\n key,\n pathD,\n fill,\n opacity,\n textProps,\n data,\n tabIndex,\n }: {\n key: string | number;\n pathD: string;\n fill: string;\n opacity: number;\n textProps?: {\n show: boolean;\n x: number;\n y: number;\n value: number;\n };\n data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } };\n tabIndex?: number;\n }) {\n const segmentId = `funnel-segment-${key}`;\n const eventHandlers = _getEventHandlerProps(data, opacity, segmentId);\n const textColor = getContrastTextColor(fill);\n return (\n <g key={key}>\n <path\n id={segmentId}\n d={pathD}\n fill={fill}\n opacity={opacity}\n {...eventHandlers}\n tabIndex={tabIndex}\n role=\"img\"\n aria-label={_getAriaLabel(data)}\n />\n {textProps && <g {...eventHandlers}>{_renderSegmentText({ ...textProps, textColor, opacity })}</g>}\n </g>\n );\n }\n\n function _createFunnel(containerHeight: number, containerWidth: number): JSXElement[] {\n const { data } = props;\n const funnelWidth = containerWidth;\n const funnelHeight = containerHeight * 0.8;\n\n return data.map((d, i) => {\n const geometryProps =\n props.orientation === 'vertical'\n ? getVerticalFunnelSegmentGeometry({ d, i, data, funnelWidth, funnelHeight, isRTL })\n : getHorizontalFunnelSegmentGeometry({ d, i, data, funnelWidth, funnelHeight, isRTL });\n\n const { pathD, textX, textY, availableWidth } = geometryProps;\n const minTextWidth = 16;\n const eventHandlerProps = _getEventHandlerProps(d);\n const textProps = getSegmentTextProps({\n availableWidth,\n minTextWidth,\n textX,\n textY,\n value: d.value!,\n ...eventHandlerProps,\n });\n\n return _renderFunnelSegment({\n key: i,\n pathD,\n fill: d.color!,\n opacity: legendHighlighted(d.stage as string) || noLegendHighlighted() ? 1 : 0.1,\n textProps,\n data: d,\n tabIndex: legendHighlighted(d.stage as string) || noLegendHighlighted() ? 0 : undefined,\n });\n });\n }\n\n function isStackedFunnelData(data: FunnelChartDataPoint[]): boolean {\n return Array.isArray(data) && data.every(stage => Array.isArray(stage.subValues));\n }\n\n function _renderStackedSegment(\n stage: FunnelChartDataPoint,\n subValue: { value: number; color: string; category: string },\n stageIndex: number,\n subValueIndex: number,\n geometryParams: {\n stages: FunnelChartDataPoint[];\n totals: number[];\n maxTotal: number;\n funnelWidth: number;\n funnelHeight: number;\n isRTL: boolean;\n },\n ): JSXElement {\n // Ensure stages have subValues for geometry functions\n const stagesWithSubValues = geometryParams.stages.map(s => ({\n ...s,\n subValues: s.subValues || [],\n }));\n const geom =\n props.orientation === 'vertical'\n ? getStackedVerticalFunnelSegmentGeometry({\n ...geometryParams,\n stages: stagesWithSubValues,\n i: stageIndex,\n k: subValueIndex,\n })\n : getStackedHorizontalFunnelSegmentGeometry({\n ...geometryParams,\n stages: stagesWithSubValues,\n i: stageIndex,\n k: subValueIndex,\n });\n\n const minTextWidth = 16;\n const eventHandlerProps = _getEventHandlerProps({ stage: stage.stage as string, subValue });\n const textProps = getSegmentTextProps({\n availableWidth: geom.availableWidth,\n minTextWidth,\n textX: geom.textX,\n textY: geom.textY,\n value: subValue.value,\n ...eventHandlerProps,\n });\n\n return _renderFunnelSegment({\n key: `${stageIndex}-${subValueIndex}`,\n pathD: geom.pathD,\n fill: subValue.color,\n opacity:\n (isStackedFunnelData(props.data) && legendHighlighted(subValue.category)) || noLegendHighlighted() ? 1 : 0.1,\n textProps,\n data: { stage: stage.stage as string, subValue },\n tabIndex: legendHighlighted(subValue.category) || noLegendHighlighted() ? 0 : undefined,\n });\n }\n\n function _createStackedFunnel(containerHeight: number, containerWidth: number): JSXElement[] {\n const { data } = props;\n\n const stages = data;\n const totals = stages.map(s => s?.subValues?.reduce((sum, subValue) => sum + subValue.value, 0) ?? 0);\n const maxTotal = Math.max(...totals);\n\n const funnelWidth = containerWidth;\n const funnelHeight = containerHeight * 0.8;\n\n const paths: JSXElement[] = [];\n\n const geometryParams = {\n stages,\n totals,\n maxTotal,\n funnelWidth,\n funnelHeight,\n isRTL,\n };\n\n for (let i = 0; i < stages.length; i++) {\n const cur = stages[i];\n for (let k = 0; k < (cur.subValues ?? []).length; k++) {\n const v = cur.subValues?.[k];\n if (!v) {\n continue;\n }\n paths.push(_renderStackedSegment(cur, v, i, k, geometryParams));\n }\n }\n return paths;\n }\n\n function _renderLegends(): JSXElement {\n if (props.hideLegend) {\n return <></>;\n }\n let legends: Legend[];\n\n if (isStacked) {\n // Collect unique categories and their color\n const categoryMap: Record<string, string> = {};\n props.data.forEach((stage: FunnelChartDataPoint) => {\n (stage.subValues || []).forEach(sub => {\n if (!(sub.category in categoryMap)) {\n categoryMap[sub.category] = sub.color;\n }\n });\n });\n legends = Object.entries(categoryMap).map(([category, color]) => ({\n title: category,\n color,\n hoverAction: () => setHoveredStage(category),\n onMouseOutAction: () => setHoveredStage(null),\n }));\n } else {\n legends = props.data.map((d: FunnelChartDataPoint) => ({\n title: d.stage as string,\n color: d.color!,\n hoverAction: () => setHoveredStage(d.stage as string),\n onMouseOutAction: () => setHoveredStage(null),\n }));\n }\n\n return (\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Legends\n legends={legends}\n centerLegends={true}\n onChange={_onLegendSelectionChangeCallback}\n {...props.legendProps}\n legendRef={_legendsRef}\n />\n </div>\n );\n }\n\n function _isChartEmpty(): boolean {\n return !(props.data && props.data.length > 0);\n }\n\n const classes = useFunnelChartStyles(props);\n\n const calloutProps: ChartPopoverProps = {\n ...props.calloutProps,\n color: calloutData?.color,\n hoverXValue: calloutData?.stage,\n YValue: calloutData?.value,\n };\n\n const width = props.width || 350;\n const height = props.height || 500;\n\n const titleHeight = props.chartTitle\n ? Math.max(\n (typeof props.titleStyles?.titleFont?.size === 'number' ? props.titleStyles.titleFont.size : 13) +\n CHART_TITLE_PADDING,\n 40,\n )\n : 40;\n const funnelMarginTop = titleHeight;\n const funnelWidth = width * 0.8;\n const funnelOffsetX = (width - funnelWidth) / 2;\n const arrowAttributes = useArrowNavigationGroup({ circular: true, axis: 'horizontal' });\n\n return !_isChartEmpty() ? (\n <div ref={chartContainerRef} className={classes.root} style={{ width, height }}>\n <svg\n width={width}\n height={height}\n className={classes.chart}\n {...arrowAttributes}\n role={'img'}\n aria-label={props.chartTitle}\n >\n {!props.hideLegend && props.chartTitle && (\n <ChartTitle\n title={props.chartTitle}\n x={width / 2}\n maxWidth={width - 20}\n className={classes.chartTitle}\n titleStyles={props.titleStyles}\n tooltipClassName={classes.svgTooltip}\n />\n )}\n <g\n transform={\n isRTL\n ? `translate(${funnelOffsetX + funnelWidth}, ${funnelMarginTop}) scale(-1,1)`\n : `translate(${funnelOffsetX}, ${funnelMarginTop})`\n }\n >\n {isStacked\n ? _createStackedFunnel(height - funnelMarginTop, funnelWidth)\n : _createFunnel(height - funnelMarginTop, funnelWidth)}\n </g>\n </svg>\n {isPopoverOpen && (\n <ChartPopover\n {...props.calloutProps}\n XValue={calloutProps?.hoverXValue as string}\n yCalloutValue={calloutProps?.YValue as string}\n culture={props.culture}\n positioning={{\n target: refSelected,\n }}\n isPopoverOpen={isPopoverOpen}\n color={calloutProps?.color}\n isCartesian={false}\n />\n )}\n {_renderLegends()}\n </div>\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nFunnelChart.displayName = 'FunnelChart';\n"],"names":["React","useId","useRtl","ChartTitle","CHART_TITLE_PADDING","Legends","useArrowNavigationGroup","ChartPopover","formatToLocaleString","getContrastTextColor","useFunnelChartStyles","getHorizontalFunnelSegmentGeometry","getVerticalFunnelSegmentGeometry","getSegmentTextProps","getStackedHorizontalFunnelSegmentGeometry","getStackedVerticalFunnelSegmentGeometry","useImageExport","FunnelChart","forwardRef","orientation","restProps","forwardedRef","props","_emptyChartId","isRTL","hoveredStage","setHoveredStage","useState","calloutData","setCalloutData","selectedLegends","setSelectedLegends","isPopoverOpen","setPopoverOpen","refSelected","setRefSelected","isStacked","isStackedFunnelData","data","chartContainerRef","legendsRef","_legendsRef","componentRef","hideLegend","useEffect","legendProps","_handleHover","mouseEvent","targetElement","persist","_handleFocus","focusEvent","_handleStackedHover","stage","subValue","value","color","category","_handleStackedFocus","_handleMouseOut","_onLegendSelectionChange","legendsSelected","event","currentLegend","canSelectMultipleLegends","slice","onChange","_onLegendSelectionChangeCallback","useCallback","getHighlightedLegend","length","legendHighlighted","legend","includes","noLegendHighlighted","_getAriaLabel","formattedValue","toString","culture","_getEventHandlerProps","opacity","segmentId","document","getElementById","onMouseOver","undefined","onMouseMove","onFocus","onBlur","onMouseOut","_renderSegmentText","show","x","y","textColor","textElement","text","funnelWidth","textAnchor","alignmentBaseline","fill","g","transform","_renderFunnelSegment","key","pathD","textProps","tabIndex","eventHandlers","path","id","d","role","aria-label","_createFunnel","containerHeight","containerWidth","funnelHeight","map","i","geometryProps","textX","textY","availableWidth","minTextWidth","eventHandlerProps","Array","isArray","every","subValues","_renderStackedSegment","stageIndex","subValueIndex","geometryParams","stagesWithSubValues","stages","s","geom","k","_createStackedFunnel","totals","reduce","sum","maxTotal","Math","max","paths","cur","v","push","_renderLegends","legends","categoryMap","forEach","sub","Object","entries","title","hoverAction","onMouseOutAction","div","style","display","justifyContent","centerLegends","legendRef","_isChartEmpty","classes","calloutProps","hoverXValue","YValue","width","height","titleHeight","chartTitle","titleStyles","titleFont","size","funnelMarginTop","funnelOffsetX","arrowAttributes","circular","axis","ref","className","root","svg","chart","maxWidth","tooltipClassName","svgTooltip","XValue","yCalloutValue","positioning","target","isCartesian","displayName"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/FunnelChart/FunnelChart.types.ts"],"sourcesContent":["import * as React from 'react';\nimport { ChartPopoverProps } from '../CommonComponents/ChartPopover.types';\nimport { LegendsProps } from '../Legends/index';\nimport { Chart } from '../../types/index';\n\n/**\n * Data point for funnel chart\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartDataPoint {\n /**\n * Stage name or identifier\n */\n stage: string | number;\n /**\n * Sub-values for stacked funnel charts\n * Each sub-value represents a category within the stage\n */\n subValues?: Array<{ category: string; value: number; color: string }>;\n /**\n * Value for the stage (used for non-stacked funnel charts)\n */\n value?: number;\n /**\n * Color for the stage (used for non-stacked funnel charts)\n */\n color?: string;\n}\n\n/**\n * Funnel Chart component props\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartProps {\n /**\n * Data points for the funnel chart\n */\n data: FunnelChartDataPoint[];\n /**\n * Title for the chart\n */\n chartTitle?: string;\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /**\n * Props for the legends in the chart\n */\n legendProps?: Partial<LegendsProps>;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: ChartPopoverProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: FunnelChartStyles;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Reference to the chart component\n */\n componentRef?: React.Ref<Chart>;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Orientation of the funnel chart\n * @defaultvalue 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Funnel Chart style properties\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartStyleProps {\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n /**\n * Width of the chart\n */\n chartWidth: number;\n /**\n * Height of the chart\n */\n chartHeight: number;\n}\n\n/**\n * Funnel Chart styles\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartStyles {\n /**\n * Styles for the root element\n */\n root?: string;\n\n /**\n * Styles for the chart\n */\n chart?: string;\n\n /**\n * Styles for text elements\n */\n text?: string;\n\n /**\n * Styles for the callout root element\n */\n calloutContentRoot?: string;\n}\n"],"names":["React"],"mappings":";;;;;iEAAuB,QAAQ"}
1
+ {"version":3,"sources":["../src/components/FunnelChart/FunnelChart.types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { TitleStyles } from '../../utilities/Common.styles';\nimport { ChartPopoverProps } from '../CommonComponents/ChartPopover.types';\nimport { LegendsProps } from '../Legends/index';\nimport { Chart } from '../../types/index';\n\n/**\n * Data point for funnel chart\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartDataPoint {\n /**\n * Stage name or identifier\n */\n stage: string | number;\n /**\n * Sub-values for stacked funnel charts\n * Each sub-value represents a category within the stage\n */\n subValues?: Array<{ category: string; value: number; color: string }>;\n /**\n * Value for the stage (used for non-stacked funnel charts)\n */\n value?: number;\n /**\n * Color for the stage (used for non-stacked funnel charts)\n */\n color?: string;\n}\n\n/**\n * Funnel Chart component props\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartProps {\n /**\n * Title styles configuration for the chart title\n */\n titleStyles?: TitleStyles;\n\n /**\n * Data points for the funnel chart\n */\n data: FunnelChartDataPoint[];\n /**\n * Title for the chart\n */\n chartTitle?: string;\n\n /**\n * Width of the chart\n */\n width?: number;\n\n /**\n * Height of the chart\n */\n height?: number;\n\n /**\n * Decides whether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /**\n * Props for the legends in the chart\n */\n legendProps?: Partial<LegendsProps>;\n\n /**\n * Props for the callout in the chart\n */\n calloutProps?: ChartPopoverProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules\n */\n styles?: FunnelChartStyles;\n\n /**\n * Defines the culture to localize the numbers and dates\n */\n culture?: string;\n\n /**\n * Reference to the chart component\n */\n componentRef?: React.Ref<Chart>;\n\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n\n /**\n * Orientation of the funnel chart\n * @defaultvalue 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n}\n\n/**\n * Funnel Chart style properties\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartStyleProps {\n /**\n * Additional CSS class(es) to apply to the chart\n */\n className?: string;\n /**\n * Width of the chart\n */\n chartWidth: number;\n /**\n * Height of the chart\n */\n chartHeight: number;\n}\n\n/**\n * Funnel Chart styles\n * {@docCategory FunnelChart}\n */\nexport interface FunnelChartStyles {\n /**\n * Styles for the root element\n */\n root?: string;\n\n /**\n * Styles for the chart\n */\n chart?: string;\n\n /**\n * Style for the chart title.\n */\n chartTitle?: string;\n\n /**\n * Styles for text elements\n */\n text?: string;\n\n /**\n * Style for SVG tooltip text\n */\n svgTooltip?: string;\n\n /**\n * Styles for the callout root element\n */\n calloutContentRoot?: string;\n}\n"],"names":["React"],"mappings":";;;;;iEAAuB,QAAQ"}
@@ -22,7 +22,9 @@ const funnelClassNames = {
22
22
  root: 'fui-funnel__root',
23
23
  chart: 'fui-funnel__chart',
24
24
  text: 'fui-funnel__text',
25
- calloutContentRoot: 'fui-funnel__callout-content-root'
25
+ calloutContentRoot: 'fui-funnel__callout-content-root',
26
+ chartTitle: 'fui-funnel__chartTitle',
27
+ svgTooltip: 'fui-funnel__svgTooltip'
26
28
  };
27
29
  /**
28
30
  * Base Styles
@@ -54,6 +56,20 @@ const funnelClassNames = {
54
56
  },
55
57
  calloutContentRoot: {
56
58
  B2u0y6b: "f15g8at8"
59
+ },
60
+ chartTitle: {
61
+ Bahqtrf: "fk6fouc",
62
+ Be2twd7: "f13mqy1h",
63
+ Bhrd7zp: "fl43uef",
64
+ Bg96gwp: "fcpl73t",
65
+ Bkfmm31: "fhuob2q",
66
+ Bvjb7m6: "fhv2zbx",
67
+ fsow6f: "f17mccla",
68
+ jrapky: "fqcjy3b"
69
+ },
70
+ svgTooltip: {
71
+ Bkfmm31: "f5q6cfr",
72
+ Bxms50k: "f1bgda6t"
57
73
  }
58
74
  }, {
59
75
  d: [
@@ -70,17 +86,33 @@ const funnelClassNames = {
70
86
  ".f1aehjj5{pointer-events:none;}",
71
87
  ".fl43uef{font-weight:var(--fontWeightSemibold);}",
72
88
  ".fhuob2q{fill:var(--colorNeutralForeground1);}",
73
- ".f15g8at8{max-width:238px;}"
89
+ ".f15g8at8{max-width:238px;}",
90
+ ".f13mqy1h{font-size:var(--fontSizeBase100);}",
91
+ ".fcpl73t{line-height:var(--lineHeightBase100);}",
92
+ ".fhv2zbx{forced-color-adjust:auto;}",
93
+ ".f17mccla{text-align:center;}",
94
+ ".fqcjy3b{margin-bottom:var(--spacingVerticalS);}",
95
+ ".f5q6cfr{fill:var(--colorNeutralBackground1);}"
96
+ ],
97
+ m: [
98
+ [
99
+ "@media screen and (-ms-high-contrast: active),screen and (forced-colors: active){.f1bgda6t{fill:Canvas;}}",
100
+ {
101
+ m: "screen and (-ms-high-contrast: active), screen and (forced-colors: active)"
102
+ }
103
+ ]
74
104
  ]
75
105
  });
76
106
  const useFunnelChartStyles = (props)=>{
77
- var _props_styles, _props_styles1, _props_styles2, _props_styles3;
107
+ var _props_styles, _props_styles1, _props_styles2, _props_styles3, _props_styles4, _props_styles5;
78
108
  const { className } = props;
79
109
  const baseStyles = useStyles();
80
110
  return {
81
111
  root: (0, _react.mergeClasses)(funnelClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),
82
112
  chart: (0, _react.mergeClasses)(funnelClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),
83
113
  text: (0, _react.mergeClasses)(funnelClassNames.text, baseStyles.text, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.text),
84
- calloutContentRoot: (0, _react.mergeClasses)(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot)
114
+ calloutContentRoot: (0, _react.mergeClasses)(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot),
115
+ chartTitle: (0, _react.mergeClasses)(funnelClassNames.chartTitle, baseStyles.chartTitle, (_props_styles4 = props.styles) === null || _props_styles4 === void 0 ? void 0 : _props_styles4.chartTitle),
116
+ svgTooltip: (0, _react.mergeClasses)(funnelClassNames.svgTooltip, baseStyles.svgTooltip, (_props_styles5 = props.styles) === null || _props_styles5 === void 0 ? void 0 : _props_styles5.svgTooltip)
85
117
  };
86
118
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["useFunnelChartStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\n/**\n * @internal\n */ export const funnelClassNames = {\n root: 'fui-funnel__root',\n chart: 'fui-funnel__chart',\n text: 'fui-funnel__text',\n calloutContentRoot: 'fui-funnel__callout-content-root'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n alignItems: 'center',\n width: '100%',\n height: '100%',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n fontWeight: tokens.fontWeightRegular,\n position: 'relative',\n textAlign: 'left'\n },\n chart: {\n display: 'block',\n width: '100%',\n height: '100%'\n },\n text: {\n pointerEvents: 'none',\n fontWeight: tokens.fontWeightSemibold,\n fill: tokens.colorNeutralForeground1,\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300\n },\n calloutContentRoot: {\n maxWidth: '238px'\n }\n});\n/**\n * Apply styling to the FunnelChart component\n */ export const useFunnelChartStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2, _props_styles3;\n const { className } = props;\n const baseStyles = useStyles();\n return {\n root: mergeClasses(funnelClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n chart: mergeClasses(funnelClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),\n text: mergeClasses(funnelClassNames.text, baseStyles.text, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.text),\n calloutContentRoot: mergeClasses(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot)\n };\n};\n"],"names":["__styles","mergeClasses","tokens","funnelClassNames","root","chart","text","calloutContentRoot","useStyles","Bt984gj","a9b677","Bqenvij","Bahqtrf","Be2twd7","Bhrd7zp","qhf8xq","fsow6f","mc9l5x","Bkecrkj","Bkfmm31","B2u0y6b","d","useFunnelChartStyles","props","_props_styles","_props_styles1","_props_styles2","_props_styles3","className","baseStyles","styles"],"mappings":"AAAA,YAAY;;;;;;;;;;;;IAKKG,gBAAgB;;;wBAqCI;eAApBmB;;;uBAzCwB,gBAAgB;AAI9C,yBAAyB;IAChClB,IAAI,EAAE,kBAAkB;IACxBC,KAAK,EAAE,mBAAmB;IAC1BC,IAAI,EAAE,kBAAkB;IACxBC,kBAAkB,EAAE;AACxB,CAAC;AACD;;CAEA,GAAI,MAAMC,SAAS,GAAA,WAAA,OAAGR,eAAA,EAAA;IAAAI,IAAA,EAAA;QAAAK,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;YAAA;YAAA;SAAA;IAAA;IAAAX,KAAA,EAAA;QAAAY,MAAA,EAAA;QAAAP,MAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAAL,IAAA,EAAA;QAAAY,OAAA,EAAA;QAAAJ,OAAA,EAAA;QAAAK,OAAA,EAAA;QAAAP,OAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAAN,kBAAA,EAAA;QAAAa,OAAA,EAAA;IAAA;AAAA,GAAA;IAAAC,CAAA,EAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;KAAA;AAAA,CA0BrB,CAAC;AAGS,8BAA8BE,KAAK,IAAG;IAC7C,IAAIC,aAAa,EAAEC,cAAc,EAAEC,cAAc,EAAEC,cAAc;IACjE,MAAM,EAAEC,SAAAA,EAAW,GAAGL,KAAK;IAC3B,MAAMM,UAAU,GAAGrB,SAAS,CAAC,CAAC;IAC9B,OAAO;QACHJ,IAAI,MAAEH,mBAAY,EAACE,gBAAgB,CAACC,IAAI,EAAEyB,UAAU,CAACzB,IAAI,EAAEwB,SAAS,EAAE,CAACJ,aAAa,GAAGD,KAAK,CAACO,MAAAA,AAAM,MAAM,IAAI,IAAIN,aAAa,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,aAAa,CAACpB,IAAI,CAAC;QACxKC,KAAK,EAAEJ,uBAAY,EAACE,gBAAgB,CAACE,KAAK,EAAEwB,UAAU,CAACxB,KAAK,EAAE,CAACoB,cAAc,GAAGF,KAAK,CAACO,MAAAA,AAAM,MAAM,IAAI,IAAIL,cAAc,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,cAAc,CAACpB,KAAK,CAAC;QACpKC,IAAI,MAAEL,mBAAY,EAACE,gBAAgB,CAACG,IAAI,EAAEuB,UAAU,CAACvB,IAAI,EAAE,CAACoB,cAAc,GAAGH,KAAK,CAACO,MAAAA,AAAM,MAAM,IAAI,IAAIJ,cAAc,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,cAAc,CAACpB,IAAI,CAAC;QAChKC,kBAAkB,MAAEN,mBAAY,EAAC4B,UAAU,CAACtB,kBAAkB,EAAE,CAACoB,cAAc,GAAGJ,KAAK,CAACO,MAAAA,AAAM,MAAM,IAAI,IAAIH,cAAc,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,cAAc,CAACpB,kBAAkB;IACtL,CAAC;AACL,CAAC"}
1
+ {"version":3,"sources":["useFunnelChartStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { getChartTitleStyles, HighContrastSelector } from '../../utilities/index';\n/**\n * @internal\n */ export const funnelClassNames = {\n root: 'fui-funnel__root',\n chart: 'fui-funnel__chart',\n text: 'fui-funnel__text',\n calloutContentRoot: 'fui-funnel__callout-content-root',\n chartTitle: 'fui-funnel__chartTitle',\n svgTooltip: 'fui-funnel__svgTooltip'\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n root: {\n alignItems: 'center',\n width: '100%',\n height: '100%',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n fontWeight: tokens.fontWeightRegular,\n position: 'relative',\n textAlign: 'left'\n },\n chart: {\n display: 'block',\n width: '100%',\n height: '100%'\n },\n text: {\n pointerEvents: 'none',\n fontWeight: tokens.fontWeightSemibold,\n fill: tokens.colorNeutralForeground1,\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300\n },\n calloutContentRoot: {\n maxWidth: '238px'\n },\n chartTitle: getChartTitleStyles(),\n svgTooltip: {\n fill: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n fill: 'Canvas'\n }\n }\n});\n/**\n * Apply styling to the FunnelChart component\n */ export const useFunnelChartStyles = (props)=>{\n var _props_styles, _props_styles1, _props_styles2, _props_styles3, _props_styles4, _props_styles5;\n const { className } = props;\n const baseStyles = useStyles();\n return {\n root: mergeClasses(funnelClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),\n chart: mergeClasses(funnelClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),\n text: mergeClasses(funnelClassNames.text, baseStyles.text, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.text),\n calloutContentRoot: mergeClasses(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot),\n chartTitle: mergeClasses(funnelClassNames.chartTitle, baseStyles.chartTitle, (_props_styles4 = props.styles) === null || _props_styles4 === void 0 ? void 0 : _props_styles4.chartTitle),\n svgTooltip: mergeClasses(funnelClassNames.svgTooltip, baseStyles.svgTooltip, (_props_styles5 = props.styles) === null || _props_styles5 === void 0 ? void 0 : _props_styles5.svgTooltip)\n };\n};\n"],"names":["__styles","mergeClasses","tokens","getChartTitleStyles","HighContrastSelector","funnelClassNames","root","chart","text","calloutContentRoot","chartTitle","svgTooltip","useStyles","Bt984gj","a9b677","Bqenvij","Bahqtrf","Be2twd7","Bhrd7zp","qhf8xq","fsow6f","mc9l5x","Bkecrkj","Bkfmm31","B2u0y6b","Bg96gwp","Bvjb7m6","jrapky","Bxms50k","d","m","useFunnelChartStyles","props","_props_styles","_props_styles1","_props_styles2","_props_styles3","_props_styles4","_props_styles5","className","baseStyles","styles"],"mappings":"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"}
@@ -19,11 +19,14 @@ _export(exports, {
19
19
  });
20
20
  const _react = require("@griffel/react");
21
21
  const _reacttheme = require("@fluentui/react-theme");
22
+ const _index = require("../../utilities/index");
22
23
  const funnelClassNames = {
23
24
  root: 'fui-funnel__root',
24
25
  chart: 'fui-funnel__chart',
25
26
  text: 'fui-funnel__text',
26
- calloutContentRoot: 'fui-funnel__callout-content-root'
27
+ calloutContentRoot: 'fui-funnel__callout-content-root',
28
+ chartTitle: 'fui-funnel__chartTitle',
29
+ svgTooltip: 'fui-funnel__svgTooltip'
27
30
  };
28
31
  /**
29
32
  * Base Styles
@@ -52,16 +55,25 @@ const funnelClassNames = {
52
55
  },
53
56
  calloutContentRoot: {
54
57
  maxWidth: '238px'
58
+ },
59
+ chartTitle: (0, _index.getChartTitleStyles)(),
60
+ svgTooltip: {
61
+ fill: _reacttheme.tokens.colorNeutralBackground1,
62
+ [_index.HighContrastSelector]: {
63
+ fill: 'Canvas'
64
+ }
55
65
  }
56
66
  });
57
67
  const useFunnelChartStyles = (props)=>{
58
- var _props_styles, _props_styles1, _props_styles2, _props_styles3;
68
+ var _props_styles, _props_styles1, _props_styles2, _props_styles3, _props_styles4, _props_styles5;
59
69
  const { className } = props;
60
70
  const baseStyles = useStyles();
61
71
  return {
62
72
  root: (0, _react.mergeClasses)(funnelClassNames.root, baseStyles.root, className, (_props_styles = props.styles) === null || _props_styles === void 0 ? void 0 : _props_styles.root),
63
73
  chart: (0, _react.mergeClasses)(funnelClassNames.chart, baseStyles.chart, (_props_styles1 = props.styles) === null || _props_styles1 === void 0 ? void 0 : _props_styles1.chart),
64
74
  text: (0, _react.mergeClasses)(funnelClassNames.text, baseStyles.text, (_props_styles2 = props.styles) === null || _props_styles2 === void 0 ? void 0 : _props_styles2.text),
65
- calloutContentRoot: (0, _react.mergeClasses)(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot)
75
+ calloutContentRoot: (0, _react.mergeClasses)(baseStyles.calloutContentRoot, (_props_styles3 = props.styles) === null || _props_styles3 === void 0 ? void 0 : _props_styles3.calloutContentRoot),
76
+ chartTitle: (0, _react.mergeClasses)(funnelClassNames.chartTitle, baseStyles.chartTitle, (_props_styles4 = props.styles) === null || _props_styles4 === void 0 ? void 0 : _props_styles4.chartTitle),
77
+ svgTooltip: (0, _react.mergeClasses)(funnelClassNames.svgTooltip, baseStyles.svgTooltip, (_props_styles5 = props.styles) === null || _props_styles5 === void 0 ? void 0 : _props_styles5.svgTooltip)
66
78
  };
67
79
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/FunnelChart/useFunnelChartStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { FunnelChartProps, FunnelChartStyles } from './index';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\n\n/**\n * @internal\n */\nexport const funnelClassNames: SlotClassNames<FunnelChartStyles> = {\n root: 'fui-funnel__root',\n chart: 'fui-funnel__chart',\n text: 'fui-funnel__text',\n calloutContentRoot: 'fui-funnel__callout-content-root',\n};\n\n/**\n * Base Styles\n */\nconst useStyles = makeStyles({\n root: {\n alignItems: 'center',\n width: '100%',\n height: '100%',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n fontWeight: tokens.fontWeightRegular,\n position: 'relative',\n textAlign: 'left',\n },\n chart: {\n display: 'block',\n width: '100%',\n height: '100%',\n },\n text: {\n pointerEvents: 'none',\n fontWeight: tokens.fontWeightSemibold,\n fill: tokens.colorNeutralForeground1,\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n },\n calloutContentRoot: {\n maxWidth: '238px',\n },\n});\n\n/**\n * Apply styling to the FunnelChart component\n */\nexport const useFunnelChartStyles = (props: FunnelChartProps): FunnelChartStyles => {\n const { className } = props;\n const baseStyles = useStyles();\n\n return {\n root: mergeClasses(funnelClassNames.root, baseStyles.root, className, props.styles?.root),\n chart: mergeClasses(funnelClassNames.chart, baseStyles.chart, props.styles?.chart),\n text: mergeClasses(funnelClassNames.text, baseStyles.text, props.styles?.text),\n calloutContentRoot: mergeClasses(baseStyles.calloutContentRoot, props.styles?.calloutContentRoot),\n };\n};\n"],"names":["makeStyles","mergeClasses","tokens","funnelClassNames","root","chart","text","calloutContentRoot","useStyles","alignItems","width","height","fontFamily","fontFamilyBase","fontSize","fontSizeBase300","fontWeight","fontWeightRegular","position","textAlign","display","pointerEvents","fontWeightSemibold","fill","colorNeutralForeground1","maxWidth","useFunnelChartStyles","props","className","baseStyles","styles"],"mappings":"AAAA;;;;;;;;;;;;IAUaG,gBAAAA;;;wBAyCAuB;eAAAA;;;uBAjD4B,iBAAiB;4BACnC,wBAAwB;AAOxC,yBAA4D;IACjEtB,MAAM;IACNC,OAAO;IACPC,MAAM;IACNC,oBAAoB;AACtB,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAYR,iBAAAA,EAAW;IAC3BI,MAAM;QACJK,YAAY;QACZC,OAAO;QACPC,QAAQ;QACRC,YAAYV,kBAAAA,CAAOW,cAAc;QACjCC,UAAUZ,kBAAAA,CAAOa,eAAe;QAChCC,YAAYd,kBAAAA,CAAOe,iBAAiB;QACpCC,UAAU;QACVC,WAAW;IACb;IACAd,OAAO;QACLe,SAAS;QACTV,OAAO;QACPC,QAAQ;IACV;IACAL,MAAM;QACJe,eAAe;QACfL,YAAYd,kBAAAA,CAAOoB,kBAAkB;QACrCC,MAAMrB,kBAAAA,CAAOsB,uBAAuB;QACpCZ,YAAYV,kBAAAA,CAAOW,cAAc;QACjCC,UAAUZ,kBAAAA,CAAOa,eAAe;IAClC;IACAR,oBAAoB;QAClBkB,UAAU;IACZ;AACF;AAKO,6BAA6B,CAACE;QAKqCA,eACRA,gBACHA,gBACKA;IAPlE,MAAM,EAAEC,SAAS,EAAE,GAAGD;IACtB,MAAME,aAAarB;IAEnB,OAAO;QACLJ,UAAMH,mBAAAA,EAAaE,iBAAiBC,IAAI,EAAEyB,WAAWzB,IAAI,EAAEwB,WAAAA,CAAWD,gBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAcvB,IAAI;QACxFC,OAAOJ,uBAAAA,EAAaE,iBAAiBE,KAAK,EAAEwB,WAAWxB,KAAK,EAAA,CAAEsB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAActB,KAAK;QACjFC,UAAML,mBAAAA,EAAaE,iBAAiBG,IAAI,EAAEuB,WAAWvB,IAAI,EAAA,CAAEqB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcrB,IAAI;QAC7EC,wBAAoBN,mBAAAA,EAAa4B,WAAWtB,kBAAkB,EAAA,CAAEoB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcpB,kBAAkB;IAClG;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/FunnelChart/useFunnelChartStyles.styles.ts"],"sourcesContent":["'use client';\n\nimport { GriffelStyle, makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { FunnelChartProps, FunnelChartStyles } from './index';\nimport type { SlotClassNames } from '@fluentui/react-utilities';\nimport { getChartTitleStyles, HighContrastSelector } from '../../utilities/index';\n\n/**\n * @internal\n */\nexport const funnelClassNames: SlotClassNames<FunnelChartStyles> = {\n root: 'fui-funnel__root',\n chart: 'fui-funnel__chart',\n text: 'fui-funnel__text',\n calloutContentRoot: 'fui-funnel__callout-content-root',\n chartTitle: 'fui-funnel__chartTitle',\n svgTooltip: 'fui-funnel__svgTooltip',\n};\n\n/**\n * Base Styles\n */\nconst useStyles = makeStyles({\n root: {\n alignItems: 'center',\n width: '100%',\n height: '100%',\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n fontWeight: tokens.fontWeightRegular,\n position: 'relative',\n textAlign: 'left',\n },\n chart: {\n display: 'block',\n width: '100%',\n height: '100%',\n },\n text: {\n pointerEvents: 'none',\n fontWeight: tokens.fontWeightSemibold,\n fill: tokens.colorNeutralForeground1,\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n },\n calloutContentRoot: {\n maxWidth: '238px',\n },\n chartTitle: getChartTitleStyles() as GriffelStyle,\n svgTooltip: {\n fill: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n fill: 'Canvas',\n },\n },\n});\n\n/**\n * Apply styling to the FunnelChart component\n */\nexport const useFunnelChartStyles = (props: FunnelChartProps): FunnelChartStyles => {\n const { className } = props;\n const baseStyles = useStyles();\n\n return {\n root: mergeClasses(funnelClassNames.root, baseStyles.root, className, props.styles?.root),\n chart: mergeClasses(funnelClassNames.chart, baseStyles.chart, props.styles?.chart),\n text: mergeClasses(funnelClassNames.text, baseStyles.text, props.styles?.text),\n calloutContentRoot: mergeClasses(baseStyles.calloutContentRoot, props.styles?.calloutContentRoot),\n chartTitle: mergeClasses(funnelClassNames.chartTitle, baseStyles.chartTitle, props.styles?.chartTitle),\n svgTooltip: mergeClasses(funnelClassNames.svgTooltip, baseStyles.svgTooltip, props.styles?.svgTooltip),\n };\n};\n"],"names":["makeStyles","mergeClasses","tokens","getChartTitleStyles","HighContrastSelector","funnelClassNames","root","chart","text","calloutContentRoot","chartTitle","svgTooltip","useStyles","alignItems","width","height","fontFamily","fontFamilyBase","fontSize","fontSizeBase300","fontWeight","fontWeightRegular","position","textAlign","display","pointerEvents","fontWeightSemibold","fill","colorNeutralForeground1","maxWidth","colorNeutralBackground1","useFunnelChartStyles","props","className","baseStyles","styles"],"mappings":"AAAA;;;;;;;;;;;;IAWaK,gBAAAA;;;wBAkDA0B;eAAAA;;;uBA3D0C,iBAAiB;4BACjD,wBAAwB;uBAGW,wBAAwB;AAK3E,yBAA4D;IACjEzB,MAAM;IACNC,OAAO;IACPC,MAAM;IACNC,oBAAoB;IACpBC,YAAY;IACZC,YAAY;AACd,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAYZ,iBAAAA,EAAW;IAC3BM,MAAM;QACJO,YAAY;QACZC,OAAO;QACPC,QAAQ;QACRC,YAAYd,kBAAAA,CAAOe,cAAc;QACjCC,UAAUhB,kBAAAA,CAAOiB,eAAe;QAChCC,YAAYlB,kBAAAA,CAAOmB,iBAAiB;QACpCC,UAAU;QACVC,WAAW;IACb;IACAhB,OAAO;QACLiB,SAAS;QACTV,OAAO;QACPC,QAAQ;IACV;IACAP,MAAM;QACJiB,eAAe;QACfL,YAAYlB,kBAAAA,CAAOwB,kBAAkB;QACrCC,MAAMzB,kBAAAA,CAAO0B,uBAAuB;QACpCZ,YAAYd,kBAAAA,CAAOe,cAAc;QACjCC,UAAUhB,kBAAAA,CAAOiB,eAAe;IAClC;IACAV,oBAAoB;QAClBoB,UAAU;IACZ;IACAnB,gBAAYP,0BAAAA;IACZQ,YAAY;QACVgB,MAAMzB,kBAAAA,CAAO4B,uBAAuB;QACpC,CAAC1B,2BAAAA,CAAqB,EAAE;YACtBuB,MAAM;QACR;IACF;AACF;AAKO,6BAA6B,CAACK;QAKqCA,eACRA,gBACHA,gBACKA,gBACaA,gBACAA;IAT/E,MAAM,EAAEC,SAAS,EAAE,GAAGD;IACtB,MAAME,aAAatB;IAEnB,OAAO;QACLN,MAAML,uBAAAA,EAAaI,iBAAiBC,IAAI,EAAE4B,WAAW5B,IAAI,EAAE2B,WAAAA,CAAWD,gBAAAA,MAAMG,MAAM,AAANA,MAAM,QAAZH,kBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,cAAc1B,IAAI;QACxFC,WAAON,mBAAAA,EAAaI,iBAAiBE,KAAK,EAAE2B,WAAW3B,KAAK,EAAA,CAAEyB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAczB,KAAK;QACjFC,UAAMP,mBAAAA,EAAaI,iBAAiBG,IAAI,EAAE0B,WAAW1B,IAAI,EAAA,CAAEwB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcxB,IAAI;QAC7EC,wBAAoBR,mBAAAA,EAAaiC,WAAWzB,kBAAkB,EAAA,CAAEuB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcvB,kBAAkB;QAChGC,gBAAYT,mBAAAA,EAAaI,iBAAiBK,UAAU,EAAEwB,WAAWxB,UAAU,EAAA,CAAEsB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAActB,UAAU;QACrGC,gBAAYV,mBAAAA,EAAaI,iBAAiBM,UAAU,EAAEuB,WAAWvB,UAAU,EAAA,CAAEqB,iBAAAA,MAAMG,MAAAA,AAAM,MAAA,QAAZH,mBAAAA,KAAAA,IAAAA,KAAAA,IAAAA,eAAcrB,UAAU;IACvG;AACF,EAAE"}
@@ -339,7 +339,7 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
339
339
  // eslint-disable-next-line @typescript-eslint/no-shadow
340
340
  const hoverXValue = 'Current value is ' + getChartValueLabel(props.chartValue, _minValue, _maxValue, props.chartValueFormat, true);
341
341
  // eslint-disable-next-line @typescript-eslint/no-shadow
342
- const hoverYValues = _segments.map((segment)=>{
342
+ const hoverYValues = _segments.filter((segment)=>_noLegendHighlighted() || _legendHighlighted(segment.legend)).map((segment)=>{
343
343
  const yValue = {
344
344
  legend: segment.legend,
345
345
  y: getSegmentLabel(segment, _minValue, _maxValue, props.variant),
@@ -513,13 +513,14 @@ const GaugeChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
513
513
  onMouseLeave: _handleMouseOut
514
514
  }, /*#__PURE__*/ _react.createElement("g", {
515
515
  transform: `translate(${_width / 2}, ${_height - (_margins.bottom + _legendsHeight)})`
516
- }, props.chartTitle && /*#__PURE__*/ _react.createElement("text", {
516
+ }, props.chartTitle && /*#__PURE__*/ _react.createElement(_index.ChartTitle, {
517
+ title: props.chartTitle,
517
518
  x: 0,
518
519
  y: -(_outerRadius + TITLE_OFFSET),
519
- textAnchor: "middle",
520
520
  className: classes.chartTitle,
521
- "aria-hidden": true
522
- }, props.chartTitle), !props.hideMinMax && /*#__PURE__*/ _react.createElement(_react.Fragment, null, /*#__PURE__*/ _react.createElement("text", {
521
+ titleStyles: props.titleStyles,
522
+ tooltipClassName: classes.svgTooltip
523
+ }), !props.hideMinMax && /*#__PURE__*/ _react.createElement(_react.Fragment, null, /*#__PURE__*/ _react.createElement("text", {
523
524
  x: (_isRTL ? 1 : -1) * (_outerRadius + LABEL_OFFSET),
524
525
  y: 0,
525
526
  textAnchor: "end",