@fluentui/react-charts 0.0.0-nightly-20250423-0405.1 → 0.0.0-nightly-20250423-1415.1
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.
- package/CHANGELOG.md +16 -16
- package/dist/index.d.ts +3337 -0
- package/lib/AreaChart.js +1 -0
- package/lib/AreaChart.js.map +1 -0
- package/lib/CartesianChart.js +1 -0
- package/lib/CartesianChart.js.map +1 -0
- package/lib/DeclarativeChart.js +1 -0
- package/lib/DeclarativeChart.js.map +1 -0
- package/lib/DonutChart.js +1 -0
- package/lib/DonutChart.js.map +1 -0
- package/lib/GaugeChart.js +1 -0
- package/lib/GaugeChart.js.map +1 -0
- package/lib/GroupedVerticalBarChart.js +1 -0
- package/lib/GroupedVerticalBarChart.js.map +1 -0
- package/lib/HeatMapChart.js +1 -0
- package/lib/HeatMapChart.js.map +1 -0
- package/lib/HorizontalBarChart.js +1 -0
- package/lib/HorizontalBarChart.js.map +1 -0
- package/lib/HorizontalBarChartWithAxis.js +1 -0
- package/lib/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib/Legends.js +1 -0
- package/lib/Legends.js.map +1 -0
- package/lib/LineChart.js +1 -0
- package/lib/LineChart.js.map +1 -0
- package/lib/Popover.js +1 -0
- package/lib/Popover.js.map +1 -0
- package/lib/ResponsiveContainer.js +1 -0
- package/lib/ResponsiveContainer.js.map +1 -0
- package/lib/SankeyChart.js +1 -0
- package/lib/SankeyChart.js.map +1 -0
- package/lib/ScatterChart.js +1 -0
- package/lib/ScatterChart.js.map +1 -0
- package/lib/Sparkline.js +1 -0
- package/lib/Sparkline.js.map +1 -0
- package/lib/VerticalBarChart.js +1 -0
- package/lib/VerticalBarChart.js.map +1 -0
- package/lib/VerticalStackedBarChart.js +1 -0
- package/lib/VerticalStackedBarChart.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.js +775 -0
- package/lib/components/AreaChart/AreaChart.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.types.js +4 -0
- package/lib/components/AreaChart/AreaChart.types.js.map +1 -0
- package/lib/components/AreaChart/index.js +3 -0
- package/lib/components/AreaChart/index.js.map +1 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +64 -0
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.js +478 -0
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.types.js +1 -0
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -0
- package/lib/components/CommonComponents/ChartPopover.js +187 -0
- package/lib/components/CommonComponents/ChartPopover.js.map +1 -0
- package/lib/components/CommonComponents/ChartPopover.types.js +1 -0
- package/lib/components/CommonComponents/ChartPopover.types.js.map +1 -0
- package/lib/components/CommonComponents/index.js +4 -0
- package/lib/components/CommonComponents/index.js.map +1 -0
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +229 -0
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -0
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js +178 -0
- package/lib/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -0
- package/lib/components/DeclarativeChart/DeclarativeChart.js +197 -0
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -0
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +811 -0
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -0
- package/lib/components/DeclarativeChart/imageExporter.js +221 -0
- package/lib/components/DeclarativeChart/imageExporter.js.map +1 -0
- package/lib/components/DeclarativeChart/index.js +1 -0
- package/lib/components/DeclarativeChart/index.js.map +1 -0
- package/lib/components/DonutChart/Arc/Arc.js +110 -0
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -0
- package/lib/components/DonutChart/Arc/Arc.types.js +1 -0
- package/lib/components/DonutChart/Arc/Arc.types.js.map +1 -0
- package/lib/components/DonutChart/Arc/index.js +2 -0
- package/lib/components/DonutChart/Arc/index.js.map +1 -0
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js +54 -0
- package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -0
- package/lib/components/DonutChart/DonutChart.js +291 -0
- package/lib/components/DonutChart/DonutChart.js.map +1 -0
- package/lib/components/DonutChart/DonutChart.types.js +1 -0
- package/lib/components/DonutChart/DonutChart.types.js.map +1 -0
- package/lib/components/DonutChart/Pie/Pie.js +72 -0
- package/lib/components/DonutChart/Pie/Pie.js.map +1 -0
- package/lib/components/DonutChart/Pie/Pie.types.js +1 -0
- package/lib/components/DonutChart/Pie/Pie.types.js.map +1 -0
- package/lib/components/DonutChart/Pie/index.js +2 -0
- package/lib/components/DonutChart/Pie/index.js.map +1 -0
- package/lib/components/DonutChart/Pie/usePieStyles.styles.js +44 -0
- package/lib/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -0
- package/lib/components/DonutChart/index.js +3 -0
- package/lib/components/DonutChart/index.js.map +1 -0
- package/lib/components/DonutChart/useDonutChartStyles.styles.js +58 -0
- package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -0
- package/lib/components/GaugeChart/GaugeChart.js +592 -0
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -0
- package/lib/components/GaugeChart/GaugeChart.types.js +4 -0
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -0
- package/lib/components/GaugeChart/index.js +3 -0
- package/lib/components/GaugeChart/index.js.map +1 -0
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +174 -0
- package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +501 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js +4 -0
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -0
- package/lib/components/GroupedVerticalBarChart/index.js +3 -0
- package/lib/components/GroupedVerticalBarChart/index.js.map +1 -0
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +90 -0
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -0
- package/lib/components/HeatMapChart/HeatMapChart.js +588 -0
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -0
- package/lib/components/HeatMapChart/HeatMapChart.types.js +4 -0
- package/lib/components/HeatMapChart/HeatMapChart.types.js.map +1 -0
- package/lib/components/HeatMapChart/index.js +3 -0
- package/lib/components/HeatMapChart/index.js.map +1 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +46 -0
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -0
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js +402 -0
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -0
- package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js +6 -0
- package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -0
- package/lib/components/HorizontalBarChart/index.js +3 -0
- package/lib/components/HorizontalBarChart/index.js.map +1 -0
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +163 -0
- package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +571 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js +4 -0
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/index.js +3 -0
- package/lib/components/HorizontalBarChartWithAxis/index.js.map +1 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +76 -0
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -0
- package/lib/components/Legends/Legends.js +303 -0
- package/lib/components/Legends/Legends.js.map +1 -0
- package/lib/components/Legends/Legends.types.js +1 -0
- package/lib/components/Legends/Legends.types.js.map +1 -0
- package/lib/components/Legends/OverflowMenu.js +25 -0
- package/lib/components/Legends/OverflowMenu.js.map +1 -0
- package/lib/components/Legends/index.js +3 -0
- package/lib/components/Legends/index.js.map +1 -0
- package/lib/components/Legends/shape.js +35 -0
- package/lib/components/Legends/shape.js.map +1 -0
- package/lib/components/Legends/useLegendsStyles.styles.js +147 -0
- package/lib/components/Legends/useLegendsStyles.styles.js.map +1 -0
- package/lib/components/LineChart/LineChart.js +1034 -0
- package/lib/components/LineChart/LineChart.js.map +1 -0
- package/lib/components/LineChart/LineChart.types.js +3 -0
- package/lib/components/LineChart/LineChart.types.js.map +1 -0
- package/lib/components/LineChart/eventAnnotation/EventAnnotation.js +119 -0
- package/lib/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -0
- package/lib/components/LineChart/eventAnnotation/LabelLink.js +57 -0
- package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -0
- package/lib/components/LineChart/eventAnnotation/Textbox.js +40 -0
- package/lib/components/LineChart/eventAnnotation/Textbox.js.map +1 -0
- package/lib/components/LineChart/index.js +4 -0
- package/lib/components/LineChart/index.js.map +1 -0
- package/lib/components/LineChart/useLineChartStyles.styles.js +65 -0
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -0
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js +65 -0
- package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -0
- package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js +1 -0
- package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -0
- package/lib/components/ResponsiveContainer/index.js +1 -0
- package/lib/components/ResponsiveContainer/index.js.map +1 -0
- package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +23 -0
- package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +1 -0
- package/lib/components/SankeyChart/SankeyChart.js +1022 -0
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -0
- package/lib/components/SankeyChart/SankeyChart.types.js +3 -0
- package/lib/components/SankeyChart/SankeyChart.types.js.map +1 -0
- package/lib/components/SankeyChart/index.js +3 -0
- package/lib/components/SankeyChart/index.js.map +1 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +109 -0
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -0
- package/lib/components/ScatterChart/ScatterChart.js +465 -0
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -0
- package/lib/components/ScatterChart/ScatterChart.types.js +4 -0
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -0
- package/lib/components/ScatterChart/index.js +3 -0
- package/lib/components/ScatterChart/index.js.map +1 -0
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +65 -0
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -0
- package/lib/components/Sparkline/Sparkline.js +119 -0
- package/lib/components/Sparkline/Sparkline.js.map +1 -0
- package/lib/components/Sparkline/Sparkline.types.js +4 -0
- package/lib/components/Sparkline/Sparkline.types.js.map +1 -0
- package/lib/components/Sparkline/index.js +3 -0
- package/lib/components/Sparkline/index.js.map +1 -0
- package/lib/components/Sparkline/useSparklineStyles.styles.js +49 -0
- package/lib/components/Sparkline/useSparklineStyles.styles.js.map +1 -0
- package/lib/components/VerticalBarChart/VerticalBarChart.js +926 -0
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -0
- package/lib/components/VerticalBarChart/VerticalBarChart.types.js +4 -0
- package/lib/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -0
- package/lib/components/VerticalBarChart/index.js +3 -0
- package/lib/components/VerticalBarChart/index.js.map +1 -0
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +74 -0
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +904 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js +1 -0
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/index.js +3 -0
- package/lib/components/VerticalStackedBarChart/index.js.map +1 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +73 -0
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -0
- package/lib/index.js +20 -0
- package/lib/index.js.map +1 -0
- package/lib/types/DataPoint.js +1 -0
- package/lib/types/DataPoint.js.map +1 -0
- package/lib/types/EventAnnotation.js +1 -0
- package/lib/types/EventAnnotation.js.map +1 -0
- package/lib/types/LegendDataItem.js +1 -0
- package/lib/types/LegendDataItem.js.map +1 -0
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -0
- package/lib/utilities/FocusableTooltipText.js +65 -0
- package/lib/utilities/FocusableTooltipText.js.map +1 -0
- package/lib/utilities/KeyCodes.js +8 -0
- package/lib/utilities/KeyCodes.js.map +1 -0
- package/lib/utilities/SVGTooltipText.js +183 -0
- package/lib/utilities/SVGTooltipText.js.map +1 -0
- package/lib/utilities/async-utils.js +380 -0
- package/lib/utilities/async-utils.js.map +1 -0
- package/lib/utilities/colors.js +269 -0
- package/lib/utilities/colors.js.map +1 -0
- package/lib/utilities/getWindow.js +25 -0
- package/lib/utilities/getWindow.js.map +1 -0
- package/lib/utilities/index.js +3 -0
- package/lib/utilities/index.js.map +1 -0
- package/lib/utilities/locale-util.js +15 -0
- package/lib/utilities/locale-util.js.map +1 -0
- package/lib/utilities/overflow-utils.js +27 -0
- package/lib/utilities/overflow-utils.js.map +1 -0
- package/lib/utilities/string.js +32 -0
- package/lib/utilities/string.js.map +1 -0
- package/lib/utilities/test-data.js +329 -0
- package/lib/utilities/test-data.js.map +1 -0
- package/lib/utilities/utilities.js +1405 -0
- package/lib/utilities/utilities.js.map +1 -0
- package/lib/utilities/vbc-utils.js +27 -0
- package/lib/utilities/vbc-utils.js.map +1 -0
- package/lib-commonjs/AreaChart.js +6 -0
- package/lib-commonjs/AreaChart.js.map +1 -0
- package/lib-commonjs/CartesianChart.js +6 -0
- package/lib-commonjs/CartesianChart.js.map +1 -0
- package/lib-commonjs/DeclarativeChart.js +6 -0
- package/lib-commonjs/DeclarativeChart.js.map +1 -0
- package/lib-commonjs/DonutChart.js +6 -0
- package/lib-commonjs/DonutChart.js.map +1 -0
- package/lib-commonjs/GaugeChart.js +6 -0
- package/lib-commonjs/GaugeChart.js.map +1 -0
- package/lib-commonjs/GroupedVerticalBarChart.js +6 -0
- package/lib-commonjs/GroupedVerticalBarChart.js.map +1 -0
- package/lib-commonjs/HeatMapChart.js +6 -0
- package/lib-commonjs/HeatMapChart.js.map +1 -0
- package/lib-commonjs/HorizontalBarChart.js +6 -0
- package/lib-commonjs/HorizontalBarChart.js.map +1 -0
- package/lib-commonjs/HorizontalBarChartWithAxis.js +6 -0
- package/lib-commonjs/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib-commonjs/Legends.js +6 -0
- package/lib-commonjs/Legends.js.map +1 -0
- package/lib-commonjs/LineChart.js +6 -0
- package/lib-commonjs/LineChart.js.map +1 -0
- package/lib-commonjs/Popover.js +6 -0
- package/lib-commonjs/Popover.js.map +1 -0
- package/lib-commonjs/ResponsiveContainer.js +6 -0
- package/lib-commonjs/ResponsiveContainer.js.map +1 -0
- package/lib-commonjs/SankeyChart.js +6 -0
- package/lib-commonjs/SankeyChart.js.map +1 -0
- package/lib-commonjs/ScatterChart.js +6 -0
- package/lib-commonjs/ScatterChart.js.map +1 -0
- package/lib-commonjs/Sparkline.js +6 -0
- package/lib-commonjs/Sparkline.js.map +1 -0
- package/lib-commonjs/VerticalBarChart.js +6 -0
- package/lib-commonjs/VerticalBarChart.js.map +1 -0
- package/lib-commonjs/VerticalStackedBarChart.js +6 -0
- package/lib-commonjs/VerticalStackedBarChart.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js +781 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.types.js +7 -0
- package/lib-commonjs/components/AreaChart/AreaChart.types.js.map +1 -0
- package/lib-commonjs/components/AreaChart/index.js +8 -0
- package/lib-commonjs/components/AreaChart/index.js.map +1 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +104 -0
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +484 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js +6 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/ChartPopover.js +197 -0
- package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/ChartPopover.types.js +4 -0
- package/lib-commonjs/components/CommonComponents/ChartPopover.types.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/index.js +9 -0
- package/lib-commonjs/components/CommonComponents/index.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +356 -0
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js +261 -0
- package/lib-commonjs/components/CommonComponents/useChartPopoverStyles.styles.js.map +1 -0
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +205 -0
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -0
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +859 -0
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -0
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js +231 -0
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +1 -0
- package/lib-commonjs/components/DeclarativeChart/index.js +6 -0
- package/lib-commonjs/components/DeclarativeChart/index.js.map +1 -0
- package/lib-commonjs/components/DonutChart/Arc/Arc.js +117 -0
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -0
- package/lib-commonjs/components/DonutChart/Arc/Arc.types.js +4 -0
- package/lib-commonjs/components/DonutChart/Arc/Arc.types.js.map +1 -0
- package/lib-commonjs/components/DonutChart/Arc/index.js +7 -0
- package/lib-commonjs/components/DonutChart/Arc/index.js.map +1 -0
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +83 -0
- package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -0
- package/lib-commonjs/components/DonutChart/DonutChart.js +298 -0
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -0
- package/lib-commonjs/components/DonutChart/DonutChart.types.js +6 -0
- package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -0
- package/lib-commonjs/components/DonutChart/Pie/Pie.js +79 -0
- package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -0
- package/lib-commonjs/components/DonutChart/Pie/Pie.types.js +4 -0
- package/lib-commonjs/components/DonutChart/Pie/Pie.types.js.map +1 -0
- package/lib-commonjs/components/DonutChart/Pie/index.js +7 -0
- package/lib-commonjs/components/DonutChart/Pie/index.js.map +1 -0
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js +61 -0
- package/lib-commonjs/components/DonutChart/Pie/usePieStyles.styles.js.map +1 -0
- package/lib-commonjs/components/DonutChart/index.js +8 -0
- package/lib-commonjs/components/DonutChart/index.js.map +1 -0
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +82 -0
- package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +621 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js +7 -0
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.js.map +1 -0
- package/lib-commonjs/components/GaugeChart/index.js +8 -0
- package/lib-commonjs/components/GaugeChart/index.js.map +1 -0
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +252 -0
- package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +507 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js +7 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/index.js +8 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/index.js.map +1 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +139 -0
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +599 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js +7 -0
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.types.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/index.js +8 -0
- package/lib-commonjs/components/HeatMapChart/index.js.map +1 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +68 -0
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +408 -0
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js +17 -0
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChart/index.js +8 -0
- package/lib-commonjs/components/HorizontalBarChart/index.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +251 -0
- package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +580 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js +7 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js +8 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/index.js.map +1 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +116 -0
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -0
- package/lib-commonjs/components/Legends/Legends.js +313 -0
- package/lib-commonjs/components/Legends/Legends.js.map +1 -0
- package/lib-commonjs/components/Legends/Legends.types.js +6 -0
- package/lib-commonjs/components/Legends/Legends.types.js.map +1 -0
- package/lib-commonjs/components/Legends/OverflowMenu.js +36 -0
- package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -0
- package/lib-commonjs/components/Legends/index.js +8 -0
- package/lib-commonjs/components/Legends/index.js.map +1 -0
- package/lib-commonjs/components/Legends/shape.js +46 -0
- package/lib-commonjs/components/Legends/shape.js.map +1 -0
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js +304 -0
- package/lib-commonjs/components/Legends/useLegendsStyles.styles.js.map +1 -0
- package/lib-commonjs/components/LineChart/LineChart.js +1040 -0
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -0
- package/lib-commonjs/components/LineChart/LineChart.types.js +6 -0
- package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -0
- package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js +129 -0
- package/lib-commonjs/components/LineChart/eventAnnotation/EventAnnotation.js.map +1 -0
- package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +68 -0
- package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -0
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js +51 -0
- package/lib-commonjs/components/LineChart/eventAnnotation/Textbox.js.map +1 -0
- package/lib-commonjs/components/LineChart/index.js +9 -0
- package/lib-commonjs/components/LineChart/index.js.map +1 -0
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +96 -0
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +76 -0
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -0
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js +6 -0
- package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -0
- package/lib-commonjs/components/ResponsiveContainer/index.js +6 -0
- package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -0
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +47 -0
- package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +1038 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js +6 -0
- package/lib-commonjs/components/SankeyChart/SankeyChart.types.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/index.js +8 -0
- package/lib-commonjs/components/SankeyChart/index.js.map +1 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +179 -0
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +471 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js +7 -0
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -0
- package/lib-commonjs/components/ScatterChart/index.js +8 -0
- package/lib-commonjs/components/ScatterChart/index.js.map +1 -0
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +96 -0
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/Sparkline/Sparkline.js +125 -0
- package/lib-commonjs/components/Sparkline/Sparkline.js.map +1 -0
- package/lib-commonjs/components/Sparkline/Sparkline.types.js +7 -0
- package/lib-commonjs/components/Sparkline/Sparkline.types.js.map +1 -0
- package/lib-commonjs/components/Sparkline/index.js +8 -0
- package/lib-commonjs/components/Sparkline/index.js.map +1 -0
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js +77 -0
- package/lib-commonjs/components/Sparkline/useSparklineStyles.styles.js.map +1 -0
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +928 -0
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -0
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js +7 -0
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.types.js.map +1 -0
- package/lib-commonjs/components/VerticalBarChart/index.js +8 -0
- package/lib-commonjs/components/VerticalBarChart/index.js.map +1 -0
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +117 -0
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +915 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js +6 -0
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/index.js +8 -0
- package/lib-commonjs/components/VerticalStackedBarChart/index.js.map +1 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +120 -0
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -0
- package/lib-commonjs/index.js +25 -0
- package/lib-commonjs/index.js.map +1 -0
- package/lib-commonjs/types/DataPoint.js +4 -0
- package/lib-commonjs/types/DataPoint.js.map +1 -0
- package/lib-commonjs/types/EventAnnotation.js +6 -0
- package/lib-commonjs/types/EventAnnotation.js.map +1 -0
- package/lib-commonjs/types/LegendDataItem.js +4 -0
- package/lib-commonjs/types/LegendDataItem.js.map +1 -0
- package/lib-commonjs/types/index.js +7 -0
- package/lib-commonjs/types/index.js.map +1 -0
- package/lib-commonjs/utilities/FocusableTooltipText.js +75 -0
- package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -0
- package/lib-commonjs/utilities/KeyCodes.js +18 -0
- package/lib-commonjs/utilities/KeyCodes.js.map +1 -0
- package/lib-commonjs/utilities/SVGTooltipText.js +193 -0
- package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -0
- package/lib-commonjs/utilities/async-utils.js +382 -0
- package/lib-commonjs/utilities/async-utils.js.map +1 -0
- package/lib-commonjs/utilities/colors.js +293 -0
- package/lib-commonjs/utilities/colors.js.map +1 -0
- package/lib-commonjs/utilities/getWindow.js +28 -0
- package/lib-commonjs/utilities/getWindow.js.map +1 -0
- package/lib-commonjs/utilities/index.js +8 -0
- package/lib-commonjs/utilities/index.js.map +1 -0
- package/lib-commonjs/utilities/locale-util.js +25 -0
- package/lib-commonjs/utilities/locale-util.js.map +1 -0
- package/lib-commonjs/utilities/overflow-utils.js +36 -0
- package/lib-commonjs/utilities/overflow-utils.js.map +1 -0
- package/lib-commonjs/utilities/string.js +29 -0
- package/lib-commonjs/utilities/string.js.map +1 -0
- package/lib-commonjs/utilities/test-data.js +383 -0
- package/lib-commonjs/utilities/test-data.js.map +1 -0
- package/lib-commonjs/utilities/utilities.js +1371 -0
- package/lib-commonjs/utilities/utilities.js.map +1 -0
- package/lib-commonjs/utilities/vbc-utils.js +45 -0
- package/lib-commonjs/utilities/vbc-utils.js.map +1 -0
- package/package.json +13 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["PlotlySchemaAdapter.ts"],"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 { DonutChartProps } from '../DonutChart/index';\nimport {\n ChartDataPoint,\n ChartProps,\n HorizontalBarChartWithAxisDataPoint,\n LineChartPoints,\n VerticalStackedChartProps,\n HeatMapChartData,\n HeatMapChartDataPoint,\n GroupedVerticalBarChartData,\n VerticalBarChartDataPoint,\n SankeyChartData,\n LineChartLineOptions,\n} from '../../types/DataPoint';\nimport { SankeyChartProps } from '../SankeyChart/index';\nimport { VerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { HorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { LineChartProps } from '../LineChart/index';\nimport { AreaChartProps } from '../AreaChart/index';\nimport { HeatMapChartProps } from '../HeatMapChart/index';\nimport { DataVizPalette, getColorFromToken, getNextColor } from '../../utilities/colors';\nimport { GaugeChartProps, GaugeChartSegment } from '../GaugeChart/index';\nimport { GroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChartProps } 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} 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 SecondaryYAxisValues {\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 getSecondaryYAxisValues = (series: PlotData, layout: Partial<Layout> | undefined) => {\n const secondaryYAxisValues: SecondaryYAxisValues = {};\n if (layout && layout.yaxis2 && series.yaxis === 'y2') {\n secondaryYAxisValues.secondaryYAxistitle =\n typeof layout.yaxis2.title === 'string'\n ? layout.yaxis2.title\n : typeof layout.yaxis2.title?.text === 'string'\n ? layout.yaxis2.title.text\n : '';\n if (layout.yaxis2.range) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: layout.yaxis2.range[0],\n yMaxValue: layout.yaxis2.range[1],\n };\n } else {\n const yValues = series.y as number[];\n if (yValues) {\n secondaryYAxisValues.secondaryYScaleOptions = {\n yMinValue: Math.min(...yValues),\n yMaxValue: Math.max(...yValues),\n };\n }\n }\n }\n secondaryYAxisValues.secondaryYAxistitle =\n secondaryYAxisValues.secondaryYAxistitle !== '' ? secondaryYAxisValues.secondaryYAxistitle : undefined;\n secondaryYAxisValues.secondaryYScaleOptions =\n secondaryYAxisValues.secondaryYScaleOptions && Object.keys(secondaryYAxisValues.secondaryYScaleOptions).length !== 0\n ? secondaryYAxisValues.secondaryYScaleOptions\n : undefined;\n return secondaryYAxisValues;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): DonutChartProps => {\n const firstData = input.data[0] as PieData;\n\n const mapLegendToDataPoint: Record<string, ChartDataPoint> = {};\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): VerticalStackedBarChartProps => {\n const mapXToDataPoints: { [key: string]: VerticalStackedChartProps } = {};\n let yMaxValue = 0;\n let secondaryYAxisValues: SecondaryYAxisValues = {};\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 } 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 });\n }\n\n yMaxValue = Math.max(yMaxValue, yVal);\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\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 secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): GroupedVerticalBarChartProps => {\n const mapXToDataPoints: Record<string, GroupedVerticalBarChartData> = {};\n let secondaryYAxisValues: SecondaryYAxisValues = {};\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] = { name: x.toString(), series: [] };\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?.[index2] as number) ?? 0,\n xAxisCalloutData: x as string,\n color,\n legend,\n });\n }\n });\n secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\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 secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): VerticalBarChartProps => {\n const vbcData: VerticalBarChartDataPoint[] = [];\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 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 chartTitle,\n xAxisTitle,\n yAxisTitle,\n mode: 'plotly',\n hideTickOverlap: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n input: PlotlySchema,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): LineChartProps | AreaChartProps => {\n let secondaryYAxisValues: SecondaryYAxisValues = {};\n let mode: string = 'tonexty';\n const chartData: LineChartPoints[] = 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 secondaryYAxisValues = getSecondaryYAxisValues(series, input.layout);\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 } as LineChartPoints;\n });\n\n const yMinMaxValues = findNumericMinMaxOfY(chartData);\n const { chartTitle, xAxisTitle, yAxisTitle } = getTitles(input.layout);\n\n const chartProps: ChartProps = {\n chartTitle,\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\n mode,\n width: input.layout?.width,\n height: input.layout?.height ?? 350,\n hideTickOverlap: true,\n } as AreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n xAxisTitle,\n yAxisTitle,\n secondaryYAxistitle: secondaryYAxisValues.secondaryYAxistitle,\n secondaryYScaleOptions: secondaryYAxisValues.secondaryYScaleOptions,\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 LineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n input: PlotlySchema,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): HorizontalBarChartWithAxisProps => {\n const chartData: HorizontalBarChartWithAxisDataPoint[] = input.data\n .map((series: PlotData, index: number) => {\n return (series.y as Datum[]).map((yValue: string, i: number) => {\n const color = getColor(yValue, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: yValue,\n color,\n } as HorizontalBarChartWithAxisDataPoint;\n });\n })\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[0] as PlotData).y.length;\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): HeatMapChartProps => {\n const firstData = input.data[0] as Partial<PlotData>;\n const heatmapDataPoints: HeatMapChartDataPoint[] = [];\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\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: HeatMapChartData = {\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): SankeyChartProps => {\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 SankeyChartData;\n\n // const styles: SankeyChartProps['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 // TODO\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): GaugeChartProps => {\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): GaugeChartSegment => {\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: GaugeChartProps['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 // FIXME\n // width: input.layout?.width,\n // height: input.layout?.height ?? 220,\n // TODO\n // styles,\n variant: firstData.gauge?.steps?.length ? 'multiple-segments' : 'single-segment',\n };\n};\n\nfunction isPlainObject(obj: any) {\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): LineChartLineOptions | undefined {\n if (!line) {\n return;\n }\n\n let lineOptions: LineChartLineOptions = {};\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(bin => (value as number) >= bin.x0! && (value as number) < bin.x1!);\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') {\n const thresholds: number[] = [];\n let th = minVal;\n const tolerance = 1 / Math.pow(10, binSize.toString().split('.')[1]?.length ?? 0);\n\n while (maxVal + binSize - th > tolerance) {\n thresholds.push(th);\n th += binSize;\n }\n\n minVal = thresholds[0];\n maxVal = thresholds[thresholds.length - 1];\n binGenerator.domain([minVal, maxVal]).thresholds(thresholds);\n }\n\n // NOTE: The last bin generated by d3Bin often has identical x0 and x1 values (both inclusive) and\n // can be ignored if the highest value is already included in the previous bin.\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"],"names":["correctYearMonth","findArrayAttributes","getColor","isMonthArray","transformPlotlyJsonToDonutProps","transformPlotlyJsonToGVBCProps","transformPlotlyJsonToGaugeProps","transformPlotlyJsonToHeatmapProps","transformPlotlyJsonToHorizontalBarWithAxisProps","transformPlotlyJsonToSankeyProps","transformPlotlyJsonToScatterChartProps","transformPlotlyJsonToVBCProps","transformPlotlyJsonToVSBCProps","dashOptions","dot","strokeDasharray","strokeLinecap","strokeWidth","lineBorderWidth","dash","longdash","dashdot","longdashdot","solid","isMonth","possiblyMonthValue","parseFullMonth","timeParse","parseShortMonth","data","isArrayOfType","getLegend","series","index","name","getTitles","layout","titles","chartTitle","title","text","xAxisTitle","xaxis","yAxisTitle","yaxis","xValues","presentYear","Date","getFullYear","length","Array","isArray","Error","dates","map","parsedDate","isDate","i","currentMonth","getMonth","previousMonth","currentYear","previousYear","setFullYear","month","legendLabel","colorMap","isDarkTheme","current","has","nextColor","getNextColor","size","set","get","getSecondaryYAxisValues","secondaryYAxisValues","yaxis2","secondaryYAxistitle","range","secondaryYScaleOptions","yMinValue","yMaxValue","yValues","y","Math","min","max","undefined","Object","keys","input","firstData","mapLegendToDataPoint","labels","forEach","label","color","value","values","legend","width","height","hideLabels","textinfo","includes","donutMarginHorizontal","donutMarginVertical","innerRadius","hole","chartData","hideLegend","showlegend","showLabelsInPercent","fallbackVSBC","mapXToDataPoints","index1","x","_series_x","index2","xAxisPoint","lineData","yVal","type","push","isLineData","lineOptions","getLineOptions","line","barWidth","mode","hideTickOverlap","toString","key","xAxisCalloutData","vbcData","seriesIdx","isXString","isStringArray","xBins","createBins","xbins","start","end","yBins","total","xVal","binIdx","findBinIndex","bin","calculateHistFunc","histfunc","calculateHistNorm","histnorm","getBinSize","join","getBinCenter","x0","x1","isAreaChart","isString","isXDate","isDateArray","isXNumber","isNumberArray","lineColor","fill","parseFloat","marker","markerSize","yMinMaxValues","findNumericMinMaxOfY","chartProps","lineChartData","supportNegativeData","roundedTicks","startValue","endValue","enableReflow","yValue","flat","reverse","chartHeight","margin","l","padding","pad","availableHeight","numberOfBars","scalingFactor","gapFactor","barHeight","showYAxisLables","heatmapDataPoints","zMin","Number","POSITIVE_INFINITY","zMax","NEGATIVE_INFINITY","isYString","ybins","zBins","xBinIdx","yBinIdx","z","row","zVal","xBin","xIdx","yBin","yIdx","rectText","_firstData_x1","_firstData_z_yIdx","_firstData_z","heatmapData","defaultDomain","defaultRange","getColorFromToken","DataVizPalette","color1","color2","color3","domainValuesForColorScale","colorscale","arr","rangeValuesForColorScale","sortOrder","node","link","validLinks","val","source","target","filter","sankeyChartData","nodes","nodeId","links","validLink","SankeyChartData","segments","gauge","steps","step","axis","disabled","sublabel","delta","reference","diff","abs","chartValue","minValue","maxValue","chartValueFormat","variant","isPlainObject","obj","prototype","call","getPrototypeOf","hasOwnProperty","arrayAttributes","stack","isArrayStack","baseContainer","baseAttrName","trace","crawlIntoTrace","container","astrPartial","item","newAstrPartial","isArrayOrTypedArray","j","shape","smoothing","curve","d3CurveCardinal","tension","bins","findIndex","binStart","binEnd","binSize","categories","from","Set","ceil","stop","floor","d3Range","slice","scale","d3ScaleLinear","domain","d3Extent","nice","minVal","maxVal","binGenerator","d3Bin","thresholds","th","tolerance","pow","split","d3Sum","d3Min","d3Max","dx","dy"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "toImage", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return toImage;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _d3selection = require("d3-selection");
|
|
12
|
+
const _index = require("../../utilities/index");
|
|
13
|
+
function toImage(chartContainer, opts = {}) {
|
|
14
|
+
return new Promise((resolve, reject)=>{
|
|
15
|
+
if (!chartContainer) {
|
|
16
|
+
return reject(new Error('Chart container is not defined'));
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const background = typeof opts.background === 'string' ? (0, _index.resolveCSSVariables)(chartContainer, opts.background) : 'transparent';
|
|
20
|
+
const svg = toSVG(chartContainer, background);
|
|
21
|
+
const svgData = new XMLSerializer().serializeToString(svg.node);
|
|
22
|
+
const svgDataUrl = 'data:image/svg+xml;base64,' + btoa(unescapePonyfill(encodeURIComponent(svgData)));
|
|
23
|
+
svgToPng(svgDataUrl, {
|
|
24
|
+
width: opts.width || svg.width,
|
|
25
|
+
height: opts.height || svg.height,
|
|
26
|
+
scale: opts.scale
|
|
27
|
+
}).then(resolve).catch(reject);
|
|
28
|
+
} catch (err) {
|
|
29
|
+
return reject(err);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const SVG_STYLE_PROPERTIES = [
|
|
34
|
+
'display',
|
|
35
|
+
'fill',
|
|
36
|
+
'fill-opacity',
|
|
37
|
+
'opacity',
|
|
38
|
+
'stroke',
|
|
39
|
+
'stroke-width',
|
|
40
|
+
'transform'
|
|
41
|
+
];
|
|
42
|
+
const SVG_TEXT_STYLE_PROPERTIES = [
|
|
43
|
+
'font-family',
|
|
44
|
+
'font-size',
|
|
45
|
+
'font-weight',
|
|
46
|
+
'text-anchor'
|
|
47
|
+
];
|
|
48
|
+
function toSVG(chartContainer, background) {
|
|
49
|
+
const svg = chartContainer.querySelector('svg');
|
|
50
|
+
if (!svg) {
|
|
51
|
+
throw new Error('SVG not found');
|
|
52
|
+
}
|
|
53
|
+
const clonedSvg = (0, _d3selection.select)(svg.cloneNode(true)).attr('width', null).attr('height', null).attr('viewBox', null);
|
|
54
|
+
const svgElements = svg.getElementsByTagName('*');
|
|
55
|
+
const clonedSvgElements = clonedSvg.node().getElementsByTagName('*');
|
|
56
|
+
for(let i = 0; i < svgElements.length; i++){
|
|
57
|
+
if (svgElements[i].tagName.toLowerCase() === 'text') {
|
|
58
|
+
copyStyle([
|
|
59
|
+
...SVG_STYLE_PROPERTIES,
|
|
60
|
+
...SVG_TEXT_STYLE_PROPERTIES
|
|
61
|
+
], svgElements[i], clonedSvgElements[i]);
|
|
62
|
+
} else {
|
|
63
|
+
copyStyle(SVG_STYLE_PROPERTIES, svgElements[i], clonedSvgElements[i]);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const { width: svgWidth, height: svgHeight } = svg.getBoundingClientRect();
|
|
67
|
+
const legendGroup = cloneLegendsToSVG(chartContainer, svgWidth, svgHeight);
|
|
68
|
+
const w1 = Math.max(svgWidth, legendGroup.width);
|
|
69
|
+
const h1 = svgHeight + legendGroup.height;
|
|
70
|
+
if (legendGroup.node) {
|
|
71
|
+
clonedSvg.append(()=>legendGroup.node);
|
|
72
|
+
}
|
|
73
|
+
clonedSvg.insert('rect', ':first-child').attr('x', 0).attr('y', 0).attr('width', w1).attr('height', h1).attr('fill', background);
|
|
74
|
+
clonedSvg.attr('width', w1).attr('height', h1).attr('viewBox', `0 0 ${w1} ${h1}`);
|
|
75
|
+
return {
|
|
76
|
+
node: clonedSvg.node(),
|
|
77
|
+
width: w1,
|
|
78
|
+
height: h1
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const LEGEND_RECT_STYLE_PROPERTIES_MAP = {
|
|
82
|
+
'background-color': 'fill',
|
|
83
|
+
'border-color': 'stroke'
|
|
84
|
+
};
|
|
85
|
+
const LEGEND_TEXT_STYLE_PROPERTIES_MAP = {
|
|
86
|
+
color: 'fill',
|
|
87
|
+
'font-family': 'font-family',
|
|
88
|
+
'font-size': 'font-size',
|
|
89
|
+
'font-weight': 'font-weight',
|
|
90
|
+
opacity: 'opacity'
|
|
91
|
+
};
|
|
92
|
+
function cloneLegendsToSVG(chartContainer, svgWidth, svgHeight) {
|
|
93
|
+
const legendButtons = chartContainer.querySelectorAll(`
|
|
94
|
+
button.fui-legend__legend:not([data-overflowing]),
|
|
95
|
+
.fui-donut__legendContainer button.fui-MenuButton,
|
|
96
|
+
.fui-cart__legendContainer button.fui-MenuButton
|
|
97
|
+
`);
|
|
98
|
+
if (legendButtons.length === 0) {
|
|
99
|
+
return {
|
|
100
|
+
node: null,
|
|
101
|
+
width: 0,
|
|
102
|
+
height: 0
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const legendGroup = (0, _d3selection.create)('svg:g');
|
|
106
|
+
let legendX = 0;
|
|
107
|
+
let legendY = 8;
|
|
108
|
+
let legendLine = [];
|
|
109
|
+
const legendLines = [];
|
|
110
|
+
const legendLineWidths = [];
|
|
111
|
+
for(let i = 0; i < legendButtons.length; i++){
|
|
112
|
+
const { width: legendWidth } = legendButtons[i].getBoundingClientRect();
|
|
113
|
+
const legendItem = legendGroup.append('g');
|
|
114
|
+
legendLine.push(legendItem);
|
|
115
|
+
if (legendX + legendWidth > svgWidth && legendLine.length > 1) {
|
|
116
|
+
legendLine.pop();
|
|
117
|
+
legendLines.push(legendLine);
|
|
118
|
+
legendLineWidths.push(legendX);
|
|
119
|
+
legendLine = [
|
|
120
|
+
legendItem
|
|
121
|
+
];
|
|
122
|
+
legendX = 0;
|
|
123
|
+
legendY += 32;
|
|
124
|
+
}
|
|
125
|
+
let legendText;
|
|
126
|
+
let textOffset = 0;
|
|
127
|
+
if (!legendButtons[i].hasAttribute('data-overflow-menu')) {
|
|
128
|
+
const legendRect = legendButtons[i].querySelector('.fui-legend__rect');
|
|
129
|
+
legendText = legendButtons[i].querySelector('.fui-legend__text');
|
|
130
|
+
legendItem.append('rect').attr('x', legendX + 8).attr('y', svgHeight + legendY + 8).attr('width', 12).attr('height', 12).attr('stroke-width', 1).call((selection)=>copyStyle(LEGEND_RECT_STYLE_PROPERTIES_MAP, legendRect, selection.node()));
|
|
131
|
+
textOffset = 28;
|
|
132
|
+
} else {
|
|
133
|
+
legendText = legendButtons[i];
|
|
134
|
+
console.log(legendText.textContent);
|
|
135
|
+
textOffset = 8;
|
|
136
|
+
}
|
|
137
|
+
legendItem.append('text').attr('x', legendX + textOffset).attr('y', svgHeight + legendY + 8).attr('dominant-baseline', 'hanging').text(legendText.textContent).call((selection)=>copyStyle(LEGEND_TEXT_STYLE_PROPERTIES_MAP, legendText, selection.node()));
|
|
138
|
+
legendX += legendWidth;
|
|
139
|
+
}
|
|
140
|
+
legendLines.push(legendLine);
|
|
141
|
+
legendLineWidths.push(legendX);
|
|
142
|
+
legendY += 32;
|
|
143
|
+
const centerLegends = true;
|
|
144
|
+
if (centerLegends) {
|
|
145
|
+
legendLines.forEach((ln, idx)=>{
|
|
146
|
+
const offsetX = Math.max((svgWidth - legendLineWidths[idx]) / 2, 0);
|
|
147
|
+
ln.forEach((item)=>{
|
|
148
|
+
item.attr('transform', `translate(${offsetX}, 0)`);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
node: legendGroup.node(),
|
|
154
|
+
width: Math.max(...legendLineWidths),
|
|
155
|
+
height: legendY
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function svgToPng(svgDataUrl, opts = {}) {
|
|
159
|
+
return new Promise((resolve, reject)=>{
|
|
160
|
+
const scale = opts.scale || 1;
|
|
161
|
+
const w0 = opts.width || 300;
|
|
162
|
+
const h0 = opts.height || 150;
|
|
163
|
+
const w1 = scale * w0;
|
|
164
|
+
const h1 = scale * h0;
|
|
165
|
+
const canvas = document.createElement('canvas');
|
|
166
|
+
const img = new Image();
|
|
167
|
+
canvas.width = w1;
|
|
168
|
+
canvas.height = h1;
|
|
169
|
+
img.onload = function() {
|
|
170
|
+
const ctx = canvas.getContext('2d');
|
|
171
|
+
if (!ctx) {
|
|
172
|
+
return reject(new Error('Canvas context is null'));
|
|
173
|
+
}
|
|
174
|
+
ctx.clearRect(0, 0, w1, h1);
|
|
175
|
+
ctx.drawImage(img, 0, 0, w1, h1);
|
|
176
|
+
const imgData = canvas.toDataURL('image/png');
|
|
177
|
+
resolve(imgData);
|
|
178
|
+
};
|
|
179
|
+
img.onerror = function(err) {
|
|
180
|
+
reject(err);
|
|
181
|
+
};
|
|
182
|
+
img.src = svgDataUrl;
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
const hex2 = /^[\da-f]{2}$/i;
|
|
186
|
+
const hex4 = /^[\da-f]{4}$/i;
|
|
187
|
+
/**
|
|
188
|
+
* A ponyfill for the deprecated `unescape` method, taken from the `core-js` library.
|
|
189
|
+
*
|
|
190
|
+
* Source: {@link https://github.com/zloirock/core-js/blob/167136f479d3b8519953f2e4c534ecdd1031d3cf/packages/core-js/modules/es.unescape.js core-js/packages/core-js/modules/es.unescape.js}
|
|
191
|
+
*/ function unescapePonyfill(str) {
|
|
192
|
+
let result = '';
|
|
193
|
+
const length = str.length;
|
|
194
|
+
let index = 0;
|
|
195
|
+
let chr;
|
|
196
|
+
let part;
|
|
197
|
+
while(index < length){
|
|
198
|
+
chr = str.charAt(index++);
|
|
199
|
+
if (chr === '%') {
|
|
200
|
+
if (str.charAt(index) === 'u') {
|
|
201
|
+
part = str.slice(index + 1, index + 5);
|
|
202
|
+
if (hex4.exec(part)) {
|
|
203
|
+
result += String.fromCharCode(parseInt(part, 16));
|
|
204
|
+
index += 5;
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
} else {
|
|
208
|
+
part = str.slice(index, index + 2);
|
|
209
|
+
if (hex2.exec(part)) {
|
|
210
|
+
result += String.fromCharCode(parseInt(part, 16));
|
|
211
|
+
index += 2;
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
result += chr;
|
|
217
|
+
}
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
function copyStyle(properties, fromEl, toEl) {
|
|
221
|
+
const styles = getComputedStyle(fromEl);
|
|
222
|
+
if (Array.isArray(properties)) {
|
|
223
|
+
properties.forEach((prop)=>{
|
|
224
|
+
(0, _d3selection.select)(toEl).style(prop, styles.getPropertyValue(prop));
|
|
225
|
+
});
|
|
226
|
+
} else {
|
|
227
|
+
Object.entries(properties).forEach(([fromProp, toProp])=>{
|
|
228
|
+
(0, _d3selection.select)(toEl).style(toProp, styles.getPropertyValue(fromProp));
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["imageExporter.ts"],"sourcesContent":["import { create as d3Create, select as d3Select, Selection } from 'd3-selection';\nimport { resolveCSSVariables } from '../../utilities/index';\n\n/**\n * {@docCategory DeclarativeChart}\n */\nexport interface ImageExportOptions {\n width?: number;\n height?: number;\n scale?: number;\n background?: string;\n}\n\nexport function toImage(chartContainer?: HTMLElement | null, opts: ImageExportOptions = {}): Promise<string> {\n return new Promise((resolve, reject) => {\n if (!chartContainer) {\n return reject(new Error('Chart container is not defined'));\n }\n\n try {\n const background =\n typeof opts.background === 'string' ? resolveCSSVariables(chartContainer, opts.background) : 'transparent';\n const svg = toSVG(chartContainer, background);\n\n const svgData = new XMLSerializer().serializeToString(svg.node);\n const svgDataUrl = 'data:image/svg+xml;base64,' + btoa(unescapePonyfill(encodeURIComponent(svgData)));\n\n svgToPng(svgDataUrl, {\n width: opts.width || svg.width,\n height: opts.height || svg.height,\n scale: opts.scale,\n })\n .then(resolve)\n .catch(reject);\n } catch (err) {\n return reject(err);\n }\n });\n}\n\nconst SVG_STYLE_PROPERTIES = ['display', 'fill', 'fill-opacity', 'opacity', 'stroke', 'stroke-width', 'transform'];\nconst SVG_TEXT_STYLE_PROPERTIES = ['font-family', 'font-size', 'font-weight', 'text-anchor'];\n\nfunction toSVG(chartContainer: HTMLElement, background: string) {\n const svg = chartContainer.querySelector<SVGSVGElement>('svg');\n if (!svg) {\n throw new Error('SVG not found');\n }\n\n const clonedSvg = d3Select(svg.cloneNode(true) as SVGSVGElement)\n .attr('width', null)\n .attr('height', null)\n .attr('viewBox', null);\n const svgElements = svg.getElementsByTagName('*');\n const clonedSvgElements = clonedSvg.node()!.getElementsByTagName('*');\n\n for (let i = 0; i < svgElements.length; i++) {\n if (svgElements[i].tagName.toLowerCase() === 'text') {\n copyStyle([...SVG_STYLE_PROPERTIES, ...SVG_TEXT_STYLE_PROPERTIES], svgElements[i], clonedSvgElements[i]);\n } else {\n copyStyle(SVG_STYLE_PROPERTIES, svgElements[i], clonedSvgElements[i]);\n }\n }\n\n const { width: svgWidth, height: svgHeight } = svg.getBoundingClientRect();\n const legendGroup = cloneLegendsToSVG(chartContainer, svgWidth, svgHeight);\n const w1 = Math.max(svgWidth, legendGroup.width);\n const h1 = svgHeight + legendGroup.height;\n\n if (legendGroup.node) {\n clonedSvg.append(() => legendGroup.node);\n }\n clonedSvg\n .insert('rect', ':first-child')\n .attr('x', 0)\n .attr('y', 0)\n .attr('width', w1)\n .attr('height', h1)\n .attr('fill', background);\n clonedSvg.attr('width', w1).attr('height', h1).attr('viewBox', `0 0 ${w1} ${h1}`);\n\n return {\n node: clonedSvg.node()!,\n width: w1,\n height: h1,\n };\n}\n\nconst LEGEND_RECT_STYLE_PROPERTIES_MAP = {\n 'background-color': 'fill',\n 'border-color': 'stroke',\n};\nconst LEGEND_TEXT_STYLE_PROPERTIES_MAP = {\n color: 'fill',\n 'font-family': 'font-family',\n 'font-size': 'font-size',\n 'font-weight': 'font-weight',\n opacity: 'opacity',\n};\n\nfunction cloneLegendsToSVG(chartContainer: HTMLElement, svgWidth: number, svgHeight: number) {\n const legendButtons = chartContainer.querySelectorAll<HTMLElement>(`\n button.fui-legend__legend:not([data-overflowing]),\n .fui-donut__legendContainer button.fui-MenuButton,\n .fui-cart__legendContainer button.fui-MenuButton\n `);\n if (legendButtons.length === 0) {\n return {\n node: null,\n width: 0,\n height: 0,\n };\n }\n\n const legendGroup = d3Create<SVGGElement>('svg:g');\n let legendX = 0;\n let legendY = 8;\n let legendLine: Selection<SVGGElement, unknown, null, undefined>[] = [];\n const legendLines: (typeof legendLine)[] = [];\n const legendLineWidths: number[] = [];\n\n for (let i = 0; i < legendButtons.length; i++) {\n const { width: legendWidth } = legendButtons[i].getBoundingClientRect();\n const legendItem = legendGroup.append('g');\n\n legendLine.push(legendItem);\n if (legendX + legendWidth > svgWidth && legendLine.length > 1) {\n legendLine.pop();\n legendLines.push(legendLine);\n legendLineWidths.push(legendX);\n\n legendLine = [legendItem];\n legendX = 0;\n legendY += 32;\n }\n\n let legendText: HTMLDivElement | HTMLButtonElement | null;\n let textOffset = 0;\n\n if (!legendButtons[i].hasAttribute('data-overflow-menu')) {\n const legendRect = legendButtons[i].querySelector<HTMLDivElement>('.fui-legend__rect');\n\n legendText = legendButtons[i].querySelector<HTMLDivElement>('.fui-legend__text');\n legendItem\n .append('rect')\n .attr('x', legendX + 8)\n .attr('y', svgHeight + legendY + 8)\n .attr('width', 12)\n .attr('height', 12)\n .attr('stroke-width', 1)\n .call(selection => copyStyle(LEGEND_RECT_STYLE_PROPERTIES_MAP, legendRect!, selection.node()!));\n textOffset = 28;\n } else {\n legendText = legendButtons[i] as HTMLButtonElement;\n console.log(legendText!.textContent);\n textOffset = 8;\n }\n\n legendItem\n .append('text')\n .attr('x', legendX + textOffset)\n .attr('y', svgHeight + legendY + 8)\n .attr('dominant-baseline', 'hanging')\n .text(legendText!.textContent)\n .call(selection => copyStyle(LEGEND_TEXT_STYLE_PROPERTIES_MAP, legendText!, selection.node()!));\n legendX += legendWidth;\n }\n\n legendLines.push(legendLine);\n legendLineWidths.push(legendX);\n legendY += 32;\n\n const centerLegends = true;\n if (centerLegends) {\n legendLines.forEach((ln, idx) => {\n const offsetX = Math.max((svgWidth - legendLineWidths[idx]) / 2, 0);\n ln.forEach(item => {\n item.attr('transform', `translate(${offsetX}, 0)`);\n });\n });\n }\n\n return {\n node: legendGroup.node(),\n width: Math.max(...legendLineWidths),\n height: legendY,\n };\n}\n\nfunction svgToPng(svgDataUrl: string, opts: ImageExportOptions = {}): Promise<string> {\n return new Promise((resolve, reject) => {\n const scale = opts.scale || 1;\n const w0 = opts.width || 300;\n const h0 = opts.height || 150;\n const w1 = scale * w0;\n const h1 = scale * h0;\n\n const canvas = document.createElement('canvas');\n const img = new Image();\n\n canvas.width = w1;\n canvas.height = h1;\n\n img.onload = function () {\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return reject(new Error('Canvas context is null'));\n }\n\n ctx.clearRect(0, 0, w1, h1);\n ctx.drawImage(img, 0, 0, w1, h1);\n\n const imgData = canvas.toDataURL('image/png');\n resolve(imgData);\n };\n\n img.onerror = function (err) {\n reject(err);\n };\n\n img.src = svgDataUrl;\n });\n}\n\nconst hex2 = /^[\\da-f]{2}$/i;\nconst hex4 = /^[\\da-f]{4}$/i;\n\n/**\n * A ponyfill for the deprecated `unescape` method, taken from the `core-js` library.\n *\n * Source: {@link https://github.com/zloirock/core-js/blob/167136f479d3b8519953f2e4c534ecdd1031d3cf/packages/core-js/modules/es.unescape.js core-js/packages/core-js/modules/es.unescape.js}\n */\nfunction unescapePonyfill(str: string) {\n let result = '';\n const length = str.length;\n let index = 0;\n let chr;\n let part;\n while (index < length) {\n chr = str.charAt(index++);\n if (chr === '%') {\n if (str.charAt(index) === 'u') {\n part = str.slice(index + 1, index + 5);\n if (hex4.exec(part)) {\n result += String.fromCharCode(parseInt(part, 16));\n index += 5;\n continue;\n }\n } else {\n part = str.slice(index, index + 2);\n if (hex2.exec(part)) {\n result += String.fromCharCode(parseInt(part, 16));\n index += 2;\n continue;\n }\n }\n }\n result += chr;\n }\n return result;\n}\n\nfunction copyStyle(properties: string[] | Record<string, string>, fromEl: Element, toEl: Element) {\n const styles = getComputedStyle(fromEl);\n if (Array.isArray(properties)) {\n properties.forEach(prop => {\n d3Select(toEl).style(prop, styles.getPropertyValue(prop));\n });\n } else {\n Object.entries(properties).forEach(([fromProp, toProp]) => {\n d3Select(toEl).style(toProp, styles.getPropertyValue(fromProp));\n });\n }\n}\n"],"names":["toImage","chartContainer","opts","Promise","resolve","reject","Error","background","resolveCSSVariables","svg","toSVG","svgData","XMLSerializer","serializeToString","node","svgDataUrl","btoa","unescapePonyfill","encodeURIComponent","svgToPng","width","height","scale","then","catch","err","SVG_STYLE_PROPERTIES","SVG_TEXT_STYLE_PROPERTIES","querySelector","clonedSvg","d3Select","cloneNode","attr","svgElements","getElementsByTagName","clonedSvgElements","i","length","tagName","toLowerCase","copyStyle","svgWidth","svgHeight","getBoundingClientRect","legendGroup","cloneLegendsToSVG","w1","Math","max","h1","append","insert","LEGEND_RECT_STYLE_PROPERTIES_MAP","LEGEND_TEXT_STYLE_PROPERTIES_MAP","color","opacity","legendButtons","querySelectorAll","d3Create","legendX","legendY","legendLine","legendLines","legendLineWidths","legendWidth","legendItem","push","pop","legendText","textOffset","hasAttribute","legendRect","call","selection","console","log","textContent","text","centerLegends","forEach","ln","idx","offsetX","item","w0","h0","canvas","document","createElement","img","Image","onload","ctx","getContext","clearRect","drawImage","imgData","toDataURL","onerror","src","hex2","hex4","str","result","index","chr","part","charAt","slice","exec","String","fromCharCode","parseInt","properties","fromEl","toEl","styles","getComputedStyle","Array","isArray","prop","style","getPropertyValue","Object","entries","fromProp","toProp"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './DeclarativeChart';\nexport type { ImageExportOptions } from './imageExporter';\n"],"names":[],"rangeMappings":";;;;;","mappings":";;;;;uBAAc"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "Arc", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Arc;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
12
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
13
|
+
const _d3shape = require("d3-shape");
|
|
14
|
+
const _useArcStylesstyles = require("./useArcStyles.styles");
|
|
15
|
+
const _d3format = require("d3-format");
|
|
16
|
+
const _index = require("../../../utilities/index");
|
|
17
|
+
const Arc = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
18
|
+
var _props_data;
|
|
19
|
+
const arc = (0, _d3shape.arc)();
|
|
20
|
+
const currentRef = /*#__PURE__*/ _react.createRef();
|
|
21
|
+
const _isRTL = (0, _index.useRtl)();
|
|
22
|
+
const classes = (0, _useArcStylesstyles.useArcStyles)(props);
|
|
23
|
+
_react.useEffect(()=>{
|
|
24
|
+
_updateChart(props);
|
|
25
|
+
}, [
|
|
26
|
+
props
|
|
27
|
+
]);
|
|
28
|
+
function _onFocus(data, id) {
|
|
29
|
+
props.onFocusCallback(data, id, currentRef.current);
|
|
30
|
+
}
|
|
31
|
+
function _hoverOn(data, mouseEvent) {
|
|
32
|
+
mouseEvent.persist();
|
|
33
|
+
props.hoverOnCallback(data, mouseEvent);
|
|
34
|
+
}
|
|
35
|
+
function _hoverOff() {
|
|
36
|
+
props.hoverLeaveCallback();
|
|
37
|
+
}
|
|
38
|
+
function _onBlur() {
|
|
39
|
+
props.onBlurCallback();
|
|
40
|
+
}
|
|
41
|
+
function _getAriaLabel() {
|
|
42
|
+
var _point_callOutAccessibilityData;
|
|
43
|
+
const point = props.data.data;
|
|
44
|
+
const legend = point.xAxisCalloutData || point.legend;
|
|
45
|
+
const yValue = point.yAxisCalloutData || point.data || 0;
|
|
46
|
+
return ((_point_callOutAccessibilityData = point.callOutAccessibilityData) === null || _point_callOutAccessibilityData === void 0 ? void 0 : _point_callOutAccessibilityData.ariaLabel) || (legend ? `${legend}, ` : '') + `${yValue}.`;
|
|
47
|
+
}
|
|
48
|
+
function _renderArcLabel(className) {
|
|
49
|
+
const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;
|
|
50
|
+
if (hideLabels || Math.abs(data.endAngle - data.startAngle) < Math.PI / 12 || activeArc !== data.data.legend && activeArc !== '') {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const [base, perp] = arc.centroid({
|
|
54
|
+
...data,
|
|
55
|
+
innerRadius,
|
|
56
|
+
outerRadius
|
|
57
|
+
});
|
|
58
|
+
const hyp = Math.sqrt(base * base + perp * perp);
|
|
59
|
+
const labelRadius = Math.max(innerRadius, outerRadius) + 2;
|
|
60
|
+
const angle = (data.startAngle + data.endAngle) / 2;
|
|
61
|
+
const arcValue = data.value;
|
|
62
|
+
return /*#__PURE__*/ _react.createElement("text", {
|
|
63
|
+
x: (hyp === 0 ? 0 : base / hyp) * labelRadius,
|
|
64
|
+
y: (hyp === 0 ? 0 : perp / hyp) * labelRadius,
|
|
65
|
+
textAnchor: angle > Math.PI !== _isRTL ? 'end' : 'start',
|
|
66
|
+
dominantBaseline: angle > Math.PI / 2 && angle < 3 * Math.PI / 2 ? 'hanging' : 'auto',
|
|
67
|
+
className: className,
|
|
68
|
+
"aria-hidden": true
|
|
69
|
+
}, showLabelsInPercent ? (0, _d3format.format)('.0%')(totalValue === 0 ? 0 : arcValue / totalValue) : (0, _index.formatValueWithSIPrefix)(arcValue));
|
|
70
|
+
}
|
|
71
|
+
function _updateChart(newProps) {
|
|
72
|
+
if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {
|
|
73
|
+
newProps.arc.innerRadius(newProps.innerRadius);
|
|
74
|
+
newProps.arc.outerRadius(newProps.outerRadius);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const { href, focusedArcId } = props;
|
|
78
|
+
//TO DO 'replace' is throwing error
|
|
79
|
+
const id = props.uniqText + (typeof props.data.data.legend === 'string' ? props.data.data.legend.replace(/\s+/g, '') : '') + props.data.data.data;
|
|
80
|
+
const opacity = props.activeArc === props.data.data.legend || props.activeArc === '' ? 1 : 0.1;
|
|
81
|
+
return /*#__PURE__*/ _react.createElement("g", {
|
|
82
|
+
ref: currentRef
|
|
83
|
+
}, !!focusedArcId && focusedArcId === id && // TODO innerradius and outerradius were absent
|
|
84
|
+
/*#__PURE__*/ _react.createElement("path", {
|
|
85
|
+
id: id + 'focusRing',
|
|
86
|
+
d: arc({
|
|
87
|
+
...props.focusData,
|
|
88
|
+
innerRadius: props.innerRadius,
|
|
89
|
+
outerRadius: props.outerRadius
|
|
90
|
+
}),
|
|
91
|
+
className: classes.focusRing
|
|
92
|
+
}), /*#__PURE__*/ _react.createElement("path", {
|
|
93
|
+
// TODO innerradius and outerradius were absent
|
|
94
|
+
id: id,
|
|
95
|
+
d: arc({
|
|
96
|
+
...props.data,
|
|
97
|
+
innerRadius: props.innerRadius,
|
|
98
|
+
outerRadius: props.outerRadius
|
|
99
|
+
}),
|
|
100
|
+
className: classes.root,
|
|
101
|
+
style: {
|
|
102
|
+
fill: props.color,
|
|
103
|
+
cursor: href ? 'pointer' : 'default'
|
|
104
|
+
},
|
|
105
|
+
onFocus: _onFocus.bind(void 0, props.data.data, id),
|
|
106
|
+
"data-is-focusable": props.activeArc === props.data.data.legend || props.activeArc === '',
|
|
107
|
+
onMouseOver: _hoverOn.bind(void 0, props.data.data),
|
|
108
|
+
onMouseMove: _hoverOn.bind(void 0, props.data.data),
|
|
109
|
+
onMouseLeave: _hoverOff,
|
|
110
|
+
onBlur: _onBlur,
|
|
111
|
+
opacity: opacity,
|
|
112
|
+
onClick: (_props_data = props.data) === null || _props_data === void 0 ? void 0 : _props_data.data.onClick,
|
|
113
|
+
"aria-label": _getAriaLabel(),
|
|
114
|
+
role: "img"
|
|
115
|
+
}), _renderArcLabel(classes.arcLabel));
|
|
116
|
+
});
|
|
117
|
+
Arc.displayName = 'Arc';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Arc.tsx"],"sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { useArcStyles } from './useArcStyles.styles';\nimport { ChartDataPoint } from '../index';\nimport { ArcProps } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatValueWithSIPrefix, useRtl } from '../../../utilities/index';\n\n// Create a Arc within Donut Chart variant which uses these default styles and this styled subcomponent.\n/**\n * Arc component within Donut Chart.\n * {@docCategory ArcDonutChart}\n */\nexport const Arc: React.FunctionComponent<ArcProps> = React.forwardRef<HTMLDivElement, ArcProps>(\n (props, forwardedRef) => {\n const arc = d3Arc();\n const currentRef = React.createRef<SVGPathElement>();\n const _isRTL: boolean = useRtl();\n const classes = useArcStyles(props);\n\n React.useEffect(() => {\n _updateChart(props);\n }, [props]);\n\n function _onFocus(data: ChartDataPoint, id: string): void {\n props.onFocusCallback!(data, id, currentRef.current);\n }\n\n function _hoverOn(data: ChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n props.hoverOnCallback!(data, mouseEvent);\n }\n\n function _hoverOff(): void {\n props.hoverLeaveCallback!();\n }\n\n function _onBlur(): void {\n props.onBlurCallback!();\n }\n\n function _getAriaLabel(): string {\n const point = props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n }\n\n function _renderArcLabel(className: string) {\n const { data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid({ ...data!, innerRadius, outerRadius });\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== _isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatValueWithSIPrefix(arcValue)}\n </text>\n );\n }\n\n function _updateChart(newProps: ArcProps): void {\n if (newProps.arc && newProps.innerRadius && newProps.outerRadius) {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n }\n }\n\n const { href, focusedArcId } = props;\n //TO DO 'replace' is throwing error\n const id =\n props.uniqText! +\n (typeof props.data!.data.legend === 'string' ? props.data!.data.legend.replace(/\\s+/g, '') : '') +\n props.data!.data.data;\n const opacity: number = props.activeArc === props.data!.data.legend || props.activeArc === '' ? 1 : 0.1;\n return (\n <g ref={currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n // TODO innerradius and outerradius were absent\n <path\n id={id + 'focusRing'}\n d={arc({ ...props.focusData!, innerRadius: props.innerRadius, outerRadius: props.outerRadius })!}\n className={classes.focusRing}\n />\n )}\n <path\n // TODO innerradius and outerradius were absent\n id={id}\n d={arc({ ...props.data!, innerRadius: props.innerRadius, outerRadius: props.outerRadius })!}\n className={classes.root}\n style={{ fill: props.color, cursor: href ? 'pointer' : 'default' }}\n onFocus={_onFocus.bind(this, props.data!.data, id)}\n data-is-focusable={props.activeArc === props.data!.data.legend || props.activeArc === ''}\n onMouseOver={_hoverOn.bind(this, props.data!.data)}\n onMouseMove={_hoverOn.bind(this, props.data!.data)}\n onMouseLeave={_hoverOff}\n onBlur={_onBlur}\n opacity={opacity}\n onClick={props.data?.data.onClick}\n aria-label={_getAriaLabel()}\n role=\"img\"\n />\n {_renderArcLabel(classes.arcLabel)}\n </g>\n );\n },\n);\nArc.displayName = 'Arc';\n"],"names":["Arc","React","forwardRef","props","forwardedRef","arc","d3Arc","currentRef","createRef","_isRTL","useRtl","classes","useArcStyles","useEffect","_updateChart","_onFocus","data","id","onFocusCallback","current","_hoverOn","mouseEvent","persist","hoverOnCallback","_hoverOff","hoverLeaveCallback","_onBlur","onBlurCallback","_getAriaLabel","point","legend","xAxisCalloutData","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_renderArcLabel","className","innerRadius","outerRadius","showLabelsInPercent","totalValue","hideLabels","activeArc","Math","abs","endAngle","startAngle","PI","base","perp","centroid","hyp","sqrt","labelRadius","max","angle","arcValue","value","createElement","text","x","y","textAnchor","dominantBaseline","aria-hidden","d3Format","formatValueWithSIPrefix","newProps","href","focusedArcId","uniqText","replace","opacity","g","ref","path","d","focusData","focusRing","root","style","fill","color","cursor","onFocus","bind","data-is-focusable","onMouseOver","onMouseMove","onMouseLeave","onBlur","onClick","aria-label","role","arcLabel","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["Arc.types.ts"],"sourcesContent":["import { ChartDataPoint } from '../index';\nexport interface ArcProps {\n /**\n * Data to render in the Arc.\n */\n data?: ArcData;\n\n /**\n * Data to render focused Arc\n */\n focusData?: ArcData;\n\n /**\n * id of the focused arc\n */\n focusedArcId?: string;\n /**\n * shape for Arc.\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n arc?: any;\n\n /**\n * innerRadius of the Arc.\n */\n innerRadius: number;\n\n /**\n * outerRadius of the Arc.\n */\n outerRadius: number;\n\n /**\n * Color for the Arc.\n */\n color: string;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n hoverOnCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n onFocusCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering Leave the legend\n */\n onBlurCallback?: Function;\n\n /**\n * Defines the function that is executed upon hovering Leave the legend\n */\n hoverLeaveCallback?: Function;\n\n /**\n * Uniq string for chart\n */\n uniqText?: string;\n\n /**\n * string for callout id\n */\n calloutId?: string;\n\n /**\n * Active Arc for chart\n */\n activeArc?: string;\n\n /**\n * internal prop for href\n */\n href?: string;\n\n /**\n * props for inside donut value\n */\n valueInsideDonut?: string | number;\n\n /**\n * Prop to show the arc labels in percentage format\n */\n showLabelsInPercent?: boolean;\n\n /**\n * Prop used to define the sum of all arc values\n */\n totalValue?: number;\n\n /**\n * Prop to hide the arc labels\n */\n hideLabels?: boolean;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ArcStyles;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n}\n\nexport interface ArcData {\n /**\n * Data to render in the chart for individual arc.\n */\n data: ChartDataPoint;\n /**\n * endAngle of the Arc\n */\n endAngle: number;\n /**\n * index of the Arc\n */\n index: number;\n /**\n * padAngle of the Arc\n */\n padAngle: number;\n /**\n * startAngle of the Arc\n */\n startAngle: number;\n /**\n * value of the Arc\n */\n value: number;\n}\n\nexport interface ArcStyles {\n /**\n * Style set for the card header component root\n */\n root: string;\n\n /**\n * styles for the focus\n */\n focusRing: string;\n\n /**\n * Style for the arc labels\n */\n arcLabel: string;\n}\n"],"names":[],"rangeMappings":"","mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"sourcesContent":["export * from './Arc';\nexport * from './Arc.types';\n"],"names":[],"rangeMappings":";;;;;;","mappings":";;;;;uBAAc;uBACA"}
|