@fluentui/react-charts 9.1.1 → 9.1.3

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 (97) hide show
  1. package/CHANGELOG.md +38 -2
  2. package/dist/index.d.ts +89 -6
  3. package/lib/components/AreaChart/AreaChart.js +18 -8
  4. package/lib/components/AreaChart/AreaChart.js.map +1 -1
  5. package/lib/components/CommonComponents/CartesianChart.js +17 -13
  6. package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
  7. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  8. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +4 -4
  9. package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  10. package/lib/components/DeclarativeChart/DeclarativeChart.js +25 -13
  11. package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  12. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +57 -36
  13. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  14. package/lib/components/DonutChart/useDonutChartStyles.styles.js +3 -3
  15. package/lib/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  16. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js +4 -4
  17. package/lib/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  18. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +45 -19
  19. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  20. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  21. package/lib/components/HeatMapChart/HeatMapChart.js +1 -1
  22. package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
  23. package/lib/components/LineChart/LineChart.js +40 -36
  24. package/lib/components/LineChart/LineChart.js.map +1 -1
  25. package/lib/components/LineChart/eventAnnotation/LabelLink.js +2 -1
  26. package/lib/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  27. package/lib/components/ResponsiveContainer/ResponsiveContainer.js +51 -22
  28. package/lib/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  29. package/lib/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  30. package/lib/components/ResponsiveContainer/index.js +2 -0
  31. package/lib/components/ResponsiveContainer/index.js.map +1 -1
  32. package/lib/components/ResponsiveContainer/withResponsiveContainer.js +19 -0
  33. package/lib/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -0
  34. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +3 -3
  35. package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  36. package/lib/components/ScatterChart/ScatterChart.js +1 -1
  37. package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
  38. package/lib/components/VerticalBarChart/VerticalBarChart.js +5 -5
  39. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  40. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +62 -24
  41. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  42. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  43. package/lib/types/DataPoint.js.map +1 -1
  44. package/lib/utilities/SVGTooltipText.js +3 -3
  45. package/lib/utilities/SVGTooltipText.js.map +1 -1
  46. package/lib/utilities/utilities.js +27 -36
  47. package/lib/utilities/utilities.js.map +1 -1
  48. package/lib-commonjs/components/AreaChart/AreaChart.js +16 -7
  49. package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
  50. package/lib-commonjs/components/CommonComponents/CartesianChart.js +17 -13
  51. package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
  52. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  53. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +5 -5
  54. package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
  55. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +25 -13
  56. package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
  57. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +57 -36
  58. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  59. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js +4 -4
  60. package/lib-commonjs/components/DonutChart/useDonutChartStyles.styles.js.map +1 -1
  61. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js +6 -4
  62. package/lib-commonjs/components/GaugeChart/useGaugeChartStyles.styles.js.map +1 -1
  63. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +44 -18
  64. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  65. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.types.js.map +1 -1
  66. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +1 -1
  67. package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
  68. package/lib-commonjs/components/LineChart/LineChart.js +40 -36
  69. package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
  70. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js +2 -1
  71. package/lib-commonjs/components/LineChart/eventAnnotation/LabelLink.js.map +1 -1
  72. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js +47 -21
  73. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.js.map +1 -1
  74. package/lib-commonjs/components/ResponsiveContainer/ResponsiveContainer.types.js.map +1 -1
  75. package/lib-commonjs/components/ResponsiveContainer/index.js +2 -0
  76. package/lib-commonjs/components/ResponsiveContainer/index.js.map +1 -1
  77. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js +27 -0
  78. package/lib-commonjs/components/ResponsiveContainer/withResponsiveContainer.js.map +1 -0
  79. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +4 -4
  80. package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
  81. package/lib-commonjs/components/ScatterChart/ScatterChart.js +1 -1
  82. package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
  83. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +5 -5
  84. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  85. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +61 -23
  86. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  87. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
  88. package/lib-commonjs/types/DataPoint.js.map +1 -1
  89. package/lib-commonjs/utilities/SVGTooltipText.js +3 -3
  90. package/lib-commonjs/utilities/SVGTooltipText.js.map +1 -1
  91. package/lib-commonjs/utilities/utilities.js +27 -36
  92. package/lib-commonjs/utilities/utilities.js.map +1 -1
  93. package/package.json +10 -10
  94. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +0 -23
  95. package/lib/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +0 -1
  96. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js +0 -47
  97. package/lib-commonjs/components/ResponsiveContainer/useResponsiveContainerStyles.styles.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["ResponsiveContainer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { ResponsiveContainerProps } from './ResponsiveContainer.types';\nimport { useResponsiveContainerStyles } from './useResponsiveContainerStyles.styles';\n\nexport const ResponsiveContainer: React.FC<ResponsiveContainerProps> = props => {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const onResizeRef = React.useRef<ResponsiveContainerProps['onResize']>();\n const { targetDocument } = useFluent_unstable();\n const classes = useResponsiveContainerStyles(props);\n\n const [size, setSize] = React.useState<{ containerWidth?: number; containerHeight?: number }>({});\n\n onResizeRef.current = props.onResize;\n const _window = targetDocument?.defaultView;\n\n React.useEffect(() => {\n let animationFrameId: number | undefined;\n // eslint-disable-next-line no-restricted-globals\n let resizeObserver: ResizeObserver | undefined;\n\n const resizeCallback = (entries: ResizeObserverEntry[]) => {\n const { width: containerWidth, height: containerHeight } = entries[0].contentRect;\n // rAF is an alternative to the throttle function. For more info, see:\n // https://css-tricks.com/debouncing-throttling-explained-examples/#aa-requestanimationframe-raf\n animationFrameId = _window?.requestAnimationFrame(() => {\n setSize(prevSize => {\n const roundedWidth = Math.floor(containerWidth);\n const roundedHeight = Math.floor(containerHeight);\n if (prevSize.containerWidth === roundedWidth && prevSize.containerHeight === roundedHeight) {\n return prevSize;\n }\n\n return { containerWidth: roundedWidth, containerHeight: roundedHeight };\n });\n });\n onResizeRef.current?.(containerWidth, containerHeight);\n };\n\n if (_window?.ResizeObserver) {\n resizeObserver = new _window.ResizeObserver(resizeCallback);\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n }\n\n return () => {\n if (animationFrameId) {\n _window?.cancelAnimationFrame(animationFrameId);\n }\n\n resizeObserver?.disconnect();\n };\n }, [_window]);\n\n return (\n <div ref={containerRef} className={classes.root} style={{ width: props.width, height: props.height }}>\n {React.Children.map(props.children, child => {\n return React.cloneElement(child, {\n width: size.containerWidth,\n height: size.containerHeight,\n });\n })}\n </div>\n );\n};\nResponsiveContainer.displayName = 'ResponsiveContainer';\n"],"names":["React","useFluent_unstable","useResponsiveContainerStyles","ResponsiveContainer","props","containerRef","useRef","onResizeRef","targetDocument","classes","size","setSize","useState","current","onResize","_window","defaultView","useEffect","animationFrameId","resizeObserver","resizeCallback","entries","width","containerWidth","height","containerHeight","contentRect","requestAnimationFrame","prevSize","roundedWidth","Math","floor","roundedHeight","ResizeObserver","observe","cancelAnimationFrame","disconnect","div","ref","className","root","style","Children","map","children","child","cloneElement","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ,kCAAkC;AAErE,SAASC,4BAA4B,QAAQ,wCAAwC;AAErF,OAAO,MAAMC,sBAA0DC,CAAAA;IACrE,MAAMC,eAAeL,MAAMM,MAAM,CAAiB;IAClD,MAAMC,cAAcP,MAAMM,MAAM;IAChC,MAAM,EAAEE,cAAc,EAAE,GAAGP;IAC3B,MAAMQ,UAAUP,6BAA6BE;IAE7C,MAAM,CAACM,MAAMC,QAAQ,GAAGX,MAAMY,QAAQ,CAAwD,CAAC;IAE/FL,YAAYM,OAAO,GAAGT,MAAMU,QAAQ;IACpC,MAAMC,UAAUP,2BAAAA,qCAAAA,eAAgBQ,WAAW;IAE3ChB,MAAMiB,SAAS,CAAC;QACd,IAAIC;QACJ,iDAAiD;QACjD,IAAIC;QAEJ,MAAMC,iBAAiB,CAACC;gBAetBd;YAdA,MAAM,EAAEe,OAAOC,cAAc,EAAEC,QAAQC,eAAe,EAAE,GAAGJ,OAAO,CAAC,EAAE,CAACK,WAAW;YACjF,sEAAsE;YACtE,gGAAgG;YAChGR,mBAAmBH,oBAAAA,8BAAAA,QAASY,qBAAqB,CAAC;gBAChDhB,QAAQiB,CAAAA;oBACN,MAAMC,eAAeC,KAAKC,KAAK,CAACR;oBAChC,MAAMS,gBAAgBF,KAAKC,KAAK,CAACN;oBACjC,IAAIG,SAASL,cAAc,KAAKM,gBAAgBD,SAASH,eAAe,KAAKO,eAAe;wBAC1F,OAAOJ;oBACT;oBAEA,OAAO;wBAAEL,gBAAgBM;wBAAcJ,iBAAiBO;oBAAc;gBACxE;YACF;aACAzB,uBAAAA,YAAYM,OAAO,cAAnBN,2CAAAA,0BAAAA,aAAsBgB,gBAAgBE;QACxC;QAEA,IAAIV,oBAAAA,8BAAAA,QAASkB,cAAc,EAAE;YAC3Bd,iBAAiB,IAAIJ,QAAQkB,cAAc,CAACb;YAC5C,IAAIf,aAAaQ,OAAO,EAAE;gBACxBM,eAAee,OAAO,CAAC7B,aAAaQ,OAAO;YAC7C;QACF;QAEA,OAAO;YACL,IAAIK,kBAAkB;gBACpBH,oBAAAA,8BAAAA,QAASoB,oBAAoB,CAACjB;YAChC;YAEAC,2BAAAA,qCAAAA,eAAgBiB,UAAU;QAC5B;IACF,GAAG;QAACrB;KAAQ;IAEZ,qBACE,oBAACsB;QAAIC,KAAKjC;QAAckC,WAAW9B,QAAQ+B,IAAI;QAAEC,OAAO;YAAEnB,OAAOlB,MAAMkB,KAAK;YAAEE,QAAQpB,MAAMoB,MAAM;QAAC;OAChGxB,MAAM0C,QAAQ,CAACC,GAAG,CAACvC,MAAMwC,QAAQ,EAAEC,CAAAA;QAClC,qBAAO7C,MAAM8C,YAAY,CAACD,OAAO;YAC/BvB,OAAOZ,KAAKa,cAAc;YAC1BC,QAAQd,KAAKe,eAAe;QAC9B;IACF;AAGN,EAAE;AACFtB,oBAAoB4C,WAAW,GAAG"}
1
+ {"version":3,"sources":["ResponsiveContainer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getWindow } from '../../utilities/getWindow';\nimport { ResponsiveChildProps, ResponsiveContainerProps } from './ResponsiveContainer.types';\n\n/**\n * Responsive Container component\n * {@docCategory ResponsiveContainer}\n */\nexport const ResponsiveContainer: React.FC<ResponsiveContainerProps> = props => {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const onResizeRef = React.useRef<ResponsiveContainerProps['onResize']>();\n\n const [size, setSize] = React.useState<{ containerWidth?: number; containerHeight?: number }>({});\n\n onResizeRef.current = props.onResize;\n\n React.useEffect(() => {\n const _window = getWindow(containerRef.current) as (Window & typeof globalThis) | undefined;\n let animationFrameId: number | undefined;\n let resizeObserver: ResizeObserver | undefined;\n\n const resizeCallback = (entries: ResizeObserverEntry[]) => {\n const { width: containerWidth, height: containerHeight } = entries[0].contentRect;\n // rAF is an alternative to the throttle function. For more info, see:\n // https://css-tricks.com/debouncing-throttling-explained-examples/#aa-requestanimationframe-raf\n animationFrameId = _window?.requestAnimationFrame(() => {\n setSize(prevSize => {\n const roundedWidth = Math.floor(containerWidth);\n const roundedHeight = Math.floor(containerHeight);\n if (prevSize.containerWidth === roundedWidth && prevSize.containerHeight === roundedHeight) {\n return prevSize;\n }\n\n return { containerWidth: roundedWidth, containerHeight: roundedHeight };\n });\n });\n onResizeRef.current?.(containerWidth, containerHeight);\n };\n\n if (_window && _window.ResizeObserver) {\n resizeObserver = new _window.ResizeObserver(resizeCallback);\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n }\n }\n\n return () => {\n if (animationFrameId) {\n _window?.cancelAnimationFrame(animationFrameId);\n }\n\n resizeObserver?.disconnect();\n };\n }, []);\n\n const chartContent = React.useMemo(() => {\n let calculatedWidth = size.containerWidth;\n let calculatedHeight = size.containerHeight;\n\n if (typeof props.aspect === 'number' && props.aspect > 0) {\n if (calculatedWidth) {\n calculatedHeight = calculatedWidth / props.aspect;\n } else if (calculatedHeight) {\n calculatedWidth = calculatedHeight * props.aspect;\n }\n\n if (typeof props.maxHeight === 'number' && calculatedHeight && calculatedHeight > props.maxHeight) {\n calculatedHeight = props.maxHeight;\n }\n }\n\n return (\n <div\n ref={containerRef}\n style={\n {\n width: props.width ?? '100%',\n height: props.height ?? '100%',\n minWidth: props.minWidth,\n minHeight: props.minHeight,\n maxHeight: props.maxHeight,\n // Ensure the child element fills the parent container\n // https://stackoverflow.com/questions/8468066/child-inside-parent-with-min-height-100-not-inheriting-height\n '--root-width': calculatedWidth + 'px',\n '--root-height': calculatedHeight + 'px',\n } as React.CSSProperties\n }\n >\n {React.Children.map(props.children, child => {\n return React.cloneElement<ResponsiveChildProps>(child, {\n width: calculatedWidth,\n height: calculatedHeight,\n shouldResize: (calculatedWidth ?? 0) + (calculatedHeight ?? 0),\n });\n })}\n </div>\n );\n }, [size, props.aspect, props.maxHeight, props.children, props.width, props.height, props.minHeight, props.minWidth]);\n\n return chartContent;\n};\nResponsiveContainer.displayName = 'ResponsiveContainer';\n"],"names":["React","getWindow","ResponsiveContainer","props","containerRef","useRef","onResizeRef","size","setSize","useState","current","onResize","useEffect","_window","animationFrameId","resizeObserver","resizeCallback","entries","width","containerWidth","height","containerHeight","contentRect","requestAnimationFrame","prevSize","roundedWidth","Math","floor","roundedHeight","ResizeObserver","observe","cancelAnimationFrame","disconnect","chartContent","useMemo","calculatedWidth","calculatedHeight","aspect","maxHeight","div","ref","style","minWidth","minHeight","Children","map","children","child","cloneElement","shouldResize","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,SAAS,QAAQ,4BAA4B;AAGtD;;;CAGC,GACD,OAAO,MAAMC,sBAA0DC,CAAAA;IACrE,MAAMC,eAAeJ,MAAMK,MAAM,CAAiB;IAClD,MAAMC,cAAcN,MAAMK,MAAM;IAEhC,MAAM,CAACE,MAAMC,QAAQ,GAAGR,MAAMS,QAAQ,CAAwD,CAAC;IAE/FH,YAAYI,OAAO,GAAGP,MAAMQ,QAAQ;IAEpCX,MAAMY,SAAS,CAAC;QACd,MAAMC,UAAUZ,UAAUG,aAAaM,OAAO;QAC9C,IAAII;QACJ,IAAIC;QAEJ,MAAMC,iBAAiB,CAACC;gBAetBX;YAdA,MAAM,EAAEY,OAAOC,cAAc,EAAEC,QAAQC,eAAe,EAAE,GAAGJ,OAAO,CAAC,EAAE,CAACK,WAAW;YACjF,sEAAsE;YACtE,gGAAgG;YAChGR,mBAAmBD,oBAAAA,8BAAAA,QAASU,qBAAqB,CAAC;gBAChDf,QAAQgB,CAAAA;oBACN,MAAMC,eAAeC,KAAKC,KAAK,CAACR;oBAChC,MAAMS,gBAAgBF,KAAKC,KAAK,CAACN;oBACjC,IAAIG,SAASL,cAAc,KAAKM,gBAAgBD,SAASH,eAAe,KAAKO,eAAe;wBAC1F,OAAOJ;oBACT;oBAEA,OAAO;wBAAEL,gBAAgBM;wBAAcJ,iBAAiBO;oBAAc;gBACxE;YACF;aACAtB,uBAAAA,YAAYI,OAAO,cAAnBJ,2CAAAA,0BAAAA,aAAsBa,gBAAgBE;QACxC;QAEA,IAAIR,WAAWA,QAAQgB,cAAc,EAAE;YACrCd,iBAAiB,IAAIF,QAAQgB,cAAc,CAACb;YAC5C,IAAIZ,aAAaM,OAAO,EAAE;gBACxBK,eAAee,OAAO,CAAC1B,aAAaM,OAAO;YAC7C;QACF;QAEA,OAAO;YACL,IAAII,kBAAkB;gBACpBD,oBAAAA,8BAAAA,QAASkB,oBAAoB,CAACjB;YAChC;YAEAC,2BAAAA,qCAAAA,eAAgBiB,UAAU;QAC5B;IACF,GAAG,EAAE;IAEL,MAAMC,eAAejC,MAAMkC,OAAO,CAAC;QACjC,IAAIC,kBAAkB5B,KAAKY,cAAc;QACzC,IAAIiB,mBAAmB7B,KAAKc,eAAe;QAE3C,IAAI,OAAOlB,MAAMkC,MAAM,KAAK,YAAYlC,MAAMkC,MAAM,GAAG,GAAG;YACxD,IAAIF,iBAAiB;gBACnBC,mBAAmBD,kBAAkBhC,MAAMkC,MAAM;YACnD,OAAO,IAAID,kBAAkB;gBAC3BD,kBAAkBC,mBAAmBjC,MAAMkC,MAAM;YACnD;YAEA,IAAI,OAAOlC,MAAMmC,SAAS,KAAK,YAAYF,oBAAoBA,mBAAmBjC,MAAMmC,SAAS,EAAE;gBACjGF,mBAAmBjC,MAAMmC,SAAS;YACpC;QACF;YAOenC,cACCA;QANhB,qBACE,oBAACoC;YACCC,KAAKpC;YACLqC,OACE;gBACEvB,OAAOf,CAAAA,eAAAA,MAAMe,KAAK,cAAXf,0BAAAA,eAAe;gBACtBiB,QAAQjB,CAAAA,gBAAAA,MAAMiB,MAAM,cAAZjB,2BAAAA,gBAAgB;gBACxBuC,UAAUvC,MAAMuC,QAAQ;gBACxBC,WAAWxC,MAAMwC,SAAS;gBAC1BL,WAAWnC,MAAMmC,SAAS;gBAC1B,sDAAsD;gBACtD,4GAA4G;gBAC5G,gBAAgBH,kBAAkB;gBAClC,iBAAiBC,mBAAmB;YACtC;WAGDpC,MAAM4C,QAAQ,CAACC,GAAG,CAAC1C,MAAM2C,QAAQ,EAAEC,CAAAA;YAClC,qBAAO/C,MAAMgD,YAAY,CAAuBD,OAAO;gBACrD7B,OAAOiB;gBACPf,QAAQgB;gBACRa,cAAc,AAACd,CAAAA,4BAAAA,6BAAAA,kBAAmB,CAAA,IAAMC,CAAAA,6BAAAA,8BAAAA,mBAAoB,CAAA;YAC9D;QACF;IAGN,GAAG;QAAC7B;QAAMJ,MAAMkC,MAAM;QAAElC,MAAMmC,SAAS;QAAEnC,MAAM2C,QAAQ;QAAE3C,MAAMe,KAAK;QAAEf,MAAMiB,MAAM;QAAEjB,MAAMwC,SAAS;QAAExC,MAAMuC,QAAQ;KAAC;IAEpH,OAAOT;AACT,EAAE;AACF/B,oBAAoBgD,WAAW,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["ResponsiveContainer.types.ts"],"sourcesContent":["import * as React from 'react';\n\nexport interface ResponsiveContainerProps {\n children: React.ReactElement;\n onResize?: (width: number, height: number) => void;\n width?: number | string;\n height?: number | string;\n}\n\nexport interface ResponsiveContainerStyles {\n root: string;\n}\n"],"names":["React"],"rangeMappings":"","mappings":"AAAA,YAAYA,WAAW,QAAQ"}
1
+ {"version":3,"sources":["ResponsiveContainer.types.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Responsive Child props\n * {@docCategory ResponsiveContainer}\n */\nexport interface ResponsiveChildProps {\n width?: number;\n height?: number;\n shouldResize?: number;\n}\n\n/**\n * Responsive Container props\n * {@docCategory ResponsiveContainer}\n */\nexport interface ResponsiveContainerProps {\n /**\n * Aspect ratio (width / height) of the container. If specified, the height will be calculated by width / aspect.\n */\n aspect?: number;\n\n /**\n * Width of the container\n */\n width?: number | string;\n\n /**\n * Height of the container\n */\n height?: number | string;\n\n /**\n * Minimum width of the container\n */\n minWidth?: number | string;\n\n /**\n * Minimum height of the container\n */\n minHeight?: number | string;\n\n /**\n * Maximum height of the container\n */\n maxHeight?: number;\n\n /**\n * Callback providing the updated chart width and height values when the container is resized\n */\n onResize?: (width: number, height: number) => void;\n\n /**\n * Child component to be rendered within the container\n */\n children: React.ReactElement<ResponsiveChildProps>;\n}\n"],"names":["React"],"rangeMappings":"","mappings":"AAAA,YAAYA,WAAW,QAAQ"}
@@ -1 +1,3 @@
1
1
  export * from './ResponsiveContainer';
2
+ export * from './ResponsiveContainer.types';
3
+ export * from './withResponsiveContainer';
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './ResponsiveContainer';\n"],"names":[],"rangeMappings":"","mappings":"AAAA,cAAc,wBAAwB"}
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './ResponsiveContainer';\nexport * from './ResponsiveContainer.types';\nexport * from './withResponsiveContainer';\n"],"names":[],"rangeMappings":";;","mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,8BAA8B;AAC5C,cAAc,4BAA4B"}
@@ -0,0 +1,19 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */ import * as React from 'react';
2
+ import { ResponsiveContainer } from './ResponsiveContainer';
3
+ /**
4
+ * An HOC to update wrapped component on container resize.
5
+ * {@docCategory ResponsiveContainer}
6
+ */ export function withResponsiveContainer(WrappedComponent) {
7
+ const ComponentWithResponsiveContainer = ({ aspect, width, height, minWidth, minHeight, maxHeight, onResize, ...restProps })=>{
8
+ return /*#__PURE__*/ React.createElement(ResponsiveContainer, {
9
+ aspect: aspect,
10
+ width: width,
11
+ height: height,
12
+ minWidth: minWidth,
13
+ minHeight: minHeight,
14
+ maxHeight: maxHeight,
15
+ onResize: onResize
16
+ }, /*#__PURE__*/ React.createElement(WrappedComponent, restProps));
17
+ };
18
+ return ComponentWithResponsiveContainer;
19
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["withResponsiveContainer.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport { ResponsiveContainer } from './ResponsiveContainer';\nimport { ResponsiveContainerProps } from './ResponsiveContainer.types';\n\n/**\n * An HOC to update wrapped component on container resize.\n * {@docCategory ResponsiveContainer}\n */\nexport function withResponsiveContainer<TProps extends Omit<ResponsiveContainerProps, 'children'>>(\n WrappedComponent: React.ComponentType<TProps>,\n) {\n const ComponentWithResponsiveContainer: React.FC<TProps> = ({\n aspect,\n width,\n height,\n minWidth,\n minHeight,\n maxHeight,\n onResize,\n ...restProps\n }) => {\n return (\n <ResponsiveContainer\n aspect={aspect}\n width={width}\n height={height}\n minWidth={minWidth}\n minHeight={minHeight}\n maxHeight={maxHeight}\n onResize={onResize}\n >\n <WrappedComponent {...(restProps as any)} />\n </ResponsiveContainer>\n );\n };\n\n return ComponentWithResponsiveContainer;\n}\n"],"names":["React","ResponsiveContainer","withResponsiveContainer","WrappedComponent","ComponentWithResponsiveContainer","aspect","width","height","minWidth","minHeight","maxHeight","onResize","restProps"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":"AAAA,qDAAqD,GACrD,YAAYA,WAAW,QAAQ;AAC/B,SAASC,mBAAmB,QAAQ,wBAAwB;AAG5D;;;CAGC,GACD,OAAO,SAASC,wBACdC,gBAA6C;IAE7C,MAAMC,mCAAqD,CAAC,EAC1DC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,QAAQ,EACRC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACR,GAAGC,WACJ;QACC,qBACE,oBAACX;YACCI,QAAQA;YACRC,OAAOA;YACPC,QAAQA;YACRC,UAAUA;YACVC,WAAWA;YACXC,WAAWA;YACXC,UAAUA;yBAEV,oBAACR,kBAAsBS;IAG7B;IAEA,OAAOR;AACT"}
@@ -16,8 +16,8 @@ const useStyles = /*#__PURE__*/__styles({
16
16
  Bhrd7zp: "figsok6",
17
17
  Bg96gwp: "f1i3iumi",
18
18
  mc9l5x: "f22iagw",
19
- a9b677: "fly5x3f",
20
- Bqenvij: "f1l02sjl",
19
+ a9b677: "fsr8r2d",
20
+ Bqenvij: "f50j5g9",
21
21
  Beiy3e4: "f1vx9l62",
22
22
  B68tc82: 0,
23
23
  Bmxbyg5: 0,
@@ -78,7 +78,7 @@ const useStyles = /*#__PURE__*/__styles({
78
78
  Bpg54ce: "f1enuhaj"
79
79
  }
80
80
  }, {
81
- d: [".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f22iagw{display:flex;}", ".fly5x3f{width:100%;}", ".f1l02sjl{height:100%;}", ".f1vx9l62{flex-direction:column;}", [".f1a3p1vp{overflow:hidden;}", {
81
+ d: [".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f22iagw{display:flex;}", ".fsr8r2d{width:var(--root-width, 100%);}", ".f50j5g9{height:var(--root-height, 100%);}", ".f1vx9l62{flex-direction:column;}", [".f1a3p1vp{overflow:hidden;}", {
82
82
  p: -1
83
83
  }], ".f5q6cfr{fill:var(--colorNeutralBackground1);}", ".fu2q8de{stroke-width:3px;}", ".f1yc5x8p{fill:#F5F5F5;}", [".f1t756mo{padding:8px;}", {
84
84
  p: -1
@@ -1 +1 @@
1
- {"version":3,"names":["__styles","mergeClasses","tokens","typographyStyles","HighContrastSelectorBlack","sankeyChartClassNames","root","nodes","links","nodeTextContainer","toolTip","chartWrapper","useStyles","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","a9b677","Bqenvij","Beiy3e4","B68tc82","Bmxbyg5","Bpg54ce","Bkfmm31","Be5yapy","Bcjfw9x","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","qhf8xq","fsow6f","Bhzewxz","Bgh53k4","B2eet1l","De3pzq","Bcmaq0h","gk0gix","B20660r","B8a6bjv","Bpptf2m","e5kdtc","Bkjc3bi","ayd6f0","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","Dzfv0s","B6of3ja","Frg6f3","jrapky","t21cq0","d","p","m","useSankeyChartStyles","props","baseStyles","enableReflow"],"sources":["useSankeyChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport { HighContrastSelectorBlack } from '../../utilities/index';\nexport const sankeyChartClassNames = {\n root: 'fui-sc__root',\n nodes: 'fui-sc__nodes',\n links: 'fui-sc__links',\n nodeTextContainer: 'fui-sc__nodeTextContainer',\n toolTip: 'fui-sc__toolTip',\n chartWrapper: 'fui-sc__chartWrapper'\n};\nconst useStyles = makeStyles({\n root: {\n ...typographyStyles.body1,\n display: 'flex',\n width: '100%',\n height: '100%',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n links: {\n fill: tokens.colorNeutralBackground1,\n strokeWidth: '3px',\n [HighContrastSelectorBlack]: {\n fill: 'Canvas'\n }\n },\n nodes: {\n fill: '#F5F5F5',\n [HighContrastSelectorBlack]: {\n fill: 'Canvas'\n }\n },\n toolTip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n padding: '8px',\n position: 'absolute',\n textAlign: 'center',\n top: '0px',\n background: tokens.colorNeutralBackground1,\n borderRadius: '2px',\n pointerEvents: 'none'\n },\n nodeTextContainer: {\n '& text': {\n [HighContrastSelectorBlack]: {\n fill: 'CanvasText'\n }\n },\n marginTop: '4px',\n marginLeft: '8px',\n marginBottom: '4px',\n marginRight: '8px'\n },\n chartWrapper: {\n overflow: 'auto'\n }\n});\nexport const useSankeyChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n root: mergeClasses(sankeyChartClassNames.root, baseStyles.root /*, props.styles?.root*/ ),\n nodes: mergeClasses(sankeyChartClassNames.nodes, baseStyles.nodes /*, props.styles?.nodes*/ ),\n links: mergeClasses(sankeyChartClassNames.links, baseStyles.links /*, props.styles?.links*/ ),\n nodeTextContainer: mergeClasses(sankeyChartClassNames.nodeTextContainer, baseStyles.nodeTextContainer /*, props.styles?.nodeTextContainer*/ ),\n toolTip: mergeClasses(sankeyChartClassNames.toolTip, baseStyles.toolTip /*, props.styles?.toolTip*/ ),\n chartWrapper: mergeClasses(sankeyChartClassNames.chartWrapper, props.enableReflow ? baseStyles.chartWrapper : '' /*, props.styles?.chartWrapper*/ )\n };\n};\n"],"mappings":"AAAA,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,uBAAuB;AAChE,SAASC,yBAAyB,QAAQ,uBAAuB;AACjE,OAAO,MAAMC,qBAAqB,GAAG;EACjCC,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAE,eAAe;EACtBC,KAAK,EAAE,eAAe;EACtBC,iBAAiB,EAAE,2BAA2B;EAC9CC,OAAO,EAAE,iBAAiB;EAC1BC,YAAY,EAAE;AAClB,CAAC;AACD,MAAMC,SAAS,gBAAGZ,QAAA;EAAAM,IAAA;IAAAO,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAf,KAAA;IAAAgB,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAnB,KAAA;IAAAiB,OAAA;IAAAE,OAAA;EAAA;EAAAhB,OAAA;IAAAG,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAG,OAAA;IAAAO,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;EAAA;EAAA1C,iBAAA;IAAA2C,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;EAAA;EAAA7C,YAAA;IAAAU,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;AAAA;EAAAkC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;EAAAC,CAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CAgDjB,CAAC;AACF,OAAO,MAAMC,oBAAoB,GAAIC,KAAK,IAAG;EACzC,MAAMC,UAAU,GAAGlD,SAAS,CAAC,CAAC;EAC9B,OAAO;IACHN,IAAI,EAAEL,YAAY,CAACI,qBAAqB,CAACC,IAAI,EAAEwD,UAAU,CAACxD,IAAI,CAAC,wBAAyB,CAAC;IACzFC,KAAK,EAAEN,YAAY,CAACI,qBAAqB,CAACE,KAAK,EAAEuD,UAAU,CAACvD,KAAK,CAAC,yBAA0B,CAAC;IAC7FC,KAAK,EAAEP,YAAY,CAACI,qBAAqB,CAACG,KAAK,EAAEsD,UAAU,CAACtD,KAAK,CAAC,yBAA0B,CAAC;IAC7FC,iBAAiB,EAAER,YAAY,CAACI,qBAAqB,CAACI,iBAAiB,EAAEqD,UAAU,CAACrD,iBAAiB,CAAC,qCAAsC,CAAC;IAC7IC,OAAO,EAAET,YAAY,CAACI,qBAAqB,CAACK,OAAO,EAAEoD,UAAU,CAACpD,OAAO,CAAC,2BAA4B,CAAC;IACrGC,YAAY,EAAEV,YAAY,CAACI,qBAAqB,CAACM,YAAY,EAAEkD,KAAK,CAACE,YAAY,GAAGD,UAAU,CAACnD,YAAY,GAAG,EAAE,CAAC,gCAAiC;EACtJ,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["__styles","mergeClasses","tokens","typographyStyles","HighContrastSelectorBlack","sankeyChartClassNames","root","nodes","links","nodeTextContainer","toolTip","chartWrapper","useStyles","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","a9b677","Bqenvij","Beiy3e4","B68tc82","Bmxbyg5","Bpg54ce","Bkfmm31","Be5yapy","Bcjfw9x","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","qhf8xq","fsow6f","Bhzewxz","Bgh53k4","B2eet1l","De3pzq","Bcmaq0h","gk0gix","B20660r","B8a6bjv","Bpptf2m","e5kdtc","Bkjc3bi","ayd6f0","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","Dzfv0s","B6of3ja","Frg6f3","jrapky","t21cq0","d","p","m","useSankeyChartStyles","props","baseStyles","enableReflow"],"sources":["useSankeyChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nimport { HighContrastSelectorBlack } from '../../utilities/index';\nexport const sankeyChartClassNames = {\n root: 'fui-sc__root',\n nodes: 'fui-sc__nodes',\n links: 'fui-sc__links',\n nodeTextContainer: 'fui-sc__nodeTextContainer',\n toolTip: 'fui-sc__toolTip',\n chartWrapper: 'fui-sc__chartWrapper'\n};\nconst useStyles = makeStyles({\n root: {\n ...typographyStyles.body1,\n display: 'flex',\n width: 'var(--root-width, 100%)',\n height: 'var(--root-height, 100%)',\n flexDirection: 'column',\n overflow: 'hidden'\n },\n links: {\n fill: tokens.colorNeutralBackground1,\n strokeWidth: '3px',\n [HighContrastSelectorBlack]: {\n fill: 'Canvas'\n }\n },\n nodes: {\n fill: '#F5F5F5',\n [HighContrastSelectorBlack]: {\n fill: 'Canvas'\n }\n },\n toolTip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n padding: '8px',\n position: 'absolute',\n textAlign: 'center',\n top: '0px',\n background: tokens.colorNeutralBackground1,\n borderRadius: '2px',\n pointerEvents: 'none'\n },\n nodeTextContainer: {\n '& text': {\n [HighContrastSelectorBlack]: {\n fill: 'CanvasText'\n }\n },\n marginTop: '4px',\n marginLeft: '8px',\n marginBottom: '4px',\n marginRight: '8px'\n },\n chartWrapper: {\n overflow: 'auto'\n }\n});\nexport const useSankeyChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n root: mergeClasses(sankeyChartClassNames.root, baseStyles.root /*, props.styles?.root*/ ),\n nodes: mergeClasses(sankeyChartClassNames.nodes, baseStyles.nodes /*, props.styles?.nodes*/ ),\n links: mergeClasses(sankeyChartClassNames.links, baseStyles.links /*, props.styles?.links*/ ),\n nodeTextContainer: mergeClasses(sankeyChartClassNames.nodeTextContainer, baseStyles.nodeTextContainer /*, props.styles?.nodeTextContainer*/ ),\n toolTip: mergeClasses(sankeyChartClassNames.toolTip, baseStyles.toolTip /*, props.styles?.toolTip*/ ),\n chartWrapper: mergeClasses(sankeyChartClassNames.chartWrapper, props.enableReflow ? baseStyles.chartWrapper : '' /*, props.styles?.chartWrapper*/ )\n };\n};\n"],"mappings":"AAAA,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,MAAM,EAAEC,gBAAgB,QAAQ,uBAAuB;AAChE,SAASC,yBAAyB,QAAQ,uBAAuB;AACjE,OAAO,MAAMC,qBAAqB,GAAG;EACjCC,IAAI,EAAE,cAAc;EACpBC,KAAK,EAAE,eAAe;EACtBC,KAAK,EAAE,eAAe;EACtBC,iBAAiB,EAAE,2BAA2B;EAC9CC,OAAO,EAAE,iBAAiB;EAC1BC,YAAY,EAAE;AAClB,CAAC;AACD,MAAMC,SAAS,gBAAGZ,QAAA;EAAAM,IAAA;IAAAO,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAf,KAAA;IAAAgB,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAnB,KAAA;IAAAiB,OAAA;IAAAE,OAAA;EAAA;EAAAhB,OAAA;IAAAG,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAG,OAAA;IAAAO,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;EAAA;EAAA1C,iBAAA;IAAA2C,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;EAAA;EAAA7C,YAAA;IAAAU,OAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;AAAA;EAAAkC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;EAAAC,CAAA;IAAAA,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CAgDjB,CAAC;AACF,OAAO,MAAMC,oBAAoB,GAAIC,KAAK,IAAG;EACzC,MAAMC,UAAU,GAAGlD,SAAS,CAAC,CAAC;EAC9B,OAAO;IACHN,IAAI,EAAEL,YAAY,CAACI,qBAAqB,CAACC,IAAI,EAAEwD,UAAU,CAACxD,IAAI,CAAC,wBAAyB,CAAC;IACzFC,KAAK,EAAEN,YAAY,CAACI,qBAAqB,CAACE,KAAK,EAAEuD,UAAU,CAACvD,KAAK,CAAC,yBAA0B,CAAC;IAC7FC,KAAK,EAAEP,YAAY,CAACI,qBAAqB,CAACG,KAAK,EAAEsD,UAAU,CAACtD,KAAK,CAAC,yBAA0B,CAAC;IAC7FC,iBAAiB,EAAER,YAAY,CAACI,qBAAqB,CAACI,iBAAiB,EAAEqD,UAAU,CAACrD,iBAAiB,CAAC,qCAAsC,CAAC;IAC7IC,OAAO,EAAET,YAAY,CAACI,qBAAqB,CAACK,OAAO,EAAEoD,UAAU,CAACpD,OAAO,CAAC,2BAA4B,CAAC;IACrGC,YAAY,EAAEV,YAAY,CAACI,qBAAqB,CAACM,YAAY,EAAEkD,KAAK,CAACE,YAAY,GAAGD,UAAU,CAACnD,YAAY,GAAG,EAAE,CAAC,gCAAiC;EACtJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -441,7 +441,7 @@ import { calloutData, ChartTypes, XAxisTypes, tooltipOfXAxislabels, getTypeOfAxi
441
441
  /* eslint-disable react/jsx-no-bind */ // eslint-disable-next-line react/no-children-prop
442
442
  children: (props)=>{
443
443
  _xAxisScale = props.xScale;
444
- _yAxisScale = props.yScale;
444
+ _yAxisScale = props.yScalePrimary;
445
445
  return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("g", null, /*#__PURE__*/ React.createElement("line", {
446
446
  x1: 0,
447
447
  y1: 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["ScatterChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ScatterChartProps } from './ScatterChart.types';\nimport { useScatterChartStyles_unstable } 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 { areArraysEqual, find } from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ScatterChartDataPoint,\n Chart,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n XAxisTypes,\n tooltipOfXAxislabels,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n formatDate,\n} from '../../utilities/index';\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: JSX.Element[];\n let _xAxisLabels: string[] = [];\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n let _xBandwidth = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\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[]>([]);\n const prevPropsRef = React.useRef<ScatterChartProps | null>(null);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\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 _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[]): JSX.Element {\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 />\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): JSX.Element[] {\n const series: JSX.Element[] = [];\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: JSX.Element[] = [];\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={() => _handleFocus(seriesId, x, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)}\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 const classes = useScatterChartStyles_unstable(props);\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 xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return series;\n }\n\n function _handleFocus(\n seriesId: string,\n x: number | Date | string,\n\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\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 selectedLegends.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 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.yScale!;\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_unstable","select","d3Select","Legends","max","d3Max","min","d3Min","useId","areArraysEqual","find","CartesianChart","tokens","calloutData","ChartTypes","XAxisTypes","tooltipOfXAxislabels","getTypeOfAxis","getNextColor","getColorFromToken","formatDate","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","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegendPoints","setSelectedLegendPoints","isSelectedLegend","setIsSelectedLegend","activePoint","setActivePoint","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","prevPropsRef","useEffect","current","prevProps","legendProps","useImperativeHandle","componentRef","chartContainer","_xAxisType","length","StringAxis","pointsRef","calloutPointsRef","height","width","scatterChartData","map","item","index","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_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","legendsSelected","event","currentLegend","slice","_getPointFill","seriesColor","pointId","pointIndex","isLastPoint","colorNeutralBackground1","series","yMax","points","yMin","yPadding","yPaddingRange","abs","maxMarkerRange","xPaddingRange","bandwidth","DateAxis","xMin","xMax","xPadding","getTime","Date","maxMarkerSize","markerSize","i","pointsForSeries","legendVal","verticaLineHeight","bottom","j","seriesId","circleId","xAxisCalloutData","circleRadius","pointMarkerSize","undefined","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","classes","showXAxisLablesTooltip","document","getElementById","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","xAxis","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","tickValues","tickFormat","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","tickParams","xAxisLabels","dp","flat","Set","chartTitle","chartType","getmargins","getGraphData","xAxisType","onChartMouseLeave","enableFirstRenderOptimization","datasetForXAxisDomain","children","line","x1","y1","x2","y2","visibility","strokeDasharray","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["ScatterChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ScatterChartProps } from './ScatterChart.types';\nimport { useScatterChartStyles_unstable } 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 { areArraysEqual, find } from '../../utilities/index';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n LineChartPoints,\n CustomizedCalloutData,\n Margins,\n RefArrayData,\n ScatterChartDataPoint,\n Chart,\n} from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n calloutData,\n ChartTypes,\n XAxisTypes,\n tooltipOfXAxislabels,\n getTypeOfAxis,\n getNextColor,\n getColorFromToken,\n formatDate,\n} from '../../utilities/index';\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: JSX.Element[];\n let _xAxisLabels: string[] = [];\n let xAxisCalloutAccessibilityData: AccessibilityProps = {};\n let _xBandwidth = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\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[]>([]);\n const prevPropsRef = React.useRef<ScatterChartProps | null>(null);\n\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\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 _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[]): JSX.Element {\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 />\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): JSX.Element[] {\n const series: JSX.Element[] = [];\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: JSX.Element[] = [];\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={() => _handleFocus(seriesId, x, xAxisCalloutData, circleId, xAxisCalloutAccessibilityData)}\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 const classes = useScatterChartStyles_unstable(props);\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 xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return series;\n }\n\n function _handleFocus(\n seriesId: string,\n x: number | Date | string,\n\n xAxisCalloutData: string | undefined,\n circleId: string,\n xAxisCalloutAccessibilityData?: AccessibilityProps,\n ) {\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 selectedLegends.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 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_unstable","select","d3Select","Legends","max","d3Max","min","d3Min","useId","areArraysEqual","find","CartesianChart","tokens","calloutData","ChartTypes","XAxisTypes","tooltipOfXAxislabels","getTypeOfAxis","getNextColor","getColorFromToken","formatDate","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","hoverXValue","setHoverXValue","useState","activeLegend","setActiveLegend","YValueHover","setYValueHover","selectedLegendPoints","setSelectedLegendPoints","isSelectedLegend","setIsSelectedLegend","activePoint","setActivePoint","stackCalloutProps","setStackCalloutProps","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","selectedLegends","setSelectedLegends","prevPropsRef","useEffect","current","prevProps","legendProps","useImperativeHandle","componentRef","chartContainer","_xAxisType","length","StringAxis","pointsRef","calloutPointsRef","height","width","scatterChartData","map","item","index","color","updatePosition","newX","newY","threshold","distance","Math","sqrt","pow","_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","legendsSelected","event","currentLegend","slice","_getPointFill","seriesColor","pointId","pointIndex","isLastPoint","colorNeutralBackground1","series","yMax","points","yMin","yPadding","yPaddingRange","abs","maxMarkerRange","xPaddingRange","bandwidth","DateAxis","xMin","xMax","xPadding","getTime","Date","maxMarkerSize","markerSize","i","pointsForSeries","legendVal","verticaLineHeight","bottom","j","seriesId","circleId","xAxisCalloutData","circleRadius","pointMarkerSize","undefined","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","classes","showXAxisLablesTooltip","document","getElementById","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","xAxis","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","tickValues","tickFormat","legendBars","hideLegend","calloutProps","descriptionMessage","getCalloutDescriptionMessage","isCalloutForStack","culture","isCartesian","tickParams","xAxisLabels","dp","flat","Set","chartTitle","chartType","getmargins","getGraphData","xAxisType","onChartMouseLeave","enableFirstRenderOptimization","datasetForXAxisDomain","children","yScalePrimary","line","x1","y1","x2","y2","visibility","strokeDasharray","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -87,7 +87,7 @@ const MIN_DOMAIN_MARGIN = 8;
87
87
  ]);
88
88
  function _createLine(// eslint-disable-next-line @typescript-eslint/no-explicit-any
89
89
  xScale, // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
- yScale, containerHeight = 0, containerWidth = 0, // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
+ yScalePrimary, containerHeight = 0, containerWidth = 0, // eslint-disable-next-line @typescript-eslint/no-explicit-any
91
91
  yScaleSecondary) {
92
92
  var _props_lineOptions;
93
93
  const isStringAxis = _xAxisType === XAxisTypes.StringAxis;
@@ -110,7 +110,7 @@ const MIN_DOMAIN_MARGIN = 8;
110
110
  });
111
111
  const linePath = d3Line()// eslint-disable-next-line @typescript-eslint/no-explicit-any
112
112
  .x((d)=>isStringAxis ? xScale(d.x) + 0.5 * xScale.bandwidth() : xScale(d.x))// eslint-disable-next-line @typescript-eslint/no-explicit-any
113
- .y((d)=>d.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(d.y) : yScale(d.y));
113
+ .y((d)=>d.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(d.y) : yScalePrimary(d.y));
114
114
  const shouldHighlight = _legendHighlighted(lineLegendText) || _noLegendHighlighted() ? true : false;
115
115
  const lineBorderWidth = ((_props_lineOptions = props.lineOptions) === null || _props_lineOptions === void 0 ? void 0 : _props_lineOptions.lineBorderWidth) ? Number.parseFloat(props.lineOptions.lineBorderWidth.toString()) : 0;
116
116
  if (lineBorderWidth > 0) {
@@ -145,7 +145,7 @@ const MIN_DOMAIN_MARGIN = 8;
145
145
  key: index,
146
146
  id: `${_vbcPointId}-${index}`,
147
147
  cx: isStringAxis ? xScale(item.x) + 0.5 * xScale.bandwidth() : xScale(item.x),
148
- cy: item.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(item.y) : yScale(item.y),
148
+ cy: item.useSecondaryYScale && yScaleSecondary ? yScaleSecondary(item.y) : yScalePrimary(item.y),
149
149
  onMouseOver: (event)=>_legendHighlighted(lineLegendText) ? _lineHover(item.point, event) : _onBarHover(item.point, colorScale(item.y), event),
150
150
  onMouseOut: _onBarLeave,
151
151
  r: _getCircleVisibilityAndRadius(item.x, lineLegendText).radius,
@@ -787,7 +787,7 @@ const MIN_DOMAIN_MARGIN = 8;
787
787
  textAnchor: "middle",
788
788
  className: classes.barLabel,
789
789
  "aria-hidden": true
790
- }, formatScientificLimitWidth(barValue));
790
+ }, typeof props.yAxisTickFormat === 'function' ? props.yAxisTickFormat(barValue) : formatScientificLimitWidth(barValue));
791
791
  }
792
792
  function _getDomainMargins(containerWidth) {
793
793
  _domainMargin = MIN_DOMAIN_MARGIN;
@@ -912,7 +912,7 @@ const MIN_DOMAIN_MARGIN = 8;
912
912
  componentRef: cartesianChartRef,
913
913
  /* eslint-disable react/jsx-no-bind */ // eslint-disable-next-line react/no-children-prop
914
914
  children: (props)=>{
915
- return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("g", null, _bars), _isHavingLine && /*#__PURE__*/ React.createElement("g", null, _createLine(props.xScale, props.yScale, props.containerHeight, props.containerWidth, props.yScaleSecondary)));
915
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("g", null, _bars), _isHavingLine && /*#__PURE__*/ React.createElement("g", null, _createLine(props.xScale, props.yScalePrimary, props.containerHeight, props.containerWidth, props.yScaleSecondary)));
916
916
  }
917
917
  }) : /*#__PURE__*/ React.createElement("div", {
918
918
  id: _emptyChartId,