@fluentui/react-charting 5.19.8 → 5.19.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/CHANGELOG.json +45 -1
  2. package/CHANGELOG.md +11 -2
  3. package/config/tests.js +3 -0
  4. package/dist/react-charting.d.ts +6 -5
  5. package/dist/react-charting.js +1 -1
  6. package/dist/react-charting.min.js +1 -1
  7. package/etc/react-charting.api.md +6 -5
  8. package/lib/components/CommonComponents/CartesianChart.types.d.ts +2 -2
  9. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  10. package/lib/components/DonutChart/Arc/Arc.js +2 -2
  11. package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
  12. package/lib/components/DonutChart/DonutChart.base.d.ts +2 -2
  13. package/lib/components/DonutChart/DonutChart.base.js.map +1 -1
  14. package/lib/components/DonutChart/Pie/Pie.js +3 -5
  15. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  16. package/lib/components/GaugeChart/GaugeChart.base.js +2 -3
  17. package/lib/components/GaugeChart/GaugeChart.base.js.map +1 -1
  18. package/lib/components/HeatMapChart/HeatMapChart.base.js +2 -2
  19. package/lib/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  20. package/lib/components/PieChart/Arc/Arc.js +3 -3
  21. package/lib/components/PieChart/Arc/Arc.js.map +1 -1
  22. package/lib/components/PieChart/Pie/Pie.js +4 -5
  23. package/lib/components/PieChart/Pie/Pie.js.map +1 -1
  24. package/lib/components/SankeyChart/SankeyChart.base.js +3 -4
  25. package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
  26. package/lib/types/IDataPoint.d.ts +3 -3
  27. package/lib/types/IDataPoint.js.map +1 -1
  28. package/lib/utilities/test-data.d.ts +4 -1
  29. package/lib/utilities/test-data.js +78 -0
  30. package/lib/utilities/test-data.js.map +1 -1
  31. package/lib/utilities/utilities.d.ts +2 -2
  32. package/lib/utilities/utilities.js +4 -4
  33. package/lib/utilities/utilities.js.map +1 -1
  34. package/lib/version.js +1 -1
  35. package/lib/version.js.map +1 -1
  36. package/lib-amd/components/CommonComponents/CartesianChart.types.d.ts +2 -2
  37. package/lib-amd/components/CommonComponents/CartesianChart.types.js.map +1 -1
  38. package/lib-amd/components/DonutChart/Arc/Arc.js +2 -2
  39. package/lib-amd/components/DonutChart/Arc/Arc.js.map +1 -1
  40. package/lib-amd/components/DonutChart/DonutChart.base.d.ts +2 -2
  41. package/lib-amd/components/DonutChart/DonutChart.base.js.map +1 -1
  42. package/lib-amd/components/DonutChart/Pie/Pie.js +3 -5
  43. package/lib-amd/components/DonutChart/Pie/Pie.js.map +1 -1
  44. package/lib-amd/components/GaugeChart/GaugeChart.base.js +2 -3
  45. package/lib-amd/components/GaugeChart/GaugeChart.base.js.map +1 -1
  46. package/lib-amd/components/HeatMapChart/HeatMapChart.base.js +2 -2
  47. package/lib-amd/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  48. package/lib-amd/components/PieChart/Arc/Arc.js +3 -3
  49. package/lib-amd/components/PieChart/Arc/Arc.js.map +1 -1
  50. package/lib-amd/components/PieChart/Pie/Pie.js +3 -4
  51. package/lib-amd/components/PieChart/Pie/Pie.js.map +1 -1
  52. package/lib-amd/components/SankeyChart/SankeyChart.base.js +3 -4
  53. package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
  54. package/lib-amd/types/IDataPoint.d.ts +3 -3
  55. package/lib-amd/types/IDataPoint.js.map +1 -1
  56. package/lib-amd/utilities/test-data.d.ts +4 -1
  57. package/lib-amd/utilities/test-data.js +79 -1
  58. package/lib-amd/utilities/test-data.js.map +1 -1
  59. package/lib-amd/utilities/utilities.d.ts +2 -2
  60. package/lib-amd/utilities/utilities.js +4 -4
  61. package/lib-amd/utilities/utilities.js.map +1 -1
  62. package/lib-amd/version.js +1 -1
  63. package/lib-amd/version.js.map +1 -1
  64. package/lib-commonjs/components/CommonComponents/CartesianChart.types.d.ts +2 -2
  65. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  66. package/lib-commonjs/components/DonutChart/Arc/Arc.js +2 -2
  67. package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
  68. package/lib-commonjs/components/DonutChart/DonutChart.base.d.ts +2 -2
  69. package/lib-commonjs/components/DonutChart/DonutChart.base.js.map +1 -1
  70. package/lib-commonjs/components/DonutChart/Pie/Pie.js +3 -5
  71. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  72. package/lib-commonjs/components/GaugeChart/GaugeChart.base.js +2 -3
  73. package/lib-commonjs/components/GaugeChart/GaugeChart.base.js.map +1 -1
  74. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js +2 -2
  75. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  76. package/lib-commonjs/components/PieChart/Arc/Arc.js +3 -3
  77. package/lib-commonjs/components/PieChart/Arc/Arc.js.map +1 -1
  78. package/lib-commonjs/components/PieChart/Pie/Pie.js +4 -5
  79. package/lib-commonjs/components/PieChart/Pie/Pie.js.map +1 -1
  80. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +3 -4
  81. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
  82. package/lib-commonjs/types/IDataPoint.d.ts +3 -3
  83. package/lib-commonjs/types/IDataPoint.js.map +1 -1
  84. package/lib-commonjs/utilities/test-data.d.ts +4 -1
  85. package/lib-commonjs/utilities/test-data.js +79 -1
  86. package/lib-commonjs/utilities/test-data.js.map +1 -1
  87. package/lib-commonjs/utilities/utilities.d.ts +2 -2
  88. package/lib-commonjs/utilities/utilities.js +4 -4
  89. package/lib-commonjs/utilities/utilities.js.map +1 -1
  90. package/lib-commonjs/version.js +1 -1
  91. package/lib-commonjs/version.js.map +1 -1
  92. package/package.json +1 -1
  93. package/src/components/CommonComponents/CartesianChart.types.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"../src/","sources":["utilities/utilities.ts"],"names":[],"mappings":"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","sourcesContent":["import { axisRight as d3AxisRight, axisBottom as d3AxisBottom, axisLeft as d3AxisLeft, Axis as D3Axis } from 'd3-axis';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { scaleLinear as d3ScaleLinear, scaleTime as d3ScaleTime, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { select as d3Select, event as d3Event, selectAll as d3SelectAll } from 'd3-selection';\nimport { format as d3Format } from 'd3-format';\nimport * as d3TimeFormat from 'd3-time-format';\nimport {\n timeSecond as d3TimeSecond,\n timeMinute as d3TimeMinute,\n timeHour as d3TimeHour,\n timeDay as d3TimeDay,\n timeMonth as d3TimeMonth,\n timeWeek as d3TimeWeek,\n timeYear as d3TimeYear,\n} from 'd3-time';\nimport {\n IAccessibilityProps,\n IEventsAnnotationProps,\n ILineChartPoints,\n ILineChartDataPoint,\n IDataPoint,\n IVerticalBarChartDataPoint,\n IHorizontalBarChartWithAxisDataPoint,\n} from '../index';\nimport { formatPrefix as d3FormatPrefix } from 'd3-format';\n\nexport type NumericAxis = D3Axis<number | { valueOf(): number }>;\nexport type StringAxis = D3Axis<string>;\n\nexport enum ChartTypes {\n AreaChart,\n LineChart,\n VerticalBarChart,\n VerticalStackedBarChart,\n GroupedVerticalBarChart,\n HeatMapChart,\n HorizontalBarChartWithAxis,\n}\n\nexport enum XAxisTypes {\n NumericAxis,\n DateAxis,\n StringAxis,\n}\n\nexport enum YAxisType {\n NumericAxis,\n DateAxis,\n StringAxis,\n}\n\nexport interface IWrapLabelProps {\n node: SVGElement | null;\n xAxis: NumericAxis | StringAxis;\n noOfCharsToTruncate: number;\n showXAxisLablesTooltip: boolean;\n}\n\nexport interface IRotateLabelProps {\n node: SVGElement | null;\n xAxis: NumericAxis | StringAxis;\n}\n\nexport interface IAxisData {\n yAxisDomainValues: number[];\n}\n\nexport interface IMargins {\n /**\n * left margin for the chart.\n * @default 40\n */\n left?: number;\n /**\n * Right margin for the chart.\n * @default 20\n */\n right?: number;\n /**\n * Top margin for the chart.\n * @default 20\n */\n top?: number;\n /**\n * Bottom margin for the chart.\n * @default 35\n */\n bottom?: number;\n}\n\nexport interface IDomainNRange {\n dStartValue: number | Date;\n dEndValue: number | Date;\n rStartValue: number;\n rEndValue: number;\n}\n\nexport interface IXAxisParams {\n domainNRangeValues: IDomainNRange;\n xAxisElement?: SVGElement | null;\n xAxisCount?: number;\n showRoundOffXTickValues?: boolean;\n xAxistickSize?: number;\n tickPadding?: number;\n xAxisPadding?: number;\n xAxisInnerPadding?: number;\n xAxisOuterPadding?: number;\n margins: IMargins;\n containerHeight: number;\n}\nexport interface ITickParams {\n tickValues?: Date[] | number[];\n tickFormat?: string;\n}\n\nexport interface IYAxisParams {\n yMinMaxValues?: {\n startValue: number;\n endValue: number;\n };\n maxOfYVal?: number;\n margins: IMargins;\n containerWidth: number;\n containerHeight: number;\n yAxisElement?: SVGElement | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxisTickFormat?: any;\n yAxisTickCount: number;\n yMaxValue?: number;\n yMinValue?: number;\n tickPadding?: number;\n eventAnnotationProps?: IEventsAnnotationProps;\n eventLabelHeight?: number;\n yAxisPadding?: number;\n}\n\n/**\n * Create Numeric X axis\n * @export\n * @param {IXAxisParams} xAxisParams\n */\nexport function createNumericXAxis(xAxisParams: IXAxisParams, chartType: ChartTypes, culture?: string) {\n const {\n domainNRangeValues,\n showRoundOffXTickValues = false,\n xAxistickSize = 6,\n tickPadding = 10,\n xAxisCount = 6,\n xAxisElement,\n } = xAxisParams;\n const xAxisScale = d3ScaleLinear()\n .domain([domainNRangeValues.dStartValue, domainNRangeValues.dEndValue])\n .range([domainNRangeValues.rStartValue, domainNRangeValues.rEndValue]);\n showRoundOffXTickValues && xAxisScale.nice();\n\n const xAxis = d3AxisBottom(xAxisScale)\n .tickSize(xAxistickSize)\n .tickPadding(tickPadding)\n .ticks(xAxisCount)\n .tickFormat((domainValue, index) => {\n const xAxisValue = typeof domainValue === 'number' ? domainValue : domainValue.valueOf();\n return convertToLocaleString(xAxisValue, culture) as string;\n });\n if (chartType === ChartTypes.HorizontalBarChartWithAxis) {\n xAxis.tickSizeInner(-(xAxisParams.containerHeight - xAxisParams.margins.top!));\n }\n if (xAxisElement) {\n d3Select(xAxisElement).call(xAxis).selectAll('text').attr('aria-hidden', 'true');\n }\n const tickValues = xAxisScale.ticks(xAxisCount).map(xAxis.tickFormat()!);\n return { xScale: xAxisScale, tickValues };\n}\n\nfunction multiFormat(date: Date, locale?: d3TimeFormat.TimeLocaleObject) {\n const timeFormat = locale ? locale.format : d3TimeFormat.timeFormat;\n const formatMillisecond = timeFormat('.%L');\n const formatSecond = timeFormat(':%S');\n const formatMinute = timeFormat('%I:%M');\n const formatHour = timeFormat('%I %p');\n const formatDay = timeFormat('%a %d');\n const formatWeek = timeFormat('%b %d');\n const formatMonth = timeFormat('%B');\n const formatYear = timeFormat('%Y');\n\n return (\n d3TimeSecond(date) < date\n ? formatMillisecond\n : d3TimeMinute(date) < date\n ? formatSecond\n : d3TimeHour(date) < date\n ? formatMinute\n : d3TimeDay(date) < date\n ? formatHour\n : d3TimeMonth(date) < date\n ? d3TimeWeek(date) < date\n ? formatDay\n : formatWeek\n : d3TimeYear(date) < date\n ? formatMonth\n : formatYear\n )(date);\n}\n\n/**\n * Creating Date x axis of the Chart\n * @export\n * @param {IXAxisParams} xAxisParams\n * @param {ITickParams} tickParams\n */\nexport function createDateXAxis(\n xAxisParams: IXAxisParams,\n tickParams: ITickParams,\n culture?: string,\n options?: Intl.DateTimeFormatOptions,\n timeFormatLocale?: d3TimeFormat.TimeLocaleDefinition,\n customDateTimeFormatter?: (dateTime: Date) => string,\n) {\n const { domainNRangeValues, xAxisElement, tickPadding = 6, xAxistickSize = 6, xAxisCount = 6 } = xAxisParams;\n const xAxisScale = d3ScaleTime()\n .domain([domainNRangeValues.dStartValue, domainNRangeValues.dEndValue])\n .range([domainNRangeValues.rStartValue, domainNRangeValues.rEndValue]);\n const xAxis = d3AxisBottom(xAxisScale).tickSize(xAxistickSize).tickPadding(tickPadding).ticks(xAxisCount);\n if (customDateTimeFormatter) {\n xAxis.tickFormat((domainValue: Date, _index: number) => {\n return customDateTimeFormatter(domainValue);\n });\n } else if (culture && options) {\n xAxis.tickFormat((domainValue: Date, _index: number) => {\n return domainValue.toLocaleString(culture, options);\n });\n } else if (timeFormatLocale) {\n const locale: d3TimeFormat.TimeLocaleObject = d3TimeFormat.timeFormatLocale(timeFormatLocale!);\n\n xAxis.tickFormat((domainValue: Date, _index: number) => {\n return multiFormat(domainValue, locale);\n });\n }\n\n tickParams.tickValues ? xAxis.tickValues(tickParams.tickValues) : '';\n if (culture === undefined) {\n tickParams.tickFormat ? xAxis.tickFormat(d3TimeFormat.timeFormat(tickParams.tickFormat)) : '';\n }\n if (xAxisElement) {\n d3Select(xAxisElement).call(xAxis).selectAll('text').attr('aria-hidden', 'true');\n }\n const tickValues = (tickParams.tickValues ?? xAxisScale.ticks(xAxisCount)).map((val, idx) => {\n const tickFormat = xAxis.tickFormat();\n // val is a Date object. So when the tick format is not set, format val as a string to calculate its width\n return tickFormat ? tickFormat(val, idx) : multiFormat(val as Date);\n });\n return { xScale: xAxisScale, tickValues };\n}\n\n/**\n * Create String X axis\n * Currently using for only Vetical stacked bar chart and grouped vertical bar chart\n * @export\n * @param {IXAxisParams} xAxisParams\n * @param {ITickParams} tickParams\n * @param {string[]} dataset\n * @returns\n */\nexport function createStringXAxis(\n xAxisParams: IXAxisParams,\n tickParams: ITickParams,\n dataset: string[],\n culture?: string,\n) {\n const {\n domainNRangeValues,\n xAxisCount = 6,\n xAxistickSize = 6,\n tickPadding = 10,\n xAxisPadding = 0.1,\n xAxisInnerPadding,\n xAxisOuterPadding,\n } = xAxisParams;\n const xAxisScale = d3ScaleBand()\n .domain(dataset!)\n .range([domainNRangeValues.rStartValue, domainNRangeValues.rEndValue])\n .paddingInner(typeof xAxisInnerPadding !== 'undefined' ? xAxisInnerPadding : xAxisPadding)\n .paddingOuter(typeof xAxisOuterPadding !== 'undefined' ? xAxisOuterPadding : xAxisPadding);\n const xAxis = d3AxisBottom(xAxisScale)\n .tickSize(xAxistickSize)\n .tickPadding(tickPadding)\n .ticks(xAxisCount)\n .tickFormat((x: string, index: number) => {\n return convertToLocaleString(dataset[index], culture) as string;\n });\n\n if (xAxisParams.xAxisElement) {\n d3Select(xAxisParams.xAxisElement).call(xAxis).selectAll('text').attr('aria-hidden', 'true');\n }\n const tickValues = dataset.map(xAxis.tickFormat()!);\n return { xScale: xAxisScale, tickValues };\n}\n\n/**\n * This method used for creating data points for the y axis.\n * @export\n * @param {number} maxVal\n * @param {number} minVal\n * @param {number} splitInto\n * @param {boolean} isIntegralDataset\n * @returns {number[]}\n */\nexport function prepareDatapoints(\n maxVal: number,\n minVal: number,\n splitInto: number,\n isIntegralDataset: boolean,\n): number[] {\n const val = isIntegralDataset\n ? Math.ceil((maxVal - minVal) / splitInto)\n : (maxVal - minVal) / splitInto >= 1\n ? Math.ceil((maxVal - minVal) / splitInto)\n : (maxVal - minVal) / splitInto;\n const dataPointsArray: number[] = [minVal, minVal + val];\n while (dataPointsArray[dataPointsArray.length - 1] < maxVal) {\n dataPointsArray.push(dataPointsArray[dataPointsArray.length - 1] + val);\n }\n return dataPointsArray;\n}\n\n/**\n * Creating Numeric Y axis of the chart\n * @export\n * @param {IYAxisParams} yAxisParams\n * @param {boolean} isRtl\n */\nexport function createYAxis(\n yAxisParams: IYAxisParams,\n isRtl: boolean,\n axisData: IAxisData,\n chartType: ChartTypes,\n barWidth: number,\n isIntegralDataset: boolean,\n useSecondaryYScale: boolean = false,\n) {\n switch (chartType) {\n case ChartTypes.HorizontalBarChartWithAxis:\n return createYAxisForHorizontalBarChartWithAxis(yAxisParams, isRtl, axisData, barWidth!);\n default:\n return createYAxisForOtherCharts(yAxisParams, isRtl, axisData, isIntegralDataset, useSecondaryYScale);\n }\n}\n\nexport function createYAxisForHorizontalBarChartWithAxis(\n yAxisParams: IYAxisParams,\n isRtl: boolean,\n axisData: IAxisData,\n barWidth: number,\n) {\n const {\n yMinMaxValues = { startValue: 0, endValue: 0 },\n yAxisElement = null,\n yMaxValue = 0,\n yMinValue = 0,\n containerHeight,\n margins,\n tickPadding = 12,\n maxOfYVal = 0,\n yAxisTickFormat,\n yAxisTickCount = 4,\n } = yAxisParams;\n\n // maxOfYVal coming from only area chart and Grouped vertical bar chart(Calculation done at base file)\n const tempVal = maxOfYVal || yMinMaxValues.endValue;\n const finalYmax = tempVal > yMaxValue ? tempVal : yMaxValue!;\n const finalYmin = yMinMaxValues.startValue < yMinValue ? 0 : yMinValue!;\n const yAxisScale = d3ScaleLinear()\n .domain([finalYmin, finalYmax])\n .range([containerHeight - margins.bottom!, margins.top!]);\n const axis = isRtl ? d3AxisRight(yAxisScale) : d3AxisLeft(yAxisScale);\n const yAxis = axis.tickPadding(tickPadding).ticks(yAxisTickCount);\n yAxisTickFormat ? yAxis.tickFormat(yAxisTickFormat) : yAxis.tickFormat(d3Format('.2~s'));\n yAxisElement ? d3Select(yAxisElement).call(yAxis).selectAll('text').attr('aria-hidden', 'true') : '';\n return yAxisScale;\n}\n\nexport function createYAxisForOtherCharts(\n yAxisParams: IYAxisParams,\n isRtl: boolean,\n axisData: IAxisData,\n isIntegralDataset: boolean,\n useSecondaryYScale: boolean = false,\n) {\n const {\n yMinMaxValues = { startValue: 0, endValue: 0 },\n yAxisElement = null,\n yMaxValue = 0,\n yMinValue = 0,\n containerHeight,\n containerWidth,\n margins,\n tickPadding = 12,\n maxOfYVal = 0,\n yAxisTickFormat,\n yAxisTickCount = 4,\n eventAnnotationProps,\n eventLabelHeight,\n } = yAxisParams;\n\n // maxOfYVal coming from only area chart and Grouped vertical bar chart(Calculation done at base file)\n const tempVal = maxOfYVal || yMinMaxValues.endValue;\n const finalYmax = tempVal > yMaxValue ? tempVal : yMaxValue!;\n const finalYmin = yMinMaxValues.startValue < yMinValue ? 0 : yMinValue!;\n const domainValues = prepareDatapoints(finalYmax, finalYmin, yAxisTickCount, isIntegralDataset);\n const yAxisScale = d3ScaleLinear()\n .domain([finalYmin, domainValues[domainValues.length - 1]])\n .range([containerHeight - margins.bottom!, margins.top! + (eventAnnotationProps! ? eventLabelHeight! : 0)]);\n const axis =\n (!isRtl && useSecondaryYScale) || (isRtl && !useSecondaryYScale) ? d3AxisRight(yAxisScale) : d3AxisLeft(yAxisScale);\n const yAxis = axis\n .tickPadding(tickPadding)\n .tickValues(domainValues)\n .tickSizeInner(-(containerWidth - margins.left! - margins.right!));\n\n yAxisTickFormat ? yAxis.tickFormat(yAxisTickFormat) : yAxis.tickFormat(d3Format('.2~s'));\n yAxisElement ? d3Select(yAxisElement).call(yAxis).selectAll('text').attr('aria-hidden', 'true') : '';\n axisData.yAxisDomainValues = domainValues;\n return yAxisScale;\n}\n\nexport const createStringYAxis = (\n yAxisParams: IYAxisParams,\n dataPoints: string[],\n isRtl: boolean,\n chartType: ChartTypes,\n barWidth: number | undefined,\n culture?: string,\n) => {\n switch (chartType) {\n case ChartTypes.HorizontalBarChartWithAxis:\n return createStringYAxisForHorizontalBarChartWithAxis(yAxisParams, dataPoints, isRtl, barWidth!, culture);\n default:\n return createStringYAxisForOtherCharts(yAxisParams, dataPoints, isRtl);\n }\n};\n\n/**\n * Creating String Y axis of the chart for Horizontal Bar Chart With Axis\n * @param yAxisParams\n * @param dataPoints\n * @param isRtl\n */\nexport const createStringYAxisForHorizontalBarChartWithAxis = (\n yAxisParams: IYAxisParams,\n dataPoints: string[],\n isRtl: boolean,\n barWidth: number,\n culture?: string,\n) => {\n const { containerHeight, tickPadding = 12, margins, yAxisTickFormat, yAxisElement } = yAxisParams;\n\n const yAxisScale = d3ScaleBand()\n .domain(dataPoints)\n .range([containerHeight - margins.bottom! - barWidth / 2, margins.top! + barWidth / 2]);\n const axis = isRtl ? d3AxisRight(yAxisScale) : d3AxisLeft(yAxisScale);\n const yAxis = axis.tickPadding(tickPadding).ticks(dataPoints);\n if (yAxisTickFormat) {\n yAxis.tickFormat(yAxisTickFormat);\n }\n yAxisElement ? d3Select(yAxisElement).call(yAxis).selectAll('text') : '';\n return yAxisScale;\n};\n\n/**\n * Creating String Y axis of the chart for other chart except Horizontal Bar Chart With Axis\n * @param yAxisParams\n * @param dataPoints\n * @param isRtl\n */\nexport const createStringYAxisForOtherCharts = (yAxisParams: IYAxisParams, dataPoints: string[], isRtl: boolean) => {\n const { containerHeight, tickPadding = 12, margins, yAxisTickFormat, yAxisElement, yAxisPadding = 0 } = yAxisParams;\n const yAxisScale = d3ScaleBand()\n .domain(dataPoints)\n .range([containerHeight - margins.bottom!, margins.top!])\n .padding(yAxisPadding);\n const axis = isRtl ? d3AxisRight(yAxisScale) : d3AxisLeft(yAxisScale);\n const yAxis = axis.tickPadding(tickPadding).tickValues(dataPoints).tickSize(0);\n if (yAxisTickFormat) {\n yAxis.tickFormat(yAxisTickFormat);\n }\n yAxisElement ? d3Select(yAxisElement).call(yAxis).selectAll('text') : '';\n return yAxisScale;\n};\n\n/**\n * For area chart and line chart, while displaying stackCallout, Need to form a callout data object.\n * This methos creates an object for those 2 charts.\n * @param values\n */\n\nexport function calloutData(values: (ILineChartPoints & { index?: number })[]) {\n let combinedResult: (ILineChartDataPoint & {\n legend: string;\n color?: string;\n index?: number;\n })[] = [];\n\n values.forEach((line: ILineChartPoints & { index?: number }) => {\n const elements = line.data\n .filter((point: ILineChartDataPoint) => !point.hideCallout)\n .map((point: ILineChartDataPoint) => {\n return { ...point, legend: line.legend, color: line.color, index: line.index };\n });\n combinedResult = combinedResult.concat(elements);\n });\n\n const xValToDataPoints: {\n [key: number]: {\n legend: string;\n y: number;\n color: string;\n xAxisCalloutData?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n callOutAccessibilityData?: IAccessibilityProps;\n index?: number;\n }[];\n [key: string]: {\n legend: string;\n y: number;\n color: string;\n xAxisCalloutData?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n callOutAccessibilityData?: IAccessibilityProps;\n index?: number;\n }[];\n } = {};\n combinedResult.forEach(ele => {\n const xValue = ele.x instanceof Date ? ele.x.getTime() : ele.x;\n if (xValue in xValToDataPoints) {\n xValToDataPoints[xValue].push({\n legend: ele.legend,\n y: ele.y,\n color: ele.color!,\n xAxisCalloutData: ele.xAxisCalloutData,\n yAxisCalloutData: ele.yAxisCalloutData,\n callOutAccessibilityData: ele.callOutAccessibilityData,\n index: ele.index,\n });\n } else {\n xValToDataPoints[xValue] = [\n {\n legend: ele.legend,\n y: ele.y,\n color: ele.color!,\n xAxisCalloutData: ele.xAxisCalloutData,\n yAxisCalloutData: ele.yAxisCalloutData,\n callOutAccessibilityData: ele.callOutAccessibilityData,\n index: ele.index,\n },\n ];\n }\n });\n\n const result = Object.keys(xValToDataPoints).map(xValue => {\n return { x: Number(xValue), values: xValToDataPoints[xValue] };\n });\n return result;\n}\n\nexport function getUnique(\n arr: { x: number | Date | string; values: { legend: string; y: number }[] }[],\n comp: string | number,\n) {\n const unique = arr\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((e: { [x: string]: any }) => e[comp])\n // store the keys of the unique objects\n .map((e: string, i: number, final: string[]) => final.indexOf(e) === i && i)\n // eliminate the dead keys & store unique objects\n .filter((e: number) => arr[e])\n .map((e: number) => arr[e]);\n return unique;\n}\n\n/**\n * This function takes two paramerter\n * 1. an array of strings\n * 2. a string value\n * if the value is not present in the given array then it will return the new\n * array by appending the value to the present arrray.\n *\n * if the value is already present in the given array then it will return the new\n * array by deleteing the value from the the array\n * @param array\n * @param value\n */\nexport function silceOrAppendToArray(array: string[], value: string): string[] {\n const pos = array.indexOf(value);\n if (pos === -1) {\n return [...array, value];\n } else {\n return array.slice(0, pos).concat(array.slice(pos + 1));\n }\n}\n\n/**\n * This method used for wrapping of x axis labels (tick values).\n * It breaks down given text value by space separated and calculates the total height needed to display all the words.\n * That value = removal value. This value needs to be remove from total svg height, svg will shrink and\n * total text will be displayed.\n * @export\n * @param {IWrapLabelProps} wrapLabelProps\n * @returns\n */\nexport function createWrapOfXLabels(wrapLabelProps: IWrapLabelProps) {\n const { node, xAxis, noOfCharsToTruncate, showXAxisLablesTooltip } = wrapLabelProps;\n if (node === null) {\n return;\n }\n const axisNode = d3Select(node).call(xAxis);\n let removeVal = 0;\n const width = 10;\n const arr: number[] = [];\n axisNode.selectAll('.tick text').each(function () {\n const text = d3Select(this);\n const totalWord = text.text();\n const truncatedWord = `${text.text().slice(0, noOfCharsToTruncate)}...`;\n const totalWordLength = text.text().length;\n const words = text.text().split(/\\s+/).reverse();\n arr.push(words.length);\n let word: string = '';\n let line: string[] = [];\n let lineNumber: number = 0;\n const lineHeight = 1.1; // ems\n const y = text.attr('y');\n const dy = parseFloat(text.attr('dy'));\n let tspan = text\n .text(null)\n .append('tspan')\n .attr('x', 0)\n .attr('y', y)\n .attr('id', 'BaseSpan')\n .attr('dy', dy + 'em')\n .attr('data-', totalWord);\n\n if (showXAxisLablesTooltip && totalWordLength > noOfCharsToTruncate) {\n tspan = text\n .append('tspan')\n .attr('id', 'showDots')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', ++lineNumber * lineHeight + dy + 'em')\n .text(truncatedWord);\n } else if (showXAxisLablesTooltip && totalWordLength <= noOfCharsToTruncate) {\n tspan = text\n .append('tspan')\n .attr('id', 'LessLength')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', ++lineNumber * lineHeight + dy + 'em')\n .text(totalWord);\n } else {\n while ((word = words.pop()!)) {\n line.push(word);\n tspan.text(line.join(' '));\n if (tspan.node()!.getComputedTextLength() > width && line.length > 1) {\n line.pop();\n tspan.text(line.join(' '));\n line = [word];\n tspan = text\n .append('tspan')\n .attr('id', 'WordBreakId')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', ++lineNumber * lineHeight + dy + 'em')\n .text(word);\n }\n }\n const maxDigit = Math.max(...arr);\n let maxHeight: number = 12; // intial value to render corretly first time\n axisNode.selectAll('text').each(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const outerHTMLElement = document.getElementById('WordBreakId') as any;\n const BoxCordinates = outerHTMLElement && outerHTMLElement.getBoundingClientRect();\n const boxHeight = BoxCordinates && BoxCordinates.height;\n if (boxHeight > maxHeight) {\n maxHeight = boxHeight;\n }\n });\n // If we take directly maxDigit * maxheight, then it will show more height between x axis tick values and bottom.\n // To avoid this, reducing maxDigit value by removing some digit based on legth of word.\n let removeDigit: number = 4;\n if (maxDigit <= 2) {\n removeDigit = 1;\n } else if (maxDigit > 2 && maxDigit <= 6) {\n removeDigit = 2;\n } else if (maxDigit > 6 && maxDigit <= 9) {\n removeDigit = 3;\n }\n removeVal = (maxDigit - removeDigit) * maxHeight;\n }\n });\n return removeVal > 0 ? removeVal : 0;\n}\n\n/**\n * This method used for wrapping of y axis labels (tick values).\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createYAxisLabels(\n node: SVGElement | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxis: any,\n noOfCharsToTruncate: number,\n truncateLabel: boolean,\n xValue: number,\n isRtl: boolean,\n) {\n if (node === null) {\n return;\n }\n const axisNode = d3Select(node).call(yAxis);\n axisNode.selectAll('.tick text').each(function () {\n const text = d3Select(this);\n const totalWord = text.text();\n const truncatedWord = isRtl\n ? `...${text.text().slice(0, noOfCharsToTruncate)}`\n : `${text.text().slice(0, noOfCharsToTruncate)}...`;\n const totalWordLength = text.text().length;\n const padding = truncateLabel ? 1.5 : 1; // ems\n const y = text.attr('y');\n const x = text.attr('x');\n const dy = parseFloat(text.attr('dy'));\n const dx = 0;\n text\n .text(null)\n .append('tspan')\n .attr('x', x)\n .attr('y', y)\n .attr('id', 'BaseSpan')\n .attr('dy', dy + 'em')\n .attr('data-', totalWord);\n\n if (truncateLabel && totalWordLength > noOfCharsToTruncate) {\n text\n .append('tspan')\n .attr('id', 'showDots')\n .attr('x', isRtl ? 0 : x)\n .attr('y', y)\n .attr('dy', dy)\n .attr('dx', padding + dx + 'em')\n .text(truncatedWord);\n } else {\n text\n .attr('text-align', 'start')\n .append('tspan')\n .attr('id', 'LessLength')\n .attr('x', isRtl ? 0 : x)\n .attr('y', y)\n .attr('dx', padding + dx + 'em')\n .text(totalWord);\n }\n });\n}\n\nexport const wrapContent = (content: string, id: string, maxWidth: number) => {\n const textElement = d3Select<SVGTextElement, {}>(`#${id}`);\n textElement.text(content);\n if (!textElement.node()) {\n return false;\n }\n\n let isOverflowing = false;\n let textLength = textElement.node()!.getComputedTextLength();\n while (textLength > maxWidth && content.length > 0) {\n content = content.slice(0, -1);\n textElement.text(content + '...');\n isOverflowing = true;\n textLength = textElement.node()!.getComputedTextLength();\n }\n return isOverflowing;\n};\n\n/**\n * Calculates the width of the longest axis label in pixels\n */\nexport const calculateLongestLabelWidth = (labels: (string | number)[], query: string = 'none'): number => {\n let maxLabelWidth = 0;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (ctx) {\n const axisText = document.querySelector(query);\n if (axisText) {\n const styles = window.getComputedStyle(axisText, null);\n const fontWeight = styles.getPropertyValue('font-weight');\n const fontSize = styles.getPropertyValue('font-size');\n const fontFamily = styles.getPropertyValue('font-family');\n ctx.font = `${fontWeight} ${fontSize} ${fontFamily}`;\n } else {\n ctx.font = '600 10px \"Segoe UI\"';\n }\n\n labels.forEach(label => {\n maxLabelWidth = Math.max(ctx.measureText(label.toString()).width, maxLabelWidth);\n });\n }\n\n return maxLabelWidth;\n};\n\n/**\n * This method displays a tooltip to the x axis lables(tick values)\n * when prop 'showXAxisLablesTooltip' enables to the respected chart.\n * On hover of the truncated word(at x axis labels tick), a tooltip will be appeared.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function tooltipOfXAxislabels(xAxistooltipProps: any) {\n const { tooltipCls, xAxis, id } = xAxistooltipProps;\n if (xAxis === null) {\n return null;\n }\n const div = d3Select('body').append('div').attr('id', id).attr('class', tooltipCls).style('opacity', 0);\n const aa = xAxis!.selectAll('#BaseSpan')._groups[0];\n const baseSpanLength = aa && Object.keys(aa)!.length;\n const originalDataArray: string[] = [];\n for (let i = 0; i < baseSpanLength; i++) {\n const originalData = aa[i].dataset && (Object.values(aa[i].dataset)[0] as string);\n originalDataArray.push(originalData);\n }\n const tickObject = xAxis!.selectAll('.tick')._groups[0];\n const tickObjectLength = tickObject && Object.keys(tickObject)!.length;\n for (let i = 0; i < tickObjectLength; i++) {\n const d1 = tickObject[i];\n d3Select(d1)\n .on('mouseover', d => {\n div.style('opacity', 0.9);\n div\n .html(originalDataArray[i])\n .style('left', d3Event.pageX + 'px')\n .style('top', d3Event.pageY - 28 + 'px');\n })\n .on('mouseout', d => {\n div.style('opacity', 0);\n });\n }\n}\n\n/**\n * Find the axis type of line chart and area chart from given data\n * @param points\n */\nexport function getXAxisType(points: ILineChartPoints[]): boolean {\n let isXAxisDateType: boolean = false;\n if (points && points.length > 0) {\n points.forEach((chartData: ILineChartPoints) => {\n if (chartData.data.length > 0) {\n isXAxisDateType = chartData.data[0].x instanceof Date;\n return;\n }\n });\n }\n return isXAxisDateType;\n}\n\n/**\n * Calculates Domain and range values for Date X axis.\n * This method calculates Area chart and line chart.\n * @export\n * @param {ILineChartPoints[]} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @param {Date[] | number[]} tickValues\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfDateForAreaChart(\n points: ILineChartPoints[],\n margins: IMargins,\n width: number,\n isRTL: boolean,\n tickValues: Date[] = [],\n): IDomainNRange {\n const sDate = d3Min(points, (point: ILineChartPoints) => {\n return d3Min(point.data, (item: ILineChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n const lDate = d3Max(points, (point: ILineChartPoints) => {\n return d3Max(point.data, (item: ILineChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n\n // Need to draw graph with given small and large date (Which Involves customization of date axis tick values)\n // That may be Either from given graph data or from prop 'tickValues' date values.\n // So, Finding smallest and largest dates\n const smallestDate = d3Min([...tickValues, sDate])!;\n const largestDate = d3Max([...tickValues, lDate])!;\n\n const rStartValue = margins.left!;\n const rEndValue = width - margins.right!;\n\n return isRTL\n ? { dStartValue: largestDate, dEndValue: smallestDate, rStartValue, rEndValue }\n : { dStartValue: smallestDate, dEndValue: largestDate, rStartValue, rEndValue };\n}\n\n/**\n * Calculates Domain and range values for Numeric X axis.\n * This method calculates Area cart and line chart.\n * @export\n * @param {ILineChartPoints[]} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfNumericForAreaChart(\n points: ILineChartPoints[],\n margins: IMargins,\n width: number,\n isRTL: boolean,\n): IDomainNRange {\n const xMin = d3Min(points, (point: ILineChartPoints) => {\n return d3Min(point.data, (item: ILineChartDataPoint) => item.x as number)!;\n })!;\n\n const xMax = d3Max(points, (point: ILineChartPoints) => {\n return d3Max(point.data, (item: ILineChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n const rStartValue = margins.left!;\n const rEndValue = width - margins.right!;\n\n return isRTL\n ? { dStartValue: xMax, dEndValue: xMin, rStartValue, rEndValue }\n : { dStartValue: xMin, dEndValue: xMax, rStartValue, rEndValue };\n}\n\n/**\n * Calculates Domain and range values for Numeric X axis.\n * This method calculates Horizontal Chart with Axis\n * @export\n * @param {ILineChartPoints[]} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfNumericForHorizontalBarChartWithAxis(\n points: IHorizontalBarChartWithAxisDataPoint[],\n margins: IMargins,\n containerWidth: number,\n isRTL: boolean,\n shiftX: number,\n): IDomainNRange {\n const xMax = d3Max(points, (point: IHorizontalBarChartWithAxisDataPoint) => point.x as number)!;\n const rMin = isRTL ? margins.left! : margins.left! + shiftX;\n const rMax = isRTL ? containerWidth - margins.right! - shiftX : containerWidth - margins.right!;\n\n return isRTL\n ? { dStartValue: xMax, dEndValue: 0, rStartValue: rMin, rEndValue: rMax }\n : { dStartValue: 0, dEndValue: xMax, rStartValue: rMin, rEndValue: rMax };\n}\n\n/**\n * Calculates Range values of x Axis string axis\n * For String axis, we need to give domain values (Not start and end array values)\n * So sending 0 as domain values. Domain will be handled at creation of string axis\n * For charts stacked bar chart, grouped vertical bar chart, HeatMapChart and Vertical bar chart\n * @export\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfXStringAxis(margins: IMargins, width: number, isRTL: boolean): IDomainNRange {\n const rMin = margins.left!;\n const rMax = width - margins.right!;\n return isRTL\n ? { dStartValue: 0, dEndValue: 0, rStartValue: rMax, rEndValue: rMin }\n : { dStartValue: 0, dEndValue: 0, rStartValue: rMin, rEndValue: rMax };\n}\n\n/**\n * Calculate domain and range values to the Vertical stacked bar chart - For Numeric axis\n * @export\n * @param {IDataPoint[]} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @param {number} barWidth\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfVSBCNumeric(\n points: IDataPoint[],\n margins: IMargins,\n width: number,\n isRTL: boolean,\n barWidth: number,\n): IDomainNRange {\n const xMin = d3Min(points, (point: IDataPoint) => point.x as number)!;\n const xMax = d3Max(points, (point: IDataPoint) => point.x as number)!;\n // barWidth / 2 - for to get tick middle of the bar\n const rMax = margins.left! + barWidth / 2;\n const rMin = width - margins.right! - barWidth / 2;\n return isRTL\n ? { dStartValue: xMax, dEndValue: xMin, rStartValue: rMax, rEndValue: rMin }\n : { dStartValue: xMin, dEndValue: xMax, rStartValue: rMax, rEndValue: rMin };\n}\n\n/**\n * Calculate domain and range values to the Vertical bar chart - For Numeric axis\n * @export\n * @param {IDataPoint[]} points\n * @param {IMargins} margins\n * @param {number} containerWidth\n * @param {boolean} isRTL\n * @param {number} barWidth\n * @returns {IDomainNRange}\n */\nexport function domainRageOfVerticalNumeric(\n points: IDataPoint[],\n margins: IMargins,\n containerWidth: number,\n isRTL: boolean,\n barWidth: number,\n): IDomainNRange {\n const xMax = d3Max(points, (point: IVerticalBarChartDataPoint) => point.x as number)!;\n const xMin = d3Min(points, (point: IVerticalBarChartDataPoint) => point.x as number)!;\n const rMin = margins.left! + barWidth / 2;\n const rMax = containerWidth - margins.right! - barWidth / 2;\n\n return isRTL\n ? { dStartValue: xMax, dEndValue: xMin, rStartValue: rMin, rEndValue: rMax }\n : { dStartValue: xMin, dEndValue: xMax, rStartValue: rMin, rEndValue: rMax };\n}\n\n/**\n * For creating X axis, need to calculate x axis domain and range values from given points.\n * This may vary based on chart type and type of x axis\n * So, this method will define which method need to call based on chart type and axis type.\n * @export\n * @param {*} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {ChartTypes} chartType\n * @param {boolean} isRTL\n * @param {XAxisTypes} xAxisType\n * @param {number} [barWidth]\n * @returns {IDomainNRange}\n */\nexport function getDomainNRangeValues(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n points: any,\n margins: IMargins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n): IDomainNRange {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n switch (chartType) {\n case ChartTypes.AreaChart:\n case ChartTypes.LineChart:\n domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);\n break;\n case ChartTypes.VerticalStackedBarChart:\n domainNRangeValue = domainRangeOfVSBCNumeric(points, margins, width, isRTL, barWidth!);\n break;\n case ChartTypes.VerticalBarChart:\n domainNRangeValue = domainRageOfVerticalNumeric(points, margins, width, isRTL, barWidth!);\n break;\n case ChartTypes.HorizontalBarChartWithAxis:\n domainNRangeValue = domainRangeOfNumericForHorizontalBarChartWithAxis(points, margins, width, isRTL, shiftX);\n break;\n default:\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n } else if (xAxisType === XAxisTypes.DateAxis) {\n switch (chartType) {\n case ChartTypes.AreaChart:\n case ChartTypes.LineChart:\n domainNRangeValue = domainRangeOfDateForAreaChart(points, margins, width, isRTL, tickValues! as Date[]);\n break;\n default:\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n } else {\n // String Axis type\n switch (chartType) {\n case ChartTypes.VerticalStackedBarChart:\n case ChartTypes.GroupedVerticalBarChart:\n case ChartTypes.VerticalBarChart:\n case ChartTypes.HeatMapChart:\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n break;\n default:\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n }\n return domainNRangeValue;\n}\n\n/**\n * Calculating start and ending values of the Area chart and LineChart\n * @export\n * @param {ILineChartPoints[]} points\n * @returns {{ startValue: number; endValue: number }}\n */\nexport function findNumericMinMaxOfY(points: ILineChartPoints[]): { startValue: number; endValue: number } {\n const yMax = d3Max(points, (point: ILineChartPoints) => {\n return d3Max(point.data, (item: ILineChartDataPoint) => item.y)!;\n })!;\n const yMin = d3Min(points, (point: ILineChartPoints) => {\n return d3Min(point.data, (item: ILineChartDataPoint) => item.y)!;\n })!;\n\n return {\n startValue: yMin,\n endValue: yMax,\n };\n}\n\n/**\n * Find the minimum and maximum values of the vertical stacked bar chart y axis data point. Used for create y axis.\n * @export\n * @param {IDataPoint[]} dataset\n * @returns {{ startValue: number; endValue: number }}\n */\nexport function findVSBCNumericMinMaxOfY(dataset: IDataPoint[]): { startValue: number; endValue: number } {\n const yMax = d3Max(dataset, (point: IDataPoint) => point.y)!;\n const yMin = d3Min(dataset, (point: IDataPoint) => point.y)!;\n\n return { startValue: yMin, endValue: yMax };\n}\n\n/**\n * Fins the min and max values of the vertical bar chart y axis data point.\n * @export\n * @param {IVerticalBarChartDataPoint[]} points\n * @returns {{ startValue: number; endValue: number }}\n */\nexport function findVerticalNumericMinMaxOfY(points: IVerticalBarChartDataPoint[]): {\n startValue: number;\n endValue: number;\n} {\n const yMax = d3Max(points, (point: IVerticalBarChartDataPoint) => {\n if (point.lineData !== undefined) {\n if (point.y > point.lineData!.y) {\n return point.y;\n } else {\n return point.lineData!.y;\n }\n } else {\n return point.y;\n }\n })!;\n const yMin = d3Min(points, (point: IVerticalBarChartDataPoint) => {\n if (point.lineData !== undefined) {\n if (point.y < point.lineData!.y) {\n return point.y;\n } else {\n return point.lineData!.y;\n }\n } else {\n return point.y;\n }\n })!;\n\n return { startValue: yMin, endValue: yMax };\n}\n/**\n * Fins the min and max values of the vertical bar chart y axis data point.\n * @export\n * @param {IVerticalBarChartDataPoint[]} points\n * @returns {{ startValue: number; endValue: number }}\n */\nexport function findHBCWANumericMinMaxOfY(\n points: IHorizontalBarChartWithAxisDataPoint[],\n yAxisType: YAxisType | undefined,\n): { startValue: number; endValue: number } {\n if (yAxisType !== undefined && yAxisType === YAxisType.NumericAxis) {\n const yMax = d3Max(points, (point: IHorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n const yMin = d3Min(points, (point: IHorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n\n return { startValue: yMin, endValue: yMax };\n }\n return { startValue: 0, endValue: 0 };\n}\n\n/**\n * For creating Y axis, need to calculate y axis domain values from given points. This may vary based on chart type.\n * So, this method will define which method need to call based on chart type to find out min and max values(For Domain).\n * For grouped vertical bar chart, Calculating yMax value in the base file and sending as MaxOfYVal to cartesian.\n * @export\n * @param {*} points\n * @param {ChartTypes} chartType\n * @returns {{ startValue: number; endValue: number }}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMinMaxOfYAxis(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n points: any,\n chartType: ChartTypes,\n yAxisType: YAxisType | undefined = YAxisType.NumericAxis,\n): { startValue: number; endValue: number } {\n let minMaxValues: { startValue: number; endValue: number };\n\n switch (chartType) {\n case ChartTypes.AreaChart:\n case ChartTypes.LineChart:\n minMaxValues = findNumericMinMaxOfY(points);\n break;\n case ChartTypes.VerticalStackedBarChart:\n minMaxValues = findVSBCNumericMinMaxOfY(points);\n break;\n case ChartTypes.VerticalBarChart:\n minMaxValues = findVerticalNumericMinMaxOfY(points);\n break;\n case ChartTypes.HorizontalBarChartWithAxis:\n minMaxValues = findHBCWANumericMinMaxOfY(points, yAxisType);\n break;\n default:\n minMaxValues = { startValue: 0, endValue: 0 };\n }\n\n return minMaxValues;\n}\n\n/**\n * @param p string or number or Date\n *\n * This function takes the single data point of the x-aixs\n * and decides what is the x-axis\n */\nexport const getTypeOfAxis = (p: string | number | Date, isXAsix: boolean): XAxisTypes | YAxisType => {\n if (isXAsix) {\n switch (typeof p) {\n case 'string':\n return XAxisTypes.StringAxis;\n case 'number':\n return XAxisTypes.NumericAxis;\n default:\n return XAxisTypes.DateAxis;\n }\n } else {\n switch (typeof p) {\n case 'string':\n return YAxisType.StringAxis;\n case 'number':\n return YAxisType.NumericAxis;\n default:\n return YAxisType.DateAxis;\n }\n }\n};\n\n/**\n * we need to make sure that if we add any property to this, then\n * we need to also add that in pointTypes below and vise-versa\n */\n\nexport enum Points {\n circle,\n square,\n triangle,\n diamond,\n pyramid,\n hexagon,\n pentagon,\n octagon,\n}\n\nexport enum CustomPoints {\n dottedLine,\n}\n\nexport type PointTypes = {\n [key in number]: {\n /**\n * For certian shapes like pentagon, hexagon and octagon.\n * the width of the bouding box increase by the time of the\n * length of the side, so when we want to render a pentagon\n * having each side of length 7 units we need to decrease it's\n * units by width ratio so that the bounding box width of the pentagon\n * stays as 7\n */\n widthRatio: number;\n };\n};\n\n/**\n * we need to make sure that if we add any property to this, then\n * we need to also add that in enum Point and vise-versa\n */\n\nexport const pointTypes: PointTypes = {\n [Points.circle]: {\n widthRatio: 1,\n },\n [Points.square]: {\n widthRatio: 1,\n },\n [Points.triangle]: {\n widthRatio: 1,\n },\n [Points.diamond]: {\n widthRatio: 1,\n },\n [Points.pyramid]: {\n widthRatio: 1,\n },\n [Points.hexagon]: {\n widthRatio: 2,\n },\n [Points.pentagon]: {\n widthRatio: 1.168,\n },\n [Points.octagon]: {\n widthRatio: 2.414,\n },\n};\n\n/**\n * @param accessibleData accessible data\n * @param role string to define role of tag\n * @param isDataFocusable boolean\n * function returns the accessibility data object\n */\nexport const getAccessibleDataObject = (\n accessibleData?: IAccessibilityProps,\n role: string = 'text',\n isDataFocusable: boolean = true,\n) => {\n accessibleData = accessibleData ?? {};\n return {\n role,\n 'data-is-focusable': isDataFocusable,\n 'aria-label': accessibleData!.ariaLabel,\n 'aria-labelledby': accessibleData!.ariaLabelledBy,\n 'aria-describedby': accessibleData!.ariaDescribedBy,\n };\n};\n\ntype LocaleStringDataProps = number | string | Date | undefined;\nexport const convertToLocaleString = (data: LocaleStringDataProps, culture?: string): LocaleStringDataProps => {\n if (!data) {\n return data;\n }\n culture = culture || undefined;\n if (typeof data === 'number') {\n return data.toLocaleString(culture);\n }\n if (typeof data === 'string' && !window.isNaN(Number(data))) {\n const num = Number(data);\n return num.toLocaleString(culture);\n }\n return data;\n};\n\nexport function rotateXAxisLabels(rotateLabelProps: IRotateLabelProps) {\n const { node, xAxis } = rotateLabelProps;\n if (node === null || xAxis === null) {\n return;\n }\n\n let maxHeight: number = 0;\n const xAxisTranslations: string[] = [];\n d3Select(node)\n .call(xAxis)\n .selectAll('.tick')\n .each(function () {\n const translateValue = (this as SVGElement).getAttribute('transform');\n if (translateValue?.indexOf('rotate') === -1) {\n const translatePair = translateValue\n .substring(translateValue.indexOf('(') + 1, translateValue.indexOf(')'))\n .split(',');\n if (translatePair.length === 2) {\n xAxisTranslations.push(translatePair[0]);\n (this as SVGElement).setAttribute('transform', `translate(${translatePair[0]},0)rotate(-45)`);\n }\n }\n\n const BoxCordinates = (this as HTMLElement).getBoundingClientRect();\n const boxHeight = BoxCordinates && BoxCordinates.height;\n if (boxHeight > maxHeight) {\n maxHeight = boxHeight;\n }\n });\n\n let idx = 0;\n d3Select(node)\n .call(xAxis)\n .selectAll('.tick')\n .each(function () {\n if (xAxisTranslations.length > idx) {\n (this as SVGElement).setAttribute(\n 'transform',\n `translate(${xAxisTranslations[idx]},${maxHeight / 2})rotate(-45)`,\n ); // Translate y by max height/2\n idx += 1;\n }\n });\n\n return Math.floor(maxHeight / 1.414); // Compute maxHeight/tanInverse(45) to get the vertical height of labels.\n}\n\nexport function wrapTextInsideDonut(selectorClass: string, maxWidth: number) {\n let idx: number = 0;\n d3SelectAll(`.${selectorClass}`).each(function () {\n const text = d3Select(this);\n const words = text.text().split(/\\s+/).reverse();\n let word: string = '';\n let line: string[] = [];\n let lineNumber: number = 0;\n const lineHeight = 1.1; // ems\n const y = text.attr('y');\n\n let tspan = text\n .text(null)\n .append('tspan')\n .attr('id', `WordBreakId-${idx}-${lineNumber}`)\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', lineNumber++ * lineHeight + 'em');\n\n while ((word = words.pop()!)) {\n line.push(word);\n tspan.text(line.join(' ') + ' ');\n if (tspan.node()!.getComputedTextLength() > maxWidth && line.length > 1) {\n line.pop();\n tspan.text(line.join(' ') + ' ');\n line = [word];\n tspan = text\n .append('tspan')\n .attr('id', `WordBreakId-${idx}-${lineNumber}`)\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', lineNumber++ * lineHeight + 'em')\n .text(word);\n }\n }\n idx += 1;\n });\n}\n\nexport function formatValueWithSIPrefix(value: number) {\n let specifier: string;\n if (value < 1000) {\n specifier = '.2~'; // upto 2 decimal places without insignificant trailing zeros\n } else {\n specifier = '.1'; // upto 1 decimal place\n }\n\n return d3FormatPrefix(specifier, value)(value);\n}\n"]}
1
+ {"version":3,"file":"utilities.js","sourceRoot":"../src/","sources":["utilities/utilities.ts"],"names":[],"mappings":"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","sourcesContent":["import { axisRight as d3AxisRight, axisBottom as d3AxisBottom, axisLeft as d3AxisLeft, Axis as D3Axis } from 'd3-axis';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { scaleLinear as d3ScaleLinear, scaleTime as d3ScaleTime, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { select as d3Select, event as d3Event, selectAll as d3SelectAll } from 'd3-selection';\nimport { format as d3Format } from 'd3-format';\nimport {\n TimeLocaleObject as d3TimeLocaleObject,\n timeFormat as d3TimeFormat,\n timeFormatLocale as d3TimeFormatLocale,\n TimeLocaleDefinition as d3TimeLocaleDefinition,\n} from 'd3-time-format';\nimport {\n timeSecond as d3TimeSecond,\n timeMinute as d3TimeMinute,\n timeHour as d3TimeHour,\n timeDay as d3TimeDay,\n timeMonth as d3TimeMonth,\n timeWeek as d3TimeWeek,\n timeYear as d3TimeYear,\n} from 'd3-time';\nimport {\n IAccessibilityProps,\n IEventsAnnotationProps,\n ILineChartPoints,\n ILineChartDataPoint,\n IDataPoint,\n IVerticalBarChartDataPoint,\n IHorizontalBarChartWithAxisDataPoint,\n} from '../index';\nimport { formatPrefix as d3FormatPrefix } from 'd3-format';\n\nexport type NumericAxis = D3Axis<number | { valueOf(): number }>;\nexport type StringAxis = D3Axis<string>;\n\nexport enum ChartTypes {\n AreaChart,\n LineChart,\n VerticalBarChart,\n VerticalStackedBarChart,\n GroupedVerticalBarChart,\n HeatMapChart,\n HorizontalBarChartWithAxis,\n}\n\nexport enum XAxisTypes {\n NumericAxis,\n DateAxis,\n StringAxis,\n}\n\nexport enum YAxisType {\n NumericAxis,\n DateAxis,\n StringAxis,\n}\n\nexport interface IWrapLabelProps {\n node: SVGElement | null;\n xAxis: NumericAxis | StringAxis;\n noOfCharsToTruncate: number;\n showXAxisLablesTooltip: boolean;\n}\n\nexport interface IRotateLabelProps {\n node: SVGElement | null;\n xAxis: NumericAxis | StringAxis;\n}\n\nexport interface IAxisData {\n yAxisDomainValues: number[];\n}\n\nexport interface IMargins {\n /**\n * left margin for the chart.\n * @default 40\n */\n left?: number;\n /**\n * Right margin for the chart.\n * @default 20\n */\n right?: number;\n /**\n * Top margin for the chart.\n * @default 20\n */\n top?: number;\n /**\n * Bottom margin for the chart.\n * @default 35\n */\n bottom?: number;\n}\n\nexport interface IDomainNRange {\n dStartValue: number | Date;\n dEndValue: number | Date;\n rStartValue: number;\n rEndValue: number;\n}\n\nexport interface IXAxisParams {\n domainNRangeValues: IDomainNRange;\n xAxisElement?: SVGElement | null;\n xAxisCount?: number;\n showRoundOffXTickValues?: boolean;\n xAxistickSize?: number;\n tickPadding?: number;\n xAxisPadding?: number;\n xAxisInnerPadding?: number;\n xAxisOuterPadding?: number;\n margins: IMargins;\n containerHeight: number;\n}\nexport interface ITickParams {\n tickValues?: Date[] | number[];\n tickFormat?: string;\n}\n\nexport interface IYAxisParams {\n yMinMaxValues?: {\n startValue: number;\n endValue: number;\n };\n maxOfYVal?: number;\n margins: IMargins;\n containerWidth: number;\n containerHeight: number;\n yAxisElement?: SVGElement | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxisTickFormat?: any;\n yAxisTickCount: number;\n yMaxValue?: number;\n yMinValue?: number;\n tickPadding?: number;\n eventAnnotationProps?: IEventsAnnotationProps;\n eventLabelHeight?: number;\n yAxisPadding?: number;\n}\n\n/**\n * Create Numeric X axis\n * @export\n * @param {IXAxisParams} xAxisParams\n */\nexport function createNumericXAxis(xAxisParams: IXAxisParams, chartType: ChartTypes, culture?: string) {\n const {\n domainNRangeValues,\n showRoundOffXTickValues = false,\n xAxistickSize = 6,\n tickPadding = 10,\n xAxisCount = 6,\n xAxisElement,\n } = xAxisParams;\n const xAxisScale = d3ScaleLinear()\n .domain([domainNRangeValues.dStartValue, domainNRangeValues.dEndValue])\n .range([domainNRangeValues.rStartValue, domainNRangeValues.rEndValue]);\n showRoundOffXTickValues && xAxisScale.nice();\n\n const xAxis = d3AxisBottom(xAxisScale)\n .tickSize(xAxistickSize)\n .tickPadding(tickPadding)\n .ticks(xAxisCount)\n .tickFormat((domainValue, index) => {\n const xAxisValue = typeof domainValue === 'number' ? domainValue : domainValue.valueOf();\n return convertToLocaleString(xAxisValue, culture) as string;\n });\n if (chartType === ChartTypes.HorizontalBarChartWithAxis) {\n xAxis.tickSizeInner(-(xAxisParams.containerHeight - xAxisParams.margins.top!));\n }\n if (xAxisElement) {\n d3Select(xAxisElement).call(xAxis).selectAll('text').attr('aria-hidden', 'true');\n }\n const tickValues = xAxisScale.ticks(xAxisCount).map(xAxis.tickFormat()!);\n return { xScale: xAxisScale, tickValues };\n}\n\nfunction multiFormat(date: Date, locale?: d3TimeLocaleObject) {\n const timeFormat = locale ? locale.format : d3TimeFormat;\n const formatMillisecond = timeFormat('.%L');\n const formatSecond = timeFormat(':%S');\n const formatMinute = timeFormat('%I:%M');\n const formatHour = timeFormat('%I %p');\n const formatDay = timeFormat('%a %d');\n const formatWeek = timeFormat('%b %d');\n const formatMonth = timeFormat('%B');\n const formatYear = timeFormat('%Y');\n\n return (\n d3TimeSecond(date) < date\n ? formatMillisecond\n : d3TimeMinute(date) < date\n ? formatSecond\n : d3TimeHour(date) < date\n ? formatMinute\n : d3TimeDay(date) < date\n ? formatHour\n : d3TimeMonth(date) < date\n ? d3TimeWeek(date) < date\n ? formatDay\n : formatWeek\n : d3TimeYear(date) < date\n ? formatMonth\n : formatYear\n )(date);\n}\n\n/**\n * Creating Date x axis of the Chart\n * @export\n * @param {IXAxisParams} xAxisParams\n * @param {ITickParams} tickParams\n */\nexport function createDateXAxis(\n xAxisParams: IXAxisParams,\n tickParams: ITickParams,\n culture?: string,\n options?: Intl.DateTimeFormatOptions,\n timeFormatLocale?: d3TimeLocaleDefinition,\n customDateTimeFormatter?: (dateTime: Date) => string,\n) {\n const { domainNRangeValues, xAxisElement, tickPadding = 6, xAxistickSize = 6, xAxisCount = 6 } = xAxisParams;\n const xAxisScale = d3ScaleTime()\n .domain([domainNRangeValues.dStartValue, domainNRangeValues.dEndValue])\n .range([domainNRangeValues.rStartValue, domainNRangeValues.rEndValue]);\n const xAxis = d3AxisBottom(xAxisScale).tickSize(xAxistickSize).tickPadding(tickPadding).ticks(xAxisCount);\n if (customDateTimeFormatter) {\n xAxis.tickFormat((domainValue: Date, _index: number) => {\n return customDateTimeFormatter(domainValue);\n });\n } else if (culture && options) {\n xAxis.tickFormat((domainValue: Date, _index: number) => {\n return domainValue.toLocaleString(culture, options);\n });\n } else if (timeFormatLocale) {\n const locale: d3TimeLocaleObject = d3TimeFormatLocale(timeFormatLocale!);\n\n xAxis.tickFormat((domainValue: Date, _index: number) => {\n return multiFormat(domainValue, locale);\n });\n }\n\n tickParams.tickValues ? xAxis.tickValues(tickParams.tickValues) : '';\n if (culture === undefined) {\n tickParams.tickFormat ? xAxis.tickFormat(d3TimeFormat(tickParams.tickFormat)) : '';\n }\n if (xAxisElement) {\n d3Select(xAxisElement).call(xAxis).selectAll('text').attr('aria-hidden', 'true');\n }\n const tickValues = (tickParams.tickValues ?? xAxisScale.ticks(xAxisCount)).map((val, idx) => {\n const tickFormat = xAxis.tickFormat();\n // val is a Date object. So when the tick format is not set, format val as a string to calculate its width\n return tickFormat ? tickFormat(val, idx) : multiFormat(val as Date);\n });\n return { xScale: xAxisScale, tickValues };\n}\n\n/**\n * Create String X axis\n * Currently using for only Vetical stacked bar chart and grouped vertical bar chart\n * @export\n * @param {IXAxisParams} xAxisParams\n * @param {ITickParams} tickParams\n * @param {string[]} dataset\n * @returns\n */\nexport function createStringXAxis(\n xAxisParams: IXAxisParams,\n tickParams: ITickParams,\n dataset: string[],\n culture?: string,\n) {\n const {\n domainNRangeValues,\n xAxisCount = 6,\n xAxistickSize = 6,\n tickPadding = 10,\n xAxisPadding = 0.1,\n xAxisInnerPadding,\n xAxisOuterPadding,\n } = xAxisParams;\n const xAxisScale = d3ScaleBand()\n .domain(dataset!)\n .range([domainNRangeValues.rStartValue, domainNRangeValues.rEndValue])\n .paddingInner(typeof xAxisInnerPadding !== 'undefined' ? xAxisInnerPadding : xAxisPadding)\n .paddingOuter(typeof xAxisOuterPadding !== 'undefined' ? xAxisOuterPadding : xAxisPadding);\n const xAxis = d3AxisBottom(xAxisScale)\n .tickSize(xAxistickSize)\n .tickPadding(tickPadding)\n .ticks(xAxisCount)\n .tickFormat((x: string, index: number) => {\n return convertToLocaleString(dataset[index], culture) as string;\n });\n\n if (xAxisParams.xAxisElement) {\n d3Select(xAxisParams.xAxisElement).call(xAxis).selectAll('text').attr('aria-hidden', 'true');\n }\n const tickValues = dataset.map(xAxis.tickFormat()!);\n return { xScale: xAxisScale, tickValues };\n}\n\n/**\n * This method used for creating data points for the y axis.\n * @export\n * @param {number} maxVal\n * @param {number} minVal\n * @param {number} splitInto\n * @param {boolean} isIntegralDataset\n * @returns {number[]}\n */\nexport function prepareDatapoints(\n maxVal: number,\n minVal: number,\n splitInto: number,\n isIntegralDataset: boolean,\n): number[] {\n const val = isIntegralDataset\n ? Math.ceil((maxVal - minVal) / splitInto)\n : (maxVal - minVal) / splitInto >= 1\n ? Math.ceil((maxVal - minVal) / splitInto)\n : (maxVal - minVal) / splitInto;\n const dataPointsArray: number[] = [minVal, minVal + val];\n while (dataPointsArray[dataPointsArray.length - 1] < maxVal) {\n dataPointsArray.push(dataPointsArray[dataPointsArray.length - 1] + val);\n }\n return dataPointsArray;\n}\n\n/**\n * Creating Numeric Y axis of the chart\n * @export\n * @param {IYAxisParams} yAxisParams\n * @param {boolean} isRtl\n */\nexport function createYAxis(\n yAxisParams: IYAxisParams,\n isRtl: boolean,\n axisData: IAxisData,\n chartType: ChartTypes,\n barWidth: number,\n isIntegralDataset: boolean,\n useSecondaryYScale: boolean = false,\n) {\n switch (chartType) {\n case ChartTypes.HorizontalBarChartWithAxis:\n return createYAxisForHorizontalBarChartWithAxis(yAxisParams, isRtl, axisData, barWidth!);\n default:\n return createYAxisForOtherCharts(yAxisParams, isRtl, axisData, isIntegralDataset, useSecondaryYScale);\n }\n}\n\nexport function createYAxisForHorizontalBarChartWithAxis(\n yAxisParams: IYAxisParams,\n isRtl: boolean,\n axisData: IAxisData,\n barWidth: number,\n) {\n const {\n yMinMaxValues = { startValue: 0, endValue: 0 },\n yAxisElement = null,\n yMaxValue = 0,\n yMinValue = 0,\n containerHeight,\n margins,\n tickPadding = 12,\n maxOfYVal = 0,\n yAxisTickFormat,\n yAxisTickCount = 4,\n } = yAxisParams;\n\n // maxOfYVal coming from only area chart and Grouped vertical bar chart(Calculation done at base file)\n const tempVal = maxOfYVal || yMinMaxValues.endValue;\n const finalYmax = tempVal > yMaxValue ? tempVal : yMaxValue!;\n const finalYmin = yMinMaxValues.startValue < yMinValue ? 0 : yMinValue!;\n const yAxisScale = d3ScaleLinear()\n .domain([finalYmin, finalYmax])\n .range([containerHeight - margins.bottom!, margins.top!]);\n const axis = isRtl ? d3AxisRight(yAxisScale) : d3AxisLeft(yAxisScale);\n const yAxis = axis.tickPadding(tickPadding).ticks(yAxisTickCount);\n yAxisTickFormat ? yAxis.tickFormat(yAxisTickFormat) : yAxis.tickFormat(d3Format('.2~s'));\n yAxisElement ? d3Select(yAxisElement).call(yAxis).selectAll('text').attr('aria-hidden', 'true') : '';\n return yAxisScale;\n}\n\nexport function createYAxisForOtherCharts(\n yAxisParams: IYAxisParams,\n isRtl: boolean,\n axisData: IAxisData,\n isIntegralDataset: boolean,\n useSecondaryYScale: boolean = false,\n) {\n const {\n yMinMaxValues = { startValue: 0, endValue: 0 },\n yAxisElement = null,\n yMaxValue = 0,\n yMinValue = 0,\n containerHeight,\n containerWidth,\n margins,\n tickPadding = 12,\n maxOfYVal = 0,\n yAxisTickFormat,\n yAxisTickCount = 4,\n eventAnnotationProps,\n eventLabelHeight,\n } = yAxisParams;\n\n // maxOfYVal coming from only area chart and Grouped vertical bar chart(Calculation done at base file)\n const tempVal = maxOfYVal || yMinMaxValues.endValue;\n const finalYmax = tempVal > yMaxValue ? tempVal : yMaxValue!;\n const finalYmin = yMinMaxValues.startValue < yMinValue ? 0 : yMinValue!;\n const domainValues = prepareDatapoints(finalYmax, finalYmin, yAxisTickCount, isIntegralDataset);\n const yAxisScale = d3ScaleLinear()\n .domain([finalYmin, domainValues[domainValues.length - 1]])\n .range([containerHeight - margins.bottom!, margins.top! + (eventAnnotationProps! ? eventLabelHeight! : 0)]);\n const axis =\n (!isRtl && useSecondaryYScale) || (isRtl && !useSecondaryYScale) ? d3AxisRight(yAxisScale) : d3AxisLeft(yAxisScale);\n const yAxis = axis\n .tickPadding(tickPadding)\n .tickValues(domainValues)\n .tickSizeInner(-(containerWidth - margins.left! - margins.right!));\n\n yAxisTickFormat ? yAxis.tickFormat(yAxisTickFormat) : yAxis.tickFormat(d3Format('.2~s'));\n yAxisElement ? d3Select(yAxisElement).call(yAxis).selectAll('text').attr('aria-hidden', 'true') : '';\n axisData.yAxisDomainValues = domainValues;\n return yAxisScale;\n}\n\nexport const createStringYAxis = (\n yAxisParams: IYAxisParams,\n dataPoints: string[],\n isRtl: boolean,\n chartType: ChartTypes,\n barWidth: number | undefined,\n culture?: string,\n) => {\n switch (chartType) {\n case ChartTypes.HorizontalBarChartWithAxis:\n return createStringYAxisForHorizontalBarChartWithAxis(yAxisParams, dataPoints, isRtl, barWidth!, culture);\n default:\n return createStringYAxisForOtherCharts(yAxisParams, dataPoints, isRtl);\n }\n};\n\n/**\n * Creating String Y axis of the chart for Horizontal Bar Chart With Axis\n * @param yAxisParams\n * @param dataPoints\n * @param isRtl\n */\nexport const createStringYAxisForHorizontalBarChartWithAxis = (\n yAxisParams: IYAxisParams,\n dataPoints: string[],\n isRtl: boolean,\n barWidth: number,\n culture?: string,\n) => {\n const { containerHeight, tickPadding = 12, margins, yAxisTickFormat, yAxisElement } = yAxisParams;\n\n const yAxisScale = d3ScaleBand()\n .domain(dataPoints)\n .range([containerHeight - margins.bottom! - barWidth / 2, margins.top! + barWidth / 2]);\n const axis = isRtl ? d3AxisRight(yAxisScale) : d3AxisLeft(yAxisScale);\n const yAxis = axis.tickPadding(tickPadding).ticks(dataPoints);\n if (yAxisTickFormat) {\n yAxis.tickFormat(yAxisTickFormat);\n }\n yAxisElement ? d3Select(yAxisElement).call(yAxis).selectAll('text') : '';\n return yAxisScale;\n};\n\n/**\n * Creating String Y axis of the chart for other chart except Horizontal Bar Chart With Axis\n * @param yAxisParams\n * @param dataPoints\n * @param isRtl\n */\nexport const createStringYAxisForOtherCharts = (yAxisParams: IYAxisParams, dataPoints: string[], isRtl: boolean) => {\n const { containerHeight, tickPadding = 12, margins, yAxisTickFormat, yAxisElement, yAxisPadding = 0 } = yAxisParams;\n const yAxisScale = d3ScaleBand()\n .domain(dataPoints)\n .range([containerHeight - margins.bottom!, margins.top!])\n .padding(yAxisPadding);\n const axis = isRtl ? d3AxisRight(yAxisScale) : d3AxisLeft(yAxisScale);\n const yAxis = axis.tickPadding(tickPadding).tickValues(dataPoints).tickSize(0);\n if (yAxisTickFormat) {\n yAxis.tickFormat(yAxisTickFormat);\n }\n yAxisElement ? d3Select(yAxisElement).call(yAxis).selectAll('text') : '';\n return yAxisScale;\n};\n\n/**\n * For area chart and line chart, while displaying stackCallout, Need to form a callout data object.\n * This methos creates an object for those 2 charts.\n * @param values\n */\n\nexport function calloutData(values: (ILineChartPoints & { index?: number })[]) {\n let combinedResult: (ILineChartDataPoint & {\n legend: string;\n color?: string;\n index?: number;\n })[] = [];\n\n values.forEach((line: ILineChartPoints & { index?: number }) => {\n const elements = line.data\n .filter((point: ILineChartDataPoint) => !point.hideCallout)\n .map((point: ILineChartDataPoint) => {\n return { ...point, legend: line.legend, color: line.color, index: line.index };\n });\n combinedResult = combinedResult.concat(elements);\n });\n\n const xValToDataPoints: {\n [key: number]: {\n legend: string;\n y: number;\n color: string;\n xAxisCalloutData?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n callOutAccessibilityData?: IAccessibilityProps;\n index?: number;\n }[];\n [key: string]: {\n legend: string;\n y: number;\n color: string;\n xAxisCalloutData?: string;\n yAxisCalloutData?: string | { [id: string]: number };\n callOutAccessibilityData?: IAccessibilityProps;\n index?: number;\n }[];\n } = {};\n combinedResult.forEach(ele => {\n const xValue = ele.x instanceof Date ? ele.x.getTime() : ele.x;\n if (xValue in xValToDataPoints) {\n xValToDataPoints[xValue].push({\n legend: ele.legend,\n y: ele.y,\n color: ele.color!,\n xAxisCalloutData: ele.xAxisCalloutData,\n yAxisCalloutData: ele.yAxisCalloutData,\n callOutAccessibilityData: ele.callOutAccessibilityData,\n index: ele.index,\n });\n } else {\n xValToDataPoints[xValue] = [\n {\n legend: ele.legend,\n y: ele.y,\n color: ele.color!,\n xAxisCalloutData: ele.xAxisCalloutData,\n yAxisCalloutData: ele.yAxisCalloutData,\n callOutAccessibilityData: ele.callOutAccessibilityData,\n index: ele.index,\n },\n ];\n }\n });\n\n const result = Object.keys(xValToDataPoints).map(xValue => {\n return { x: Number(xValue), values: xValToDataPoints[xValue] };\n });\n return result;\n}\n\nexport function getUnique(\n arr: { x: number | Date | string; values: { legend: string; y: number }[] }[],\n comp: string | number,\n) {\n const unique = arr\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((e: { [x: string]: any }) => e[comp])\n // store the keys of the unique objects\n .map((e: string, i: number, final: string[]) => final.indexOf(e) === i && i)\n // eliminate the dead keys & store unique objects\n .filter((e: number) => arr[e])\n .map((e: number) => arr[e]);\n return unique;\n}\n\n/**\n * This function takes two paramerter\n * 1. an array of strings\n * 2. a string value\n * if the value is not present in the given array then it will return the new\n * array by appending the value to the present arrray.\n *\n * if the value is already present in the given array then it will return the new\n * array by deleteing the value from the the array\n * @param array\n * @param value\n */\nexport function silceOrAppendToArray(array: string[], value: string): string[] {\n const pos = array.indexOf(value);\n if (pos === -1) {\n return [...array, value];\n } else {\n return array.slice(0, pos).concat(array.slice(pos + 1));\n }\n}\n\n/**\n * This method used for wrapping of x axis labels (tick values).\n * It breaks down given text value by space separated and calculates the total height needed to display all the words.\n * That value = removal value. This value needs to be remove from total svg height, svg will shrink and\n * total text will be displayed.\n * @export\n * @param {IWrapLabelProps} wrapLabelProps\n * @returns\n */\nexport function createWrapOfXLabels(wrapLabelProps: IWrapLabelProps) {\n const { node, xAxis, noOfCharsToTruncate, showXAxisLablesTooltip } = wrapLabelProps;\n if (node === null) {\n return;\n }\n const axisNode = d3Select(node).call(xAxis);\n let removeVal = 0;\n const width = 10;\n const arr: number[] = [];\n axisNode.selectAll('.tick text').each(function () {\n const text = d3Select(this);\n const totalWord = text.text();\n const truncatedWord = `${text.text().slice(0, noOfCharsToTruncate)}...`;\n const totalWordLength = text.text().length;\n const words = text.text().split(/\\s+/).reverse();\n arr.push(words.length);\n let word: string = '';\n let line: string[] = [];\n let lineNumber: number = 0;\n const lineHeight = 1.1; // ems\n const y = text.attr('y');\n const dy = parseFloat(text.attr('dy'));\n let tspan = text\n .text(null)\n .append('tspan')\n .attr('x', 0)\n .attr('y', y)\n .attr('id', 'BaseSpan')\n .attr('dy', dy + 'em')\n .attr('data-', totalWord);\n\n if (showXAxisLablesTooltip && totalWordLength > noOfCharsToTruncate) {\n tspan = text\n .append('tspan')\n .attr('id', 'showDots')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', ++lineNumber * lineHeight + dy + 'em')\n .text(truncatedWord);\n } else if (showXAxisLablesTooltip && totalWordLength <= noOfCharsToTruncate) {\n tspan = text\n .append('tspan')\n .attr('id', 'LessLength')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', ++lineNumber * lineHeight + dy + 'em')\n .text(totalWord);\n } else {\n while ((word = words.pop()!)) {\n line.push(word);\n tspan.text(line.join(' '));\n if (tspan.node()!.getComputedTextLength() > width && line.length > 1) {\n line.pop();\n tspan.text(line.join(' '));\n line = [word];\n tspan = text\n .append('tspan')\n .attr('id', 'WordBreakId')\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', ++lineNumber * lineHeight + dy + 'em')\n .text(word);\n }\n }\n const maxDigit = Math.max(...arr);\n let maxHeight: number = 12; // intial value to render corretly first time\n axisNode.selectAll('text').each(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const outerHTMLElement = document.getElementById('WordBreakId') as any;\n const BoxCordinates = outerHTMLElement && outerHTMLElement.getBoundingClientRect();\n const boxHeight = BoxCordinates && BoxCordinates.height;\n if (boxHeight > maxHeight) {\n maxHeight = boxHeight;\n }\n });\n // If we take directly maxDigit * maxheight, then it will show more height between x axis tick values and bottom.\n // To avoid this, reducing maxDigit value by removing some digit based on legth of word.\n let removeDigit: number = 4;\n if (maxDigit <= 2) {\n removeDigit = 1;\n } else if (maxDigit > 2 && maxDigit <= 6) {\n removeDigit = 2;\n } else if (maxDigit > 6 && maxDigit <= 9) {\n removeDigit = 3;\n }\n removeVal = (maxDigit - removeDigit) * maxHeight;\n }\n });\n return removeVal > 0 ? removeVal : 0;\n}\n\n/**\n * This method used for wrapping of y axis labels (tick values).\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function createYAxisLabels(\n node: SVGElement | null,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxis: any,\n noOfCharsToTruncate: number,\n truncateLabel: boolean,\n xValue: number,\n isRtl: boolean,\n) {\n if (node === null) {\n return;\n }\n const axisNode = d3Select(node).call(yAxis);\n axisNode.selectAll('.tick text').each(function () {\n const text = d3Select(this);\n const totalWord = text.text();\n const truncatedWord = isRtl\n ? `...${text.text().slice(0, noOfCharsToTruncate)}`\n : `${text.text().slice(0, noOfCharsToTruncate)}...`;\n const totalWordLength = text.text().length;\n const padding = truncateLabel ? 1.5 : 1; // ems\n const y = text.attr('y');\n const x = text.attr('x');\n const dy = parseFloat(text.attr('dy'));\n const dx = 0;\n text\n .text(null)\n .append('tspan')\n .attr('x', x)\n .attr('y', y)\n .attr('id', 'BaseSpan')\n .attr('dy', dy + 'em')\n .attr('data-', totalWord);\n\n if (truncateLabel && totalWordLength > noOfCharsToTruncate) {\n text\n .append('tspan')\n .attr('id', 'showDots')\n .attr('x', isRtl ? 0 : x)\n .attr('y', y)\n .attr('dy', dy)\n .attr('dx', padding + dx + 'em')\n .text(truncatedWord);\n } else {\n text\n .attr('text-align', 'start')\n .append('tspan')\n .attr('id', 'LessLength')\n .attr('x', isRtl ? 0 : x)\n .attr('y', y)\n .attr('dx', padding + dx + 'em')\n .text(totalWord);\n }\n });\n}\n\nexport const wrapContent = (content: string, id: string, maxWidth: number) => {\n const textElement = d3Select<SVGTextElement, {}>(`#${id}`);\n textElement.text(content);\n if (!textElement.node()) {\n return false;\n }\n\n let isOverflowing = false;\n let textLength = textElement.node()!.getComputedTextLength();\n while (textLength > maxWidth && content.length > 0) {\n content = content.slice(0, -1);\n textElement.text(content + '...');\n isOverflowing = true;\n textLength = textElement.node()!.getComputedTextLength();\n }\n return isOverflowing;\n};\n\n/**\n * Calculates the width of the longest axis label in pixels\n */\nexport const calculateLongestLabelWidth = (labels: (string | number)[], query: string = 'none'): number => {\n let maxLabelWidth = 0;\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n if (ctx) {\n const axisText = document.querySelector(query);\n if (axisText) {\n const styles = window.getComputedStyle(axisText, null);\n const fontWeight = styles.getPropertyValue('font-weight');\n const fontSize = styles.getPropertyValue('font-size');\n const fontFamily = styles.getPropertyValue('font-family');\n ctx.font = `${fontWeight} ${fontSize} ${fontFamily}`;\n } else {\n ctx.font = '600 10px \"Segoe UI\"';\n }\n\n labels.forEach(label => {\n maxLabelWidth = Math.max(ctx.measureText(label.toString()).width, maxLabelWidth);\n });\n }\n\n return maxLabelWidth;\n};\n\n/**\n * This method displays a tooltip to the x axis lables(tick values)\n * when prop 'showXAxisLablesTooltip' enables to the respected chart.\n * On hover of the truncated word(at x axis labels tick), a tooltip will be appeared.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function tooltipOfXAxislabels(xAxistooltipProps: any) {\n const { tooltipCls, xAxis, id } = xAxistooltipProps;\n if (xAxis === null) {\n return null;\n }\n const div = d3Select('body').append('div').attr('id', id).attr('class', tooltipCls).style('opacity', 0);\n const aa = xAxis!.selectAll('#BaseSpan')._groups[0];\n const baseSpanLength = aa && Object.keys(aa)!.length;\n const originalDataArray: string[] = [];\n for (let i = 0; i < baseSpanLength; i++) {\n const originalData = aa[i].dataset && (Object.values(aa[i].dataset)[0] as string);\n originalDataArray.push(originalData);\n }\n const tickObject = xAxis!.selectAll('.tick')._groups[0];\n const tickObjectLength = tickObject && Object.keys(tickObject)!.length;\n for (let i = 0; i < tickObjectLength; i++) {\n const d1 = tickObject[i];\n d3Select(d1)\n .on('mouseover', d => {\n div.style('opacity', 0.9);\n div\n .html(originalDataArray[i])\n .style('left', d3Event.pageX + 'px')\n .style('top', d3Event.pageY - 28 + 'px');\n })\n .on('mouseout', d => {\n div.style('opacity', 0);\n });\n }\n}\n\n/**\n * Find the axis type of line chart and area chart from given data\n * @param points\n */\nexport function getXAxisType(points: ILineChartPoints[]): boolean {\n let isXAxisDateType: boolean = false;\n if (points && points.length > 0) {\n points.forEach((chartData: ILineChartPoints) => {\n if (chartData.data.length > 0) {\n isXAxisDateType = chartData.data[0].x instanceof Date;\n return;\n }\n });\n }\n return isXAxisDateType;\n}\n\n/**\n * Calculates Domain and range values for Date X axis.\n * This method calculates Area chart and line chart.\n * @export\n * @param {ILineChartPoints[]} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @param {Date[] | number[]} tickValues\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfDateForAreaChart(\n points: ILineChartPoints[],\n margins: IMargins,\n width: number,\n isRTL: boolean,\n tickValues: Date[] = [],\n): IDomainNRange {\n const sDate = d3Min(points, (point: ILineChartPoints) => {\n return d3Min(point.data, (item: ILineChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n const lDate = d3Max(points, (point: ILineChartPoints) => {\n return d3Max(point.data, (item: ILineChartDataPoint) => {\n return item.x as Date;\n });\n })!;\n\n // Need to draw graph with given small and large date (Which Involves customization of date axis tick values)\n // That may be Either from given graph data or from prop 'tickValues' date values.\n // So, Finding smallest and largest dates\n const smallestDate = d3Min([...tickValues, sDate])!;\n const largestDate = d3Max([...tickValues, lDate])!;\n\n const rStartValue = margins.left!;\n const rEndValue = width - margins.right!;\n\n return isRTL\n ? { dStartValue: largestDate, dEndValue: smallestDate, rStartValue, rEndValue }\n : { dStartValue: smallestDate, dEndValue: largestDate, rStartValue, rEndValue };\n}\n\n/**\n * Calculates Domain and range values for Numeric X axis.\n * This method calculates Area cart and line chart.\n * @export\n * @param {ILineChartPoints[]} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfNumericForAreaChart(\n points: ILineChartPoints[],\n margins: IMargins,\n width: number,\n isRTL: boolean,\n): IDomainNRange {\n const xMin = d3Min(points, (point: ILineChartPoints) => {\n return d3Min(point.data, (item: ILineChartDataPoint) => item.x as number)!;\n })!;\n\n const xMax = d3Max(points, (point: ILineChartPoints) => {\n return d3Max(point.data, (item: ILineChartDataPoint) => {\n return item.x as number;\n });\n })!;\n\n const rStartValue = margins.left!;\n const rEndValue = width - margins.right!;\n\n return isRTL\n ? { dStartValue: xMax, dEndValue: xMin, rStartValue, rEndValue }\n : { dStartValue: xMin, dEndValue: xMax, rStartValue, rEndValue };\n}\n\n/**\n * Calculates Domain and range values for Numeric X axis.\n * This method calculates Horizontal Chart with Axis\n * @export\n * @param {ILineChartPoints[]} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfNumericForHorizontalBarChartWithAxis(\n points: IHorizontalBarChartWithAxisDataPoint[],\n margins: IMargins,\n containerWidth: number,\n isRTL: boolean,\n shiftX: number,\n): IDomainNRange {\n const xMax = d3Max(points, (point: IHorizontalBarChartWithAxisDataPoint) => point.x as number)!;\n const rMin = isRTL ? margins.left! : margins.left! + shiftX;\n const rMax = isRTL ? containerWidth - margins.right! - shiftX : containerWidth - margins.right!;\n\n return isRTL\n ? { dStartValue: xMax, dEndValue: 0, rStartValue: rMin, rEndValue: rMax }\n : { dStartValue: 0, dEndValue: xMax, rStartValue: rMin, rEndValue: rMax };\n}\n\n/**\n * Calculates Range values of x Axis string axis\n * For String axis, we need to give domain values (Not start and end array values)\n * So sending 0 as domain values. Domain will be handled at creation of string axis\n * For charts stacked bar chart, grouped vertical bar chart, HeatMapChart and Vertical bar chart\n * @export\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfXStringAxis(margins: IMargins, width: number, isRTL: boolean): IDomainNRange {\n const rMin = margins.left!;\n const rMax = width - margins.right!;\n return isRTL\n ? { dStartValue: 0, dEndValue: 0, rStartValue: rMax, rEndValue: rMin }\n : { dStartValue: 0, dEndValue: 0, rStartValue: rMin, rEndValue: rMax };\n}\n\n/**\n * Calculate domain and range values to the Vertical stacked bar chart - For Numeric axis\n * @export\n * @param {IDataPoint[]} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {boolean} isRTL\n * @param {number} barWidth\n * @returns {IDomainNRange}\n */\nexport function domainRangeOfVSBCNumeric(\n points: IDataPoint[],\n margins: IMargins,\n width: number,\n isRTL: boolean,\n barWidth: number,\n): IDomainNRange {\n const xMin = d3Min(points, (point: IDataPoint) => point.x as number)!;\n const xMax = d3Max(points, (point: IDataPoint) => point.x as number)!;\n // barWidth / 2 - for to get tick middle of the bar\n const rMax = margins.left! + barWidth / 2;\n const rMin = width - margins.right! - barWidth / 2;\n return isRTL\n ? { dStartValue: xMax, dEndValue: xMin, rStartValue: rMax, rEndValue: rMin }\n : { dStartValue: xMin, dEndValue: xMax, rStartValue: rMax, rEndValue: rMin };\n}\n\n/**\n * Calculate domain and range values to the Vertical bar chart - For Numeric axis\n * @export\n * @param {IDataPoint[]} points\n * @param {IMargins} margins\n * @param {number} containerWidth\n * @param {boolean} isRTL\n * @param {number} barWidth\n * @returns {IDomainNRange}\n */\nexport function domainRageOfVerticalNumeric(\n points: IDataPoint[],\n margins: IMargins,\n containerWidth: number,\n isRTL: boolean,\n barWidth: number,\n): IDomainNRange {\n const xMax = d3Max(points, (point: IVerticalBarChartDataPoint) => point.x as number)!;\n const xMin = d3Min(points, (point: IVerticalBarChartDataPoint) => point.x as number)!;\n const rMin = margins.left! + barWidth / 2;\n const rMax = containerWidth - margins.right! - barWidth / 2;\n\n return isRTL\n ? { dStartValue: xMax, dEndValue: xMin, rStartValue: rMin, rEndValue: rMax }\n : { dStartValue: xMin, dEndValue: xMax, rStartValue: rMin, rEndValue: rMax };\n}\n\n/**\n * For creating X axis, need to calculate x axis domain and range values from given points.\n * This may vary based on chart type and type of x axis\n * So, this method will define which method need to call based on chart type and axis type.\n * @export\n * @param {*} points\n * @param {IMargins} margins\n * @param {number} width\n * @param {ChartTypes} chartType\n * @param {boolean} isRTL\n * @param {XAxisTypes} xAxisType\n * @param {number} [barWidth]\n * @returns {IDomainNRange}\n */\nexport function getDomainNRangeValues(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n points: any,\n margins: IMargins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n shiftX: number,\n): IDomainNRange {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis) {\n switch (chartType) {\n case ChartTypes.AreaChart:\n case ChartTypes.LineChart:\n domainNRangeValue = domainRangeOfNumericForAreaChart(points, margins, width, isRTL);\n break;\n case ChartTypes.VerticalStackedBarChart:\n domainNRangeValue = domainRangeOfVSBCNumeric(points, margins, width, isRTL, barWidth!);\n break;\n case ChartTypes.VerticalBarChart:\n domainNRangeValue = domainRageOfVerticalNumeric(points, margins, width, isRTL, barWidth!);\n break;\n case ChartTypes.HorizontalBarChartWithAxis:\n domainNRangeValue = domainRangeOfNumericForHorizontalBarChartWithAxis(points, margins, width, isRTL, shiftX);\n break;\n default:\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n } else if (xAxisType === XAxisTypes.DateAxis) {\n switch (chartType) {\n case ChartTypes.AreaChart:\n case ChartTypes.LineChart:\n domainNRangeValue = domainRangeOfDateForAreaChart(points, margins, width, isRTL, tickValues! as Date[]);\n break;\n default:\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n } else {\n // String Axis type\n switch (chartType) {\n case ChartTypes.VerticalStackedBarChart:\n case ChartTypes.GroupedVerticalBarChart:\n case ChartTypes.VerticalBarChart:\n case ChartTypes.HeatMapChart:\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n break;\n default:\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n }\n }\n return domainNRangeValue;\n}\n\n/**\n * Calculating start and ending values of the Area chart and LineChart\n * @export\n * @param {ILineChartPoints[]} points\n * @returns {{ startValue: number; endValue: number }}\n */\nexport function findNumericMinMaxOfY(points: ILineChartPoints[]): { startValue: number; endValue: number } {\n const yMax = d3Max(points, (point: ILineChartPoints) => {\n return d3Max(point.data, (item: ILineChartDataPoint) => item.y)!;\n })!;\n const yMin = d3Min(points, (point: ILineChartPoints) => {\n return d3Min(point.data, (item: ILineChartDataPoint) => item.y)!;\n })!;\n\n return {\n startValue: yMin,\n endValue: yMax,\n };\n}\n\n/**\n * Find the minimum and maximum values of the vertical stacked bar chart y axis data point. Used for create y axis.\n * @export\n * @param {IDataPoint[]} dataset\n * @returns {{ startValue: number; endValue: number }}\n */\nexport function findVSBCNumericMinMaxOfY(dataset: IDataPoint[]): { startValue: number; endValue: number } {\n const yMax = d3Max(dataset, (point: IDataPoint) => point.y)!;\n const yMin = d3Min(dataset, (point: IDataPoint) => point.y)!;\n\n return { startValue: yMin, endValue: yMax };\n}\n\n/**\n * Fins the min and max values of the vertical bar chart y axis data point.\n * @export\n * @param {IVerticalBarChartDataPoint[]} points\n * @returns {{ startValue: number; endValue: number }}\n */\nexport function findVerticalNumericMinMaxOfY(points: IVerticalBarChartDataPoint[]): {\n startValue: number;\n endValue: number;\n} {\n const yMax = d3Max(points, (point: IVerticalBarChartDataPoint) => {\n if (point.lineData !== undefined) {\n if (point.y > point.lineData!.y) {\n return point.y;\n } else {\n return point.lineData!.y;\n }\n } else {\n return point.y;\n }\n })!;\n const yMin = d3Min(points, (point: IVerticalBarChartDataPoint) => {\n if (point.lineData !== undefined) {\n if (point.y < point.lineData!.y) {\n return point.y;\n } else {\n return point.lineData!.y;\n }\n } else {\n return point.y;\n }\n })!;\n\n return { startValue: yMin, endValue: yMax };\n}\n/**\n * Fins the min and max values of the vertical bar chart y axis data point.\n * @export\n * @param {IVerticalBarChartDataPoint[]} points\n * @returns {{ startValue: number; endValue: number }}\n */\nexport function findHBCWANumericMinMaxOfY(\n points: IHorizontalBarChartWithAxisDataPoint[],\n yAxisType: YAxisType | undefined,\n): { startValue: number; endValue: number } {\n if (yAxisType !== undefined && yAxisType === YAxisType.NumericAxis) {\n const yMax = d3Max(points, (point: IHorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n const yMin = d3Min(points, (point: IHorizontalBarChartWithAxisDataPoint) => point.y as number)!;\n\n return { startValue: yMin, endValue: yMax };\n }\n return { startValue: 0, endValue: 0 };\n}\n\n/**\n * For creating Y axis, need to calculate y axis domain values from given points. This may vary based on chart type.\n * So, this method will define which method need to call based on chart type to find out min and max values(For Domain).\n * For grouped vertical bar chart, Calculating yMax value in the base file and sending as MaxOfYVal to cartesian.\n * @export\n * @param {*} points\n * @param {ChartTypes} chartType\n * @returns {{ startValue: number; endValue: number }}\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getMinMaxOfYAxis(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n points: any,\n chartType: ChartTypes,\n yAxisType: YAxisType | undefined = YAxisType.NumericAxis,\n): { startValue: number; endValue: number } {\n let minMaxValues: { startValue: number; endValue: number };\n\n switch (chartType) {\n case ChartTypes.AreaChart:\n case ChartTypes.LineChart:\n minMaxValues = findNumericMinMaxOfY(points);\n break;\n case ChartTypes.VerticalStackedBarChart:\n minMaxValues = findVSBCNumericMinMaxOfY(points);\n break;\n case ChartTypes.VerticalBarChart:\n minMaxValues = findVerticalNumericMinMaxOfY(points);\n break;\n case ChartTypes.HorizontalBarChartWithAxis:\n minMaxValues = findHBCWANumericMinMaxOfY(points, yAxisType);\n break;\n default:\n minMaxValues = { startValue: 0, endValue: 0 };\n }\n\n return minMaxValues;\n}\n\n/**\n * @param p string or number or Date\n *\n * This function takes the single data point of the x-aixs\n * and decides what is the x-axis\n */\nexport const getTypeOfAxis = (p: string | number | Date, isXAsix: boolean): XAxisTypes | YAxisType => {\n if (isXAsix) {\n switch (typeof p) {\n case 'string':\n return XAxisTypes.StringAxis;\n case 'number':\n return XAxisTypes.NumericAxis;\n default:\n return XAxisTypes.DateAxis;\n }\n } else {\n switch (typeof p) {\n case 'string':\n return YAxisType.StringAxis;\n case 'number':\n return YAxisType.NumericAxis;\n default:\n return YAxisType.DateAxis;\n }\n }\n};\n\n/**\n * we need to make sure that if we add any property to this, then\n * we need to also add that in pointTypes below and vise-versa\n */\n\nexport enum Points {\n circle,\n square,\n triangle,\n diamond,\n pyramid,\n hexagon,\n pentagon,\n octagon,\n}\n\nexport enum CustomPoints {\n dottedLine,\n}\n\nexport type PointTypes = {\n [key in number]: {\n /**\n * For certian shapes like pentagon, hexagon and octagon.\n * the width of the bouding box increase by the time of the\n * length of the side, so when we want to render a pentagon\n * having each side of length 7 units we need to decrease it's\n * units by width ratio so that the bounding box width of the pentagon\n * stays as 7\n */\n widthRatio: number;\n };\n};\n\n/**\n * we need to make sure that if we add any property to this, then\n * we need to also add that in enum Point and vise-versa\n */\n\nexport const pointTypes: PointTypes = {\n [Points.circle]: {\n widthRatio: 1,\n },\n [Points.square]: {\n widthRatio: 1,\n },\n [Points.triangle]: {\n widthRatio: 1,\n },\n [Points.diamond]: {\n widthRatio: 1,\n },\n [Points.pyramid]: {\n widthRatio: 1,\n },\n [Points.hexagon]: {\n widthRatio: 2,\n },\n [Points.pentagon]: {\n widthRatio: 1.168,\n },\n [Points.octagon]: {\n widthRatio: 2.414,\n },\n};\n\n/**\n * @param accessibleData accessible data\n * @param role string to define role of tag\n * @param isDataFocusable boolean\n * function returns the accessibility data object\n */\nexport const getAccessibleDataObject = (\n accessibleData?: IAccessibilityProps,\n role: string = 'text',\n isDataFocusable: boolean = true,\n) => {\n accessibleData = accessibleData ?? {};\n return {\n role,\n 'data-is-focusable': isDataFocusable,\n 'aria-label': accessibleData!.ariaLabel,\n 'aria-labelledby': accessibleData!.ariaLabelledBy,\n 'aria-describedby': accessibleData!.ariaDescribedBy,\n };\n};\n\ntype LocaleStringDataProps = number | string | Date | undefined;\nexport const convertToLocaleString = (data: LocaleStringDataProps, culture?: string): LocaleStringDataProps => {\n if (!data) {\n return data;\n }\n culture = culture || undefined;\n if (typeof data === 'number') {\n return data.toLocaleString(culture);\n }\n if (typeof data === 'string' && !window.isNaN(Number(data))) {\n const num = Number(data);\n return num.toLocaleString(culture);\n }\n return data;\n};\n\nexport function rotateXAxisLabels(rotateLabelProps: IRotateLabelProps) {\n const { node, xAxis } = rotateLabelProps;\n if (node === null || xAxis === null) {\n return;\n }\n\n let maxHeight: number = 0;\n const xAxisTranslations: string[] = [];\n d3Select(node)\n .call(xAxis)\n .selectAll('.tick')\n .each(function () {\n const translateValue = (this as SVGElement).getAttribute('transform');\n if (translateValue?.indexOf('rotate') === -1) {\n const translatePair = translateValue\n .substring(translateValue.indexOf('(') + 1, translateValue.indexOf(')'))\n .split(',');\n if (translatePair.length === 2) {\n xAxisTranslations.push(translatePair[0]);\n (this as SVGElement).setAttribute('transform', `translate(${translatePair[0]},0)rotate(-45)`);\n }\n }\n\n const BoxCordinates = (this as HTMLElement).getBoundingClientRect();\n const boxHeight = BoxCordinates && BoxCordinates.height;\n if (boxHeight > maxHeight) {\n maxHeight = boxHeight;\n }\n });\n\n let idx = 0;\n d3Select(node)\n .call(xAxis)\n .selectAll('.tick')\n .each(function () {\n if (xAxisTranslations.length > idx) {\n (this as SVGElement).setAttribute(\n 'transform',\n `translate(${xAxisTranslations[idx]},${maxHeight / 2})rotate(-45)`,\n ); // Translate y by max height/2\n idx += 1;\n }\n });\n\n return Math.floor(maxHeight / 1.414); // Compute maxHeight/tanInverse(45) to get the vertical height of labels.\n}\n\nexport function wrapTextInsideDonut(selectorClass: string, maxWidth: number) {\n let idx: number = 0;\n d3SelectAll(`.${selectorClass}`).each(function () {\n const text = d3Select(this);\n const words = text.text().split(/\\s+/).reverse();\n let word: string = '';\n let line: string[] = [];\n let lineNumber: number = 0;\n const lineHeight = 1.1; // ems\n const y = text.attr('y');\n\n let tspan = text\n .text(null)\n .append('tspan')\n .attr('id', `WordBreakId-${idx}-${lineNumber}`)\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', lineNumber++ * lineHeight + 'em');\n\n while ((word = words.pop()!)) {\n line.push(word);\n tspan.text(line.join(' ') + ' ');\n if (tspan.node()!.getComputedTextLength() > maxWidth && line.length > 1) {\n line.pop();\n tspan.text(line.join(' ') + ' ');\n line = [word];\n tspan = text\n .append('tspan')\n .attr('id', `WordBreakId-${idx}-${lineNumber}`)\n .attr('x', 0)\n .attr('y', y)\n .attr('dy', lineNumber++ * lineHeight + 'em')\n .text(word);\n }\n }\n idx += 1;\n });\n}\n\nexport function formatValueWithSIPrefix(value: number) {\n let specifier: string;\n if (value < 1000) {\n specifier = '.2~'; // upto 2 decimal places without insignificant trailing zeros\n } else {\n specifier = '.1'; // upto 1 decimal place\n }\n\n return d3FormatPrefix(specifier, value)(value);\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  define(["require", "exports", "@fluentui/set-version"], function (require, exports, set_version_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- (0, set_version_1.setVersion)('@fluentui/react-charting', '5.19.8');
4
+ (0, set_version_1.setVersion)('@fluentui/react-charting', '5.19.9');
5
5
  });
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"../src/","sources":["version.ts"],"names":[],"mappings":";;;IAGA,IAAA,wBAAU,EAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/react-charting', '5.19.8');"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"../src/","sources":["version.ts"],"names":[],"mappings":";;;IAGA,IAAA,wBAAU,EAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/react-charting', '5.19.9');"]}
@@ -7,7 +7,7 @@ import { ICalloutProps } from '@fluentui/react/lib/Callout';
7
7
  import { ILegendsProps } from '../Legends/index';
8
8
  import { IAccessibilityProps, IMargins } from '../../types/index';
9
9
  import { ChartTypes, IChartHoverCardProps, XAxisTypes, YAxisType } from '../../utilities/index';
10
- import * as d3TimeFormat from 'd3-time-format';
10
+ import { TimeLocaleDefinition } from 'd3-time-format';
11
11
  /**
12
12
  * Cartesian Chart style properties
13
13
  * {@docCategory CartesianChart}
@@ -302,7 +302,7 @@ export interface ICartesianChartProps {
302
302
  /**
303
303
  * The prop used to define a custom locale for the date time format.
304
304
  */
305
- timeFormatLocale?: d3TimeFormat.TimeLocaleDefinition;
305
+ timeFormatLocale?: TimeLocaleDefinition;
306
306
  /**
307
307
  * The prop used to define a custom datetime formatter for date axis.
308
308
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CartesianChart.types.js","sourceRoot":"../src/","sources":["components/CommonComponents/CartesianChart.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IOverflowSetProps } from '@fluentui/react/lib/OverflowSet';\nimport { IFocusZoneProps, FocusZoneDirection } from '@fluentui/react-focus';\nimport { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport { ILegendsProps } from '../Legends/index';\nimport { IAccessibilityProps, IMargins } from '../../types/index';\nimport { ChartTypes, IChartHoverCardProps, XAxisTypes, YAxisType } from '../../utilities/index';\nimport * as d3TimeFormat from 'd3-time-format';\n\n/**\n * Cartesian Chart style properties\n * {@docCategory CartesianChart}\n */\nexport interface ICartesianChartStyleProps {\n /**\n * Theme (provided through customization.)\n */\n theme: ITheme;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Width of the chart.\n */\n width?: number;\n\n /**\n * Height of the chart.\n */\n height?: number;\n\n /**\n * Color of the chart.\n */\n color?: string;\n\n /**\n * Link to redirect if click action for graph\n */\n href?: string;\n\n /**\n * prop to check if the chart is selected or hovered upon to determine opacity\n */\n shouldHighlight?: boolean;\n\n /**\n * prop to check if the Page is in Rtl\n */\n isRtl?: boolean;\n\n /**\n * color of the line\n */\n lineColor?: string;\n\n /**\n * boolean flag which determines if shape is drawn in callout\n */\n toDrawShape?: boolean;\n}\n\n/**\n * Cartesian Chart styles\n * {@docCategory CartesianChart}\n */\nexport interface ICartesianChartStyles {\n /**\n * Style for the root element.\n */\n root?: IStyle;\n\n /**\n * Style for the element containing the x-axis.\n */\n xAxis?: IStyle;\n\n /**\n * Style for the element containing the y-axis.\n */\n yAxis?: IStyle;\n\n /**\n * Style for legend container\n */\n legendContainer?: IStyle;\n\n /**\n * line hover box css\n */\n hover?: IStyle;\n\n /**\n * styles for callout root-content\n */\n calloutContentRoot?: IStyle;\n\n /**\n * styles for callout x-content\n */\n calloutContentX?: IStyle;\n\n /**\n * styles for callout y-content\n */\n calloutContentY?: IStyle;\n\n /**\n * styles for description message\n */\n descriptionMessage?: IStyle;\n\n /**\n * styles for callout Date time container\n */\n calloutDateTimeContainer?: IStyle;\n\n /**\n * styles for callout info container\n */\n calloutInfoContainer?: IStyle;\n\n /**\n * styles for callout block container\n */\n calloutBlockContainer?: IStyle;\n\n /**\n * styles for callout legend text\n */\n calloutlegendText?: IStyle;\n\n /**\n * styles for tooltip\n */\n tooltip?: IStyle;\n\n /**\n * styles for tooltip\n */\n axisTitle?: IStyle;\n\n /**\n * Style for the chart Title.\n */\n chartTitle?: IStyle;\n\n /**\n * Style to change the opacity of bars in dataviz when we hover on a single bar or legends\n */\n opacityChangeOnHover?: IStyle;\n\n /**\n * styles for the shape object in the callout\n */\n shapeStyles?: IStyle;\n\n /**\n * Styles for the chart wrapper div\n */\n chartWrapper?: IStyle;\n}\n\n/**\n * Cartesian Chart properties\n * {@docCategory CartesianChart}\n */\nexport interface ICartesianChartProps {\n /**\n * Below height used for resizing of the chart\n * Wrap chart in your container and send the updated height and width to these props.\n * These values decide wheather chart re render or not. Please check examples for reference\n */\n height?: number;\n\n /**\n * Below width used for resizing of the chart\n * Wrap chart in your container and send the updated height and width to these props.\n * These values decide wheather chart re render or not. Please check examples for reference\n */\n width?: number;\n\n /**\n * this prop takes its parent as a HTML element to define the width and height of the chart\n */\n parentRef?: HTMLElement | null;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * Margins for the chart\n * @default `{ top: 20, bottom: 35, left: 40, right: 20 }`\n * To avoid edge cuttings to the chart, we recommend you use default values or greater then default values\n */\n margins?: IMargins;\n\n /** decides wether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /**\n * Do not show tooltips in chart\n * @default false\n */\n hideTooltip?: boolean;\n\n /**\n * this prop takes values that you want the chart to render on x-axis\n * This is a optional parameter if not specified D3 will decide which values appear on the x-axis for you\n * Please look at https://github.com/d3/d3-scale for more information on how D3 decides what data to appear on the axis of chart\n */\n tickValues?: number[] | Date[];\n\n /**\n * the format for the data on x-axis. For date object this can be specified to your requirement. Eg: '%m/%d', '%d'\n * Please look at https://github.com/d3/d3-time-format for all the formats supported for date axis\n * Only applicable for date axis. For y-axis format use yAxisTickFormat prop.\n */\n tickFormat?: string;\n\n /**\n * Width of line stroke\n */\n strokeWidth?: number;\n\n /**\n * x Axis labels tick padding. This defines the gap between tick labels and tick lines.\n * @default 10\n */\n xAxisTickPadding?: number;\n\n /**\n * the format in for the data on y-axis. For data object this can be specified to your requirement.\n * Eg: d3.format(\".0%\")(0.123),d3.format(\"+20\")(42);\n * Please look at https://github.com/d3/d3-format for all the formats supported\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxisTickFormat?: any;\n\n /**\n * Secondary y-scale options\n * By default this is not defined, meaning there will be no secondary y-scale.\n */\n secondaryYScaleOptions?: {\n /** Minimum value (0 by default) */\n yMinValue?: number;\n /** Maximum value (100 by default) */\n yMaxValue?: number;\n };\n\n /**\n * minimum data value point in y-axis\n */\n yMinValue?: number;\n\n /**\n * maximum data value point in y-axis\n */\n yMaxValue?: number;\n\n /**\n * maximum data value point in x-axis\n */\n xMaxValue?: number;\n\n /**\n * Number of ticks on the y-axis.\n * Tick count should be factor of difference between (yMinValue, yMaxValue)?\n * @default 4\n */\n yAxisTickCount?: number;\n\n /**\n * defines the number of ticks on the x-axis. Tries to match the nearest interval satisfying the count.\n * Does not work for string axis.\n * @default 6\n */\n xAxisTickCount?: number;\n\n /**\n * define the size of the tick lines on the x-axis\n * @default 10\n */\n xAxistickSize?: number;\n\n /**\n * defines the space between the tick line and the data label\n * @default 10\n */\n tickPadding?: number;\n\n /**\n * Url that the data-viz needs to redirect to upon clicking on it\n */\n href?: string;\n\n /**\n * Label to apply to the whole chart.\n * @deprecated - Use your chart label for the chart.\n */\n chartLabel?: string;\n\n /**\n * overflow props for the legends\n */\n legendsOverflowProps?: Partial<IOverflowSetProps>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n legendsOverflowText?: any;\n\n /**\n * focus zone props in hover card for legends\n */\n focusZonePropsForLegendsInHoverCard?: IFocusZoneProps;\n\n /**\n * Enable the legends to wrap lines if there is not enough space to show all legends on a single line\n */\n enabledLegendsWrapLines?: boolean;\n\n /*\n * props for the legends in the chart\n */\n legendProps?: Partial<ILegendsProps>;\n\n /**\n *@default false\n *Used for to elipse x axis labes and show tooltip on x axis labels\n */\n showXAxisLablesTooltip?: boolean;\n\n /**\n * @default 4\n * Used for X axis labels\n * While Giving showXAxisLablesTooltip prop, need to define after how many chars, we need to truncate the word.\n */\n noOfCharsToTruncate?: number;\n\n /**\n * @default false\n * Used to wrap x axis labels values (whole value)\n */\n wrapXAxisLables?: boolean;\n\n /**\n * @default false\n * Used to rotate x axis labels by 45 degrees\n */\n rotateXAxisLables?: boolean;\n\n /**\n * The prop used to define the date time localization options\n */\n dateLocalizeOptions?: Intl.DateTimeFormatOptions;\n\n /**\n * The prop used to define a custom locale for the date time format.\n */\n timeFormatLocale?: d3TimeFormat.TimeLocaleDefinition;\n\n /**\n * The prop used to define a custom datetime formatter for date axis.\n */\n customDateTimeFormatter?: (dateTime: Date) => string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<ICartesianChartStyleProps, ICartesianChartStyles>;\n\n /**\n * Callout customization props\n */\n calloutProps?: Partial<ICalloutProps>;\n\n /**\n * props for the svg; use this to include aria-* or other attributes on the tag\n */\n svgProps?: React.SVGProps<SVGSVGElement>;\n\n /**\n * Prop to disable shrinking of the chart beyond a certain limit and enable scrolling when the chart overflows\n * @default True for LineChart but False for other charts\n */\n enableReflow?: boolean;\n\n /**\n * Prop to set the x axis title\n * @default undefined\n * Minimum bottom margin required for x axis title is 55px\n */\n\n xAxisTitle?: string;\n\n /**\n * Prop to set the y axis title\n * @default undefined\n * Minimum left margin required for y axis title is 60px and for RTL is 40px\n * Minimum right margin required for y axis title is 40px and for RTL is 60px\n */\n yAxisTitle?: string;\n\n /**\n * Prop to set the secondary y axis title\n * @default undefined\n * If RTL is enabled, minimum left and right margins required for secondary y axis title is 60px\n */\n secondaryYAxistitle?: string;\n}\n\nexport interface IYValueHover {\n legend?: string;\n y?: number;\n color?: string;\n data?: string | number;\n shouldDrawBorderBottom?: boolean;\n yAxisCalloutData?: string | { [id: string]: number };\n index?: number;\n callOutAccessibilityData?: IAccessibilityProps;\n}\n\nexport interface IChildProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScale?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: any;\n containerHeight?: number;\n containerWidth?: number;\n}\n\n// Only used for Cartesian chart base\nexport interface IModifiedCartesianChartProps extends ICartesianChartProps {\n /**\n * Define the chart title\n */\n chartTitle?: string;\n\n /**\n * Only used for Area chart\n * Value used to draw y axis of that chart.\n */\n maxOfYVal?: number;\n\n /**\n * Data of the chart\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n points: any;\n\n /**\n * Define type of the chart\n */\n chartType: ChartTypes;\n\n /** X axis type */\n xAxisType: XAxisTypes;\n\n /** Y axis type */\n yAxisType?: YAxisType;\n\n /**\n * Legends of the chart.\n */\n legendBars: JSX.Element | null;\n\n /**\n * Callout props\n */\n calloutProps: Partial<ICalloutProps> & {\n isCalloutVisible: boolean;\n id: string;\n YValueHover?: IYValueHover[];\n hoverXValue?: string | number | null;\n legend?: string;\n color?: string;\n YValue?: string | number;\n XValue?: string;\n descriptionMessage?: string;\n };\n\n /**\n * Callback method used for to get margins to the chart.\n */\n getmargins?: (margins: IMargins) => void;\n\n /**\n * This is a call back method to the chart from cartesian chart.\n * params are xScale, yScale, containerHeight, containerWidth. These values were used to draw the graph.\n * It also contians an optional param xAxisElement - defines as x axis scale element.\n * This param used to enable feature word wrap of Xaxis.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getGraphData?: any;\n\n /**\n * Used for bar chart graphs.\n * To define width of the bar\n */\n barwidth?: number;\n\n /**\n * Used for tick styles of the x axis of the chart\n * Tick params are applicable for date axis only.\n */\n tickParams?: {\n tickValues?: number[] | Date[];\n tickFormat?: string;\n };\n\n /**\n * it's padding between bar's or lines in the graph\n */\n xAxisPadding?: number;\n\n /**\n * it's padding between bar's or lines in the graph\n */\n yAxisPadding?: number;\n\n /**\n * Children elements specific to derived chart types.\n */\n children(props: IChildProps): React.ReactNode;\n\n /**\n * To enable callout for individualbar or complete stack. Using for only Vertical stacked bar chart.\n * @default false\n * @type \\{boolean \\}\n */\n isCalloutForStack?: boolean;\n\n /** dataset values to find out domain of the String axis\n * Present using for only vertical stacked bar chart and grouped vertical bar chart\n */\n datasetForXAxisDomain?: string[];\n\n /** Own callout design */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n customizedCallout?: any;\n\n /**\n * if the data points for the y-axis is of type string, then we need to give this\n * prop to construct the y-axis\n */\n stringDatasetForYAxisDomain?: string[];\n\n /**\n * Focus zone direction to the chart\n * @default FocusZoneDirection.horizontal\n */\n focusZoneDirection?: FocusZoneDirection;\n\n /**\n * props to send into the chart hover card\n */\n chartHoverProps?: IChartHoverCardProps;\n\n /**\n * props to send to the focuszone\n */\n svgFocusZoneProps?: IFocusZoneProps;\n\n /**\n * The prop used to define the culture to localize the numbers and date\n */\n culture?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getAxisData?: any;\n\n /**\n * Callback method used when mouse leaves the chart boundary.\n */\n onChartMouseLeave?: () => void;\n\n /** Callback method to get extra margins for domain */\n getDomainMargins?: (containerWidth: number) => IMargins;\n\n /** Padding between each bar/line-point */\n xAxisInnerPadding?: number;\n\n /** Padding before first bar/line-point and after last bar/line-point */\n xAxisOuterPadding?: number;\n\n /**\n *@default false\n *Used for to elipse y axis labes and show tooltip on x axis labels\n */\n showYAxisLablesTooltip?: boolean;\n\n /**\n *@default false\n *Used for showing complete y axis lables */\n showYAxisLables?: boolean;\n\n /**\n * @default false\n * Used to control the first render cycle Performance optimization code.\n */\n enableFirstRenderOptimization?: boolean;\n}\n"]}
1
+ {"version":3,"file":"CartesianChart.types.js","sourceRoot":"../src/","sources":["components/CommonComponents/CartesianChart.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IOverflowSetProps } from '@fluentui/react/lib/OverflowSet';\nimport { IFocusZoneProps, FocusZoneDirection } from '@fluentui/react-focus';\nimport { ICalloutProps } from '@fluentui/react/lib/Callout';\nimport { ILegendsProps } from '../Legends/index';\nimport { IAccessibilityProps, IMargins } from '../../types/index';\nimport { ChartTypes, IChartHoverCardProps, XAxisTypes, YAxisType } from '../../utilities/index';\nimport { TimeLocaleDefinition } from 'd3-time-format';\n\n/**\n * Cartesian Chart style properties\n * {@docCategory CartesianChart}\n */\nexport interface ICartesianChartStyleProps {\n /**\n * Theme (provided through customization.)\n */\n theme: ITheme;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Width of the chart.\n */\n width?: number;\n\n /**\n * Height of the chart.\n */\n height?: number;\n\n /**\n * Color of the chart.\n */\n color?: string;\n\n /**\n * Link to redirect if click action for graph\n */\n href?: string;\n\n /**\n * prop to check if the chart is selected or hovered upon to determine opacity\n */\n shouldHighlight?: boolean;\n\n /**\n * prop to check if the Page is in Rtl\n */\n isRtl?: boolean;\n\n /**\n * color of the line\n */\n lineColor?: string;\n\n /**\n * boolean flag which determines if shape is drawn in callout\n */\n toDrawShape?: boolean;\n}\n\n/**\n * Cartesian Chart styles\n * {@docCategory CartesianChart}\n */\nexport interface ICartesianChartStyles {\n /**\n * Style for the root element.\n */\n root?: IStyle;\n\n /**\n * Style for the element containing the x-axis.\n */\n xAxis?: IStyle;\n\n /**\n * Style for the element containing the y-axis.\n */\n yAxis?: IStyle;\n\n /**\n * Style for legend container\n */\n legendContainer?: IStyle;\n\n /**\n * line hover box css\n */\n hover?: IStyle;\n\n /**\n * styles for callout root-content\n */\n calloutContentRoot?: IStyle;\n\n /**\n * styles for callout x-content\n */\n calloutContentX?: IStyle;\n\n /**\n * styles for callout y-content\n */\n calloutContentY?: IStyle;\n\n /**\n * styles for description message\n */\n descriptionMessage?: IStyle;\n\n /**\n * styles for callout Date time container\n */\n calloutDateTimeContainer?: IStyle;\n\n /**\n * styles for callout info container\n */\n calloutInfoContainer?: IStyle;\n\n /**\n * styles for callout block container\n */\n calloutBlockContainer?: IStyle;\n\n /**\n * styles for callout legend text\n */\n calloutlegendText?: IStyle;\n\n /**\n * styles for tooltip\n */\n tooltip?: IStyle;\n\n /**\n * styles for tooltip\n */\n axisTitle?: IStyle;\n\n /**\n * Style for the chart Title.\n */\n chartTitle?: IStyle;\n\n /**\n * Style to change the opacity of bars in dataviz when we hover on a single bar or legends\n */\n opacityChangeOnHover?: IStyle;\n\n /**\n * styles for the shape object in the callout\n */\n shapeStyles?: IStyle;\n\n /**\n * Styles for the chart wrapper div\n */\n chartWrapper?: IStyle;\n}\n\n/**\n * Cartesian Chart properties\n * {@docCategory CartesianChart}\n */\nexport interface ICartesianChartProps {\n /**\n * Below height used for resizing of the chart\n * Wrap chart in your container and send the updated height and width to these props.\n * These values decide wheather chart re render or not. Please check examples for reference\n */\n height?: number;\n\n /**\n * Below width used for resizing of the chart\n * Wrap chart in your container and send the updated height and width to these props.\n * These values decide wheather chart re render or not. Please check examples for reference\n */\n width?: number;\n\n /**\n * this prop takes its parent as a HTML element to define the width and height of the chart\n */\n parentRef?: HTMLElement | null;\n\n /**\n * Additional CSS class(es) to apply to the Chart.\n */\n className?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * Margins for the chart\n * @default `{ top: 20, bottom: 35, left: 40, right: 20 }`\n * To avoid edge cuttings to the chart, we recommend you use default values or greater then default values\n */\n margins?: IMargins;\n\n /** decides wether to show/hide legends\n * @defaultvalue false\n */\n hideLegend?: boolean;\n\n /**\n * Do not show tooltips in chart\n * @default false\n */\n hideTooltip?: boolean;\n\n /**\n * this prop takes values that you want the chart to render on x-axis\n * This is a optional parameter if not specified D3 will decide which values appear on the x-axis for you\n * Please look at https://github.com/d3/d3-scale for more information on how D3 decides what data to appear on the axis of chart\n */\n tickValues?: number[] | Date[];\n\n /**\n * the format for the data on x-axis. For date object this can be specified to your requirement. Eg: '%m/%d', '%d'\n * Please look at https://github.com/d3/d3-time-format for all the formats supported for date axis\n * Only applicable for date axis. For y-axis format use yAxisTickFormat prop.\n */\n tickFormat?: string;\n\n /**\n * Width of line stroke\n */\n strokeWidth?: number;\n\n /**\n * x Axis labels tick padding. This defines the gap between tick labels and tick lines.\n * @default 10\n */\n xAxisTickPadding?: number;\n\n /**\n * the format in for the data on y-axis. For data object this can be specified to your requirement.\n * Eg: d3.format(\".0%\")(0.123),d3.format(\"+20\")(42);\n * Please look at https://github.com/d3/d3-format for all the formats supported\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxisTickFormat?: any;\n\n /**\n * Secondary y-scale options\n * By default this is not defined, meaning there will be no secondary y-scale.\n */\n secondaryYScaleOptions?: {\n /** Minimum value (0 by default) */\n yMinValue?: number;\n /** Maximum value (100 by default) */\n yMaxValue?: number;\n };\n\n /**\n * minimum data value point in y-axis\n */\n yMinValue?: number;\n\n /**\n * maximum data value point in y-axis\n */\n yMaxValue?: number;\n\n /**\n * maximum data value point in x-axis\n */\n xMaxValue?: number;\n\n /**\n * Number of ticks on the y-axis.\n * Tick count should be factor of difference between (yMinValue, yMaxValue)?\n * @default 4\n */\n yAxisTickCount?: number;\n\n /**\n * defines the number of ticks on the x-axis. Tries to match the nearest interval satisfying the count.\n * Does not work for string axis.\n * @default 6\n */\n xAxisTickCount?: number;\n\n /**\n * define the size of the tick lines on the x-axis\n * @default 10\n */\n xAxistickSize?: number;\n\n /**\n * defines the space between the tick line and the data label\n * @default 10\n */\n tickPadding?: number;\n\n /**\n * Url that the data-viz needs to redirect to upon clicking on it\n */\n href?: string;\n\n /**\n * Label to apply to the whole chart.\n * @deprecated - Use your chart label for the chart.\n */\n chartLabel?: string;\n\n /**\n * overflow props for the legends\n */\n legendsOverflowProps?: Partial<IOverflowSetProps>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n legendsOverflowText?: any;\n\n /**\n * focus zone props in hover card for legends\n */\n focusZonePropsForLegendsInHoverCard?: IFocusZoneProps;\n\n /**\n * Enable the legends to wrap lines if there is not enough space to show all legends on a single line\n */\n enabledLegendsWrapLines?: boolean;\n\n /*\n * props for the legends in the chart\n */\n legendProps?: Partial<ILegendsProps>;\n\n /**\n *@default false\n *Used for to elipse x axis labes and show tooltip on x axis labels\n */\n showXAxisLablesTooltip?: boolean;\n\n /**\n * @default 4\n * Used for X axis labels\n * While Giving showXAxisLablesTooltip prop, need to define after how many chars, we need to truncate the word.\n */\n noOfCharsToTruncate?: number;\n\n /**\n * @default false\n * Used to wrap x axis labels values (whole value)\n */\n wrapXAxisLables?: boolean;\n\n /**\n * @default false\n * Used to rotate x axis labels by 45 degrees\n */\n rotateXAxisLables?: boolean;\n\n /**\n * The prop used to define the date time localization options\n */\n dateLocalizeOptions?: Intl.DateTimeFormatOptions;\n\n /**\n * The prop used to define a custom locale for the date time format.\n */\n timeFormatLocale?: TimeLocaleDefinition;\n\n /**\n * The prop used to define a custom datetime formatter for date axis.\n */\n customDateTimeFormatter?: (dateTime: Date) => string;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<ICartesianChartStyleProps, ICartesianChartStyles>;\n\n /**\n * Callout customization props\n */\n calloutProps?: Partial<ICalloutProps>;\n\n /**\n * props for the svg; use this to include aria-* or other attributes on the tag\n */\n svgProps?: React.SVGProps<SVGSVGElement>;\n\n /**\n * Prop to disable shrinking of the chart beyond a certain limit and enable scrolling when the chart overflows\n * @default True for LineChart but False for other charts\n */\n enableReflow?: boolean;\n\n /**\n * Prop to set the x axis title\n * @default undefined\n * Minimum bottom margin required for x axis title is 55px\n */\n\n xAxisTitle?: string;\n\n /**\n * Prop to set the y axis title\n * @default undefined\n * Minimum left margin required for y axis title is 60px and for RTL is 40px\n * Minimum right margin required for y axis title is 40px and for RTL is 60px\n */\n yAxisTitle?: string;\n\n /**\n * Prop to set the secondary y axis title\n * @default undefined\n * If RTL is enabled, minimum left and right margins required for secondary y axis title is 60px\n */\n secondaryYAxistitle?: string;\n}\n\nexport interface IYValueHover {\n legend?: string;\n y?: number;\n color?: string;\n data?: string | number;\n shouldDrawBorderBottom?: boolean;\n yAxisCalloutData?: string | { [id: string]: number };\n index?: number;\n callOutAccessibilityData?: IAccessibilityProps;\n}\n\nexport interface IChildProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScale?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yScaleSecondary?: any;\n containerHeight?: number;\n containerWidth?: number;\n}\n\n// Only used for Cartesian chart base\nexport interface IModifiedCartesianChartProps extends ICartesianChartProps {\n /**\n * Define the chart title\n */\n chartTitle?: string;\n\n /**\n * Only used for Area chart\n * Value used to draw y axis of that chart.\n */\n maxOfYVal?: number;\n\n /**\n * Data of the chart\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n points: any;\n\n /**\n * Define type of the chart\n */\n chartType: ChartTypes;\n\n /** X axis type */\n xAxisType: XAxisTypes;\n\n /** Y axis type */\n yAxisType?: YAxisType;\n\n /**\n * Legends of the chart.\n */\n legendBars: JSX.Element | null;\n\n /**\n * Callout props\n */\n calloutProps: Partial<ICalloutProps> & {\n isCalloutVisible: boolean;\n id: string;\n YValueHover?: IYValueHover[];\n hoverXValue?: string | number | null;\n legend?: string;\n color?: string;\n YValue?: string | number;\n XValue?: string;\n descriptionMessage?: string;\n };\n\n /**\n * Callback method used for to get margins to the chart.\n */\n getmargins?: (margins: IMargins) => void;\n\n /**\n * This is a call back method to the chart from cartesian chart.\n * params are xScale, yScale, containerHeight, containerWidth. These values were used to draw the graph.\n * It also contians an optional param xAxisElement - defines as x axis scale element.\n * This param used to enable feature word wrap of Xaxis.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getGraphData?: any;\n\n /**\n * Used for bar chart graphs.\n * To define width of the bar\n */\n barwidth?: number;\n\n /**\n * Used for tick styles of the x axis of the chart\n * Tick params are applicable for date axis only.\n */\n tickParams?: {\n tickValues?: number[] | Date[];\n tickFormat?: string;\n };\n\n /**\n * it's padding between bar's or lines in the graph\n */\n xAxisPadding?: number;\n\n /**\n * it's padding between bar's or lines in the graph\n */\n yAxisPadding?: number;\n\n /**\n * Children elements specific to derived chart types.\n */\n children(props: IChildProps): React.ReactNode;\n\n /**\n * To enable callout for individualbar or complete stack. Using for only Vertical stacked bar chart.\n * @default false\n * @type \\{boolean \\}\n */\n isCalloutForStack?: boolean;\n\n /** dataset values to find out domain of the String axis\n * Present using for only vertical stacked bar chart and grouped vertical bar chart\n */\n datasetForXAxisDomain?: string[];\n\n /** Own callout design */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n customizedCallout?: any;\n\n /**\n * if the data points for the y-axis is of type string, then we need to give this\n * prop to construct the y-axis\n */\n stringDatasetForYAxisDomain?: string[];\n\n /**\n * Focus zone direction to the chart\n * @default FocusZoneDirection.horizontal\n */\n focusZoneDirection?: FocusZoneDirection;\n\n /**\n * props to send into the chart hover card\n */\n chartHoverProps?: IChartHoverCardProps;\n\n /**\n * props to send to the focuszone\n */\n svgFocusZoneProps?: IFocusZoneProps;\n\n /**\n * The prop used to define the culture to localize the numbers and date\n */\n culture?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getAxisData?: any;\n\n /**\n * Callback method used when mouse leaves the chart boundary.\n */\n onChartMouseLeave?: () => void;\n\n /** Callback method to get extra margins for domain */\n getDomainMargins?: (containerWidth: number) => IMargins;\n\n /** Padding between each bar/line-point */\n xAxisInnerPadding?: number;\n\n /** Padding before first bar/line-point and after last bar/line-point */\n xAxisOuterPadding?: number;\n\n /**\n *@default false\n *Used for to elipse y axis labes and show tooltip on x axis labels\n */\n showYAxisLablesTooltip?: boolean;\n\n /**\n *@default false\n *Used for showing complete y axis lables */\n showYAxisLables?: boolean;\n\n /**\n * @default false\n * Used to control the first render cycle Performance optimization code.\n */\n enableFirstRenderOptimization?: boolean;\n}\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Arc = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var React = require("react");
6
- var shape = require("d3-shape");
6
+ var d3_shape_1 = require("d3-shape");
7
7
  var Utilities_1 = require("@fluentui/react/lib/Utilities");
8
8
  var Arc_styles_1 = require("./Arc.styles");
9
9
  var d3_format_1 = require("d3-format");
@@ -80,7 +80,7 @@ var Arc = /** @class */ (function (_super) {
80
80
  href ? (window.location.href = href) : '';
81
81
  };
82
82
  Arc.defaultProps = {
83
- arc: shape.arc(),
83
+ arc: (0, d3_shape_1.arc)(),
84
84
  };
85
85
  return Arc;
86
86
  }(React.Component));
@@ -1 +1 @@
1
- {"version":3,"file":"Arc.js","sourceRoot":"../src/","sources":["components/DonutChart/Arc/Arc.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport * as shape from 'd3-shape';\nimport { classNamesFunction, getRTL } from '@fluentui/react/lib/Utilities';\nimport { getStyles } from './Arc.styles';\nimport { IChartDataPoint } from '../index';\nimport { IArcProps, IArcStyles } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatValueWithSIPrefix } from '../../../utilities/index';\n\nexport interface IArcState {\n isCalloutVisible?: boolean;\n}\n\nexport class Arc extends React.Component<IArcProps, IArcState> {\n public static defaultProps: Partial<IArcProps> = {\n arc: shape.arc(),\n };\n\n public state: {} = {};\n\n private currentRef = React.createRef<SVGPathElement>();\n private _isRTL: boolean = getRTL();\n\n public static getDerivedStateFromProps(nextProps: Readonly<IArcProps>): Partial<IArcState> | null {\n _updateChart(nextProps);\n return null;\n }\n\n public updateChart(newProps: IArcProps): void {\n _updateChart(newProps);\n }\n\n public render(): JSX.Element {\n const { arc, href, focusedArcId } = this.props;\n const getClassNames = classNamesFunction<IArcProps, IArcStyles>();\n const classNames = getClassNames(getStyles, {\n color: this.props.color,\n href: href!,\n theme: this.props.theme!,\n });\n const id = this.props.uniqText! + this.props.data!.data.legend!.replace(/\\s+/, '') + this.props.data!.data.data;\n const opacity: number =\n this.props.activeArc === this.props.data!.data.legend || this.props.activeArc === '' ? 1 : 0.1;\n return (\n <g ref={this.currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n <path id={id + 'focusRing'} d={arc(this.props.focusData)} className={classNames.focusRing} />\n )}\n <path\n id={id}\n d={arc(this.props.data)}\n onFocus={this._onFocus.bind(this, this.props.data!.data, id)}\n className={classNames.root}\n data-is-focusable={true}\n onMouseOver={this._hoverOn.bind(this, this.props.data!.data)}\n onMouseMove={this._hoverOn.bind(this, this.props.data!.data)}\n onMouseLeave={this._hoverOff}\n onBlur={this._onBlur}\n opacity={opacity}\n onClick={href ? this._redirectToUrl.bind(this, href) : this.props.data?.data.onClick}\n aria-label={this._getAriaLabel()}\n role=\"img\"\n />\n {this._renderArcLabel(classNames.arcLabel)}\n </g>\n );\n }\n\n private _onFocus(data: IChartDataPoint, id: string): void {\n this.props.onFocusCallback!(data, id, this.currentRef.current);\n }\n\n private _hoverOn(data: IChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n this.props.hoverOnCallback!(data, mouseEvent);\n }\n\n private _hoverOff = (): void => {\n this.props.hoverLeaveCallback!();\n };\n\n private _onBlur = (): void => {\n this.props.onBlurCallback!();\n };\n\n private _redirectToUrl(href: string | undefined): void {\n href ? (window.location.href = href) : '';\n }\n\n private _getAriaLabel = (): string => {\n const point = this.props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n };\n\n private _renderArcLabel = (className: string) => {\n const { arc, data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = this.props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid(data);\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== this._isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatValueWithSIPrefix(arcValue)}\n </text>\n );\n };\n}\n\nfunction _updateChart(newProps: IArcProps): void {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n}\n"]}
1
+ {"version":3,"file":"Arc.js","sourceRoot":"../src/","sources":["components/DonutChart/Arc/Arc.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { classNamesFunction, getRTL } from '@fluentui/react/lib/Utilities';\nimport { getStyles } from './Arc.styles';\nimport { IChartDataPoint } from '../index';\nimport { IArcProps, IArcStyles } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatValueWithSIPrefix } from '../../../utilities/index';\n\nexport interface IArcState {\n isCalloutVisible?: boolean;\n}\n\nexport class Arc extends React.Component<IArcProps, IArcState> {\n public static defaultProps: Partial<IArcProps> = {\n arc: d3Arc(),\n };\n\n public state: {} = {};\n\n private currentRef = React.createRef<SVGPathElement>();\n private _isRTL: boolean = getRTL();\n\n public static getDerivedStateFromProps(nextProps: Readonly<IArcProps>): Partial<IArcState> | null {\n _updateChart(nextProps);\n return null;\n }\n\n public updateChart(newProps: IArcProps): void {\n _updateChart(newProps);\n }\n\n public render(): JSX.Element {\n const { arc, href, focusedArcId } = this.props;\n const getClassNames = classNamesFunction<IArcProps, IArcStyles>();\n const classNames = getClassNames(getStyles, {\n color: this.props.color,\n href: href!,\n theme: this.props.theme!,\n });\n const id = this.props.uniqText! + this.props.data!.data.legend!.replace(/\\s+/, '') + this.props.data!.data.data;\n const opacity: number =\n this.props.activeArc === this.props.data!.data.legend || this.props.activeArc === '' ? 1 : 0.1;\n return (\n <g ref={this.currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n <path id={id + 'focusRing'} d={arc(this.props.focusData)} className={classNames.focusRing} />\n )}\n <path\n id={id}\n d={arc(this.props.data)}\n onFocus={this._onFocus.bind(this, this.props.data!.data, id)}\n className={classNames.root}\n data-is-focusable={true}\n onMouseOver={this._hoverOn.bind(this, this.props.data!.data)}\n onMouseMove={this._hoverOn.bind(this, this.props.data!.data)}\n onMouseLeave={this._hoverOff}\n onBlur={this._onBlur}\n opacity={opacity}\n onClick={href ? this._redirectToUrl.bind(this, href) : this.props.data?.data.onClick}\n aria-label={this._getAriaLabel()}\n role=\"img\"\n />\n {this._renderArcLabel(classNames.arcLabel)}\n </g>\n );\n }\n\n private _onFocus(data: IChartDataPoint, id: string): void {\n this.props.onFocusCallback!(data, id, this.currentRef.current);\n }\n\n private _hoverOn(data: IChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n this.props.hoverOnCallback!(data, mouseEvent);\n }\n\n private _hoverOff = (): void => {\n this.props.hoverLeaveCallback!();\n };\n\n private _onBlur = (): void => {\n this.props.onBlurCallback!();\n };\n\n private _redirectToUrl(href: string | undefined): void {\n href ? (window.location.href = href) : '';\n }\n\n private _getAriaLabel = (): string => {\n const point = this.props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n };\n\n private _renderArcLabel = (className: string) => {\n const { arc, data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels, activeArc } = this.props;\n\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n (activeArc !== data!.data.legend && activeArc !== '')\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid(data);\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== this._isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatValueWithSIPrefix(arcValue)}\n </text>\n );\n };\n}\n\nfunction _updateChart(newProps: IArcProps): void {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n}\n"]}