@fluentui/react-charts 0.0.0-nightly-20250818-0407.1 → 0.0.0-nightly-20250819-0407.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.
Files changed (35) hide show
  1. package/CHANGELOG.md +15 -15
  2. package/dist/index.d.ts +56 -0
  3. package/lib/components/DeclarativeChart/DeclarativeChart.js +16 -8
  4. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  5. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +27 -16
  6. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  7. package/lib/components/LineChart/LineChart.js +30 -9
  8. package/lib/components/LineChart/LineChart.js.map +1 -1
  9. package/lib/components/LineChart/LineChart.types.js.map +1 -1
  10. package/lib/components/LineChart/useLineChartStyles.styles.js +8 -2
  11. package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  12. package/lib/components/LineChart/useLineChartStyles.styles.raw.js +12 -1
  13. package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  14. package/lib/components/ScatterChart/ScatterChart.js +7 -7
  15. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  16. package/lib/types/DataPoint.js.map +1 -1
  17. package/lib/utilities/utilities.js +33 -1
  18. package/lib/utilities/utilities.js.map +1 -1
  19. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +16 -8
  20. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  21. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +27 -16
  22. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  23. package/lib-commonjs/components/LineChart/LineChart.js +30 -9
  24. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  25. package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
  26. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +10 -2
  27. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
  28. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +12 -1
  29. package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
  30. package/lib-commonjs/components/ScatterChart/ScatterChart.js +7 -7
  31. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  32. package/lib-commonjs/types/DataPoint.js.map +1 -1
  33. package/lib-commonjs/utilities/utilities.js +33 -0
  34. package/lib-commonjs/utilities/utilities.js.map +1 -1
  35. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/LineChart/LineChart.types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { RenderFunction } from '../../utilities/index';\nimport {\n ChartProps,\n LineChartPoints,\n Margins,\n Basestate,\n RefArrayData,\n CustomizedCalloutData,\n} from '../../types/index';\nimport { EventAnnotation } from '../../types/EventAnnotation';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n ChildProps,\n} from '../CommonComponents/index';\n\nexport type { ChildProps, LineChartPoints, Margins, Basestate, RefArrayData };\n\n/**\n * Line Chart properties\n * {@docCategory LineChart}\n */\nexport interface LineChartProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: ChartProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: LineChartStyles;\n\n /**\n * Show event annotation\n */\n eventAnnotationProps?: EventsAnnotationProps;\n\n /**\n * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Define a custom callout renderer for a stack; default is to render per data point\n */\n onRenderCalloutPerStack?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Callback for getting callout description message\n */\n getCalloutDescriptionMessage?: (calloutDataProps: CustomizedCalloutData) => string | undefined;\n\n /*\n * Color fill bars for the chart,\n */\n colorFillBars?: ColorFillBarsProps[];\n\n /**\n * if this is set to true, then for each line there will be a unique shape assigned to the point,\n * there are total 8 shapes which are as follow circle, square, triangele, diamond, pyramid,\n * hexagon, pentagon and octagon, which will get assigned as respectively, if there are more\n * than 8 lines in the line chart then it will again start from cicle to octagon.\n * setting this flag to true will also change the behavior of the points, like for a\n * line, last point shape and first point shape will be visible all the times, and all\n * other points will get enlarge only when hovered over them\n * if set to false default shape will be circle, with the existing behavior\n * @default false\n */\n allowMultipleShapesForPoints?: boolean;\n\n /*\n * Optimize line chart rendering for large data set. If this prop is enabled, line chart\n * can easily render over 10K datapoints with multiple lines smoothly.\n * This rendering mechanism does not support gaps in lines.\n */\n optimizeLargeData?: boolean;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * @default false\n * The prop used to enable the perf optimization\n */\n enablePerfOptimization?: boolean;\n}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface EventsAnnotationProps {\n events: EventAnnotation[];\n strokeColor?: string;\n labelColor?: string;\n labelHeight?: number;\n labelWidth?: number;\n mergedLabel: (count: number) => string;\n}\n\n/**\n * Line Chart styles\n * {@docCategory LineChart}\n */\nexport interface LineChartStyles extends CartesianChartStyles {\n /**\n * styles for line border\n */\n lineBorder?: string;\n}\n\n/**\n * Line Chart style properties\n * {@docCategory LineChart}\n */\nexport interface LineChartStyleProps extends CartesianChartStyleProps {}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface ColorFillBarsProps {\n legend: string;\n color: string;\n data: ColorFillBarData[];\n applyPattern?: boolean;\n onLegendClick?: (selectedLegend: string | string[] | null) => void | undefined;\n}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface ColorFillBarData {\n startX: number | Date;\n endX: number | Date;\n}\n"],"names":[],"mappings":"AAAA,uDAAuD,GAoIvD;;CAEC,GACD,WAGC"}
1
+ {"version":3,"sources":["../src/components/LineChart/LineChart.types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { RenderFunction } from '../../utilities/index';\nimport {\n ChartProps,\n LineChartPoints,\n Margins,\n Basestate,\n RefArrayData,\n CustomizedCalloutData,\n} from '../../types/index';\nimport { EventAnnotation } from '../../types/EventAnnotation';\nimport {\n CartesianChartProps,\n CartesianChartStyleProps,\n CartesianChartStyles,\n ChildProps,\n} from '../CommonComponents/index';\n\nexport type { ChildProps, LineChartPoints, Margins, Basestate, RefArrayData };\n\n/**\n * Line Chart properties\n * {@docCategory LineChart}\n */\nexport interface LineChartProps extends CartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: ChartProps;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: LineChartStyles;\n\n /**\n * Show event annotation\n */\n eventAnnotationProps?: EventsAnnotationProps;\n\n /**\n * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Define a custom callout renderer for a stack; default is to render per data point\n */\n onRenderCalloutPerStack?: RenderFunction<CustomizedCalloutData>;\n\n /**\n * Callback for getting callout description message\n */\n getCalloutDescriptionMessage?: (calloutDataProps: CustomizedCalloutData) => string | undefined;\n\n /*\n * Color fill bars for the chart,\n */\n colorFillBars?: ColorFillBarsProps[];\n\n /**\n * if this is set to true, then for each line there will be a unique shape assigned to the point,\n * there are total 8 shapes which are as follow circle, square, triangele, diamond, pyramid,\n * hexagon, pentagon and octagon, which will get assigned as respectively, if there are more\n * than 8 lines in the line chart then it will again start from cicle to octagon.\n * setting this flag to true will also change the behavior of the points, like for a\n * line, last point shape and first point shape will be visible all the times, and all\n * other points will get enlarge only when hovered over them\n * if set to false default shape will be circle, with the existing behavior\n * @default false\n */\n allowMultipleShapesForPoints?: boolean;\n\n /*\n * Optimize line chart rendering for large data set. If this prop is enabled, line chart\n * can easily render over 10K datapoints with multiple lines smoothly.\n * This rendering mechanism does not support gaps in lines.\n */\n optimizeLargeData?: boolean;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /**\n * @default false\n * The prop used to enable the perf optimization\n */\n enablePerfOptimization?: boolean;\n}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface EventsAnnotationProps {\n events: EventAnnotation[];\n strokeColor?: string;\n labelColor?: string;\n labelHeight?: number;\n labelWidth?: number;\n mergedLabel: (count: number) => string;\n}\n\n/**\n * Line Chart styles\n * {@docCategory LineChart}\n */\nexport interface LineChartStyles extends CartesianChartStyles {\n /**\n * styles for line border\n */\n lineBorder?: string;\n\n /**\n * styles for marker label\n */\n markerLabel?: string;\n}\n\n/**\n * Line Chart style properties\n * {@docCategory LineChart}\n */\nexport interface LineChartStyleProps extends CartesianChartStyleProps {}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface ColorFillBarsProps {\n legend: string;\n color: string;\n data: ColorFillBarData[];\n applyPattern?: boolean;\n onLegendClick?: (selectedLegend: string | string[] | null) => void | undefined;\n}\n\n/**\n * {@docCategory LineChart}\n */\nexport interface ColorFillBarData {\n startX: number | Date;\n endX: number | Date;\n}\n"],"names":[],"mappings":"AAAA,uDAAuD,GAyIvD;;CAEC,GACD,WAGC"}
@@ -20,6 +20,7 @@ const _react = require("@griffel/react");
20
20
  const linechartClassNames = {
21
21
  tooltip: 'fui-line__tooltip',
22
22
  lineBorder: 'fui-line_lineBorder',
23
+ markerLabel: 'fui-line__markerLabel',
23
24
  root: 'fui-line__root',
24
25
  xAxis: 'fui-line__xAxis',
25
26
  yAxis: 'fui-line__yAxis',
@@ -64,6 +65,10 @@ const linechartClassNames = {
64
65
  lineBorder: {
65
66
  ojy3ng: "f1yuyku4",
66
67
  Bpvj6i6: "fdvt8h6"
68
+ },
69
+ markerLabel: {
70
+ Bkfmm31: "fhuob2q",
71
+ jzqdnp: "fdxigdc"
67
72
  }
68
73
  }, {
69
74
  d: [
@@ -84,7 +89,9 @@ const linechartClassNames = {
84
89
  }
85
90
  ],
86
91
  ".f1aehjj5{pointer-events:none;}",
87
- ".f1yuyku4{stroke:var(--colorNeutralBackground1);}"
92
+ ".f1yuyku4{stroke:var(--colorNeutralBackground1);}",
93
+ ".fhuob2q{fill:var(--colorNeutralForeground1);}",
94
+ ".fdxigdc{text-anchor:middle;}"
88
95
  ],
89
96
  m: [
90
97
  [
@@ -99,6 +106,7 @@ const useLineChartStyles = (props)=>{
99
106
  const baseStyles = useStyles();
100
107
  return {
101
108
  tooltip: (0, _react.mergeClasses)(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ ),
102
- lineBorder: (0, _react.mergeClasses)(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/ )
109
+ lineBorder: (0, _react.mergeClasses)(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/ ),
110
+ markerLabel: (0, _react.mergeClasses)(linechartClassNames.markerLabel, baseStyles.markerLabel /*props.styles?.markerLabel*/ )
103
111
  };
104
112
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["useLineChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { HighContrastSelector } from '../../utilities/index';\n/**\n * @internal\n */ export const linechartClassNames = {\n tooltip: 'fui-line__tooltip',\n lineBorder: 'fui-line_lineBorder',\n root: 'fui-line__root',\n xAxis: 'fui-line__xAxis',\n yAxis: 'fui-line__yAxis',\n legendContainer: 'fui-line__legendContainer',\n hover: 'fui-line__hover',\n descriptionMessage: 'fui-line__descriptionMessage',\n axisTitle: 'fui-line__axisTitle',\n chartTitle: 'fui-line__chartTitle',\n opacityChangeOnHover: 'fui-line__opacityChangeOnHover',\n shapeStyles: 'fui-line__shapeStyles',\n chartWrapper: 'fui-line__chartWrapper',\n svgTooltip: '',\n chart: ''\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n tooltip: {\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n fill: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none'\n },\n lineBorder: {\n stroke: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n stroke: 'Canvas'\n }\n }\n});\n/**\n * Apply styling to the Carousel slots based on the state\n */ export const useLineChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ ),\n lineBorder: mergeClasses(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/ )\n };\n};\n"],"names":["__styles","mergeClasses","shorthands","tokens","HighContrastSelector","linechartClassNames","tooltip","lineBorder","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","useStyles","mc9l5x","Beiy3e4","z8tnut","z189sj","Byoj8tv","uwmqm3","qhf8xq","fsow6f","Bhzewxz","Bkfmm31","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","ojy3ng","Bpvj6i6","d","p","m","useLineChartStyles","props","baseStyles"],"mappings":";;;;;;;;;;;IAKiBK,mBAAmB;;;sBAwCD;;;;uBA7CkB,gBAAgB;AAK1D,4BAA4B;IACnCC,OAAO,EAAE,mBAAmB;IAC5BC,UAAU,EAAE,qBAAqB;IACjCC,IAAI,EAAE,gBAAgB;IACtBC,KAAK,EAAE,iBAAiB;IACxBC,KAAK,EAAE,iBAAiB;IACxBC,eAAe,EAAE,2BAA2B;IAC5CC,KAAK,EAAE,iBAAiB;IACxBC,kBAAkB,EAAE,8BAA8B;IAClDC,SAAS,EAAE,qBAAqB;IAChCC,UAAU,EAAE,sBAAsB;IAClCC,oBAAoB,EAAE,gCAAgC;IACtDC,WAAW,EAAE,uBAAuB;IACpCC,YAAY,EAAE,wBAAwB;IACtCC,UAAU,EAAE,EAAE;IACdC,KAAK,EAAE;AACX,CAAC;AACD;;CAEA,GAAI,MAAMC,SAAS,GAAA,WAAA,OAAGrB,eAAA,EAAA;IAAAM,OAAA,EAAA;QAAAgB,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;YAAA;YAAA;SAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;YAAA;YAAA;SAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAA9B,UAAA,EAAA;QAAA+B,MAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;AAAA,GAAA;IAAAC,CAAA,EAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,CAAA,EAAA,CAAA;YAAA;SAAA;QAAA;QAAA;KAAA;IAAAC,CAAA,EAAA;QAAA;YAAA;YAAA;gBAAAA,CAAA,EAAA;YAAA;SAAA;KAAA;AAAA,CAkBrB,CAAC;AAGS,MAAMC,sBAAsBC,KAAK,IAAG;IAC3C,MAAMC,UAAU,GAAGxB,SAAS,CAAC,CAAC;IAC9B,OAAO;QACHf,OAAO,MAAEL,mBAAY,EAACI,mBAAmB,CAACC,OAAO,EAAEuC,UAAU,CAACvC,OAAO,CAAC,uBAAA,EAA0B,CAAC;QACjGC,UAAU,MAAEN,mBAAY,EAACI,mBAAmB,CAACE,UAAU,EAAEsC,UAAU,CAACtC,UAAU,CAAC,0BAAA,EAA6B;IAChH,CAAC;AACL,CAAC"}
1
+ {"version":3,"sources":["useLineChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { HighContrastSelector } from '../../utilities/index';\n/**\n * @internal\n */ export const linechartClassNames = {\n tooltip: 'fui-line__tooltip',\n lineBorder: 'fui-line_lineBorder',\n markerLabel: 'fui-line__markerLabel',\n root: 'fui-line__root',\n xAxis: 'fui-line__xAxis',\n yAxis: 'fui-line__yAxis',\n legendContainer: 'fui-line__legendContainer',\n hover: 'fui-line__hover',\n descriptionMessage: 'fui-line__descriptionMessage',\n axisTitle: 'fui-line__axisTitle',\n chartTitle: 'fui-line__chartTitle',\n opacityChangeOnHover: 'fui-line__opacityChangeOnHover',\n shapeStyles: 'fui-line__shapeStyles',\n chartWrapper: 'fui-line__chartWrapper',\n svgTooltip: '',\n chart: ''\n};\n/**\n * Base Styles\n */ const useStyles = makeStyles({\n tooltip: {\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n fill: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none'\n },\n lineBorder: {\n stroke: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n stroke: 'Canvas'\n }\n },\n markerLabel: {\n fill: tokens.colorNeutralForeground1,\n textAnchor: 'middle',\n selectors: {\n [HighContrastSelector]: {\n fill: 'CanvasText'\n }\n }\n }\n});\n/**\n * Apply styling to the Carousel slots based on the state\n */ export const useLineChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ ),\n lineBorder: mergeClasses(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/ ),\n markerLabel: mergeClasses(linechartClassNames.markerLabel, baseStyles.markerLabel /*props.styles?.markerLabel*/ )\n };\n};\n"],"names":["__styles","mergeClasses","shorthands","tokens","HighContrastSelector","linechartClassNames","tooltip","lineBorder","markerLabel","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","useStyles","mc9l5x","Beiy3e4","z8tnut","z189sj","Byoj8tv","uwmqm3","qhf8xq","fsow6f","Bhzewxz","Bkfmm31","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","ojy3ng","Bpvj6i6","jzqdnp","d","p","m","useLineChartStyles","props","baseStyles"],"mappings":";;;;;;;;;;;IAKiBK,mBAAmB;;;sBAkDD;;;;uBAvDkB,gBAAgB;AAK1D,4BAA4B;IACnCC,OAAO,EAAE,mBAAmB;IAC5BC,UAAU,EAAE,qBAAqB;IACjCC,WAAW,EAAE,uBAAuB;IACpCC,IAAI,EAAE,gBAAgB;IACtBC,KAAK,EAAE,iBAAiB;IACxBC,KAAK,EAAE,iBAAiB;IACxBC,eAAe,EAAE,2BAA2B;IAC5CC,KAAK,EAAE,iBAAiB;IACxBC,kBAAkB,EAAE,8BAA8B;IAClDC,SAAS,EAAE,qBAAqB;IAChCC,UAAU,EAAE,sBAAsB;IAClCC,oBAAoB,EAAE,gCAAgC;IACtDC,WAAW,EAAE,uBAAuB;IACpCC,YAAY,EAAE,wBAAwB;IACtCC,UAAU,EAAE,EAAE;IACdC,KAAK,EAAE;AACX,CAAC;AACD;;CAEA,GAAI,MAAMC,SAAS,GAAA,WAAA,OAAGtB,eAAA,EAAA;IAAAM,OAAA,EAAA;QAAAiB,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;YAAA;YAAA;SAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;YAAA;YAAA;SAAA;QAAAC,MAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAA/B,UAAA,EAAA;QAAAgC,MAAA,EAAA;QAAAC,OAAA,EAAA;IAAA;IAAAhC,WAAA,EAAA;QAAAwB,OAAA,EAAA;QAAAS,MAAA,EAAA;IAAA;AAAA,GAAA;IAAAC,CAAA,EAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,CAAA,EAAA,CAAA;YAAA;SAAA;QAAA;QAAA;QAAA;QAAA;KAAA;IAAAC,CAAA,EAAA;QAAA;YAAA;YAAA;gBAAAA,CAAA,EAAA;YAAA;SAAA;KAAA;AAAA,CA2BrB,CAAC;AAGS,MAAMC,sBAAsBC,KAAK,IAAG;IAC3C,MAAMC,UAAU,GAAGzB,SAAS,CAAC,CAAC;IAC9B,OAAO;QACHhB,OAAO,MAAEL,mBAAY,EAACI,mBAAmB,CAACC,OAAO,EAAEyC,UAAU,CAACzC,OAAO,CAAC,uBAAA,EAA0B,CAAC;QACjGC,UAAU,MAAEN,mBAAY,EAACI,mBAAmB,CAACE,UAAU,EAAEwC,UAAU,CAACxC,UAAU,CAAC,0BAAA,EAA6B,CAAC;QAC7GC,WAAW,MAAEP,mBAAY,EAACI,mBAAmB,CAACG,WAAW,EAAEuC,UAAU,CAACvC,WAAW,CAAC,2BAAA,EAA8B;IACpH,CAAC;AACL,CAAC"}
@@ -22,6 +22,7 @@ const _index = require("../../utilities/index");
22
22
  const linechartClassNames = {
23
23
  tooltip: 'fui-line__tooltip',
24
24
  lineBorder: 'fui-line_lineBorder',
25
+ markerLabel: 'fui-line__markerLabel',
25
26
  root: 'fui-line__root',
26
27
  xAxis: 'fui-line__xAxis',
27
28
  yAxis: 'fui-line__yAxis',
@@ -55,12 +56,22 @@ const linechartClassNames = {
55
56
  [_index.HighContrastSelector]: {
56
57
  stroke: 'Canvas'
57
58
  }
59
+ },
60
+ markerLabel: {
61
+ fill: _reacttheme.tokens.colorNeutralForeground1,
62
+ textAnchor: 'middle',
63
+ selectors: {
64
+ [_index.HighContrastSelector]: {
65
+ fill: 'CanvasText'
66
+ }
67
+ }
58
68
  }
59
69
  });
60
70
  const useLineChartStyles = (props)=>{
61
71
  const baseStyles = useStyles();
62
72
  return {
63
73
  tooltip: (0, _react.mergeClasses)(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ ),
64
- lineBorder: (0, _react.mergeClasses)(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/ )
74
+ lineBorder: (0, _react.mergeClasses)(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/ ),
75
+ markerLabel: (0, _react.mergeClasses)(linechartClassNames.markerLabel, baseStyles.markerLabel /*props.styles?.markerLabel*/ )
65
76
  };
66
77
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/LineChart/useLineChartStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { LineChartProps, LineChartStyles } from './LineChart.types';\nimport { SlotClassNames } from '@fluentui/react-utilities/src/index';\nimport { HighContrastSelector } from '../../utilities/index';\n\n/**\n * @internal\n */\nexport const linechartClassNames: SlotClassNames<LineChartStyles> = {\n tooltip: 'fui-line__tooltip',\n lineBorder: 'fui-line_lineBorder',\n root: 'fui-line__root',\n xAxis: 'fui-line__xAxis',\n yAxis: 'fui-line__yAxis',\n legendContainer: 'fui-line__legendContainer',\n hover: 'fui-line__hover',\n descriptionMessage: 'fui-line__descriptionMessage',\n axisTitle: 'fui-line__axisTitle',\n chartTitle: 'fui-line__chartTitle',\n opacityChangeOnHover: 'fui-line__opacityChangeOnHover',\n shapeStyles: 'fui-line__shapeStyles',\n chartWrapper: 'fui-line__chartWrapper',\n svgTooltip: '',\n chart: '',\n};\n\n/**\n * Base Styles\n */\nconst useStyles = makeStyles({\n tooltip: {\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n fill: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none',\n },\n lineBorder: {\n stroke: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n stroke: 'Canvas',\n },\n },\n});\n\n/**\n * Apply styling to the Carousel slots based on the state\n */\nexport const useLineChartStyles = (props: LineChartProps): LineChartStyles => {\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/),\n lineBorder: mergeClasses(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/),\n };\n};\n"],"names":["makeStyles","mergeClasses","shorthands","tokens","HighContrastSelector","linechartClassNames","tooltip","lineBorder","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","useStyles","display","flexDirection","padding","spacingHorizontalS","position","textAlign","top","spacingVerticalNone","fill","colorNeutralBackground1","borderRadius","borderRadiusSmall","pointerEvents","stroke","useLineChartStyles","props","baseStyles"],"mappings":";;;;;;;;;;;IASaK,mBAAAA;;;sBA4CA+B;eAAAA;;;uBArDwC,iBAAiB;4BAC/C,wBAAwB;uBAGV,wBAAwB;AAKtD,4BAA6D;IAClE9B,SAAS;IACTC,YAAY;IACZC,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,iBAAiB;IACjBC,OAAO;IACPC,oBAAoB;IACpBC,WAAW;IACXC,YAAY;IACZC,sBAAsB;IACtBC,aAAa;IACbC,cAAc;IACdC,YAAY;IACZC,OAAO;AACT,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAYrB,iBAAAA,EAAW;IAC3BM,SAAS;QACPgB,SAAS;QACTC,eAAe;QACf,GAAGrB,iBAAAA,CAAWsB,OAAO,CAACrB,kBAAAA,CAAOsB,kBAAkB,CAAC;QAChDC,UAAU;QACVC,WAAW;QACXC,KAAKzB,kBAAAA,CAAO0B,mBAAmB;QAC/BC,MAAM3B,kBAAAA,CAAO4B,uBAAuB;QACpCC,cAAc7B,kBAAAA,CAAO8B,iBAAiB;QACtCC,eAAe;IACjB;IACA3B,YAAY;QACV4B,QAAQhC,kBAAAA,CAAO4B,uBAAuB;QACtC,CAAC3B,2BAAAA,CAAqB,EAAE;YACtB+B,QAAQ;QACV;IACF;AACF;AAKO,2BAA2B,CAACE;IACjC,MAAMC,aAAajB;IACnB,OAAO;QACLf,aAASL,mBAAAA,EAAaI,oBAAoBC,OAAO,EAAEgC,WAAWhC,OAAO,CAAC,uBAAuB;QAC7FC,gBAAYN,mBAAAA,EAAaI,oBAAoBE,UAAU,EAAE+B,WAAW/B,UAAU,CAAC,0BAA0B;IAC3G;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/LineChart/useLineChartStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport { LineChartProps, LineChartStyles } from './LineChart.types';\nimport { SlotClassNames } from '@fluentui/react-utilities/src/index';\nimport { HighContrastSelector } from '../../utilities/index';\n\n/**\n * @internal\n */\nexport const linechartClassNames: SlotClassNames<LineChartStyles> = {\n tooltip: 'fui-line__tooltip',\n lineBorder: 'fui-line_lineBorder',\n markerLabel: 'fui-line__markerLabel',\n root: 'fui-line__root',\n xAxis: 'fui-line__xAxis',\n yAxis: 'fui-line__yAxis',\n legendContainer: 'fui-line__legendContainer',\n hover: 'fui-line__hover',\n descriptionMessage: 'fui-line__descriptionMessage',\n axisTitle: 'fui-line__axisTitle',\n chartTitle: 'fui-line__chartTitle',\n opacityChangeOnHover: 'fui-line__opacityChangeOnHover',\n shapeStyles: 'fui-line__shapeStyles',\n chartWrapper: 'fui-line__chartWrapper',\n svgTooltip: '',\n chart: '',\n};\n\n/**\n * Base Styles\n */\nconst useStyles = makeStyles({\n tooltip: {\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n fill: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none',\n },\n lineBorder: {\n stroke: tokens.colorNeutralBackground1,\n [HighContrastSelector]: {\n stroke: 'Canvas',\n },\n },\n markerLabel: {\n fill: tokens.colorNeutralForeground1,\n textAnchor: 'middle',\n selectors: {\n [HighContrastSelector]: {\n fill: 'CanvasText',\n },\n },\n },\n});\n\n/**\n * Apply styling to the Carousel slots based on the state\n */\nexport const useLineChartStyles = (props: LineChartProps): LineChartStyles => {\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(linechartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/),\n lineBorder: mergeClasses(linechartClassNames.lineBorder, baseStyles.lineBorder /*props.styles?.lineBorder*/),\n markerLabel: mergeClasses(linechartClassNames.markerLabel, baseStyles.markerLabel /*props.styles?.markerLabel*/),\n };\n};\n"],"names":["makeStyles","mergeClasses","shorthands","tokens","HighContrastSelector","linechartClassNames","tooltip","lineBorder","markerLabel","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","useStyles","display","flexDirection","padding","spacingHorizontalS","position","textAlign","top","spacingVerticalNone","fill","colorNeutralBackground1","borderRadius","borderRadiusSmall","pointerEvents","stroke","colorNeutralForeground1","textAnchor","selectors","useLineChartStyles","props","baseStyles"],"mappings":";;;;;;;;;;;IASaK,mBAAAA;;;sBAsDAmC;eAAAA;;;uBA/DwC,iBAAiB;4BAC/C,wBAAwB;uBAGV,wBAAwB;AAKtD,4BAA6D;IAClElC,SAAS;IACTC,YAAY;IACZC,aAAa;IACbC,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,iBAAiB;IACjBC,OAAO;IACPC,oBAAoB;IACpBC,WAAW;IACXC,YAAY;IACZC,sBAAsB;IACtBC,aAAa;IACbC,cAAc;IACdC,YAAY;IACZC,OAAO;AACT,EAAE;AAEF;;CAEC,GACD,MAAMC,gBAAYtB,iBAAAA,EAAW;IAC3BM,SAAS;QACPiB,SAAS;QACTC,eAAe;QACf,GAAGtB,iBAAAA,CAAWuB,OAAO,CAACtB,kBAAAA,CAAOuB,kBAAkB,CAAC;QAChDC,UAAU;QACVC,WAAW;QACXC,KAAK1B,kBAAAA,CAAO2B,mBAAmB;QAC/BC,MAAM5B,kBAAAA,CAAO6B,uBAAuB;QACpCC,cAAc9B,kBAAAA,CAAO+B,iBAAiB;QACtCC,eAAe;IACjB;IACA5B,YAAY;QACV6B,QAAQjC,kBAAAA,CAAO6B,uBAAuB;QACtC,CAAC5B,2BAAAA,CAAqB,EAAE;YACtBgC,QAAQ;QACV;IACF;IACA5B,aAAa;QACXuB,MAAM5B,kBAAAA,CAAOkC,uBAAuB;QACpCC,YAAY;QACZC,WAAW;YACT,CAACnC,2BAAAA,CAAqB,EAAE;gBACtB2B,MAAM;YACR;QACF;IACF;AACF;AAKO,2BAA2B,CAACU;IACjC,MAAMC,aAAapB;IACnB,OAAO;QACLhB,SAASL,uBAAAA,EAAaI,oBAAoBC,OAAO,EAAEoC,WAAWpC,OAAO,CAAC,uBAAuB;QAC7FC,gBAAYN,mBAAAA,EAAaI,oBAAoBE,UAAU,EAAEmC,WAAWnC,UAAU,CAAC,0BAA0B;QACzGC,iBAAaP,mBAAAA,EAAaI,oBAAoBG,WAAW,EAAEkC,WAAWlC,WAAW,CAAC,2BAA2B;IAC/G;AACF,EAAE"}
@@ -27,7 +27,7 @@ const ScatterChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
27
27
  const _tooltipId = (0, _reactutilities.useId)('ScatterChartTooltipId_');
28
28
  const _firstRenderOptimization = true;
29
29
  const _emptyChartId = (0, _reactutilities.useId)('_ScatterChart_empty');
30
- let _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);
30
+ let _points = _injectIndexPropertyInScatterChartData(props.data.scatterChartData);
31
31
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
32
  let _calloutPoints = (0, _index1.calloutData)(_points) || [];
33
33
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -81,15 +81,15 @@ const ScatterChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
81
81
  }
82
82
  };
83
83
  }, []);
84
- const _xAxisType = props.data.lineChartData && props.data.lineChartData.length > 0 && props.data.lineChartData[0].data && props.data.lineChartData[0].data.length > 0 ? (0, _index1.getTypeOfAxis)(props.data.lineChartData[0].data[0].x, true) : _index1.XAxisTypes.StringAxis;
84
+ const _xAxisType = props.data.scatterChartData && props.data.scatterChartData.length > 0 && props.data.scatterChartData[0].data && props.data.scatterChartData[0].data.length > 0 ? (0, _index1.getTypeOfAxis)(props.data.scatterChartData[0].data[0].x, true) : _index1.XAxisTypes.StringAxis;
85
85
  const pointsRef = _react.useRef([]);
86
86
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
87
  const calloutPointsRef = _react.useRef([]);
88
88
  _react.useEffect(()=>{
89
89
  /** note that height and width are not used to resize or set as dimesions of the chart,
90
90
  * fitParentContainer is responisble for setting the height and width or resizing of the svg/chart
91
- */ if (_points !== _injectIndexPropertyInScatterChartData(props.data.lineChartData) || props.data !== _points) {
92
- pointsRef.current = _injectIndexPropertyInScatterChartData(props.data.lineChartData);
91
+ */ if (_points !== _injectIndexPropertyInScatterChartData(props.data.scatterChartData) || props.data !== _points) {
92
+ pointsRef.current = _injectIndexPropertyInScatterChartData(props.data.scatterChartData);
93
93
  calloutPointsRef.current = (0, _index1.calloutData)(pointsRef.current);
94
94
  }
95
95
  }, [
@@ -220,7 +220,7 @@ const ScatterChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
220
220
  if (isSelectedLegend) {
221
221
  _points = selectedLegendPoints;
222
222
  } else {
223
- _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);
223
+ _points = _injectIndexPropertyInScatterChartData(props.data.scatterChartData);
224
224
  }
225
225
  const yMax = (0, _d3array.max)(points, (point)=>{
226
226
  return (0, _d3array.max)(point.data, (item)=>item.y);
@@ -424,10 +424,10 @@ const ScatterChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
424
424
  return ((_point_callOutAccessibilityData = point.callOutAccessibilityData) === null || _point_callOutAccessibilityData === void 0 ? void 0 : _point_callOutAccessibilityData.ariaLabel) || `${xValue}. ${legend}, ${yValue}.`;
425
425
  }
426
426
  function _isChartEmpty() {
427
- return !(props.data && props.data.lineChartData && props.data.lineChartData.length > 0 && props.data.lineChartData.filter((item)=>item.data.length).length > 0);
427
+ return !(props.data && props.data.scatterChartData && props.data.scatterChartData.length > 0 && props.data.scatterChartData.filter((item)=>item.data.length).length > 0);
428
428
  }
429
429
  const { legendProps, tickValues, tickFormat } = props;
430
- _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);
430
+ _points = _injectIndexPropertyInScatterChartData(props.data.scatterChartData);
431
431
  let points = _points;
432
432
  if (legendProps && !!legendProps.canSelectMultipleLegends) {
433
433
  points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/ScatterChart/ScatterChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ScatterChartProps } from './ScatterChart.types';\nimport { useScatterChartStyles } from './useScatterChartStyles.styles';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { Legend, Legends } from '../Legends/index';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport {\n areArraysEqual,\n createNumericYAxis,\n createStringYAxis,\n domainRangeOfDateForScatterChart,\n domainRangeOfNumericForScatterChart,\n domainRangeOfXStringAxis,\n find,\n findNumericMinMaxOfY,\n IDomainNRange,\n YAxisType,\n useRtl,\n} from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ScatterChartDataPoint,\n Chart,\n ImageExportOptions,\n LegendContainer,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n XAxisTypes,\n tooltipOfAxislabels,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n formatDate,\n} from '../../utilities/index';\nimport { toImage } from '../../utilities/image-export-utils';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\ntype ScatterChartDataWithIndex = LineChartPoints & { index: number };\n\n// Create a ScatterChart variant which uses these default styles and this styled subcomponent.\n/**\n * ScatterChart component\n * {@docCategory ScatterChart}\n */\nexport const ScatterChart: React.FunctionComponent<ScatterChartProps> = React.forwardRef<\n HTMLDivElement,\n ScatterChartProps\n>((props, forwardedRef) => {\n const _circleId: string = useId('circle');\n const _seriesId: string = useId('seriesID');\n const _verticalLine: string = useId('verticalLine');\n const _tooltipId: string = useId('ScatterChartTooltipId_');\n const _firstRenderOptimization = true;\n const _emptyChartId: string = useId('_ScatterChart_empty');\n let _points: ScatterChartDataWithIndex[] = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any[] = calloutData(_points) || [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisScale: any = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _yAxisScale: any = '';\n let _uniqueCallOutID: string | null = '';\n let _refArray: RefArrayData[] = [];\n let margins: Margins;\n let renderSeries: JSXElement[];\n let _xAxisLabels: string[] = [];\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n let _xBandwidth = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n const classes = useScatterChartStyles(props);\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _isRTL: boolean = useRtl();\n\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [YValueHover, setYValueHover] = React.useState<[]>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [selectedLegendPoints, setSelectedLegendPoints] = React.useState<any[]>([]);\n const [isSelectedLegend, setIsSelectedLegend] = React.useState<boolean>(false);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const prevSelectedLegendsRef = React.useRef<string[] | undefined>(undefined);\n\n React.useEffect(() => {\n if (\n prevSelectedLegendsRef.current &&\n !areArraysEqual(prevSelectedLegendsRef.current, props.legendProps?.selectedLegends)\n ) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n prevSelectedLegendsRef.current = props.legendProps?.selectedLegends;\n }, [props.legendProps?.selectedLegends]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(cartesianChartRef.current?.chartContainer, _legendsRef.current?.toSVG, _isRTL, opts);\n },\n }),\n [],\n );\n\n const _xAxisType: XAxisTypes =\n props.data.lineChartData! &&\n props.data.lineChartData!.length > 0 &&\n props.data.lineChartData![0].data &&\n props.data.lineChartData![0].data.length > 0\n ? (getTypeOfAxis(props.data.lineChartData![0].data[0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n\n const pointsRef = React.useRef<ScatterChartDataWithIndex[] | []>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const calloutPointsRef = React.useRef<any[]>([]);\n React.useEffect(() => {\n /** note that height and width are not used to resize or set as dimesions of the chart,\n * fitParentContainer is responisble for setting the height and width or resizing of the svg/chart\n */\n\n if (_points !== _injectIndexPropertyInScatterChartData(props.data.lineChartData) || props.data !== _points) {\n pointsRef.current = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n calloutPointsRef.current = calloutData(pointsRef.current);\n }\n }, [props.height, props.width, props.data, _points]);\n\n function _injectIndexPropertyInScatterChartData(\n scatterChartData?: LineChartPoints[],\n ): ScatterChartDataWithIndex[] | [] {\n return scatterChartData\n ? scatterChartData.map((item: LineChartPoints, index: number) => {\n let color: string;\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n return {\n ...item,\n index: -1,\n color,\n };\n })\n : [];\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getNumericMinMaxOfY(\n points: LineChartPoints[],\n yAxisType?: YAxisType,\n ): { startValue: number; endValue: number } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { startValue, endValue } = findNumericMinMaxOfY(points, yAxisType);\n let yPadding = 0;\n yPadding = (endValue - startValue) * 0.1;\n\n return {\n startValue: startValue - yPadding,\n endValue: endValue + yPadding,\n };\n }\n\n function _getDomainNRangeValues(\n points: any,\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForScatterChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForScatterChart(points, margins, width, isRTL, tickValues! as Date[]);\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeScatterChartData(\n xScale: NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n _xAxisScale = xScale;\n _yAxisScale = yScale;\n renderSeries = _createPlot(xElement!, containerHeight!);\n }\n\n function _onHoverCardHide() {\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n function _createLegends(data: ScatterChartDataWithIndex[]): JSXElement {\n const { legendProps } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const legendDataItems = data.map((point: ScatterChartDataWithIndex) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend);\n },\n ...(point.legendShape && {\n shape: point.legendShape,\n }),\n };\n return legend;\n });\n\n return (\n <Legends\n legends={[...legendDataItems]}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...(isLegendMultiSelectEnabled && { onLegendHoverCardLeave: _onHoverCardHide })}\n {...props.legendProps}\n selectedLegends={selectedLegends}\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n function _getPointFill(seriesColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return seriesColor;\n }\n }\n\n function _createPlot(xElement: SVGElement, containerHeight: number): JSXElement[] {\n const series: JSXElement[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n }\n\n const yMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yPadding = (yMax - yMin) * 0.1;\n const yPaddingRange = Math.abs(_yAxisScale(yMin + yPadding) - _yAxisScale(yMin));\n\n let maxMarkerRange = 40;\n let xPaddingRange = 0;\n if (_xAxisType === XAxisTypes.StringAxis) {\n _xBandwidth = _xAxisScale.bandwidth() / 2;\n xPaddingRange = _xBandwidth;\n } else if (_xAxisType === XAxisTypes.DateAxis) {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as Date)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n\n const xPadding = (xMax.getTime() - xMin.getTime()) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(new Date(xMin.getTime() + xPadding)) - _xAxisScale(xMin));\n } else {\n const xMin = d3Min(points, (point: LineChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as number)!;\n })!;\n\n const xMax = d3Max(points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n const xPadding = (xMax - xMin) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(xMin + xPadding) - _xAxisScale(xMin));\n }\n maxMarkerRange = Math.min(maxMarkerRange, Math.min(xPaddingRange, yPaddingRange));\n\n const maxMarkerSize = d3Max(_points, (point: LineChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.markerSize as number;\n });\n })!;\n\n for (let i = _points.length - 1; i >= 0; i--) {\n const pointsForSeries: JSXElement[] = [];\n\n const legendVal: string = _points[i].legend;\n const seriesColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\n\n for (let j = 0; j < _points[i].data.length; j++) {\n const seriesId = `${_seriesId}_${i}_${j}`;\n const circleId = `${_circleId}_${i}_${j}`;\n const { x, y, xAxisCalloutData, xAxisCalloutAccessibilityData } = _points[i].data[j];\n let circleRadius = 3.5;\n const pointMarkerSize = (_points[i].data[j] as ScatterChartDataPoint).markerSize;\n if ((pointMarkerSize as number) !== undefined) {\n circleRadius = Math.min((pointMarkerSize! * maxMarkerRange) / maxMarkerSize, pointMarkerSize!);\n }\n\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;\n pointsForSeries.push(\n <circle\n id={circleId}\n key={circleId}\n r={circleRadius}\n cx={_xAxisScale(x) + _xBandwidth}\n cy={_yAxisScale(y)}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(event, seriesId, x, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.1}\n fill={_getPointFill(seriesColor, circleId, j, false)}\n stroke={seriesColor}\n role=\"img\"\n aria-label={_getAriaLabel(i, j)}\n tabIndex={isLegendSelected ? 0 : undefined}\n />,\n );\n }\n\n series.push(\n <g\n key={`series_${i}`}\n role=\"region\"\n aria-label={`${legendVal}, series ${i + 1} of ${_points.length} with ${_points[i].data.length} data points.`}\n >\n {pointsForSeries}\n </g>,\n );\n }\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(_xAxisScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return series;\n }\n\n function _handleFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n seriesId: string,\n x: number | Date | string,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n let cx = 0;\n let cy = 0;\n\n const targetRect = (event.target as SVGCircleElement).getBoundingClientRect();\n cx = targetRect.left + targetRect.width / 2;\n cy = targetRect.top + targetRect.height / 2;\n updatePosition(cx, cy);\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, 0)`)\n .attr('visibility', 'visibility');\n _refArray.forEach((obj: RefArrayData) => {\n if (obj.index === seriesId) {\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n });\n } else {\n setActivePoint(circleId);\n }\n }\n\n function _handleHover(\n x: number | Date | string,\n y: number | Date,\n lineHeight: number,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData: AccessibilityProps | undefined,\n mouseEvent: React.MouseEvent<SVGElement>,\n ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, ${_yAxisScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - _yAxisScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n } else {\n setActivePoint(circleId);\n }\n }\n\n /**\n * Screen readers announce an element as clickable if the onClick attribute is set.\n * This function sets the attribute only when a click event handler is provided.*/\n\n function _getClickHandler(func?: () => void): { onClick?: () => void } {\n if (func) {\n return {\n onClick: func,\n };\n }\n\n return {};\n }\n\n function _handleMouseOut() {\n d3Select(`#${_verticalLine}`).attr('visibility', 'hidden');\n }\n\n function _handleChartMouseLeave() {\n _uniqueCallOutID = null;\n setActivePoint('');\n if (isPopoverOpen) {\n setPopoverOpen(false);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it*/\n\n function _legendHighlighted(legend: string): boolean {\n return _getHighlightedLegend().includes(legend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted(): boolean {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _getAriaLabel(seriesIndex: number, pointIndex: number): string {\n const series = _points[seriesIndex];\n const point = series.data[pointIndex];\n const formattedDate = point.x instanceof Date ? formatDate(point.x, props.useUTC) : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = series.legend;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n props.data.lineChartData.filter((item: LineChartPoints) => item.data.length).length > 0\n );\n }\n\n const { legendProps, tickValues, tickFormat } = props;\n _points = _injectIndexPropertyInScatterChartData(props.data.lineChartData);\n\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n _calloutPoints = calloutData(points);\n }\n\n let legendBars = null;\n // reduce computation cost by only creating legendBars\n // if when hideLegend is false.\n // NOTE: they are rendered only when hideLegend is false in CartesianChart.\n if (!props.hideLegend) {\n legendBars = _createLegends(_points!); // ToDo: Memoize legends to improve performance.\n }\n const calloutProps = {\n YValueHover,\n hoverXValue,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCalloutForStack: true,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n };\n const tickParams = {\n tickValues,\n tickFormat,\n };\n\n const xAxisLabels: string[] = _points\n .map((point: ScatterChartDataWithIndex) => point.data.map((dp: ScatterChartDataPoint) => dp.x as string))\n .flat();\n\n _xAxisLabels = [...new Set(xAxisLabels)];\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={props.data.chartTitle}\n points={points}\n chartType={ChartTypes.ScatterChart}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n getmargins={_getMargins}\n getGraphData={_initializeScatterChartData}\n xAxisType={_xAxisType}\n getMinMaxOfYAxis={_getNumericMinMaxOfY}\n getDomainNRangeValues={_getDomainNRangeValues}\n createYAxis={createNumericYAxis}\n createStringYAxis={createStringYAxis}\n onChartMouseLeave={_handleChartMouseLeave}\n enableFirstRenderOptimization={_firstRenderOptimization}\n datasetForXAxisDomain={_xAxisLabels}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: ChildProps) => {\n _xAxisScale = props.xScale!;\n _yAxisScale = props.yScalePrimary!;\n return (\n <>\n <g>\n <line\n x1={0}\n y1={0}\n x2={0}\n y2={props.containerHeight}\n stroke={'#323130'}\n id={_verticalLine}\n visibility={'hidden'}\n strokeDasharray={'5,5'}\n />\n <g>{renderSeries}</g>\n </g>\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nScatterChart.displayName = 'ScatterChart';\n"],"names":["React","useScatterChartStyles","select","d3Select","Legends","max","d3Max","min","d3Min","useId","areArraysEqual","createNumericYAxis","createStringYAxis","domainRangeOfDateForScatterChart","domainRangeOfNumericForScatterChart","domainRangeOfXStringAxis","find","findNumericMinMaxOfY","useRtl","CartesianChart","tokens","calloutData","ChartTypes","XAxisTypes","tooltipOfAxislabels","getTypeOfAxis","getNextColor","getColorFromToken","formatDate","toImage","ScatterChart","forwardRef","props","forwardedRef","_circleId","_seriesId","_verticalLine","_tooltipId","_firstRenderOptimization","_emptyChartId","_points","_injectIndexPropertyInScatterChartData","data","lineChartData","_calloutPoints","_xAxisScale","_yAxisScale","_uniqueCallOutID","_refArray","margins","renderSeries","_xAxisLabels","xAxisCalloutAccessibilityData","_xBandwidth","cartesianChartRef","useRef","classes","_legendsRef","_isRTL","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegendPoints","setSelectedLegendPoints","isSelectedLegend","setIsSelectedLegend","activePoint","setActivePoint","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","legendProps","prevSelectedLegendsRef","undefined","useEffect","current","useImperativeHandle","componentRef","chartContainer","opts","toSVG","_xAxisType","length","StringAxis","pointsRef","calloutPointsRef","height","width","scatterChartData","map","item","index","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getNumericMinMaxOfY","points","yAxisType","startValue","endValue","yPadding","_getDomainNRangeValues","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","DateAxis","_getMargins","_margins","_initializeScatterChartData","xScale","yScale","containerHeight","containerWidth","xElement","_createPlot","_onHoverCardHide","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","legendDataItems","point","legend","title","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","onChange","_onLegendSelectionChange","legendRef","legendsSelected","event","currentLegend","slice","_getPointFill","seriesColor","pointId","pointIndex","isLastPoint","colorNeutralBackground1","series","yMax","yMin","yPaddingRange","abs","maxMarkerRange","xPaddingRange","bandwidth","xMin","xMax","xPadding","getTime","Date","maxMarkerSize","markerSize","i","pointsForSeries","legendVal","verticaLineHeight","bottom","j","seriesId","circleId","xAxisCalloutData","circleRadius","pointMarkerSize","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentPointHidden","hideNonActiveDots","push","circle","id","key","r","cx","cy","data-is-focusable","onMouseOver","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","opacity","fill","stroke","role","aria-label","_getAriaLabel","tabIndex","g","showXAxisLablesTooltip","document","getElementById","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","targetRect","target","getBoundingClientRect","left","top","formattedData","useUTC","xVal","found","element","attr","forEach","obj","values","lineHeight","mouseEvent","persist","clientX","clientY","func","onClick","_getHighlightedLegend","includes","seriesIndex","formattedDate","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","filter","tickFormat","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","tickParams","xAxisLabels","dp","flat","Set","chartTitle","getmargins","getGraphData","getMinMaxOfYAxis","getDomainNRangeValues","createYAxis","onChartMouseLeave","enableFirstRenderOptimization","datasetForXAxisDomain","children","yScalePrimary","line","x1","y1","x2","y2","visibility","strokeDasharray","div","style","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/ScatterChart/ScatterChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ScatterChartProps } from './ScatterChart.types';\nimport { useScatterChartStyles } from './useScatterChartStyles.styles';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { Legend, Legends } from '../Legends/index';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport {\n areArraysEqual,\n createNumericYAxis,\n createStringYAxis,\n domainRangeOfDateForScatterChart,\n domainRangeOfNumericForScatterChart,\n domainRangeOfXStringAxis,\n find,\n findNumericMinMaxOfY,\n IDomainNRange,\n YAxisType,\n useRtl,\n} from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ScatterChartDataPoint,\n Chart,\n ImageExportOptions,\n LegendContainer,\n ScatterChartPoints,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n XAxisTypes,\n tooltipOfAxislabels,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n formatDate,\n} from '../../utilities/index';\nimport { toImage } from '../../utilities/image-export-utils';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\n\ntype ScatterChartDataWithIndex = ScatterChartPoints & { index: number };\n\n// Create a ScatterChart variant which uses these default styles and this styled subcomponent.\n/**\n * ScatterChart component\n * {@docCategory ScatterChart}\n */\nexport const ScatterChart: React.FunctionComponent<ScatterChartProps> = React.forwardRef<\n HTMLDivElement,\n ScatterChartProps\n>((props, forwardedRef) => {\n const _circleId: string = useId('circle');\n const _seriesId: string = useId('seriesID');\n const _verticalLine: string = useId('verticalLine');\n const _tooltipId: string = useId('ScatterChartTooltipId_');\n const _firstRenderOptimization = true;\n const _emptyChartId: string = useId('_ScatterChart_empty');\n let _points: ScatterChartDataWithIndex[] = _injectIndexPropertyInScatterChartData(props.data.scatterChartData);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any[] = calloutData(_points) || [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisScale: any = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _yAxisScale: any = '';\n let _uniqueCallOutID: string | null = '';\n let _refArray: RefArrayData[] = [];\n let margins: Margins;\n let renderSeries: JSXElement[];\n let _xAxisLabels: string[] = [];\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n let _xBandwidth = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n const classes = useScatterChartStyles(props);\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _isRTL: boolean = useRtl();\n\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [YValueHover, setYValueHover] = React.useState<[]>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [selectedLegendPoints, setSelectedLegendPoints] = React.useState<any[]>([]);\n const [isSelectedLegend, setIsSelectedLegend] = React.useState<boolean>(false);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const prevSelectedLegendsRef = React.useRef<string[] | undefined>(undefined);\n\n React.useEffect(() => {\n if (\n prevSelectedLegendsRef.current &&\n !areArraysEqual(prevSelectedLegendsRef.current, props.legendProps?.selectedLegends)\n ) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n prevSelectedLegendsRef.current = props.legendProps?.selectedLegends;\n }, [props.legendProps?.selectedLegends]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(cartesianChartRef.current?.chartContainer, _legendsRef.current?.toSVG, _isRTL, opts);\n },\n }),\n [],\n );\n\n const _xAxisType: XAxisTypes =\n props.data.scatterChartData! &&\n props.data.scatterChartData!.length > 0 &&\n props.data.scatterChartData![0].data &&\n props.data.scatterChartData![0].data.length > 0\n ? (getTypeOfAxis(props.data.scatterChartData![0].data[0].x, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n\n const pointsRef = React.useRef<ScatterChartDataWithIndex[] | []>([]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const calloutPointsRef = React.useRef<any[]>([]);\n React.useEffect(() => {\n /** note that height and width are not used to resize or set as dimesions of the chart,\n * fitParentContainer is responisble for setting the height and width or resizing of the svg/chart\n */\n\n if (_points !== _injectIndexPropertyInScatterChartData(props.data.scatterChartData) || props.data !== _points) {\n pointsRef.current = _injectIndexPropertyInScatterChartData(props.data.scatterChartData);\n calloutPointsRef.current = calloutData(pointsRef.current);\n }\n }, [props.height, props.width, props.data, _points]);\n\n function _injectIndexPropertyInScatterChartData(\n scatterChartData?: ScatterChartPoints[],\n ): ScatterChartDataWithIndex[] | [] {\n return scatterChartData\n ? scatterChartData.map((item: ScatterChartPoints, index: number) => {\n let color: string;\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n return {\n ...item,\n index: -1,\n color,\n };\n })\n : [];\n }\n\n function updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getNumericMinMaxOfY(\n points: ScatterChartPoints[],\n yAxisType?: YAxisType,\n ): { startValue: number; endValue: number } {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { startValue, endValue } = findNumericMinMaxOfY(points, yAxisType);\n let yPadding = 0;\n yPadding = (endValue - startValue) * 0.1;\n\n return {\n startValue: startValue - yPadding,\n endValue: endValue + yPadding,\n };\n }\n\n function _getDomainNRangeValues(\n points: any,\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForScatterChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForScatterChart(points, margins, width, isRTL, tickValues! as Date[]);\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n function _getMargins(_margins: Margins) {\n margins = _margins;\n }\n\n function _initializeScatterChartData(\n xScale: NumericAxis,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n _xAxisScale = xScale;\n _yAxisScale = yScale;\n renderSeries = _createPlot(xElement!, containerHeight!);\n }\n\n function _onHoverCardHide() {\n setSelectedLegendPoints([]);\n setIsSelectedLegend(false);\n }\n\n function _createLegends(data: ScatterChartDataWithIndex[]): JSXElement {\n const { legendProps } = props;\n const isLegendMultiSelectEnabled = !!(legendProps && !!legendProps.canSelectMultipleLegends);\n const legendDataItems = data.map((point: ScatterChartDataWithIndex) => {\n const color: string = point.color!;\n // mapping data to the format Legends component needs\n const legend: Legend = {\n title: point.legend!,\n color,\n onMouseOutAction: () => {\n setActiveLegend('');\n },\n hoverAction: () => {\n _handleChartMouseLeave();\n setActiveLegend(point.legend);\n },\n ...(point.legendShape && {\n shape: point.legendShape,\n }),\n };\n return legend;\n });\n\n return (\n <Legends\n legends={[...legendDataItems]}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...(isLegendMultiSelectEnabled && { onLegendHoverCardLeave: _onHoverCardHide })}\n {...props.legendProps}\n selectedLegends={selectedLegends}\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _onLegendSelectionChange(\n legendsSelected: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(legendsSelected);\n } else {\n setSelectedLegends(legendsSelected.slice(-1));\n }\n\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(legendsSelected, event, currentLegend);\n }\n }\n\n function _getPointFill(seriesColor: string, pointId: string, pointIndex: number, isLastPoint: boolean) {\n if (activePoint === pointId) {\n return tokens.colorNeutralBackground1;\n } else {\n return seriesColor;\n }\n }\n\n function _createPlot(xElement: SVGElement, containerHeight: number): JSXElement[] {\n const series: JSXElement[] = [];\n if (isSelectedLegend) {\n _points = selectedLegendPoints;\n } else {\n _points = _injectIndexPropertyInScatterChartData(props.data.scatterChartData);\n }\n\n const yMax = d3Max(points, (point: ScatterChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yMin = d3Min(points, (point: ScatterChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.y)!;\n })!;\n const yPadding = (yMax - yMin) * 0.1;\n const yPaddingRange = Math.abs(_yAxisScale(yMin + yPadding) - _yAxisScale(yMin));\n\n let maxMarkerRange = 40;\n let xPaddingRange = 0;\n if (_xAxisType === XAxisTypes.StringAxis) {\n _xBandwidth = _xAxisScale.bandwidth() / 2;\n xPaddingRange = _xBandwidth;\n } else if (_xAxisType === XAxisTypes.DateAxis) {\n const xMin = d3Min(points, (point: ScatterChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as Date)!;\n })!;\n\n const xMax = d3Max(points, (point: ScatterChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n\n const xPadding = (xMax.getTime() - xMin.getTime()) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(new Date(xMin.getTime() + xPadding)) - _xAxisScale(xMin));\n } else {\n const xMin = d3Min(points, (point: ScatterChartPoints) => {\n return d3Min(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => item.x as number)!;\n })!;\n\n const xMax = d3Max(points, (point: ScatterChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n const xPadding = (xMax - xMin) * 0.1;\n xPaddingRange = Math.abs(_xAxisScale(xMin + xPadding) - _xAxisScale(xMin));\n }\n maxMarkerRange = Math.min(maxMarkerRange, Math.min(xPaddingRange, yPaddingRange));\n\n const maxMarkerSize = d3Max(_points, (point: ScatterChartPoints) => {\n return d3Max(point.data as ScatterChartDataPoint[], (item: ScatterChartDataPoint) => {\n return item.markerSize as number;\n });\n })!;\n\n for (let i = _points.length - 1; i >= 0; i--) {\n const pointsForSeries: JSXElement[] = [];\n\n const legendVal: string = _points[i].legend;\n const seriesColor: string = _points[i].color!;\n const verticaLineHeight = containerHeight - margins.bottom! + 6;\n\n for (let j = 0; j < _points[i].data.length; j++) {\n const seriesId = `${_seriesId}_${i}_${j}`;\n const circleId = `${_circleId}_${i}_${j}`;\n const { x, y, xAxisCalloutData, xAxisCalloutAccessibilityData } = _points[i].data[j];\n let circleRadius = 3.5;\n const pointMarkerSize = (_points[i].data[j] as ScatterChartDataPoint).markerSize;\n if ((pointMarkerSize as number) !== undefined) {\n circleRadius = Math.min((pointMarkerSize! * maxMarkerRange) / maxMarkerSize, pointMarkerSize!);\n }\n\n const isLegendSelected: boolean = _legendHighlighted(legendVal) || _noLegendHighlighted() || isSelectedLegend;\n\n const currentPointHidden = _points[i].hideNonActiveDots && activePoint !== circleId;\n pointsForSeries.push(\n <circle\n id={circleId}\n key={circleId}\n r={circleRadius}\n cx={_xAxisScale(x) + _xBandwidth}\n cy={_yAxisScale(y)}\n data-is-focusable={isLegendSelected}\n onMouseOver={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseMove={(event: React.MouseEvent<SVGElement>) =>\n _handleHover(x, y, verticaLineHeight, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData, event)\n }\n onMouseOut={_handleMouseOut}\n onFocus={event =>\n _handleFocus(event, seriesId, x, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)\n }\n onBlur={_handleMouseOut}\n {..._getClickHandler(_points[i].data[j].onDataPointClick)}\n opacity={isLegendSelected && !currentPointHidden ? 1 : 0.1}\n fill={_getPointFill(seriesColor, circleId, j, false)}\n stroke={seriesColor}\n role=\"img\"\n aria-label={_getAriaLabel(i, j)}\n tabIndex={isLegendSelected ? 0 : undefined}\n />,\n );\n }\n\n series.push(\n <g\n key={`series_${i}`}\n role=\"region\"\n aria-label={`${legendVal}, series ${i + 1} of ${_points.length} with ${_points[i].data.length} data points.`}\n >\n {pointsForSeries}\n </g>,\n );\n }\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(_xAxisScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return series;\n }\n\n function _handleFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n seriesId: string,\n x: number | Date | string,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\n let cx = 0;\n let cy = 0;\n\n const targetRect = (event.target as SVGCircleElement).getBoundingClientRect();\n cx = targetRect.left + targetRect.width / 2;\n cy = targetRect.top + targetRect.height / 2;\n updatePosition(cx, cy);\n _uniqueCallOutID = circleId;\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, 0)`)\n .attr('visibility', 'visibility');\n _refArray.forEach((obj: RefArrayData) => {\n if (obj.index === seriesId) {\n setPopoverOpen(true);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n });\n } else {\n setActivePoint(circleId);\n }\n }\n\n function _handleHover(\n x: number | Date | string,\n y: number | Date,\n lineHeight: number,\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData: AccessibilityProps | undefined,\n mouseEvent: React.MouseEvent<SVGElement>,\n ) {\n mouseEvent?.persist();\n const formattedData = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const xVal = x instanceof Date ? x.getTime() : x;\n const found = find(_calloutPoints, (element: { x: string | number }) => element.x === xVal);\n // if no points need to be called out then don't show vertical line and callout card\n\n if (found) {\n d3Select(`#${_verticalLine}`)\n .attr('transform', () => `translate(${_xAxisScale(x) + _xBandwidth}, ${_yAxisScale(y)})`)\n .attr('visibility', 'visibility')\n .attr('y2', `${lineHeight - _yAxisScale(y)}`);\n\n if (_uniqueCallOutID !== circleId) {\n _uniqueCallOutID = circleId;\n updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n xAxisCalloutData ? setHoverXValue(xAxisCalloutData) : setHoverXValue('' + formattedData);\n setYValueHover(found.values);\n setStackCalloutProps(found!);\n setActivePoint(circleId);\n }\n } else {\n setActivePoint(circleId);\n }\n }\n\n /**\n * Screen readers announce an element as clickable if the onClick attribute is set.\n * This function sets the attribute only when a click event handler is provided.*/\n\n function _getClickHandler(func?: () => void): { onClick?: () => void } {\n if (func) {\n return {\n onClick: func,\n };\n }\n\n return {};\n }\n\n function _handleMouseOut() {\n d3Select(`#${_verticalLine}`).attr('visibility', 'hidden');\n }\n\n function _handleChartMouseLeave() {\n _uniqueCallOutID = null;\n setActivePoint('');\n if (isPopoverOpen) {\n setPopoverOpen(false);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it*/\n\n function _legendHighlighted(legend: string): boolean {\n return _getHighlightedLegend().includes(legend);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.*/\n\n function _noLegendHighlighted(): boolean {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend(): string[] {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _getAriaLabel(seriesIndex: number, pointIndex: number): string {\n const series = _points[seriesIndex];\n const point = series.data[pointIndex];\n const formattedDate = point.x instanceof Date ? formatDate(point.x, props.useUTC) : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = series.legend;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _isChartEmpty(): boolean {\n return !(\n props.data &&\n props.data.scatterChartData &&\n props.data.scatterChartData.length > 0 &&\n props.data.scatterChartData.filter((item: ScatterChartPoints) => item.data.length).length > 0\n );\n }\n\n const { legendProps, tickValues, tickFormat } = props;\n _points = _injectIndexPropertyInScatterChartData(props.data.scatterChartData);\n\n let points = _points;\n if (legendProps && !!legendProps.canSelectMultipleLegends) {\n points = selectedLegendPoints.length >= 1 ? selectedLegendPoints : _points;\n _calloutPoints = calloutData(points);\n }\n\n let legendBars = null;\n // reduce computation cost by only creating legendBars\n // if when hideLegend is false.\n // NOTE: they are rendered only when hideLegend is false in CartesianChart.\n if (!props.hideLegend) {\n legendBars = _createLegends(_points!); // ToDo: Memoize legends to improve performance.\n }\n const calloutProps = {\n YValueHover,\n hoverXValue,\n descriptionMessage:\n props.getCalloutDescriptionMessage && stackCalloutProps\n ? props.getCalloutDescriptionMessage(stackCalloutProps)\n : undefined,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCalloutForStack: true,\n culture: props.culture ?? 'en-us',\n isCartesian: true,\n };\n const tickParams = {\n tickValues,\n tickFormat,\n };\n\n const xAxisLabels: string[] = _points\n .map((point: ScatterChartDataWithIndex) => point.data.map((dp: ScatterChartDataPoint) => dp.x as string))\n .flat();\n\n _xAxisLabels = [...new Set(xAxisLabels)];\n\n return !_isChartEmpty() ? (\n <CartesianChart\n {...props}\n chartTitle={props.data.chartTitle}\n points={points}\n chartType={ChartTypes.ScatterChart}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n getmargins={_getMargins}\n getGraphData={_initializeScatterChartData}\n xAxisType={_xAxisType}\n getMinMaxOfYAxis={_getNumericMinMaxOfY}\n getDomainNRangeValues={_getDomainNRangeValues}\n createYAxis={createNumericYAxis}\n createStringYAxis={createStringYAxis}\n onChartMouseLeave={_handleChartMouseLeave}\n enableFirstRenderOptimization={_firstRenderOptimization}\n datasetForXAxisDomain={_xAxisLabels}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: ChildProps) => {\n _xAxisScale = props.xScale!;\n _yAxisScale = props.yScalePrimary!;\n return (\n <>\n <g>\n <line\n x1={0}\n y1={0}\n x2={0}\n y2={props.containerHeight}\n stroke={'#323130'}\n id={_verticalLine}\n visibility={'hidden'}\n strokeDasharray={'5,5'}\n />\n <g>{renderSeries}</g>\n </g>\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nScatterChart.displayName = 'ScatterChart';\n"],"names":["React","useScatterChartStyles","select","d3Select","Legends","max","d3Max","min","d3Min","useId","areArraysEqual","createNumericYAxis","createStringYAxis","domainRangeOfDateForScatterChart","domainRangeOfNumericForScatterChart","domainRangeOfXStringAxis","find","findNumericMinMaxOfY","useRtl","CartesianChart","tokens","calloutData","ChartTypes","XAxisTypes","tooltipOfAxislabels","getTypeOfAxis","getNextColor","getColorFromToken","formatDate","toImage","ScatterChart","forwardRef","props","forwardedRef","_circleId","_seriesId","_verticalLine","_tooltipId","_firstRenderOptimization","_emptyChartId","_points","_injectIndexPropertyInScatterChartData","data","scatterChartData","_calloutPoints","_xAxisScale","_yAxisScale","_uniqueCallOutID","_refArray","margins","renderSeries","_xAxisLabels","xAxisCalloutAccessibilityData","_xBandwidth","cartesianChartRef","useRef","classes","_legendsRef","_isRTL","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegendPoints","setSelectedLegendPoints","isSelectedLegend","setIsSelectedLegend","activePoint","setActivePoint","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","legendProps","prevSelectedLegendsRef","undefined","useEffect","current","useImperativeHandle","componentRef","chartContainer","opts","toSVG","_xAxisType","length","StringAxis","pointsRef","calloutPointsRef","height","width","map","item","index","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_getNumericMinMaxOfY","points","yAxisType","startValue","endValue","yPadding","_getDomainNRangeValues","chartType","isRTL","xAxisType","barWidth","tickValues","shiftX","domainNRangeValue","NumericAxis","DateAxis","_getMargins","_margins","_initializeScatterChartData","xScale","yScale","containerHeight","containerWidth","xElement","_createPlot","_onHoverCardHide","_createLegends","isLegendMultiSelectEnabled","canSelectMultipleLegends","legendDataItems","point","legend","title","onMouseOutAction","hoverAction","_handleChartMouseLeave","legendShape","shape","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onLegendHoverCardLeave","onChange","_onLegendSelectionChange","legendRef","legendsSelected","event","currentLegend","slice","_getPointFill","seriesColor","pointId","pointIndex","isLastPoint","colorNeutralBackground1","series","yMax","yMin","yPaddingRange","abs","maxMarkerRange","xPaddingRange","bandwidth","xMin","xMax","xPadding","getTime","Date","maxMarkerSize","markerSize","i","pointsForSeries","legendVal","verticaLineHeight","bottom","j","seriesId","circleId","xAxisCalloutData","circleRadius","pointMarkerSize","isLegendSelected","_legendHighlighted","_noLegendHighlighted","currentPointHidden","hideNonActiveDots","push","circle","id","key","r","cx","cy","data-is-focusable","onMouseOver","_handleHover","onMouseMove","onMouseOut","_handleMouseOut","onFocus","_handleFocus","onBlur","_getClickHandler","onDataPointClick","opacity","fill","stroke","role","aria-label","_getAriaLabel","tabIndex","g","showXAxisLablesTooltip","document","getElementById","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","targetRect","target","getBoundingClientRect","left","top","formattedData","useUTC","xVal","found","element","attr","forEach","obj","values","lineHeight","mouseEvent","persist","clientX","clientY","func","onClick","_getHighlightedLegend","includes","seriesIndex","formattedDate","xValue","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","filter","tickFormat","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","tickParams","xAxisLabels","dp","flat","Set","chartTitle","getmargins","getGraphData","getMinMaxOfYAxis","getDomainNRangeValues","createYAxis","onChartMouseLeave","enableFirstRenderOptimization","datasetForXAxisDomain","children","yScalePrimary","line","x1","y1","x2","y2","visibility","strokeDasharray","div","style","displayName"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/DataPoint.ts"],"sourcesContent":["import { SVGProps } from 'react';\nimport { LegendShape } from '../components/Legends/Legends.types';\nimport { CurveFactory } from 'd3-shape';\nimport { SankeyLink, SankeyNode } from 'd3-sankey';\n\nexport interface Basestate {\n _width?: number;\n _height?: number;\n activeLegend?: string;\n color?: string;\n dataForHoverCard?: number | string;\n isCalloutVisible: boolean;\n isLegendSelected?: boolean;\n isLegendHovered?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refSelected?: any;\n YValueHover?: { legend?: string; y?: number | string; color?: string }[];\n hoverYValue?: string | number | null;\n hoverXValue?: string | number | null;\n xCalloutValue?: string;\n yCalloutValue?: string;\n lineColor?: string;\n hoveredLineColor?: string;\n selectedLegend?: string;\n containerWidth?: number;\n containerHeight?: number;\n}\n\nexport interface RefArrayData {\n index?: string;\n refElement?: SVGGElement;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface Margins {\n /**\n * left margin for the chart.\n */\n left?: number;\n /**\n * Right margin for the chart.\n */\n right?: number;\n /**\n * Top margin for the chart.\n */\n top?: number;\n /**\n * Bottom margin for the chart.\n */\n bottom?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface DataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number | string;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n // NOTE: VerticalStackedBarChart, PieChart\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VerticalStackedBarDataPoint extends Omit<DataPoint, 'x'> {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n * If data type on x is Date, then the data is spaced evenly by d3-scale.\n */\n x: number | string | Date;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HorizontalDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number;\n\n /**\n * Total value of a single point bar chart.\n */\n total?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface ChartDataPoint {\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * data the datapoint in the chart\n */\n data?: number;\n\n /**\n * data the datapoint in the chart\n */\n horizontalBarChartdata?: HorizontalDataPoint;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Color for the legend in the chart. If not provided, it will fallback on the default color palette.\n */\n color?: string;\n\n /**\n * placeholder data point\n */\n placeHolder?: boolean;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VerticalBarChartDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number | string | Date;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * data to render the line along with bars\n */\n lineData?: LineDataInVerticalBarChart;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HorizontalBarChartWithAxisDataPoint {\n /**\n * Dependent value of the data point, rendered along the x-axis.\n */\n x: number;\n\n /**\n * Independent value of the data point, rendered along the y-axis.\n * If y is a number, then each y-coordinate is plotted at its y-coordinate.\n * If y is a string, then the data is evenly spaced along the y-axis.\n */\n y: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineDataInVerticalBarChart {\n y: VerticalBarChartDataPoint['y'];\n yAxisCalloutData?: string | undefined;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartData}\n */\ninterface BaseDataPoint {\n /**\n * Defines the function that is executed on clicking line\n */\n onDataPointClick?: () => void;\n\n /**\n * Callout data for x axis\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n */\n yAxisCalloutData?: string | { [id: string]: number };\n\n /**\n * Whether to hide callout data for the point.\n */\n hideCallout?: boolean;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * X axis Accessibility data for callout\n */\n xAxisCalloutAccessibilityData?: AccessibilityProps;\n\n /**\n * Marker size of the points\n */\n markerSize?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartDataPoint extends BaseDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n */\n x: number | Date;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n}\n\n/**\n * {@docCategory ChartData}\n * ScatterChartDataPoint interface.\n */\nexport interface ScatterChartDataPoint extends BaseDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n */\n x: number | Date | string;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * Marker size of the points\n */\n markerSize?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartGap {\n /**\n * Starting index of the gap.\n */\n startIndex: number;\n\n /**\n * Ending index of the gap.\n */\n endIndex: number;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface LineChartLineOptions extends SVGProps<SVGPathElement> {\n /**\n * Width of the line/stroke.\n * Overrides the strokeWidth set on ICartesianChartProps level.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width\n */\n strokeWidth?: number | string;\n\n /**\n * Pattern of dashes and gaps.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray\n */\n strokeDasharray?: string | number;\n\n /**\n * Offset on rendering of stroke dash array.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset\n */\n strokeDashoffset?: string | number;\n\n /**\n * Shape at the end of a subpath.\n * Default round.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap\n */\n strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit';\n\n /**\n * Width of border around the line. Default no border.\n */\n lineBorderWidth?: string | number;\n\n /**\n * Color of border around the line. Default white.\n */\n lineBorderColor?: string;\n\n /**\n * Defines the type of interpolation used to render the line.\n * @default 'linear'\n */\n curve?: 'linear' | 'natural' | 'step' | 'stepAfter' | 'stepBefore' | CurveFactory;\n\n /**\n * Defines the mode of points to be rendered.\n */\n mode?:\n | 'lines'\n | 'markers'\n | 'text'\n | 'lines+markers'\n | 'text+markers'\n | 'text+lines'\n | 'text+lines+markers'\n | 'none'\n | 'gauge'\n | 'number'\n | 'delta'\n | 'number+delta'\n | 'gauge+number'\n | 'gauge+number+delta'\n | 'gauge+delta'\n | 'markers+text'\n | 'lines+text'\n | 'lines+markers+text';\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartPoints {\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * The shape for the legend\n * default: show the rect legend\n */\n legendShape?: LegendShape;\n\n /**\n * dataPoints for the line chart\n */\n data: LineChartDataPoint[] | ScatterChartDataPoint[];\n\n /**\n * gaps in the line chart where a line is not drawn\n */\n gaps?: LineChartGap[];\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * opacity for chart fill color\n */\n opacity?: number;\n\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n\n /**\n * hide dots for points that are not active\n */\n hideNonActiveDots?: boolean;\n\n /**\n * Defines the function that is executed on clicking this legend\n */\n onLegendClick?: (selectedLegend: string | null | string[]) => void;\n\n /**\n * Defines the function that is executed on clicking line\n */\n onLineClick?: () => void;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface ChartProps {\n /**\n * chart title for the chart\n */\n chartTitle?: string;\n\n /**\n * Accessibility data for chart title\n */\n chartTitleAccessibilityData?: AccessibilityProps;\n /**\n * data for the points in the chart\n */\n chartData?: ChartDataPoint[];\n\n /**\n * Accessibility data for chart data\n */\n chartDataAccessibilityData?: AccessibilityProps;\n\n /**\n * data for the points in the line chart\n */\n lineChartData?: LineChartPoints[];\n\n /**\n * data for the points in the line chart\n */\n SankeyChartData?: SankeyChartData;\n\n /**\n * data for the points in the line chart\n */\n pointOptions?: SVGProps<SVGCircleElement>;\n\n /**\n * data for the dotted line on hovering the point\n */\n pointLineOptions?: SVGProps<SVGLineElement>;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface AccessibilityProps {\n /**\n * Accessibility aria-label\n */\n ariaLabel?: string;\n\n /**\n * Accessibility aria-labelledBy\n */\n ariaLabelledBy?: string;\n\n /**\n * Accessibility aria-describedBy\n */\n ariaDescribedBy?: string;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VSChartDataPoint {\n /**\n * data the datapoint in the chart\n */\n data: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface VerticalStackedChartProps {\n /**\n * data for the points in the chart\n */\n chartData: VSChartDataPoint[];\n\n /**\n * Data for x axis label for multistacked Vertical bar chart\n */\n xAxisPoint: number | string | Date;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given, legend will take\n */\n xAxisCalloutData?: string;\n /**\n * line data to render lines on stacked bar chart\n */\n lineData?: LineDataInVerticalStackedBarChart[];\n /**\n * Accessibility data for Whole stack callout\n */\n stackCallOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineDataInVerticalStackedBarChart {\n y: number | string;\n color: string;\n legend: string;\n /**\n * The shape for the legend\n * default: show the rect legend\n */\n legendShape?: LegendShape;\n /**\n * Data to show in callout\n */\n data?: number | string;\n yAxisCalloutData?: string;\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface GVBarChartSeriesPoint {\n /**\n * Text for // need to check use of this\n */\n key: string;\n\n /**\n * Data for bar height of Grouped vertical bar chart\n */\n data: number;\n\n /**\n * Color for the legend in the chart\n */\n color: string;\n\n /**\n * Legend text in the chart\n */\n legend: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface GroupedVerticalBarChartData {\n /**\n * Data for X axis label\n */\n name: string;\n\n /**\n * Data points for Grouped vertical bar chart\n */\n series: GVBarChartSeriesPoint[];\n\n /**\n * Accessibility data for Group Bars Stack Callout\n */\n stackCallOutAccessibilityData?: AccessibilityProps;\n}\n\nexport interface GVDataPoint {\n /**\n * This interface used for - While forming datapoints from given prop \"data\" in code\n * datapoints are used for to draw graph\n */\n [key: string]: number | string;\n}\n\nexport interface GVSingleDataPoint {\n /**\n * While forming datapoints from given prop \"data\" in code.\n * These datapoints are used for to draw graph easily.\n */\n [key: string]: GVDataPoint;\n}\n\nexport interface GVForBarChart {\n /**\n * While forming datapoints from given prop \"data\"\n * These datapoints are used for to draw graph.\n */\n [key: string]: GVBarChartSeriesPoint;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface CustomizedCalloutDataPoint {\n legend: string;\n y: number;\n color: string;\n xAxisCalloutData?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n}\n\n/**\n * Used for custom callout data interface. As Area chart callout data will be prepared from given props.data,\n * Those required data passing to onRenderCalloutPerDataPoint and onRenderCalloutPerStack.\n * {@docCategory ChartData}\n */\nexport interface CustomizedCalloutData {\n x: number | string | Date;\n values: CustomizedCalloutDataPoint[];\n}\n\n/**\n * {@docCategory Chart}\n */\nexport interface Chart {\n chartContainer: HTMLElement | null;\n toImage?: (opts?: ImageExportOptions) => Promise<string>;\n}\n\n/**\n * {@docCategory Chart}\n */\nexport interface ImageExportOptions {\n width?: number;\n height?: number;\n scale?: number;\n background?: string;\n}\n\nexport interface HeatMapChartDataPoint {\n x: string | Date | number;\n y: string | Date | number;\n value: number;\n /**\n * The value/ text to be rendered in the rectange\n */\n rectText?: string | number;\n /**\n * denomination to show in the callout\n */\n ratio?: [number, number];\n /**\n * description message to the callout\n */\n descriptionMessage?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HeatMapChartData {\n /**\n * name of the legend\n */\n legend: string;\n data: HeatMapChartDataPoint[];\n /**\n * This number will be used to get the color for the legend\n */\n value: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface SankeyChartData {\n nodes: SNode[];\n links: SLink[];\n}\n\ninterface SNodeExtra {\n /**\n * A unique identifier for this node.\n */\n nodeId: number | string;\n /**\n * The display name for this node in the UX.\n */\n name: string;\n color?: string;\n borderColor?: string;\n actualValue?: number;\n layer?: number;\n}\n\ninterface SLinkExtra {\n /**\n * The index within `ISankeyChartData.nodes` of the source node.\n */\n source: number;\n /**\n * The index within `ISankeyChartData.nodes` of the target node.\n */\n target: number;\n /**\n * The weight of this link between the two nodes.\n */\n value: number;\n unnormalizedValue?: number;\n}\n\nexport type SNode = SankeyNode<SNodeExtra, SLinkExtra>;\nexport type SLink = SankeyLink<SNodeExtra, SLinkExtra>;\n\n/**\n * Specifies the ordering options for axis categories in Cartesian charts.\n *\n * - `'default'`: Uses the original order before custom ordering was supported.\n * In some charts, this behaves the same as `'data'`.\n * - `'data'`: Preserves the order of categories as provided in the input data.\n * - `string[]`: Explicitly defines the custom order of categories as an array of category names.\n * - `'category ascending' | 'category descending'`: Orders categories alphanumerically.\n * - `'total ascending' | 'total descending'`: Orders categories by the total of their associated values.\n * - `'min ascending' | 'min descending'`: Orders by the minimum value within each category.\n * - `'max ascending' | 'max descending'`: Orders by the maximum value within each category.\n * - `'sum ascending' | 'sum descending'`: Orders by the sum of values for each category (same as 'total').\n * - `'mean ascending' | 'mean descending'`: Orders by the average of values in each category.\n * - `'median ascending' | 'median descending'`: Orders by the median value of each category.\n *\n * {@docCategory CartesianChart}\n */\nexport type AxisCategoryOrder =\n | 'default'\n | 'data'\n | string[]\n | 'category ascending'\n | 'category descending'\n | 'total ascending'\n | 'total descending'\n | 'min ascending'\n | 'min descending'\n | 'max ascending'\n | 'max descending'\n | 'sum ascending'\n | 'sum descending'\n | 'mean ascending'\n | 'mean descending'\n | 'median ascending'\n | 'median descending';\n\n/**\n * {@docCategory IChartData}\n */\nexport interface GanttChartDataPoint {\n /**\n * Dependent value of the data point, rendered along the x-axis.\n */\n x: {\n start: Date | number;\n end: Date | number;\n };\n\n /**\n * Independent value of the data point, rendered along the y-axis.\n * If y is a number, then each y-coordinate is plotted at its y-coordinate.\n * If y is a string, then the data is evenly spaced along the y-axis.\n */\n y: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Gradient for the legend in the chart. If not provided, it will fallback on the default color palette.\n * If provided, it will override the color prop. granted `enableGradient` is set to true for the chart.\n */\n gradient?: [string, string];\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n"],"names":[],"mappings":"AA25BA;;CAEC,GACD,WAqDC"}
1
+ {"version":3,"sources":["../src/types/DataPoint.ts"],"sourcesContent":["import { SVGProps } from 'react';\nimport { LegendShape } from '../components/Legends/Legends.types';\nimport { CurveFactory } from 'd3-shape';\nimport { SankeyLink, SankeyNode } from 'd3-sankey';\n\nexport interface Basestate {\n _width?: number;\n _height?: number;\n activeLegend?: string;\n color?: string;\n dataForHoverCard?: number | string;\n isCalloutVisible: boolean;\n isLegendSelected?: boolean;\n isLegendHovered?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n refSelected?: any;\n YValueHover?: { legend?: string; y?: number | string; color?: string }[];\n hoverYValue?: string | number | null;\n hoverXValue?: string | number | null;\n xCalloutValue?: string;\n yCalloutValue?: string;\n lineColor?: string;\n hoveredLineColor?: string;\n selectedLegend?: string;\n containerWidth?: number;\n containerHeight?: number;\n}\n\nexport interface RefArrayData {\n index?: string;\n refElement?: SVGGElement;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface Margins {\n /**\n * left margin for the chart.\n */\n left?: number;\n /**\n * Right margin for the chart.\n */\n right?: number;\n /**\n * Top margin for the chart.\n */\n top?: number;\n /**\n * Bottom margin for the chart.\n */\n bottom?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface DataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number | string;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n // NOTE: VerticalStackedBarChart, PieChart\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VerticalStackedBarDataPoint extends Omit<DataPoint, 'x'> {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n * If data type on x is Date, then the data is spaced evenly by d3-scale.\n */\n x: number | string | Date;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HorizontalDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number;\n\n /**\n * Total value of a single point bar chart.\n */\n total?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface ChartDataPoint {\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * data the datapoint in the chart\n */\n data?: number;\n\n /**\n * data the datapoint in the chart\n */\n horizontalBarChartdata?: HorizontalDataPoint;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Color for the legend in the chart. If not provided, it will fallback on the default color palette.\n */\n color?: string;\n\n /**\n * placeholder data point\n */\n placeHolder?: boolean;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VerticalBarChartDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n * If x is a number, then each y-coordinate is plotted at its x-coordinate.\n * If x is a string, then the data is evenly spaced along the x-axis.\n */\n x: number | string | Date;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * data to render the line along with bars\n */\n lineData?: LineDataInVerticalBarChart;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HorizontalBarChartWithAxisDataPoint {\n /**\n * Dependent value of the data point, rendered along the x-axis.\n */\n x: number;\n\n /**\n * Independent value of the data point, rendered along the y-axis.\n * If y is a number, then each y-coordinate is plotted at its y-coordinate.\n * If y is a string, then the data is evenly spaced along the y-axis.\n */\n y: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineDataInVerticalBarChart {\n y: VerticalBarChartDataPoint['y'];\n yAxisCalloutData?: string | undefined;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartData}\n */\ninterface BaseDataPoint {\n /**\n * Defines the function that is executed on clicking line\n */\n onDataPointClick?: () => void;\n\n /**\n * Callout data for x axis\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n */\n yAxisCalloutData?: string | { [id: string]: number };\n\n /**\n * Whether to hide callout data for the point.\n */\n hideCallout?: boolean;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * X axis Accessibility data for callout\n */\n xAxisCalloutAccessibilityData?: AccessibilityProps;\n\n /**\n * Marker size of the points\n */\n markerSize?: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartDataPoint extends BaseDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n */\n x: number | Date;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * text labels of marker points\n */\n text?: string;\n}\n\n/**\n * {@docCategory ChartData}\n * ScatterChartDataPoint interface.\n */\nexport interface ScatterChartDataPoint extends BaseDataPoint {\n /**\n * Independent value of the data point, rendered along the x-axis.\n */\n x: number | Date | string;\n\n /**\n * Dependent value of the data point, rendered along the y-axis.\n */\n y: number;\n\n /**\n * Marker size of the points\n */\n markerSize?: number;\n\n /**\n * text labels of marker points\n */\n text?: string;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartGap {\n /**\n * Starting index of the gap.\n */\n startIndex: number;\n\n /**\n * Ending index of the gap.\n */\n endIndex: number;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface LineChartLineOptions extends SVGProps<SVGPathElement> {\n /**\n * Width of the line/stroke.\n * Overrides the strokeWidth set on ICartesianChartProps level.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width\n */\n strokeWidth?: number | string;\n\n /**\n * Pattern of dashes and gaps.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray\n */\n strokeDasharray?: string | number;\n\n /**\n * Offset on rendering of stroke dash array.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset\n */\n strokeDashoffset?: string | number;\n\n /**\n * Shape at the end of a subpath.\n * Default round.\n * @see https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap\n */\n strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit';\n\n /**\n * Width of border around the line. Default no border.\n */\n lineBorderWidth?: string | number;\n\n /**\n * Color of border around the line. Default white.\n */\n lineBorderColor?: string;\n\n /**\n * Defines the type of interpolation used to render the line.\n * @default 'linear'\n */\n curve?: 'linear' | 'natural' | 'step' | 'stepAfter' | 'stepBefore' | CurveFactory;\n\n /**\n * Defines the mode of points to be rendered.\n */\n mode?:\n | 'lines'\n | 'markers'\n | 'text'\n | 'lines+markers'\n | 'text+markers'\n | 'text+lines'\n | 'text+lines+markers'\n | 'none'\n | 'gauge'\n | 'number'\n | 'delta'\n | 'number+delta'\n | 'gauge+number'\n | 'gauge+number+delta'\n | 'gauge+delta'\n | 'markers+text'\n | 'lines+text'\n | 'lines+markers+text';\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineChartPoints {\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * The shape for the legend\n * default: show the rect legend\n */\n legendShape?: LegendShape;\n\n /**\n * dataPoints for the line chart\n */\n data: LineChartDataPoint[] | ScatterChartDataPoint[];\n\n /**\n * gaps in the line chart where a line is not drawn\n */\n gaps?: LineChartGap[];\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * opacity for chart fill color\n */\n opacity?: number;\n\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n\n /**\n * hide dots for points that are not active\n */\n hideNonActiveDots?: boolean;\n\n /**\n * Defines the function that is executed on clicking this legend\n */\n onLegendClick?: (selectedLegend: string | null | string[]) => void;\n\n /**\n * Defines the function that is executed on clicking line\n */\n onLineClick?: () => void;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface ChartProps {\n /**\n * chart title for the chart\n */\n chartTitle?: string;\n\n /**\n * Accessibility data for chart title\n */\n chartTitleAccessibilityData?: AccessibilityProps;\n /**\n * data for the points in the chart\n */\n chartData?: ChartDataPoint[];\n\n /**\n * Accessibility data for chart data\n */\n chartDataAccessibilityData?: AccessibilityProps;\n\n /**\n * data for the points in the line chart\n */\n lineChartData?: LineChartPoints[];\n\n /**\n * data for the points in the scatter chart\n */\n scatterChartData?: ScatterChartPoints[];\n\n /**\n * data for the points in the line chart\n */\n SankeyChartData?: SankeyChartData;\n\n /**\n * data for the points in the line chart\n */\n pointOptions?: SVGProps<SVGCircleElement>;\n\n /**\n * data for the dotted line on hovering the point\n */\n pointLineOptions?: SVGProps<SVGLineElement>;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface AccessibilityProps {\n /**\n * Accessibility aria-label\n */\n ariaLabel?: string;\n\n /**\n * Accessibility aria-labelledBy\n */\n ariaLabelledBy?: string;\n\n /**\n * Accessibility aria-describedBy\n */\n ariaDescribedBy?: string;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface VSChartDataPoint {\n /**\n * data the datapoint in the chart\n */\n data: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n}\n\n/**\n * {@docCategory ChartProps}\n */\nexport interface VerticalStackedChartProps {\n /**\n * data for the points in the chart\n */\n chartData: VSChartDataPoint[];\n\n /**\n * Data for x axis label for multistacked Vertical bar chart\n */\n xAxisPoint: number | string | Date;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given, legend will take\n */\n xAxisCalloutData?: string;\n /**\n * line data to render lines on stacked bar chart\n */\n lineData?: LineDataInVerticalStackedBarChart[];\n /**\n * Accessibility data for Whole stack callout\n */\n stackCallOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface LineDataInVerticalStackedBarChart {\n y: number | string;\n color: string;\n legend: string;\n /**\n * The shape for the legend\n * default: show the rect legend\n */\n legendShape?: LegendShape;\n /**\n * Data to show in callout\n */\n data?: number | string;\n yAxisCalloutData?: string;\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n /**\n * options for the line drawn\n */\n lineOptions?: LineChartLineOptions;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface GVBarChartSeriesPoint {\n /**\n * Text for // need to check use of this\n */\n key: string;\n\n /**\n * Data for bar height of Grouped vertical bar chart\n */\n data: number;\n\n /**\n * Color for the legend in the chart\n */\n color: string;\n\n /**\n * Legend text in the chart\n */\n legend: string;\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface GroupedVerticalBarChartData {\n /**\n * Data for X axis label\n */\n name: string;\n\n /**\n * Data points for Grouped vertical bar chart\n */\n series: GVBarChartSeriesPoint[];\n\n /**\n * Accessibility data for Group Bars Stack Callout\n */\n stackCallOutAccessibilityData?: AccessibilityProps;\n}\n\nexport interface GVDataPoint {\n /**\n * This interface used for - While forming datapoints from given prop \"data\" in code\n * datapoints are used for to draw graph\n */\n [key: string]: number | string;\n}\n\nexport interface GVSingleDataPoint {\n /**\n * While forming datapoints from given prop \"data\" in code.\n * These datapoints are used for to draw graph easily.\n */\n [key: string]: GVDataPoint;\n}\n\nexport interface GVForBarChart {\n /**\n * While forming datapoints from given prop \"data\"\n * These datapoints are used for to draw graph.\n */\n [key: string]: GVBarChartSeriesPoint;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface CustomizedCalloutDataPoint {\n legend: string;\n y: number;\n color: string;\n xAxisCalloutData?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n}\n\n/**\n * Used for custom callout data interface. As Area chart callout data will be prepared from given props.data,\n * Those required data passing to onRenderCalloutPerDataPoint and onRenderCalloutPerStack.\n * {@docCategory ChartData}\n */\nexport interface CustomizedCalloutData {\n x: number | string | Date;\n values: CustomizedCalloutDataPoint[];\n}\n\n/**\n * {@docCategory Chart}\n */\nexport interface Chart {\n chartContainer: HTMLElement | null;\n toImage?: (opts?: ImageExportOptions) => Promise<string>;\n}\n\n/**\n * {@docCategory Chart}\n */\nexport interface ImageExportOptions {\n width?: number;\n height?: number;\n scale?: number;\n background?: string;\n}\n\nexport interface HeatMapChartDataPoint {\n x: string | Date | number;\n y: string | Date | number;\n value: number;\n /**\n * The value/ text to be rendered in the rectange\n */\n rectText?: string | number;\n /**\n * denomination to show in the callout\n */\n ratio?: [number, number];\n /**\n * description message to the callout\n */\n descriptionMessage?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface HeatMapChartData {\n /**\n * name of the legend\n */\n legend: string;\n data: HeatMapChartDataPoint[];\n /**\n * This number will be used to get the color for the legend\n */\n value: number;\n}\n\n/**\n * {@docCategory ChartData}\n */\nexport interface SankeyChartData {\n nodes: SNode[];\n links: SLink[];\n}\n\ninterface SNodeExtra {\n /**\n * A unique identifier for this node.\n */\n nodeId: number | string;\n /**\n * The display name for this node in the UX.\n */\n name: string;\n color?: string;\n borderColor?: string;\n actualValue?: number;\n layer?: number;\n}\n\ninterface SLinkExtra {\n /**\n * The index within `ISankeyChartData.nodes` of the source node.\n */\n source: number;\n /**\n * The index within `ISankeyChartData.nodes` of the target node.\n */\n target: number;\n /**\n * The weight of this link between the two nodes.\n */\n value: number;\n unnormalizedValue?: number;\n}\n\nexport type SNode = SankeyNode<SNodeExtra, SLinkExtra>;\nexport type SLink = SankeyLink<SNodeExtra, SLinkExtra>;\n\n/**\n * Specifies the ordering options for axis categories in Cartesian charts.\n *\n * - `'default'`: Uses the original order before custom ordering was supported.\n * In some charts, this behaves the same as `'data'`.\n * - `'data'`: Preserves the order of categories as provided in the input data.\n * - `string[]`: Explicitly defines the custom order of categories as an array of category names.\n * - `'category ascending' | 'category descending'`: Orders categories alphanumerically.\n * - `'total ascending' | 'total descending'`: Orders categories by the total of their associated values.\n * - `'min ascending' | 'min descending'`: Orders by the minimum value within each category.\n * - `'max ascending' | 'max descending'`: Orders by the maximum value within each category.\n * - `'sum ascending' | 'sum descending'`: Orders by the sum of values for each category (same as 'total').\n * - `'mean ascending' | 'mean descending'`: Orders by the average of values in each category.\n * - `'median ascending' | 'median descending'`: Orders by the median value of each category.\n *\n * {@docCategory CartesianChart}\n */\nexport type AxisCategoryOrder =\n | 'default'\n | 'data'\n | string[]\n | 'category ascending'\n | 'category descending'\n | 'total ascending'\n | 'total descending'\n | 'min ascending'\n | 'min descending'\n | 'max ascending'\n | 'max descending'\n | 'sum ascending'\n | 'sum descending'\n | 'mean ascending'\n | 'mean descending'\n | 'median ascending'\n | 'median descending';\n\n/**\n * {@docCategory IChartData}\n */\nexport interface GanttChartDataPoint {\n /**\n * Dependent value of the data point, rendered along the x-axis.\n */\n x: {\n start: Date | number;\n end: Date | number;\n };\n\n /**\n * Independent value of the data point, rendered along the y-axis.\n * If y is a number, then each y-coordinate is plotted at its y-coordinate.\n * If y is a string, then the data is evenly spaced along the y-axis.\n */\n y: number | string;\n\n /**\n * Legend text for the datapoint in the chart\n */\n legend?: string;\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * Gradient for the legend in the chart. If not provided, it will fallback on the default color palette.\n * If provided, it will override the color prop. granted `enableGradient` is set to true for the chart.\n */\n gradient?: [string, string];\n\n /**\n * Callout data for x axis\n * This is an optional prop, If haven't given legend will take\n */\n xAxisCalloutData?: string;\n\n /**\n * Callout data for y axis\n * This is an optional prop, If haven't given data will take\n */\n yAxisCalloutData?: string;\n\n /**\n * onClick action for each datapoint in the chart\n */\n onClick?: VoidFunction;\n\n /**\n * Accessibility data for callout\n */\n callOutAccessibilityData?: AccessibilityProps;\n}\n\n/**\n * {@docCategory IChartData}\n */\nexport interface ScatterChartPoints {\n /**\n * Legend text for the datapoint in the chart\n */\n legend: string;\n\n /**\n * The shape for the legend\n * default: show the rect legend\n */\n legendShape?: LegendShape;\n\n /**\n * dataPoints for the line chart\n */\n data: ScatterChartDataPoint[];\n\n /**\n * color for the legend in the chart\n */\n color?: string;\n\n /**\n * opacity for chart fill color\n */\n opacity?: number;\n\n /**\n * hide dots for points that are not active\n */\n hideNonActiveDots?: boolean;\n\n /**\n * Defines the function that is executed on clicking this legend\n */\n onLegendClick?: (selectedLegend: string | null | string[]) => void;\n\n /**\n * Whether to use the secondary y scale or not\n * False by default.\n */\n useSecondaryYScale?: boolean;\n}\n"],"names":[],"mappings":"AAo+BA;;CAEC,GACD,WA0CC"}
@@ -84,6 +84,9 @@ _export(exports, {
84
84
  createYAxisForHorizontalBarChartWithAxis: function() {
85
85
  return createYAxisForHorizontalBarChartWithAxis;
86
86
  },
87
+ createYAxisForScatterChart: function() {
88
+ return createYAxisForScatterChart;
89
+ },
87
90
  createYAxisLabels: function() {
88
91
  return createYAxisLabels;
89
92
  },
@@ -760,6 +763,7 @@ function calloutData(values) {
760
763
  combinedResult = combinedResult.concat(elements);
761
764
  });
762
765
  const xValToDataPoints = {};
766
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
763
767
  combinedResult.forEach((ele)=>{
764
768
  const xValue = ele.x instanceof Date ? ele.x.getTime() : ele.x;
765
769
  if (xValue in xValToDataPoints) {
@@ -1479,6 +1483,35 @@ function getCurveFactory(curve, defaultFactory = _d3shape.curveLinear) {
1479
1483
  return defaultFactory;
1480
1484
  }
1481
1485
  }
1486
+ function createYAxisForScatterChart(yAxisParams, isRtl, axisData, isIntegralDataset, useSecondaryYScale = false, _supportNegativeData = false, roundedTicks = false) {
1487
+ const { yMinMaxValues = {
1488
+ startValue: 0,
1489
+ endValue: 0
1490
+ }, yAxisElement = null, yMaxValue = 0, yMinValue = 0, containerHeight, containerWidth, margins, tickPadding = 12, maxOfYVal = 0, yAxisTickFormat, yAxisTickCount = 4, eventAnnotationProps, eventLabelHeight } = yAxisParams;
1491
+ // maxOfYVal coming from only area chart and Grouped vertical bar chart(Calculation done at base file)
1492
+ const tempVal = maxOfYVal || yMinMaxValues.endValue;
1493
+ const finalYmax = tempVal > yMaxValue ? tempVal : yMaxValue;
1494
+ const finalYmin = Math.min(yMinMaxValues.startValue, yMinValue || 0);
1495
+ const domainValues = prepareDatapoints(finalYmax, finalYmin, yAxisTickCount, isIntegralDataset, roundedTicks);
1496
+ let yMin = finalYmin;
1497
+ let yMax = domainValues[domainValues.length - 1];
1498
+ const yPadding = (yMax - yMin) * 0.1;
1499
+ yMin = yMin - yPadding;
1500
+ yMax = yMax + yPadding;
1501
+ const yAxisScale = (0, _d3scale.scaleLinear)().domain([
1502
+ domainValues[0],
1503
+ yMax
1504
+ ]).range([
1505
+ containerHeight - margins.bottom,
1506
+ margins.top + (eventAnnotationProps ? eventLabelHeight : 0)
1507
+ ]);
1508
+ const axis = !isRtl && useSecondaryYScale || isRtl && !useSecondaryYScale ? (0, _d3axis.axisRight)(yAxisScale) : (0, _d3axis.axisLeft)(yAxisScale);
1509
+ const yAxis = axis.tickPadding(tickPadding).tickValues(domainValues).tickSizeInner(-(containerWidth - margins.left - margins.right));
1510
+ yAxisTickFormat ? yAxis.tickFormat(yAxisTickFormat) : yAxis.tickFormat((0, _d3format.format)('.2~s'));
1511
+ yAxisElement ? (0, _d3selection.select)(yAxisElement).call(yAxis).selectAll('text').attr('aria-hidden', 'true') : '';
1512
+ axisData.yAxisDomainValues = domainValues;
1513
+ return yAxisScale;
1514
+ }
1482
1515
  const truncateString = (str, maxLength, ellipsis = '...')=>{
1483
1516
  if (str.length <= maxLength) {
1484
1517
  return str;