@fluentui/react-charting 5.16.8 → 5.16.10

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 (42) hide show
  1. package/CHANGELOG.json +49 -1
  2. package/CHANGELOG.md +23 -2
  3. package/dist/react-charting.js +1 -1
  4. package/dist/react-charting.min.js +1 -1
  5. package/lib/components/AreaChart/AreaChart.base.d.ts +5 -0
  6. package/lib/components/AreaChart/AreaChart.base.js +71 -12
  7. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  8. package/lib/components/AreaChart/AreaChart.types.d.ts +1 -0
  9. package/lib/components/AreaChart/AreaChart.types.js.map +1 -1
  10. package/lib/components/Legends/Legends.base.js +13 -5
  11. package/lib/components/Legends/Legends.base.js.map +1 -1
  12. package/lib/components/VerticalBarChart/VerticalBarChart.base.d.ts +2 -0
  13. package/lib/components/VerticalBarChart/VerticalBarChart.base.js +11 -2
  14. package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  15. package/lib/version.js +1 -1
  16. package/lib/version.js.map +1 -1
  17. package/lib-amd/components/AreaChart/AreaChart.base.d.ts +5 -0
  18. package/lib-amd/components/AreaChart/AreaChart.base.js +71 -12
  19. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  20. package/lib-amd/components/AreaChart/AreaChart.types.d.ts +1 -0
  21. package/lib-amd/components/AreaChart/AreaChart.types.js.map +1 -1
  22. package/lib-amd/components/Legends/Legends.base.js +13 -5
  23. package/lib-amd/components/Legends/Legends.base.js.map +1 -1
  24. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.d.ts +2 -0
  25. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +11 -2
  26. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  27. package/lib-amd/version.js +1 -1
  28. package/lib-amd/version.js.map +1 -1
  29. package/lib-commonjs/components/AreaChart/AreaChart.base.d.ts +5 -0
  30. package/lib-commonjs/components/AreaChart/AreaChart.base.js +71 -12
  31. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  32. package/lib-commonjs/components/AreaChart/AreaChart.types.d.ts +1 -0
  33. package/lib-commonjs/components/AreaChart/AreaChart.types.js.map +1 -1
  34. package/lib-commonjs/components/Legends/Legends.base.js +13 -5
  35. package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
  36. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.d.ts +2 -0
  37. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +11 -2
  38. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  39. package/lib-commonjs/version.js +1 -1
  40. package/lib-commonjs/version.js.map +1 -1
  41. package/package.json +3 -3
  42. package/src/components/AreaChart/AreaChart.types.ts +5 -0
@@ -28,6 +28,8 @@ export interface IAreaChartState extends IBasestate {
28
28
  nearestCircleToHighlight: number | string | Date | null;
29
29
  xAxisCalloutAccessibilityData?: IAccessibilityProps;
30
30
  isShowCalloutPending: boolean;
31
+ /** focused point */
32
+ activePoint: string;
31
33
  }
32
34
  export declare class AreaChartBase extends React.Component<IAreaChartProps, IAreaChartState> {
33
35
  private _calloutPoints;
@@ -83,5 +85,8 @@ export declare class AreaChartBase extends React.Component<IAreaChartProps, IAre
83
85
  */
84
86
  private _noLegendHighlighted;
85
87
  private _addDefaultColors;
88
+ private _handleFocus;
89
+ private _handleBlur;
90
+ private _getAriaLabel;
86
91
  }
87
92
  export {};
@@ -93,6 +93,7 @@ var AreaChartBase = /** @class */ (function (_super) {
93
93
  dataPointCalloutProps: found,
94
94
  hoverXValue: xAxisCalloutData ? xAxisCalloutData : formattedDate,
95
95
  xAxisCalloutAccessibilityData: xAxisCalloutAccessibilityData,
96
+ activePoint: '',
96
97
  });
97
98
  }
98
99
  else {
@@ -288,7 +289,7 @@ var AreaChartBase = /** @class */ (function (_super) {
288
289
  };
289
290
  _this._updateCircleFillColor = function (xDataPoint, lineColor, circleId) {
290
291
  var fillColor = lineColor;
291
- if (_this.state.nearestCircleToHighlight === xDataPoint) {
292
+ if (_this.state.nearestCircleToHighlight === xDataPoint || _this.state.activePoint === circleId) {
292
293
  _this._highlightedCircleId = circleId;
293
294
  if (!_this.state.isCircleClicked) {
294
295
  fillColor = _this.props.theme.palette.white;
@@ -320,7 +321,11 @@ var AreaChartBase = /** @class */ (function (_super) {
320
321
  _this._stackedData.forEach(function (singleStackedData, index) {
321
322
  graph.push(React.createElement(React.Fragment, { key: index + "-graph-" + _this._uniqueIdForGraph },
322
323
  React.createElement("path", __assign({ id: index + "-line-" + _this._uniqueIdForGraph, d: line(singleStackedData), fill: 'transparent', strokeWidth: 3, stroke: _this._colors[index], opacity: _this._getLineOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove }, points[index].lineOptions)),
323
- singleStackedData.length === 1 ? (React.createElement("circle", { id: index + "-graph-" + _this._uniqueIdForGraph, cx: xScale(singleStackedData[0].xVal), cy: yScale(singleStackedData[0].values[1]), r: 6, stroke: _this._colors[index], strokeWidth: 3, fill: _this._colors[index], opacity: _this._opacity[index], fillOpacity: _this._getOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove })) : (React.createElement("path", { id: index + "-graph-" + _this._uniqueIdForGraph, d: area(singleStackedData), fill: _this._colors[index], opacity: _this._opacity[index], fillOpacity: _this._getOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove }))));
324
+ singleStackedData.length === 1 ? (React.createElement("circle", { id: index + "-graph-" + _this._uniqueIdForGraph, cx: xScale(singleStackedData[0].xVal), cy: yScale(singleStackedData[0].values[1]), r: 6, stroke: _this._colors[index], strokeWidth: 3, fill: _this._colors[index], opacity: _this._opacity[index], fillOpacity: _this._getOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove })) : (React.createElement("path", __assign({ id: index + "-graph-" + _this._uniqueIdForGraph, d: area(singleStackedData), fill: _this._colors[index], opacity: _this._opacity[index], fillOpacity: _this._getOpacity(points[index].legend), onMouseMove: _this._onRectMouseMove, onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove }, (_this.props.optimizeLargeData && {
325
+ 'data-is-focusable': true,
326
+ role: 'img',
327
+ 'aria-label': points[index].legend + ", series " + (index + 1) + " of " + points.length + " with " + points[index].data.length + " data points.",
328
+ }))))));
324
329
  });
325
330
  var circleRadius = pointOptions && pointOptions.r ? Number(pointOptions.r) : 8;
326
331
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -328,12 +333,26 @@ var AreaChartBase = /** @class */ (function (_super) {
328
333
  if (points.length === index) {
329
334
  return;
330
335
  }
331
- graph.push(React.createElement("g", { key: index + "-dots-" + _this._uniqueIdForGraph, d: area(singleStackedData), clipPath: "url(#clip)" }, singleStackedData.map(function (singlePoint, pointIndex) {
332
- var circleId = _this._circleId + "_" + (index * _this._stackedData[0].length + pointIndex);
333
- var xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;
334
- lineColor = points[index].color;
335
- return (React.createElement("circle", __assign({ key: circleId, id: circleId, "data-is-focusable": true, cx: xScale(singlePoint.xVal), cy: yScale(singlePoint.values[1]), stroke: lineColor, strokeWidth: 3, visibility: _this.state.nearestCircleToHighlight ? 'visibility' : 'hidden', fill: _this._updateCircleFillColor(xDataPoint, lineColor, circleId), onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove, onClick: _this._onDataPointClick.bind(_this, points[index].data[pointIndex].onDataPointClick) }, pointOptions, { r: _this._getCircleRadius(xDataPoint, circleRadius) })));
336
- })));
336
+ if (!_this.props.optimizeLargeData || singleStackedData.length === 1) {
337
+ // Render circles for all data points
338
+ graph.push(React.createElement("g", { key: index + "-dots-" + _this._uniqueIdForGraph, d: area(singleStackedData), clipPath: "url(#clip)" }, singleStackedData.map(function (singlePoint, pointIndex) {
339
+ var circleId = _this._circleId + "_" + (index * _this._stackedData[0].length + pointIndex);
340
+ var xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;
341
+ lineColor = points[index].color;
342
+ return (React.createElement("circle", __assign({ key: circleId, id: circleId, "data-is-focusable": true, cx: xScale(singlePoint.xVal), cy: yScale(singlePoint.values[1]), stroke: lineColor, strokeWidth: 3, fill: _this._updateCircleFillColor(xDataPoint, lineColor, circleId), onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove, onClick: _this._onDataPointClick.bind(_this, points[index].data[pointIndex].onDataPointClick), onFocus: function () { return _this._handleFocus(index, pointIndex, circleId); }, onBlur: _this._handleBlur }, pointOptions, { r: _this._getCircleRadius(xDataPoint, circleRadius, circleId), role: "img", "aria-label": _this._getAriaLabel(index, pointIndex) })));
343
+ })));
344
+ }
345
+ else {
346
+ // Render circles for data points close to the mouse pointer only
347
+ singleStackedData.forEach(function (singlePoint, pointIndex) {
348
+ var xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;
349
+ if (_this.state.nearestCircleToHighlight === xDataPoint) {
350
+ var circleId = _this._circleId + "_" + (index * _this._stackedData[0].length + pointIndex);
351
+ lineColor = points[index].color;
352
+ graph.push(React.createElement("circle", __assign({ key: circleId, id: circleId, cx: xScale(singlePoint.xVal), cy: yScale(singlePoint.values[1]), stroke: lineColor, strokeWidth: 3, fill: _this._updateCircleFillColor(xDataPoint, lineColor, circleId), onMouseOut: _this._onRectMouseOut, onMouseOver: _this._onRectMouseMove, onClick: _this._onDataPointClick.bind(_this, points[index].data[pointIndex].onDataPointClick) }, pointOptions, { r: _this._getCircleRadius(xDataPoint, circleRadius, circleId) })));
353
+ }
354
+ });
355
+ }
337
356
  });
338
357
  graph.push(React.createElement("line", __assign({ id: _this._verticalLineId, key: _this._verticalLineId, x1: _this.state.lineXValue, y1: 0, x2: _this.state.lineXValue, y2: containerHeight, strokeWidth: 1, strokeDasharray: 5.5, stroke: lineColor, opacity: 0.5, visibility: _this.state.displayOfLine }, pointLineOptions)));
339
358
  var classNames = getClassNames(_this.props.styles, {
@@ -364,12 +383,12 @@ var AreaChartBase = /** @class */ (function (_super) {
364
383
  }
365
384
  return graph;
366
385
  };
367
- _this._getCircleRadius = function (xDataPoint, circleRadius) {
368
- var _a = _this.state, isCircleClicked = _a.isCircleClicked, nearestCircleToHighlight = _a.nearestCircleToHighlight;
386
+ _this._getCircleRadius = function (xDataPoint, circleRadius, circleId) {
387
+ var _a = _this.state, isCircleClicked = _a.isCircleClicked, nearestCircleToHighlight = _a.nearestCircleToHighlight, activePoint = _a.activePoint;
369
388
  if (isCircleClicked && nearestCircleToHighlight === xDataPoint) {
370
389
  return 1;
371
390
  }
372
- else if (nearestCircleToHighlight === xDataPoint) {
391
+ else if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {
373
392
  return circleRadius;
374
393
  }
375
394
  else {
@@ -412,6 +431,45 @@ var AreaChartBase = /** @class */ (function (_super) {
412
431
  })
413
432
  : [];
414
433
  };
434
+ _this._handleFocus = function (lineIndex, pointIndex, circleId) {
435
+ var _a = _this.props.data.lineChartData[lineIndex].data[pointIndex], x = _a.x, y = _a.y, xAxisCalloutData = _a.xAxisCalloutData;
436
+ var formattedDate = x instanceof Date ? x.toLocaleString() : x;
437
+ var modifiedXVal = x instanceof Date ? x.getTime() : x;
438
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
439
+ var found = _this._calloutPoints.find(function (e) { return e.x === modifiedXVal; });
440
+ // Show details in the callout for the focused point only
441
+ found.values = found.values.filter(function (e) { return e.y === y; });
442
+ _this.setState({
443
+ refSelected: "#" + circleId,
444
+ isCalloutVisible: true,
445
+ hoverXValue: xAxisCalloutData ? xAxisCalloutData : formattedDate,
446
+ YValueHover: found.values,
447
+ stackCalloutProps: found,
448
+ dataPointCalloutProps: found,
449
+ activePoint: circleId,
450
+ });
451
+ };
452
+ _this._handleBlur = function () {
453
+ _this.setState({
454
+ refSelected: null,
455
+ isCalloutVisible: false,
456
+ hoverXValue: undefined,
457
+ YValueHover: [],
458
+ stackCalloutProps: undefined,
459
+ dataPointCalloutProps: undefined,
460
+ activePoint: '',
461
+ });
462
+ };
463
+ _this._getAriaLabel = function (lineIndex, pointIndex) {
464
+ var _a;
465
+ var line = _this.props.data.lineChartData[lineIndex];
466
+ var point = line.data[pointIndex];
467
+ var formattedDate = point.x instanceof Date ? point.x.toLocaleString() : point.x;
468
+ var xValue = point.xAxisCalloutData || formattedDate;
469
+ var legend = line.legend;
470
+ var yValue = point.yAxisCalloutData || point.y;
471
+ return ((_a = point.callOutAccessibilityData) === null || _a === void 0 ? void 0 : _a.ariaLabel) || xValue + ". " + legend + ", " + yValue + ".";
472
+ };
415
473
  _this._createSet = memoizeFunction(_this._createDataSet);
416
474
  _this.state = {
417
475
  selectedLegend: '',
@@ -425,6 +483,7 @@ var AreaChartBase = /** @class */ (function (_super) {
425
483
  isCircleClicked: false,
426
484
  nearestCircleToHighlight: null,
427
485
  isShowCalloutPending: false,
486
+ activePoint: '',
428
487
  };
429
488
  warnDeprecations(COMPONENT_NAME, props, {
430
489
  showYAxisGridLines: 'Dont use this property. Lines are drawn by default',
@@ -460,7 +519,7 @@ var AreaChartBase = /** @class */ (function (_super) {
460
519
  tickValues: this.props.tickValues,
461
520
  tickFormat: this.props.tickFormat,
462
521
  };
463
- var calloutProps = __assign({ target: this.state.refSelected, isCalloutVisible: this.state.isCalloutVisible, directionalHint: DirectionalHint.topAutoEdge, YValueHover: this.state.YValueHover, hoverXValue: this.state.hoverXValue, id: "toolTip" + this._uniqueCallOutID, gapSpace: 15, isBeakVisible: false, setInitialFocus: true, onDismiss: this._closeCallout, 'data-is-focusable': true, xAxisCalloutAccessibilityData: this.state.xAxisCalloutAccessibilityData }, this.props.calloutProps);
522
+ var calloutProps = __assign({ target: this.state.refSelected, isCalloutVisible: this.state.isCalloutVisible, directionalHint: DirectionalHint.topAutoEdge, YValueHover: this.state.YValueHover, hoverXValue: this.state.hoverXValue, id: "toolTip" + this._uniqueCallOutID, gapSpace: 15, isBeakVisible: false, onDismiss: this._closeCallout, 'data-is-focusable': true, xAxisCalloutAccessibilityData: this.state.xAxisCalloutAccessibilityData }, this.props.calloutProps);
464
523
  return (React.createElement(CartesianChart, __assign({}, this.props, { chartTitle: chartTitle, points: points, chartType: ChartTypes.AreaChart, calloutProps: calloutProps, legendBars: legends, isCalloutForStack: true, xAxisType: isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis, tickParams: tickParams, maxOfYVal: stackedInfo.maxOfYVal, getGraphData: this._getGraphData, getmargins: this._getMargins, customizedCallout: this._getCustomizedCallout(), onChartMouseLeave: this._handleChartMouseLeave,
465
524
  /* eslint-disable react/jsx-no-bind */
466
525
  // eslint-disable-next-line react/no-children-prop
@@ -1 +1 @@
1
- {"version":3,"file":"AreaChart.base.js","sourceRoot":"../src/","sources":["components/AreaChart/AreaChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, bisector } from 'd3-array';\nimport { clientPoint } from 'd3-selection';\nimport { select as d3Select } from 'd3-selection';\nimport { area as d3Area, stack as d3Stack, curveMonotoneX as d3CurveBasis, line as d3Line } from 'd3-shape';\nimport { classNamesFunction, find, getId, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ICustomizedCalloutData,\n IAreaChartProps,\n IBasestate,\n ILineChartDataPoint,\n ILineChartPoints,\n IChildProps,\n IMargins,\n IAreaChartStyleProps,\n IAreaChartStyles,\n} from '../../index';\nimport { warnDeprecations } from '@fluentui/react/lib/Utilities';\nimport {\n calloutData,\n getXAxisType,\n ChartTypes,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n getNextColor,\n getColorFromToken,\n} from '../../utilities/index';\nimport { ILegend, Legends } from '../Legends/index';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\n\nconst getClassNames = classNamesFunction<IAreaChartStyleProps, IAreaChartStyles>();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bisect = bisector((d: any) => d.x).left;\n\nconst COMPONENT_NAME = 'AREA CHART';\n\nenum InterceptVisibility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nexport interface IAreaChartAreaPoint {\n xVal: string | number;\n values: IAreaChartDataSetPoint;\n}\nexport interface IAreaChartDataSetPoint {\n [key: string]: number | string;\n}\nexport interface IDPointType {\n values: { 0: number; 1: number; data: {} };\n xVal: number | Date;\n}\n\nexport interface IAreaChartState extends IBasestate {\n lineXValue: number;\n displayOfLine: InterceptVisibility;\n isCircleClicked: boolean;\n dataPointCalloutProps?: ICustomizedCalloutData;\n stackCalloutProps?: ICustomizedCalloutData;\n nearestCircleToHighlight: number | string | Date | null;\n xAxisCalloutAccessibilityData?: IAccessibilityProps;\n isShowCalloutPending: boolean;\n}\n\nexport class AreaChartBase extends React.Component<IAreaChartProps, IAreaChartState> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _calloutPoints: any;\n private _createSet: (data: ILineChartPoints[]) => {\n colors: string[];\n opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stackedInfo: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutPoints: any;\n };\n private _colors: string[];\n private _opacity: number[];\n private _uniqueIdForGraph: string;\n private _verticalLineId: string;\n private _circleId: string;\n private _uniqueCallOutID: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _stackedData: any;\n private _chart: JSX.Element[];\n private margins: IMargins;\n private _rectId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _xAxisRectScale: any;\n // determines if the given area chart has multiple stacked bar charts\n private _isMultiStackChart: boolean;\n private _tooltipId: string;\n private _highlightedCircleId: string;\n\n public constructor(props: IAreaChartProps) {\n super(props);\n this._createSet = memoizeFunction(this._createDataSet);\n this.state = {\n selectedLegend: '',\n activeLegend: '',\n hoverXValue: '',\n isCalloutVisible: false,\n refSelected: null,\n YValueHover: [],\n lineXValue: 0,\n displayOfLine: InterceptVisibility.hide,\n isCircleClicked: false,\n nearestCircleToHighlight: null,\n isShowCalloutPending: false,\n };\n warnDeprecations(COMPONENT_NAME, props, {\n showYAxisGridLines: 'Dont use this property. Lines are drawn by default',\n });\n this._uniqueIdForGraph = getId('areaChart_');\n this._verticalLineId = getId('verticalLine_');\n this._circleId = getId('circle');\n this._rectId = getId('rectangle');\n this._tooltipId = getId('AreaChartTooltipID');\n }\n\n public componentDidUpdate() {\n if (this.state.isShowCalloutPending) {\n this.setState({\n refSelected: `#${this._highlightedCircleId}`,\n isCalloutVisible: true,\n isShowCalloutPending: false,\n });\n }\n }\n\n public render(): JSX.Element {\n const { lineChartData, chartTitle } = this.props.data;\n const points = this._addDefaultColors(lineChartData);\n const { colors, opacity, stackedInfo, calloutPoints } = this._createSet(points);\n this._calloutPoints = calloutPoints;\n const isXAxisDateType = getXAxisType(points);\n this._colors = colors;\n this._opacity = opacity;\n this._stackedData = stackedInfo.stackedData;\n const legends: JSX.Element = this._getLegendData(points);\n\n const tickParams = {\n tickValues: this.props.tickValues,\n tickFormat: this.props.tickFormat,\n };\n\n const calloutProps = {\n target: this.state.refSelected,\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n id: `toolTip${this._uniqueCallOutID}`,\n gapSpace: 15,\n isBeakVisible: false,\n setInitialFocus: true,\n onDismiss: this._closeCallout,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData: this.state.xAxisCalloutAccessibilityData,\n ...this.props.calloutProps,\n };\n return (\n <CartesianChart\n {...this.props}\n chartTitle={chartTitle}\n points={points}\n chartType={ChartTypes.AreaChart}\n calloutProps={calloutProps}\n legendBars={legends}\n isCalloutForStack\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n tickParams={tickParams}\n maxOfYVal={stackedInfo.maxOfYVal}\n getGraphData={this._getGraphData}\n getmargins={this._getMargins}\n customizedCallout={this._getCustomizedCallout()}\n onChartMouseLeave={this._handleChartMouseLeave}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: IChildProps) => {\n this._xAxisRectScale = props.xScale;\n const ticks = this._xAxisRectScale.ticks();\n const width1 = this._xAxisRectScale(ticks[ticks.length - 1]);\n const rectHeight = props.containerHeight! - this.margins.top!;\n return (\n <>\n <g>\n <rect\n id={this._rectId}\n width={width1}\n height={rectHeight}\n fill={'transparent'}\n onMouseMove={this._onRectMouseMove}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n />\n </g>\n <g>{this._chart}</g>\n </>\n );\n }}\n />\n );\n }\n\n private _getMargins = (margins: IMargins) => {\n this.margins = margins;\n };\n\n private _onRectMouseMove = (mouseEvent: React.MouseEvent<SVGRectElement | SVGPathElement | SVGCircleElement>) => {\n mouseEvent.persist();\n const { data } = this.props;\n const { lineChartData } = data;\n // This will get the value of the X when mouse is on the chart\n const xOffset = this._xAxisRectScale.invert(clientPoint(document.getElementById(this._rectId)!, mouseEvent)[0]);\n const i = bisect(lineChartData![0].data, xOffset);\n const d0 = lineChartData![0].data[i - 1] as ILineChartDataPoint;\n const d1 = lineChartData![0].data[i] as ILineChartDataPoint;\n let axisType: XAxisTypes | null = null;\n let pointToHighlight: string | Date | number | null = null;\n let index: null | number = null;\n if (d0 === undefined && d1 !== undefined) {\n pointToHighlight = d1.x;\n index = i;\n } else if (d0 !== undefined && d1 === undefined) {\n pointToHighlight = d0.x;\n index = i - 1;\n } else {\n axisType = getTypeOfAxis(lineChartData![0].data[0].x, true) as XAxisTypes;\n let x0;\n let point0;\n let point1;\n switch (axisType) {\n case XAxisTypes.DateAxis:\n x0 = new Date(xOffset).getTime();\n point0 = (d0.x as Date).getTime();\n point1 = (d1.x as Date).getTime();\n pointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n case XAxisTypes.NumericAxis:\n x0 = xOffset as number;\n point0 = d0.x as number;\n point1 = d1.x as number;\n pointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n default:\n break;\n }\n }\n\n const { xAxisCalloutData, xAxisCalloutAccessibilityData } = lineChartData![0].data[index as number];\n const formattedDate = pointToHighlight instanceof Date ? pointToHighlight.toLocaleString() : pointToHighlight;\n const modifiedXVal = pointToHighlight instanceof Date ? pointToHighlight.getTime() : pointToHighlight;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = find(this._calloutPoints, (element: { x: string | number }) => {\n return element.x === modifiedXVal;\n });\n const nearestCircleToHighlight =\n axisType === XAxisTypes.DateAxis ? (pointToHighlight as Date).getTime() : pointToHighlight;\n const pointToHighlightUpdated = this.state.nearestCircleToHighlight !== nearestCircleToHighlight;\n // if no points need to be called out then don't show vertical line and callout card\n if (found && pointToHighlightUpdated && !this.state.isShowCalloutPending) {\n this.setState({\n nearestCircleToHighlight: nearestCircleToHighlight,\n isCalloutVisible: false,\n isShowCalloutPending: true,\n lineXValue: this._xAxisRectScale(pointToHighlight),\n displayOfLine: InterceptVisibility.show,\n isCircleClicked: false,\n stackCalloutProps: found!,\n YValueHover: found.values,\n dataPointCalloutProps: found!,\n hoverXValue: xAxisCalloutData ? xAxisCalloutData : formattedDate,\n xAxisCalloutAccessibilityData,\n });\n } else {\n /*\n When above if condition is false but found=true, it means either\n\n 1). pointToHighlightUpdated is false.\n For this case we dont need to do anything.\n\n 2). isShowCalloutPending is true.\n For this case there will be no callout updation for the event.\n This condition has been added to prevent repeated callout flashing.\n Currently there is a fraction of second delay between hover event and subsequent callout refresh.\n In the meantime if another event is received, the callout continues to flash for the set of\n intermediate hover events.\n\n This does not cause any issue as the user interaction takes atleast a fraction of second and the final\n callout state is ultimately achieved.\n If a user performs very swift mouse maneuver, the intermediate events will be lost but the callout experience\n remains smooth.\n */\n }\n if (!found) {\n this.setState({\n isCalloutVisible: false,\n nearestCircleToHighlight: nearestCircleToHighlight,\n displayOfLine: InterceptVisibility.hide,\n isCircleClicked: false,\n });\n }\n };\n /**\n * just cleaning up the state which we have set in the mouse move event\n */\n private _onRectMouseOut = () => {\n /**/\n };\n\n private _handleChartMouseLeave = () => {\n this.setState({\n refSelected: null,\n isCalloutVisible: false,\n nearestCircleToHighlight: null,\n lineXValue: 0,\n displayOfLine: InterceptVisibility.hide,\n isCircleClicked: false,\n stackCalloutProps: undefined,\n dataPointCalloutProps: undefined,\n hoverXValue: undefined,\n YValueHover: [],\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _getStackedData = (keys: string[], dataSet: any) => {\n const stackedValues = d3Stack().keys(keys)(dataSet);\n const maxOfYVal = d3Max(stackedValues[stackedValues.length - 1], dp => dp[1])!;\n const stackedData: Array<IAreaChartDataSetPoint[]> = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stackedValues.forEach((layer: any) => {\n const currentStack: IAreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.forEach((d: any) => {\n currentStack.push({\n values: d,\n xVal: d.data.xVal,\n });\n });\n stackedData.push(currentStack);\n });\n this._isMultiStackChart = stackedData && stackedData.length > 1 ? true : false;\n return {\n stackedData,\n maxOfYVal,\n };\n };\n\n private _createDataSet = (points: ILineChartPoints[]) => {\n const allChartPoints: ILineChartDataPoint[] = [];\n const dataSet: IAreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: ILineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...singleChartPoint.data);\n });\n\n let tempArr = allChartPoints;\n while (tempArr.length) {\n const valToCheck = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n const filteredChartPoints: ILineChartDataPoint[] = tempArr.filter(\n (point: ILineChartDataPoint) => (point.x instanceof Date ? point.x.toLocaleString() : point.x) === valToCheck,\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n filteredChartPoints.forEach((singleDataPoint: ILineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n // removing compared objects from array\n const val = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n tempArr = tempArr.filter(\n (point: ILineChartDataPoint) => (point.x instanceof Date ? point.x.toLocaleString() : point.x) !== val,\n );\n }\n\n // get keys from dataset, used to create stacked data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Stacked Info used to draw graph\n const stackedInfo = this._getStackedData(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n stackedInfo,\n calloutPoints,\n };\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerStack\n ? this.props.onRenderCalloutPerStack(this.state.stackCalloutProps)\n : this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n : null;\n };\n\n private _getGraphData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xAxis: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxis: any,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) => {\n this._chart = this._drawGraph(containerHeight, xAxis, yAxis, xElement!);\n };\n\n private _onLegendClick(legend: string): void {\n if (this.state.selectedLegend === legend) {\n this.setState({\n selectedLegend: '',\n });\n } else {\n this.setState({\n selectedLegend: legend,\n });\n }\n }\n\n private _onLegendHover(legend: string): void {\n this.setState({\n activeLegend: legend,\n });\n }\n\n private _onLegendLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _getLegendData = (points: ILineChartPoints[]): JSX.Element => {\n const data = points;\n const actions: ILegend[] = [];\n\n data.forEach((singleChartData: ILineChartPoints) => {\n const color: string = singleChartData.color!;\n const checkSimilarLegends = actions.filter(\n (leg: ILegend) => leg.title === singleChartData.legend && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: ILegend = {\n title: singleChartData.legend,\n color: color,\n action: () => {\n this._onLegendClick(singleChartData.legend);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(singleChartData.legend);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n {...this.props.legendProps}\n />\n );\n };\n\n private _onDataPointClick = (func: (() => void) | undefined) => {\n if (func) {\n func();\n }\n this.setState({ isCircleClicked: true });\n };\n\n private _getOpacity = (legend: string): number => {\n if (!this._isMultiStackChart) {\n return 0.7;\n } else {\n const opacity = this._legendHighlighted(legend) || this._noLegendHighlighted() ? 0.7 : 0.1;\n return opacity;\n }\n };\n\n private _getLineOpacity = (legend: string): number => {\n if (!this._isMultiStackChart) {\n return 1;\n } else {\n let opacity = 0.3;\n if (this.state.isCalloutVisible) {\n opacity = 1;\n }\n if (!this._noLegendHighlighted()) {\n opacity = this._legendHighlighted(legend) ? 0 : 0.1;\n }\n return opacity;\n }\n };\n\n private _updateCircleFillColor = (xDataPoint: number | Date, lineColor: string, circleId: string): string => {\n let fillColor = lineColor;\n if (this.state.nearestCircleToHighlight === xDataPoint) {\n this._highlightedCircleId = circleId;\n if (!this.state.isCircleClicked) {\n fillColor = this.props.theme!.palette.white;\n }\n }\n\n return fillColor;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _drawGraph = (containerHeight: number, xScale: any, yScale: any, xElement: SVGElement): JSX.Element[] => {\n const points = this._addDefaultColors(this.props.data.lineChartData);\n const { pointOptions, pointLineOptions } = this.props.data;\n const area = d3Area()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y0((d: any) => yScale(d.values[0]))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y1((d: any) => yScale(d.values[1]))\n .curve(d3CurveBasis);\n const line = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d.values[1]))\n .curve(d3CurveBasis);\n\n const graph: JSX.Element[] = [];\n let lineColor: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._stackedData.forEach((singleStackedData: Array<any>, index: number) => {\n graph.push(\n <React.Fragment key={`${index}-graph-${this._uniqueIdForGraph}`}>\n <path\n id={`${index}-line-${this._uniqueIdForGraph}`}\n d={line(singleStackedData)!}\n fill={'transparent'}\n strokeWidth={3}\n stroke={this._colors[index]}\n opacity={this._getLineOpacity(points[index]!.legend)}\n onMouseMove={this._onRectMouseMove}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n {...points[index]!.lineOptions}\n />\n {singleStackedData.length === 1 ? (\n <circle\n id={`${index}-graph-${this._uniqueIdForGraph}`}\n cx={xScale(singleStackedData[0].xVal)}\n cy={yScale(singleStackedData[0].values[1])}\n r={6}\n stroke={this._colors[index]}\n strokeWidth={3}\n fill={this._colors[index]}\n opacity={this._opacity[index]}\n fillOpacity={this._getOpacity(points[index]!.legend)}\n onMouseMove={this._onRectMouseMove}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n />\n ) : (\n <path\n id={`${index}-graph-${this._uniqueIdForGraph}`}\n d={area(singleStackedData)!}\n fill={this._colors[index]}\n opacity={this._opacity[index]}\n fillOpacity={this._getOpacity(points[index]!.legend)}\n onMouseMove={this._onRectMouseMove}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n />\n )}\n </React.Fragment>,\n );\n });\n\n const circleRadius = pointOptions && pointOptions.r ? Number(pointOptions.r) : 8;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._stackedData.forEach((singleStackedData: Array<any>, index: number) => {\n if (points.length === index) {\n return;\n }\n graph.push(\n <g key={`${index}-dots-${this._uniqueIdForGraph}`} d={area(singleStackedData)!} clipPath=\"url(#clip)\">\n {singleStackedData.map((singlePoint: IDPointType, pointIndex: number) => {\n const circleId = `${this._circleId}_${index * this._stackedData[0].length + pointIndex}`;\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n lineColor = points[index]!.color!;\n return (\n <circle\n key={circleId}\n id={circleId}\n data-is-focusable={true}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n visibility={this.state.nearestCircleToHighlight ? 'visibility' : 'hidden'}\n fill={this._updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n onClick={this._onDataPointClick.bind(this, points[index]!.data[pointIndex].onDataPointClick!)}\n {...pointOptions}\n r={this._getCircleRadius(xDataPoint, circleRadius)}\n />\n );\n })}\n </g>,\n );\n });\n graph.push(\n <line\n id={this._verticalLineId}\n key={this._verticalLineId}\n x1={this.state.lineXValue}\n y1={0}\n x2={this.state.lineXValue}\n y2={containerHeight}\n strokeWidth={1}\n strokeDasharray={5.5}\n stroke={lineColor!}\n opacity={0.5}\n visibility={this.state.displayOfLine}\n {...pointLineOptions}\n />,\n );\n const classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!this.props.showXAxisLablesTooltip) {\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classNames.tooltip!,\n id: this._tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return graph;\n };\n\n private _getCircleRadius = (xDataPoint: number, circleRadius: number): number => {\n const { isCircleClicked, nearestCircleToHighlight } = this.state;\n if (isCircleClicked && nearestCircleToHighlight === xDataPoint) {\n return 1;\n } else if (nearestCircleToHighlight === xDataPoint) {\n return circleRadius;\n } else {\n return 0;\n }\n };\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legend: string) => {\n return (\n this.state.selectedLegend === legend || (this.state.selectedLegend === '' && this.state.activeLegend === legend)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.activeLegend === '';\n };\n\n private _addDefaultColors = (lineChartData?: ILineChartPoints[]): ILineChartPoints[] => {\n return lineChartData\n ? lineChartData.map((item, index) => {\n let color: string;\n // isInverted property is applicable to v8 themes only\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0, this.props.theme?.isInverted);\n } else {\n color = getColorFromToken(item.color, this.props.theme?.isInverted);\n }\n\n return { ...item, color };\n })\n : [];\n };\n}\n"]}
1
+ {"version":3,"file":"AreaChart.base.js","sourceRoot":"../src/","sources":["components/AreaChart/AreaChart.base.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,IAAI,OAAO,EAAE,cAAc,IAAI,YAAY,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5G,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAEL,cAAc,GAUf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAW,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,IAAM,aAAa,GAAG,kBAAkB,EAA0C,CAAC;AAEnF,8DAA8D;AAC9D,IAAM,MAAM,GAAG,QAAQ,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAAC,IAAI,CAAC;AAE9C,IAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,IAAK,mBAGJ;AAHD,WAAK,mBAAmB;IACtB,0CAAmB,CAAA;IACnB,sCAAe,CAAA;AACjB,CAAC,EAHI,mBAAmB,KAAnB,mBAAmB,QAGvB;AA2BD;IAAmC,iCAAiD;IA6BlF,uBAAmB,KAAsB;QAAzC,YACE,kBAAM,KAAK,CAAC,SAwBb;QAsFO,iBAAW,GAAG,UAAC,OAAiB;YACtC,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,UAAgF;YAC1G,UAAU,CAAC,OAAO,EAAE,CAAC;YACb,IAAA,IAAI,GAAK,KAAI,CAAC,KAAK,KAAf,CAAgB;YACpB,IAAA,aAAa,GAAK,IAAI,cAAT,CAAU;YAC/B,8DAA8D;YAC9D,IAAM,OAAO,GAAG,KAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,OAAO,CAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChH,IAAM,CAAC,GAAG,MAAM,CAAC,aAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,IAAM,EAAE,GAAG,aAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAwB,CAAC;YAChE,IAAM,EAAE,GAAG,aAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAwB,CAAC;YAC5D,IAAI,QAAQ,GAAsB,IAAI,CAAC;YACvC,IAAI,gBAAgB,GAAkC,IAAI,CAAC;YAC3D,IAAI,KAAK,GAAkB,IAAI,CAAC;YAChC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE;gBACxC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;gBACxB,KAAK,GAAG,CAAC,CAAC;aACX;iBAAM,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE;gBAC/C,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;gBACxB,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;aACf;iBAAM;gBACL,QAAQ,GAAG,aAAa,CAAC,aAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAe,CAAC;gBAC1E,IAAI,EAAE,SAAA,CAAC;gBACP,IAAI,MAAM,SAAA,CAAC;gBACX,IAAI,MAAM,SAAA,CAAC;gBACX,QAAQ,QAAQ,EAAE;oBAChB,KAAK,UAAU,CAAC,QAAQ;wBACtB,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;wBACjC,MAAM,GAAI,EAAE,CAAC,CAAU,CAAC,OAAO,EAAE,CAAC;wBAClC,MAAM,GAAI,EAAE,CAAC,CAAU,CAAC,OAAO,EAAE,CAAC;wBAClC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC/E,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAClE,MAAM;oBACR,KAAK,UAAU,CAAC,WAAW;wBACzB,EAAE,GAAG,OAAiB,CAAC;wBACvB,MAAM,GAAG,EAAE,CAAC,CAAW,CAAC;wBACxB,MAAM,GAAG,EAAE,CAAC,CAAW,CAAC;wBACxB,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC/E,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAClE,MAAM;oBACR;wBACE,MAAM;iBACT;aACF;YAEK,IAAA,KAAsD,aAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAe,CAAC,EAA3F,gBAAgB,sBAAA,EAAE,6BAA6B,mCAA4C,CAAC;YACpG,IAAM,aAAa,GAAG,gBAAgB,YAAY,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC9G,IAAM,YAAY,GAAG,gBAAgB,YAAY,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;YACtG,8DAA8D;YAC9D,IAAM,KAAK,GAAQ,IAAI,CAAC,KAAI,CAAC,cAAc,EAAE,UAAC,OAA+B;gBAC3E,OAAO,OAAO,CAAC,CAAC,KAAK,YAAY,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,IAAM,wBAAwB,GAC5B,QAAQ,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAE,gBAAyB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC7F,IAAM,uBAAuB,GAAG,KAAI,CAAC,KAAK,CAAC,wBAAwB,KAAK,wBAAwB,CAAC;YACjG,oFAAoF;YACpF,IAAI,KAAK,IAAI,uBAAuB,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;gBACxE,KAAI,CAAC,QAAQ,CAAC;oBACZ,wBAAwB,EAAE,wBAAwB;oBAClD,gBAAgB,EAAE,KAAK;oBACvB,oBAAoB,EAAE,IAAI;oBAC1B,UAAU,EAAE,KAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;oBAClD,aAAa,EAAE,mBAAmB,CAAC,IAAI;oBACvC,eAAe,EAAE,KAAK;oBACtB,iBAAiB,EAAE,KAAM;oBACzB,WAAW,EAAE,KAAK,CAAC,MAAM;oBACzB,qBAAqB,EAAE,KAAM;oBAC7B,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa;oBAChE,6BAA6B,+BAAA;oBAC7B,WAAW,EAAE,EAAE;iBAChB,CAAC,CAAC;aACJ;iBAAM;gBACL;;;;;;;;;;;;;;;;;kBAiBE;aACH;YACD,IAAI,CAAC,KAAK,EAAE;gBACV,KAAI,CAAC,QAAQ,CAAC;oBACZ,gBAAgB,EAAE,KAAK;oBACvB,wBAAwB,EAAE,wBAAwB;oBAClD,aAAa,EAAE,mBAAmB,CAAC,IAAI;oBACvC,eAAe,EAAE,KAAK;iBACvB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC;QACF;;WAEG;QACK,qBAAe,GAAG;YACxB,IAAI;QACN,CAAC,CAAC;QAEM,4BAAsB,GAAG;YAC/B,KAAI,CAAC,QAAQ,CAAC;gBACZ,WAAW,EAAE,IAAI;gBACjB,gBAAgB,EAAE,KAAK;gBACvB,wBAAwB,EAAE,IAAI;gBAC9B,UAAU,EAAE,CAAC;gBACb,aAAa,EAAE,mBAAmB,CAAC,IAAI;gBACvC,eAAe,EAAE,KAAK;gBACtB,iBAAiB,EAAE,SAAS;gBAC5B,qBAAqB,EAAE,SAAS;gBAChC,WAAW,EAAE,SAAS;gBACtB,WAAW,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,8DAA8D;QACtD,qBAAe,GAAG,UAAC,IAAc,EAAE,OAAY;YACrD,IAAM,aAAa,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;YACpD,IAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,CAAC,CAAC,EAAL,CAAK,CAAE,CAAC;YAC/E,IAAM,WAAW,GAAoC,EAAE,CAAC;YACxD,8DAA8D;YAC9D,aAAa,CAAC,OAAO,CAAC,UAAC,KAAU;gBAC/B,IAAM,YAAY,GAA6B,EAAE,CAAC;gBAClD,8DAA8D;gBAC9D,KAAK,CAAC,OAAO,CAAC,UAAC,CAAM;oBACnB,YAAY,CAAC,IAAI,CAAC;wBAChB,MAAM,EAAE,CAAC;wBACT,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;qBAClB,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,KAAI,CAAC,kBAAkB,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/E,OAAO;gBACL,WAAW,aAAA;gBACX,SAAS,WAAA;aACV,CAAC;QACJ,CAAC,CAAC;QAEM,oBAAc,GAAG,UAAC,MAA0B;YAClD,IAAM,cAAc,GAA0B,EAAE,CAAC;YACjD,IAAM,OAAO,GAA6B,EAAE,CAAC;YAC7C,IAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAM,aAAa,GAAG,WAAW,CAAC,MAAO,CAAC,CAAC;YAE3C,MAAM;gBACJ,MAAM,CAAC,MAAM;gBACb,MAAM,CAAC,OAAO,CAAC,UAAC,gBAAkC;oBAChD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAM,CAAC,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;oBAC5C,cAAc,CAAC,IAAI,OAAnB,cAAc,EAAS,gBAAgB,CAAC,IAAI,EAAE;gBAChD,CAAC,CAAC,CAAC;YAEL,IAAI,OAAO,GAAG,cAAc,CAAC;;gBAE3B,IAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/F,IAAM,mBAAmB,GAA0B,OAAO,CAAC,MAAM,CAC/D,UAAC,KAA0B,IAAK,OAAA,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAA7E,CAA6E,CAC9G,CAAC;gBACF,8DAA8D;gBAC9D,IAAM,aAAa,GAAQ,EAAE,CAAC;gBAC9B,mBAAmB,CAAC,OAAO,CAAC,UAAC,eAAoC,EAAE,KAAa;oBAC9E,aAAa,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC;oBACvC,aAAa,CAAC,UAAQ,KAAO,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC5B,uCAAuC;gBACvC,IAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxF,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,UAAC,KAA0B,IAAK,OAAA,CAAC,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAtE,CAAsE,CACvG,CAAC;;YAhBJ,OAAO,OAAO,CAAC,MAAM;;aAiBpB;YAED,qDAAqD;YACrD,IAAM,UAAU,GAAW,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;YACtE,IAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAM,MAAM,GAAG,UAAQ,CAAG,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACnB;YAED,kCAAkC;YAClC,IAAM,WAAW,GAAG,KAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAExD,OAAO;gBACL,MAAM,QAAA;gBACN,OAAO,SAAA;gBACP,IAAI,MAAA;gBACJ,WAAW,aAAA;gBACX,aAAa,eAAA;aACd,CAAC;QACJ,CAAC,CAAC;QAEM,2BAAqB,GAAG;YAC9B,OAAO,KAAI,CAAC,KAAK,CAAC,uBAAuB;gBACvC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBAClE,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,2BAA2B;oBACxC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,KAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;oBAC1E,CAAC,CAAC,IAAI,CAAC;QACX,CAAC,CAAC;QAEM,mBAAa,GAAG;QACtB,8DAA8D;QAC9D,KAAU;QACV,8DAA8D;QAC9D,KAAU,EACV,eAAuB,EACvB,cAAsB,EACtB,QAA2B;YAE3B,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,QAAS,CAAC,CAAC;QAC1E,CAAC,CAAC;QA0BM,oBAAc,GAAG,UAAC,MAA0B;YAClD,IAAM,IAAI,GAAG,MAAM,CAAC;YACpB,IAAM,OAAO,GAAc,EAAE,CAAC;YAE9B,IAAI,CAAC,OAAO,CAAC,UAAC,eAAiC;gBAC7C,IAAM,KAAK,GAAW,eAAe,CAAC,KAAM,CAAC;gBAC7C,IAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CACxC,UAAC,GAAY,IAAK,OAAA,GAAG,CAAC,KAAK,KAAK,eAAe,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,EAA3D,CAA2D,CAC9E,CAAC;gBACF,IAAI,mBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,OAAO;iBACR;gBAED,IAAM,MAAM,GAAY;oBACtB,KAAK,EAAE,eAAe,CAAC,MAAM;oBAC7B,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE;wBACN,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC9C,CAAC;oBACD,WAAW,EAAE;wBACX,KAAI,CAAC,sBAAsB,EAAE,CAAC;wBAC9B,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC9C,CAAC;oBACD,gBAAgB,EAAE;wBAChB,KAAI,CAAC,cAAc,EAAE,CAAC;oBACxB,CAAC;iBACF,CAAC;gBAEF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,OAAO,CACL,oBAAC,OAAO,aACN,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,KAAI,CAAC,KAAK,CAAC,oBAAoB,EAC9C,gBAAgB,EAAE,KAAI,CAAC,KAAK,CAAC,uBAAuB,EACpD,yBAAyB,EAAE,KAAI,CAAC,KAAK,CAAC,mCAAmC,IACrE,KAAI,CAAC,KAAK,CAAC,WAAW,EAC1B,CACH,CAAC;QACJ,CAAC,CAAC;QAEM,uBAAiB,GAAG,UAAC,IAA8B;YACzD,IAAI,IAAI,EAAE;gBACR,IAAI,EAAE,CAAC;aACR;YACD,KAAI,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEM,iBAAW,GAAG,UAAC,MAAc;YACnC,IAAI,CAAC,KAAI,CAAC,kBAAkB,EAAE;gBAC5B,OAAO,GAAG,CAAC;aACZ;iBAAM;gBACL,IAAM,OAAO,GAAG,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,KAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3F,OAAO,OAAO,CAAC;aAChB;QACH,CAAC,CAAC;QAEM,qBAAe,GAAG,UAAC,MAAc;YACvC,IAAI,CAAC,KAAI,CAAC,kBAAkB,EAAE;gBAC5B,OAAO,CAAC,CAAC;aACV;iBAAM;gBACL,IAAI,OAAO,GAAG,GAAG,CAAC;gBAClB,IAAI,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;oBAC/B,OAAO,GAAG,CAAC,CAAC;iBACb;gBACD,IAAI,CAAC,KAAI,CAAC,oBAAoB,EAAE,EAAE;oBAChC,OAAO,GAAG,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;iBACrD;gBACD,OAAO,OAAO,CAAC;aAChB;QACH,CAAC,CAAC;QAEM,4BAAsB,GAAG,UAAC,UAAyB,EAAE,SAAiB,EAAE,QAAgB;YAC9F,IAAI,SAAS,GAAG,SAAS,CAAC;YAC1B,IAAI,KAAI,CAAC,KAAK,CAAC,wBAAwB,KAAK,UAAU,IAAI,KAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,EAAE;gBAC7F,KAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;gBACrC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,EAAE;oBAC/B,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,KAAM,CAAC,OAAO,CAAC,KAAK,CAAC;iBAC7C;aACF;YAED,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,8DAA8D;QACtD,gBAAU,GAAG,UAAC,eAAuB,EAAE,MAAW,EAAE,MAAW,EAAE,QAAoB;YAC3F,IAAM,MAAM,GAAG,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/D,IAAA,KAAqC,KAAI,CAAC,KAAK,CAAC,IAAI,EAAlD,YAAY,kBAAA,EAAE,gBAAgB,sBAAoB,CAAC;YAC3D,IAAM,IAAI,GAAG,MAAM,EAAE;gBACnB,8DAA8D;iBAC7D,CAAC,CAAC,UAAC,CAAM,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAd,CAAc,CAAC;gBAC9B,8DAA8D;iBAC7D,EAAE,CAAC,UAAC,CAAM,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAnB,CAAmB,CAAC;gBACpC,8DAA8D;iBAC7D,EAAE,CAAC,UAAC,CAAM,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAnB,CAAmB,CAAC;iBACnC,KAAK,CAAC,YAAY,CAAC,CAAC;YACvB,IAAM,IAAI,GAAG,MAAM,EAAE;gBACnB,8DAA8D;iBAC7D,CAAC,CAAC,UAAC,CAAM,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAd,CAAc,CAAC;gBAC9B,8DAA8D;iBAC7D,CAAC,CAAC,UAAC,CAAM,IAAK,OAAA,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAnB,CAAmB,CAAC;iBAClC,KAAK,CAAC,YAAY,CAAC,CAAC;YAEvB,IAAM,KAAK,GAAkB,EAAE,CAAC;YAChC,IAAI,SAAiB,CAAC;YACtB,8DAA8D;YAC9D,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,iBAA6B,EAAE,KAAa;gBACrE,KAAK,CAAC,IAAI,CACR,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAK,KAAK,eAAU,KAAI,CAAC,iBAAmB;oBAC7D,uCACE,EAAE,EAAK,KAAK,cAAS,KAAI,CAAC,iBAAmB,EAC7C,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAE,EAC3B,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,CAAC,EACd,MAAM,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAC3B,OAAO,EAAE,KAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,EACpD,WAAW,EAAE,KAAI,CAAC,gBAAgB,EAClC,UAAU,EAAE,KAAI,CAAC,eAAe,EAChC,WAAW,EAAE,KAAI,CAAC,gBAAgB,IAC9B,MAAM,CAAC,KAAK,CAAE,CAAC,WAAW,EAC9B;oBACD,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAChC,gCACE,EAAE,EAAK,KAAK,eAAU,KAAI,CAAC,iBAAmB,EAC9C,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EACrC,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC1C,CAAC,EAAE,CAAC,EACJ,MAAM,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAC3B,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EACzB,OAAO,EAAE,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC7B,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,EACpD,WAAW,EAAE,KAAI,CAAC,gBAAgB,EAClC,UAAU,EAAE,KAAI,CAAC,eAAe,EAChC,WAAW,EAAE,KAAI,CAAC,gBAAgB,GAClC,CACH,CAAC,CAAC,CAAC,CACF,uCACE,EAAE,EAAK,KAAK,eAAU,KAAI,CAAC,iBAAmB,EAC9C,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAE,EAC3B,IAAI,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EACzB,OAAO,EAAE,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC7B,WAAW,EAAE,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,MAAM,CAAC,EACpD,WAAW,EAAE,KAAI,CAAC,gBAAgB,EAClC,UAAU,EAAE,KAAI,CAAC,eAAe,EAChC,WAAW,EAAE,KAAI,CAAC,gBAAgB,IAC9B,CAAC,KAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI;wBACnC,mBAAmB,EAAE,IAAI;wBACzB,IAAI,EAAE,KAAK;wBACX,YAAY,EAAK,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,kBAAY,KAAK,GAAG,CAAC,aAAO,MAAM,CAAC,MAAM,cAC5E,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,kBACZ;qBAChB,CAAC,EACF,CACH,CACc,CAClB,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAM,YAAY,GAAG,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,8DAA8D;YAC9D,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,iBAA6B,EAAE,KAAa;gBACrE,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE;oBAC3B,OAAO;iBACR;gBAED,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;oBACnE,qCAAqC;oBACrC,KAAK,CAAC,IAAI,CACR,2BAAG,GAAG,EAAK,KAAK,cAAS,KAAI,CAAC,iBAAmB,EAAE,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAE,EAAE,QAAQ,EAAC,YAAY,IAClG,iBAAiB,CAAC,GAAG,CAAC,UAAC,WAAwB,EAAE,UAAkB;wBAClE,IAAM,QAAQ,GAAM,KAAI,CAAC,SAAS,UAAI,KAAK,GAAG,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAE,CAAC;wBACzF,IAAM,UAAU,GAAG,WAAW,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC,KAAM,CAAC;wBAClC,OAAO,CACL,yCACE,GAAG,EAAE,QAAQ,EACb,EAAE,EAAE,QAAQ,uBACO,IAAI,EACvB,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAC5B,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,KAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAClE,UAAU,EAAE,KAAI,CAAC,eAAe,EAChC,WAAW,EAAE,KAAI,CAAC,gBAAgB,EAClC,OAAO,EAAE,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAI,EAAE,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,gBAAiB,CAAC,EAC7F,OAAO,EAAE,cAAM,OAAA,KAAI,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,EAA9C,CAA8C,EAC7D,MAAM,EAAE,KAAI,CAAC,WAAW,IACpB,YAAY,IAChB,CAAC,EAAE,KAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,EAC5D,IAAI,EAAC,KAAK,gBACE,KAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,IACjD,CACH,CAAC;oBACJ,CAAC,CAAC,CACA,CACL,CAAC;iBACH;qBAAM;oBACL,iEAAiE;oBACjE,iBAAiB,CAAC,OAAO,CAAC,UAAC,WAAwB,EAAE,UAAkB;wBACrE,IAAM,UAAU,GAAG,WAAW,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpG,IAAI,KAAI,CAAC,KAAK,CAAC,wBAAwB,KAAK,UAAU,EAAE;4BACtD,IAAM,QAAQ,GAAM,KAAI,CAAC,SAAS,UAAI,KAAK,GAAG,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,UAAU,CAAE,CAAC;4BACzF,SAAS,GAAG,MAAM,CAAC,KAAK,CAAE,CAAC,KAAM,CAAC;4BAClC,KAAK,CAAC,IAAI,CACR,yCACE,GAAG,EAAE,QAAQ,EACb,EAAE,EAAE,QAAQ,EACZ,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAC5B,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,CAAC,EACd,IAAI,EAAE,KAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAClE,UAAU,EAAE,KAAI,CAAC,eAAe,EAChC,WAAW,EAAE,KAAI,CAAC,gBAAgB,EAClC,OAAO,EAAE,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAI,EAAE,MAAM,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,gBAAiB,CAAC,IACzF,YAAY,IAChB,CAAC,EAAE,KAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,IAC5D,CACH,CAAC;yBACH;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CACR,uCACE,EAAE,EAAE,KAAI,CAAC,eAAe,EACxB,GAAG,EAAE,KAAI,CAAC,eAAe,EACzB,EAAE,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EACzB,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EACzB,EAAE,EAAE,eAAe,EACnB,WAAW,EAAE,CAAC,EACd,eAAe,EAAE,GAAG,EACpB,MAAM,EAAE,SAAU,EAClB,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,aAAa,IAChC,gBAAgB,EACpB,CACH,CAAC;YACF,IAAM,UAAU,GAAG,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,MAAO,EAAE;gBACnD,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAM;aACzB,CAAC,CAAC;YACH,mEAAmE;YACnE,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;gBACtC,IAAI;oBACF,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAE,CAAC,MAAM,EAAE,CAAC;oBAC/F,oCAAoC;iBACrC;gBAAC,OAAO,CAAC,EAAE,GAAE;aACf;YACD,4CAA4C;YAC5C,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,IAAI,KAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;gBACpE,IAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrD,IAAI;oBACF,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAE,CAAC,MAAM,EAAE,CAAC;oBAC/F,oCAAoC;iBACrC;gBAAC,OAAO,CAAC,EAAE,GAAE;gBACd,IAAM,YAAY,GAAG;oBACnB,UAAU,EAAE,UAAU,CAAC,OAAQ;oBAC/B,EAAE,EAAE,KAAI,CAAC,UAAU;oBACnB,KAAK,EAAE,YAAY;iBACpB,CAAC;gBACF,YAAY,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAC;aACpD;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEM,sBAAgB,GAAG,UAAC,UAAkB,EAAE,YAAoB,EAAE,QAAgB;YAC9E,IAAA,KAA6D,KAAI,CAAC,KAAK,EAArE,eAAe,qBAAA,EAAE,wBAAwB,8BAAA,EAAE,WAAW,iBAAe,CAAC;YAC9E,IAAI,eAAe,IAAI,wBAAwB,KAAK,UAAU,EAAE;gBAC9D,OAAO,CAAC,CAAC;aACV;iBAAM,IAAI,wBAAwB,KAAK,UAAU,IAAI,WAAW,KAAK,QAAQ,EAAE;gBAC9E,OAAO,YAAY,CAAC;aACrB;iBAAM;gBACL,OAAO,CAAC,CAAC;aACV;QACH,CAAC,CAAC;QAEM,mBAAa,GAAG;YACtB,KAAI,CAAC,QAAQ,CAAC;gBACZ,gBAAgB,EAAE,KAAK;aACxB,CAAC,CAAC;QACL,CAAC,CAAC;QAEF;;;;;WAKG;QACK,wBAAkB,GAAG,UAAC,MAAc;YAC1C,OAAO,CACL,KAAI,CAAC,KAAK,CAAC,cAAc,KAAK,MAAM,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,CACjH,CAAC;QACJ,CAAC,CAAC;QAEF;;WAEG;QACK,0BAAoB,GAAG;YAC7B,OAAO,KAAI,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,IAAI,KAAI,CAAC,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC;QAC5E,CAAC,CAAC;QAEM,uBAAiB,GAAG,UAAC,aAAkC;YAC7D,OAAO,aAAa;gBAClB,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK;;oBAC5B,IAAI,KAAa,CAAC;oBAClB,sDAAsD;oBACtD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE;wBACrC,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,MAAA,KAAI,CAAC,KAAK,CAAC,KAAK,0CAAE,UAAU,CAAC,CAAC;qBAC9D;yBAAM;wBACL,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAA,KAAI,CAAC,KAAK,CAAC,KAAK,0CAAE,UAAU,CAAC,CAAC;qBACrE;oBAED,6BAAY,IAAI,KAAE,KAAK,OAAA,IAAG;gBAC5B,CAAC,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAC;QACT,CAAC,CAAC;QAEM,kBAAY,GAAG,UAAC,SAAiB,EAAE,UAAkB,EAAE,QAAgB;YACvE,IAAA,KAA6B,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAArF,CAAC,OAAA,EAAE,CAAC,OAAA,EAAE,gBAAgB,sBAA+D,CAAC;YAC9F,IAAM,aAAa,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,IAAM,YAAY,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,8DAA8D;YAC9D,IAAM,KAAK,GAAQ,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAC,CAAyB,IAAK,OAAA,CAAC,CAAC,CAAC,KAAK,YAAY,EAApB,CAAoB,CAAC,CAAC;YACjG,yDAAyD;YACzD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAC,CAAgB,IAAK,OAAA,CAAC,CAAC,CAAC,KAAK,CAAC,EAAT,CAAS,CAAC,CAAC;YAEpE,KAAI,CAAC,QAAQ,CAAC;gBACZ,WAAW,EAAE,MAAI,QAAU;gBAC3B,gBAAgB,EAAE,IAAI;gBACtB,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa;gBAChE,WAAW,EAAE,KAAK,CAAC,MAAM;gBACzB,iBAAiB,EAAE,KAAK;gBACxB,qBAAqB,EAAE,KAAK;gBAC5B,WAAW,EAAE,QAAQ;aACtB,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,iBAAW,GAAG;YACpB,KAAI,CAAC,QAAQ,CAAC;gBACZ,WAAW,EAAE,IAAI;gBACjB,gBAAgB,EAAE,KAAK;gBACvB,WAAW,EAAE,SAAS;gBACtB,WAAW,EAAE,EAAE;gBACf,iBAAiB,EAAE,SAAS;gBAC5B,qBAAqB,EAAE,SAAS;gBAChC,WAAW,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,mBAAa,GAAG,UAAC,SAAiB,EAAE,UAAkB;;YAC5D,IAAM,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAc,CAAC,SAAS,CAAC,CAAC;YACvD,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,IAAM,aAAa,GAAG,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACnF,IAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,IAAI,aAAa,CAAC;YACvD,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC;YACjD,OAAO,CAAA,MAAA,KAAK,CAAC,wBAAwB,0CAAE,SAAS,KAAO,MAAM,UAAK,MAAM,UAAK,MAAM,MAAG,CAAC;QACzF,CAAC,CAAC;QA5sBA,KAAI,CAAC,UAAU,GAAG,eAAe,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC;QACvD,KAAI,CAAC,KAAK,GAAG;YACX,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,EAAE;YACf,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,EAAE;YACf,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,mBAAmB,CAAC,IAAI;YACvC,eAAe,EAAE,KAAK;YACtB,wBAAwB,EAAE,IAAI;YAC9B,oBAAoB,EAAE,KAAK;YAC3B,WAAW,EAAE,EAAE;SAChB,CAAC;QACF,gBAAgB,CAAC,cAAc,EAAE,KAAK,EAAE;YACtC,kBAAkB,EAAE,oDAAoD;SACzE,CAAC,CAAC;QACH,KAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7C,KAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;QAC9C,KAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjC,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;QAClC,KAAI,CAAC,UAAU,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC;;IAChD,CAAC;IAEM,0CAAkB,GAAzB;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC;gBACZ,WAAW,EAAE,MAAI,IAAI,CAAC,oBAAsB;gBAC5C,gBAAgB,EAAE,IAAI;gBACtB,oBAAoB,EAAE,KAAK;aAC5B,CAAC,CAAC;SACJ;IACH,CAAC;IAEM,8BAAM,GAAb;QAAA,iBAwEC;QAvEO,IAAA,KAAgC,IAAI,CAAC,KAAK,CAAC,IAAI,EAA7C,aAAa,mBAAA,EAAE,UAAU,gBAAoB,CAAC;QACtD,IAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAA,KAAkD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAvE,MAAM,YAAA,EAAE,OAAO,aAAA,EAAE,WAAW,iBAAA,EAAE,aAAa,mBAA4B,CAAC;QAChF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC;QAC5C,IAAM,OAAO,GAAgB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAM,UAAU,GAAG;YACjB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;YACjC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;SAClC,CAAC;QAEF,IAAM,YAAY,cAChB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC9B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,eAAe,EAAE,eAAe,CAAC,WAAW,EAC5C,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,EAAE,EAAE,YAAU,IAAI,CAAC,gBAAkB,EACrC,QAAQ,EAAE,EAAE,EACZ,aAAa,EAAE,KAAK,EACpB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,mBAAmB,EAAE,IAAI,EACzB,6BAA6B,EAAE,IAAI,CAAC,KAAK,CAAC,6BAA6B,IACpE,IAAI,CAAC,KAAK,CAAC,YAAY,CAC3B,CAAC;QACF,OAAO,CACL,oBAAC,cAAc,eACT,IAAI,CAAC,KAAK,IACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,UAAU,CAAC,SAAS,EAC/B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,OAAO,EACnB,iBAAiB,QACjB,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EACzE,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,WAAW,CAAC,SAAS,EAChC,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAC/C,iBAAiB,EAAE,IAAI,CAAC,sBAAsB;YAC9C,sCAAsC;YACtC,kDAAkD;YAClD,QAAQ,EAAE,UAAC,KAAkB;gBAC3B,KAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;gBACpC,IAAM,KAAK,GAAG,KAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC3C,IAAM,MAAM,GAAG,KAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7D,IAAM,UAAU,GAAG,KAAK,CAAC,eAAgB,GAAG,KAAI,CAAC,OAAO,CAAC,GAAI,CAAC;gBAC9D,OAAO,CACL;oBACE;wBACE,8BACE,EAAE,EAAE,KAAI,CAAC,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,KAAI,CAAC,gBAAgB,EAClC,UAAU,EAAE,KAAI,CAAC,eAAe,EAChC,WAAW,EAAE,KAAI,CAAC,gBAAgB,GAClC,CACA;oBACJ,+BAAI,KAAI,CAAC,MAAM,CAAK,CACnB,CACJ,CAAC;YACJ,CAAC,IACD,CACH,CAAC;IACJ,CAAC;IAiOO,sCAAc,GAAtB,UAAuB,MAAc;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,MAAM,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC;gBACZ,cAAc,EAAE,EAAE;aACnB,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC;gBACZ,cAAc,EAAE,MAAM;aACvB,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,sCAAc,GAAtB,UAAuB,MAAc;QACnC,IAAI,CAAC,QAAQ,CAAC;YACZ,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;IACL,CAAC;IAEO,sCAAc,GAAtB;QACE,IAAI,CAAC,QAAQ,CAAC;YACZ,YAAY,EAAE,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IA2WH,oBAAC;AAAD,CAAC,AA5uBD,CAAmC,KAAK,CAAC,SAAS,GA4uBjD","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, bisector } from 'd3-array';\nimport { clientPoint } from 'd3-selection';\nimport { select as d3Select } from 'd3-selection';\nimport { area as d3Area, stack as d3Stack, curveMonotoneX as d3CurveBasis, line as d3Line } from 'd3-shape';\nimport { classNamesFunction, find, getId, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ICustomizedCalloutData,\n IAreaChartProps,\n IBasestate,\n ILineChartDataPoint,\n ILineChartPoints,\n IChildProps,\n IMargins,\n IAreaChartStyleProps,\n IAreaChartStyles,\n} from '../../index';\nimport { warnDeprecations } from '@fluentui/react/lib/Utilities';\nimport {\n calloutData,\n getXAxisType,\n ChartTypes,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n getNextColor,\n getColorFromToken,\n} from '../../utilities/index';\nimport { ILegend, Legends } from '../Legends/index';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\n\nconst getClassNames = classNamesFunction<IAreaChartStyleProps, IAreaChartStyles>();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst bisect = bisector((d: any) => d.x).left;\n\nconst COMPONENT_NAME = 'AREA CHART';\n\nenum InterceptVisibility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nexport interface IAreaChartAreaPoint {\n xVal: string | number;\n values: IAreaChartDataSetPoint;\n}\nexport interface IAreaChartDataSetPoint {\n [key: string]: number | string;\n}\nexport interface IDPointType {\n values: { 0: number; 1: number; data: {} };\n xVal: number | Date;\n}\n\nexport interface IAreaChartState extends IBasestate {\n lineXValue: number;\n displayOfLine: InterceptVisibility;\n isCircleClicked: boolean;\n dataPointCalloutProps?: ICustomizedCalloutData;\n stackCalloutProps?: ICustomizedCalloutData;\n nearestCircleToHighlight: number | string | Date | null;\n xAxisCalloutAccessibilityData?: IAccessibilityProps;\n isShowCalloutPending: boolean;\n /** focused point */\n activePoint: string;\n}\n\nexport class AreaChartBase extends React.Component<IAreaChartProps, IAreaChartState> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _calloutPoints: any;\n private _createSet: (data: ILineChartPoints[]) => {\n colors: string[];\n opacity: number[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stackedInfo: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calloutPoints: any;\n };\n private _colors: string[];\n private _opacity: number[];\n private _uniqueIdForGraph: string;\n private _verticalLineId: string;\n private _circleId: string;\n private _uniqueCallOutID: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _stackedData: any;\n private _chart: JSX.Element[];\n private margins: IMargins;\n private _rectId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _xAxisRectScale: any;\n // determines if the given area chart has multiple stacked bar charts\n private _isMultiStackChart: boolean;\n private _tooltipId: string;\n private _highlightedCircleId: string;\n\n public constructor(props: IAreaChartProps) {\n super(props);\n this._createSet = memoizeFunction(this._createDataSet);\n this.state = {\n selectedLegend: '',\n activeLegend: '',\n hoverXValue: '',\n isCalloutVisible: false,\n refSelected: null,\n YValueHover: [],\n lineXValue: 0,\n displayOfLine: InterceptVisibility.hide,\n isCircleClicked: false,\n nearestCircleToHighlight: null,\n isShowCalloutPending: false,\n activePoint: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n showYAxisGridLines: 'Dont use this property. Lines are drawn by default',\n });\n this._uniqueIdForGraph = getId('areaChart_');\n this._verticalLineId = getId('verticalLine_');\n this._circleId = getId('circle');\n this._rectId = getId('rectangle');\n this._tooltipId = getId('AreaChartTooltipID');\n }\n\n public componentDidUpdate() {\n if (this.state.isShowCalloutPending) {\n this.setState({\n refSelected: `#${this._highlightedCircleId}`,\n isCalloutVisible: true,\n isShowCalloutPending: false,\n });\n }\n }\n\n public render(): JSX.Element {\n const { lineChartData, chartTitle } = this.props.data;\n const points = this._addDefaultColors(lineChartData);\n const { colors, opacity, stackedInfo, calloutPoints } = this._createSet(points);\n this._calloutPoints = calloutPoints;\n const isXAxisDateType = getXAxisType(points);\n this._colors = colors;\n this._opacity = opacity;\n this._stackedData = stackedInfo.stackedData;\n const legends: JSX.Element = this._getLegendData(points);\n\n const tickParams = {\n tickValues: this.props.tickValues,\n tickFormat: this.props.tickFormat,\n };\n\n const calloutProps = {\n target: this.state.refSelected,\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n id: `toolTip${this._uniqueCallOutID}`,\n gapSpace: 15,\n isBeakVisible: false,\n onDismiss: this._closeCallout,\n 'data-is-focusable': true,\n xAxisCalloutAccessibilityData: this.state.xAxisCalloutAccessibilityData,\n ...this.props.calloutProps,\n };\n return (\n <CartesianChart\n {...this.props}\n chartTitle={chartTitle}\n points={points}\n chartType={ChartTypes.AreaChart}\n calloutProps={calloutProps}\n legendBars={legends}\n isCalloutForStack\n xAxisType={isXAxisDateType ? XAxisTypes.DateAxis : XAxisTypes.NumericAxis}\n tickParams={tickParams}\n maxOfYVal={stackedInfo.maxOfYVal}\n getGraphData={this._getGraphData}\n getmargins={this._getMargins}\n customizedCallout={this._getCustomizedCallout()}\n onChartMouseLeave={this._handleChartMouseLeave}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: IChildProps) => {\n this._xAxisRectScale = props.xScale;\n const ticks = this._xAxisRectScale.ticks();\n const width1 = this._xAxisRectScale(ticks[ticks.length - 1]);\n const rectHeight = props.containerHeight! - this.margins.top!;\n return (\n <>\n <g>\n <rect\n id={this._rectId}\n width={width1}\n height={rectHeight}\n fill={'transparent'}\n onMouseMove={this._onRectMouseMove}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n />\n </g>\n <g>{this._chart}</g>\n </>\n );\n }}\n />\n );\n }\n\n private _getMargins = (margins: IMargins) => {\n this.margins = margins;\n };\n\n private _onRectMouseMove = (mouseEvent: React.MouseEvent<SVGRectElement | SVGPathElement | SVGCircleElement>) => {\n mouseEvent.persist();\n const { data } = this.props;\n const { lineChartData } = data;\n // This will get the value of the X when mouse is on the chart\n const xOffset = this._xAxisRectScale.invert(clientPoint(document.getElementById(this._rectId)!, mouseEvent)[0]);\n const i = bisect(lineChartData![0].data, xOffset);\n const d0 = lineChartData![0].data[i - 1] as ILineChartDataPoint;\n const d1 = lineChartData![0].data[i] as ILineChartDataPoint;\n let axisType: XAxisTypes | null = null;\n let pointToHighlight: string | Date | number | null = null;\n let index: null | number = null;\n if (d0 === undefined && d1 !== undefined) {\n pointToHighlight = d1.x;\n index = i;\n } else if (d0 !== undefined && d1 === undefined) {\n pointToHighlight = d0.x;\n index = i - 1;\n } else {\n axisType = getTypeOfAxis(lineChartData![0].data[0].x, true) as XAxisTypes;\n let x0;\n let point0;\n let point1;\n switch (axisType) {\n case XAxisTypes.DateAxis:\n x0 = new Date(xOffset).getTime();\n point0 = (d0.x as Date).getTime();\n point1 = (d1.x as Date).getTime();\n pointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n case XAxisTypes.NumericAxis:\n x0 = xOffset as number;\n point0 = d0.x as number;\n point1 = d1.x as number;\n pointToHighlight = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? d1.x : d0.x;\n index = Math.abs(x0 - point0) > Math.abs(x0 - point1) ? i : i - 1;\n break;\n default:\n break;\n }\n }\n\n const { xAxisCalloutData, xAxisCalloutAccessibilityData } = lineChartData![0].data[index as number];\n const formattedDate = pointToHighlight instanceof Date ? pointToHighlight.toLocaleString() : pointToHighlight;\n const modifiedXVal = pointToHighlight instanceof Date ? pointToHighlight.getTime() : pointToHighlight;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = find(this._calloutPoints, (element: { x: string | number }) => {\n return element.x === modifiedXVal;\n });\n const nearestCircleToHighlight =\n axisType === XAxisTypes.DateAxis ? (pointToHighlight as Date).getTime() : pointToHighlight;\n const pointToHighlightUpdated = this.state.nearestCircleToHighlight !== nearestCircleToHighlight;\n // if no points need to be called out then don't show vertical line and callout card\n if (found && pointToHighlightUpdated && !this.state.isShowCalloutPending) {\n this.setState({\n nearestCircleToHighlight: nearestCircleToHighlight,\n isCalloutVisible: false,\n isShowCalloutPending: true,\n lineXValue: this._xAxisRectScale(pointToHighlight),\n displayOfLine: InterceptVisibility.show,\n isCircleClicked: false,\n stackCalloutProps: found!,\n YValueHover: found.values,\n dataPointCalloutProps: found!,\n hoverXValue: xAxisCalloutData ? xAxisCalloutData : formattedDate,\n xAxisCalloutAccessibilityData,\n activePoint: '',\n });\n } else {\n /*\n When above if condition is false but found=true, it means either\n\n 1). pointToHighlightUpdated is false.\n For this case we dont need to do anything.\n\n 2). isShowCalloutPending is true.\n For this case there will be no callout updation for the event.\n This condition has been added to prevent repeated callout flashing.\n Currently there is a fraction of second delay between hover event and subsequent callout refresh.\n In the meantime if another event is received, the callout continues to flash for the set of\n intermediate hover events.\n\n This does not cause any issue as the user interaction takes atleast a fraction of second and the final\n callout state is ultimately achieved.\n If a user performs very swift mouse maneuver, the intermediate events will be lost but the callout experience\n remains smooth.\n */\n }\n if (!found) {\n this.setState({\n isCalloutVisible: false,\n nearestCircleToHighlight: nearestCircleToHighlight,\n displayOfLine: InterceptVisibility.hide,\n isCircleClicked: false,\n });\n }\n };\n /**\n * just cleaning up the state which we have set in the mouse move event\n */\n private _onRectMouseOut = () => {\n /**/\n };\n\n private _handleChartMouseLeave = () => {\n this.setState({\n refSelected: null,\n isCalloutVisible: false,\n nearestCircleToHighlight: null,\n lineXValue: 0,\n displayOfLine: InterceptVisibility.hide,\n isCircleClicked: false,\n stackCalloutProps: undefined,\n dataPointCalloutProps: undefined,\n hoverXValue: undefined,\n YValueHover: [],\n });\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _getStackedData = (keys: string[], dataSet: any) => {\n const stackedValues = d3Stack().keys(keys)(dataSet);\n const maxOfYVal = d3Max(stackedValues[stackedValues.length - 1], dp => dp[1])!;\n const stackedData: Array<IAreaChartDataSetPoint[]> = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stackedValues.forEach((layer: any) => {\n const currentStack: IAreaChartDataSetPoint[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n layer.forEach((d: any) => {\n currentStack.push({\n values: d,\n xVal: d.data.xVal,\n });\n });\n stackedData.push(currentStack);\n });\n this._isMultiStackChart = stackedData && stackedData.length > 1 ? true : false;\n return {\n stackedData,\n maxOfYVal,\n };\n };\n\n private _createDataSet = (points: ILineChartPoints[]) => {\n const allChartPoints: ILineChartDataPoint[] = [];\n const dataSet: IAreaChartDataSetPoint[] = [];\n const colors: string[] = [];\n const opacity: number[] = [];\n const calloutPoints = calloutData(points!);\n\n points &&\n points.length &&\n points.forEach((singleChartPoint: ILineChartPoints) => {\n colors.push(singleChartPoint.color!);\n opacity.push(singleChartPoint.opacity || 1);\n allChartPoints.push(...singleChartPoint.data);\n });\n\n let tempArr = allChartPoints;\n while (tempArr.length) {\n const valToCheck = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n const filteredChartPoints: ILineChartDataPoint[] = tempArr.filter(\n (point: ILineChartDataPoint) => (point.x instanceof Date ? point.x.toLocaleString() : point.x) === valToCheck,\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDataset: any = {};\n filteredChartPoints.forEach((singleDataPoint: ILineChartDataPoint, index: number) => {\n singleDataset.xVal = singleDataPoint.x;\n singleDataset[`chart${index}`] = singleDataPoint.y;\n });\n dataSet.push(singleDataset);\n // removing compared objects from array\n const val = tempArr[0].x instanceof Date ? tempArr[0].x.toLocaleString() : tempArr[0].x;\n tempArr = tempArr.filter(\n (point: ILineChartDataPoint) => (point.x instanceof Date ? point.x.toLocaleString() : point.x) !== val,\n );\n }\n\n // get keys from dataset, used to create stacked data\n const keysLength: number = dataSet && Object.keys(dataSet[0])!.length;\n const keys: string[] = [];\n for (let i = 0; i < keysLength - 1; i++) {\n const keyVal = `chart${i}`;\n keys.push(keyVal);\n }\n\n // Stacked Info used to draw graph\n const stackedInfo = this._getStackedData(keys, dataSet);\n\n return {\n colors,\n opacity,\n keys,\n stackedInfo,\n calloutPoints,\n };\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerStack\n ? this.props.onRenderCalloutPerStack(this.state.stackCalloutProps)\n : this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n : null;\n };\n\n private _getGraphData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xAxis: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n yAxis: any,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) => {\n this._chart = this._drawGraph(containerHeight, xAxis, yAxis, xElement!);\n };\n\n private _onLegendClick(legend: string): void {\n if (this.state.selectedLegend === legend) {\n this.setState({\n selectedLegend: '',\n });\n } else {\n this.setState({\n selectedLegend: legend,\n });\n }\n }\n\n private _onLegendHover(legend: string): void {\n this.setState({\n activeLegend: legend,\n });\n }\n\n private _onLegendLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _getLegendData = (points: ILineChartPoints[]): JSX.Element => {\n const data = points;\n const actions: ILegend[] = [];\n\n data.forEach((singleChartData: ILineChartPoints) => {\n const color: string = singleChartData.color!;\n const checkSimilarLegends = actions.filter(\n (leg: ILegend) => leg.title === singleChartData.legend && leg.color === color,\n );\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: ILegend = {\n title: singleChartData.legend,\n color: color,\n action: () => {\n this._onLegendClick(singleChartData.legend);\n },\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(singleChartData.legend);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n };\n\n actions.push(legend);\n });\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n {...this.props.legendProps}\n />\n );\n };\n\n private _onDataPointClick = (func: (() => void) | undefined) => {\n if (func) {\n func();\n }\n this.setState({ isCircleClicked: true });\n };\n\n private _getOpacity = (legend: string): number => {\n if (!this._isMultiStackChart) {\n return 0.7;\n } else {\n const opacity = this._legendHighlighted(legend) || this._noLegendHighlighted() ? 0.7 : 0.1;\n return opacity;\n }\n };\n\n private _getLineOpacity = (legend: string): number => {\n if (!this._isMultiStackChart) {\n return 1;\n } else {\n let opacity = 0.3;\n if (this.state.isCalloutVisible) {\n opacity = 1;\n }\n if (!this._noLegendHighlighted()) {\n opacity = this._legendHighlighted(legend) ? 0 : 0.1;\n }\n return opacity;\n }\n };\n\n private _updateCircleFillColor = (xDataPoint: number | Date, lineColor: string, circleId: string): string => {\n let fillColor = lineColor;\n if (this.state.nearestCircleToHighlight === xDataPoint || this.state.activePoint === circleId) {\n this._highlightedCircleId = circleId;\n if (!this.state.isCircleClicked) {\n fillColor = this.props.theme!.palette.white;\n }\n }\n\n return fillColor;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _drawGraph = (containerHeight: number, xScale: any, yScale: any, xElement: SVGElement): JSX.Element[] => {\n const points = this._addDefaultColors(this.props.data.lineChartData);\n const { pointOptions, pointLineOptions } = this.props.data;\n const area = d3Area()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y0((d: any) => yScale(d.values[0]))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y1((d: any) => yScale(d.values[1]))\n .curve(d3CurveBasis);\n const line = d3Line()\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .x((d: any) => xScale(d.xVal))\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .y((d: any) => yScale(d.values[1]))\n .curve(d3CurveBasis);\n\n const graph: JSX.Element[] = [];\n let lineColor: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._stackedData.forEach((singleStackedData: Array<any>, index: number) => {\n graph.push(\n <React.Fragment key={`${index}-graph-${this._uniqueIdForGraph}`}>\n <path\n id={`${index}-line-${this._uniqueIdForGraph}`}\n d={line(singleStackedData)!}\n fill={'transparent'}\n strokeWidth={3}\n stroke={this._colors[index]}\n opacity={this._getLineOpacity(points[index]!.legend)}\n onMouseMove={this._onRectMouseMove}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n {...points[index]!.lineOptions}\n />\n {singleStackedData.length === 1 ? (\n <circle\n id={`${index}-graph-${this._uniqueIdForGraph}`}\n cx={xScale(singleStackedData[0].xVal)}\n cy={yScale(singleStackedData[0].values[1])}\n r={6}\n stroke={this._colors[index]}\n strokeWidth={3}\n fill={this._colors[index]}\n opacity={this._opacity[index]}\n fillOpacity={this._getOpacity(points[index]!.legend)}\n onMouseMove={this._onRectMouseMove}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n />\n ) : (\n <path\n id={`${index}-graph-${this._uniqueIdForGraph}`}\n d={area(singleStackedData)!}\n fill={this._colors[index]}\n opacity={this._opacity[index]}\n fillOpacity={this._getOpacity(points[index]!.legend)}\n onMouseMove={this._onRectMouseMove}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n {...(this.props.optimizeLargeData && {\n 'data-is-focusable': true,\n role: 'img',\n 'aria-label': `${points[index].legend}, series ${index + 1} of ${points.length} with ${\n points[index].data.length\n } data points.`,\n })}\n />\n )}\n </React.Fragment>,\n );\n });\n\n const circleRadius = pointOptions && pointOptions.r ? Number(pointOptions.r) : 8;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._stackedData.forEach((singleStackedData: Array<any>, index: number) => {\n if (points.length === index) {\n return;\n }\n\n if (!this.props.optimizeLargeData || singleStackedData.length === 1) {\n // Render circles for all data points\n graph.push(\n <g key={`${index}-dots-${this._uniqueIdForGraph}`} d={area(singleStackedData)!} clipPath=\"url(#clip)\">\n {singleStackedData.map((singlePoint: IDPointType, pointIndex: number) => {\n const circleId = `${this._circleId}_${index * this._stackedData[0].length + pointIndex}`;\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n lineColor = points[index]!.color!;\n return (\n <circle\n key={circleId}\n id={circleId}\n data-is-focusable={true}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={this._updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n onClick={this._onDataPointClick.bind(this, points[index]!.data[pointIndex].onDataPointClick!)}\n onFocus={() => this._handleFocus(index, pointIndex, circleId)}\n onBlur={this._handleBlur}\n {...pointOptions}\n r={this._getCircleRadius(xDataPoint, circleRadius, circleId)}\n role=\"img\"\n aria-label={this._getAriaLabel(index, pointIndex)}\n />\n );\n })}\n </g>,\n );\n } else {\n // Render circles for data points close to the mouse pointer only\n singleStackedData.forEach((singlePoint: IDPointType, pointIndex: number) => {\n const xDataPoint = singlePoint.xVal instanceof Date ? singlePoint.xVal.getTime() : singlePoint.xVal;\n if (this.state.nearestCircleToHighlight === xDataPoint) {\n const circleId = `${this._circleId}_${index * this._stackedData[0].length + pointIndex}`;\n lineColor = points[index]!.color!;\n graph.push(\n <circle\n key={circleId}\n id={circleId}\n cx={xScale(singlePoint.xVal)}\n cy={yScale(singlePoint.values[1])}\n stroke={lineColor}\n strokeWidth={3}\n fill={this._updateCircleFillColor(xDataPoint, lineColor, circleId)}\n onMouseOut={this._onRectMouseOut}\n onMouseOver={this._onRectMouseMove}\n onClick={this._onDataPointClick.bind(this, points[index]!.data[pointIndex].onDataPointClick!)}\n {...pointOptions}\n r={this._getCircleRadius(xDataPoint, circleRadius, circleId)}\n />,\n );\n }\n });\n }\n });\n graph.push(\n <line\n id={this._verticalLineId}\n key={this._verticalLineId}\n x1={this.state.lineXValue}\n y1={0}\n x2={this.state.lineXValue}\n y2={containerHeight}\n strokeWidth={1}\n strokeDasharray={5.5}\n stroke={lineColor!}\n opacity={0.5}\n visibility={this.state.displayOfLine}\n {...pointLineOptions}\n />,\n );\n const classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!this.props.showXAxisLablesTooltip) {\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classNames.tooltip!,\n id: this._tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return graph;\n };\n\n private _getCircleRadius = (xDataPoint: number, circleRadius: number, circleId: string): number => {\n const { isCircleClicked, nearestCircleToHighlight, activePoint } = this.state;\n if (isCircleClicked && nearestCircleToHighlight === xDataPoint) {\n return 1;\n } else if (nearestCircleToHighlight === xDataPoint || activePoint === circleId) {\n return circleRadius;\n } else {\n return 0;\n }\n };\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legend: string) => {\n return (\n this.state.selectedLegend === legend || (this.state.selectedLegend === '' && this.state.activeLegend === legend)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.activeLegend === '';\n };\n\n private _addDefaultColors = (lineChartData?: ILineChartPoints[]): ILineChartPoints[] => {\n return lineChartData\n ? lineChartData.map((item, index) => {\n let color: string;\n // isInverted property is applicable to v8 themes only\n if (typeof item.color === 'undefined') {\n color = getNextColor(index, 0, this.props.theme?.isInverted);\n } else {\n color = getColorFromToken(item.color, this.props.theme?.isInverted);\n }\n\n return { ...item, color };\n })\n : [];\n };\n\n private _handleFocus = (lineIndex: number, pointIndex: number, circleId: string) => {\n const { x, y, xAxisCalloutData } = this.props.data.lineChartData![lineIndex].data[pointIndex];\n const formattedDate = x instanceof Date ? x.toLocaleString() : x;\n const modifiedXVal = x instanceof Date ? x.getTime() : x;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const found: any = this._calloutPoints.find((e: { x: string | number }) => e.x === modifiedXVal);\n // Show details in the callout for the focused point only\n found.values = found.values.filter((e: { y: number }) => e.y === y);\n\n this.setState({\n refSelected: `#${circleId}`,\n isCalloutVisible: true,\n hoverXValue: xAxisCalloutData ? xAxisCalloutData : formattedDate,\n YValueHover: found.values,\n stackCalloutProps: found,\n dataPointCalloutProps: found,\n activePoint: circleId,\n });\n };\n\n private _handleBlur = () => {\n this.setState({\n refSelected: null,\n isCalloutVisible: false,\n hoverXValue: undefined,\n YValueHover: [],\n stackCalloutProps: undefined,\n dataPointCalloutProps: undefined,\n activePoint: '',\n });\n };\n\n private _getAriaLabel = (lineIndex: number, pointIndex: number): string => {\n const line = this.props.data.lineChartData![lineIndex];\n const point = line.data[pointIndex];\n const formattedDate = point.x instanceof Date ? point.x.toLocaleString() : point.x;\n const xValue = point.xAxisCalloutData || formattedDate;\n const legend = line.legend;\n const yValue = point.yAxisCalloutData || point.y;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n}\n"]}
@@ -29,6 +29,7 @@ export interface IAreaChartProps extends ICartesianChartProps {
29
29
  * The prop used to define the culture to localized the numbers
30
30
  */
31
31
  culture?: string;
32
+ optimizeLargeData?: boolean;
32
33
  }
33
34
  export interface IAreaChartStyles extends ICartesianChartStyles {
34
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AreaChart.types.js","sourceRoot":"../src/","sources":["components/AreaChart/AreaChart.types.ts"],"names":[],"mappings":"","sourcesContent":["import { IRenderFunction, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport {\n IChartProps,\n IRefArrayData,\n IBasestate,\n ILineChartDataPoint,\n ILineChartPoints,\n ICustomizedCalloutData,\n IMargins,\n} from '../../types/index';\nimport {\n ICartesianChartStyles,\n ICartesianChartStyleProps,\n ICartesianChartProps,\n IChildProps,\n} from '../CommonComponents/CartesianChart.types';\n\nexport type { IChildProps, IRefArrayData, IBasestate, ILineChartDataPoint, ILineChartPoints, IMargins };\nexport interface IAreaChartProps extends ICartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: IChartProps;\n\n /**\n * This prop is used to draw Y axis grid lines on the chart. Default value will be false\n * @deprecated now lines are shown by default\n * no need to use this prop\n */\n showYAxisGridLines?: boolean;\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 * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: IRenderFunction<ICustomizedCalloutData>;\n\n /**\n * Define a custom callout renderer for a stack; default is to render per data point\n */\n onRenderCalloutPerStack?: IRenderFunction<ICustomizedCalloutData>;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n}\n\nexport interface IAreaChartStyles extends ICartesianChartStyles {}\n\nexport interface IAreaChartStyleProps extends ICartesianChartStyleProps {}\n"]}
1
+ {"version":3,"file":"AreaChart.types.js","sourceRoot":"../src/","sources":["components/AreaChart/AreaChart.types.ts"],"names":[],"mappings":"","sourcesContent":["import { IRenderFunction, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport {\n IChartProps,\n IRefArrayData,\n IBasestate,\n ILineChartDataPoint,\n ILineChartPoints,\n ICustomizedCalloutData,\n IMargins,\n} from '../../types/index';\nimport {\n ICartesianChartStyles,\n ICartesianChartStyleProps,\n ICartesianChartProps,\n IChildProps,\n} from '../CommonComponents/CartesianChart.types';\n\nexport type { IChildProps, IRefArrayData, IBasestate, ILineChartDataPoint, ILineChartPoints, IMargins };\nexport interface IAreaChartProps extends ICartesianChartProps {\n /**\n * Data to render in the chart.\n */\n data: IChartProps;\n\n /**\n * This prop is used to draw Y axis grid lines on the chart. Default value will be false\n * @deprecated now lines are shown by default\n * no need to use this prop\n */\n showYAxisGridLines?: boolean;\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 * Define a custom callout renderer for a data point\n */\n onRenderCalloutPerDataPoint?: IRenderFunction<ICustomizedCalloutData>;\n\n /**\n * Define a custom callout renderer for a stack; default is to render per data point\n */\n onRenderCalloutPerStack?: IRenderFunction<ICustomizedCalloutData>;\n\n /**\n * The prop used to define the culture to localized the numbers\n */\n culture?: string;\n\n /*\n * Optimize area chart rendering for large data set.\n */\n optimizeLargeData?: boolean;\n}\n\nexport interface IAreaChartStyles extends ICartesianChartStyles {}\n\nexport interface IAreaChartStyleProps extends ICartesianChartStyleProps {}\n"]}
@@ -13,14 +13,18 @@ var LegendsBase = /** @class */ (function (_super) {
13
13
  function LegendsBase(props) {
14
14
  var _this = _super.call(this, props) || this;
15
15
  _this._onRenderData = function (data) {
16
- var _a = _this.props, overflowProps = _a.overflowProps, _b = _a.allowFocusOnLegends, allowFocusOnLegends = _b === void 0 ? true : _b;
16
+ var _a = _this.props, overflowProps = _a.overflowProps, _b = _a.allowFocusOnLegends, allowFocusOnLegends = _b === void 0 ? true : _b, _c = _a.canSelectMultipleLegends, canSelectMultipleLegends = _c === void 0 ? false : _c;
17
17
  var rootStyles = {
18
18
  root: {
19
19
  justifyContent: _this.props.centerLegends ? 'center' : 'unset',
20
20
  flexWrap: 'wrap',
21
21
  },
22
22
  };
23
- return (React.createElement(FocusZone, __assign({}, (allowFocusOnLegends && { role: 'listbox', 'aria-label': 'Legends' })),
23
+ return (React.createElement(FocusZone, __assign({}, (allowFocusOnLegends && {
24
+ role: 'listbox',
25
+ 'aria-label': 'Legends',
26
+ 'aria-multiselectable': canSelectMultipleLegends,
27
+ })),
24
28
  React.createElement(OverflowSet, __assign({ items: data.primary, overflowItems: data.overflow, onRenderItem: _this._renderButton, onRenderOverflowButton: _this._renderOverflowItems }, overflowProps, { styles: __assign(__assign({}, rootStyles), overflowProps === null || overflowProps === void 0 ? void 0 : overflowProps.styles) }))));
25
29
  };
26
30
  _this._onReduceData = function (currentdata) {
@@ -81,7 +85,7 @@ var LegendsBase = /** @class */ (function (_super) {
81
85
  }
82
86
  };
83
87
  _this._onRenderCompactCard = function (expandingCard) {
84
- var _a = _this.props, _b = _a.allowFocusOnLegends, allowFocusOnLegends = _b === void 0 ? true : _b, className = _a.className, styles = _a.styles, theme = _a.theme;
88
+ var _a = _this.props, _b = _a.allowFocusOnLegends, allowFocusOnLegends = _b === void 0 ? true : _b, className = _a.className, styles = _a.styles, theme = _a.theme, _c = _a.canSelectMultipleLegends, canSelectMultipleLegends = _c === void 0 ? false : _c;
85
89
  var overflowHoverCardLegends = [];
86
90
  var classNames = getClassNames(styles, {
87
91
  theme: theme,
@@ -91,7 +95,11 @@ var LegendsBase = /** @class */ (function (_super) {
91
95
  var hoverCardElement = _this._renderButton(legend, index, true);
92
96
  overflowHoverCardLegends.push(hoverCardElement);
93
97
  });
94
- var hoverCardData = (React.createElement(FocusZone, __assign({}, (allowFocusOnLegends && { role: 'listbox' }), { direction: FocusZoneDirection.vertical }, _this.props.focusZonePropsInHoverCard, { className: classNames.hoverCardRoot }), overflowHoverCardLegends));
98
+ var hoverCardData = (React.createElement(FocusZone, __assign({}, (allowFocusOnLegends && {
99
+ role: 'listbox',
100
+ 'aria-label': 'Legends',
101
+ 'aria-multiselectable': canSelectMultipleLegends,
102
+ }), { direction: FocusZoneDirection.vertical }, _this.props.focusZonePropsInHoverCard, { className: classNames.hoverCardRoot }), overflowHoverCardLegends));
95
103
  return hoverCardData;
96
104
  };
97
105
  _this._renderOverflowItems = function (legends) {
@@ -188,7 +196,7 @@ var LegendsBase = /** @class */ (function (_super) {
188
196
  return (React.createElement("button", __assign({}, (allowFocusOnLegends && {
189
197
  'aria-selected': _this.state.selectedLegend === legend.title,
190
198
  role: 'option',
191
- 'aria-label': legend.title + " selected",
199
+ 'aria-label': "" + legend.title,
192
200
  'aria-setsize': data['aria-setsize'],
193
201
  'aria-posinset': data['aria-posinset'],
194
202
  }), (data.nativeButtonProps && __assign({}, data.nativeButtonProps)), { key: index, className: classNames.legend, onClick: onClickHandler, onMouseOver: onHoverHandler, onMouseOut: onMouseOut, onFocus: onHoverHandler, onBlur: onMouseOut, "data-is-focusable": allowFocusOnLegends }),