@fluentui/react-charts 9.2.3 → 9.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/CHANGELOG.md +49 -10
  2. package/dist/index.d.ts +98 -5
  3. package/lib/components/AreaChart/AreaChart.js +3 -3
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/AreaChart/useAreaChartStyles.styles.js +2 -2
  6. package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  7. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +3 -15
  8. package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
  9. package/lib/components/ChartTable/ChartTable.js +89 -6
  10. package/lib/components/ChartTable/ChartTable.js.map +1 -1
  11. package/lib/components/CommonComponents/CartesianChart.js +38 -34
  12. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  13. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  14. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +17 -14
  15. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  16. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +6 -33
  17. package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  18. package/lib/components/DeclarativeChart/DeclarativeChart.js +55 -16
  19. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  20. package/lib/components/DeclarativeChart/PlotlyColorAdapter.js +19 -0
  21. package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
  22. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +1058 -291
  23. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  24. package/lib/components/DonutChart/Arc/useArcStyles.styles.js +8 -3
  25. package/lib/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  26. package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js +6 -2
  27. package/lib/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
  28. package/lib/components/DonutChart/DonutChart.js +6 -1
  29. package/lib/components/DonutChart/DonutChart.js.map +1 -1
  30. package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
  31. package/lib/components/DonutChart/useDonutChartStyles.styles.js +21 -4
  32. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  33. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js +8 -4
  34. package/lib/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  35. package/lib/components/FunnelChart/FunnelChart.js +4 -2
  36. package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
  37. package/lib/components/FunnelChart/funnelGeometry.js.map +1 -1
  38. package/lib/components/GaugeChart/GaugeChart.js +1 -2
  39. package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
  40. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +2 -2
  41. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  42. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +4 -17
  43. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  44. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +4 -21
  45. package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
  46. package/lib/components/HorizontalBarChart/HorizontalBarChart.js +1 -1
  47. package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  48. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +7 -3
  49. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
  50. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +5 -2
  51. package/lib/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
  52. package/lib/components/LineChart/LineChart.js +271 -271
  53. package/lib/components/LineChart/LineChart.js.map +1 -1
  54. package/lib/components/LineChart/LineChart.types.js.map +1 -1
  55. package/lib/components/LineChart/useLineChartStyles.styles.js +23 -10
  56. package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  57. package/lib/components/LineChart/useLineChartStyles.styles.raw.js +4 -21
  58. package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  59. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  60. package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
  61. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +12 -25
  62. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  63. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js +2 -12
  64. package/lib/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  65. package/lib/components/ScatterChart/ScatterChart.js +114 -75
  66. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  67. package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
  68. package/lib/components/ScatterChart/useScatterChartStyles.styles.js +11 -7
  69. package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  70. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +4 -22
  71. package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
  72. package/lib/components/VerticalBarChart/VerticalBarChart.js +2 -2
  73. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  74. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +8 -6
  75. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  76. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +5 -19
  77. package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
  78. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +2 -2
  79. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  80. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +7 -6
  81. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  82. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +4 -19
  83. package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
  84. package/lib/types/DataPoint.js +3 -1
  85. package/lib/types/DataPoint.js.map +1 -1
  86. package/lib/utilities/Common.styles.js +47 -0
  87. package/lib/utilities/Common.styles.js.map +1 -0
  88. package/lib/utilities/Common.styles.raw.js +47 -0
  89. package/lib/utilities/Common.styles.raw.js.map +1 -0
  90. package/lib/utilities/SVGTooltipText.js.map +1 -1
  91. package/lib/utilities/image-export-utils.js.map +1 -1
  92. package/lib/utilities/index.js +1 -0
  93. package/lib/utilities/index.js.map +1 -1
  94. package/lib/utilities/scatterpolar-utils.js +52 -0
  95. package/lib/utilities/scatterpolar-utils.js.map +1 -0
  96. package/lib/utilities/utilities.js +309 -142
  97. package/lib/utilities/utilities.js.map +1 -1
  98. package/lib/utilities/vbc-utils.js.map +1 -1
  99. package/lib-commonjs/components/AreaChart/AreaChart.js +2 -2
  100. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  101. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
  102. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +2 -14
  103. package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
  104. package/lib-commonjs/components/ChartTable/ChartTable.js +89 -6
  105. package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
  106. package/lib-commonjs/components/CommonComponents/CartesianChart.js +38 -34
  107. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  108. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  109. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +15 -13
  110. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  111. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -32
  112. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
  113. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +58 -19
  114. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  115. package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js +22 -0
  116. package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -1
  117. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +1070 -291
  118. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  119. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js +12 -3
  120. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.js.map +1 -1
  121. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js +6 -2
  122. package/lib-commonjs/components/DonutChart/Arc/useArcStyles.styles.raw.js.map +1 -1
  123. package/lib-commonjs/components/DonutChart/DonutChart.js +6 -1
  124. package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
  125. package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
  126. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +32 -4
  127. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  128. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js +8 -4
  129. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.raw.js.map +1 -1
  130. package/lib-commonjs/components/FunnelChart/FunnelChart.js +4 -2
  131. package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
  132. package/lib-commonjs/components/FunnelChart/funnelGeometry.js.map +1 -1
  133. package/lib-commonjs/components/GaugeChart/GaugeChart.js +1 -2
  134. package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
  135. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +2 -2
  136. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  137. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -19
  138. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
  139. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +3 -20
  140. package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
  141. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +1 -1
  142. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  143. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js +10 -3
  144. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.js.map +1 -1
  145. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js +5 -2
  146. package/lib-commonjs/components/HorizontalBarChart/useHorizontalBarChartStyles.styles.raw.js.map +1 -1
  147. package/lib-commonjs/components/LineChart/LineChart.js +269 -269
  148. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  149. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
  150. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +30 -9
  151. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  152. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +2 -20
  153. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  154. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -1
  155. package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
  156. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +23 -33
  157. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  158. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js +1 -12
  159. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.raw.js.map +1 -1
  160. package/lib-commonjs/components/ScatterChart/ScatterChart.js +112 -73
  161. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  162. package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
  163. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +13 -7
  164. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
  165. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +2 -20
  166. package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
  167. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +1 -1
  168. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  169. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +5 -3
  170. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
  171. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +3 -17
  172. package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
  173. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
  174. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  175. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +5 -3
  176. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
  177. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +3 -18
  178. package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
  179. package/lib-commonjs/types/DataPoint.js +3 -1
  180. package/lib-commonjs/types/DataPoint.js.map +1 -1
  181. package/lib-commonjs/utilities/Common.styles.js +71 -0
  182. package/lib-commonjs/utilities/Common.styles.js.map +1 -0
  183. package/lib-commonjs/utilities/Common.styles.raw.js +71 -0
  184. package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -0
  185. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  186. package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
  187. package/lib-commonjs/utilities/index.js +1 -0
  188. package/lib-commonjs/utilities/index.js.map +1 -1
  189. package/lib-commonjs/utilities/scatterpolar-utils.js +67 -0
  190. package/lib-commonjs/utilities/scatterpolar-utils.js.map +1 -0
  191. package/lib-commonjs/utilities/utilities.js +322 -133
  192. package/lib-commonjs/utilities/utilities.js.map +1 -1
  193. package/lib-commonjs/utilities/vbc-utils.js.map +1 -1
  194. package/package.json +9 -9
@@ -4,14 +4,15 @@ import { select as d3Select, pointer } from 'd3-selection';
4
4
  import { bisector } from 'd3-array';
5
5
  import { Legends } from '../Legends/index';
6
6
  import { line as d3Line } from 'd3-shape';
7
- import { max as d3Max, min as d3Min } from 'd3-array';
7
+ import { max as d3Max } from 'd3-array';
8
8
  import { useId } from '@fluentui/react-utilities';
9
9
  import { find } from '../../utilities/index';
10
10
  import { CartesianChart } from '../../index';
11
11
  import { EventsAnnotation } from './eventAnnotation/EventAnnotation';
12
12
  import { tokens } from '@fluentui/react-theme';
13
- import { calloutData, ChartTypes, getXAxisType, XAxisTypes, tooltipOfAxislabels, Points, pointTypes, getTypeOfAxis, getNextColor, getColorFromToken, findNumericMinMaxOfY, createNumericYAxis, domainRangeOfDateForAreaLineVerticalBarChart, domainRangeOfNumericForAreaChart, createStringYAxis, useRtl, formatDate, getCurveFactory } from '../../utilities/index';
13
+ import { calloutData, ChartTypes, getXAxisType, XAxisTypes, tooltipOfAxislabels, Points, pointTypes, getTypeOfAxis, getNextColor, getColorFromToken, findNumericMinMaxOfY, createNumericYAxis, domainRangeOfDateForAreaLineScatterVerticalBarCharts, domainRangeOfNumericForAreaLineScatterCharts, createStringYAxis, useRtl, formatDate, getCurveFactory, isScatterPolarSeries, getDomainPaddingForMarkers, isPlottable, getRangeForScatterMarkerSize } from '../../utilities/index';
14
14
  import { toImage } from '../../utilities/image-export-utils';
15
+ import { renderScatterPolarCategoryLabels } from '../../utilities/scatterpolar-utils';
15
16
  var PointSize = /*#__PURE__*/ function(PointSize) {
16
17
  PointSize[PointSize["hoverSize"] = 11] = "hoverSize";
17
18
  PointSize[PointSize["invisibleSize"] = 1] = "invisibleSize";
@@ -91,6 +92,8 @@ const PATH_MULTIPLY_SIZE = 2.5;
91
92
  */ export const LineChart = /*#__PURE__*/ React.forwardRef((props, forwardedRef)=>{
92
93
  var _props_legendProps_selectedLegends, _props_legendProps;
93
94
  let _hasMarkersMode = false;
95
+ let _isXAxisDateType = false;
96
+ let _isScatterPolar = false;
94
97
  let _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);
95
98
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
96
99
  let _calloutPoints = calloutData(_points) || [];
@@ -119,11 +122,6 @@ const PATH_MULTIPLY_SIZE = 2.5;
119
122
  const _isRTL = useRtl();
120
123
  let xAxisCalloutAccessibilityData = {};
121
124
  const cartesianChartRef = React.useRef(null);
122
- let _xMin = Number.NEGATIVE_INFINITY;
123
- let _yMin = Number.NEGATIVE_INFINITY;
124
- let _xMax = Number.POSITIVE_INFINITY;
125
- let _xPadding = 0;
126
- let _yPadding = 0;
127
125
  let _yScaleSecondary;
128
126
  const _legendsRef = React.useRef(null);
129
127
  props.eventAnnotationProps && props.eventAnnotationProps.labelHeight && (eventLabelHeight = props.eventAnnotationProps.labelHeight);
@@ -144,6 +142,9 @@ const PATH_MULTIPLY_SIZE = 2.5;
144
142
  y: 0
145
143
  });
146
144
  const [isPopoverOpen, setPopoverOpen] = React.useState(false);
145
+ const [YValue, setYValue] = React.useState('');
146
+ const [legendVal, setLegendVal] = React.useState('');
147
+ const [lineColor, setLineColor] = React.useState('');
147
148
  const pointsRef = React.useRef([]);
148
149
  const calloutPointsRef = React.useRef([]);
149
150
  const classes = useLineChartStyles(props);
@@ -172,14 +173,10 @@ const PATH_MULTIPLY_SIZE = 2.5;
172
173
  }, []);
173
174
  function _getDomainNRangeValues(points, margins, width, chartType, isRTL, xAxisType, barWidth, tickValues, shiftX) {
174
175
  let domainNRangeValue;
175
- if (_hasMarkersMode && xAxisType === XAxisTypes.NumericAxis) {
176
- domainNRangeValue = _getDomainNRangeValuesWithPadding(points, margins, width, isRTL);
177
- } else if (_hasMarkersMode && xAxisType === XAxisTypes.DateAxis) {
178
- domainNRangeValue = _getDomainNRangeValuesOfDateWithPadding(points, margins, width, isRTL, tickValues, chartType, barWidth);
179
- } else if (xAxisType === XAxisTypes.NumericAxis) {
180
- domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);
176
+ if (xAxisType === XAxisTypes.NumericAxis) {
177
+ domainNRangeValue = domainRangeOfNumericForAreaLineScatterCharts(points, margins, width, isRTL, props.xScaleType, _hasMarkersMode);
181
178
  } else if (xAxisType === XAxisTypes.DateAxis) {
182
- domainNRangeValue = domainRangeOfDateForAreaLineVerticalBarChart(points, margins, width, isRTL, tickValues, chartType, barWidth);
179
+ domainNRangeValue = domainRangeOfDateForAreaLineScatterVerticalBarCharts(points, margins, width, isRTL, tickValues, chartType, barWidth, _hasMarkersMode);
183
180
  } else {
184
181
  domainNRangeValue = {
185
182
  dStartValue: 0,
@@ -202,6 +199,7 @@ const PATH_MULTIPLY_SIZE = 2.5;
202
199
  var _item_lineOptions_mode_includes, _item_lineOptions_mode, _item_lineOptions;
203
200
  return (_item_lineOptions = item.lineOptions) === null || _item_lineOptions === void 0 ? void 0 : (_item_lineOptions_mode = _item_lineOptions.mode) === null || _item_lineOptions_mode === void 0 ? void 0 : (_item_lineOptions_mode_includes = _item_lineOptions_mode.includes) === null || _item_lineOptions_mode_includes === void 0 ? void 0 : _item_lineOptions_mode_includes.call(_item_lineOptions_mode, 'markers');
204
201
  })) !== null && _filteredData_some !== void 0 ? _filteredData_some : false;
202
+ _isScatterPolar = isScatterPolarSeries(filteredData);
205
203
  return filteredData ? filteredData.map((item, index)=>{
206
204
  let color;
207
205
  if (typeof item.color === 'undefined') {
@@ -233,16 +231,19 @@ const PATH_MULTIPLY_SIZE = 2.5;
233
231
  function _getCustomizedCallout() {
234
232
  return props.onRenderCalloutPerStack ? props.onRenderCalloutPerStack(stackCalloutProps) : props.onRenderCalloutPerDataPoint ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps) : null;
235
233
  }
236
- function _getNumericMinMaxOfY(points) {
234
+ function _getNumericMinMaxOfY(points, yAxisType, useSecondaryYScale) {
237
235
  // eslint-disable-next-line @typescript-eslint/no-shadow
238
- const { startValue, endValue } = findNumericMinMaxOfY(points);
239
- _yMin = startValue;
236
+ const { startValue, endValue } = findNumericMinMaxOfY(points, yAxisType, useSecondaryYScale, useSecondaryYScale ? props.secondaryYScaleType : props.yScaleType);
237
+ let yPadding = {
238
+ start: 0,
239
+ end: 0
240
+ };
240
241
  if (_hasMarkersMode) {
241
- _yPadding = (endValue - startValue) * 0.1;
242
+ yPadding = getDomainPaddingForMarkers(startValue, endValue, useSecondaryYScale ? props.secondaryYScaleType : props.yScaleType);
242
243
  }
243
244
  return {
244
- startValue: startValue - _yPadding,
245
- endValue: endValue + _yPadding
245
+ startValue: startValue - yPadding.start,
246
+ endValue: endValue + yPadding.end
246
247
  };
247
248
  }
248
249
  function _getMargins(_margins) {
@@ -404,11 +405,6 @@ const PATH_MULTIPLY_SIZE = 2.5;
404
405
  }
405
406
  }
406
407
  }
407
- function _getRangeForScatterMarkerSize(yScale, yPadding) {
408
- const extraXPixels = _isRTL ? _xAxisScale(_xMax - _xPadding) - _xAxisScale(_xMax) : _xAxisScale(_xMin + _xPadding) - _xAxisScale(_xMin);
409
- const extraYPixels = yScale(_yMin) - yScale(_yMin + _yPadding);
410
- return Math.min(extraXPixels, extraYPixels);
411
- }
412
408
  function _createLines(xElement, containerHeight) {
413
409
  const lines = [];
414
410
  if (isSelectedLegend) {
@@ -416,7 +412,6 @@ const PATH_MULTIPLY_SIZE = 2.5;
416
412
  } else {
417
413
  _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);
418
414
  }
419
- const extraMaxPixels = _hasMarkersMode ? _getRangeForScatterMarkerSize(_yScalePrimary, _yPadding) : 0;
420
415
  const maxMarkerSize = d3Max(_points, (point)=>{
421
416
  return d3Max(point.data, (item)=>{
422
417
  return item.markerSize;
@@ -430,44 +425,64 @@ const PATH_MULTIPLY_SIZE = 2.5;
430
425
  const legendVal = _points[i].legend;
431
426
  const lineColor = _points[i].color;
432
427
  const verticaLineHeight = containerHeight - margins.bottom + 6;
433
- const yScale = _points[i].useSecondaryYScale && _yScaleSecondary ? _yScaleSecondary : _yScalePrimary;
428
+ const useSecondaryYScale = !!(_points[i].useSecondaryYScale && _yScaleSecondary);
429
+ const yScale = useSecondaryYScale ? _yScaleSecondary : _yScalePrimary;
430
+ const extraMaxPixels = _hasMarkersMode ? getRangeForScatterMarkerSize({
431
+ data: _points,
432
+ xScale: _xAxisScale,
433
+ yScalePrimary: _yScalePrimary,
434
+ yScaleSecondary: _yScaleSecondary,
435
+ useSecondaryYScale,
436
+ xScaleType: props.xScaleType,
437
+ yScaleType: props.yScaleType,
438
+ secondaryYScaleType: props.secondaryYScaleType
439
+ }) : 0;
434
440
  if (_points[i].data.length === 1) {
435
441
  // eslint-disable-next-line @typescript-eslint/no-shadow
436
442
  const { x: x1, y: y1, xAxisCalloutData, xAxisCalloutAccessibilityData } = _points[i].data[0];
437
- const circleId = `${_circleId}_${i}`;
438
- const isLegendSelected = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;
439
- const currentMarkerSize = _points[i].data[0].markerSize;
440
- var _points_i_data__text;
441
- pointsForLine.push(/*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("circle", {
442
- id: circleId,
443
- key: circleId,
444
- r: currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : activePoint === circleId ? 5.5 : 3.5,
445
- cx: _xAxisScale(x1),
446
- cy: yScale(y1),
447
- fill: activePoint === circleId ? tokens.colorNeutralBackground1 : lineColor,
448
- opacity: isLegendSelected ? 1 : 0.1,
449
- tabIndex: isLegendSelected ? 0 : undefined,
450
- onMouseOver: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale),
451
- onMouseMove: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale),
452
- onMouseOut: _handleMouseOut,
453
- strokeWidth: activePoint === circleId ? DEFAULT_LINE_STROKE_SIZE : 0,
454
- stroke: activePoint === circleId ? lineColor : '',
455
- role: "img",
456
- "aria-label": (_points_i_data__text = _points[i].data[0].text) !== null && _points_i_data__text !== void 0 ? _points_i_data__text : _getAriaLabel(i, 0),
457
- "data-is-focusable": isLegendSelected,
458
- ref: (e)=>{
459
- _refCallback(e, circleId);
460
- },
461
- onFocus: (event)=>_handleFocus(event, circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData),
462
- onBlur: _handleMouseOut,
463
- ..._getClickHandler(_points[i].data[0].onDataPointClick)
464
- }), _points[i].data[0].text && /*#__PURE__*/ React.createElement("text", {
465
- key: `${circleId}-label`,
466
- x: _xAxisScale(x1),
467
- y: yScale(y1) + Math.max(currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : 3.5, 4) + 12,
468
- className: classes.markerLabel,
469
- opacity: isLegendSelected ? 1 : 0.1
470
- }, _points[i].data[0].text)));
443
+ const xPoint = _xAxisScale(x1);
444
+ const yPoint = yScale(y1);
445
+ if (isPlottable(xPoint, yPoint)) {
446
+ var _points_i_lineOptions_mode, _points_i_lineOptions1;
447
+ const circleId = `${_circleId}_${i}`;
448
+ const isLegendSelected = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;
449
+ const currentMarkerSize = _points[i].data[0].markerSize;
450
+ const supportsTextMode = (_points_i_lineOptions1 = _points[i].lineOptions) === null || _points_i_lineOptions1 === void 0 ? void 0 : (_points_i_lineOptions_mode = _points_i_lineOptions1.mode) === null || _points_i_lineOptions_mode === void 0 ? void 0 : _points_i_lineOptions_mode.includes('text');
451
+ const text = _points[i].data[0].text;
452
+ var _points_i_data__text;
453
+ pointsForLine.push(/*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(React.Fragment, {
454
+ key: `${circleId}_fragment`
455
+ }, /*#__PURE__*/ React.createElement("circle", {
456
+ id: circleId,
457
+ key: circleId,
458
+ r: currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : activePoint === circleId ? 5.5 : 3.5,
459
+ cx: xPoint,
460
+ cy: yPoint,
461
+ fill: activePoint === circleId ? tokens.colorNeutralBackground1 : lineColor,
462
+ opacity: isLegendSelected ? 1 : 0.1,
463
+ tabIndex: isLegendSelected ? 0 : undefined,
464
+ onMouseOver: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale, legendVal, lineColor),
465
+ onMouseMove: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale, legendVal, lineColor),
466
+ onMouseOut: _handleMouseOut,
467
+ strokeWidth: activePoint === circleId ? DEFAULT_LINE_STROKE_SIZE : 0,
468
+ stroke: activePoint === circleId ? lineColor : '',
469
+ role: "img",
470
+ "aria-label": (_points_i_data__text = _points[i].data[0].text) !== null && _points_i_data__text !== void 0 ? _points_i_data__text : _getAriaLabel(i, 0),
471
+ "data-is-focusable": isLegendSelected,
472
+ ref: (e)=>{
473
+ _refCallback(e, circleId);
474
+ },
475
+ onFocus: (event)=>_handleFocus(event, circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData),
476
+ onBlur: _handleMouseOut,
477
+ ..._getClickHandler(_points[i].data[0].onDataPointClick)
478
+ }), !_isScatterPolar && supportsTextMode && text && /*#__PURE__*/ React.createElement("text", {
479
+ key: `${circleId}-label`,
480
+ x: xPoint,
481
+ y: yPoint + Math.max(currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : 3.5, 4) + 12,
482
+ className: classes.markerLabel,
483
+ opacity: isLegendSelected ? 1 : 0.1
484
+ }, text))));
485
+ }
471
486
  }
472
487
  let gapIndex = 0;
473
488
  var _points_i_gaps_sort;
@@ -475,13 +490,13 @@ const PATH_MULTIPLY_SIZE = 2.5;
475
490
  const lineCurve = (_points_i_lineOptions = _points[i].lineOptions) === null || _points_i_lineOptions === void 0 ? void 0 : _points_i_lineOptions.curve;
476
491
  // Use path rendering technique for larger datasets to optimize performance.
477
492
  if ((props.optimizeLargeData || lineCurve) && _points[i].data.length > 1) {
478
- var _points_i_lineOptions1;
493
+ var _points_i_lineOptions2;
479
494
  const line = d3Line()// eslint-disable-next-line @typescript-eslint/no-explicit-any
480
495
  .x((d)=>_xAxisScale(d[0]))// eslint-disable-next-line @typescript-eslint/no-explicit-any
481
- .y((d)=>yScale(d[1])).curve(getCurveFactory(lineCurve));
496
+ .y((d)=>yScale(d[1])).curve(getCurveFactory(lineCurve)).defined((d)=>isPlottable(_xAxisScale(d[0]), yScale(d[1])));
482
497
  const lineId = `${_lineId}_${i}`;
483
498
  const borderId = `${_borderId}_${i}`;
484
- const strokeWidth = ((_points_i_lineOptions1 = _points[i].lineOptions) === null || _points_i_lineOptions1 === void 0 ? void 0 : _points_i_lineOptions1.strokeWidth) || props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;
499
+ const strokeWidth = ((_points_i_lineOptions2 = _points[i].lineOptions) === null || _points_i_lineOptions2 === void 0 ? void 0 : _points_i_lineOptions2.strokeWidth) || props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;
485
500
  const isLegendSelected = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;
486
501
  const lineData = [];
487
502
  for(let k = 0; k < _points[i].data.length; k++){
@@ -491,19 +506,19 @@ const PATH_MULTIPLY_SIZE = 2.5;
491
506
  ]);
492
507
  }
493
508
  if (isLegendSelected) {
494
- var _points_i_lineOptions2, _points_i_lineOptions3;
495
- const lineBorderWidth = ((_points_i_lineOptions2 = _points[i].lineOptions) === null || _points_i_lineOptions2 === void 0 ? void 0 : _points_i_lineOptions2.lineBorderWidth) ? Number.parseFloat(_points[i].lineOptions.lineBorderWidth.toString()) : 0;
509
+ var _points_i_lineOptions3, _points_i_lineOptions4;
510
+ const lineBorderWidth = ((_points_i_lineOptions3 = _points[i].lineOptions) === null || _points_i_lineOptions3 === void 0 ? void 0 : _points_i_lineOptions3.lineBorderWidth) ? Number.parseFloat(_points[i].lineOptions.lineBorderWidth.toString()) : 0;
496
511
  if (lineBorderWidth > 0) {
497
- var _points_i_lineOptions4, _points_i_lineOptions5;
512
+ var _points_i_lineOptions5, _points_i_lineOptions6;
498
513
  var _points_i_lineOptions_strokeLinecap;
499
514
  bordersForLine.push(/*#__PURE__*/ React.createElement("path", {
500
515
  id: borderId,
501
516
  key: borderId,
502
517
  d: line(lineData),
503
518
  fill: "transparent",
504
- strokeLinecap: (_points_i_lineOptions_strokeLinecap = (_points_i_lineOptions4 = _points[i].lineOptions) === null || _points_i_lineOptions4 === void 0 ? void 0 : _points_i_lineOptions4.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap !== void 0 ? _points_i_lineOptions_strokeLinecap : 'round',
519
+ strokeLinecap: (_points_i_lineOptions_strokeLinecap = (_points_i_lineOptions5 = _points[i].lineOptions) === null || _points_i_lineOptions5 === void 0 ? void 0 : _points_i_lineOptions5.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap !== void 0 ? _points_i_lineOptions_strokeLinecap : 'round',
505
520
  strokeWidth: Number.parseFloat(strokeWidth.toString()) + lineBorderWidth,
506
- stroke: ((_points_i_lineOptions5 = _points[i].lineOptions) === null || _points_i_lineOptions5 === void 0 ? void 0 : _points_i_lineOptions5.lineBorderColor) || tokens.colorNeutralBackground1,
521
+ stroke: ((_points_i_lineOptions6 = _points[i].lineOptions) === null || _points_i_lineOptions6 === void 0 ? void 0 : _points_i_lineOptions6.lineBorderColor) || tokens.colorNeutralBackground1,
507
522
  opacity: 1
508
523
  }));
509
524
  }
@@ -516,7 +531,7 @@ const PATH_MULTIPLY_SIZE = 2.5;
516
531
  "data-is-focusable": true,
517
532
  stroke: lineColor,
518
533
  strokeWidth: strokeWidth,
519
- strokeLinecap: (_points_i_lineOptions_strokeLinecap1 = (_points_i_lineOptions3 = _points[i].lineOptions) === null || _points_i_lineOptions3 === void 0 ? void 0 : _points_i_lineOptions3.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap1 !== void 0 ? _points_i_lineOptions_strokeLinecap1 : 'round',
534
+ strokeLinecap: (_points_i_lineOptions_strokeLinecap1 = (_points_i_lineOptions4 = _points[i].lineOptions) === null || _points_i_lineOptions4 === void 0 ? void 0 : _points_i_lineOptions4.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap1 !== void 0 ? _points_i_lineOptions_strokeLinecap1 : 'round',
520
535
  onMouseMove: (event)=>_onMouseOverLargeDataset.bind(i, verticaLineHeight, event, yScale),
521
536
  onMouseOver: (event)=>_onMouseOverLargeDataset.bind(i, verticaLineHeight, event, yScale),
522
537
  onMouseOut: _handleMouseOut,
@@ -525,7 +540,7 @@ const PATH_MULTIPLY_SIZE = 2.5;
525
540
  tabIndex: isLegendSelected ? 0 : undefined
526
541
  }));
527
542
  } else {
528
- var _points_i_lineOptions6;
543
+ var _points_i_lineOptions7;
529
544
  var _points_i_lineOptions_strokeLinecap2;
530
545
  linesForLine.push(/*#__PURE__*/ React.createElement("path", {
531
546
  id: lineId,
@@ -535,7 +550,7 @@ const PATH_MULTIPLY_SIZE = 2.5;
535
550
  "data-is-focusable": false,
536
551
  stroke: lineColor,
537
552
  strokeWidth: strokeWidth,
538
- strokeLinecap: (_points_i_lineOptions_strokeLinecap2 = (_points_i_lineOptions6 = _points[i].lineOptions) === null || _points_i_lineOptions6 === void 0 ? void 0 : _points_i_lineOptions6.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap2 !== void 0 ? _points_i_lineOptions_strokeLinecap2 : 'round',
553
+ strokeLinecap: (_points_i_lineOptions_strokeLinecap2 = (_points_i_lineOptions7 = _points[i].lineOptions) === null || _points_i_lineOptions7 === void 0 ? void 0 : _points_i_lineOptions7.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap2 !== void 0 ? _points_i_lineOptions_strokeLinecap2 : 'round',
539
554
  opacity: 0.1
540
555
  }));
541
556
  }
@@ -555,7 +570,7 @@ const PATH_MULTIPLY_SIZE = 2.5;
555
570
  }));
556
571
  } else if (!props.optimizeLargeData) {
557
572
  for(let j = 1; j < _points[i].data.length; j++){
558
- var _points_i_lineOptions7, _points_i_lineOptions_mode, _points_i_lineOptions8, _points_i_lineOptions_mode1, _points_i_lineOptions9;
573
+ var _points_i_lineOptions8, _points_i_lineOptions_mode1, _points_i_lineOptions9, _points_i_lineOptions_mode2, _points_i_lineOptions10;
559
574
  const gapResult = _checkInGap(j, gaps, gapIndex);
560
575
  const isInGap = gapResult.isInGap;
561
576
  gapIndex = gapResult.gapIndex;
@@ -564,147 +579,159 @@ const PATH_MULTIPLY_SIZE = 2.5;
564
579
  const circleId = `${_circleId}_${i}_${j}`;
565
580
  const { x: x1, y: y1, xAxisCalloutData, xAxisCalloutAccessibilityData } = _points[i].data[j - 1];
566
581
  const { x: x2, y: y2 } = _points[i].data[j];
567
- let path = _getPath(_xAxisScale(x1), yScale(y1), circleId, j, false, _points[i].index);
568
- const strokeWidth = ((_points_i_lineOptions7 = _points[i].lineOptions) === null || _points_i_lineOptions7 === void 0 ? void 0 : _points_i_lineOptions7.strokeWidth) || props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;
582
+ const xPoint1 = _xAxisScale(x1);
583
+ const yPoint1 = yScale(y1);
584
+ const xPoint2 = _xAxisScale(x2);
585
+ const yPoint2 = yScale(y2);
586
+ const strokeWidth = ((_points_i_lineOptions8 = _points[i].lineOptions) === null || _points_i_lineOptions8 === void 0 ? void 0 : _points_i_lineOptions8.strokeWidth) || props.strokeWidth || DEFAULT_LINE_STROKE_SIZE;
569
587
  const isLegendSelected = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;
570
588
  const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;
589
+ const supportsTextMode = (_points_i_lineOptions9 = _points[i].lineOptions) === null || _points_i_lineOptions9 === void 0 ? void 0 : (_points_i_lineOptions_mode1 = _points_i_lineOptions9.mode) === null || _points_i_lineOptions_mode1 === void 0 ? void 0 : _points_i_lineOptions_mode1.includes('text');
590
+ const text = _points[i].data[j - 1].text;
571
591
  let currentMarkerSize = _points[i].data[j - 1].markerSize;
572
- var _points_i_data__text1;
573
- pointsForLine.push(((_points_i_lineOptions8 = _points[i].lineOptions) === null || _points_i_lineOptions8 === void 0 ? void 0 : (_points_i_lineOptions_mode = _points_i_lineOptions8.mode) === null || _points_i_lineOptions_mode === void 0 ? void 0 : _points_i_lineOptions_mode.includes('markers')) ? /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("circle", {
574
- id: circleId,
575
- key: circleId,
576
- r: currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : 4,
577
- cx: _xAxisScale(x1),
578
- cy: yScale(y1),
579
- "data-is-focusable": isLegendSelected,
580
- onMouseOver: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale),
581
- onMouseMove: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale),
582
- onMouseOut: _handleMouseOut,
583
- onFocus: (event)=>_handleFocus(event, lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData),
584
- onBlur: _handleMouseOut,
585
- ..._getClickHandler(_points[i].data[j - 1].onDataPointClick),
586
- opacity: isLegendSelected && !currentPointHidden ? 1 : 0.01,
587
- fill: _getPointFill(lineColor, circleId, j, false),
588
- stroke: lineColor,
589
- strokeWidth: strokeWidth,
590
- role: "img",
591
- "aria-label": (_points_i_data__text1 = _points[i].data[j - 1].text) !== null && _points_i_data__text1 !== void 0 ? _points_i_data__text1 : _getAriaLabel(i, j - 1)
592
- }), _points[i].data[j - 1].text && /*#__PURE__*/ React.createElement("text", {
593
- key: `${circleId}-label`,
594
- x: _xAxisScale(x1),
595
- y: yScale(y1) + 12,
596
- fontSize: 12,
597
- className: classes.markerLabel
598
- }, _points[i].data[j - 1].text)) : /*#__PURE__*/ React.createElement("path", {
599
- id: circleId,
600
- key: circleId,
601
- d: path,
602
- "data-is-focusable": isLegendSelected,
603
- onMouseOver: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale),
604
- onMouseMove: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale),
605
- onMouseOut: _handleMouseOut,
606
- onFocus: (event)=>_handleFocus(event, lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData),
607
- onBlur: _handleMouseOut,
608
- ..._getClickHandler(_points[i].data[j - 1].onDataPointClick),
609
- opacity: isLegendSelected && !currentPointHidden ? 1 : 0.01,
610
- fill: _getPointFill(lineColor, circleId, j, false),
611
- stroke: lineColor,
612
- strokeWidth: strokeWidth,
613
- role: "img",
614
- "aria-label": _getAriaLabel(i, j - 1),
615
- tabIndex: isLegendSelected ? 0 : undefined
616
- }));
617
- if (j + 1 === _points[i].data.length) {
618
- var _points_i_lineOptions_mode2, _points_i_lineOptions10;
619
- // If this is last point of the line segment.
620
- const lastCircleId = `${circleId}${j}L`;
621
- const hiddenHoverCircleId = `${circleId}${j}D`;
622
- const lastPointHidden = _points[i].hideNonActiveDots && activePoint !== lastCircleId;
623
- path = _getPath(_xAxisScale(x2), yScale(y2), lastCircleId, j, true, _points[i].index);
624
- const { xAxisCalloutData: lastCirlceXCallout, xAxisCalloutAccessibilityData: lastCirlceXCalloutAccessibilityData } = _points[i].data[j];
625
- currentMarkerSize = _points[i].data[j].markerSize;
626
- var _points_i_data_j_text;
627
- pointsForLine.push(/*#__PURE__*/ React.createElement(React.Fragment, {
628
- key: `${lastCircleId}_container`
629
- }, ((_points_i_lineOptions10 = _points[i].lineOptions) === null || _points_i_lineOptions10 === void 0 ? void 0 : (_points_i_lineOptions_mode2 = _points_i_lineOptions10.mode) === null || _points_i_lineOptions_mode2 === void 0 ? void 0 : _points_i_lineOptions_mode2.includes('markers')) ? /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("circle", {
630
- id: lastCircleId,
631
- key: lastCircleId,
592
+ if (isPlottable(xPoint1, yPoint1)) {
593
+ var _points_i_lineOptions_mode3, _points_i_lineOptions11;
594
+ const path = _getPath(xPoint1, yPoint1, circleId, j, false, _points[i].index);
595
+ var _points_i_data__text1;
596
+ pointsForLine.push(((_points_i_lineOptions11 = _points[i].lineOptions) === null || _points_i_lineOptions11 === void 0 ? void 0 : (_points_i_lineOptions_mode3 = _points_i_lineOptions11.mode) === null || _points_i_lineOptions_mode3 === void 0 ? void 0 : _points_i_lineOptions_mode3.includes('markers')) || supportsTextMode ? /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("circle", {
597
+ id: circleId,
598
+ key: circleId,
632
599
  r: currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : 4,
633
- cx: _xAxisScale(x2),
634
- cy: yScale(y2),
600
+ cx: xPoint1,
601
+ cy: yPoint1,
635
602
  "data-is-focusable": isLegendSelected,
636
- onMouseOver: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale),
637
- onMouseMove: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale),
603
+ onMouseOver: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale, legendVal, lineColor),
604
+ onMouseMove: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale, legendVal, lineColor),
638
605
  onMouseOut: _handleMouseOut,
639
- onFocus: (event)=>_handleFocus(event, lineId, x2, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData),
606
+ onFocus: (event)=>_handleFocus(event, lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData),
640
607
  onBlur: _handleMouseOut,
641
- ..._getClickHandler(_points[i].data[j].onDataPointClick),
642
- opacity: isLegendSelected && !lastPointHidden ? 1 : 0.01,
643
- fill: _getPointFill(lineColor, lastCircleId, j, true),
608
+ ..._getClickHandler(_points[i].data[j - 1].onDataPointClick),
609
+ opacity: isLegendSelected && !currentPointHidden ? 1 : 0.01,
610
+ fill: _getPointFill(lineColor, circleId, j, false),
644
611
  stroke: lineColor,
645
612
  strokeWidth: strokeWidth,
646
613
  role: "img",
647
- "aria-label": (_points_i_data_j_text = _points[i].data[j].text) !== null && _points_i_data_j_text !== void 0 ? _points_i_data_j_text : _getAriaLabel(i, j)
648
- }), _points[i].data[j].text && /*#__PURE__*/ React.createElement("text", {
649
- key: `${lastCircleId}-label`,
650
- x: _xAxisScale(x2),
651
- y: yScale(y2) + 12,
652
- fontSize: 12,
653
- className: classes.markerLabel
654
- }, _points[i].data[j].text)) : /*#__PURE__*/ React.createElement("path", {
655
- id: lastCircleId,
656
- key: lastCircleId,
614
+ "aria-label": (_points_i_data__text1 = _points[i].data[j - 1].text) !== null && _points_i_data__text1 !== void 0 ? _points_i_data__text1 : _getAriaLabel(i, j - 1)
615
+ }), !_isScatterPolar && supportsTextMode && text && /*#__PURE__*/ React.createElement("text", {
616
+ key: `${circleId}-label`,
617
+ x: xPoint1,
618
+ y: yPoint1 + Math.max(currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : 4, 4) + 12,
619
+ className: classes.markerLabel,
620
+ opacity: isLegendSelected && !currentPointHidden ? 1 : 0.01
621
+ }, text)) : /*#__PURE__*/ React.createElement("path", {
622
+ id: circleId,
623
+ key: circleId,
657
624
  d: path,
658
625
  "data-is-focusable": isLegendSelected,
659
- onMouseOver: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale),
660
- onMouseMove: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale),
626
+ onMouseOver: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale, legendVal, lineColor),
627
+ onMouseMove: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale, legendVal, lineColor),
661
628
  onMouseOut: _handleMouseOut,
662
- onFocus: (event)=>_handleFocus(event, lineId, x2, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData),
629
+ onFocus: (event)=>_handleFocus(event, lineId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData),
663
630
  onBlur: _handleMouseOut,
664
- ..._getClickHandler(_points[i].data[j].onDataPointClick),
665
- opacity: isLegendSelected && !lastPointHidden ? 1 : 0.01,
666
- fill: _getPointFill(lineColor, lastCircleId, j, true),
631
+ ..._getClickHandler(_points[i].data[j - 1].onDataPointClick),
632
+ opacity: isLegendSelected && !currentPointHidden ? 1 : 0.01,
633
+ fill: _getPointFill(lineColor, circleId, j, false),
667
634
  stroke: lineColor,
668
635
  strokeWidth: strokeWidth,
669
636
  role: "img",
670
- "aria-label": _getAriaLabel(i, j),
637
+ "aria-label": _getAriaLabel(i, j - 1),
671
638
  tabIndex: isLegendSelected ? 0 : undefined
672
- }), /*#__PURE__*/ React.createElement("circle", {
673
- id: hiddenHoverCircleId,
674
- key: hiddenHoverCircleId,
675
- r: 8,
676
- cx: _xAxisScale(x2),
677
- cy: yScale(y2),
678
- opacity: 0,
679
- width: 0,
680
- onMouseOver: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale),
681
- onMouseMove: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale),
682
- onFocus: (event)=>_handleFocus(event, circleId, x1, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData),
683
- onMouseOut: _handleMouseOut,
684
- strokeWidth: 0,
685
- focusable: false,
686
- onBlur: _handleMouseOut
687
- })));
639
+ }));
688
640
  }
689
- if (!_hasMarkersMode || ((_points_i_lineOptions9 = _points[i].lineOptions) === null || _points_i_lineOptions9 === void 0 ? void 0 : (_points_i_lineOptions_mode1 = _points_i_lineOptions9.mode) === null || _points_i_lineOptions_mode1 === void 0 ? void 0 : _points_i_lineOptions_mode1.includes('lines'))) {
641
+ if (j + 1 === _points[i].data.length) {
642
+ var _points_i_lineOptions_mode4, _points_i_lineOptions12;
643
+ // If this is last point of the line segment.
644
+ const lastCircleId = `${circleId}${j}L`;
645
+ const hiddenHoverCircleId = `${circleId}${j}D`;
646
+ const lastPointHidden = _points[i].hideNonActiveDots && activePoint !== lastCircleId;
647
+ const { xAxisCalloutData: lastCirlceXCallout, xAxisCalloutAccessibilityData: lastCirlceXCalloutAccessibilityData } = _points[i].data[j];
648
+ currentMarkerSize = _points[i].data[j].markerSize;
649
+ const lastSupportsTextMode = (_points_i_lineOptions12 = _points[i].lineOptions) === null || _points_i_lineOptions12 === void 0 ? void 0 : (_points_i_lineOptions_mode4 = _points_i_lineOptions12.mode) === null || _points_i_lineOptions_mode4 === void 0 ? void 0 : _points_i_lineOptions_mode4.includes('text');
650
+ const lastText = _points[i].data[j].text;
651
+ if (isPlottable(xPoint2, yPoint2)) {
652
+ var _points_i_lineOptions_mode5, _points_i_lineOptions13;
653
+ const path = _getPath(xPoint2, yPoint2, lastCircleId, j, true, _points[i].index);
654
+ var _points_i_data_j_text;
655
+ pointsForLine.push(/*#__PURE__*/ React.createElement(React.Fragment, {
656
+ key: `${lastCircleId}_container`
657
+ }, ((_points_i_lineOptions13 = _points[i].lineOptions) === null || _points_i_lineOptions13 === void 0 ? void 0 : (_points_i_lineOptions_mode5 = _points_i_lineOptions13.mode) === null || _points_i_lineOptions_mode5 === void 0 ? void 0 : _points_i_lineOptions_mode5.includes('markers')) || lastSupportsTextMode ? /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("circle", {
658
+ id: lastCircleId,
659
+ key: lastCircleId,
660
+ r: currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : 4,
661
+ cx: xPoint2,
662
+ cy: yPoint2,
663
+ "data-is-focusable": isLegendSelected,
664
+ onMouseOver: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale, legendVal, lineColor),
665
+ onMouseMove: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale, legendVal, lineColor),
666
+ onMouseOut: _handleMouseOut,
667
+ onFocus: (event)=>_handleFocus(event, lineId, x2, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData),
668
+ onBlur: _handleMouseOut,
669
+ ..._getClickHandler(_points[i].data[j].onDataPointClick),
670
+ opacity: isLegendSelected && !lastPointHidden ? 1 : 0.01,
671
+ fill: _getPointFill(lineColor, lastCircleId, j, true),
672
+ stroke: lineColor,
673
+ strokeWidth: strokeWidth,
674
+ role: "img",
675
+ "aria-label": (_points_i_data_j_text = _points[i].data[j].text) !== null && _points_i_data_j_text !== void 0 ? _points_i_data_j_text : _getAriaLabel(i, j)
676
+ }), !_isScatterPolar && lastSupportsTextMode && lastText && /*#__PURE__*/ React.createElement("text", {
677
+ key: `${lastCircleId}-label`,
678
+ x: xPoint2,
679
+ y: yPoint2 + Math.max(currentMarkerSize ? currentMarkerSize * extraMaxPixels / maxMarkerSize : 4, 4) + 12,
680
+ className: classes.markerLabel
681
+ }, text)) : /*#__PURE__*/ React.createElement("path", {
682
+ id: lastCircleId,
683
+ key: lastCircleId,
684
+ d: path,
685
+ "data-is-focusable": isLegendSelected,
686
+ onMouseOver: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale, legendVal, lineColor),
687
+ onMouseMove: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale, legendVal, lineColor),
688
+ onMouseOut: _handleMouseOut,
689
+ onFocus: (event)=>_handleFocus(event, lineId, x2, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData),
690
+ onBlur: _handleMouseOut,
691
+ ..._getClickHandler(_points[i].data[j].onDataPointClick),
692
+ opacity: isLegendSelected && !lastPointHidden ? 1 : 0.01,
693
+ fill: _getPointFill(lineColor, lastCircleId, j, true),
694
+ stroke: lineColor,
695
+ strokeWidth: strokeWidth,
696
+ role: "img",
697
+ "aria-label": _getAriaLabel(i, j),
698
+ tabIndex: isLegendSelected ? 0 : undefined
699
+ }), /*#__PURE__*/ React.createElement("circle", {
700
+ id: hiddenHoverCircleId,
701
+ key: hiddenHoverCircleId,
702
+ r: 8,
703
+ cx: xPoint2,
704
+ cy: yPoint2,
705
+ opacity: 0,
706
+ width: 0,
707
+ onMouseOver: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale, legendVal, lineColor),
708
+ onMouseMove: (event)=>_handleHover(x2, y2, verticaLineHeight, lastCirlceXCallout, lastCircleId, lastCirlceXCalloutAccessibilityData, event, yScale, legendVal, lineColor),
709
+ onMouseOut: _handleMouseOut,
710
+ strokeWidth: 0,
711
+ focusable: false,
712
+ onBlur: _handleMouseOut
713
+ })));
714
+ }
715
+ }
716
+ if (isPlottable(xPoint1, yPoint1) && isPlottable(xPoint2, yPoint2) && (!_hasMarkersMode || ((_points_i_lineOptions10 = _points[i].lineOptions) === null || _points_i_lineOptions10 === void 0 ? void 0 : (_points_i_lineOptions_mode2 = _points_i_lineOptions10.mode) === null || _points_i_lineOptions_mode2 === void 0 ? void 0 : _points_i_lineOptions_mode2.includes('lines')))) {
690
717
  if (isLegendSelected) {
691
718
  // don't draw line if it is in a gap
692
719
  if (!isInGap) {
693
- var _points_i_lineOptions11, _points_i_lineOptions12, _points_i_lineOptions13, _points_i_lineOptions14;
694
- const lineBorderWidth = ((_points_i_lineOptions11 = _points[i].lineOptions) === null || _points_i_lineOptions11 === void 0 ? void 0 : _points_i_lineOptions11.lineBorderWidth) ? Number.parseFloat(_points[i].lineOptions.lineBorderWidth.toString()) : 0;
720
+ var _points_i_lineOptions14, _points_i_lineOptions15, _points_i_lineOptions16, _points_i_lineOptions17;
721
+ const lineBorderWidth = ((_points_i_lineOptions14 = _points[i].lineOptions) === null || _points_i_lineOptions14 === void 0 ? void 0 : _points_i_lineOptions14.lineBorderWidth) ? Number.parseFloat(_points[i].lineOptions.lineBorderWidth.toString()) : 0;
695
722
  if (lineBorderWidth > 0) {
696
- var _points_i_lineOptions15, _points_i_lineOptions16;
723
+ var _points_i_lineOptions18, _points_i_lineOptions19;
697
724
  var _points_i_lineOptions_strokeLinecap3;
698
725
  bordersForLine.push(/*#__PURE__*/ React.createElement("line", {
699
726
  id: borderId,
700
727
  key: borderId,
701
- x1: _xAxisScale(x1),
702
- y1: yScale(y1),
703
- x2: _xAxisScale(x2),
704
- y2: yScale(y2),
705
- strokeLinecap: (_points_i_lineOptions_strokeLinecap3 = (_points_i_lineOptions15 = _points[i].lineOptions) === null || _points_i_lineOptions15 === void 0 ? void 0 : _points_i_lineOptions15.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap3 !== void 0 ? _points_i_lineOptions_strokeLinecap3 : 'round',
728
+ x1: xPoint1,
729
+ y1: yPoint1,
730
+ x2: xPoint2,
731
+ y2: yPoint2,
732
+ strokeLinecap: (_points_i_lineOptions_strokeLinecap3 = (_points_i_lineOptions18 = _points[i].lineOptions) === null || _points_i_lineOptions18 === void 0 ? void 0 : _points_i_lineOptions18.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap3 !== void 0 ? _points_i_lineOptions_strokeLinecap3 : 'round',
706
733
  strokeWidth: Number.parseFloat(strokeWidth.toString()) + lineBorderWidth,
707
- stroke: ((_points_i_lineOptions16 = _points[i].lineOptions) === null || _points_i_lineOptions16 === void 0 ? void 0 : _points_i_lineOptions16.lineBorderColor) || tokens.colorNeutralBackground1,
734
+ stroke: ((_points_i_lineOptions19 = _points[i].lineOptions) === null || _points_i_lineOptions19 === void 0 ? void 0 : _points_i_lineOptions19.lineBorderColor) || tokens.colorNeutralBackground1,
708
735
  opacity: 1
709
736
  }));
710
737
  }
@@ -712,41 +739,41 @@ const PATH_MULTIPLY_SIZE = 2.5;
712
739
  linesForLine.push(/*#__PURE__*/ React.createElement("line", {
713
740
  id: lineId,
714
741
  key: lineId,
715
- x1: _xAxisScale(x1),
716
- y1: yScale(y1),
717
- x2: _xAxisScale(x2),
718
- y2: yScale(y2),
742
+ x1: xPoint1,
743
+ y1: yPoint1,
744
+ x2: xPoint2,
745
+ y2: yPoint2,
719
746
  strokeWidth: strokeWidth,
720
747
  ref: (e)=>{
721
748
  _refCallback(e, lineId);
722
749
  },
723
- onMouseOver: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale),
724
- onMouseMove: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale),
750
+ onMouseOver: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale, legendVal, lineColor),
751
+ onMouseMove: (event)=>_handleHover(x1, y1, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event, yScale, legendVal, lineColor),
725
752
  onMouseOut: _handleMouseOut,
726
753
  stroke: lineColor,
727
- strokeLinecap: (_points_i_lineOptions_strokeLinecap4 = (_points_i_lineOptions12 = _points[i].lineOptions) === null || _points_i_lineOptions12 === void 0 ? void 0 : _points_i_lineOptions12.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap4 !== void 0 ? _points_i_lineOptions_strokeLinecap4 : 'round',
728
- strokeDasharray: (_points_i_lineOptions13 = _points[i].lineOptions) === null || _points_i_lineOptions13 === void 0 ? void 0 : _points_i_lineOptions13.strokeDasharray,
729
- strokeDashoffset: (_points_i_lineOptions14 = _points[i].lineOptions) === null || _points_i_lineOptions14 === void 0 ? void 0 : _points_i_lineOptions14.strokeDashoffset,
754
+ strokeLinecap: (_points_i_lineOptions_strokeLinecap4 = (_points_i_lineOptions15 = _points[i].lineOptions) === null || _points_i_lineOptions15 === void 0 ? void 0 : _points_i_lineOptions15.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap4 !== void 0 ? _points_i_lineOptions_strokeLinecap4 : 'round',
755
+ strokeDasharray: (_points_i_lineOptions16 = _points[i].lineOptions) === null || _points_i_lineOptions16 === void 0 ? void 0 : _points_i_lineOptions16.strokeDasharray,
756
+ strokeDashoffset: (_points_i_lineOptions17 = _points[i].lineOptions) === null || _points_i_lineOptions17 === void 0 ? void 0 : _points_i_lineOptions17.strokeDashoffset,
730
757
  opacity: 1,
731
758
  ..._getClickHandler(_points[i].onLineClick)
732
759
  }));
733
760
  }
734
761
  } else {
735
762
  if (!isInGap) {
736
- var _points_i_lineOptions17, _points_i_lineOptions18, _points_i_lineOptions19;
763
+ var _points_i_lineOptions20, _points_i_lineOptions21, _points_i_lineOptions22;
737
764
  var _points_i_lineOptions_strokeLinecap5;
738
765
  linesForLine.push(/*#__PURE__*/ React.createElement("line", {
739
766
  id: lineId,
740
767
  key: lineId,
741
- x1: _xAxisScale(x1),
742
- y1: yScale(y1),
743
- x2: _xAxisScale(x2),
744
- y2: yScale(y2),
768
+ x1: xPoint1,
769
+ y1: yPoint1,
770
+ x2: xPoint2,
771
+ y2: yPoint2,
745
772
  strokeWidth: strokeWidth,
746
773
  stroke: lineColor,
747
- strokeLinecap: (_points_i_lineOptions_strokeLinecap5 = (_points_i_lineOptions17 = _points[i].lineOptions) === null || _points_i_lineOptions17 === void 0 ? void 0 : _points_i_lineOptions17.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap5 !== void 0 ? _points_i_lineOptions_strokeLinecap5 : 'round',
748
- strokeDasharray: (_points_i_lineOptions18 = _points[i].lineOptions) === null || _points_i_lineOptions18 === void 0 ? void 0 : _points_i_lineOptions18.strokeDasharray,
749
- strokeDashoffset: (_points_i_lineOptions19 = _points[i].lineOptions) === null || _points_i_lineOptions19 === void 0 ? void 0 : _points_i_lineOptions19.strokeDashoffset,
774
+ strokeLinecap: (_points_i_lineOptions_strokeLinecap5 = (_points_i_lineOptions20 = _points[i].lineOptions) === null || _points_i_lineOptions20 === void 0 ? void 0 : _points_i_lineOptions20.strokeLinecap) !== null && _points_i_lineOptions_strokeLinecap5 !== void 0 ? _points_i_lineOptions_strokeLinecap5 : 'round',
775
+ strokeDasharray: (_points_i_lineOptions21 = _points[i].lineOptions) === null || _points_i_lineOptions21 === void 0 ? void 0 : _points_i_lineOptions21.strokeDasharray,
776
+ strokeDashoffset: (_points_i_lineOptions22 = _points[i].lineOptions) === null || _points_i_lineOptions22 === void 0 ? void 0 : _points_i_lineOptions22.strokeDashoffset,
750
777
  opacity: 0.1
751
778
  }));
752
779
  }
@@ -754,6 +781,15 @@ const PATH_MULTIPLY_SIZE = 2.5;
754
781
  }
755
782
  }
756
783
  }
784
+ if (_isScatterPolar) {
785
+ var _points_i;
786
+ pointsForLine.push(...renderScatterPolarCategoryLabels({
787
+ xAxisScale: _xAxisScale,
788
+ yAxisScale: yScale,
789
+ className: classes.markerLabel || '',
790
+ lineOptions: (_points_i = _points[i]) === null || _points_i === void 0 ? void 0 : _points_i.lineOptions
791
+ }));
792
+ }
757
793
  lines.push(/*#__PURE__*/ React.createElement("g", {
758
794
  key: `line_${i}`,
759
795
  role: "region",
@@ -951,11 +987,24 @@ const PATH_MULTIPLY_SIZE = 2.5;
951
987
  setActivePoint(circleId);
952
988
  }
953
989
  }
954
- function _handleHover(x, y, lineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, mouseEvent, yScale) {
990
+ function _handleHover(x, y, lineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, mouseEvent, yScale, legendVal, lineColor) {
955
991
  mouseEvent === null || mouseEvent === void 0 ? void 0 : mouseEvent.persist();
956
992
  const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;
957
993
  const xVal = x instanceof Date ? x.getTime() : x;
994
+ const yVal = y instanceof Date ? y.getTime() : y;
958
995
  const found = find(_calloutPoints, (element)=>element.x === xVal);
996
+ let hoverDp = undefined;
997
+ if (props.isCalloutForStack === false && (found === null || found === void 0 ? void 0 : found.values)) {
998
+ const dp = find(found.values, (val)=>(val === null || val === void 0 ? void 0 : val.y) === yVal);
999
+ if (dp) {
1000
+ hoverDp = {
1001
+ x: xVal,
1002
+ values: [
1003
+ dp
1004
+ ]
1005
+ };
1006
+ }
1007
+ }
959
1008
  // if no points need to be called out then don't show vertical line and callout card
960
1009
  if (found) {
961
1010
  d3Select(`#${_verticalLine}`).attr('transform', ()=>`translate(${_xAxisScale(x)}, ${yScale(y)})`).attr('visibility', 'visibility').attr('y2', `${lineHeight - 5 - yScale(y)}`);
@@ -964,8 +1013,11 @@ const PATH_MULTIPLY_SIZE = 2.5;
964
1013
  updatePosition(mouseEvent.clientX, mouseEvent.clientY);
965
1014
  xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);
966
1015
  setYValueHover(found.values);
1016
+ setYValue(yVal);
1017
+ setLegendVal(legendVal);
1018
+ setLineColor(lineColor);
967
1019
  setStackCalloutProps(found);
968
- setDataPointCalloutProps(found);
1020
+ setDataPointCalloutProps(hoverDp);
969
1021
  setActivePoint(circleId);
970
1022
  setNearestCircleToHighlight(null);
971
1023
  }
@@ -1089,75 +1141,12 @@ const PATH_MULTIPLY_SIZE = 2.5;
1089
1141
  const yValue = point.yAxisCalloutData || point.y;
1090
1142
  return ((_point_callOutAccessibilityData = point.callOutAccessibilityData) === null || _point_callOutAccessibilityData === void 0 ? void 0 : _point_callOutAccessibilityData.ariaLabel) || `${xValue}. ${legend}, ${yValue}.`;
1091
1143
  }
1092
- function _getDomainNRangeValuesOfDateWithPadding(points, margins, width, isRTL, tickValues = [], chartType, barWidth) {
1093
- let sDate;
1094
- let lDate;
1095
- sDate = d3Min(points, (point)=>{
1096
- return d3Min(point.data, (item)=>item.x);
1097
- });
1098
- lDate = d3Max(points, (point)=>{
1099
- return d3Max(point.data, (item)=>item.x);
1100
- });
1101
- // Include tickValues if present
1102
- sDate = d3Min([
1103
- ...tickValues,
1104
- sDate
1105
- ]);
1106
- lDate = d3Max([
1107
- ...tickValues,
1108
- lDate
1109
- ]);
1110
- // Calculate time-based padding (e.g. 10% of the date range)
1111
- const dateRange = lDate.getTime() - sDate.getTime();
1112
- const datePadding = _hasMarkersMode ? dateRange * 0.1 : 0;
1113
- const paddedSDate = new Date(sDate.getTime() - datePadding);
1114
- const paddedLDate = new Date(lDate.getTime() + datePadding);
1115
- const rStartValue = margins.left;
1116
- const rEndValue = width - margins.right;
1117
- return isRTL ? {
1118
- dStartValue: paddedLDate,
1119
- dEndValue: paddedSDate,
1120
- rStartValue,
1121
- rEndValue
1122
- } : {
1123
- dStartValue: paddedSDate,
1124
- dEndValue: paddedLDate,
1125
- rStartValue,
1126
- rEndValue
1127
- };
1128
- }
1129
- function _getDomainNRangeValuesWithPadding(points, margins, width, isRTL) {
1130
- _xMin = d3Min(points, (point)=>{
1131
- return d3Min(point.data, (item)=>item.x);
1132
- });
1133
- _xMax = d3Max(points, (point)=>{
1134
- return d3Max(point.data, (item)=>{
1135
- return item.x;
1136
- });
1137
- });
1138
- if (_hasMarkersMode) {
1139
- _xPadding = (_xMax - _xMin) * 0.1;
1140
- }
1141
- const rStartValue = margins.left;
1142
- const rEndValue = width - margins.right;
1143
- return isRTL ? {
1144
- dStartValue: _xMax + _xPadding,
1145
- dEndValue: _xMin - _xPadding,
1146
- rStartValue,
1147
- rEndValue
1148
- } : {
1149
- dStartValue: _xMin - _xPadding,
1150
- dEndValue: _xMax + _xPadding,
1151
- rStartValue,
1152
- rEndValue
1153
- };
1154
- }
1155
1144
  function _isChartEmpty() {
1156
1145
  return !(props.data && props.data.lineChartData && props.data.lineChartData.length > 0 && props.data.lineChartData.filter((item)=>item.data.length).length > 0);
1157
1146
  }
1158
1147
  const { legendProps, tickValues, tickFormat, eventAnnotationProps } = props;
1159
1148
  _points = _injectIndexPropertyInLineChartData(props.data.lineChartData);
1160
- const isXAxisDateType = getXAxisType(_points);
1149
+ _isXAxisDateType = getXAxisType(_points);
1161
1150
  let points = _points;
1162
1151
  if (legendProps && !!legendProps.canSelectMultipleLegends) {
1163
1152
  points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;
@@ -1174,13 +1163,17 @@ const PATH_MULTIPLY_SIZE = 2.5;
1174
1163
  const calloutProps = {
1175
1164
  YValueHover: YValueHover,
1176
1165
  hoverXValue: hoverXValue,
1166
+ YValue: YValue,
1167
+ legend: legendVal,
1168
+ color: lineColor,
1169
+ XValue: hoverXValue,
1177
1170
  descriptionMessage: props.getCalloutDescriptionMessage && stackCalloutProps ? props.getCalloutDescriptionMessage(stackCalloutProps) : undefined,
1178
1171
  'data-is-focusable': true,
1179
1172
  xAxisCalloutAccessibilityData: xAxisCalloutAccessibilityData,
1180
1173
  ...props.calloutProps,
1181
1174
  clickPosition: clickPosition,
1182
1175
  isPopoverOpen: isPopoverOpen,
1183
- isCalloutForStack: true,
1176
+ isCalloutForStack: props.isCalloutForStack,
1184
1177
  culture: (_props_culture = props.culture) !== null && _props_culture !== void 0 ? _props_culture : 'en-us',
1185
1178
  isCartesian: true,
1186
1179
  customCallout: {
@@ -1204,7 +1197,11 @@ const PATH_MULTIPLY_SIZE = 2.5;
1204
1197
  getmargins: _getMargins,
1205
1198
  getMinMaxOfYAxis: _getNumericMinMaxOfY,
1206
1199
  getGraphData: _initializeLineChartData,
1207
- xAxisType: isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis,
1200
+ xAxisType: _isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis,
1201
+ ..._isScatterPolar ? {
1202
+ yMaxValue: 1,
1203
+ yMinValue: -1
1204
+ } : {},
1208
1205
  getDomainNRangeValues: _getDomainNRangeValues,
1209
1206
  createStringYAxis: createStringYAxis,
1210
1207
  onChartMouseLeave: _handleChartMouseLeave,
@@ -1246,3 +1243,6 @@ const PATH_MULTIPLY_SIZE = 2.5;
1246
1243
  });
1247
1244
  });
1248
1245
  LineChart.displayName = 'LineChart';
1246
+ LineChart.defaultProps = {
1247
+ isCalloutForStack: true
1248
+ };