@fluentui/react-charts 9.2.1 → 9.2.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.
- package/CHANGELOG.md +57 -2
- package/dist/index.d.ts +168 -15
- package/lib/ChartTable.js +1 -0
- package/lib/ChartTable.js.map +1 -0
- package/lib/components/AreaChart/AreaChart.js +4 -1
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +2 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js +2 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.js +58 -0
- package/lib/components/ChartTable/ChartTable.js.map +1 -0
- package/lib/components/ChartTable/ChartTable.types.js +1 -0
- package/lib/components/ChartTable/ChartTable.types.js.map +1 -0
- package/lib/components/ChartTable/index.js +3 -0
- package/lib/components/ChartTable/index.js.map +1 -0
- package/lib/components/ChartTable/useChartTableStyles.styles.js +93 -0
- package/lib/components/ChartTable/useChartTableStyles.styles.js.map +1 -0
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js +55 -0
- package/lib/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -0
- package/lib/components/CommonComponents/CartesianChart.js +170 -100
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.types.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +13 -0
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +12 -0
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +180 -102
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js +100 -0
- package/lib/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -0
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +890 -211
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +2 -2
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.js +2 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.js.map +1 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js +2 -1
- package/lib/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +185 -144
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +2 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +175 -114
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js +2 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +2 -1
- package/lib/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +26 -6
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +2 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +2 -1
- package/lib/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/Legends/OverflowMenu.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +251 -78
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/LineChart.types.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +10 -3
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js +14 -2
- package/lib/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +56 -37
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +21 -4
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js +16 -3
- package/lib/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +38 -14
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +2 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +2 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +214 -96
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +2 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +2 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/FocusableTooltipText.js.map +1 -1
- package/lib/utilities/utilities.js +41 -42
- package/lib/utilities/utilities.js.map +1 -1
- package/lib/utilities/vbc-utils.js +24 -0
- package/lib/utilities/vbc-utils.js.map +1 -1
- package/lib-commonjs/ChartTable.js +6 -0
- package/lib-commonjs/ChartTable.js.map +1 -0
- package/lib-commonjs/components/AreaChart/AreaChart.js +4 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +2 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js +2 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js +69 -0
- package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -0
- package/lib-commonjs/components/ChartTable/ChartTable.types.js +6 -0
- package/lib-commonjs/components/ChartTable/ChartTable.types.js.map +1 -0
- package/lib-commonjs/components/ChartTable/index.js +8 -0
- package/lib-commonjs/components/ChartTable/index.js.map +1 -0
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js +196 -0
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.js.map +1 -0
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js +69 -0
- package/lib-commonjs/components/ChartTable/useChartTableStyles.styles.raw.js.map +1 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +169 -98
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +13 -0
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +12 -0
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +176 -100
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js +128 -0
- package/lib-commonjs/components/DeclarativeChart/PlotlyColorAdapter.js.map +1 -0
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +909 -209
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.types.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js +2 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js +2 -1
- package/lib-commonjs/components/GanttChart/useGanttChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +183 -142
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +2 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js +2 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +174 -113
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js +2 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js +2 -1
- package/lib-commonjs/components/HeatMapChart/useHeatMapChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.types.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +25 -5
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js +2 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js +2 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/useHorizontalBarChartWithAxisStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/Legends/OverflowMenu.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +250 -78
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +12 -3
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js +14 -2
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +56 -37
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +30 -3
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js +15 -2
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +37 -13
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +2 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js +2 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +213 -95
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.types.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +2 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js +2 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/index.js +1 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/FocusableTooltipText.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +44 -41
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/lib-commonjs/utilities/vbc-utils.js +27 -0
- package/lib-commonjs/utilities/vbc-utils.js.map +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utilities/vbc-utils.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../src/utilities/vbc-utils.ts"],"sourcesContent":["import { Margins } from '../index';\n\nexport const getClosestPairDiffAndRange = (data: number[] | Date[]): [number, number] | undefined => {\n if (data.length < 2) {\n return;\n }\n data = data.sort((a, b) =>\n a instanceof Date ? (a as Date).getTime() - (b as Date).getTime() : (a as number) - (b as number),\n );\n let minDiff = Number.MAX_VALUE;\n for (let i = 1; i < data.length; i++) {\n const diff =\n data[i] instanceof Date\n ? (data[i] as Date).getTime() - (data[i - 1] as Date).getTime()\n : (data[i] as number) - (data[i - 1] as number);\n minDiff = Math.min(minDiff, diff);\n }\n const range =\n data[0] instanceof Date\n ? (data[data.length - 1] as Date).getTime() - (data[0] as Date).getTime()\n : (data[data.length - 1] as number) - (data[0] as number);\n return [minDiff, range];\n};\n\nexport const calculateAppropriateBarWidth = (data: number[] | Date[], totalWidth: number, innerPadding: number) => {\n const result = getClosestPairDiffAndRange(data);\n if (!result || result[1] === 0) {\n return 16;\n }\n const [closestPairDiff, range] = result;\n // Refer to https://microsoft.github.io/fluentui-charting-contrib/docs/rfcs/fix-overlapping-bars-on-continuous-axes\n // for the derivation of the following formula.\n const barWidth = Math.floor(\n (totalWidth * closestPairDiff * (1 - innerPadding)) / (range + closestPairDiff * (1 - innerPadding)),\n );\n return barWidth;\n};\n\n/**\n * Calculates the total width available for rendering bars.\n */\nexport const calcTotalWidth = (containerWidth: number, margins: Margins, extraMargin = 0): number => {\n return containerWidth - (margins.left || 0) - (margins.right || 0) - extraMargin * 2;\n};\n\n/**\n * Calculates the combined size of all bands and the gaps between them, in units relative to the bandwidth.\n */\nexport const calcTotalBandUnits = (numBands: number, innerPadding: number) => {\n // inner_padding = space_between_bands / (space_between_bands + bandwidth)\n // => space_between_bands = (inner_padding / (1 - inner_padding)) * bandwidth\n const gapToBandRatio = innerPadding / (1 - innerPadding);\n return numBands + (numBands - 1) * gapToBandRatio;\n};\n\n/**\n * Calculates the total width required to render all bands including the gaps between them.\n */\nexport const calcRequiredWidth = (bandwidth: number, numBands: number, innerPadding: number) => {\n return bandwidth * calcTotalBandUnits(numBands, innerPadding);\n};\n\n/**\n * Calculates the maximum possible bandwidth such that the combined widths of all bands\n * and the gaps between them exactly fill the total available width.\n */\nexport const calcBandwidth = (totalWidth: number, numBands: number, innerPadding: number) => {\n return totalWidth / calcTotalBandUnits(numBands, innerPadding);\n};\n"],"names":["getClosestPairDiffAndRange","data","length","sort","a","b","Date","getTime","minDiff","Number","MAX_VALUE","i","diff","Math","min","range","calculateAppropriateBarWidth","totalWidth","innerPadding","result","closestPairDiff","barWidth","floor","calcTotalWidth","containerWidth","margins","extraMargin","left","right","calcTotalBandUnits","numBands","gapToBandRatio","calcRequiredWidth","bandwidth","calcBandwidth"],"mappings":"AAEA,OAAO,MAAMA,6BAA6B,CAACC;IACzC,IAAIA,KAAKC,MAAM,GAAG,GAAG;QACnB;IACF;IACAD,OAAOA,KAAKE,IAAI,CAAC,CAACC,GAAGC,IACnBD,aAAaE,OAAO,AAACF,EAAWG,OAAO,KAAK,AAACF,EAAWE,OAAO,KAAK,AAACH,IAAgBC;IAEvF,IAAIG,UAAUC,OAAOC,SAAS;IAC9B,IAAK,IAAIC,IAAI,GAAGA,IAAIV,KAAKC,MAAM,EAAES,IAAK;QACpC,MAAMC,OACJX,IAAI,CAACU,EAAE,YAAYL,OACf,AAACL,IAAI,CAACU,EAAE,CAAUJ,OAAO,KAAK,AAACN,IAAI,CAACU,IAAI,EAAE,CAAUJ,OAAO,KAC3D,AAACN,IAAI,CAACU,EAAE,GAAeV,IAAI,CAACU,IAAI,EAAE;QACxCH,UAAUK,KAAKC,GAAG,CAACN,SAASI;IAC9B;IACA,MAAMG,QACJd,IAAI,CAAC,EAAE,YAAYK,OACf,AAACL,IAAI,CAACA,KAAKC,MAAM,GAAG,EAAE,CAAUK,OAAO,KAAK,AAACN,IAAI,CAAC,EAAE,CAAUM,OAAO,KACrE,AAACN,IAAI,CAACA,KAAKC,MAAM,GAAG,EAAE,GAAeD,IAAI,CAAC,EAAE;IAClD,OAAO;QAACO;QAASO;KAAM;AACzB,EAAE;AAEF,OAAO,MAAMC,+BAA+B,CAACf,MAAyBgB,YAAoBC;IACxF,MAAMC,SAASnB,2BAA2BC;IAC1C,IAAI,CAACkB,UAAUA,MAAM,CAAC,EAAE,KAAK,GAAG;QAC9B,OAAO;IACT;IACA,MAAM,CAACC,iBAAiBL,MAAM,GAAGI;IACjC,mHAAmH;IACnH,+CAA+C;IAC/C,MAAME,WAAWR,KAAKS,KAAK,CACzB,AAACL,aAAaG,kBAAmB,CAAA,IAAIF,YAAW,IAAOH,CAAAA,QAAQK,kBAAmB,CAAA,IAAIF,YAAW,CAAC;IAEpG,OAAOG;AACT,EAAE;AAEF;;CAEC,GACD,OAAO,MAAME,iBAAiB,CAACC,gBAAwBC,SAAkBC,cAAc,CAAC;IACtF,OAAOF,iBAAkBC,CAAAA,QAAQE,IAAI,IAAI,CAAA,IAAMF,CAAAA,QAAQG,KAAK,IAAI,CAAA,IAAKF,cAAc;AACrF,EAAE;AAEF;;CAEC,GACD,OAAO,MAAMG,qBAAqB,CAACC,UAAkBZ;IACnD,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAMa,iBAAiBb,eAAgB,CAAA,IAAIA,YAAW;IACtD,OAAOY,WAAW,AAACA,CAAAA,WAAW,CAAA,IAAKC;AACrC,EAAE;AAEF;;CAEC,GACD,OAAO,MAAMC,oBAAoB,CAACC,WAAmBH,UAAkBZ;IACrE,OAAOe,YAAYJ,mBAAmBC,UAAUZ;AAClD,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAMgB,gBAAgB,CAACjB,YAAoBa,UAAkBZ;IAClE,OAAOD,aAAaY,mBAAmBC,UAAUZ;AACnD,EAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ChartTable.ts"],"sourcesContent":["export * from './components/ChartTable/index';\n"],"names":[],"mappings":";;;;;uBAAc,gCAAgC"}
|
|
@@ -100,6 +100,9 @@ const AreaChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
100
100
|
};
|
|
101
101
|
}, []);
|
|
102
102
|
const classes = (0, _useAreaChartStylesstyles.useAreaChartStyles)(props);
|
|
103
|
+
function _getMinMaxOfYAxis(points, yAxisType, useSecondaryYScale) {
|
|
104
|
+
return (0, _index1.findNumericMinMaxOfY)(points, yAxisType, useSecondaryYScale);
|
|
105
|
+
}
|
|
103
106
|
function _getDomainNRangeValues(points, margins, width, chartType, isRTL, xAxisType, barWidth, tickValues) {
|
|
104
107
|
let domainNRangeValue;
|
|
105
108
|
if (xAxisType === _index1.XAxisTypes.NumericAxis) {
|
|
@@ -793,7 +796,7 @@ const AreaChart = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
|
793
796
|
createStringYAxis: _index1.createStringYAxis,
|
|
794
797
|
getmargins: _getMargins,
|
|
795
798
|
onChartMouseLeave: _handleChartMouseLeave,
|
|
796
|
-
getMinMaxOfYAxis:
|
|
799
|
+
getMinMaxOfYAxis: _getMinMaxOfYAxis,
|
|
797
800
|
enableFirstRenderOptimization: props.enablePerfOptimization && _firstRenderOptimization,
|
|
798
801
|
componentRef: cartesianChartRef,
|
|
799
802
|
/* eslint-disable react/jsx-no-bind */ // eslint-disable-next-line react/no-children-prop, @typescript-eslint/no-shadow
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AreaChart/AreaChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useAreaChartStyles } from './useAreaChartStyles.styles';\nimport { max as d3Max, bisector } from 'd3-array';\nimport { pointer } from 'd3-selection';\nimport { select as d3Select } from 'd3-selection';\nimport { tokens } from '@fluentui/react-theme';\nimport { area as d3Area, stack as d3Stack, curveMonotoneX as d3CurveBasis, line as d3Line } from 'd3-shape';\nimport {\n AccessibilityProps,\n CartesianChart,\n CustomizedCalloutData,\n AreaChartProps,\n LineChartDataPoint,\n LineChartPoints,\n ChildProps,\n Margins,\n YValueHover,\n ChartPopoverProps,\n Chart,\n ImageExportOptions,\n} from '../../index';\nimport {\n calloutData,\n getXAxisType,\n ChartTypes,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfAxislabels,\n getNextColor,\n getColorFromToken,\n formatDate,\n getSecureProps,\n areArraysEqual,\n getCurveFactory,\n find,\n findNumericMinMaxOfY,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfNumericForAreaChart,\n domainRangeOfDateForAreaLineVerticalBarChart,\n createStringYAxis,\n useRtl,\n} from '../../utilities/index';\nimport { useId } from '@fluentui/react-utilities';\nimport { Legend, LegendContainer, Legends } from '../Legends/index';\nimport { ScaleLinear } from 'd3-scale';\nimport { toImage } from '../../utilities/image-export-utils';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bisect = bisector((d: any) => d.x).left;\n\nenum InterceptVisibility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nexport interface AreaChartAreaPoint {\n xVal: string | number;\n values: AreaChartDataSetPoint;\n}\nexport interface AreaChartDataSetPoint {\n [key: string]: number | string | number[];\n}\nexport interface DPointType {\n values: { 0: number; 1: number; data: {} };\n xVal: number | Date;\n}\nexport interface MapXToDataSet {\n [key: string]: LineChartDataPoint[];\n [key: number]: LineChartDataPoint[];\n}\n\n//by default d3-shape 3.2.0 limits the< path> data point precision to 3 digits(d3/d3-path#10)\n\nexport const AreaChart: React.FunctionComponent<AreaChartProps> = React.forwardRef<HTMLDivElement, AreaChartProps>(\n (props, forwardedRef) => {\n const _uniqueIdForGraph: string = useId('areaChart_');\n const _verticalLineId: string = useId('verticalLine_');\n const _circleId: string = useId('circle');\n const _rectId: string = useId('rectangle');\n const _tooltipId: string = useId('AreaChartTooltipID');\n //enableComputationOptimization is used for optimized code to group data points by x value\n //from O(n^2) to O(n) using a map.\n const _enableComputationOptimization: boolean = true;\n const _firstRenderOptimization: boolean = true;\n const _emptyChartId: string = useId('_AreaChart_empty');\n let _containsSecondaryYAxis = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any;\n let _createSet: (data: LineChartPoints[]) => {\n colors: string[];\n opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutPoints: any;\n };\n let _colors: string[];\n let _opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _data: any;\n let _chart: JSX.Element[];\n let _margins: Margins;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisRectScale: any;\n // determines if the given area chart has multiple stacked bar charts\n let _isMultiStackChart: boolean;\n const cartesianChartRef = React.useRef<Chart>(null);\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _isRTL: boolean = useRtl();\n\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [hoverXValue, setHoverXValue] = React.useState<string | number | undefined | null>('');\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const [YValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [lineXValue, setLineXValue] = React.useState<number>(0);\n const [displayOfLine, setDisplayOfLine] = React.useState<InterceptVisibility>(InterceptVisibility.hide);\n const [isCircleClicked, setIsCircleClicked] = React.useState<boolean>(false);\n const [nearestCircleToHighlight, setNearestCircleToHighlight] = React.useState<number | string | Date | null>(null);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<CustomizedCalloutData>();\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [xAxisCalloutAccessibilityData, setXAxisCalloutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<AreaChartProps | 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 toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(cartesianChartRef.current?.chartContainer, _legendsRef.current?.toSVG, _isRTL, opts);\n },\n }),\n [],\n );\n\n const classes = useAreaChartStyles(props);\n\n function _getDomainNRangeValues(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineVerticalBarChart(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n return domainNRangeValue;\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _onRectMouseMove(mouseEvent: React.MouseEvent<SVGRectElement | SVGPathElement | SVGCircleElement>) {\n mouseEvent.persist();\n const { data } = props;\n const { lineChartData } = data;\n _updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n // This will get the value of the X when mouse is on the chart\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n const xOffset = _xAxisRectScale.invert(pointer(mouseEvent)[0], document.getElementById(_rectId)!);\n const i = bisect(lineChartData![0].data, xOffset);\n const d0 = lineChartData![0].data[i - 1] as LineChartDataPoint;\n const d1 = lineChartData![0].data[i] as LineChartDataPoint;\n let pointToHighlight: string | Date | number | null = null;\n let index: null | number = null;\n const axisType =\n lineChartData![0].data.length > 0 ? (getTypeOfAxis(lineChartData![0].data[0].x, true) as XAxisTypes) : null;\n if (d0 === undefined && d1 !== undefined) {\n pointToHighlight = d1.x;\n index = i;\n } else if (d0 !== undefined && d1 === undefined) {\n pointToHighlight = d0.x;\n index = i - 1;\n } else {\n let x0;\n let point0;\n let point1;\n switch (axisType) {\n case XAxisTypes.DateAxis:\n x0 = new Date(xOffset).getTime();\n point0 = (d0.x as Date).getTime();\n point1 = (d1.x as Date).getTime();\n pointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n case XAxisTypes.NumericAxis:\n x0 = xOffset as number;\n point0 = d0.x as number;\n point1 = d1.x as number;\n pointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n default:\n break;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { xAxisCalloutData, xAxisCalloutAccessibilityData } = lineChartData![0].data[index as number];\n const formattedDate =\n pointToHighlight instanceof Date ? formatDate(pointToHighlight, props.useUTC) : pointToHighlight;\n const modifiedXVal = pointToHighlight instanceof Date ? pointToHighlight.getTime() : pointToHighlight;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = find(_calloutPoints, (element: { x: string | number }) => {\n return element.x === modifiedXVal;\n });\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const _nearestCircleToHighlight =\n axisType === XAxisTypes.DateAxis ? (pointToHighlight as Date).getTime() : pointToHighlight;\n // if no points need to be called out then don't show vertical line and callout card\n if (found) {\n const filteredValues = _getFilteredLegendValues(found.values);\n setNearestCircleToHighlight(_nearestCircleToHighlight);\n setLineXValue(_xAxisRectScale(pointToHighlight));\n setDisplayOfLine(InterceptVisibility.show);\n setIsCircleClicked(false);\n setStackCalloutProps({ ...found, values: filteredValues });\n setYValueHover(filteredValues);\n setDataPointCalloutProps({ ...found, values: filteredValues });\n setHoverXValue(xAxisCalloutData ? xAxisCalloutData : formattedDate);\n setXAxisCalloutAccessibilityData(xAxisCalloutAccessibilityData);\n setActivePoint('');\n } else {\n setPopoverOpen(false);\n setNearestCircleToHighlight(nearestCircleToHighlight);\n setDisplayOfLine(InterceptVisibility.hide);\n setIsCircleClicked(false);\n }\n }\n /**\n * just cleaning up the state which we have set in the mouse move event\n */\n function _onRectMouseOut() {\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 _handleChartMouseLeave() {\n setPopoverOpen(false);\n setNearestCircleToHighlight(null);\n setLineXValue(0);\n setDisplayOfLine(InterceptVisibility.hide);\n setIsCircleClicked(false);\n setStackCalloutProps(undefined);\n setDataPointCalloutProps(undefined);\n setHoverXValue(undefined);\n setYValueHover([]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getDataPoints(keys: string[], dataSet: any) {\n const renderPoints: Array<AreaChartDataSetPoint[]> = [];\n let maxOfYVal = 0;\n\n if (_shouldFillToZeroY()) {\n keys.forEach((key, index) => {\n const currentLayer: AreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSet.forEach((d: any) => {\n currentLayer.push({\n values: [0, d[key]], // Start from zero for \"tozeroy\" mode\n xVal: d.xVal,\n });\n if (d[key] > maxOfYVal) {\n maxOfYVal = d[key];\n }\n });\n renderPoints.push(currentLayer);\n });\n } else {\n const dataValues = d3Stack().keys(keys)(dataSet);\n maxOfYVal = d3Max(dataValues[dataValues.length - 1], dp => dp[1])!;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataValues.forEach((layer: any) => {\n const currentLayer: AreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.forEach((d: any) => {\n currentLayer.push({\n values: d,\n xVal: d.data.xVal,\n });\n });\n renderPoints.push(currentLayer);\n });\n }\n\n _isMultiStackChart = !!(props.legendProps?.selectedLegends\n ? renderPoints?.length >= 1\n : renderPoints?.length > 1);\n return {\n renderData: renderPoints,\n // The maxOfYVal prop is only required for the primary y-axis. When the data includes\n // a secondary y-axis, the mode defaults to tozeroy, so maxOfYVal should be calculated using\n // only the data points associated with the primary y-axis.\n maxOfYVal: _containsSecondaryYAxis ? findNumericMinMaxOfY(props.data.lineChartData!).endValue : maxOfYVal,\n };\n }\n\n function _createDataSet(points: LineChartPoints[]) {\n if (props.enablePerfOptimization && _enableComputationOptimization) {\n const allChartPoints: LineChartDataPoint[] = [];\n const dataSet: AreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: LineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...(singleChartPoint.data as LineChartDataPoint[]));\n });\n\n const mapOfXvalToListOfDataPoints: MapXToDataSet = {};\n allChartPoints.forEach((dataPoint: LineChartDataPoint) => {\n const xValue = dataPoint.x instanceof Date ? dataPoint.x.toLocaleString() : dataPoint.x;\n // map of x value to the list of data points which share the same x value .\n if (mapOfXvalToListOfDataPoints[xValue]) {\n mapOfXvalToListOfDataPoints[xValue].push(dataPoint);\n } else {\n mapOfXvalToListOfDataPoints[xValue] = [dataPoint];\n }\n });\n\n Object.keys(mapOfXvalToListOfDataPoints).forEach((key: number | string) => {\n const value: LineChartDataPoint[] = mapOfXvalToListOfDataPoints[key];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n value.forEach((singleDataPoint: LineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n });\n\n // get keys from dataset, used to render data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Data used to draw graph\n const data = _getDataPoints(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n data,\n calloutPoints,\n };\n } else {\n const allChartPoints: LineChartDataPoint[] = [];\n const dataSet: AreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: LineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...(singleChartPoint.data as LineChartDataPoint[]));\n });\n\n let tempArr = allChartPoints;\n while (tempArr.length) {\n const valToCheck = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n const filteredChartPoints: LineChartDataPoint[] = tempArr.filter(\n (point: LineChartDataPoint) =>\n (point.x instanceof Date ? point.x.toLocaleString() : point.x) === valToCheck,\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n filteredChartPoints.forEach((singleDataPoint: LineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n // removing compared objects from array\n const val = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n tempArr = tempArr.filter(\n (point: LineChartDataPoint) => (point.x instanceof Date ? point.x.toLocaleString() : point.x) !== val,\n );\n }\n\n // get keys from dataset, used to create stacked data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Data used to draw graph\n const data = _getDataPoints(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n data,\n calloutPoints,\n };\n }\n }\n\n function _getCustomizedCallout() {\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps)\n : null;\n }\n\n function _getGraphData(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xAxis: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxis: any,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) {\n _chart = _drawGraph(containerHeight, xAxis, yAxis, yScaleSecondary, xElement!);\n }\n\n function _onLegendHover(legend: string): void {\n setActiveLegend(legend);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _getLegendData(points: LineChartPoints[]): JSX.Element {\n const data = points;\n const actions: Legend[] = [];\n\n data.forEach((singleChartData: LineChartPoints) => {\n const color: string = singleChartData.color!;\n const checkSimilarLegends = actions.filter(\n (leg: Legend) => leg.title === singleChartData.legend && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: singleChartData.legend,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(singleChartData.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _onLegendSelectionChange(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n function _onDataPointClick(func: (() => void) | undefined) {\n if (func) {\n func();\n }\n setIsCircleClicked(true);\n }\n\n function _getOpacity(legend: string): number {\n if (!_isMultiStackChart) {\n return 0.7;\n } else {\n const opacity = _legendHighlighted(legend) || _noLegendHighlighted() ? 0.7 : 0.1;\n return opacity;\n }\n }\n\n function _getLineOpacity(legend: string): number {\n if (!_isMultiStackChart) {\n return 1;\n } else {\n let opacity = 0.3;\n if (isPopoverOpen) {\n opacity = 1;\n }\n if (!_noLegendHighlighted()) {\n opacity = _legendHighlighted(legend) ? 0 : 0.1;\n }\n return opacity;\n }\n }\n\n function _updateCircleFillColor(xDataPoint: number | Date, lineColor: string, circleId: string): string {\n let fillColor = lineColor;\n if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n if (!isCircleClicked) {\n fillColor = tokens.colorNeutralBackground1;\n }\n }\n\n return fillColor;\n }\n\n function _drawGraph(\n containerHeight: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n xElement: SVGElement,\n ): JSX.Element[] {\n const points = _addDefaultColors(props.data.lineChartData);\n const { pointOptions, pointLineOptions } = props.data;\n\n const graph: JSX.Element[] = [];\n let lineColor: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _data.forEach((singleStackedData: Array<any>, index: number) => {\n const yScale = points[index].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n const curveFactory = getCurveFactory(points[index].lineOptions?.curve, d3CurveBasis);\n const area = d3Area()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y0((d: any) => yScale(d.values[0]))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y1((d: any) => yScale(d.values[1]))\n .curve(curveFactory);\n const line = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d.values[1]))\n .curve(curveFactory);\n const layerOpacity = _shouldFillToZeroY() ? 0.8 : _opacity[index];\n graph.push(\n <React.Fragment key={`${index}-graph-${_uniqueIdForGraph}`}>\n {props.enableGradient && (\n <defs>\n <linearGradient id={`gradient_${index}`} x1=\"0%\" x2=\"0%\" y1=\"0%\" y2=\"100%\">\n <stop offset=\"0\" stopColor={_colors[index]} />\n <stop offset=\"100%\" stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n )}\n <path\n id={`${index}-line-${_uniqueIdForGraph}`}\n d={line(singleStackedData)!}\n fill={'transparent'}\n strokeWidth={points[index].lineOptions?.strokeWidth ?? 3}\n stroke={_colors[index]}\n opacity={_getLineOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n strokeDasharray={points[index].lineOptions?.strokeDasharray}\n strokeDashoffset={points[index].lineOptions?.strokeDashoffset}\n strokeLinecap={points[index].lineOptions?.strokeLinecap}\n />\n {singleStackedData.length === 1 ? (\n <circle\n id={`${index}-graph-${_uniqueIdForGraph}`}\n cx={xScale(singleStackedData[0].xVal)}\n cy={yScale(singleStackedData[0].values[1])}\n r={6}\n stroke={_colors[index]}\n strokeWidth={3}\n fill={_colors[index]}\n opacity={layerOpacity}\n fillOpacity={_getOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onFocus={event => _handleFocus(event, index, 0, `${_circleId}_${index}`)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n />\n ) : (\n <path\n id={`${index}-graph-${_uniqueIdForGraph}`}\n d={area(singleStackedData)!}\n fill={props.enableGradient ? `url(#gradient_${index})` : _colors[index]}\n opacity={layerOpacity}\n fillOpacity={_getOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n {...(props.optimizeLargeData && {\n tabIndex: _legendHighlighted(points[index]!.legend) || _noLegendHighlighted() ? 0 : undefined,\n role: 'img',\n 'aria-label': `${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`,\n })}\n />\n )}\n </React.Fragment>,\n );\n });\n\n const circleRadius = pointOptions && pointOptions.r ? Number(pointOptions.r) : 8;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _data.forEach((singleStackedData: Array<any>, index: number) => {\n if (points.length === index) {\n return;\n }\n const yScale = points[index].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n if (!props.optimizeLargeData || singleStackedData.length === 1) {\n // Render circles for all data points\n graph.push(\n <g\n key={`${index}-dots-${_uniqueIdForGraph}`}\n clipPath=\"url(#clip)\"\n role=\"region\"\n aria-label={`${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`}\n >\n {singleStackedData.map((singlePoint: DPointType, pointIndex: number) => {\n const circleId = `${_circleId}_${index * _data[0].length + pointIndex}`;\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n lineColor = points[index]!.color!;\n const legend = points[index]!.legend;\n return (\n <circle\n key={circleId}\n id={circleId}\n tabIndex={_legendHighlighted(points[index]!.legend) || _noLegendHighlighted() ? 0 : undefined}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={_updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n onClick={() => _onDataPointClick(points[index]!.data[pointIndex].onDataPointClick!)}\n onFocus={event => _handleFocus(event, index, pointIndex, circleId)}\n onBlur={_handleBlur}\n {...getSecureProps(pointOptions)}\n r={_getCircleRadius(xDataPoint, circleRadius, circleId, legend)}\n role=\"img\"\n aria-label={_getAriaLabel(index, pointIndex)}\n />\n );\n })}\n </g>,\n );\n } else {\n // Render circles for data points close to the mouse pointer only\n singleStackedData.forEach((singlePoint: DPointType, pointIndex: number) => {\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n if (nearestCircleToHighlight === xDataPoint) {\n const circleId = `${_circleId}_${index * _data[0].length + pointIndex}`;\n lineColor = points[index]!.color!;\n const legend = points[index]!.legend;\n graph.push(\n <circle\n key={circleId}\n id={circleId}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={_updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n onFocus={event => _handleFocus(event, index, pointIndex, circleId)}\n onClick={() => _onDataPointClick(points[index]!.data[pointIndex].onDataPointClick!)}\n {...getSecureProps(pointOptions)}\n r={_getCircleRadius(xDataPoint, circleRadius, circleId, legend)}\n />,\n );\n }\n });\n }\n });\n graph.push(\n <line\n id={_verticalLineId}\n key={_verticalLineId}\n x1={lineXValue}\n y1={0}\n x2={lineXValue}\n y2={containerHeight}\n strokeWidth={1}\n strokeDasharray={5.5}\n stroke={lineColor!}\n opacity={0.5}\n visibility={displayOfLine}\n {...getSecureProps(pointLineOptions)}\n />,\n );\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\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(xScale);\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\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 graph;\n }\n\n function _getCircleRadius(xDataPoint: number, circleRadius: number, circleId: string, legend: string): number {\n // Show the circle if no legends are selected or if the point's legend is in the selected legends\n if (!_noLegendHighlighted() && !_legendHighlighted(legend)) {\n return 0;\n }\n\n if (isCircleClicked && nearestCircleToHighlight === xDataPoint) {\n return 1;\n } else if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n return circleRadius;\n } else {\n return 0;\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) {\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() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _addDefaultColors(lineChartData?: LineChartPoints[]): LineChartPoints[] {\n return lineChartData\n ? lineChartData.map((item, index) => {\n let color: string;\n // isInverted property is applicable to v8 themes only\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n\n return { ...item, color };\n })\n : [];\n }\n\n function _handleFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n lineIndex: number,\n pointIndex: number,\n circleId: string,\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\n const { x, y, xAxisCalloutData } = props.data.lineChartData![lineIndex].data[pointIndex];\n const formattedDate = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const modifiedXVal = x instanceof Date ? x.getTime() : x;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = _calloutPoints.find((e: { x: string | number }) => e.x === modifiedXVal);\n // Show details in the callout for the focused point only\n found.values = found.values.filter((e: { y: number }) => e.y === y);\n const filteredValues = _getFilteredLegendValues(found.values);\n\n setPopoverOpen(true);\n setHoverXValue(xAxisCalloutData ? xAxisCalloutData : formattedDate);\n setYValueHover(filteredValues!);\n setStackCalloutProps({ ...found, values: filteredValues });\n setDataPointCalloutProps({ ...found, values: filteredValues });\n setActivePoint(circleId);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getFilteredLegendValues(values: any) {\n return !_noLegendHighlighted()\n ? values.filter((value: { legend: string }) => _legendHighlighted(value.legend))\n : values;\n }\n\n function _handleBlur() {\n setPopoverOpen(false);\n setHoverXValue(undefined);\n setYValueHover([]);\n setStackCalloutProps(undefined);\n setDataPointCalloutProps(undefined);\n setActivePoint('');\n }\n\n function _getAriaLabel(lineIndex: number, pointIndex: number): string {\n const line = props.data.lineChartData![lineIndex];\n const point = line.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 = line.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 (\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props.data.lineChartData.filter((item: { data: string | any[] }) => item.data.length === 0).length === 0\n )\n // if all the data sets have no data\n // filtering all items which have no data and checking if the length of the filtered array is 0\n // which means chart is not empty\n );\n }\n\n function _getChartTitle(): string {\n const { chartTitle, lineChartData } = props.data;\n return (chartTitle ? `${chartTitle}. ` : '') + `Area chart with ${lineChartData?.length || 0} data series. `;\n }\n\n function _shouldFillToZeroY() {\n return props.mode === 'tozeroy' || _containsSecondaryYAxis;\n }\n\n if (!_isChartEmpty()) {\n const { lineChartData } = props.data;\n const points = _addDefaultColors(lineChartData);\n _containsSecondaryYAxis = !!props.secondaryYScaleOptions && points.some(point => point.useSecondaryYScale);\n _createSet = _createDataSet;\n const { colors, opacity, data, calloutPoints } = _createSet(points);\n _calloutPoints = calloutPoints;\n const isXAxisDateType = getXAxisType(points);\n _colors = colors;\n _opacity = opacity;\n _data = data.renderData;\n const legends: JSX.Element = _getLegendData(points);\n\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n const calloutProps: ChartPopoverProps = {\n YValueHover: YValueHover!,\n hoverXValue: hoverXValue!,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n isCalloutForStack: true,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={points}\n chartType={ChartTypes.AreaChart}\n calloutProps={calloutProps}\n legendBars={legends}\n createYAxis={createNumericYAxis}\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n tickParams={tickParams}\n maxOfYVal={data.maxOfYVal}\n getGraphData={_getGraphData}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n getmargins={_getMargins}\n onChartMouseLeave={_handleChartMouseLeave}\n getMinMaxOfYAxis={findNumericMinMaxOfY}\n enableFirstRenderOptimization={props.enablePerfOptimization && _firstRenderOptimization}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop, @typescript-eslint/no-shadow\n children={(props: ChildProps) => {\n _xAxisRectScale = props.xScale;\n const ticks = _xAxisRectScale.ticks();\n const width1 = _xAxisRectScale(ticks[ticks.length - 1]);\n const rectHeight = props.containerHeight! - _margins.top!;\n return (\n <>\n <g>\n <rect\n id={_rectId}\n width={width1}\n height={rectHeight}\n fill={'transparent'}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n />\n </g>\n <g>{_chart}</g>\n </>\n );\n }}\n />\n );\n }\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\nAreaChart.displayName = 'AreaChart';\n"],"names":["React","useAreaChartStyles","max","d3Max","bisector","pointer","select","d3Select","tokens","area","d3Area","stack","d3Stack","curveMonotoneX","d3CurveBasis","line","d3Line","CartesianChart","calloutData","getXAxisType","ChartTypes","XAxisTypes","getTypeOfAxis","tooltipOfAxislabels","getNextColor","getColorFromToken","formatDate","getSecureProps","areArraysEqual","getCurveFactory","find","findNumericMinMaxOfY","createNumericYAxis","domainRangeOfNumericForAreaChart","domainRangeOfDateForAreaLineVerticalBarChart","createStringYAxis","useRtl","useId","Legends","toImage","bisect","d","x","left","InterceptVisibility","AreaChart","forwardRef","props","forwardedRef","_uniqueIdForGraph","_verticalLineId","_circleId","_rectId","_tooltipId","_enableComputationOptimization","_firstRenderOptimization","_emptyChartId","_containsSecondaryYAxis","_calloutPoints","_createSet","_colors","_opacity","_data","_chart","_margins","_xAxisRectScale","_isMultiStackChart","cartesianChartRef","useRef","_legendsRef","_isRTL","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","hoverXValue","setHoverXValue","YValueHover","setYValueHover","lineXValue","setLineXValue","displayOfLine","setDisplayOfLine","isCircleClicked","setIsCircleClicked","nearestCircleToHighlight","setNearestCircleToHighlight","activePoint","setActivePoint","dataPointCalloutProps","setDataPointCalloutProps","stackCalloutProps","setStackCalloutProps","xAxisCalloutAccessibilityData","setXAxisCalloutAccessibilityData","clickPosition","setClickPosition","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","current","prevProps","useImperativeHandle","componentRef","chartContainer","opts","toSVG","classes","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","barWidth","tickValues","domainNRangeValue","NumericAxis","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","_getMargins","_onRectMouseMove","mouseEvent","persist","data","lineChartData","_updatePosition","clientX","clientY","xOffset","invert","document","getElementById","i","d0","d1","pointToHighlight","index","axisType","length","x0","point0","point1","Date","getTime","Math","abs","xAxisCalloutData","formattedDate","useUTC","modifiedXVal","found","element","_nearestCircleToHighlight","filteredValues","_getFilteredLegendValues","values","_onRectMouseOut","newX","newY","threshold","distance","sqrt","pow","_handleChartMouseLeave","_getDataPoints","keys","dataSet","renderPoints","maxOfYVal","_shouldFillToZeroY","forEach","key","currentLayer","push","xVal","dataValues","dp","layer","renderData","endValue","_createDataSet","enablePerfOptimization","allChartPoints","colors","opacity","calloutPoints","singleChartPoint","color","mapOfXvalToListOfDataPoints","dataPoint","xValue","toLocaleString","Object","value","singleDataset","singleDataPoint","keysLength","keyVal","tempArr","valToCheck","filteredChartPoints","filter","point","val","_getCustomizedCallout","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_getGraphData","xAxis","yAxis","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","_drawGraph","_onLegendHover","legend","_onLegendLeave","_getLegendData","actions","singleChartData","checkSimilarLegends","leg","title","hoverAction","onMouseOutAction","legends","enabledWrapLines","enabledLegendsWrapLines","onChange","_onLegendSelectionChange","legendRef","event","currentLegend","canSelectMultipleLegends","slice","_onDataPointClick","func","_getOpacity","_legendHighlighted","_noLegendHighlighted","_getLineOpacity","_updateCircleFillColor","xDataPoint","lineColor","circleId","fillColor","colorNeutralBackground1","xScale","yScalePrimary","_addDefaultColors","pointOptions","pointLineOptions","graph","singleStackedData","yScale","useSecondaryYScale","curveFactory","lineOptions","curve","y0","y1","layerOpacity","Fragment","enableGradient","defs","linearGradient","id","x1","x2","y2","stop","offset","stopColor","path","fill","strokeWidth","stroke","onMouseMove","onMouseOut","onMouseOver","strokeDasharray","strokeDashoffset","strokeLinecap","circle","cx","cy","r","fillOpacity","onFocus","_handleFocus","optimizeLargeData","tabIndex","role","circleRadius","Number","g","clipPath","aria-label","map","singlePoint","pointIndex","onClick","onDataPointClick","onBlur","_handleBlur","_getCircleRadius","_getAriaLabel","visibility","showXAxisLablesTooltip","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","_getHighlightedLegend","includes","item","lineIndex","targetRect","target","getBoundingClientRect","top","height","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","_getChartTitle","chartTitle","mode","secondaryYScaleOptions","some","isXAxisDateType","tickParams","tickFormat","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCalloutForStack","legendBars","createYAxis","getGraphData","getDomainNRangeValues","getmargins","onChartMouseLeave","getMinMaxOfYAxis","enableFirstRenderOptimization","children","ticks","width1","rectHeight","rect","div","style","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/AreaChart/AreaChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useAreaChartStyles } from './useAreaChartStyles.styles';\nimport { max as d3Max, bisector } from 'd3-array';\nimport { pointer } from 'd3-selection';\nimport { select as d3Select } from 'd3-selection';\nimport { tokens } from '@fluentui/react-theme';\nimport { area as d3Area, stack as d3Stack, curveMonotoneX as d3CurveBasis, line as d3Line } from 'd3-shape';\nimport {\n AccessibilityProps,\n CartesianChart,\n CustomizedCalloutData,\n AreaChartProps,\n LineChartDataPoint,\n LineChartPoints,\n ChildProps,\n Margins,\n YValueHover,\n ChartPopoverProps,\n Chart,\n ImageExportOptions,\n} from '../../index';\nimport {\n calloutData,\n getXAxisType,\n ChartTypes,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfAxislabels,\n getNextColor,\n getColorFromToken,\n formatDate,\n getSecureProps,\n areArraysEqual,\n getCurveFactory,\n find,\n findNumericMinMaxOfY,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfNumericForAreaChart,\n domainRangeOfDateForAreaLineVerticalBarChart,\n createStringYAxis,\n useRtl,\n YAxisType,\n} from '../../utilities/index';\nimport { useId } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { Legend, LegendContainer, Legends } from '../Legends/index';\nimport { ScaleLinear } from 'd3-scale';\nimport { toImage } from '../../utilities/image-export-utils';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bisect = bisector((d: any) => d.x).left;\n\nenum InterceptVisibility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nexport interface AreaChartAreaPoint {\n xVal: string | number;\n values: AreaChartDataSetPoint;\n}\nexport interface AreaChartDataSetPoint {\n [key: string]: number | string | number[];\n}\nexport interface DPointType {\n values: { 0: number; 1: number; data: {} };\n xVal: number | Date;\n}\nexport interface MapXToDataSet {\n [key: string]: LineChartDataPoint[];\n [key: number]: LineChartDataPoint[];\n}\n\n//by default d3-shape 3.2.0 limits the< path> data point precision to 3 digits(d3/d3-path#10)\n\nexport const AreaChart: React.FunctionComponent<AreaChartProps> = React.forwardRef<HTMLDivElement, AreaChartProps>(\n (props, forwardedRef) => {\n const _uniqueIdForGraph: string = useId('areaChart_');\n const _verticalLineId: string = useId('verticalLine_');\n const _circleId: string = useId('circle');\n const _rectId: string = useId('rectangle');\n const _tooltipId: string = useId('AreaChartTooltipID');\n //enableComputationOptimization is used for optimized code to group data points by x value\n //from O(n^2) to O(n) using a map.\n const _enableComputationOptimization: boolean = true;\n const _firstRenderOptimization: boolean = true;\n const _emptyChartId: string = useId('_AreaChart_empty');\n let _containsSecondaryYAxis = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _calloutPoints: any;\n let _createSet: (data: LineChartPoints[]) => {\n colors: string[];\n opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutPoints: any;\n };\n let _colors: string[];\n let _opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _data: any;\n let _chart: JSXElement[];\n let _margins: Margins;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let _xAxisRectScale: any;\n // determines if the given area chart has multiple stacked bar charts\n let _isMultiStackChart: boolean;\n const cartesianChartRef = React.useRef<Chart>(null);\n const _legendsRef = React.useRef<LegendContainer>(null);\n const _isRTL: boolean = useRtl();\n\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [hoverXValue, setHoverXValue] = React.useState<string | number | undefined | null>('');\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const [YValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [lineXValue, setLineXValue] = React.useState<number>(0);\n const [displayOfLine, setDisplayOfLine] = React.useState<InterceptVisibility>(InterceptVisibility.hide);\n const [isCircleClicked, setIsCircleClicked] = React.useState<boolean>(false);\n const [nearestCircleToHighlight, setNearestCircleToHighlight] = React.useState<number | string | Date | null>(null);\n const [activePoint, setActivePoint] = React.useState<string>('');\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<CustomizedCalloutData>();\n const [stackCalloutProps, setStackCalloutProps] = React.useState<CustomizedCalloutData>();\n const [xAxisCalloutAccessibilityData, setXAxisCalloutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<AreaChartProps | 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 toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(cartesianChartRef.current?.chartContainer, _legendsRef.current?.toSVG, _isRTL, opts);\n },\n }),\n [],\n );\n\n const classes = useAreaChartStyles(props);\n\n function _getMinMaxOfYAxis(points: LineChartPoints[], yAxisType: YAxisType, useSecondaryYScale: boolean) {\n return findNumericMinMaxOfY(points, yAxisType, useSecondaryYScale);\n }\n\n function _getDomainNRangeValues(\n points: LineChartPoints[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);\n } else if (xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = domainRangeOfDateForAreaLineVerticalBarChart(\n points,\n margins,\n width,\n isRTL,\n tickValues! as Date[],\n chartType,\n barWidth,\n );\n } else {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n return domainNRangeValue;\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _onRectMouseMove(mouseEvent: React.MouseEvent<SVGRectElement | SVGPathElement | SVGCircleElement>) {\n mouseEvent.persist();\n const { data } = props;\n const { lineChartData } = data;\n _updatePosition(mouseEvent.clientX, mouseEvent.clientY);\n // This will get the value of the X when mouse is on the chart\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\n const xOffset = _xAxisRectScale.invert(pointer(mouseEvent)[0], document.getElementById(_rectId)!);\n const i = bisect(lineChartData![0].data, xOffset);\n const d0 = lineChartData![0].data[i - 1] as LineChartDataPoint;\n const d1 = lineChartData![0].data[i] as LineChartDataPoint;\n let pointToHighlight: string | Date | number | null = null;\n let index: null | number = null;\n const axisType =\n lineChartData![0].data.length > 0 ? (getTypeOfAxis(lineChartData![0].data[0].x, true) as XAxisTypes) : null;\n if (d0 === undefined && d1 !== undefined) {\n pointToHighlight = d1.x;\n index = i;\n } else if (d0 !== undefined && d1 === undefined) {\n pointToHighlight = d0.x;\n index = i - 1;\n } else {\n let x0;\n let point0;\n let point1;\n switch (axisType) {\n case XAxisTypes.DateAxis:\n x0 = new Date(xOffset).getTime();\n point0 = (d0.x as Date).getTime();\n point1 = (d1.x as Date).getTime();\n pointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n case XAxisTypes.NumericAxis:\n x0 = xOffset as number;\n point0 = d0.x as number;\n point1 = d1.x as number;\n pointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n default:\n break;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const { xAxisCalloutData, xAxisCalloutAccessibilityData } = lineChartData![0].data[index as number];\n const formattedDate =\n pointToHighlight instanceof Date ? formatDate(pointToHighlight, props.useUTC) : pointToHighlight;\n const modifiedXVal = pointToHighlight instanceof Date ? pointToHighlight.getTime() : pointToHighlight;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = find(_calloutPoints, (element: { x: string | number }) => {\n return element.x === modifiedXVal;\n });\n // eslint-disable-next-line @typescript-eslint/no-shadow\n const _nearestCircleToHighlight =\n axisType === XAxisTypes.DateAxis ? (pointToHighlight as Date).getTime() : pointToHighlight;\n // if no points need to be called out then don't show vertical line and callout card\n if (found) {\n const filteredValues = _getFilteredLegendValues(found.values);\n setNearestCircleToHighlight(_nearestCircleToHighlight);\n setLineXValue(_xAxisRectScale(pointToHighlight));\n setDisplayOfLine(InterceptVisibility.show);\n setIsCircleClicked(false);\n setStackCalloutProps({ ...found, values: filteredValues });\n setYValueHover(filteredValues);\n setDataPointCalloutProps({ ...found, values: filteredValues });\n setHoverXValue(xAxisCalloutData ? xAxisCalloutData : formattedDate);\n setXAxisCalloutAccessibilityData(xAxisCalloutAccessibilityData);\n setActivePoint('');\n } else {\n setPopoverOpen(false);\n setNearestCircleToHighlight(nearestCircleToHighlight);\n setDisplayOfLine(InterceptVisibility.hide);\n setIsCircleClicked(false);\n }\n }\n /**\n * just cleaning up the state which we have set in the mouse move event\n */\n function _onRectMouseOut() {\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 _handleChartMouseLeave() {\n setPopoverOpen(false);\n setNearestCircleToHighlight(null);\n setLineXValue(0);\n setDisplayOfLine(InterceptVisibility.hide);\n setIsCircleClicked(false);\n setStackCalloutProps(undefined);\n setDataPointCalloutProps(undefined);\n setHoverXValue(undefined);\n setYValueHover([]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getDataPoints(keys: string[], dataSet: any) {\n const renderPoints: Array<AreaChartDataSetPoint[]> = [];\n let maxOfYVal = 0;\n\n if (_shouldFillToZeroY()) {\n keys.forEach((key, index) => {\n const currentLayer: AreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSet.forEach((d: any) => {\n currentLayer.push({\n values: [0, d[key]], // Start from zero for \"tozeroy\" mode\n xVal: d.xVal,\n });\n if (d[key] > maxOfYVal) {\n maxOfYVal = d[key];\n }\n });\n renderPoints.push(currentLayer);\n });\n } else {\n const dataValues = d3Stack().keys(keys)(dataSet);\n maxOfYVal = d3Max(dataValues[dataValues.length - 1], dp => dp[1])!;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataValues.forEach((layer: any) => {\n const currentLayer: AreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.forEach((d: any) => {\n currentLayer.push({\n values: d,\n xVal: d.data.xVal,\n });\n });\n renderPoints.push(currentLayer);\n });\n }\n\n _isMultiStackChart = !!(props.legendProps?.selectedLegends\n ? renderPoints?.length >= 1\n : renderPoints?.length > 1);\n return {\n renderData: renderPoints,\n // The maxOfYVal prop is only required for the primary y-axis. When the data includes\n // a secondary y-axis, the mode defaults to tozeroy, so maxOfYVal should be calculated using\n // only the data points associated with the primary y-axis.\n maxOfYVal: _containsSecondaryYAxis ? findNumericMinMaxOfY(props.data.lineChartData!).endValue : maxOfYVal,\n };\n }\n\n function _createDataSet(points: LineChartPoints[]) {\n if (props.enablePerfOptimization && _enableComputationOptimization) {\n const allChartPoints: LineChartDataPoint[] = [];\n const dataSet: AreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: LineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...(singleChartPoint.data as LineChartDataPoint[]));\n });\n\n const mapOfXvalToListOfDataPoints: MapXToDataSet = {};\n allChartPoints.forEach((dataPoint: LineChartDataPoint) => {\n const xValue = dataPoint.x instanceof Date ? dataPoint.x.toLocaleString() : dataPoint.x;\n // map of x value to the list of data points which share the same x value .\n if (mapOfXvalToListOfDataPoints[xValue]) {\n mapOfXvalToListOfDataPoints[xValue].push(dataPoint);\n } else {\n mapOfXvalToListOfDataPoints[xValue] = [dataPoint];\n }\n });\n\n Object.keys(mapOfXvalToListOfDataPoints).forEach((key: number | string) => {\n const value: LineChartDataPoint[] = mapOfXvalToListOfDataPoints[key];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n value.forEach((singleDataPoint: LineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n });\n\n // get keys from dataset, used to render data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Data used to draw graph\n const data = _getDataPoints(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n data,\n calloutPoints,\n };\n } else {\n const allChartPoints: LineChartDataPoint[] = [];\n const dataSet: AreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: LineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...(singleChartPoint.data as LineChartDataPoint[]));\n });\n\n let tempArr = allChartPoints;\n while (tempArr.length) {\n const valToCheck = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n const filteredChartPoints: LineChartDataPoint[] = tempArr.filter(\n (point: LineChartDataPoint) =>\n (point.x instanceof Date ? point.x.toLocaleString() : point.x) === valToCheck,\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n filteredChartPoints.forEach((singleDataPoint: LineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n // removing compared objects from array\n const val = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n tempArr = tempArr.filter(\n (point: LineChartDataPoint) => (point.x instanceof Date ? point.x.toLocaleString() : point.x) !== val,\n );\n }\n\n // get keys from dataset, used to create stacked data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Data used to draw graph\n const data = _getDataPoints(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n data,\n calloutPoints,\n };\n }\n }\n\n function _getCustomizedCallout() {\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps)\n : null;\n }\n\n function _getGraphData(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xAxis: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxis: any,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) {\n _chart = _drawGraph(containerHeight, xAxis, yAxis, yScaleSecondary, xElement!);\n }\n\n function _onLegendHover(legend: string): void {\n setActiveLegend(legend);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _getLegendData(points: LineChartPoints[]): JSXElement {\n const data = points;\n const actions: Legend[] = [];\n\n data.forEach((singleChartData: LineChartPoints) => {\n const color: string = singleChartData.color!;\n const checkSimilarLegends = actions.filter(\n (leg: Legend) => leg.title === singleChartData.legend && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: singleChartData.legend,\n color,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(singleChartData.legend);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n }\n\n function _onLegendSelectionChange(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(selectedLegends);\n } else {\n setSelectedLegends(selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n function _onDataPointClick(func: (() => void) | undefined) {\n if (func) {\n func();\n }\n setIsCircleClicked(true);\n }\n\n function _getOpacity(legend: string): number {\n if (!_isMultiStackChart) {\n return 0.7;\n } else {\n const opacity = _legendHighlighted(legend) || _noLegendHighlighted() ? 0.7 : 0.1;\n return opacity;\n }\n }\n\n function _getLineOpacity(legend: string): number {\n if (!_isMultiStackChart) {\n return 1;\n } else {\n let opacity = 0.3;\n if (isPopoverOpen) {\n opacity = 1;\n }\n if (!_noLegendHighlighted()) {\n opacity = _legendHighlighted(legend) ? 0 : 0.1;\n }\n return opacity;\n }\n }\n\n function _updateCircleFillColor(xDataPoint: number | Date, lineColor: string, circleId: string): string {\n let fillColor = lineColor;\n if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n if (!isCircleClicked) {\n fillColor = tokens.colorNeutralBackground1;\n }\n }\n\n return fillColor;\n }\n\n function _drawGraph(\n containerHeight: number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n xElement: SVGElement,\n ): JSXElement[] {\n const points = _addDefaultColors(props.data.lineChartData);\n const { pointOptions, pointLineOptions } = props.data;\n\n const graph: JSXElement[] = [];\n let lineColor: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _data.forEach((singleStackedData: Array<any>, index: number) => {\n const yScale = points[index].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n const curveFactory = getCurveFactory(points[index].lineOptions?.curve, d3CurveBasis);\n const area = d3Area()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y0((d: any) => yScale(d.values[0]))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y1((d: any) => yScale(d.values[1]))\n .curve(curveFactory);\n const line = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d.values[1]))\n .curve(curveFactory);\n const layerOpacity = _shouldFillToZeroY() ? 0.8 : _opacity[index];\n graph.push(\n <React.Fragment key={`${index}-graph-${_uniqueIdForGraph}`}>\n {props.enableGradient && (\n <defs>\n <linearGradient id={`gradient_${index}`} x1=\"0%\" x2=\"0%\" y1=\"0%\" y2=\"100%\">\n <stop offset=\"0\" stopColor={_colors[index]} />\n <stop offset=\"100%\" stopColor=\"transparent\" />\n </linearGradient>\n </defs>\n )}\n <path\n id={`${index}-line-${_uniqueIdForGraph}`}\n d={line(singleStackedData)!}\n fill={'transparent'}\n strokeWidth={points[index].lineOptions?.strokeWidth ?? 3}\n stroke={_colors[index]}\n opacity={_getLineOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n strokeDasharray={points[index].lineOptions?.strokeDasharray}\n strokeDashoffset={points[index].lineOptions?.strokeDashoffset}\n strokeLinecap={points[index].lineOptions?.strokeLinecap}\n />\n {singleStackedData.length === 1 ? (\n <circle\n id={`${index}-graph-${_uniqueIdForGraph}`}\n cx={xScale(singleStackedData[0].xVal)}\n cy={yScale(singleStackedData[0].values[1])}\n r={6}\n stroke={_colors[index]}\n strokeWidth={3}\n fill={_colors[index]}\n opacity={layerOpacity}\n fillOpacity={_getOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onFocus={event => _handleFocus(event, index, 0, `${_circleId}_${index}`)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n />\n ) : (\n <path\n id={`${index}-graph-${_uniqueIdForGraph}`}\n d={area(singleStackedData)!}\n fill={props.enableGradient ? `url(#gradient_${index})` : _colors[index]}\n opacity={layerOpacity}\n fillOpacity={_getOpacity(points[index]!.legend)}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n {...(props.optimizeLargeData && {\n tabIndex: _legendHighlighted(points[index]!.legend) || _noLegendHighlighted() ? 0 : undefined,\n role: 'img',\n 'aria-label': `${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`,\n })}\n />\n )}\n </React.Fragment>,\n );\n });\n\n const circleRadius = pointOptions && pointOptions.r ? Number(pointOptions.r) : 8;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _data.forEach((singleStackedData: Array<any>, index: number) => {\n if (points.length === index) {\n return;\n }\n const yScale = points[index].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n if (!props.optimizeLargeData || singleStackedData.length === 1) {\n // Render circles for all data points\n graph.push(\n <g\n key={`${index}-dots-${_uniqueIdForGraph}`}\n clipPath=\"url(#clip)\"\n role=\"region\"\n aria-label={`${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`}\n >\n {singleStackedData.map((singlePoint: DPointType, pointIndex: number) => {\n const circleId = `${_circleId}_${index * _data[0].length + pointIndex}`;\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n lineColor = points[index]!.color!;\n const legend = points[index]!.legend;\n return (\n <circle\n key={circleId}\n id={circleId}\n tabIndex={_legendHighlighted(points[index]!.legend) || _noLegendHighlighted() ? 0 : undefined}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={_updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n onClick={() => _onDataPointClick(points[index]!.data[pointIndex].onDataPointClick!)}\n onFocus={event => _handleFocus(event, index, pointIndex, circleId)}\n onBlur={_handleBlur}\n {...getSecureProps(pointOptions)}\n r={_getCircleRadius(xDataPoint, circleRadius, circleId, legend)}\n role=\"img\"\n aria-label={_getAriaLabel(index, pointIndex)}\n />\n );\n })}\n </g>,\n );\n } else {\n // Render circles for data points close to the mouse pointer only\n singleStackedData.forEach((singlePoint: DPointType, pointIndex: number) => {\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n if (nearestCircleToHighlight === xDataPoint) {\n const circleId = `${_circleId}_${index * _data[0].length + pointIndex}`;\n lineColor = points[index]!.color!;\n const legend = points[index]!.legend;\n graph.push(\n <circle\n key={circleId}\n id={circleId}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={_updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n onFocus={event => _handleFocus(event, index, pointIndex, circleId)}\n onClick={() => _onDataPointClick(points[index]!.data[pointIndex].onDataPointClick!)}\n {...getSecureProps(pointOptions)}\n r={_getCircleRadius(xDataPoint, circleRadius, circleId, legend)}\n />,\n );\n }\n });\n }\n });\n graph.push(\n <line\n id={_verticalLineId}\n key={_verticalLineId}\n x1={lineXValue}\n y1={0}\n x2={lineXValue}\n y2={containerHeight}\n strokeWidth={1}\n strokeDasharray={5.5}\n stroke={lineColor!}\n opacity={0.5}\n visibility={displayOfLine}\n {...getSecureProps(pointLineOptions)}\n />,\n );\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!props.showXAxisLablesTooltip) {\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\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(xScale);\n try {\n // eslint-disable-next-line @nx/workspace-no-restricted-globals\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 graph;\n }\n\n function _getCircleRadius(xDataPoint: number, circleRadius: number, circleId: string, legend: string): number {\n // Show the circle if no legends are selected or if the point's legend is in the selected legends\n if (!_noLegendHighlighted() && !_legendHighlighted(legend)) {\n return 0;\n }\n\n if (isCircleClicked && nearestCircleToHighlight === xDataPoint) {\n return 1;\n } else if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n return circleRadius;\n } else {\n return 0;\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) {\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() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _addDefaultColors(lineChartData?: LineChartPoints[]): LineChartPoints[] {\n return lineChartData\n ? lineChartData.map((item, index) => {\n let color: string;\n // isInverted property is applicable to v8 themes only\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0);\n } else {\n color = getColorFromToken(item.color);\n }\n\n return { ...item, color };\n })\n : [];\n }\n\n function _handleFocus(\n event: React.FocusEvent<SVGCircleElement, Element>,\n lineIndex: number,\n pointIndex: number,\n circleId: string,\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\n const { x, y, xAxisCalloutData } = props.data.lineChartData![lineIndex].data[pointIndex];\n const formattedDate = x instanceof Date ? formatDate(x, props.useUTC) : x;\n const modifiedXVal = x instanceof Date ? x.getTime() : x;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = _calloutPoints.find((e: { x: string | number }) => e.x === modifiedXVal);\n // Show details in the callout for the focused point only\n found.values = found.values.filter((e: { y: number }) => e.y === y);\n const filteredValues = _getFilteredLegendValues(found.values);\n\n setPopoverOpen(true);\n setHoverXValue(xAxisCalloutData ? xAxisCalloutData : formattedDate);\n setYValueHover(filteredValues!);\n setStackCalloutProps({ ...found, values: filteredValues });\n setDataPointCalloutProps({ ...found, values: filteredValues });\n setActivePoint(circleId);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _getFilteredLegendValues(values: any) {\n return !_noLegendHighlighted()\n ? values.filter((value: { legend: string }) => _legendHighlighted(value.legend))\n : values;\n }\n\n function _handleBlur() {\n setPopoverOpen(false);\n setHoverXValue(undefined);\n setYValueHover([]);\n setStackCalloutProps(undefined);\n setDataPointCalloutProps(undefined);\n setActivePoint('');\n }\n\n function _getAriaLabel(lineIndex: number, pointIndex: number): string {\n const line = props.data.lineChartData![lineIndex];\n const point = line.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 = line.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 (\n props.data &&\n props.data.lineChartData &&\n props.data.lineChartData.length > 0 &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props.data.lineChartData.filter((item: { data: string | any[] }) => item.data.length === 0).length === 0\n )\n // if all the data sets have no data\n // filtering all items which have no data and checking if the length of the filtered array is 0\n // which means chart is not empty\n );\n }\n\n function _getChartTitle(): string {\n const { chartTitle, lineChartData } = props.data;\n return (chartTitle ? `${chartTitle}. ` : '') + `Area chart with ${lineChartData?.length || 0} data series. `;\n }\n\n function _shouldFillToZeroY() {\n return props.mode === 'tozeroy' || _containsSecondaryYAxis;\n }\n\n if (!_isChartEmpty()) {\n const { lineChartData } = props.data;\n const points = _addDefaultColors(lineChartData);\n _containsSecondaryYAxis = !!props.secondaryYScaleOptions && points.some(point => point.useSecondaryYScale);\n _createSet = _createDataSet;\n const { colors, opacity, data, calloutPoints } = _createSet(points);\n _calloutPoints = calloutPoints;\n const isXAxisDateType = getXAxisType(points);\n _colors = colors;\n _opacity = opacity;\n _data = data.renderData;\n const legends: JSXElement = _getLegendData(points);\n\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n\n const calloutProps: ChartPopoverProps = {\n YValueHover: YValueHover!,\n hoverXValue: hoverXValue!,\n xAxisCalloutAccessibilityData,\n ...props.calloutProps,\n clickPosition,\n isPopoverOpen,\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n isCalloutForStack: true,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={points}\n chartType={ChartTypes.AreaChart}\n calloutProps={calloutProps}\n legendBars={legends}\n createYAxis={createNumericYAxis}\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n tickParams={tickParams}\n maxOfYVal={data.maxOfYVal}\n getGraphData={_getGraphData}\n getDomainNRangeValues={_getDomainNRangeValues}\n createStringYAxis={createStringYAxis}\n getmargins={_getMargins}\n onChartMouseLeave={_handleChartMouseLeave}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n enableFirstRenderOptimization={props.enablePerfOptimization && _firstRenderOptimization}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop, @typescript-eslint/no-shadow\n children={(props: ChildProps) => {\n _xAxisRectScale = props.xScale;\n const ticks = _xAxisRectScale.ticks();\n const width1 = _xAxisRectScale(ticks[ticks.length - 1]);\n const rectHeight = props.containerHeight! - _margins.top!;\n return (\n <>\n <g>\n <rect\n id={_rectId}\n width={width1}\n height={rectHeight}\n fill={'transparent'}\n onMouseMove={event => _onRectMouseMove(event)}\n onMouseOut={_onRectMouseOut}\n onMouseOver={event => _onRectMouseMove(event)}\n />\n </g>\n <g>{_chart}</g>\n </>\n );\n }}\n />\n );\n }\n return (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n },\n);\nAreaChart.displayName = 'AreaChart';\n"],"names":["React","useAreaChartStyles","max","d3Max","bisector","pointer","select","d3Select","tokens","area","d3Area","stack","d3Stack","curveMonotoneX","d3CurveBasis","line","d3Line","CartesianChart","calloutData","getXAxisType","ChartTypes","XAxisTypes","getTypeOfAxis","tooltipOfAxislabels","getNextColor","getColorFromToken","formatDate","getSecureProps","areArraysEqual","getCurveFactory","find","findNumericMinMaxOfY","createNumericYAxis","domainRangeOfNumericForAreaChart","domainRangeOfDateForAreaLineVerticalBarChart","createStringYAxis","useRtl","useId","Legends","toImage","bisect","d","x","left","InterceptVisibility","AreaChart","forwardRef","props","forwardedRef","_uniqueIdForGraph","_verticalLineId","_circleId","_rectId","_tooltipId","_enableComputationOptimization","_firstRenderOptimization","_emptyChartId","_containsSecondaryYAxis","_calloutPoints","_createSet","_colors","_opacity","_data","_chart","_margins","_xAxisRectScale","_isMultiStackChart","cartesianChartRef","useRef","_legendsRef","_isRTL","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","hoverXValue","setHoverXValue","YValueHover","setYValueHover","lineXValue","setLineXValue","displayOfLine","setDisplayOfLine","isCircleClicked","setIsCircleClicked","nearestCircleToHighlight","setNearestCircleToHighlight","activePoint","setActivePoint","dataPointCalloutProps","setDataPointCalloutProps","stackCalloutProps","setStackCalloutProps","xAxisCalloutAccessibilityData","setXAxisCalloutAccessibilityData","clickPosition","setClickPosition","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","current","prevProps","useImperativeHandle","componentRef","chartContainer","opts","toSVG","classes","_getMinMaxOfYAxis","points","yAxisType","useSecondaryYScale","_getDomainNRangeValues","margins","width","chartType","isRTL","xAxisType","barWidth","tickValues","domainNRangeValue","NumericAxis","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","_getMargins","_onRectMouseMove","mouseEvent","persist","data","lineChartData","_updatePosition","clientX","clientY","xOffset","invert","document","getElementById","i","d0","d1","pointToHighlight","index","axisType","length","x0","point0","point1","Date","getTime","Math","abs","xAxisCalloutData","formattedDate","useUTC","modifiedXVal","found","element","_nearestCircleToHighlight","filteredValues","_getFilteredLegendValues","values","_onRectMouseOut","newX","newY","threshold","distance","sqrt","pow","_handleChartMouseLeave","_getDataPoints","keys","dataSet","renderPoints","maxOfYVal","_shouldFillToZeroY","forEach","key","currentLayer","push","xVal","dataValues","dp","layer","renderData","endValue","_createDataSet","enablePerfOptimization","allChartPoints","colors","opacity","calloutPoints","singleChartPoint","color","mapOfXvalToListOfDataPoints","dataPoint","xValue","toLocaleString","Object","value","singleDataset","singleDataPoint","keysLength","keyVal","tempArr","valToCheck","filteredChartPoints","filter","point","val","_getCustomizedCallout","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_getGraphData","xAxis","yAxis","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","_drawGraph","_onLegendHover","legend","_onLegendLeave","_getLegendData","actions","singleChartData","checkSimilarLegends","leg","title","hoverAction","onMouseOutAction","legends","enabledWrapLines","enabledLegendsWrapLines","onChange","_onLegendSelectionChange","legendRef","event","currentLegend","canSelectMultipleLegends","slice","_onDataPointClick","func","_getOpacity","_legendHighlighted","_noLegendHighlighted","_getLineOpacity","_updateCircleFillColor","xDataPoint","lineColor","circleId","fillColor","colorNeutralBackground1","xScale","yScalePrimary","_addDefaultColors","pointOptions","pointLineOptions","graph","singleStackedData","yScale","curveFactory","lineOptions","curve","y0","y1","layerOpacity","Fragment","enableGradient","defs","linearGradient","id","x1","x2","y2","stop","offset","stopColor","path","fill","strokeWidth","stroke","onMouseMove","onMouseOut","onMouseOver","strokeDasharray","strokeDashoffset","strokeLinecap","circle","cx","cy","r","fillOpacity","onFocus","_handleFocus","optimizeLargeData","tabIndex","role","circleRadius","Number","g","clipPath","aria-label","map","singlePoint","pointIndex","onClick","onDataPointClick","onBlur","_handleBlur","_getCircleRadius","_getAriaLabel","visibility","showXAxisLablesTooltip","remove","e","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","axis","_getHighlightedLegend","includes","item","lineIndex","targetRect","target","getBoundingClientRect","top","height","yValue","yAxisCalloutData","callOutAccessibilityData","ariaLabel","_isChartEmpty","_getChartTitle","chartTitle","mode","secondaryYScaleOptions","some","isXAxisDateType","tickParams","tickFormat","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","isCalloutForStack","legendBars","createYAxis","getGraphData","getDomainNRangeValues","getmargins","onChartMouseLeave","getMinMaxOfYAxis","enableFirstRenderOptimization","children","ticks","width1","rectHeight","rect","div","style","displayName"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useAreaChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const areaChartClassNames = {\n tooltip: 'fui-ac__tooltip',\n root: '',\n xAxis: '',\n yAxis: '',\n legendContainer: '',\n hover: '',\n descriptionMessage: '',\n axisTitle: '',\n chartTitle: '',\n opacityChangeOnHover: '',\n shapeStyles: '',\n chartWrapper: '',\n svgTooltip: '',\n chart: ''\n};\nconst useStyles = makeStyles({\n tooltip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n backgroundColor: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none',\n color: tokens.colorNeutralForeground1\n }\n});\n/**\n * Apply styling to the AreaChart slots based on the state\n */ export const useAreaChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(areaChartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ )\n };\n};\n"],"names":["__styles","mergeClasses","shorthands","tokens","typographyStyles","areaChartClassNames","tooltip","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","useStyles","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","Beiy3e4","z8tnut","z189sj","Byoj8tv","uwmqm3","qhf8xq","fsow6f","Bhzewxz","De3pzq","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","sj55zd","d","p","useAreaChartStyles","props","baseStyles"],"mappings":";;;;;;;;;;;IAEaK,mBAAmB;;;
|
|
1
|
+
{"version":3,"sources":["useAreaChartStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\nexport const areaChartClassNames = {\n tooltip: 'fui-ac__tooltip',\n root: '',\n xAxis: '',\n yAxis: '',\n legendContainer: '',\n hover: '',\n descriptionMessage: '',\n axisTitle: '',\n chartTitle: '',\n opacityChangeOnHover: '',\n shapeStyles: '',\n chartWrapper: '',\n svgTooltip: '',\n chart: '',\n axisAnnotation: ''\n};\nconst useStyles = makeStyles({\n tooltip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n backgroundColor: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none',\n color: tokens.colorNeutralForeground1\n }\n});\n/**\n * Apply styling to the AreaChart slots based on the state\n */ export const useAreaChartStyles = (props)=>{\n const baseStyles = useStyles();\n return {\n tooltip: mergeClasses(areaChartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ )\n };\n};\n"],"names":["__styles","mergeClasses","shorthands","tokens","typographyStyles","areaChartClassNames","tooltip","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","axisAnnotation","useStyles","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","Beiy3e4","z8tnut","z189sj","Byoj8tv","uwmqm3","qhf8xq","fsow6f","Bhzewxz","De3pzq","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","sj55zd","d","p","useAreaChartStyles","props","baseStyles"],"mappings":";;;;;;;;;;;IAEaK,mBAAmB;;;sBAkCG;eAAlBwC;;;uBApCoC,gBAAgB;AAE9D,4BAA4B;IAC/BvC,OAAO,EAAE,iBAAiB;IAC1BC,IAAI,EAAE,EAAE;IACRC,KAAK,EAAE,EAAE;IACTC,KAAK,EAAE,EAAE;IACTC,eAAe,EAAE,EAAE;IACnBC,KAAK,EAAE,EAAE;IACTC,kBAAkB,EAAE,EAAE;IACtBC,SAAS,EAAE,EAAE;IACbC,UAAU,EAAE,EAAE;IACdC,oBAAoB,EAAE,EAAE;IACxBC,WAAW,EAAE,EAAE;IACfC,YAAY,EAAE,EAAE;IAChBC,UAAU,EAAE,EAAE;IACdC,KAAK,EAAE,EAAE;IACTC,cAAc,EAAE;AACpB,CAAC;AACD,MAAMC,SAAS,GAAA,WAAA,OAAGrB,eAAA,EAAA;IAAAM,OAAA,EAAA;QAAAgB,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,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,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;QAAAC,OAAA,EAAA;QAAAC,MAAA,EAAA;IAAA;AAAA,GAAA;IAAAC,CAAA,EAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;QAAA;YAAA;YAAA;gBAAAC,CAAA,EAAA,CAAA;YAAA;SAAA;QAAA;QAAA;KAAA;AAAA,CAcjB,CAAC;AAGS,4BAA4BE,KAAK,IAAG;IAC3C,MAAMC,UAAU,GAAG1B,SAAS,CAAC,CAAC;IAC9B,OAAO;QACHf,OAAO,MAAEL,mBAAY,EAACI,mBAAmB,CAACC,OAAO,EAAEyC,UAAU,CAACzC,OAAO,CAAC,uBAAA,EAA0B;IACpG,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AreaChart/useAreaChartStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { AreaChartProps, AreaChartStyles } from './index';\nimport { SlotClassNames } from '@fluentui/react-utilities';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n\nexport const areaChartClassNames: SlotClassNames<AreaChartStyles> = {\n tooltip: 'fui-ac__tooltip',\n root: '',\n xAxis: '',\n yAxis: '',\n legendContainer: '',\n hover: '',\n descriptionMessage: '',\n axisTitle: '',\n chartTitle: '',\n opacityChangeOnHover: '',\n shapeStyles: '',\n chartWrapper: '',\n svgTooltip: '',\n chart: '',\n};\n\nconst useStyles = makeStyles({\n tooltip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n backgroundColor: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none',\n color: tokens.colorNeutralForeground1,\n },\n});\n\n/**\n * Apply styling to the AreaChart slots based on the state\n */\nexport const useAreaChartStyles = (props: AreaChartProps): AreaChartStyles => {\n const baseStyles = useStyles();\n\n return {\n tooltip: mergeClasses(areaChartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/),\n };\n};\n"],"names":["makeStyles","mergeClasses","shorthands","tokens","typographyStyles","areaChartClassNames","tooltip","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","useStyles","body1","display","flexDirection","padding","spacingHorizontalS","position","textAlign","top","spacingVerticalNone","backgroundColor","colorNeutralBackground1","borderRadius","borderRadiusSmall","pointerEvents","color","colorNeutralForeground1","useAreaChartStyles","props","baseStyles"],"mappings":";;;;;;;;;;;IAKaK,mBAAAA;;;
|
|
1
|
+
{"version":3,"sources":["../src/components/AreaChart/useAreaChartStyles.styles.ts"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { AreaChartProps, AreaChartStyles } from './index';\nimport { SlotClassNames } from '@fluentui/react-utilities';\nimport { tokens, typographyStyles } from '@fluentui/react-theme';\n\nexport const areaChartClassNames: SlotClassNames<AreaChartStyles> = {\n tooltip: 'fui-ac__tooltip',\n root: '',\n xAxis: '',\n yAxis: '',\n legendContainer: '',\n hover: '',\n descriptionMessage: '',\n axisTitle: '',\n chartTitle: '',\n opacityChangeOnHover: '',\n shapeStyles: '',\n chartWrapper: '',\n svgTooltip: '',\n chart: '',\n axisAnnotation: '',\n};\n\nconst useStyles = makeStyles({\n tooltip: {\n ...typographyStyles.body1,\n display: 'flex',\n flexDirection: 'column',\n ...shorthands.padding(tokens.spacingHorizontalS),\n position: 'absolute',\n textAlign: 'center',\n top: tokens.spacingVerticalNone,\n backgroundColor: tokens.colorNeutralBackground1,\n borderRadius: tokens.borderRadiusSmall,\n pointerEvents: 'none',\n color: tokens.colorNeutralForeground1,\n },\n});\n\n/**\n * Apply styling to the AreaChart slots based on the state\n */\nexport const useAreaChartStyles = (props: AreaChartProps): AreaChartStyles => {\n const baseStyles = useStyles();\n\n return {\n tooltip: mergeClasses(areaChartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/),\n };\n};\n"],"names":["makeStyles","mergeClasses","shorthands","tokens","typographyStyles","areaChartClassNames","tooltip","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","opacityChangeOnHover","shapeStyles","chartWrapper","svgTooltip","chart","axisAnnotation","useStyles","body1","display","flexDirection","padding","spacingHorizontalS","position","textAlign","top","spacingVerticalNone","backgroundColor","colorNeutralBackground1","borderRadius","borderRadiusSmall","pointerEvents","color","colorNeutralForeground1","useAreaChartStyles","props","baseStyles"],"mappings":";;;;;;;;;;;IAKaK,mBAAAA;;;sBAqCAiC;;;;uBA1CwC,iBAAiB;4BAG7B,wBAAwB;AAE1D,4BAA6D;IAClEhC,SAAS;IACTC,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;IACPC,gBAAgB;AAClB,EAAE;AAEF,MAAMC,gBAAYrB,iBAAAA,EAAW;IAC3BM,SAAS;QACP,GAAGF,4BAAAA,CAAiBkB,KAAK;QACzBC,SAAS;QACTC,eAAe;QACf,GAAGtB,iBAAAA,CAAWuB,OAAO,CAACtB,kBAAAA,CAAOuB,kBAAkB,CAAC;QAChDC,UAAU;QACVC,WAAW;QACXC,KAAK1B,kBAAAA,CAAO2B,mBAAmB;QAC/BC,iBAAiB5B,kBAAAA,CAAO6B,uBAAuB;QAC/CC,cAAc9B,kBAAAA,CAAO+B,iBAAiB;QACtCC,eAAe;QACfC,OAAOjC,kBAAAA,CAAOkC,uBAAuB;IACvC;AACF;AAKO,MAAMC,qBAAqB,CAACC;IACjC,MAAMC,aAAanB;IAEnB,OAAO;QACLf,aAASL,mBAAAA,EAAaI,oBAAoBC,OAAO,EAAEkC,WAAWlC,OAAO,CAAC,uBAAuB;IAC/F;AACF,EAAE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ChartTable", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ChartTable;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
12
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
13
|
+
const _useChartTableStylesstyles = require("./useChartTableStyles.styles");
|
|
14
|
+
const _utilities = require("../../utilities/utilities");
|
|
15
|
+
const _imageexportutils = require("../../utilities/image-export-utils");
|
|
16
|
+
const ChartTable = /*#__PURE__*/ _react.forwardRef((props, forwardedRef)=>{
|
|
17
|
+
const { headers, rows, width, height } = props;
|
|
18
|
+
const _isRTL = (0, _utilities.useRtl)();
|
|
19
|
+
const _rootElem = _react.useRef(null);
|
|
20
|
+
const classes = (0, _useChartTableStylesstyles.useChartTableStyles)(props);
|
|
21
|
+
_react.useImperativeHandle(props.componentRef, ()=>({
|
|
22
|
+
chartContainer: _rootElem.current,
|
|
23
|
+
toImage: (opts)=>{
|
|
24
|
+
return (0, _imageexportutils.toImage)(_rootElem.current, undefined, _isRTL, opts);
|
|
25
|
+
}
|
|
26
|
+
}), []);
|
|
27
|
+
if (!headers || headers.length === 0) {
|
|
28
|
+
return /*#__PURE__*/ _react.createElement("div", null, "No data available");
|
|
29
|
+
}
|
|
30
|
+
return /*#__PURE__*/ _react.createElement("div", {
|
|
31
|
+
ref: (el)=>_rootElem.current = el,
|
|
32
|
+
className: classes.root,
|
|
33
|
+
style: {
|
|
34
|
+
height: height ? `${height}px` : '650px',
|
|
35
|
+
overflow: 'hidden'
|
|
36
|
+
}
|
|
37
|
+
}, /*#__PURE__*/ _react.createElement("svg", {
|
|
38
|
+
width: width !== null && width !== void 0 ? width : '100%',
|
|
39
|
+
height: height !== null && height !== void 0 ? height : '650px'
|
|
40
|
+
}, /*#__PURE__*/ _react.createElement("foreignObject", {
|
|
41
|
+
x: "0",
|
|
42
|
+
y: "0",
|
|
43
|
+
width: "100%",
|
|
44
|
+
height: "100%"
|
|
45
|
+
}, /*#__PURE__*/ _react.createElement("div", {
|
|
46
|
+
style: {
|
|
47
|
+
maxHeight: height ? `${height}px` : '650px',
|
|
48
|
+
overflowY: 'auto',
|
|
49
|
+
overflowX: 'auto'
|
|
50
|
+
}
|
|
51
|
+
}, /*#__PURE__*/ _react.createElement("table", {
|
|
52
|
+
className: classes.table,
|
|
53
|
+
style: {
|
|
54
|
+
width: width ? `${width}px` : '100%',
|
|
55
|
+
height: height ? `${height}px` : '650px'
|
|
56
|
+
}
|
|
57
|
+
}, /*#__PURE__*/ _react.createElement("thead", null, /*#__PURE__*/ _react.createElement("tr", null, headers.map((header, idx)=>/*#__PURE__*/ _react.createElement("th", {
|
|
58
|
+
key: idx,
|
|
59
|
+
className: classes.headerCell,
|
|
60
|
+
style: header === null || header === void 0 ? void 0 : header.style
|
|
61
|
+
}, header.value)))), rows && rows.length > 0 && /*#__PURE__*/ _react.createElement("tbody", null, rows.map((row, rowIdx)=>/*#__PURE__*/ _react.createElement("tr", {
|
|
62
|
+
key: rowIdx
|
|
63
|
+
}, row.map((cell, colIdx)=>/*#__PURE__*/ _react.createElement("td", {
|
|
64
|
+
key: colIdx,
|
|
65
|
+
className: classes.bodyCell,
|
|
66
|
+
style: cell === null || cell === void 0 ? void 0 : cell.style
|
|
67
|
+
}, cell.value))))))))));
|
|
68
|
+
});
|
|
69
|
+
ChartTable.displayName = 'ChartTable';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ChartTable/ChartTable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ChartTableProps } from './ChartTable.types';\nimport { useChartTableStyles } from './useChartTableStyles.styles';\nimport { useRtl } from '../../utilities/utilities';\nimport { ImageExportOptions } from '../../types/index';\nimport { toImage } from '../../utilities/image-export-utils';\n\nexport const ChartTable: React.FunctionComponent<ChartTableProps> = React.forwardRef<HTMLDivElement, ChartTableProps>(\n (props, forwardedRef) => {\n const { headers, rows, width, height } = props;\n const _isRTL: boolean = useRtl();\n const _rootElem = React.useRef<HTMLDivElement | null>(null);\n const classes = useChartTableStyles(props);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: _rootElem.current,\n toImage: (opts?: ImageExportOptions): Promise<string> => {\n return toImage(_rootElem.current, undefined, _isRTL, opts);\n },\n }),\n [],\n );\n\n if (!headers || headers.length === 0) {\n return <div>No data available</div>;\n }\n\n return (\n <div\n ref={el => (_rootElem.current = el)}\n className={classes.root as string}\n style={{ height: height ? `${height}px` : '650px', overflow: 'hidden' }}\n >\n <svg width={width ?? '100%'} height={height ?? '650px'}>\n <foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\n <div\n style={{\n maxHeight: height ? `${height}px` : '650px',\n overflowY: 'auto',\n overflowX: 'auto',\n }}\n >\n <table\n className={classes.table}\n style={{\n width: width ? `${width}px` : '100%',\n height: height ? `${height}px` : '650px',\n }}\n >\n <thead>\n <tr>\n {headers.map((header, idx) => (\n <th key={idx} className={classes.headerCell} style={header?.style}>\n {header.value}\n </th>\n ))}\n </tr>\n </thead>\n {rows && rows.length > 0 && (\n <tbody>\n {rows.map((row, rowIdx) => (\n <tr key={rowIdx}>\n {row.map((cell, colIdx) => (\n <td key={colIdx} className={classes.bodyCell} style={cell?.style}>\n {cell.value}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n )}\n </table>\n </div>\n </foreignObject>\n </svg>\n </div>\n );\n },\n);\n\nChartTable.displayName = 'ChartTable';\n"],"names":["React","useChartTableStyles","useRtl","toImage","ChartTable","forwardRef","props","forwardedRef","headers","rows","width","height","_isRTL","_rootElem","useRef","classes","useImperativeHandle","componentRef","chartContainer","current","opts","undefined","length","div","ref","el","className","root","style","overflow","svg","foreignObject","x","y","maxHeight","overflowY","overflowX","table","thead","tr","map","header","idx","th","key","headerCell","value","tbody","row","rowIdx","cell","colIdx","td","bodyCell","displayName"],"mappings":";;;;+BAOaI;;;;;;;iEAPU,QAAQ;2CAEK,+BAA+B;2BAC5C,4BAA4B;kCAE3B,qCAAqC;AAEtD,mBAAMA,WAAAA,GAAuDJ,OAAMK,UAAU,CAClF,CAACC,OAAOC;IACN,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAGL;IACzC,MAAMM,SAAkBV,qBAAAA;IACxB,MAAMW,YAAYb,OAAMc,MAAM,CAAwB;IACtD,MAAMC,cAAUd,8CAAAA,EAAoBK;IAEpCN,OAAMgB,mBAAmB,CACvBV,MAAMW,YAAY,EAClB,IAAO,CAAA;YACLC,gBAAgBL,UAAUM,OAAO;YACjChB,SAAS,CAACiB;gBACR,WAAOjB,yBAAAA,EAAQU,UAAUM,OAAO,EAAEE,WAAWT,QAAQQ;YACvD;SACF,CAAA,EACA,EAAE;IAGJ,IAAI,CAACZ,WAAWA,QAAQc,MAAM,KAAK,GAAG;QACpC,OAAA,WAAA,GAAO,OAAA,aAAA,CAACC,OAAAA,MAAI;IACd;IAEA,OAAA,WAAA,GACE,OAAA,aAAA,CAACA,OAAAA;QACCC,KAAKC,CAAAA,KAAOZ,UAAUM,OAAO,GAAGM;QAChCC,WAAWX,QAAQY,IAAI;QACvBC,OAAO;YAAEjB,QAAQA,SAAS,GAAGA,OAAO,EAAE,CAAC,GAAG;YAASkB,UAAU;QAAS;qBAEtE,OAAA,aAAA,CAACC,OAAAA;QAAIpB,OAAOA,UAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS;QAAQC,QAAQA,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,SAAU;qBAC7C,OAAA,aAAA,CAACoB,iBAAAA;QAAcC,GAAE;QAAIC,GAAE;QAAIvB,OAAM;QAAOC,QAAO;qBAC7C,OAAA,aAAA,CAACY,OAAAA;QACCK,OAAO;YACLM,WAAWvB,SAAS,GAAGA,OAAO,EAAE,CAAC,GAAG;YACpCwB,WAAW;YACXC,WAAW;QACb;qBAEA,OAAA,aAAA,CAACC,SAAAA;QACCX,WAAWX,QAAQsB,KAAK;QACxBT,OAAO;YACLlB,OAAOA,QAAQ,GAAGA,MAAM,EAAE,CAAC,GAAG;YAC9BC,QAAQA,SAAS,GAAGA,OAAO,EAAE,CAAC,GAAG;QACnC;qBAEA,OAAA,aAAA,CAAC2B,SAAAA,MAAAA,WAAAA,GACC,OAAA,aAAA,CAACC,MAAAA,MACE/B,QAAQgC,GAAG,CAAC,CAACC,QAAQC,MAAAA,WAAAA,GACpB,OAAA,aAAA,CAACC,MAAAA;YAAGC,KAAKF;YAAKhB,WAAWX,QAAQ8B,UAAU;YAAEjB,KAAK,EAAEa,WAAAA,QAAAA,WAAAA,KAAAA,IAAAA,KAAAA,IAAAA,OAAQb,KAAK;WAC9Da,OAAOK,KAAK,MAKpBrC,QAAQA,KAAKa,MAAM,GAAG,KAAA,WAAA,GACrB,OAAA,aAAA,CAACyB,SAAAA,MACEtC,KAAK+B,GAAG,CAAC,CAACQ,KAAKC,SAAAA,WAAAA,GACd,OAAA,aAAA,CAACV,MAAAA;YAAGK,KAAKK;WACND,IAAIR,GAAG,CAAC,CAACU,MAAMC,SAAAA,WAAAA,GACd,OAAA,aAAA,CAACC,MAAAA;gBAAGR,KAAKO;gBAAQzB,WAAWX,QAAQsC,QAAQ;gBAAEzB,KAAK,EAAEsB,SAAAA,QAAAA,SAAAA,KAAAA,IAAAA,KAAAA,IAAAA,KAAMtB,KAAK;eAC7DsB,KAAKJ,KAAK;AAarC,GACA;AAEF1C,WAAWkD,WAAW,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ChartTable/ChartTable.types.ts"],"sourcesContent":["import * as React from 'react';\nimport { Chart } from './index';\n\n/**\n * Chart Table properties\n * {@docCategory ChartTable}\n */\nexport interface ChartTableProps {\n /**\n * 1d or 2d Array of header values.\n */\n headers: { value: string | number | boolean | null; style?: React.CSSProperties }[];\n\n /**\n * Array of rows. Each row corresponds to one data entry under each column.\n */\n rows: { value: string | number | boolean | null; style?: React.CSSProperties }[][];\n\n /**\n * Optional width for the table\n * @default '100%'\n */\n width?: string | number;\n\n /**\n * Optional height for the table\n * @default '650px'\n */\n height?: string | number;\n\n /**\n * Additional class name(s) to apply to the table chart\n */\n className?: string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: ChartTableStyles;\n\n /**\n * Optional callback to access the Chart interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.RefObject<Chart>;\n}\n\n/**\n * Table Chart styles\n * {@docCategory ChartTable}\n */\nexport interface ChartTableStyles {\n root?: string | React.CSSProperties;\n table?: string;\n headerCell?: string;\n bodyCell?: string;\n chart?: string;\n}\n"],"names":["React"],"mappings":";;;;;iEAAuB,QAAQ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
const _export_star = require("@swc/helpers/_/_export_star");
|
|
6
|
+
_export_star._(require("./ChartTable"), exports);
|
|
7
|
+
_export_star._(require("./ChartTable.types"), exports);
|
|
8
|
+
_export_star._(require("../../types/index"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ChartTable/index.ts"],"sourcesContent":["export * from './ChartTable';\nexport * from './ChartTable.types';\nexport * from '../../types/index';\n"],"names":[],"mappings":";;;;;uBAAc,eAAe;uBACf,qBAAqB;uBACrB,oBAAoB"}
|