@fluentui/react-charting 5.23.80 → 5.23.82

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 (62) hide show
  1. package/CHANGELOG.json +61 -1
  2. package/CHANGELOG.md +25 -2
  3. package/dist/react-charting.js +1 -1
  4. package/dist/react-charting.min.js +1 -1
  5. package/lib/components/AreaChart/AreaChart.base.d.ts +6 -0
  6. package/lib/components/AreaChart/AreaChart.base.js +192 -34
  7. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  8. package/lib/components/CommonComponents/CartesianChart.styles.js +15 -15
  9. package/lib/components/CommonComponents/CartesianChart.styles.js.map +1 -1
  10. package/lib/components/DeclarativeChart/DeclarativeChart.js +3 -0
  11. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  12. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +39 -20
  13. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  14. package/lib/components/DonutChart/Pie/Pie.styles.js +3 -3
  15. package/lib/components/DonutChart/Pie/Pie.styles.js.map +1 -1
  16. package/lib/components/GaugeChart/GaugeChart.styles.js +7 -7
  17. package/lib/components/GaugeChart/GaugeChart.styles.js.map +1 -1
  18. package/lib/components/PieChart/Arc/Arc.styles.js +2 -2
  19. package/lib/components/PieChart/Arc/Arc.styles.js.map +1 -1
  20. package/lib/components/SankeyChart/SankeyChart.styles.js +7 -7
  21. package/lib/components/SankeyChart/SankeyChart.styles.js.map +1 -1
  22. package/lib/utilities/ChartHoverCard/ChartHoverCard.styles.js +5 -5
  23. package/lib/utilities/ChartHoverCard/ChartHoverCard.styles.js.map +1 -1
  24. package/lib-amd/components/AreaChart/AreaChart.base.d.ts +6 -0
  25. package/lib-amd/components/AreaChart/AreaChart.base.js +192 -34
  26. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  27. package/lib-amd/components/CommonComponents/CartesianChart.styles.js +14 -14
  28. package/lib-amd/components/CommonComponents/CartesianChart.styles.js.map +1 -1
  29. package/lib-amd/components/DeclarativeChart/DeclarativeChart.js +3 -0
  30. package/lib-amd/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  31. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js +39 -20
  32. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  33. package/lib-amd/components/DonutChart/Pie/Pie.styles.js +2 -2
  34. package/lib-amd/components/DonutChart/Pie/Pie.styles.js.map +1 -1
  35. package/lib-amd/components/GaugeChart/GaugeChart.styles.js +6 -6
  36. package/lib-amd/components/GaugeChart/GaugeChart.styles.js.map +1 -1
  37. package/lib-amd/components/PieChart/Arc/Arc.styles.js +1 -1
  38. package/lib-amd/components/PieChart/Arc/Arc.styles.js.map +1 -1
  39. package/lib-amd/components/SankeyChart/SankeyChart.styles.js +6 -6
  40. package/lib-amd/components/SankeyChart/SankeyChart.styles.js.map +1 -1
  41. package/lib-amd/utilities/ChartHoverCard/ChartHoverCard.styles.js +4 -4
  42. package/lib-amd/utilities/ChartHoverCard/ChartHoverCard.styles.js.map +1 -1
  43. package/lib-commonjs/components/AreaChart/AreaChart.base.d.ts +6 -0
  44. package/lib-commonjs/components/AreaChart/AreaChart.base.js +192 -34
  45. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  46. package/lib-commonjs/components/CommonComponents/CartesianChart.styles.js +14 -14
  47. package/lib-commonjs/components/CommonComponents/CartesianChart.styles.js.map +1 -1
  48. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +3 -0
  49. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  50. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +39 -20
  51. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  52. package/lib-commonjs/components/DonutChart/Pie/Pie.styles.js +2 -2
  53. package/lib-commonjs/components/DonutChart/Pie/Pie.styles.js.map +1 -1
  54. package/lib-commonjs/components/GaugeChart/GaugeChart.styles.js +6 -6
  55. package/lib-commonjs/components/GaugeChart/GaugeChart.styles.js.map +1 -1
  56. package/lib-commonjs/components/PieChart/Arc/Arc.styles.js +1 -1
  57. package/lib-commonjs/components/PieChart/Arc/Arc.styles.js.map +1 -1
  58. package/lib-commonjs/components/SankeyChart/SankeyChart.styles.js +6 -6
  59. package/lib-commonjs/components/SankeyChart/SankeyChart.styles.js.map +1 -1
  60. package/lib-commonjs/utilities/ChartHoverCard/ChartHoverCard.styles.js +4 -4
  61. package/lib-commonjs/utilities/ChartHoverCard/ChartHoverCard.styles.js.map +1 -1
  62. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"DeclarativeChart.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/DeclarativeChart.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport * as React from 'react';\nimport { useTheme } from '@fluentui/react';\nimport { IRefObject } from '@fluentui/react/lib/Utilities';\nimport { DonutChart } from '../DonutChart/index';\nimport { VerticalStackedBarChart } from '../VerticalStackedBarChart/index';\nimport { decodeBase64Fields } from '@fluentui/chart-utilities';\nimport type { Data, PlotData, PlotlySchema, OutputChartType } from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDateArray,\n isNumberArray,\n mapFluentChart,\n sanitizeJson,\n} from '@fluentui/chart-utilities';\n\nimport {\n isMonthArray,\n correctYearMonth,\n transformPlotlyJsonToDonutProps,\n transformPlotlyJsonToVSBCProps,\n transformPlotlyJsonToScatterChartProps,\n transformPlotlyJsonToHorizontalBarWithAxisProps,\n transformPlotlyJsonToHeatmapProps,\n transformPlotlyJsonToSankeyProps,\n transformPlotlyJsonToGaugeProps,\n transformPlotlyJsonToGVBCProps,\n transformPlotlyJsonToVBCProps,\n projectPolarToCartesian,\n} from './PlotlySchemaAdapter';\nimport { LineChart, ILineChartProps } from '../LineChart/index';\nimport { HorizontalBarChartWithAxis } from '../HorizontalBarChartWithAxis/index';\nimport { AreaChart, IAreaChartProps } from '../AreaChart/index';\nimport { HeatMapChart } from '../HeatMapChart/index';\nimport { SankeyChart } from '../SankeyChart/SankeyChart';\nimport { GaugeChart } from '../GaugeChart/index';\nimport { GroupedVerticalBarChart } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChart } from '../VerticalBarChart/index';\nimport { IChart, IImageExportOptions } from '../../types/index';\nimport { withResponsiveContainer } from '../ResponsiveContainer/withResponsiveContainer';\n\nconst ResponsiveDonutChart = withResponsiveContainer(DonutChart);\nconst ResponsiveVerticalStackedBarChart = withResponsiveContainer(VerticalStackedBarChart);\nconst ResponsiveLineChart = withResponsiveContainer(LineChart);\nconst ResponsiveHorizontalBarChartWithAxis = withResponsiveContainer(HorizontalBarChartWithAxis);\nconst ResponsiveAreaChart = withResponsiveContainer(AreaChart);\nconst ResponsiveHeatMapChart = withResponsiveContainer(HeatMapChart);\nconst ResponsiveSankeyChart = withResponsiveContainer(SankeyChart);\nconst ResponsiveGaugeChart = withResponsiveContainer(GaugeChart);\nconst ResponsiveGroupedVerticalBarChart = withResponsiveContainer(GroupedVerticalBarChart);\nconst ResponsiveVerticalBarChart = withResponsiveContainer(VerticalBarChart);\n\n/**\n * DeclarativeChart schema.\n * {@docCategory DeclarativeChart}\n */\nexport interface Schema {\n /**\n * Plotly schema represented as JSON object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n plotlySchema: any;\n}\n\n/**\n * DeclarativeChart props.\n * {@docCategory DeclarativeChart}\n */\nexport interface DeclarativeChartProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * The schema representing the chart data, layout and configuration\n */\n chartSchema: Schema;\n\n /**\n * Callback when an event occurs\n */\n onSchemaChange?: (eventData: Schema) => void;\n\n /**\n * Optional callback to access the IDeclarativeChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IDeclarativeChart>;\n}\n\n/**\n * {@docCategory DeclarativeChart}\n */\nexport interface IDeclarativeChart {\n exportAsImage: (opts?: IImageExportOptions) => Promise<string>;\n}\n\nconst useColorMapping = () => {\n const colorMap = React.useRef(new Map<string, string>());\n return colorMap;\n};\n\n/**\n * DeclarativeChart component.\n * {@docCategory DeclarativeChart}\n */\nexport const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> = React.forwardRef<\n HTMLDivElement,\n DeclarativeChartProps\n>((props, forwardedRef) => {\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n const chart: OutputChartType = mapFluentChart(plotlySchema);\n if (!chart.isValid) {\n throw new Error(`Invalid chart schema: ${chart.errorMessage}`);\n }\n let plotlyInput = plotlySchema as PlotlySchema;\n try {\n plotlyInput = decodeBase64Fields(plotlyInput);\n } catch (error) {\n throw new Error(`Failed to decode plotly schema: ${error}`);\n }\n const plotlyInputWithValidData: PlotlySchema = {\n ...plotlyInput,\n data: chart.validTracesInfo!.map(trace => plotlyInput.data[trace[0]]),\n };\n\n let { selectedLegends } = plotlySchema;\n const colorMap = useColorMapping();\n const theme = useTheme();\n const isDarkTheme = theme?.isInverted ?? false;\n const chartRef = React.useRef<IChart>(null);\n\n if (!isArrayOrTypedArray(selectedLegends)) {\n selectedLegends = [];\n }\n\n const [activeLegends, setActiveLegends] = React.useState<string[]>(selectedLegends);\n const onActiveLegendsChange = (keys: string[]) => {\n setActiveLegends(keys);\n if (props.onSchemaChange) {\n props.onSchemaChange({ plotlySchema: { plotlyInput, selectedLegends: keys } });\n }\n };\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { selectedLegends } = plotlySchema;\n setActiveLegends(selectedLegends ?? []);\n }, [props.chartSchema]);\n\n const multiSelectLegendProps = {\n canSelectMultipleLegends: true,\n onChange: onActiveLegendsChange,\n selectedLegends: activeLegends,\n };\n\n const commonProps = {\n legendProps: multiSelectLegendProps,\n componentRef: chartRef,\n calloutProps: { layerProps: { eventBubblingEnabled: true } },\n };\n\n const renderLineArea = (plotlyData: Data[], isAreaChart: boolean): JSX.Element => {\n const isScatterMarkers = (plotlyData[0] as PlotData)?.mode === 'markers';\n const chartProps: ILineChartProps | IAreaChartProps = {\n ...transformPlotlyJsonToScatterChartProps(\n { data: plotlyData, layout: plotlyInput.layout },\n isAreaChart,\n colorMap,\n isDarkTheme,\n ),\n ...commonProps,\n };\n if (isAreaChart) {\n return <ResponsiveAreaChart {...chartProps} />;\n }\n return <ResponsiveLineChart {...chartProps} lineMode={isScatterMarkers ? 'scatter' : 'default'} />;\n };\n\n const checkAndRenderChart = (isAreaChart: boolean = false) => {\n let fallbackVSBC = false;\n const xValues = (plotlyInputWithValidData.data[0] as PlotData).x;\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXMonth = isMonthArray(xValues);\n if (isXDate || isXNumber) {\n return renderLineArea(plotlyInputWithValidData.data, isAreaChart);\n } else if (isXMonth) {\n const updatedData = plotlyInputWithValidData.data.map((dataPoint: PlotData) => ({\n ...dataPoint,\n x: correctYearMonth(dataPoint.x),\n }));\n return renderLineArea(updatedData, isAreaChart);\n }\n // Unsupported schema, render as VerticalStackedBarChart\n fallbackVSBC = true;\n return (\n <ResponsiveVerticalStackedBarChart\n {...transformPlotlyJsonToVSBCProps(plotlyInputWithValidData, colorMap, isDarkTheme, fallbackVSBC)}\n {...commonProps}\n />\n );\n };\n\n const exportAsImage = React.useCallback(\n (opts?: IImageExportOptions): Promise<string> => {\n return new Promise((resolve, reject) => {\n if (!chartRef.current || typeof chartRef.current.toImage !== 'function') {\n return reject(Error('Chart cannot be exported as image'));\n }\n\n chartRef.current\n .toImage({\n background: theme.semanticColors.bodyBackground,\n scale: 5,\n ...opts,\n })\n .then(resolve)\n .catch(reject);\n });\n },\n [theme],\n );\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n exportAsImage,\n }),\n [exportAsImage],\n );\n\n switch (chart.type) {\n case 'donut':\n return (\n <ResponsiveDonutChart\n {...transformPlotlyJsonToDonutProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'horizontalbar':\n return (\n <ResponsiveHorizontalBarChartWithAxis\n {...transformPlotlyJsonToHorizontalBarWithAxisProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'groupedverticalbar':\n return (\n <ResponsiveGroupedVerticalBarChart\n {...transformPlotlyJsonToGVBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'verticalstackedbar':\n return (\n <ResponsiveVerticalStackedBarChart\n {...transformPlotlyJsonToVSBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'heatmap':\n return (\n <ResponsiveHeatMapChart\n {...transformPlotlyJsonToHeatmapProps(plotlyInputWithValidData)}\n {...commonProps}\n legendProps={{}}\n />\n );\n case 'sankey':\n return (\n <ResponsiveSankeyChart\n {...transformPlotlyJsonToSankeyProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'gauge':\n return (\n <ResponsiveGaugeChart\n {...transformPlotlyJsonToGaugeProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'verticalbar':\n return (\n <ResponsiveVerticalBarChart\n {...transformPlotlyJsonToVBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'area':\n case 'line':\n case 'fallback':\n case 'scatterpolar':\n if (chart.type === 'scatterpolar') {\n const cartesianProjection = projectPolarToCartesian(plotlyInputWithValidData);\n plotlyInputWithValidData.data = cartesianProjection.data;\n }\n // Need recheck for area chart as we don't have ability to check for valid months in previous step\n const isAreaChart = plotlyInputWithValidData.data.some(\n (series: PlotData) => series.fill === 'tonexty' || series.fill === 'tozeroy' || !!series.stackgroup,\n );\n return checkAndRenderChart(isAreaChart);\n default:\n throw new Error(`Unsupported chart type :${plotlyInputWithValidData.data[0]?.type}`);\n }\n});\nDeclarativeChart.displayName = 'DeclarativeChart';\n"]}
1
+ {"version":3,"file":"DeclarativeChart.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/DeclarativeChart.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport * as React from 'react';\nimport { useTheme } from '@fluentui/react';\nimport { IRefObject } from '@fluentui/react/lib/Utilities';\nimport { DonutChart } from '../DonutChart/index';\nimport { VerticalStackedBarChart } from '../VerticalStackedBarChart/index';\nimport { decodeBase64Fields } from '@fluentui/chart-utilities';\nimport type { Data, PlotData, PlotlySchema, OutputChartType } from '@fluentui/chart-utilities';\nimport {\n isArrayOrTypedArray,\n isDateArray,\n isNumberArray,\n mapFluentChart,\n sanitizeJson,\n} from '@fluentui/chart-utilities';\n\nimport {\n isMonthArray,\n correctYearMonth,\n transformPlotlyJsonToDonutProps,\n transformPlotlyJsonToVSBCProps,\n transformPlotlyJsonToScatterChartProps,\n transformPlotlyJsonToHorizontalBarWithAxisProps,\n transformPlotlyJsonToHeatmapProps,\n transformPlotlyJsonToSankeyProps,\n transformPlotlyJsonToGaugeProps,\n transformPlotlyJsonToGVBCProps,\n transformPlotlyJsonToVBCProps,\n projectPolarToCartesian,\n} from './PlotlySchemaAdapter';\nimport { LineChart, ILineChartProps } from '../LineChart/index';\nimport { HorizontalBarChartWithAxis } from '../HorizontalBarChartWithAxis/index';\nimport { AreaChart, IAreaChartProps } from '../AreaChart/index';\nimport { HeatMapChart } from '../HeatMapChart/index';\nimport { SankeyChart } from '../SankeyChart/SankeyChart';\nimport { GaugeChart } from '../GaugeChart/index';\nimport { GroupedVerticalBarChart } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChart } from '../VerticalBarChart/index';\nimport { IChart, IImageExportOptions } from '../../types/index';\nimport { withResponsiveContainer } from '../ResponsiveContainer/withResponsiveContainer';\n\nconst ResponsiveDonutChart = withResponsiveContainer(DonutChart);\nconst ResponsiveVerticalStackedBarChart = withResponsiveContainer(VerticalStackedBarChart);\nconst ResponsiveLineChart = withResponsiveContainer(LineChart);\nconst ResponsiveHorizontalBarChartWithAxis = withResponsiveContainer(HorizontalBarChartWithAxis);\nconst ResponsiveAreaChart = withResponsiveContainer(AreaChart);\nconst ResponsiveHeatMapChart = withResponsiveContainer(HeatMapChart);\nconst ResponsiveSankeyChart = withResponsiveContainer(SankeyChart);\nconst ResponsiveGaugeChart = withResponsiveContainer(GaugeChart);\nconst ResponsiveGroupedVerticalBarChart = withResponsiveContainer(GroupedVerticalBarChart);\nconst ResponsiveVerticalBarChart = withResponsiveContainer(VerticalBarChart);\n\n/**\n * DeclarativeChart schema.\n * {@docCategory DeclarativeChart}\n */\nexport interface Schema {\n /**\n * Plotly schema represented as JSON object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n plotlySchema: any;\n}\n\n/**\n * DeclarativeChart props.\n * {@docCategory DeclarativeChart}\n */\nexport interface DeclarativeChartProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * The schema representing the chart data, layout and configuration\n */\n chartSchema: Schema;\n\n /**\n * Callback when an event occurs\n */\n onSchemaChange?: (eventData: Schema) => void;\n\n /**\n * Optional callback to access the IDeclarativeChart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject<IDeclarativeChart>;\n}\n\n/**\n * {@docCategory DeclarativeChart}\n */\nexport interface IDeclarativeChart {\n exportAsImage: (opts?: IImageExportOptions) => Promise<string>;\n}\n\nconst useColorMapping = () => {\n const colorMap = React.useRef(new Map<string, string>());\n return colorMap;\n};\n\n/**\n * DeclarativeChart component.\n * {@docCategory DeclarativeChart}\n */\nexport const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> = React.forwardRef<\n HTMLDivElement,\n DeclarativeChartProps\n>((props, forwardedRef) => {\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n const chart: OutputChartType = mapFluentChart(plotlySchema);\n if (!chart.isValid) {\n throw new Error(`Invalid chart schema: ${chart.errorMessage}`);\n }\n let plotlyInput = plotlySchema as PlotlySchema;\n try {\n plotlyInput = decodeBase64Fields(plotlyInput);\n } catch (error) {\n throw new Error(`Failed to decode plotly schema: ${error}`);\n }\n const plotlyInputWithValidData: PlotlySchema = {\n ...plotlyInput,\n data: chart.validTracesInfo!.map(trace => plotlyInput.data[trace[0]]),\n };\n\n let { selectedLegends } = plotlySchema;\n const colorMap = useColorMapping();\n const theme = useTheme();\n const isDarkTheme = theme?.isInverted ?? false;\n const chartRef = React.useRef<IChart>(null);\n\n if (!isArrayOrTypedArray(selectedLegends)) {\n selectedLegends = [];\n }\n\n const [activeLegends, setActiveLegends] = React.useState<string[]>(selectedLegends);\n const onActiveLegendsChange = (keys: string[]) => {\n setActiveLegends(keys);\n if (props.onSchemaChange) {\n props.onSchemaChange({ plotlySchema: { plotlyInput, selectedLegends: keys } });\n }\n };\n\n React.useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { plotlySchema } = sanitizeJson(props.chartSchema);\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { selectedLegends } = plotlySchema;\n setActiveLegends(selectedLegends ?? []);\n }, [props.chartSchema]);\n\n const multiSelectLegendProps = {\n canSelectMultipleLegends: true,\n onChange: onActiveLegendsChange,\n selectedLegends: activeLegends,\n };\n\n const commonProps = {\n legendProps: multiSelectLegendProps,\n componentRef: chartRef,\n calloutProps: { layerProps: { eventBubblingEnabled: true } },\n };\n\n const renderLineArea = (plotlyData: Data[], isAreaChart: boolean): JSX.Element => {\n const isScatterMarkers = (plotlyData[0] as PlotData)?.mode === 'markers';\n const chartProps: ILineChartProps | IAreaChartProps = {\n ...transformPlotlyJsonToScatterChartProps(\n { data: plotlyData, layout: plotlyInput.layout },\n isAreaChart,\n colorMap,\n isDarkTheme,\n ),\n ...commonProps,\n };\n if (isAreaChart) {\n return <ResponsiveAreaChart {...chartProps} />;\n }\n return <ResponsiveLineChart {...chartProps} lineMode={isScatterMarkers ? 'scatter' : 'default'} />;\n };\n\n const checkAndRenderChart = (isAreaChart: boolean = false) => {\n let fallbackVSBC = false;\n const xValues = (plotlyInputWithValidData.data[0] as PlotData).x;\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const isXMonth = isMonthArray(xValues);\n if (isXDate || isXNumber) {\n return renderLineArea(plotlyInputWithValidData.data, isAreaChart);\n } else if (isXMonth) {\n const updatedData = plotlyInputWithValidData.data.map((dataPoint: PlotData) => ({\n ...dataPoint,\n x: correctYearMonth(dataPoint.x),\n }));\n return renderLineArea(updatedData, isAreaChart);\n }\n // Unsupported schema, render as VerticalStackedBarChart\n fallbackVSBC = true;\n if (isAreaChart) {\n throw new Error('Fallback to VerticalStackedBarChart is not allowed for Area Charts.');\n }\n return (\n <ResponsiveVerticalStackedBarChart\n {...transformPlotlyJsonToVSBCProps(plotlyInputWithValidData, colorMap, isDarkTheme, fallbackVSBC)}\n {...commonProps}\n />\n );\n };\n\n const exportAsImage = React.useCallback(\n (opts?: IImageExportOptions): Promise<string> => {\n return new Promise((resolve, reject) => {\n if (!chartRef.current || typeof chartRef.current.toImage !== 'function') {\n return reject(Error('Chart cannot be exported as image'));\n }\n\n chartRef.current\n .toImage({\n background: theme.semanticColors.bodyBackground,\n scale: 5,\n ...opts,\n })\n .then(resolve)\n .catch(reject);\n });\n },\n [theme],\n );\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n exportAsImage,\n }),\n [exportAsImage],\n );\n\n switch (chart.type) {\n case 'donut':\n return (\n <ResponsiveDonutChart\n {...transformPlotlyJsonToDonutProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'horizontalbar':\n return (\n <ResponsiveHorizontalBarChartWithAxis\n {...transformPlotlyJsonToHorizontalBarWithAxisProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'groupedverticalbar':\n return (\n <ResponsiveGroupedVerticalBarChart\n {...transformPlotlyJsonToGVBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'verticalstackedbar':\n return (\n <ResponsiveVerticalStackedBarChart\n {...transformPlotlyJsonToVSBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'heatmap':\n return (\n <ResponsiveHeatMapChart\n {...transformPlotlyJsonToHeatmapProps(plotlyInputWithValidData)}\n {...commonProps}\n legendProps={{}}\n />\n );\n case 'sankey':\n return (\n <ResponsiveSankeyChart\n {...transformPlotlyJsonToSankeyProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'gauge':\n return (\n <ResponsiveGaugeChart\n {...transformPlotlyJsonToGaugeProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'verticalbar':\n return (\n <ResponsiveVerticalBarChart\n {...transformPlotlyJsonToVBCProps(plotlyInputWithValidData, colorMap, isDarkTheme)}\n {...commonProps}\n />\n );\n case 'area':\n case 'line':\n case 'fallback':\n case 'scatterpolar':\n if (chart.type === 'scatterpolar') {\n const cartesianProjection = projectPolarToCartesian(plotlyInputWithValidData);\n plotlyInputWithValidData.data = cartesianProjection.data;\n }\n // Need recheck for area chart as we don't have ability to check for valid months in previous step\n const isAreaChart = plotlyInputWithValidData.data.some(\n (series: PlotData) => series.fill === 'tonexty' || series.fill === 'tozeroy' || !!series.stackgroup,\n );\n return checkAndRenderChart(isAreaChart);\n default:\n throw new Error(`Unsupported chart type :${plotlyInputWithValidData.data[0]?.type}`);\n }\n});\nDeclarativeChart.displayName = 'DeclarativeChart';\n"]}
@@ -57,9 +57,6 @@ var isMonthArray = function (data) {
57
57
  return (0, chart_utilities_1.isArrayOfType)(data, isMonth);
58
58
  };
59
59
  exports.isMonthArray = isMonthArray;
60
- var getLegend = function (series, index) {
61
- return series.name || "Series ".concat(index + 1);
62
- };
63
60
  function getTitles(layout) {
64
61
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
65
62
  var titles = {
@@ -198,6 +195,7 @@ var transformPlotlyJsonToVSBCProps = function (input, colorMap, isDarkTheme, fal
198
195
  var mapXToDataPoints = {};
199
196
  var yMaxValue = 0;
200
197
  var secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);
198
+ var _d = getLegendProps(input.data, input.layout), legends = _d.legends, hideLegend = _d.hideLegend;
201
199
  input.data.forEach(function (series, index1) {
202
200
  var _a;
203
201
  (_a = series.x) === null || _a === void 0 ? void 0 : _a.forEach(function (x, index2) {
@@ -205,7 +203,7 @@ var transformPlotlyJsonToVSBCProps = function (input, colorMap, isDarkTheme, fal
205
203
  if (!mapXToDataPoints[x]) {
206
204
  mapXToDataPoints[x] = { xAxisPoint: x, chartData: [], lineData: [] };
207
205
  }
208
- var legend = getLegend(series, index1);
206
+ var legend = legends[index1];
209
207
  var yVal = (_b = (_a = series.y) === null || _a === void 0 ? void 0 : _a[index2]) !== null && _b !== void 0 ? _b : 0;
210
208
  if (series.type === 'bar') {
211
209
  var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
@@ -226,14 +224,15 @@ var transformPlotlyJsonToVSBCProps = function (input, colorMap, isDarkTheme, fal
226
224
  }
227
225
  });
228
226
  });
229
- var _d = getTitles(input.layout), chartTitle = _d.chartTitle, xAxisTitle = _d.xAxisTitle, yAxisTitle = _d.yAxisTitle;
230
- return tslib_1.__assign(tslib_1.__assign({ data: Object.values(mapXToDataPoints), width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, barWidth: 'auto', yMaxValue: yMaxValue, chartTitle: chartTitle, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle, mode: 'plotly' }, secondaryYAxisValues), { hideTickOverlap: true });
227
+ var _e = getTitles(input.layout), chartTitle = _e.chartTitle, xAxisTitle = _e.xAxisTitle, yAxisTitle = _e.yAxisTitle;
228
+ return tslib_1.__assign(tslib_1.__assign({ data: Object.values(mapXToDataPoints), width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, barWidth: 'auto', yMaxValue: yMaxValue, chartTitle: chartTitle, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle, mode: 'plotly' }, secondaryYAxisValues), { hideTickOverlap: true, hideLegend: hideLegend });
231
229
  };
232
230
  exports.transformPlotlyJsonToVSBCProps = transformPlotlyJsonToVSBCProps;
233
231
  var transformPlotlyJsonToGVBCProps = function (input, colorMap, isDarkTheme) {
234
232
  var _a, _b, _c;
235
233
  var mapXToDataPoints = {};
236
234
  var secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);
235
+ var _d = getLegendProps(input.data, input.layout), legends = _d.legends, hideLegend = _d.hideLegend;
237
236
  input.data.forEach(function (series, index1) {
238
237
  var _a;
239
238
  (_a = series.x) === null || _a === void 0 ? void 0 : _a.forEach(function (x, xIndex) {
@@ -242,7 +241,7 @@ var transformPlotlyJsonToGVBCProps = function (input, colorMap, isDarkTheme) {
242
241
  mapXToDataPoints[x] = { name: x.toString(), series: [] };
243
242
  }
244
243
  if (series.type === 'bar') {
245
- var legend = getLegend(series, index1);
244
+ var legend = legends[index1];
246
245
  var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
247
246
  mapXToDataPoints[x].series.push({
248
247
  key: legend,
@@ -255,13 +254,14 @@ var transformPlotlyJsonToGVBCProps = function (input, colorMap, isDarkTheme) {
255
254
  }
256
255
  });
257
256
  });
258
- var _d = getTitles(input.layout), chartTitle = _d.chartTitle, xAxisTitle = _d.xAxisTitle, yAxisTitle = _d.yAxisTitle;
259
- return tslib_1.__assign(tslib_1.__assign({ data: Object.values(mapXToDataPoints), width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, barwidth: 'auto', chartTitle: chartTitle, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle, mode: 'plotly' }, secondaryYAxisValues), { hideTickOverlap: true });
257
+ var _e = getTitles(input.layout), chartTitle = _e.chartTitle, xAxisTitle = _e.xAxisTitle, yAxisTitle = _e.yAxisTitle;
258
+ return tslib_1.__assign(tslib_1.__assign({ data: Object.values(mapXToDataPoints), width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, barwidth: 'auto', chartTitle: chartTitle, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle, mode: 'plotly' }, secondaryYAxisValues), { hideTickOverlap: true, hideLegend: hideLegend });
260
259
  };
261
260
  exports.transformPlotlyJsonToGVBCProps = transformPlotlyJsonToGVBCProps;
262
261
  var transformPlotlyJsonToVBCProps = function (input, colorMap, isDarkTheme) {
263
262
  var _a, _b, _c;
264
263
  var vbcData = [];
264
+ var _d = getLegendProps(input.data, input.layout), legends = _d.legends, hideLegend = _d.hideLegend;
265
265
  input.data.forEach(function (series, seriesIdx) {
266
266
  var _a, _b, _c;
267
267
  if (!series.x) {
@@ -286,7 +286,7 @@ var transformPlotlyJsonToVBCProps = function (input, colorMap, isDarkTheme) {
286
286
  return yVal;
287
287
  });
288
288
  xBins.forEach(function (bin, index) {
289
- var legend = getLegend(series, seriesIdx);
289
+ var legend = legends[seriesIdx];
290
290
  var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
291
291
  var yVal = calculateHistNorm(series.histnorm, y[index], total, isXString ? bin.length : getBinSize(bin));
292
292
  vbcData.push(tslib_1.__assign({ x: isXString ? bin.join(', ') : getBinCenter(bin), y: yVal, legend: legend, color: color }, (isXString
@@ -294,7 +294,7 @@ var transformPlotlyJsonToVBCProps = function (input, colorMap, isDarkTheme) {
294
294
  : { xAxisCalloutData: "[".concat(bin.x0, " - ").concat(bin.x1, ")") })));
295
295
  });
296
296
  });
297
- var _d = getTitles(input.layout), chartTitle = _d.chartTitle, xAxisTitle = _d.xAxisTitle, yAxisTitle = _d.yAxisTitle;
297
+ var _e = getTitles(input.layout), chartTitle = _e.chartTitle, xAxisTitle = _e.xAxisTitle, yAxisTitle = _e.yAxisTitle;
298
298
  return {
299
299
  data: vbcData,
300
300
  width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width,
@@ -306,6 +306,7 @@ var transformPlotlyJsonToVBCProps = function (input, colorMap, isDarkTheme) {
306
306
  mode: 'histogram',
307
307
  hideTickOverlap: true,
308
308
  maxBarWidth: 50,
309
+ hideLegend: hideLegend,
309
310
  };
310
311
  };
311
312
  exports.transformPlotlyJsonToVBCProps = transformPlotlyJsonToVBCProps;
@@ -313,12 +314,13 @@ var transformPlotlyJsonToScatterChartProps = function (input, isAreaChart, color
313
314
  var _a, _b, _c, _d, _e, _f;
314
315
  var secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, isAreaChart ? 0 : undefined, isAreaChart ? 0 : undefined);
315
316
  var mode = 'tonexty';
317
+ var _g = getLegendProps(input.data, input.layout), legends = _g.legends, hideLegend = _g.hideLegend;
316
318
  var chartData = input.data.map(function (series, index) {
317
319
  var xValues = series.x;
318
320
  var isString = typeof xValues[0] === 'string';
319
321
  var isXDate = (0, chart_utilities_1.isDateArray)(xValues);
320
322
  var isXNumber = (0, chart_utilities_1.isNumberArray)(xValues);
321
- var legend = getLegend(series, index);
323
+ var legend = legends[index];
322
324
  var lineColor = (0, exports.getColor)(legend, colorMap, isDarkTheme);
323
325
  mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';
324
326
  var lineOptions = getLineOptions(series.line);
@@ -332,31 +334,31 @@ var transformPlotlyJsonToScatterChartProps = function (input, isAreaChart, color
332
334
  }), color: lineColor }, (lineOptions ? { lineOptions: lineOptions } : {})), { useSecondaryYScale: usesSecondaryYScale(series) });
333
335
  });
334
336
  var yMinMaxValues = (0, utilities_1.findNumericMinMaxOfY)(chartData);
335
- var _g = getTitles(input.layout), chartTitle = _g.chartTitle, xAxisTitle = _g.xAxisTitle, yAxisTitle = _g.yAxisTitle;
337
+ var _h = getTitles(input.layout), chartTitle = _h.chartTitle, xAxisTitle = _h.xAxisTitle, yAxisTitle = _h.yAxisTitle;
336
338
  var chartProps = {
337
339
  chartTitle: chartTitle,
338
340
  lineChartData: chartData,
339
341
  };
340
342
  if (isAreaChart) {
341
- return tslib_1.__assign(tslib_1.__assign({ data: chartProps, supportNegativeData: true, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle }, secondaryYAxisValues), { mode: mode, width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, hideTickOverlap: true });
343
+ return tslib_1.__assign(tslib_1.__assign({ data: chartProps, supportNegativeData: true, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle }, secondaryYAxisValues), { mode: mode, width: (_a = input.layout) === null || _a === void 0 ? void 0 : _a.width, height: (_c = (_b = input.layout) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 350, hideTickOverlap: true, hideLegend: hideLegend });
342
344
  }
343
345
  else {
344
- return tslib_1.__assign(tslib_1.__assign({ data: chartProps, supportNegativeData: true, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle }, secondaryYAxisValues), { roundedTicks: true, yMinValue: yMinMaxValues.startValue, yMaxValue: yMinMaxValues.endValue, width: (_d = input.layout) === null || _d === void 0 ? void 0 : _d.width, height: (_f = (_e = input.layout) === null || _e === void 0 ? void 0 : _e.height) !== null && _f !== void 0 ? _f : 350, hideTickOverlap: true, enableReflow: false });
346
+ return tslib_1.__assign(tslib_1.__assign({ data: chartProps, supportNegativeData: true, xAxisTitle: xAxisTitle, yAxisTitle: yAxisTitle }, secondaryYAxisValues), { roundedTicks: true, yMinValue: yMinMaxValues.startValue, yMaxValue: yMinMaxValues.endValue, width: (_d = input.layout) === null || _d === void 0 ? void 0 : _d.width, height: (_f = (_e = input.layout) === null || _e === void 0 ? void 0 : _e.height) !== null && _f !== void 0 ? _f : 350, hideTickOverlap: true, enableReflow: false, hideLegend: hideLegend });
345
347
  }
346
348
  };
347
349
  exports.transformPlotlyJsonToScatterChartProps = transformPlotlyJsonToScatterChartProps;
348
350
  var transformPlotlyJsonToHorizontalBarWithAxisProps = function (input, colorMap, isDarkTheme) {
349
351
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
352
+ var _s = getLegendProps(input.data, input.layout), legends = _s.legends, hideLegend = _s.hideLegend;
350
353
  var chartData = input.data
351
354
  .map(function (series, index) {
355
+ var legend = legends[index];
356
+ var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
352
357
  return series.y.map(function (yValue, i) {
353
- var _a;
354
- var legendName = (_a = series.name) !== null && _a !== void 0 ? _a : yValue;
355
- var color = (0, exports.getColor)(legendName, colorMap, isDarkTheme);
356
358
  return {
357
359
  x: series.x[i],
358
360
  y: yValue,
359
- legend: legendName,
361
+ legend: legend,
360
362
  color: color,
361
363
  };
362
364
  });
@@ -376,7 +378,7 @@ var transformPlotlyJsonToHorizontalBarWithAxisProps = function (input, colorMap,
376
378
  var scalingFactor = 0.01;
377
379
  var gapFactor = 1 / (1 + scalingFactor * numberOfBars);
378
380
  var barHeight = availableHeight / (numberOfBars * (1 + gapFactor));
379
- var _s = getTitles(input.layout), chartTitle = _s.chartTitle, xAxisTitle = _s.xAxisTitle, yAxisTitle = _s.yAxisTitle;
381
+ var _t = getTitles(input.layout), chartTitle = _t.chartTitle, xAxisTitle = _t.xAxisTitle, yAxisTitle = _t.yAxisTitle;
380
382
  return {
381
383
  data: chartData,
382
384
  chartTitle: chartTitle,
@@ -390,6 +392,7 @@ var transformPlotlyJsonToHorizontalBarWithAxisProps = function (input, colorMap,
390
392
  height: chartHeight,
391
393
  width: (_r = input.layout) === null || _r === void 0 ? void 0 : _r.width,
392
394
  hideTickOverlap: true,
395
+ hideLegend: hideLegend,
393
396
  };
394
397
  };
395
398
  exports.transformPlotlyJsonToHorizontalBarWithAxisProps = transformPlotlyJsonToHorizontalBarWithAxisProps;
@@ -780,4 +783,20 @@ var precisionRound = function (value, precision) {
780
783
  var factor = Math.pow(10, precision);
781
784
  return Math.round(value * factor) / factor;
782
785
  };
786
+ var getLegendProps = function (data, layout) {
787
+ var legends = [];
788
+ if (data.length === 1) {
789
+ legends.push(data[0].name || '');
790
+ }
791
+ else {
792
+ data.forEach(function (series, index) {
793
+ legends.push(series.name || "Series ".concat(index + 1));
794
+ });
795
+ }
796
+ var hideLegends = data.every(function (series) { return series.showlegend === false; });
797
+ return {
798
+ legends: legends,
799
+ hideLegend: (layout === null || layout === void 0 ? void 0 : layout.showlegend) === false ? true : hideLegends,
800
+ };
801
+ };
783
802
  //# sourceMappingURL=PlotlySchemaAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlotlySchemaAdapter.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/PlotlySchemaAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { IDonutChartProps } from '../DonutChart/index';\nimport {\n IChartDataPoint,\n IChartProps,\n IHorizontalBarChartWithAxisDataPoint,\n ILineChartPoints,\n IVerticalStackedChartProps,\n IHeatMapChartData,\n IHeatMapChartDataPoint,\n IGroupedVerticalBarChartData,\n IVerticalBarChartDataPoint,\n ISankeyChartData,\n ILineChartLineOptions,\n} from '../../types/IDataPoint';\nimport { ISankeyChartProps } from '../SankeyChart/index';\nimport { IVerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { IHorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { ILineChartProps } from '../LineChart/index';\nimport { IAreaChartProps } from '../AreaChart/index';\nimport { IHeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartVariant, IGaugeChartProps, IGaugeChartSegment } from '../GaugeChart/index';\nimport { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { IVerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isLineData,\n} from '@fluentui/chart-utilities';\nimport { timeParse } from 'd3-time-format';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface ISecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst isMonth = (possiblyMonthValue: any): boolean => {\n const parseFullMonth = timeParse('%B');\n const parseShortMonth = timeParse('%b');\n return parseFullMonth(possiblyMonthValue) !== null || parseShortMonth(possiblyMonthValue) !== null;\n};\n\nexport const isMonthArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isMonth);\n};\n\nconst getLegend = (series: Partial<PlotData>, index: number): string => {\n return series.name || `Series ${index + 1}`;\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): ISecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series)) {\n containsSecondaryYAxis = true;\n\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IDonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, IChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): IVerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: IVerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: x, chartData: [], lineData: [] };\n }\n const legend: string = getLegend(series, index1);\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || isLineData(series) || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, IGroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, xIndex: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n\n if (series.type === 'bar') {\n const legend: string = getLegend(series, index1);\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[xIndex] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barwidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IVerticalBarChartProps => {\n const vbcData: IVerticalBarChartDataPoint[] = [];\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = getLegend(series, seriesIdx);\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n supportNegativeData: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'histogram',\n hideTickOverlap: true,\n maxBarWidth: 50,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): ILineChartProps | IAreaChartProps => {\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const chartData: ILineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = getLegend(series, index);\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n } as ILineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: IChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n } as IAreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n } as ILineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IHorizontalBarChartWithAxisProps => {\n const chartData: IHorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const legendName = series.name ?? yValue;\n const color = getColor(legendName, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: legendName,\n color,\n } as IHorizontalBarChartWithAxisDataPoint;\n });\n })\n .reverse()\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfBars = input.data.reduce((total: number, item: PlotData) => {\n return total + (item.y?.length || 0);\n }, 0);\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfBars);\n const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): IHeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: IHeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: IHeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): ISankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as ISankeyChartData;\n\n const styles: ISankeyChartProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n },\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): IGaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles: IGaugeChartProps['styles'] = {\n sublabel: {\n fill: sublabelColor,\n },\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n styles,\n variant: firstData.gauge?.steps?.length ? GaugeChartVariant.MultipleSegments : GaugeChartVariant.SingleSegment,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series: PlotData = input.data[sindex] as PlotData;\n series.x = [];\n series.y = [];\n for (let ptindex = 0; ptindex < series.r.length; ptindex++) {\n const thetaRad = ((series.theta[ptindex] as number) * Math.PI) / 180;\n const radius = series.r[ptindex] as number;\n series.x[ptindex] = radius * Math.cos(thetaRad);\n series.y[ptindex] = radius * Math.sin(thetaRad);\n }\n projection.data[sindex] = series;\n }\n\n return projection;\n};\n\nfunction isPlainObject(obj: any) {\n if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): ILineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: ILineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(getPrecision(minVal), getPrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\n};\n"]}
1
+ {"version":3,"file":"PlotlySchemaAdapter.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/PlotlySchemaAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport {\n bin as d3Bin,\n extent as d3Extent,\n sum as d3Sum,\n min as d3Min,\n max as d3Max,\n range as d3Range,\n Bin,\n} from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { IDonutChartProps } from '../DonutChart/index';\nimport {\n IChartDataPoint,\n IChartProps,\n IHorizontalBarChartWithAxisDataPoint,\n ILineChartPoints,\n IVerticalStackedChartProps,\n IHeatMapChartData,\n IHeatMapChartDataPoint,\n IGroupedVerticalBarChartData,\n IVerticalBarChartDataPoint,\n ISankeyChartData,\n ILineChartLineOptions,\n} from '../../types/IDataPoint';\nimport { ISankeyChartProps } from '../SankeyChart/index';\nimport { IVerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { IHorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { ILineChartProps } from '../LineChart/index';\nimport { IAreaChartProps } from '../AreaChart/index';\nimport { IHeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartVariant, IGaugeChartProps, IGaugeChartSegment } from '../GaugeChart/index';\nimport { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { IVerticalBarChartProps } from '../VerticalBarChart/index';\nimport { findNumericMinMaxOfY } from '../../utilities/utilities';\nimport type {\n Datum,\n Layout,\n PlotlySchema,\n PieData,\n PlotData,\n SankeyData,\n ScatterLine,\n TypedArray,\n Data,\n} from '@fluentui/chart-utilities';\nimport {\n isArrayOfType,\n isArrayOrTypedArray,\n isDate,\n isDateArray,\n isNumberArray,\n isLineData,\n} from '@fluentui/chart-utilities';\nimport { timeParse } from 'd3-time-format';\nimport { curveCardinal as d3CurveCardinal } from 'd3-shape';\n\ninterface ISecondaryYAxisValues {\n secondaryYAxistitle?: string;\n secondaryYScaleOptions?: { yMinValue?: number; yMaxValue?: number };\n}\n\nconst dashOptions = {\n dot: {\n strokeDasharray: '1, 5',\n strokeLinecap: 'round',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dash: {\n strokeDasharray: '5, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdash: {\n strokeDasharray: '10, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n dashdot: {\n strokeDasharray: '5, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n longdashdot: {\n strokeDasharray: '10, 5, 1, 5',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n solid: {\n strokeDasharray: '0',\n strokeLinecap: 'butt',\n strokeWidth: '2',\n lineBorderWidth: '4',\n },\n} as const;\n\nconst isMonth = (possiblyMonthValue: any): boolean => {\n const parseFullMonth = timeParse('%B');\n const parseShortMonth = timeParse('%b');\n return parseFullMonth(possiblyMonthValue) !== null || parseShortMonth(possiblyMonthValue) !== null;\n};\n\nexport const isMonthArray = (data: Datum[] | Datum[][] | TypedArray): boolean => {\n return isArrayOfType(data, isMonth);\n};\n\nfunction getTitles(layout: Partial<Layout> | undefined) {\n const titles = {\n chartTitle: typeof layout?.title === 'string' ? layout.title : layout?.title?.text ?? '',\n xAxisTitle: typeof layout?.xaxis?.title === 'string' ? layout?.xaxis?.title : layout?.xaxis?.title?.text ?? '',\n yAxisTitle: typeof layout?.yaxis?.title === 'string' ? layout?.yaxis?.title : layout?.yaxis?.title?.text ?? '',\n };\n return titles;\n}\n\nexport const correctYearMonth = (xValues: Datum[] | Datum[][] | TypedArray): any[] => {\n const presentYear = new Date().getFullYear();\n if (xValues.length > 0 && Array.isArray(xValues[0])) {\n throw new Error('updateXValues:: 2D array not supported');\n }\n const dates = (xValues as Datum[]).map(possiblyMonthValue => {\n const parsedDate = `${possiblyMonthValue} 01, ${presentYear}`;\n return isDate(parsedDate) ? new Date(parsedDate) : null;\n });\n for (let i = dates.length - 1; i > 0; i--) {\n const currentMonth = dates[i]!.getMonth();\n const previousMonth = dates[i - 1]!.getMonth();\n const currentYear = dates[i]!.getFullYear();\n const previousYear = dates[i - 1]!.getFullYear();\n if (previousMonth >= currentMonth) {\n dates[i - 1]!.setFullYear(dates[i]!.getFullYear() - 1);\n } else if (previousYear > currentYear) {\n dates[i - 1]!.setFullYear(currentYear);\n }\n }\n xValues = (xValues as Datum[]).map((month, index) => {\n return `${month} 01, ${dates[index]!.getFullYear()}`;\n });\n return xValues;\n};\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nconst usesSecondaryYScale = (series: Partial<PlotData>): boolean => {\n return series.yaxis === 'y2';\n};\n\nconst getSecondaryYAxisValues = (\n data: Data[],\n layout: Partial<Layout> | undefined,\n maxAllowedMinY?: number,\n minAllowedMaxY?: number,\n): ISecondaryYAxisValues => {\n let containsSecondaryYAxis = false;\n let yMinValue: number | undefined;\n let yMaxValue: number | undefined;\n\n data.forEach((series: Partial<PlotData>) => {\n if (usesSecondaryYScale(series)) {\n containsSecondaryYAxis = true;\n\n const yValues = series.y as number[];\n if (yValues) {\n yMinValue = Math.min(...yValues);\n yMaxValue = Math.max(...yValues);\n }\n }\n });\n\n if (!containsSecondaryYAxis) {\n return {};\n }\n\n if (typeof yMinValue === 'number' && typeof maxAllowedMinY === 'number') {\n yMinValue = Math.min(yMinValue, maxAllowedMinY);\n }\n if (typeof yMaxValue === 'number' && typeof minAllowedMaxY === 'number') {\n yMaxValue = Math.max(yMaxValue, minAllowedMaxY);\n }\n if (layout?.yaxis2?.range) {\n yMinValue = layout.yaxis2.range[0];\n yMaxValue = layout.yaxis2.range[1];\n }\n\n return {\n secondaryYAxistitle:\n typeof layout?.yaxis2?.title === 'string'\n ? layout.yaxis2.title\n : typeof layout?.yaxis2?.title?.text === 'string'\n ? layout.yaxis2.title.text\n : undefined,\n secondaryYScaleOptions: {\n yMinValue,\n yMaxValue,\n },\n };\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IDonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, IChartDataPoint> = {};\n firstData.labels?.forEach((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n //ToDo how to handle string data?\n const value = typeof firstData.values?.[index] === 'number' ? (firstData.values[index] as number) : 1;\n\n if (!mapLegendToDataPoint[label]) {\n mapLegendToDataPoint[label] = {\n legend: label,\n data: value,\n color,\n };\n } else {\n mapLegendToDataPoint[label].data! += value;\n }\n });\n\n const width: number = input.layout?.width ?? 440;\n const height: number = input.layout?.height ?? 220;\n const hideLabels: boolean = firstData.textinfo\n ? !['value', 'percent', 'label+percent'].includes(firstData.textinfo)\n : false;\n const donutMarginHorizontal: number = hideLabels ? 0 : 80;\n const donutMarginVertical: number = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n chartData: Object.values(mapLegendToDataPoint),\n },\n hideLegend: input.layout?.showlegend === false ? true : false,\n width: input.layout?.width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? ['percent', 'label+percent'].includes(firstData.textinfo) : true,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n fallbackVSBC?: boolean,\n): IVerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: IVerticalStackedChartProps } = {};\n let yMaxValue = 0;\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: x, chartData: [], lineData: [] };\n }\n const legend: string = legends[index1];\n const yVal: number = (series.y?.[index2] as number) ?? 0;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: yVal,\n color,\n });\n yMaxValue = Math.max(yMaxValue, yVal);\n } else if (series.type === 'scatter' || isLineData(series) || !!fallbackVSBC) {\n const color = getColor(legend, colorMap, isDarkTheme);\n const lineOptions = getLineOptions(series.line);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: yVal,\n color,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n if (!usesSecondaryYScale(series)) {\n yMaxValue = Math.max(yMaxValue, yVal);\n }\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barWidth: 'auto',\n yMaxValue,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n hideLegend,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, IGroupedVerticalBarChartData> = {};\n const secondaryYAxisValues = getSecondaryYAxisValues(input.data, input.layout, 0, 0);\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n\n input.data.forEach((series: PlotData, index1: number) => {\n (series.x as Datum[])?.forEach((x: string | number, xIndex: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n\n if (series.type === 'bar') {\n const legend: string = legends[index1];\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: (series.y?.[xIndex] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n useSecondaryYScale: usesSecondaryYScale(series),\n });\n }\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: Object.values(mapXToDataPoints),\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n barwidth: 'auto',\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n ...secondaryYAxisValues,\n hideTickOverlap: true,\n hideLegend,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IVerticalBarChartProps => {\n const vbcData: IVerticalBarChartDataPoint[] = [];\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n\n input.data.forEach((series: Partial<PlotData>, seriesIdx: number) => {\n if (!series.x) {\n return;\n }\n\n const isXString = isStringArray(series.x);\n // TODO: In case of a single bin, add an empty bin of the same size to prevent the\n // default bar width from being used and ensure the bar spans the full intended range.\n const xBins = createBins(series.x, series.xbins?.start, series.xbins?.end, series.xbins?.size);\n const yBins: number[][] = xBins.map(() => []);\n let total = 0;\n\n series.x.forEach((xVal, index) => {\n const binIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n if (binIdx !== -1) {\n yBins[binIdx].push((series.y?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const y = yBins.map(bin => {\n const yVal = calculateHistFunc(series.histfunc, bin);\n total += yVal;\n return yVal;\n });\n\n xBins.forEach((bin, index) => {\n const legend: string = legends[seriesIdx];\n const color: string = getColor(legend, colorMap, isDarkTheme);\n const yVal = calculateHistNorm(\n series.histnorm,\n y[index],\n total,\n isXString ? bin.length : getBinSize(bin as Bin<number, number>),\n );\n\n vbcData.push({\n x: isXString ? bin.join(', ') : getBinCenter(bin as Bin<number, number>),\n y: yVal,\n legend,\n color,\n ...(isXString\n ? {}\n : { xAxisCalloutData: `[${(bin as Bin<number, number>).x0} - ${(bin as Bin<number, number>).x1})` }),\n });\n });\n });\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: vbcData,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n supportNegativeData: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'histogram',\n hideTickOverlap: true,\n maxBarWidth: 50,\n hideLegend,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): ILineChartProps | IAreaChartProps => {\n const secondaryYAxisValues = getSecondaryYAxisValues(\n input.data,\n input.layout,\n isAreaChart ? 0 : undefined,\n isAreaChart ? 0 : undefined,\n );\n let mode: string = 'tonexty';\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n const chartData: ILineChartPoints[] = input.data.map((series: PlotData, index: number) => {\n const xValues = series.x as Datum[];\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend: string = legends[index];\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n mode = series.fill === 'tozeroy' ? 'tozeroy' : 'tonexty';\n const lineOptions = getLineOptions(series.line);\n\n return {\n legend,\n data: xValues.map((x, i: number) => ({\n x: isString ? (isXDate ? new Date(x as string) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n ...(Array.isArray(series.marker?.size)\n ? { markerSize: series.marker.size[i] }\n : typeof series.marker?.size === 'number'\n ? { markerSize: series.marker.size }\n : {}),\n })),\n color: lineColor,\n ...(lineOptions ? { lineOptions } : {}),\n useSecondaryYScale: usesSecondaryYScale(series),\n } as ILineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: IChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n hideLegend,\n } as IAreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n ...secondaryYAxisValues,\n roundedTicks: true,\n yMinValue: yMinMaxValues.startValue,\n yMaxValue: yMinMaxValues.endValue,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n enableReflow: false,\n hideLegend,\n } as ILineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IHorizontalBarChartWithAxisProps => {\n const { legends, hideLegend } = getLegendProps(input.data, input.layout);\n const chartData: IHorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n const legend = legends[index];\n const color = getColor(legend, colorMap, isDarkTheme);\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n return {\n x: series.x[i],\n y: yValue,\n legend,\n color,\n } as IHorizontalBarChartWithAxisDataPoint;\n });\n })\n .reverse()\n .flat()\n //reversing the order to invert the Y bars order as required by plotly.\n .reverse();\n\n const chartHeight: number = input.layout?.height ?? 450;\n const margin: number = input.layout?.margin?.l ?? 0;\n const padding: number = input.layout?.margin?.pad ?? 0;\n const availableHeight: number = chartHeight - margin - padding;\n const numberOfBars = input.data.reduce((total: number, item: PlotData) => {\n return total + (item.y?.length || 0);\n }, 0);\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfBars);\n const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: chartData,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle:\n typeof input.layout?.yaxis2?.title === 'string'\n ? input.layout?.yaxis2?.title\n : input.layout?.yaxis2?.title?.text || '',\n barHeight,\n showYAxisLables: true,\n height: chartHeight,\n width: input.layout?.width,\n hideTickOverlap: true,\n hideLegend,\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (input: PlotlySchema): IHeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: IHeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n if (firstData.type === 'histogram2d') {\n const isXString = isStringArray(firstData.x);\n const isYString = isStringArray(firstData.y);\n const xBins = createBins(firstData.x, firstData.xbins?.start, firstData.xbins?.end, firstData.xbins?.size);\n const yBins = createBins(firstData.y, firstData.ybins?.start, firstData.ybins?.end, firstData.ybins?.size);\n const zBins: number[][][] = yBins.map(() => xBins.map(() => []));\n let total = 0;\n\n firstData.x?.forEach((xVal, index) => {\n const xBinIdx = findBinIndex(xBins, xVal as string | number | null, isXString);\n const yBinIdx = findBinIndex(yBins, firstData.y?.[index] as string | number | null | undefined, isYString);\n if (xBinIdx !== -1 && yBinIdx !== -1) {\n zBins[yBinIdx][xBinIdx].push((firstData.z?.[index] as number | null | undefined) ?? 1);\n }\n });\n\n const z = zBins.map(row => {\n return row.map(bin => {\n const zVal = calculateHistFunc(firstData.histfunc, bin);\n total += zVal;\n return zVal;\n });\n });\n\n xBins.forEach((xBin, xIdx) => {\n yBins.forEach((yBin, yIdx) => {\n const zVal = calculateHistNorm(\n firstData.histnorm,\n z[yIdx][xIdx],\n total,\n isXString ? xBin.length : getBinSize(xBin as Bin<number, number>),\n isYString ? yBin.length : getBinSize(yBin as Bin<number, number>),\n );\n\n heatmapDataPoints.push({\n x: isXString ? xBin.join(', ') : getBinCenter(xBin as Bin<number, number>),\n y: isYString ? yBin.join(', ') : getBinCenter(yBin as Bin<number, number>),\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n } else {\n (firstData.x as Datum[])?.forEach((xVal, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = (firstData.z as number[][])?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: input.layout?.xaxis?.type === 'date' ? (xVal as Date) : xVal ?? 0,\n y: input.layout?.yaxis?.type === 'date' ? (yVal as Date) : yVal,\n value: zVal,\n rectText: zVal,\n });\n\n if (typeof zVal === 'number') {\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n }\n });\n });\n }\n\n const heatmapData: IHeatMapChartData = {\n legend: firstData.name ?? '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Initialize domain and range to default values\n const defaultDomain = [zMin, (zMax + zMin) / 2, zMax];\n const defaultRange = [\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color2),\n getColorFromToken(DataVizPalette.color3),\n ];\n const domainValuesForColorScale: number[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[0] * (zMax - zMin) + zMin)\n : defaultDomain;\n\n const rangeValuesForColorScale: string[] = Array.isArray(firstData.colorscale)\n ? (firstData.colorscale as Array<[number, string]>).map(arr => arr[1])\n : defaultRange;\n\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n showYAxisLables: true,\n chartTitle,\n xAxisTitle,\n yAxisTitle,\n sortOrder: 'none',\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): ISankeyChartProps => {\n const { link, node } = input.data[0] as SankeyData;\n const validLinks = (link?.value ?? [])\n .map((val: number, index: number) => ({\n value: val,\n source: link?.source![index],\n target: link?.target![index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source >= 0 && x.target >= 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label?.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n } as ISankeyChartData;\n\n const styles: ISankeyChartProps['styles'] = {\n root: {\n ...(input.layout?.font?.size ? { fontSize: input.layout.font?.size } : {}),\n },\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n data: {\n chartTitle,\n SankeyChartData: sankeyChartData,\n },\n width: input.layout?.width,\n height: input.layout?.height ?? 468,\n styles,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGaugeChartProps => {\n const firstData = input.data[0] as PlotData;\n\n const segments = firstData.gauge?.steps?.length\n ? firstData.gauge.steps.map((step: any, index: number): IGaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n })\n : [\n {\n legend: 'Current',\n size: firstData.value ?? 0 - (firstData.gauge?.axis?.range?.[0] ?? 0),\n color: getColor('Current', colorMap, isDarkTheme),\n },\n {\n legend: 'Target',\n size: (firstData.gauge?.axis?.range?.[1] ?? 100) - (firstData.value ?? 0),\n color: DataVizPalette.disabled,\n },\n ];\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (firstData.delta?.reference) {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const color = getColorFromToken(DataVizPalette.success, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const color = getColorFromToken(DataVizPalette.error, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles: IGaugeChartProps['styles'] = {\n sublabel: {\n fill: sublabelColor,\n },\n };\n\n const { chartTitle } = getTitles(input.layout);\n\n return {\n segments,\n chartValue: firstData.value ?? 0,\n chartTitle,\n sublabel,\n // range values can be null\n minValue: typeof firstData.gauge?.axis?.range?.[0] === 'number' ? firstData.gauge?.axis?.range?.[0] : undefined,\n maxValue: typeof firstData.gauge?.axis?.range?.[1] === 'number' ? firstData.gauge?.axis?.range?.[1] : undefined,\n chartValueFormat: () => firstData.value?.toString() ?? '',\n width: input.layout?.width,\n height: input.layout?.height ?? 220,\n styles,\n variant: firstData.gauge?.steps?.length ? GaugeChartVariant.MultipleSegments : GaugeChartVariant.SingleSegment,\n };\n};\n\nexport const projectPolarToCartesian = (input: PlotlySchema): PlotlySchema => {\n const projection: PlotlySchema = { ...input };\n for (let sindex = 0; sindex < input.data.length; sindex++) {\n const series: PlotData = input.data[sindex] as PlotData;\n series.x = [];\n series.y = [];\n for (let ptindex = 0; ptindex < series.r.length; ptindex++) {\n const thetaRad = ((series.theta[ptindex] as number) * Math.PI) / 180;\n const radius = series.r[ptindex] as number;\n series.x[ptindex] = radius * Math.cos(thetaRad);\n series.y[ptindex] = radius * Math.sin(thetaRad);\n }\n projection.data[sindex] = series;\n }\n\n return projection;\n};\n\nfunction isPlainObject(obj: any) {\n if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n\nfunction getLineOptions(line: Partial<ScatterLine> | undefined): ILineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: ILineChartLineOptions = {};\n if (line.dash) {\n lineOptions = { ...lineOptions, ...dashOptions[line.dash] };\n }\n\n switch (line.shape) {\n case 'spline':\n const smoothing = typeof line.smoothing === 'number' ? line.smoothing : 1;\n lineOptions.curve = d3CurveCardinal.tension(1 - smoothing / 1.3);\n break;\n case 'hv':\n lineOptions.curve = 'stepAfter';\n break;\n case 'vh':\n lineOptions.curve = 'stepBefore';\n break;\n case 'hvh':\n lineOptions.curve = 'step';\n break;\n default:\n lineOptions.curve = 'linear';\n }\n\n return Object.keys(lineOptions).length > 0 ? lineOptions : undefined;\n}\n\nconst isStringArray = (arr: any) => {\n return isArrayOfType(arr, (value: any) => typeof value === 'string');\n};\n\n// TODO: Use binary search to find the appropriate bin for numeric value.\nconst findBinIndex = (\n bins: string[][] | Bin<number, number>[],\n value: string | number | null | undefined,\n isString: boolean,\n) => {\n if (typeof value === 'undefined' || value === null) {\n return -1;\n }\n\n return isString\n ? (bins as string[][]).findIndex(bin => bin.includes(value as string))\n : (bins as Bin<number, number>[]).findIndex(\n (bin, index) =>\n (value as number) >= bin.x0! &&\n (index === bins.length - 1 ? (value as number) <= bin.x1! : (value as number) < bin.x1!),\n );\n};\n\nconst getBinSize = (bin: Bin<number, number>) => {\n return bin.x1! - bin.x0!;\n};\n\nconst getBinCenter = (bin: Bin<number, number>) => {\n return (bin.x1! + bin.x0!) / 2;\n};\n\n// TODO: Add support for date axes\nconst createBins = (\n data: TypedArray | Datum[] | Datum[][] | undefined,\n binStart?: number | string,\n binEnd?: number | string,\n binSize?: number | string,\n) => {\n if (!data || data.length === 0) {\n return [];\n }\n\n if (isStringArray(data)) {\n const categories = Array.from(new Set(data as string[]));\n const start = typeof binStart === 'number' ? Math.ceil(binStart) : 0;\n const stop = typeof binEnd === 'number' ? Math.floor(binEnd) + 1 : categories.length;\n const step = typeof binSize === 'number' ? binSize : 1;\n\n return d3Range(start, stop, step).map(i => categories.slice(i, i + step));\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(data as number[]) as [number, number])\n .nice();\n let [minVal, maxVal] = scale.domain();\n\n minVal = typeof binStart === 'number' ? binStart : minVal;\n maxVal = typeof binEnd === 'number' ? binEnd : maxVal;\n\n const binGenerator = d3Bin().domain([minVal, maxVal]);\n\n if (typeof binSize === 'number' && binSize > 0) {\n const thresholds: number[] = [];\n const precision = Math.max(getPrecision(minVal), getPrecision(binSize));\n let th = precisionRound(minVal, precision);\n\n while (th < precisionRound(maxVal + binSize, precision)) {\n thresholds.push(th);\n th = precisionRound(th + binSize, precision);\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n\n // When the domain ends at the last threshold (maxVal), d3Bin creates an extra final bin where\n // both x0 and x1 are equal to maxVal and inclusive. The previous bin also has x1 equal to maxVal,\n // but it is exclusive. To maintain consistent bin widths, remove the final bin,\n // making the previous bin the last one, with both x0 and x1 inclusive.\n return binGenerator(data as number[]).slice(0, -1);\n }\n\n return binGenerator(data as number[]);\n};\n\nconst calculateHistFunc = (histfunc: PlotData['histfunc'] | undefined, bin: number[]) => {\n switch (histfunc) {\n case 'sum':\n return d3Sum(bin);\n case 'avg':\n return bin.length === 0 ? 0 : d3Sum(bin) / bin.length;\n case 'min':\n return d3Min(bin) ?? 0;\n case 'max':\n return d3Max(bin) ?? 0;\n default:\n return bin.length;\n }\n};\n\nconst calculateHistNorm = (\n histnorm: PlotData['histnorm'] | undefined,\n value: number,\n total: number,\n dx: number,\n dy: number = 1,\n) => {\n switch (histnorm) {\n case 'percent':\n return total === 0 ? 0 : (value / total) * 100;\n case 'probability':\n return total === 0 ? 0 : value / total;\n case 'density':\n return dx * dy === 0 ? 0 : value / (dx * dy);\n case 'probability density':\n return total * dx * dy === 0 ? 0 : value / (total * dx * dy);\n default:\n return value;\n }\n};\n\nconst getPrecision = (value: number) => {\n return value.toString().split('.')[1]?.length ?? 0;\n};\n\nconst precisionRound = (value: number, precision: number) => {\n const factor = Math.pow(10, precision);\n return Math.round(value * factor) / factor;\n};\n\nconst getLegendProps = (data: Data[], layout: Partial<Layout> | undefined) => {\n const legends: string[] = [];\n if (data.length === 1) {\n legends.push(data[0].name || '');\n } else {\n data.forEach((series, index) => {\n legends.push(series.name || `Series ${index + 1}`);\n });\n }\n\n const hideLegends = data.every((series: Partial<PlotData>) => series.showlegend === false);\n\n return {\n legends,\n hideLegend: layout?.showlegend === false ? true : hideLegends,\n };\n};\n"]}