@cloudscape-design/components 3.0.22 → 3.0.25

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 (198) hide show
  1. package/alert/styles.scoped.css +0 -34
  2. package/annotation-context/annotation/annotation-popover.d.ts.map +1 -1
  3. package/annotation-context/annotation/annotation-popover.js +12 -16
  4. package/annotation-context/annotation/annotation-popover.js.map +1 -1
  5. package/annotation-context/annotation/styles.scoped.css +0 -18
  6. package/app-layout/content-wrapper/styles.scoped.css +0 -4
  7. package/app-layout/index.d.ts.map +1 -1
  8. package/app-layout/index.js +6 -4
  9. package/app-layout/index.js.map +1 -1
  10. package/app-layout/mobile-toolbar/styles.scoped.css +0 -9
  11. package/app-layout/styles.scoped.css +0 -20
  12. package/app-layout/toggles/styles.scoped.css +0 -16
  13. package/app-layout/visual-refresh/styles.scoped.css +0 -71
  14. package/area-chart/styles.scoped.css +0 -13
  15. package/attribute-editor/styles.scoped.css +0 -23
  16. package/badge/styles.scoped.css +0 -15
  17. package/bar-chart/interfaces.d.ts +1 -1
  18. package/bar-chart/interfaces.d.ts.map +1 -1
  19. package/bar-chart/interfaces.js.map +1 -1
  20. package/box/styles.scoped.css +0 -171
  21. package/breadcrumb-group/item/styles.scoped.css +0 -11
  22. package/breadcrumb-group/styles.scoped.css +0 -10
  23. package/button/styles.scoped.css +0 -264
  24. package/button-dropdown/category-elements/styles.scoped.css +0 -26
  25. package/button-dropdown/item-element/styles.scoped.css +0 -22
  26. package/button-dropdown/mobile-expandable-group/styles.scoped.css +0 -5
  27. package/button-dropdown/styles.scoped.css +0 -7
  28. package/cards/styles.scoped.css +0 -45
  29. package/checkbox/styles.scoped.css +0 -11
  30. package/code-editor/styles.scoped.css +0 -87
  31. package/collection-preferences/styles.scoped.css +0 -12
  32. package/column-layout/styles.scoped.css +0 -12
  33. package/container/styles.scoped.css +0 -27
  34. package/date-picker/calendar/index.d.ts.map +1 -1
  35. package/date-picker/calendar/index.js +2 -2
  36. package/date-picker/calendar/index.js.map +1 -1
  37. package/date-picker/calendar/utils/locales.d.ts +2 -0
  38. package/date-picker/calendar/utils/locales.d.ts.map +1 -1
  39. package/date-picker/calendar/utils/locales.js +4 -0
  40. package/date-picker/calendar/utils/locales.js.map +1 -1
  41. package/date-picker/styles.scoped.css +0 -45
  42. package/date-range-picker/calendar/grids/day/styles.scoped.css +0 -45
  43. package/date-range-picker/calendar/index.js +2 -2
  44. package/date-range-picker/calendar/index.js.map +1 -1
  45. package/date-range-picker/index.d.ts.map +1 -1
  46. package/date-range-picker/index.js +13 -15
  47. package/date-range-picker/index.js.map +1 -1
  48. package/date-range-picker/relative-range/styles.scoped.css +0 -3
  49. package/date-range-picker/styles.css.js +41 -42
  50. package/date-range-picker/styles.scoped.css +49 -92
  51. package/date-range-picker/styles.selectors.js +41 -42
  52. package/expandable-section/styles.scoped.css +0 -33
  53. package/flashbar/styles.scoped.css +0 -36
  54. package/form/styles.scoped.css +0 -12
  55. package/form-field/styles.scoped.css +0 -26
  56. package/grid/styles.scoped.css +0 -6
  57. package/header/styles.scoped.css +0 -51
  58. package/help-panel/styles.scoped.css +0 -73
  59. package/hotspot/styles.scoped.css +0 -3
  60. package/icon/styles.scoped.css +0 -33
  61. package/input/styles.scoped.css +0 -49
  62. package/internal/base-component/styles.scoped.css +0 -1
  63. package/internal/components/abstract-switch/styles.scoped.css +0 -7
  64. package/internal/components/button-trigger/styles.scoped.css +0 -42
  65. package/internal/components/cartesian-chart/styles.scoped.css +0 -10
  66. package/internal/components/chart-filter/styles.scoped.css +0 -4
  67. package/internal/components/chart-legend/styles.scoped.css +0 -8
  68. package/internal/components/chart-plot/styles.scoped.css +0 -1
  69. package/internal/components/chart-popover/styles.scoped.css +0 -4
  70. package/internal/components/chart-series-details/styles.scoped.css +0 -12
  71. package/internal/components/chart-series-marker/styles.scoped.css +0 -7
  72. package/internal/components/chart-status-container/styles.scoped.css +0 -1
  73. package/internal/components/checkbox-icon/styles.scoped.css +0 -10
  74. package/internal/components/content-layout/styles.scoped.css +0 -5
  75. package/internal/components/dark-ribbon/styles.scoped.css +0 -1
  76. package/internal/components/dropdown/styles.scoped.css +0 -17
  77. package/internal/components/dropdown-footer/styles.scoped.css +0 -6
  78. package/internal/components/dropdown-status/styles.scoped.css +0 -6
  79. package/internal/components/filtering-token/styles.scoped.css +0 -21
  80. package/internal/components/menu-dropdown/styles.scoped.css +0 -17
  81. package/internal/components/option/index.js +3 -3
  82. package/internal/components/option/index.js.map +1 -1
  83. package/internal/components/option/option-parts.js +3 -3
  84. package/internal/components/option/option-parts.js.map +1 -1
  85. package/internal/components/option/styles.scoped.css +0 -16
  86. package/internal/components/options-list/styles.scoped.css +0 -5
  87. package/internal/components/selectable-item/styles.scoped.css +0 -44
  88. package/internal/environment.js +1 -1
  89. package/line-chart/interfaces.d.ts +1 -1
  90. package/line-chart/interfaces.d.ts.map +1 -1
  91. package/line-chart/interfaces.js.map +1 -1
  92. package/link/styles.scoped.css +0 -77
  93. package/mixed-line-bar-chart/bar-series.d.ts +1 -1
  94. package/mixed-line-bar-chart/bar-series.d.ts.map +1 -1
  95. package/mixed-line-bar-chart/bar-series.js.map +1 -1
  96. package/mixed-line-bar-chart/chart-container.d.ts.map +1 -1
  97. package/mixed-line-bar-chart/chart-container.js +9 -10
  98. package/mixed-line-bar-chart/chart-container.js.map +1 -1
  99. package/mixed-line-bar-chart/chart-filters.d.ts +2 -2
  100. package/mixed-line-bar-chart/chart-filters.d.ts.map +1 -1
  101. package/mixed-line-bar-chart/chart-filters.js +1 -2
  102. package/mixed-line-bar-chart/chart-filters.js.map +1 -1
  103. package/mixed-line-bar-chart/chart-legend.d.ts +2 -2
  104. package/mixed-line-bar-chart/chart-legend.d.ts.map +1 -1
  105. package/mixed-line-bar-chart/chart-legend.js +1 -2
  106. package/mixed-line-bar-chart/chart-legend.js.map +1 -1
  107. package/mixed-line-bar-chart/domain.d.ts +4 -0
  108. package/mixed-line-bar-chart/domain.d.ts.map +1 -0
  109. package/mixed-line-bar-chart/domain.js +138 -0
  110. package/mixed-line-bar-chart/domain.js.map +1 -0
  111. package/mixed-line-bar-chart/format-highlighted.d.ts +2 -4
  112. package/mixed-line-bar-chart/format-highlighted.d.ts.map +1 -1
  113. package/mixed-line-bar-chart/format-highlighted.js +26 -15
  114. package/mixed-line-bar-chart/format-highlighted.js.map +1 -1
  115. package/mixed-line-bar-chart/hooks/use-mouse-hover.d.ts.map +1 -1
  116. package/mixed-line-bar-chart/hooks/use-mouse-hover.js +3 -2
  117. package/mixed-line-bar-chart/hooks/use-mouse-hover.js.map +1 -1
  118. package/mixed-line-bar-chart/hooks/use-navigation.d.ts.map +1 -1
  119. package/mixed-line-bar-chart/hooks/use-navigation.js +23 -35
  120. package/mixed-line-bar-chart/hooks/use-navigation.js.map +1 -1
  121. package/mixed-line-bar-chart/interfaces.d.ts +12 -2
  122. package/mixed-line-bar-chart/interfaces.d.ts.map +1 -1
  123. package/mixed-line-bar-chart/interfaces.js.map +1 -1
  124. package/mixed-line-bar-chart/internal.d.ts.map +1 -1
  125. package/mixed-line-bar-chart/internal.js +14 -6
  126. package/mixed-line-bar-chart/internal.js.map +1 -1
  127. package/mixed-line-bar-chart/line-series.d.ts +2 -2
  128. package/mixed-line-bar-chart/line-series.d.ts.map +1 -1
  129. package/mixed-line-bar-chart/line-series.js +21 -9
  130. package/mixed-line-bar-chart/line-series.js.map +1 -1
  131. package/mixed-line-bar-chart/make-scaled-bar-groups.d.ts.map +1 -1
  132. package/mixed-line-bar-chart/make-scaled-bar-groups.js +11 -4
  133. package/mixed-line-bar-chart/make-scaled-bar-groups.js.map +1 -1
  134. package/mixed-line-bar-chart/make-scaled-series.d.ts +2 -4
  135. package/mixed-line-bar-chart/make-scaled-series.d.ts.map +1 -1
  136. package/mixed-line-bar-chart/make-scaled-series.js +89 -25
  137. package/mixed-line-bar-chart/make-scaled-series.js.map +1 -1
  138. package/mixed-line-bar-chart/styles.scoped.css +0 -13
  139. package/mixed-line-bar-chart/utils.d.ts +5 -6
  140. package/mixed-line-bar-chart/utils.d.ts.map +1 -1
  141. package/mixed-line-bar-chart/utils.js +11 -112
  142. package/mixed-line-bar-chart/utils.js.map +1 -1
  143. package/modal/styles.scoped.css +0 -31
  144. package/multiselect/styles.scoped.css +0 -4
  145. package/package.json +1 -1
  146. package/pagination/styles.scoped.css +0 -22
  147. package/pie-chart/styles.scoped.css +0 -25
  148. package/popover/styles.scoped.css +0 -35
  149. package/progress-bar/internal.d.ts.map +1 -1
  150. package/progress-bar/internal.js +1 -1
  151. package/progress-bar/internal.js.map +1 -1
  152. package/progress-bar/styles.scoped.css +0 -25
  153. package/property-filter/controller.d.ts +3 -3
  154. package/property-filter/controller.d.ts.map +1 -1
  155. package/property-filter/interfaces.d.ts +7 -20
  156. package/property-filter/interfaces.d.ts.map +1 -1
  157. package/property-filter/interfaces.js.map +1 -1
  158. package/property-filter/styles.scoped.css +0 -22
  159. package/property-filter/use-load-items.d.ts +1 -1
  160. package/radio-group/styles.scoped.css +0 -22
  161. package/s3-resource-selector/s3-in-context/styles.scoped.css +0 -6
  162. package/segmented-control/styles.scoped.css +0 -36
  163. package/select/parts/styles.scoped.css +0 -6
  164. package/select/styles.scoped.css +0 -4
  165. package/side-navigation/styles.scoped.css +0 -38
  166. package/space-between/styles.scoped.css +0 -40
  167. package/spinner/styles.scoped.css +0 -17
  168. package/split-panel/styles.scoped.css +0 -65
  169. package/status-indicator/styles.scoped.css +0 -20
  170. package/table/body-cell/styles.scoped.css +0 -29
  171. package/table/header-cell/styles.scoped.css +0 -32
  172. package/table/resizer/styles.scoped.css +0 -6
  173. package/table/selection-control/styles.scoped.css +0 -3
  174. package/table/styles.scoped.css +0 -39
  175. package/tabs/styles.scoped.css +0 -41
  176. package/tabs/tab-header-bar.d.ts.map +1 -1
  177. package/tabs/tab-header-bar.js +3 -1
  178. package/tabs/tab-header-bar.js.map +1 -1
  179. package/tag-editor/styles.scoped.css +0 -12
  180. package/test-utils/dom/split-panel/index.d.ts +1 -0
  181. package/test-utils/dom/split-panel/index.js +3 -0
  182. package/test-utils/dom/split-panel/index.js.map +1 -1
  183. package/test-utils/selectors/split-panel/index.d.ts +1 -0
  184. package/test-utils/selectors/split-panel/index.js +3 -0
  185. package/test-utils/selectors/split-panel/index.js.map +1 -1
  186. package/test-utils/tsconfig.tsbuildinfo +1 -1
  187. package/text-content/styles.scoped.css +0 -54
  188. package/text-filter/styles.scoped.css +0 -7
  189. package/textarea/styles.scoped.css +0 -30
  190. package/tiles/styles.scoped.css +0 -55
  191. package/toggle/styles.scoped.css +0 -14
  192. package/token-group/styles.scoped.css +0 -35
  193. package/top-navigation/1.0-beta/styles.scoped.css +0 -40
  194. package/top-navigation/styles.scoped.css +0 -75
  195. package/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +0 -22
  196. package/tutorial-panel/components/tutorial-list/styles.scoped.css +0 -24
  197. package/tutorial-panel/styles.scoped.css +0 -5
  198. package/wizard/styles.scoped.css +0 -54
@@ -16,7 +16,8 @@ import HighlightedPoint from '../internal/components/cartesian-chart/highlighted
16
16
  import VerticalMarker from '../internal/components/cartesian-chart/vertical-marker';
17
17
  import { ChartScale, NumericChartScale } from '../internal/components/cartesian-chart/scales';
18
18
  import ChartPopover from './chart-popover';
19
- import { computeDomainX, computeDomainY } from './utils';
19
+ import { computeDomainX, computeDomainY } from './domain';
20
+ import { isXThreshold } from './utils';
20
21
  import makeScaledSeries from './make-scaled-series';
21
22
  import makeScaledBarGroups from './make-scaled-bar-groups';
22
23
  import formatHighlighted from './format-highlighted';
@@ -243,8 +244,8 @@ export default function ChartContainer(_a) {
243
244
  return verticalLineX !== null
244
245
  ? scaledSeries
245
246
  .filter(function (_a) {
246
- var x = _a.x;
247
- return x === verticalLineX || isNaN(x);
247
+ var x = _a.x, y = _a.y;
248
+ return (x === verticalLineX || isNaN(x)) && !isNaN(y);
248
249
  })
249
250
  .map(function (_a, index) {
250
251
  var x = _a.x, y = _a.y, color = _a.color;
@@ -266,14 +267,12 @@ export default function ChartContainer(_a) {
266
267
  if (highlightedX === null) {
267
268
  return null;
268
269
  }
269
- // If there is a highlighted point - only use its corresponding series details.
270
- for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {
271
- var series_2 = visibleSeries_1[_i];
272
- if (series_2.series === (highlightedPoint === null || highlightedPoint === void 0 ? void 0 : highlightedPoint.series)) {
273
- return formatHighlighted(highlightedX, [series_2], xTickFormatter);
274
- }
270
+ // When series point is highlighted show the corresponding series and matching x-thresholds.
271
+ if (highlightedPoint) {
272
+ var seriesToShow = visibleSeries.filter(function (series) { return series.series === (highlightedPoint === null || highlightedPoint === void 0 ? void 0 : highlightedPoint.series) || isXThreshold(series.series); });
273
+ return formatHighlighted(highlightedX, seriesToShow, xTickFormatter);
275
274
  }
276
- // Otherwise - use all series details.
275
+ // Otherwise - show all visible series details.
277
276
  return formatHighlighted(highlightedX, visibleSeries, xTickFormatter);
278
277
  }, [highlightedX, highlightedPoint, visibleSeries, xTickFormatter]);
279
278
  var activeAriaLabel = useMemo(function () {
@@ -1 +1 @@
1
- {"version":3,"file":"chart-container.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-container.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { nodeContains } from '../internal/utils/dom';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nimport { getXTickCount, getYTickCount, createXTicks, createYTicks } from '../internal/components/cartesian-chart/ticks';\nimport ChartPlot, { ChartPlotRef } from '../internal/components/chart-plot';\nimport AxisLabel from '../internal/components/cartesian-chart/axis-label';\nimport LabelsMeasure from '../internal/components/cartesian-chart/labels-measure';\nimport LeftLabels from '../internal/components/cartesian-chart/left-labels';\nimport BottomLabels from '../internal/components/cartesian-chart/bottom-labels';\nimport VerticalGridLines from '../internal/components/cartesian-chart/vertical-grid-lines';\nimport EmphasizedBaseline from '../internal/components/cartesian-chart/emphasized-baseline';\nimport HighlightedPoint from '../internal/components/cartesian-chart/highlighted-point';\nimport VerticalMarker from '../internal/components/cartesian-chart/vertical-marker';\nimport { ChartScale, NumericChartScale } from '../internal/components/cartesian-chart/scales';\nimport ChartPopover from './chart-popover';\nimport { ChartDataTypes, InternalChartSeries, MixedLineBarChartProps, ScaleType } from './interfaces';\nimport { computeDomainX, computeDomainY } from './utils';\nimport makeScaledSeries, { ScaledPoint } from './make-scaled-series';\nimport makeScaledBarGroups, { ScaledBarGroup } from './make-scaled-bar-groups';\nimport formatHighlighted from './format-highlighted';\nimport DataSeries from './data-series';\nimport BarGroups from './bar-groups';\nimport { useMouseHover } from './hooks/use-mouse-hover';\nimport { useNavigation } from './hooks/use-navigation';\nimport { usePopover } from './hooks/use-popover';\n\nimport styles from './styles.css.js';\nimport { CartesianChartProps } from '../internal/components/cartesian-chart/interfaces';\nimport useContainerWidth from '../internal/utils/use-container-width';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\n\nconst LEFT_LABELS_MARGIN = 16;\nconst BOTTOM_LABELS_OFFSET = 12;\n\ntype TickFormatter = undefined | ((value: ChartDataTypes) => string);\n\nexport interface ChartContainerProps<T extends ChartDataTypes> {\n series: ReadonlyArray<InternalChartSeries<T>>;\n visibleSeries: ReadonlyArray<InternalChartSeries<T>>;\n\n height: number;\n detailPopoverSize: MixedLineBarChartProps<T>['detailPopoverSize'];\n\n xScaleType: ScaleType;\n yScaleType: 'linear' | 'log';\n\n xDomain: MixedLineBarChartProps<T>['xDomain'];\n yDomain: MixedLineBarChartProps<T>['yDomain'];\n\n xTickFormatter?: CartesianChartProps.TickFormatter<T>;\n yTickFormatter?: CartesianChartProps.TickFormatter<number>;\n\n xTitle?: string;\n yTitle?: string;\n\n stackedBars?: boolean;\n emphasizeBaselineAxis: boolean;\n horizontalBars?: boolean;\n\n highlightedSeries?: MixedLineBarChartProps<T>['highlightedSeries'];\n onHighlightChange: (series: InternalChartSeries<T>['series'] | null) => void;\n highlightedPoint: ScaledPoint<T> | null;\n setHighlightedPoint: (point: ScaledPoint<T> | null) => void;\n highlightedGroupIndex: number | null;\n setHighlightedGroupIndex: (groupIndex: number | null) => void;\n legendSeries: null | MixedLineBarChartProps.ChartSeries<T>;\n\n ariaLabel: MixedLineBarChartProps<T>['ariaLabel'];\n ariaLabelledby: MixedLineBarChartProps<T>['ariaLabelledby'];\n ariaDescription: MixedLineBarChartProps<T>['ariaDescription'];\n i18nStrings: MixedLineBarChartProps<T>['i18nStrings'];\n\n plotContainerRef: React.RefObject<HTMLDivElement>;\n}\n\nexport default function ChartContainer<T extends ChartDataTypes>({\n height: plotHeight,\n series,\n visibleSeries,\n highlightedSeries,\n onHighlightChange,\n highlightedPoint,\n setHighlightedPoint,\n highlightedGroupIndex,\n setHighlightedGroupIndex,\n legendSeries,\n detailPopoverSize = 'medium',\n stackedBars = false,\n horizontalBars = false,\n xScaleType,\n yScaleType,\n xTickFormatter,\n yTickFormatter,\n emphasizeBaselineAxis,\n xTitle,\n yTitle,\n ariaLabel,\n ariaLabelledby,\n ariaDescription,\n i18nStrings = {},\n plotContainerRef,\n ...props\n}: ChartContainerProps<T>) {\n const plotRef = useRef<ChartPlotRef>(null);\n const verticalMarkerRef = useRef<SVGLineElement>(null);\n\n const [leftLabelsWidth, setLeftLabelsWidth] = useState(0);\n const [bottomLabelsHeight, setBottomLabelsHeight] = useState(0);\n const [containerWidth, containerMeasureRef] = useContainerWidth(500);\n const plotWidth = containerWidth ? containerWidth - leftLabelsWidth - LEFT_LABELS_MARGIN : 500;\n const containerRefObject = useRef(null);\n const containerRef = useMergeRefs(containerMeasureRef, containerRefObject);\n\n const isRefresh = useVisualRefresh(containerRefObject);\n\n const linesOnly = series.every(({ series }) => series.type === 'line' || series.type === 'threshold');\n\n const xDomain = (props.xDomain || computeDomainX(series, xScaleType)) as\n | readonly number[]\n | readonly string[]\n | readonly Date[];\n const yDomain = (props.yDomain || computeDomainY(series, yScaleType, stackedBars)) as readonly number[];\n\n const xTickCount = getXTickCount(plotWidth);\n const yTickCount = getYTickCount(plotHeight);\n\n const rangeBottomTop: [number, number] = [0, plotHeight];\n const rangeTopBottom: [number, number] = [plotHeight, 0];\n const rangeLeftRight: [number, number] = [0, plotWidth];\n const xScale = new ChartScale(xScaleType, xDomain, horizontalBars ? rangeBottomTop : rangeLeftRight, linesOnly);\n const yScale = new NumericChartScale(\n yScaleType,\n yDomain,\n horizontalBars ? rangeLeftRight : rangeTopBottom,\n props.yDomain ? null : yTickCount\n );\n\n const xTicks = createXTicks(xScale, xTickCount);\n const yTicks = createYTicks(yScale, yTickCount);\n\n /**\n * Interactions\n */\n const highlightedPointRef = useRef<SVGGElement>(null);\n const highlightedGroupRef = useRef<SVGRectElement>(null);\n const [isPlotFocused, setPlotFocused] = useState(false);\n\n // Some chart components are rendered against \"x\" or \"y\" axes,\n // When \"horizontalBars\" is enabled, the axes are inverted.\n const x = !horizontalBars ? 'x' : 'y';\n const y = !horizontalBars ? 'y' : 'x';\n const xy = {\n ticks: { x: xTicks, y: yTicks },\n scale: { x: xScale, y: yScale },\n tickFormatter: { x: xTickFormatter, y: yTickFormatter },\n title: { x: xTitle, y: yTitle },\n ariaRoleDescription: { x: i18nStrings.xAxisAriaRoleDescription, y: i18nStrings.yAxisAriaRoleDescription },\n };\n\n const scaledSeries = makeScaledSeries(visibleSeries, xScale, yScale);\n const barGroups: ScaledBarGroup<T>[] = makeScaledBarGroups(visibleSeries, xScale, plotWidth, plotHeight, y);\n\n const { isPopoverOpen, isPopoverPinned, showPopover, pinPopover, dismissPopover } = usePopover();\n\n // Allows to add a delay between popover is dismissed and handlers are enabled to prevent immediate popover reopening.\n const [isHandlersDisabled, setHandlersDisabled] = useState(!isPopoverPinned);\n useEffect(() => {\n if (isPopoverPinned) {\n setHandlersDisabled(true);\n } else {\n const timeoutId = setTimeout(() => setHandlersDisabled(false), 25);\n return () => clearTimeout(timeoutId);\n }\n }, [isPopoverPinned]);\n\n // Highlighted point and highlighted series must be in sync.\n // TODO: refactor the code so that it is not possible to make series and point highlight out of sync.\n const highlightPoint = useCallback(\n (point: ScaledPoint<T> | null) => {\n setHighlightedGroupIndex(null);\n setHighlightedPoint(point);\n },\n [setHighlightedPoint, setHighlightedGroupIndex]\n );\n\n const highlightSeries = useCallback(\n (series: MixedLineBarChartProps.ChartSeries<T> | null) => {\n if (series !== highlightedSeries) {\n onHighlightChange(series);\n }\n },\n [highlightedSeries, onHighlightChange]\n );\n\n const highlightGroup = useCallback(\n (groupIndex: number) => {\n highlightSeries(null);\n setHighlightedPoint(null);\n setHighlightedGroupIndex(groupIndex);\n },\n [highlightSeries, setHighlightedPoint, setHighlightedGroupIndex]\n );\n\n const clearHighlightedSeries = useCallback(() => {\n highlightSeries(null);\n setHighlightedGroupIndex(null);\n setHighlightedPoint(null);\n dismissPopover();\n }, [dismissPopover, highlightSeries, setHighlightedGroupIndex, setHighlightedPoint]);\n\n const { isGroupNavigation, ...handlers } = useNavigation({\n series,\n visibleSeries,\n scaledSeries,\n barGroups,\n xScale,\n yScale,\n highlightedPoint,\n highlightedGroupIndex,\n highlightedSeries,\n legendSeries,\n isHandlersDisabled,\n pinPopover,\n highlightSeries,\n highlightGroup,\n highlightPoint,\n clearHighlightedSeries,\n });\n\n const { onSVGMouseMove, onSVGMouseOut, verticalMarkerLeft } = useMouseHover<T>({\n scaledSeries,\n barGroups,\n plotRef,\n highlightSeries,\n highlightPoint,\n highlightGroup,\n clearHighlightedSeries,\n isGroupNavigation,\n isHandlersDisabled,\n });\n\n // There are multiple ways to indicate what X is selected.\n // TODO: make a uniform verticalMarkerX state to fit all use-cases.\n const highlightedX = useMemo(() => {\n if (highlightedGroupIndex !== null) {\n return barGroups[highlightedGroupIndex].x;\n }\n if (verticalMarkerLeft !== null) {\n for (const series of scaledSeries) {\n if (series.x === verticalMarkerLeft) {\n return series.datum?.x ?? null;\n }\n }\n }\n if (highlightedPoint !== null) {\n return highlightedPoint?.datum?.x ?? null;\n }\n return null;\n }, [highlightedPoint, verticalMarkerLeft, highlightedGroupIndex, scaledSeries, barGroups]);\n\n const onPopoverDismiss = (outsideClick?: boolean) => {\n dismissPopover();\n\n if (!outsideClick) {\n // The delay is needed to bypass focus events caused by click or keypress needed to unpin the popover.\n setTimeout(() => {\n if (highlightedPoint || highlightedGroupIndex !== null) {\n plotRef.current?.focusApplication();\n } else {\n plotRef.current?.focusPlot();\n }\n }, 0);\n }\n };\n\n useLayoutEffect(() => {\n if (highlightedX !== null) {\n showPopover();\n }\n }, [highlightedX, showPopover]);\n\n const onSVGMouseDown = () => {\n if (isPopoverOpen) {\n if (isPopoverPinned) {\n dismissPopover();\n } else {\n pinPopover();\n }\n } else {\n showPopover();\n }\n };\n\n const onSVGFocus = (event: React.FocusEvent, trigger: 'mouse' | 'keyboard') => {\n setPlotFocused(true);\n if (trigger === 'keyboard') {\n handlers.onFocus();\n } else {\n // noop: clicks are handled separately\n }\n };\n\n const onSVGBlur = (event: React.FocusEvent<Element>) => {\n setPlotFocused(false);\n const blurTarget = event.relatedTarget || event.target;\n if (\n blurTarget === null ||\n !(blurTarget instanceof Element) ||\n !nodeContains(containerRefObject.current, blurTarget)\n ) {\n setHighlightedPoint(null);\n if (!plotContainerRef?.current?.contains(blurTarget)) {\n clearHighlightedSeries();\n }\n\n if (isPopoverOpen && !isPopoverPinned) {\n dismissPopover();\n }\n }\n };\n\n const onSVGKeyDown = handlers.onKeyDown;\n\n const xOffset = xScale.isCategorical() ? Math.max(0, xScale.d3Scale.bandwidth() - 1) / 2 : 0;\n\n let verticalLineX: number | null = null;\n if (verticalMarkerLeft !== null) {\n verticalLineX = verticalMarkerLeft;\n } else if (isGroupNavigation && highlightedGroupIndex !== null) {\n const x = xScale.d3Scale(barGroups[highlightedGroupIndex].x as any) ?? null;\n if (x !== null) {\n verticalLineX = xOffset + x;\n }\n }\n\n const point = useMemo(\n () =>\n highlightedPoint\n ? {\n key: `${highlightedPoint.x}-${highlightedPoint.y}`,\n x: highlightedPoint.x,\n y: highlightedPoint.y,\n color: highlightedPoint.color,\n }\n : null,\n [highlightedPoint]\n );\n\n const verticalMarkers = useMemo(\n () =>\n verticalLineX !== null\n ? scaledSeries\n .filter(({ x }) => x === verticalLineX || isNaN(x))\n .map(({ x, y, color }, index) => ({\n key: `${index}-${x}-${y}`,\n x: !horizontalBars ? verticalLineX || 0 : y,\n y: !horizontalBars ? y : verticalLineX || 0,\n color: color,\n }))\n : [],\n [scaledSeries, verticalLineX, horizontalBars]\n );\n\n const popoverTrackRef = isGroupNavigation\n ? highlightedGroupRef\n : highlightedPoint\n ? highlightedPointRef\n : verticalMarkerRef;\n\n const highlightDetails = useMemo(() => {\n if (highlightedX === null) {\n return null;\n }\n // If there is a highlighted point - only use its corresponding series details.\n for (const series of visibleSeries) {\n if (series.series === highlightedPoint?.series) {\n return formatHighlighted(highlightedX, [series], xTickFormatter);\n }\n }\n // Otherwise - use all series details.\n return formatHighlighted(highlightedX, visibleSeries, xTickFormatter);\n }, [highlightedX, highlightedPoint, visibleSeries, xTickFormatter]);\n\n const activeAriaLabel = useMemo(\n () =>\n highlightDetails\n ? `${highlightDetails.position}, ${highlightDetails.details.map(d => d.key + ' ' + d.value).join(',')}`\n : '',\n [highlightDetails]\n );\n\n // Live region is used when nothing is focused e.g. when hovering.\n const activeLiveRegion =\n activeAriaLabel && !highlightedPoint && highlightedGroupIndex === null ? activeAriaLabel : '';\n\n return (\n <div className={styles['chart-container']} ref={containerRef}>\n <AxisLabel axis={y} position=\"left\" title={xy.title[y]} />\n <div className={styles['chart-container__horizontal']}>\n <LabelsMeasure\n ticks={xy.ticks[y]}\n scale={xy.scale[y]}\n tickFormatter={xy.tickFormatter[y] as TickFormatter}\n autoWidth={setLeftLabelsWidth}\n />\n\n <div className={styles['chart-container__vertical']}>\n <ChartPlot\n ref={plotRef}\n width={plotWidth}\n height={plotHeight}\n offsetBottom={bottomLabelsHeight}\n isClickable={isPopoverOpen && !isPopoverPinned}\n ariaLabel={ariaLabel}\n ariaLabelledby={ariaLabelledby}\n ariaDescription={ariaDescription}\n ariaRoleDescription={i18nStrings?.chartAriaRoleDescription}\n ariaLiveRegion={activeLiveRegion}\n activeElementRef={isGroupNavigation ? highlightedGroupRef : highlightedPointRef}\n activeElementKey={isPlotFocused && (highlightedGroupIndex?.toString() || point?.key)}\n activeElementFocusOffset={isGroupNavigation ? 0 : 3}\n onMouseMove={onSVGMouseMove}\n onMouseOut={onSVGMouseOut}\n onMouseDown={onSVGMouseDown}\n onFocus={onSVGFocus}\n onBlur={onSVGBlur}\n onKeyDown={onSVGKeyDown}\n >\n <LeftLabels\n axis={y}\n ticks={xy.ticks[y]}\n scale={xy.scale[y]}\n tickFormatter={xy.tickFormatter[y] as TickFormatter}\n title={xy.title[y]}\n ariaRoleDescription={xy.ariaRoleDescription[y]}\n width={plotWidth}\n height={plotHeight}\n />\n\n {horizontalBars && <VerticalGridLines scale={yScale} ticks={yTicks} height={plotHeight} />}\n\n {emphasizeBaselineAxis && linesOnly && (\n <EmphasizedBaseline axis={x} scale={yScale} width={plotWidth} height={plotHeight} />\n )}\n\n <DataSeries\n axis={x}\n plotWidth={plotWidth}\n plotHeight={plotHeight}\n highlightedSeries={highlightedSeries ?? null}\n highlightedGroupIndex={highlightedGroupIndex}\n stackedBars={stackedBars}\n isGroupNavigation={isGroupNavigation}\n visibleSeries={visibleSeries}\n xScale={xScale}\n yScale={yScale}\n />\n\n {emphasizeBaselineAxis && !linesOnly && (\n <EmphasizedBaseline axis={x} scale={yScale} width={plotWidth} height={plotHeight} />\n )}\n\n <VerticalMarker\n key={verticalLineX || ''}\n height={plotHeight}\n showPoints={highlightedPoint === null}\n showLine={!isGroupNavigation}\n points={verticalMarkers}\n ref={verticalMarkerRef}\n />\n\n {highlightedPoint && (\n <HighlightedPoint\n ref={highlightedPointRef}\n point={point}\n role=\"button\"\n ariaLabel={activeAriaLabel}\n ariaHasPopup={true}\n ariaExpanded={isPopoverPinned}\n />\n )}\n\n {isGroupNavigation && xScale.isCategorical() && (\n <BarGroups\n ariaLabel={activeAriaLabel}\n isRefresh={isRefresh}\n isPopoverPinned={isPopoverPinned}\n barGroups={barGroups}\n highlightedGroupIndex={highlightedGroupIndex}\n highlightedGroupRef={highlightedGroupRef}\n />\n )}\n\n <BottomLabels\n axis={x}\n ticks={xy.ticks[x]}\n scale={xy.scale[x]}\n tickFormatter={xy.tickFormatter[x] as TickFormatter}\n title={xy.title[x]}\n ariaRoleDescription={xy.ariaRoleDescription[x]}\n height={plotHeight}\n width={plotWidth}\n offsetLeft={leftLabelsWidth + BOTTOM_LABELS_OFFSET}\n offsetRight={BOTTOM_LABELS_OFFSET}\n autoHeight={setBottomLabelsHeight}\n />\n </ChartPlot>\n\n <AxisLabel axis={x} position=\"bottom\" title={xy.title[x]} />\n </div>\n\n <ChartPopover\n containerRef={containerRefObject}\n trackRef={popoverTrackRef}\n isOpen={isPopoverOpen}\n isPinned={isPopoverPinned}\n highlightDetails={highlightDetails}\n onDismiss={onPopoverDismiss}\n size={detailPopoverSize}\n dismissAriaLabel={i18nStrings.detailPopoverDismissAriaLabel}\n />\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"chart-container.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-container.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { nodeContains } from '../internal/utils/dom';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nimport { getXTickCount, getYTickCount, createXTicks, createYTicks } from '../internal/components/cartesian-chart/ticks';\nimport ChartPlot, { ChartPlotRef } from '../internal/components/chart-plot';\nimport AxisLabel from '../internal/components/cartesian-chart/axis-label';\nimport LabelsMeasure from '../internal/components/cartesian-chart/labels-measure';\nimport LeftLabels from '../internal/components/cartesian-chart/left-labels';\nimport BottomLabels from '../internal/components/cartesian-chart/bottom-labels';\nimport VerticalGridLines from '../internal/components/cartesian-chart/vertical-grid-lines';\nimport EmphasizedBaseline from '../internal/components/cartesian-chart/emphasized-baseline';\nimport HighlightedPoint from '../internal/components/cartesian-chart/highlighted-point';\nimport VerticalMarker from '../internal/components/cartesian-chart/vertical-marker';\nimport { ChartScale, NumericChartScale } from '../internal/components/cartesian-chart/scales';\nimport ChartPopover from './chart-popover';\nimport { ChartDataTypes, InternalChartSeries, MixedLineBarChartProps, ScaleType } from './interfaces';\nimport { computeDomainX, computeDomainY } from './domain';\nimport { isXThreshold } from './utils';\nimport makeScaledSeries, { ScaledPoint } from './make-scaled-series';\nimport makeScaledBarGroups, { ScaledBarGroup } from './make-scaled-bar-groups';\nimport formatHighlighted from './format-highlighted';\nimport DataSeries from './data-series';\nimport BarGroups from './bar-groups';\nimport { useMouseHover } from './hooks/use-mouse-hover';\nimport { useNavigation } from './hooks/use-navigation';\nimport { usePopover } from './hooks/use-popover';\n\nimport styles from './styles.css.js';\nimport { CartesianChartProps } from '../internal/components/cartesian-chart/interfaces';\nimport useContainerWidth from '../internal/utils/use-container-width';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\n\nconst LEFT_LABELS_MARGIN = 16;\nconst BOTTOM_LABELS_OFFSET = 12;\n\ntype TickFormatter = undefined | ((value: ChartDataTypes) => string);\n\nexport interface ChartContainerProps<T extends ChartDataTypes> {\n series: ReadonlyArray<InternalChartSeries<T>>;\n visibleSeries: ReadonlyArray<InternalChartSeries<T>>;\n\n height: number;\n detailPopoverSize: MixedLineBarChartProps<T>['detailPopoverSize'];\n\n xScaleType: ScaleType;\n yScaleType: 'linear' | 'log';\n\n xDomain: MixedLineBarChartProps<T>['xDomain'];\n yDomain: MixedLineBarChartProps<T>['yDomain'];\n\n xTickFormatter?: CartesianChartProps.TickFormatter<T>;\n yTickFormatter?: CartesianChartProps.TickFormatter<number>;\n\n xTitle?: string;\n yTitle?: string;\n\n stackedBars?: boolean;\n emphasizeBaselineAxis: boolean;\n horizontalBars?: boolean;\n\n highlightedSeries?: MixedLineBarChartProps<T>['highlightedSeries'];\n onHighlightChange: (series: InternalChartSeries<T>['series'] | null) => void;\n highlightedPoint: ScaledPoint<T> | null;\n setHighlightedPoint: (point: ScaledPoint<T> | null) => void;\n highlightedGroupIndex: number | null;\n setHighlightedGroupIndex: (groupIndex: number | null) => void;\n legendSeries: null | MixedLineBarChartProps.ChartSeries<T>;\n\n ariaLabel: MixedLineBarChartProps<T>['ariaLabel'];\n ariaLabelledby: MixedLineBarChartProps<T>['ariaLabelledby'];\n ariaDescription: MixedLineBarChartProps<T>['ariaDescription'];\n i18nStrings: MixedLineBarChartProps<T>['i18nStrings'];\n\n plotContainerRef: React.RefObject<HTMLDivElement>;\n}\n\nexport default function ChartContainer<T extends ChartDataTypes>({\n height: plotHeight,\n series,\n visibleSeries,\n highlightedSeries,\n onHighlightChange,\n highlightedPoint,\n setHighlightedPoint,\n highlightedGroupIndex,\n setHighlightedGroupIndex,\n legendSeries,\n detailPopoverSize = 'medium',\n stackedBars = false,\n horizontalBars = false,\n xScaleType,\n yScaleType,\n xTickFormatter,\n yTickFormatter,\n emphasizeBaselineAxis,\n xTitle,\n yTitle,\n ariaLabel,\n ariaLabelledby,\n ariaDescription,\n i18nStrings = {},\n plotContainerRef,\n ...props\n}: ChartContainerProps<T>) {\n const plotRef = useRef<ChartPlotRef>(null);\n const verticalMarkerRef = useRef<SVGLineElement>(null);\n\n const [leftLabelsWidth, setLeftLabelsWidth] = useState(0);\n const [bottomLabelsHeight, setBottomLabelsHeight] = useState(0);\n const [containerWidth, containerMeasureRef] = useContainerWidth(500);\n const plotWidth = containerWidth ? containerWidth - leftLabelsWidth - LEFT_LABELS_MARGIN : 500;\n const containerRefObject = useRef(null);\n const containerRef = useMergeRefs(containerMeasureRef, containerRefObject);\n\n const isRefresh = useVisualRefresh(containerRefObject);\n\n const linesOnly = series.every(({ series }) => series.type === 'line' || series.type === 'threshold');\n\n const xDomain = (props.xDomain || computeDomainX(series, xScaleType)) as\n | readonly number[]\n | readonly string[]\n | readonly Date[];\n const yDomain = (props.yDomain || computeDomainY(series, yScaleType, stackedBars)) as readonly number[];\n\n const xTickCount = getXTickCount(plotWidth);\n const yTickCount = getYTickCount(plotHeight);\n\n const rangeBottomTop: [number, number] = [0, plotHeight];\n const rangeTopBottom: [number, number] = [plotHeight, 0];\n const rangeLeftRight: [number, number] = [0, plotWidth];\n const xScale = new ChartScale(xScaleType, xDomain, horizontalBars ? rangeBottomTop : rangeLeftRight, linesOnly);\n const yScale = new NumericChartScale(\n yScaleType,\n yDomain,\n horizontalBars ? rangeLeftRight : rangeTopBottom,\n props.yDomain ? null : yTickCount\n );\n\n const xTicks = createXTicks(xScale, xTickCount);\n const yTicks = createYTicks(yScale, yTickCount);\n\n /**\n * Interactions\n */\n const highlightedPointRef = useRef<SVGGElement>(null);\n const highlightedGroupRef = useRef<SVGRectElement>(null);\n const [isPlotFocused, setPlotFocused] = useState(false);\n\n // Some chart components are rendered against \"x\" or \"y\" axes,\n // When \"horizontalBars\" is enabled, the axes are inverted.\n const x = !horizontalBars ? 'x' : 'y';\n const y = !horizontalBars ? 'y' : 'x';\n const xy = {\n ticks: { x: xTicks, y: yTicks },\n scale: { x: xScale, y: yScale },\n tickFormatter: { x: xTickFormatter, y: yTickFormatter },\n title: { x: xTitle, y: yTitle },\n ariaRoleDescription: { x: i18nStrings.xAxisAriaRoleDescription, y: i18nStrings.yAxisAriaRoleDescription },\n };\n\n const scaledSeries = makeScaledSeries(visibleSeries, xScale, yScale);\n const barGroups: ScaledBarGroup<T>[] = makeScaledBarGroups(visibleSeries, xScale, plotWidth, plotHeight, y);\n\n const { isPopoverOpen, isPopoverPinned, showPopover, pinPopover, dismissPopover } = usePopover();\n\n // Allows to add a delay between popover is dismissed and handlers are enabled to prevent immediate popover reopening.\n const [isHandlersDisabled, setHandlersDisabled] = useState(!isPopoverPinned);\n useEffect(() => {\n if (isPopoverPinned) {\n setHandlersDisabled(true);\n } else {\n const timeoutId = setTimeout(() => setHandlersDisabled(false), 25);\n return () => clearTimeout(timeoutId);\n }\n }, [isPopoverPinned]);\n\n // Highlighted point and highlighted series must be in sync.\n // TODO: refactor the code so that it is not possible to make series and point highlight out of sync.\n const highlightPoint = useCallback(\n (point: ScaledPoint<T> | null) => {\n setHighlightedGroupIndex(null);\n setHighlightedPoint(point);\n },\n [setHighlightedPoint, setHighlightedGroupIndex]\n );\n\n const highlightSeries = useCallback(\n (series: MixedLineBarChartProps.ChartSeries<T> | null) => {\n if (series !== highlightedSeries) {\n onHighlightChange(series);\n }\n },\n [highlightedSeries, onHighlightChange]\n );\n\n const highlightGroup = useCallback(\n (groupIndex: number) => {\n highlightSeries(null);\n setHighlightedPoint(null);\n setHighlightedGroupIndex(groupIndex);\n },\n [highlightSeries, setHighlightedPoint, setHighlightedGroupIndex]\n );\n\n const clearHighlightedSeries = useCallback(() => {\n highlightSeries(null);\n setHighlightedGroupIndex(null);\n setHighlightedPoint(null);\n dismissPopover();\n }, [dismissPopover, highlightSeries, setHighlightedGroupIndex, setHighlightedPoint]);\n\n const { isGroupNavigation, ...handlers } = useNavigation({\n series,\n visibleSeries,\n scaledSeries,\n barGroups,\n xScale,\n yScale,\n highlightedPoint,\n highlightedGroupIndex,\n highlightedSeries,\n legendSeries,\n isHandlersDisabled,\n pinPopover,\n highlightSeries,\n highlightGroup,\n highlightPoint,\n clearHighlightedSeries,\n });\n\n const { onSVGMouseMove, onSVGMouseOut, verticalMarkerLeft } = useMouseHover<T>({\n scaledSeries,\n barGroups,\n plotRef,\n highlightSeries,\n highlightPoint,\n highlightGroup,\n clearHighlightedSeries,\n isGroupNavigation,\n isHandlersDisabled,\n });\n\n // There are multiple ways to indicate what X is selected.\n // TODO: make a uniform verticalMarkerX state to fit all use-cases.\n const highlightedX = useMemo(() => {\n if (highlightedGroupIndex !== null) {\n return barGroups[highlightedGroupIndex].x;\n }\n if (verticalMarkerLeft !== null) {\n for (const series of scaledSeries) {\n if (series.x === verticalMarkerLeft) {\n return series.datum?.x ?? null;\n }\n }\n }\n if (highlightedPoint !== null) {\n return highlightedPoint?.datum?.x ?? null;\n }\n return null;\n }, [highlightedPoint, verticalMarkerLeft, highlightedGroupIndex, scaledSeries, barGroups]);\n\n const onPopoverDismiss = (outsideClick?: boolean) => {\n dismissPopover();\n\n if (!outsideClick) {\n // The delay is needed to bypass focus events caused by click or keypress needed to unpin the popover.\n setTimeout(() => {\n if (highlightedPoint || highlightedGroupIndex !== null) {\n plotRef.current?.focusApplication();\n } else {\n plotRef.current?.focusPlot();\n }\n }, 0);\n }\n };\n\n useLayoutEffect(() => {\n if (highlightedX !== null) {\n showPopover();\n }\n }, [highlightedX, showPopover]);\n\n const onSVGMouseDown = () => {\n if (isPopoverOpen) {\n if (isPopoverPinned) {\n dismissPopover();\n } else {\n pinPopover();\n }\n } else {\n showPopover();\n }\n };\n\n const onSVGFocus = (event: React.FocusEvent, trigger: 'mouse' | 'keyboard') => {\n setPlotFocused(true);\n if (trigger === 'keyboard') {\n handlers.onFocus();\n } else {\n // noop: clicks are handled separately\n }\n };\n\n const onSVGBlur = (event: React.FocusEvent<Element>) => {\n setPlotFocused(false);\n const blurTarget = event.relatedTarget || event.target;\n if (\n blurTarget === null ||\n !(blurTarget instanceof Element) ||\n !nodeContains(containerRefObject.current, blurTarget)\n ) {\n setHighlightedPoint(null);\n if (!plotContainerRef?.current?.contains(blurTarget)) {\n clearHighlightedSeries();\n }\n\n if (isPopoverOpen && !isPopoverPinned) {\n dismissPopover();\n }\n }\n };\n\n const onSVGKeyDown = handlers.onKeyDown;\n\n const xOffset = xScale.isCategorical() ? Math.max(0, xScale.d3Scale.bandwidth() - 1) / 2 : 0;\n\n let verticalLineX: number | null = null;\n if (verticalMarkerLeft !== null) {\n verticalLineX = verticalMarkerLeft;\n } else if (isGroupNavigation && highlightedGroupIndex !== null) {\n const x = xScale.d3Scale(barGroups[highlightedGroupIndex].x as any) ?? null;\n if (x !== null) {\n verticalLineX = xOffset + x;\n }\n }\n\n const point = useMemo(\n () =>\n highlightedPoint\n ? {\n key: `${highlightedPoint.x}-${highlightedPoint.y}`,\n x: highlightedPoint.x,\n y: highlightedPoint.y,\n color: highlightedPoint.color,\n }\n : null,\n [highlightedPoint]\n );\n\n const verticalMarkers = useMemo(\n () =>\n verticalLineX !== null\n ? scaledSeries\n .filter(({ x, y }) => (x === verticalLineX || isNaN(x)) && !isNaN(y))\n .map(({ x, y, color }, index) => ({\n key: `${index}-${x}-${y}`,\n x: !horizontalBars ? verticalLineX || 0 : y,\n y: !horizontalBars ? y : verticalLineX || 0,\n color: color,\n }))\n : [],\n [scaledSeries, verticalLineX, horizontalBars]\n );\n\n const popoverTrackRef = isGroupNavigation\n ? highlightedGroupRef\n : highlightedPoint\n ? highlightedPointRef\n : verticalMarkerRef;\n\n const highlightDetails = useMemo(() => {\n if (highlightedX === null) {\n return null;\n }\n\n // When series point is highlighted show the corresponding series and matching x-thresholds.\n if (highlightedPoint) {\n const seriesToShow = visibleSeries.filter(\n series => series.series === highlightedPoint?.series || isXThreshold(series.series)\n );\n return formatHighlighted(highlightedX, seriesToShow, xTickFormatter);\n }\n\n // Otherwise - show all visible series details.\n return formatHighlighted(highlightedX, visibleSeries, xTickFormatter);\n }, [highlightedX, highlightedPoint, visibleSeries, xTickFormatter]);\n\n const activeAriaLabel = useMemo(\n () =>\n highlightDetails\n ? `${highlightDetails.position}, ${highlightDetails.details.map(d => d.key + ' ' + d.value).join(',')}`\n : '',\n [highlightDetails]\n );\n\n // Live region is used when nothing is focused e.g. when hovering.\n const activeLiveRegion =\n activeAriaLabel && !highlightedPoint && highlightedGroupIndex === null ? activeAriaLabel : '';\n\n return (\n <div className={styles['chart-container']} ref={containerRef}>\n <AxisLabel axis={y} position=\"left\" title={xy.title[y]} />\n <div className={styles['chart-container__horizontal']}>\n <LabelsMeasure\n ticks={xy.ticks[y]}\n scale={xy.scale[y]}\n tickFormatter={xy.tickFormatter[y] as TickFormatter}\n autoWidth={setLeftLabelsWidth}\n />\n\n <div className={styles['chart-container__vertical']}>\n <ChartPlot\n ref={plotRef}\n width={plotWidth}\n height={plotHeight}\n offsetBottom={bottomLabelsHeight}\n isClickable={isPopoverOpen && !isPopoverPinned}\n ariaLabel={ariaLabel}\n ariaLabelledby={ariaLabelledby}\n ariaDescription={ariaDescription}\n ariaRoleDescription={i18nStrings?.chartAriaRoleDescription}\n ariaLiveRegion={activeLiveRegion}\n activeElementRef={isGroupNavigation ? highlightedGroupRef : highlightedPointRef}\n activeElementKey={isPlotFocused && (highlightedGroupIndex?.toString() || point?.key)}\n activeElementFocusOffset={isGroupNavigation ? 0 : 3}\n onMouseMove={onSVGMouseMove}\n onMouseOut={onSVGMouseOut}\n onMouseDown={onSVGMouseDown}\n onFocus={onSVGFocus}\n onBlur={onSVGBlur}\n onKeyDown={onSVGKeyDown}\n >\n <LeftLabels\n axis={y}\n ticks={xy.ticks[y]}\n scale={xy.scale[y]}\n tickFormatter={xy.tickFormatter[y] as TickFormatter}\n title={xy.title[y]}\n ariaRoleDescription={xy.ariaRoleDescription[y]}\n width={plotWidth}\n height={plotHeight}\n />\n\n {horizontalBars && <VerticalGridLines scale={yScale} ticks={yTicks} height={plotHeight} />}\n\n {emphasizeBaselineAxis && linesOnly && (\n <EmphasizedBaseline axis={x} scale={yScale} width={plotWidth} height={plotHeight} />\n )}\n\n <DataSeries\n axis={x}\n plotWidth={plotWidth}\n plotHeight={plotHeight}\n highlightedSeries={highlightedSeries ?? null}\n highlightedGroupIndex={highlightedGroupIndex}\n stackedBars={stackedBars}\n isGroupNavigation={isGroupNavigation}\n visibleSeries={visibleSeries}\n xScale={xScale}\n yScale={yScale}\n />\n\n {emphasizeBaselineAxis && !linesOnly && (\n <EmphasizedBaseline axis={x} scale={yScale} width={plotWidth} height={plotHeight} />\n )}\n\n <VerticalMarker\n key={verticalLineX || ''}\n height={plotHeight}\n showPoints={highlightedPoint === null}\n showLine={!isGroupNavigation}\n points={verticalMarkers}\n ref={verticalMarkerRef}\n />\n\n {highlightedPoint && (\n <HighlightedPoint\n ref={highlightedPointRef}\n point={point}\n role=\"button\"\n ariaLabel={activeAriaLabel}\n ariaHasPopup={true}\n ariaExpanded={isPopoverPinned}\n />\n )}\n\n {isGroupNavigation && xScale.isCategorical() && (\n <BarGroups\n ariaLabel={activeAriaLabel}\n isRefresh={isRefresh}\n isPopoverPinned={isPopoverPinned}\n barGroups={barGroups}\n highlightedGroupIndex={highlightedGroupIndex}\n highlightedGroupRef={highlightedGroupRef}\n />\n )}\n\n <BottomLabels\n axis={x}\n ticks={xy.ticks[x]}\n scale={xy.scale[x]}\n tickFormatter={xy.tickFormatter[x] as TickFormatter}\n title={xy.title[x]}\n ariaRoleDescription={xy.ariaRoleDescription[x]}\n height={plotHeight}\n width={plotWidth}\n offsetLeft={leftLabelsWidth + BOTTOM_LABELS_OFFSET}\n offsetRight={BOTTOM_LABELS_OFFSET}\n autoHeight={setBottomLabelsHeight}\n />\n </ChartPlot>\n\n <AxisLabel axis={x} position=\"bottom\" title={xy.title[x]} />\n </div>\n\n <ChartPopover\n containerRef={containerRefObject}\n trackRef={popoverTrackRef}\n isOpen={isPopoverOpen}\n isPinned={isPopoverPinned}\n highlightDetails={highlightDetails}\n onDismiss={onPopoverDismiss}\n size={detailPopoverSize}\n dismissAriaLabel={i18nStrings.detailPopoverDismissAriaLabel}\n />\n </div>\n </div>\n );\n}\n"]}
@@ -8,6 +8,6 @@ interface InternalChartFiltersProps<T extends ChartDataTypes> {
8
8
  hideFilter?: boolean;
9
9
  additionalFilters?: React.ReactNode;
10
10
  }
11
- declare function InternalChartFilters<T extends number | string | Date>({ series, visibleSeries, onChange, i18nStrings, hideFilter, additionalFilters, }: InternalChartFiltersProps<T>): JSX.Element;
12
- export default InternalChartFilters;
11
+ export default function InternalChartFilters<T extends number | string | Date>({ series, visibleSeries, onChange, i18nStrings, hideFilter, additionalFilters, }: InternalChartFiltersProps<T>): JSX.Element;
12
+ export {};
13
13
  //# sourceMappingURL=chart-filters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-filters.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-filters.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAMvC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAI3F,UAAU,yBAAyB,CAAC,CAAC,SAAS,cAAc;IAC1D,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,QAAQ,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzF,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACrC;AAED,iBAAS,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,EAC9D,MAAM,EACN,aAAa,EACb,QAAQ,EACR,WAAW,EACX,UAAU,EACV,iBAAiB,GAClB,EAAE,yBAAyB,CAAC,CAAC,CAAC,eA0B9B;AAED,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"chart-filters.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-filters.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAMvC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAI3F,UAAU,yBAAyB,CAAC,CAAC,SAAS,cAAc;IAC1D,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,QAAQ,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzF,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACrC;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,EAC7E,MAAM,EACN,aAAa,EACb,QAAQ,EACR,WAAW,EACX,UAAU,EACV,iBAAiB,GAClB,EAAE,yBAAyB,CAAC,CAAC,CAAC,eA0B9B"}
@@ -6,7 +6,7 @@ import InternalSpaceBetween from '../space-between/internal';
6
6
  import Filter from '../internal/components/chart-filter';
7
7
  import { chartLegendMap } from './utils';
8
8
  import styles from './styles.css.js';
9
- function InternalChartFilters(_a) {
9
+ export default function InternalChartFilters(_a) {
10
10
  var _b;
11
11
  var series = _a.series, visibleSeries = _a.visibleSeries, onChange = _a.onChange, i18nStrings = _a.i18nStrings, hideFilter = _a.hideFilter, additionalFilters = _a.additionalFilters;
12
12
  var filterItems = useMemo(function () {
@@ -26,5 +26,4 @@ function InternalChartFilters(_a) {
26
26
  !hideFilter && (React.createElement(Filter, { series: filterItems, onChange: onChange, selectedSeries: visibleSeries, i18nStrings: i18nStrings })),
27
27
  additionalFilters));
28
28
  }
29
- export default InternalChartFilters;
30
29
  //# sourceMappingURL=chart-filters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-filters.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-filters.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,MAA4B,MAAM,qCAAqC,CAAC;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAWrC,SAAS,oBAAoB,CAAmC,EAOjC;;QAN7B,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,iBAAiB,uBAAA;IAEjB,IAAM,WAAW,GAAsE,OAAO,CAC5F;QACE,OAAA,MAAM,CAAC,GAAG,CAAC,UAAC,EAAiB;gBAAf,MAAM,YAAA,EAAE,KAAK,WAAA;YAAO,OAAA,CAAC;gBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjC,KAAK,OAAA;gBACL,KAAK,EAAE,MAAM;aACd,CAAC;QALgC,CAKhC,CAAC;IALH,CAKG,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO,CACL,oBAAC,oBAAoB,IACnB,IAAI,EAAC,GAAG,EACR,SAAS,EAAC,YAAY,EACtB,SAAS,EAAE,IAAI;YACb,GAAC,MAAM,CAAC,oBAAoB,CAAC,IAAG,CAAC,UAAU;gBAC3C;QAED,CAAC,UAAU,IAAI,CACd,oBAAC,MAAM,IAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAI,CAC7G;QACA,iBAAiB,CACG,CACxB,CAAC;AACJ,CAAC;AAED,eAAe,oBAAoB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\nimport clsx from 'clsx';\n\nimport InternalSpaceBetween from '../space-between/internal';\nimport Filter, { ChartFilterProps } from '../internal/components/chart-filter';\n\nimport { ChartDataTypes, MixedLineBarChartProps, InternalChartSeries } from './interfaces';\nimport { chartLegendMap } from './utils';\nimport styles from './styles.css.js';\n\ninterface InternalChartFiltersProps<T extends ChartDataTypes> {\n series: ReadonlyArray<InternalChartSeries<T>>;\n visibleSeries: ReadonlyArray<MixedLineBarChartProps.ChartSeries<T>>;\n onChange: (selectedSeries: ReadonlyArray<MixedLineBarChartProps.ChartSeries<T>>) => void;\n i18nStrings: MixedLineBarChartProps<T>['i18nStrings'];\n hideFilter?: boolean;\n additionalFilters?: React.ReactNode;\n}\n\nfunction InternalChartFilters<T extends number | string | Date>({\n series,\n visibleSeries,\n onChange,\n i18nStrings,\n hideFilter,\n additionalFilters,\n}: InternalChartFiltersProps<T>) {\n const filterItems: ChartFilterProps<MixedLineBarChartProps.ChartSeries<T>>['series'] = useMemo(\n () =>\n series.map(({ series, color }) => ({\n label: series.title,\n type: chartLegendMap[series.type],\n color,\n datum: series,\n })),\n [series]\n );\n\n return (\n <InternalSpaceBetween\n size=\"l\"\n direction=\"horizontal\"\n className={clsx({\n [styles['has-default-filter']]: !hideFilter,\n })}\n >\n {!hideFilter && (\n <Filter series={filterItems} onChange={onChange} selectedSeries={visibleSeries} i18nStrings={i18nStrings} />\n )}\n {additionalFilters}\n </InternalSpaceBetween>\n );\n}\n\nexport default InternalChartFilters;\n"]}
1
+ {"version":3,"file":"chart-filters.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-filters.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,MAA4B,MAAM,qCAAqC,CAAC;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAWrC,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAmC,EAOhD;;QAN7B,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,iBAAiB,uBAAA;IAEjB,IAAM,WAAW,GAAsE,OAAO,CAC5F;QACE,OAAA,MAAM,CAAC,GAAG,CAAC,UAAC,EAAiB;gBAAf,MAAM,YAAA,EAAE,KAAK,WAAA;YAAO,OAAA,CAAC;gBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjC,KAAK,OAAA;gBACL,KAAK,EAAE,MAAM;aACd,CAAC;QALgC,CAKhC,CAAC;IALH,CAKG,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO,CACL,oBAAC,oBAAoB,IACnB,IAAI,EAAC,GAAG,EACR,SAAS,EAAC,YAAY,EACtB,SAAS,EAAE,IAAI;YACb,GAAC,MAAM,CAAC,oBAAoB,CAAC,IAAG,CAAC,UAAU;gBAC3C;QAED,CAAC,UAAU,IAAI,CACd,oBAAC,MAAM,IAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAI,CAC7G;QACA,iBAAiB,CACG,CACxB,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\nimport clsx from 'clsx';\n\nimport InternalSpaceBetween from '../space-between/internal';\nimport Filter, { ChartFilterProps } from '../internal/components/chart-filter';\n\nimport { ChartDataTypes, MixedLineBarChartProps, InternalChartSeries } from './interfaces';\nimport { chartLegendMap } from './utils';\nimport styles from './styles.css.js';\n\ninterface InternalChartFiltersProps<T extends ChartDataTypes> {\n series: ReadonlyArray<InternalChartSeries<T>>;\n visibleSeries: ReadonlyArray<MixedLineBarChartProps.ChartSeries<T>>;\n onChange: (selectedSeries: ReadonlyArray<MixedLineBarChartProps.ChartSeries<T>>) => void;\n i18nStrings: MixedLineBarChartProps<T>['i18nStrings'];\n hideFilter?: boolean;\n additionalFilters?: React.ReactNode;\n}\n\nexport default function InternalChartFilters<T extends number | string | Date>({\n series,\n visibleSeries,\n onChange,\n i18nStrings,\n hideFilter,\n additionalFilters,\n}: InternalChartFiltersProps<T>) {\n const filterItems: ChartFilterProps<MixedLineBarChartProps.ChartSeries<T>>['series'] = useMemo(\n () =>\n series.map(({ series, color }) => ({\n label: series.title,\n type: chartLegendMap[series.type],\n color,\n datum: series,\n })),\n [series]\n );\n\n return (\n <InternalSpaceBetween\n size=\"l\"\n direction=\"horizontal\"\n className={clsx({\n [styles['has-default-filter']]: !hideFilter,\n })}\n >\n {!hideFilter && (\n <Filter series={filterItems} onChange={onChange} selectedSeries={visibleSeries} i18nStrings={i18nStrings} />\n )}\n {additionalFilters}\n </InternalSpaceBetween>\n );\n}\n"]}
@@ -9,6 +9,6 @@ interface InternalChartLegendProps<T extends ChartDataTypes> {
9
9
  legendTitle?: string;
10
10
  ariaLabel?: string;
11
11
  }
12
- declare function InternalChartLegend<T extends number | string | Date>({ series, visibleSeries, highlightedSeries, onHighlightChange, legendTitle, ariaLabel, plotContainerRef, }: InternalChartLegendProps<T>): JSX.Element;
13
- export default InternalChartLegend;
12
+ export default function InternalChartLegend<T extends number | string | Date>({ series, visibleSeries, highlightedSeries, onHighlightChange, legendTitle, ariaLabel, plotContainerRef, }: InternalChartLegendProps<T>): JSX.Element;
13
+ export {};
14
14
  //# sourceMappingURL=chart-legend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-legend.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-legend.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG3F,UAAU,wBAAwB,CAAC,CAAC,SAAS,cAAc;IACzD,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAClD,iBAAiB,CAAC,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,EAC7D,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,gBAAgB,GACjB,EAAE,wBAAwB,CAAC,CAAC,CAAC,eAsB7B;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"chart-legend.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-legend.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG3F,UAAU,wBAAwB,CAAC,CAAC,SAAS,cAAc;IACzD,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAClD,iBAAiB,CAAC,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACjE,iBAAiB,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,EAC5E,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,gBAAgB,GACjB,EAAE,wBAAwB,CAAC,CAAC,CAAC,eAsB7B"}
@@ -3,7 +3,7 @@
3
3
  import React, { useMemo } from 'react';
4
4
  import ChartLegend from '../internal/components/chart-legend';
5
5
  import { chartLegendMap } from './utils';
6
- function InternalChartLegend(_a) {
6
+ export default function InternalChartLegend(_a) {
7
7
  var series = _a.series, visibleSeries = _a.visibleSeries, highlightedSeries = _a.highlightedSeries, onHighlightChange = _a.onHighlightChange, legendTitle = _a.legendTitle, ariaLabel = _a.ariaLabel, plotContainerRef = _a.plotContainerRef;
8
8
  var legendItems = useMemo(function () {
9
9
  return series
@@ -20,5 +20,4 @@ function InternalChartLegend(_a) {
20
20
  }, [series, visibleSeries]);
21
21
  return (React.createElement(ChartLegend, { series: legendItems, highlightedSeries: highlightedSeries || null, onHighlightChange: onHighlightChange, legendTitle: legendTitle, ariaLabel: ariaLabel, plotContainerRef: plotContainerRef }));
22
22
  }
23
- export default InternalChartLegend;
24
23
  //# sourceMappingURL=chart-legend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart-legend.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-legend.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAYzC,SAAS,mBAAmB,CAAmC,EAQjC;QAP5B,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,iBAAiB,uBAAA,EACjB,iBAAiB,uBAAA,EACjB,WAAW,iBAAA,EACX,SAAS,eAAA,EACT,gBAAgB,sBAAA;IAEhB,IAAM,WAAW,GAAsE,OAAO,CAAC;QAC7F,OAAO,MAAM;aACV,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAtC,CAAsC,CAAC;aACnD,GAAG,CAAC,UAAC,EAAiB;gBAAf,MAAM,YAAA,EAAE,KAAK,WAAA;YAAO,OAAA,CAAC;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjC,KAAK,OAAA;gBACL,KAAK,EAAE,MAAM;aACd,CAAC;QAL0B,CAK1B,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5B,OAAO,CACL,oBAAC,WAAW,IACV,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,iBAAiB,IAAI,IAAI,EAC5C,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,GAClC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,mBAAmB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\n\nimport ChartLegend from '../internal/components/chart-legend';\nimport { ChartFilterProps } from '../internal/components/chart-filter';\n\nimport { ChartDataTypes, MixedLineBarChartProps, InternalChartSeries } from './interfaces';\nimport { chartLegendMap } from './utils';\n\ninterface InternalChartLegendProps<T extends ChartDataTypes> {\n series: ReadonlyArray<InternalChartSeries<T>>;\n visibleSeries: ReadonlyArray<MixedLineBarChartProps.ChartSeries<T>>;\n plotContainerRef: React.RefObject<HTMLDivElement>;\n highlightedSeries?: MixedLineBarChartProps.ChartSeries<T> | null;\n onHighlightChange: (series: MixedLineBarChartProps.ChartSeries<T> | null) => void;\n legendTitle?: string;\n ariaLabel?: string;\n}\n\nfunction InternalChartLegend<T extends number | string | Date>({\n series,\n visibleSeries,\n highlightedSeries,\n onHighlightChange,\n legendTitle,\n ariaLabel,\n plotContainerRef,\n}: InternalChartLegendProps<T>) {\n const legendItems: ChartFilterProps<MixedLineBarChartProps.ChartSeries<T>>['series'] = useMemo(() => {\n return series\n .filter(s => visibleSeries.indexOf(s.series) !== -1)\n .map(({ series, color }) => ({\n label: series.title,\n type: chartLegendMap[series.type],\n color,\n datum: series,\n }));\n }, [series, visibleSeries]);\n\n return (\n <ChartLegend<MixedLineBarChartProps.ChartSeries<T>>\n series={legendItems}\n highlightedSeries={highlightedSeries || null}\n onHighlightChange={onHighlightChange}\n legendTitle={legendTitle}\n ariaLabel={ariaLabel}\n plotContainerRef={plotContainerRef}\n />\n );\n}\n\nexport default InternalChartLegend;\n"]}
1
+ {"version":3,"file":"chart-legend.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/chart-legend.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAYzC,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAmC,EAQhD;QAP5B,MAAM,YAAA,EACN,aAAa,mBAAA,EACb,iBAAiB,uBAAA,EACjB,iBAAiB,uBAAA,EACjB,WAAW,iBAAA,EACX,SAAS,eAAA,EACT,gBAAgB,sBAAA;IAEhB,IAAM,WAAW,GAAsE,OAAO,CAAC;QAC7F,OAAO,MAAM;aACV,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAtC,CAAsC,CAAC;aACnD,GAAG,CAAC,UAAC,EAAiB;gBAAf,MAAM,YAAA,EAAE,KAAK,WAAA;YAAO,OAAA,CAAC;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjC,KAAK,OAAA;gBACL,KAAK,EAAE,MAAM;aACd,CAAC;QAL0B,CAK1B,CAAC,CAAC;IACR,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAE5B,OAAO,CACL,oBAAC,WAAW,IACV,MAAM,EAAE,WAAW,EACnB,iBAAiB,EAAE,iBAAiB,IAAI,IAAI,EAC5C,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,GAClC,CACH,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\n\nimport ChartLegend from '../internal/components/chart-legend';\nimport { ChartFilterProps } from '../internal/components/chart-filter';\n\nimport { ChartDataTypes, MixedLineBarChartProps, InternalChartSeries } from './interfaces';\nimport { chartLegendMap } from './utils';\n\ninterface InternalChartLegendProps<T extends ChartDataTypes> {\n series: ReadonlyArray<InternalChartSeries<T>>;\n visibleSeries: ReadonlyArray<MixedLineBarChartProps.ChartSeries<T>>;\n plotContainerRef: React.RefObject<HTMLDivElement>;\n highlightedSeries?: MixedLineBarChartProps.ChartSeries<T> | null;\n onHighlightChange: (series: MixedLineBarChartProps.ChartSeries<T> | null) => void;\n legendTitle?: string;\n ariaLabel?: string;\n}\n\nexport default function InternalChartLegend<T extends number | string | Date>({\n series,\n visibleSeries,\n highlightedSeries,\n onHighlightChange,\n legendTitle,\n ariaLabel,\n plotContainerRef,\n}: InternalChartLegendProps<T>) {\n const legendItems: ChartFilterProps<MixedLineBarChartProps.ChartSeries<T>>['series'] = useMemo(() => {\n return series\n .filter(s => visibleSeries.indexOf(s.series) !== -1)\n .map(({ series, color }) => ({\n label: series.title,\n type: chartLegendMap[series.type],\n color,\n datum: series,\n }));\n }, [series, visibleSeries]);\n\n return (\n <ChartLegend<MixedLineBarChartProps.ChartSeries<T>>\n series={legendItems}\n highlightedSeries={highlightedSeries || null}\n onHighlightChange={onHighlightChange}\n legendTitle={legendTitle}\n ariaLabel={ariaLabel}\n plotContainerRef={plotContainerRef}\n />\n );\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { InternalChartSeries, ScaleType } from './interfaces';
2
+ export declare function computeDomainX<T>(series: readonly InternalChartSeries<T>[], xScaleType: ScaleType): T[];
3
+ export declare function computeDomainY<T>(series: readonly InternalChartSeries<T>[], scaleType: 'linear' | 'log', stackedBars: boolean): number[];
4
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/domain.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAA0B,SAAS,EAAE,MAAM,cAAc,CAAC;AAGtF,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,OA4CjG;AAYD,wBAAgB,cAAc,CAAC,CAAC,EAC9B,MAAM,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EACzC,SAAS,EAAE,QAAQ,GAAG,KAAK,EAC3B,WAAW,EAAE,OAAO,YA0FrB"}
@@ -0,0 +1,138 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { __spreadArray } from "tslib";
4
+ import { isDataSeries, isXThreshold, isYThreshold, matchesX } from './utils';
5
+ export function computeDomainX(series, xScaleType) {
6
+ if (xScaleType === 'categorical') {
7
+ return series.reduce(function (acc, s) {
8
+ if (isDataSeries(s.series)) {
9
+ s.series.data.forEach(function (_a) {
10
+ var x = _a.x;
11
+ if (acc.indexOf(x) === -1) {
12
+ acc.push(x);
13
+ }
14
+ });
15
+ }
16
+ if (isXThreshold(s.series)) {
17
+ if (acc.indexOf(s.series.x) === -1) {
18
+ acc.push(s.series.x);
19
+ }
20
+ }
21
+ return acc;
22
+ }, []);
23
+ }
24
+ return series.reduce(function (acc, curr) {
25
+ // Y-thresholds don't have X value.
26
+ if (isYThreshold(curr.series)) {
27
+ return acc;
28
+ }
29
+ // Compare x-threshold X with current min, max.
30
+ if (isXThreshold(curr.series)) {
31
+ var min = acc[0], max = acc[1];
32
+ var newMin = min === undefined || curr.series.x < min ? curr.series.x : min;
33
+ var newMax = max === undefined || max < curr.series.x ? curr.series.x : max;
34
+ return [newMin, newMax];
35
+ }
36
+ // Compare all series X values with current min, max.
37
+ if (isDataSeries(curr.series)) {
38
+ return curr.series.data.reduce(function (_a, _b) {
39
+ var min = _a[0], max = _a[1];
40
+ var x = _b.x;
41
+ var newMin = min === undefined || x < min ? x : min;
42
+ var newMax = max === undefined || max < x ? x : max;
43
+ return [newMin, newMax];
44
+ }, acc);
45
+ }
46
+ return acc;
47
+ }, []);
48
+ }
49
+ function find(arr, func) {
50
+ for (var i = 0; i < arr.length; i++) {
51
+ var found = func(arr[i]);
52
+ if (found) {
53
+ return arr[i];
54
+ }
55
+ }
56
+ return null;
57
+ }
58
+ export function computeDomainY(series, scaleType, stackedBars) {
59
+ var _series = series;
60
+ // For stacked bars, we need to accumulate all the bar series into a positive and a negative series
61
+ if (stackedBars) {
62
+ var _a = series.reduce(function (acc, curr) {
63
+ if (curr.series.type === 'bar') {
64
+ curr.series.data.forEach(function (_a) {
65
+ var x = _a.x, y = _a.y;
66
+ var data = y < 0 ? acc.negativeData : acc.positiveData;
67
+ var stackedDatum = find(data, function (el) { return matchesX(el.x, x); });
68
+ if (stackedDatum) {
69
+ stackedDatum.y += y;
70
+ }
71
+ else {
72
+ data.push({ x: x, y: y });
73
+ }
74
+ return acc;
75
+ });
76
+ }
77
+ return acc;
78
+ }, {
79
+ positiveData: [],
80
+ negativeData: []
81
+ }), positiveData = _a.positiveData, negativeData = _a.negativeData;
82
+ // Artificial series with the sum of all bars when stacked
83
+ var stackedSeries = [
84
+ {
85
+ color: '',
86
+ index: NaN,
87
+ series: {
88
+ type: 'bar',
89
+ title: 'positive',
90
+ data: positiveData
91
+ }
92
+ },
93
+ {
94
+ color: '',
95
+ index: NaN,
96
+ series: {
97
+ type: 'bar',
98
+ title: 'negative',
99
+ data: negativeData
100
+ }
101
+ },
102
+ ];
103
+ // MixedLineBarChart can also contain other non-bar series,
104
+ // so we replace all bars with the artificial bar series
105
+ // Then proceed to compute range with it and the remaining (non-bar) series
106
+ _series = __spreadArray(__spreadArray([], stackedSeries, true), _series.filter(function (s) { return s.series.type !== 'bar'; }), true);
107
+ }
108
+ var domain = _series.reduce(function (acc, curr) {
109
+ // Compare threshold Y value with current min, max.
110
+ if (isYThreshold(curr.series)) {
111
+ var min = acc[0], max = acc[1];
112
+ var newMin = min === undefined || curr.series.y < min ? curr.series.y : min;
113
+ var newMax = max === undefined || max < curr.series.y ? curr.series.y : max;
114
+ return [newMin, newMax];
115
+ }
116
+ // X-thresholds don't have Y value.
117
+ if (isXThreshold(curr.series)) {
118
+ return acc;
119
+ }
120
+ // Compare all series Y values with current min, max.
121
+ if (isDataSeries(curr.series)) {
122
+ return curr.series.data.reduce(function (_a, _b) {
123
+ var min = _a[0], max = _a[1];
124
+ var y = _b.y;
125
+ var newMin = min === undefined || y < min ? y : min;
126
+ var newMax = max === undefined || max < y ? y : max;
127
+ return [newMin, newMax];
128
+ }, acc);
129
+ }
130
+ return acc;
131
+ }, [0, 0]);
132
+ // Log scales can't start from 0, so if possible, start from 1.
133
+ if (scaleType === 'log' && domain[0] === 0 && domain[1] > 1) {
134
+ return [1, domain[1]];
135
+ }
136
+ return domain;
137
+ }
138
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/domain.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { InternalChartSeries, MixedLineBarChartProps, ScaleType } from './interfaces';\nimport { isDataSeries, isXThreshold, isYThreshold, matchesX } from './utils';\n\nexport function computeDomainX<T>(series: readonly InternalChartSeries<T>[], xScaleType: ScaleType) {\n if (xScaleType === 'categorical') {\n return series.reduce((acc, s) => {\n if (isDataSeries(s.series)) {\n s.series.data.forEach(({ x }) => {\n if (acc.indexOf(x) === -1) {\n acc.push(x);\n }\n });\n }\n if (isXThreshold(s.series)) {\n if (acc.indexOf(s.series.x) === -1) {\n acc.push(s.series.x);\n }\n }\n return acc;\n }, [] as T[]);\n }\n\n return series.reduce((acc, curr) => {\n // Y-thresholds don't have X value.\n if (isYThreshold(curr.series)) {\n return acc;\n }\n\n // Compare x-threshold X with current min, max.\n if (isXThreshold(curr.series)) {\n const [min, max] = acc;\n const newMin = min === undefined || curr.series.x < min ? curr.series.x : min;\n const newMax = max === undefined || max < curr.series.x ? curr.series.x : max;\n return [newMin, newMax] as T[];\n }\n\n // Compare all series X values with current min, max.\n if (isDataSeries(curr.series)) {\n return curr.series.data.reduce(([min, max], { x }) => {\n const newMin = min === undefined || x < min ? x : min;\n const newMax = max === undefined || max < x ? x : max;\n return [newMin, newMax] as T[];\n }, acc);\n }\n\n return acc;\n }, [] as T[]);\n}\n\nfunction find<Q>(arr: readonly Q[], func: (el: Q) => boolean) {\n for (let i = 0; i < arr.length; i++) {\n const found = func(arr[i]);\n if (found) {\n return arr[i];\n }\n }\n return null;\n}\n\nexport function computeDomainY<T>(\n series: readonly InternalChartSeries<T>[],\n scaleType: 'linear' | 'log',\n stackedBars: boolean\n) {\n let _series = series;\n\n // For stacked bars, we need to accumulate all the bar series into a positive and a negative series\n if (stackedBars) {\n const { positiveData, negativeData } = series.reduce(\n (acc, curr) => {\n if (curr.series.type === 'bar') {\n curr.series.data.forEach(({ x, y }) => {\n const data = y < 0 ? acc.negativeData : acc.positiveData;\n const stackedDatum = find(data, el => matchesX(el.x, x));\n if (stackedDatum) {\n stackedDatum.y += y;\n } else {\n data.push({ x, y });\n }\n return acc;\n });\n }\n return acc;\n },\n {\n positiveData: [] as MixedLineBarChartProps.Datum<T>[],\n negativeData: [] as MixedLineBarChartProps.Datum<T>[],\n }\n );\n\n // Artificial series with the sum of all bars when stacked\n const stackedSeries: InternalChartSeries<T>[] = [\n {\n color: '',\n index: NaN,\n series: {\n type: 'bar',\n title: 'positive',\n data: positiveData as any,\n },\n },\n {\n color: '',\n index: NaN,\n series: {\n type: 'bar',\n title: 'negative',\n data: negativeData as any,\n },\n },\n ];\n\n // MixedLineBarChart can also contain other non-bar series,\n // so we replace all bars with the artificial bar series\n // Then proceed to compute range with it and the remaining (non-bar) series\n _series = [...stackedSeries, ..._series.filter(s => s.series.type !== 'bar')];\n }\n\n const domain = _series.reduce(\n (acc, curr) => {\n // Compare threshold Y value with current min, max.\n if (isYThreshold(curr.series)) {\n const [min, max] = acc;\n const newMin = min === undefined || curr.series.y < min ? curr.series.y : min;\n const newMax = max === undefined || max < curr.series.y ? curr.series.y : max;\n return [newMin, newMax];\n }\n\n // X-thresholds don't have Y value.\n if (isXThreshold(curr.series)) {\n return acc;\n }\n\n // Compare all series Y values with current min, max.\n if (isDataSeries(curr.series)) {\n return curr.series.data.reduce(([min, max], { y }) => {\n const newMin = min === undefined || y < min ? y : min;\n const newMax = max === undefined || max < y ? y : max;\n return [newMin, newMax];\n }, acc);\n }\n\n return acc;\n },\n [0, 0]\n );\n\n // Log scales can't start from 0, so if possible, start from 1.\n if (scaleType === 'log' && domain[0] === 0 && domain[1] > 1) {\n return [1, domain[1]];\n }\n return domain;\n}\n"]}
@@ -5,8 +5,6 @@ export interface HighlightDetails {
5
5
  position: string;
6
6
  details: ChartSeriesDetailItem[];
7
7
  }
8
- /**
9
- * Formats provided x-position and its corresponding series values.
10
- */
11
- export default function formatPosition<T extends ChartDataTypes>(position: T, series: readonly InternalChartSeries<T>[], xTickFormatter?: CartesianChartProps.TickFormatter<T>): HighlightDetails;
8
+ /** Formats provided x-position and its corresponding series values. */
9
+ export default function formatHighlighted<T extends ChartDataTypes>(position: T, series: readonly InternalChartSeries<T>[], xTickFormatter?: CartesianChartProps.TickFormatter<T>): HighlightDetails;
12
10
  //# sourceMappingURL=format-highlighted.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format-highlighted.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/format-highlighted.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAGxF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,CAAC,SAAS,cAAc,EAC7D,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EACzC,cAAc,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,GACpD,gBAAgB,CAYlB"}
1
+ {"version":3,"file":"format-highlighted.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/format-highlighted.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAGxF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,uEAAuE;AACvE,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAChE,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EACzC,cAAc,CAAC,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,GACpD,gBAAgB,CAYlB"}
@@ -1,8 +1,6 @@
1
- import { matchesX } from './utils';
2
- /**
3
- * Formats provided x-position and its corresponding series values.
4
- */
5
- export default function formatPosition(position, series, xTickFormatter) {
1
+ import { isDataSeries, isXThreshold, isYThreshold, matchesX } from './utils';
2
+ /** Formats provided x-position and its corresponding series values. */
3
+ export default function formatHighlighted(position, series, xTickFormatter) {
6
4
  var formattedPosition = xTickFormatter ? xTickFormatter(position) : position.toString();
7
5
  var details = [];
8
6
  series.forEach(function (s) {
@@ -15,7 +13,18 @@ export default function formatPosition(position, series, xTickFormatter) {
15
13
  }
16
14
  function getSeriesDetail(internalSeries, targetX) {
17
15
  var series = internalSeries.series, color = internalSeries.color;
18
- if (series.type === 'threshold') {
16
+ // X-thresholds are only shown when X matches.
17
+ if (isXThreshold(series)) {
18
+ return series.x === targetX
19
+ ? {
20
+ key: series.title,
21
+ value: '',
22
+ color: color,
23
+ markerType: 'dashed'
24
+ }
25
+ : null;
26
+ }
27
+ if (isYThreshold(series)) {
19
28
  return {
20
29
  key: series.title,
21
30
  value: series.valueFormatter ? series.valueFormatter(series.y) : series.y,
@@ -23,15 +32,17 @@ function getSeriesDetail(internalSeries, targetX) {
23
32
  markerType: 'dashed'
24
33
  };
25
34
  }
26
- for (var _i = 0, _a = series.data; _i < _a.length; _i++) {
27
- var d = _a[_i];
28
- if (matchesX(targetX, d.x)) {
29
- return {
30
- key: series.title,
31
- value: series.valueFormatter ? series.valueFormatter(d.y, targetX) : d.y,
32
- color: color,
33
- markerType: series.type === 'line' ? 'line' : 'rectangle'
34
- };
35
+ if (isDataSeries(series)) {
36
+ for (var _i = 0, _a = series.data; _i < _a.length; _i++) {
37
+ var datum = _a[_i];
38
+ if (matchesX(targetX, datum.x)) {
39
+ return {
40
+ key: series.title,
41
+ value: series.valueFormatter ? series.valueFormatter(datum.y, targetX) : datum.y,
42
+ color: color,
43
+ markerType: series.type === 'line' ? 'line' : 'rectangle'
44
+ };
45
+ }
35
46
  }
36
47
  }
37
48
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"format-highlighted.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/format-highlighted.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOnC;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,QAAW,EACX,MAAyC,EACzC,cAAqD;IAErD,IAAM,iBAAiB,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAE1F,IAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,UAAA,CAAC;QACd,IAAM,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,SAAA,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAI,cAAsC,EAAE,OAAU;IACpE,IAAA,MAAM,GAAY,cAAc,OAA1B,EAAE,KAAK,GAAK,cAAc,MAAnB,CAAoB;IAEzC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;QAC/B,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,KAAK;YACjB,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACzE,KAAK,OAAA;YACL,UAAU,EAAE,QAAQ;SACrB,CAAC;KACH;IAED,KAAgB,UAAW,EAAX,KAAA,MAAM,CAAC,IAAI,EAAX,cAAW,EAAX,IAAW,EAAE;QAAxB,IAAM,CAAC,SAAA;QACV,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1B,OAAO;gBACL,GAAG,EAAE,MAAM,CAAC,KAAK;gBACjB,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxE,KAAK,OAAA;gBACL,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;aAC1D,CAAC;SACH;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ChartDataTypes, InternalChartSeries } from './interfaces';\nimport { ChartSeriesDetailItem } from '../internal/components/chart-series-details';\nimport { CartesianChartProps } from '../internal/components/cartesian-chart/interfaces';\nimport { matchesX } from './utils';\n\nexport interface HighlightDetails {\n position: string;\n details: ChartSeriesDetailItem[];\n}\n\n/**\n * Formats provided x-position and its corresponding series values.\n */\nexport default function formatPosition<T extends ChartDataTypes>(\n position: T,\n series: readonly InternalChartSeries<T>[],\n xTickFormatter?: CartesianChartProps.TickFormatter<T>\n): HighlightDetails {\n const formattedPosition = xTickFormatter ? xTickFormatter(position) : position.toString();\n\n const details: ChartSeriesDetailItem[] = [];\n series.forEach(s => {\n const detail = getSeriesDetail(s, position);\n if (detail) {\n details.push(detail);\n }\n });\n\n return { position: formattedPosition, details };\n}\n\nfunction getSeriesDetail<T>(internalSeries: InternalChartSeries<T>, targetX: T): ChartSeriesDetailItem | null {\n const { series, color } = internalSeries;\n\n if (series.type === 'threshold') {\n return {\n key: series.title,\n value: series.valueFormatter ? series.valueFormatter(series.y) : series.y,\n color,\n markerType: 'dashed',\n };\n }\n\n for (const d of series.data) {\n if (matchesX(targetX, d.x)) {\n return {\n key: series.title,\n value: series.valueFormatter ? series.valueFormatter(d.y, targetX) : d.y,\n color,\n markerType: series.type === 'line' ? 'line' : 'rectangle',\n };\n }\n }\n\n return null;\n}\n"]}
1
+ {"version":3,"file":"format-highlighted.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/format-highlighted.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAO7E,uEAAuE;AACvE,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,QAAW,EACX,MAAyC,EACzC,cAAqD;IAErD,IAAM,iBAAiB,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAE1F,IAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,CAAC,OAAO,CAAC,UAAA,CAAC;QACd,IAAM,MAAM,GAAG,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,SAAA,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAI,cAAsC,EAAE,OAAU;IACpE,IAAA,MAAM,GAAY,cAAc,OAA1B,EAAE,KAAK,GAAK,cAAc,MAAnB,CAAoB;IAEzC,8CAA8C;IAC9C,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;QACxB,OAAO,MAAM,CAAC,CAAC,KAAK,OAAO;YACzB,CAAC,CAAC;gBACE,GAAG,EAAE,MAAM,CAAC,KAAK;gBACjB,KAAK,EAAE,EAAE;gBACT,KAAK,OAAA;gBACL,UAAU,EAAE,QAAQ;aACrB;YACH,CAAC,CAAC,IAAI,CAAC;KACV;IAED,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;QACxB,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,KAAK;YACjB,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACzE,KAAK,OAAA;YACL,UAAU,EAAE,QAAQ;SACrB,CAAC;KACH;IAED,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;QACxB,KAAoB,UAAW,EAAX,KAAA,MAAM,CAAC,IAAI,EAAX,cAAW,EAAX,IAAW,EAAE;YAA5B,IAAM,KAAK,SAAA;YACd,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC9B,OAAO;oBACL,GAAG,EAAE,MAAM,CAAC,KAAK;oBACjB,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAChF,KAAK,OAAA;oBACL,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;iBAC1D,CAAC;aACH;SACF;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ChartDataTypes, InternalChartSeries } from './interfaces';\nimport { ChartSeriesDetailItem } from '../internal/components/chart-series-details';\nimport { CartesianChartProps } from '../internal/components/cartesian-chart/interfaces';\nimport { isDataSeries, isXThreshold, isYThreshold, matchesX } from './utils';\n\nexport interface HighlightDetails {\n position: string;\n details: ChartSeriesDetailItem[];\n}\n\n/** Formats provided x-position and its corresponding series values. */\nexport default function formatHighlighted<T extends ChartDataTypes>(\n position: T,\n series: readonly InternalChartSeries<T>[],\n xTickFormatter?: CartesianChartProps.TickFormatter<T>\n): HighlightDetails {\n const formattedPosition = xTickFormatter ? xTickFormatter(position) : position.toString();\n\n const details: ChartSeriesDetailItem[] = [];\n series.forEach(s => {\n const detail = getSeriesDetail(s, position);\n if (detail) {\n details.push(detail);\n }\n });\n\n return { position: formattedPosition, details };\n}\n\nfunction getSeriesDetail<T>(internalSeries: InternalChartSeries<T>, targetX: T): ChartSeriesDetailItem | null {\n const { series, color } = internalSeries;\n\n // X-thresholds are only shown when X matches.\n if (isXThreshold(series)) {\n return series.x === targetX\n ? {\n key: series.title,\n value: '',\n color,\n markerType: 'dashed',\n }\n : null;\n }\n\n if (isYThreshold(series)) {\n return {\n key: series.title,\n value: series.valueFormatter ? series.valueFormatter(series.y) : series.y,\n color,\n markerType: 'dashed',\n };\n }\n\n if (isDataSeries(series)) {\n for (const datum of series.data) {\n if (matchesX(targetX, datum.x)) {\n return {\n key: series.title,\n value: series.valueFormatter ? series.valueFormatter(datum.y, targetX) : datum.y,\n color,\n markerType: series.type === 'line' ? 'line' : 'rectangle',\n };\n }\n }\n }\n\n return null;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-mouse-hover.d.ts","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-mouse-hover.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAIvD,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACvC,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,eAAe,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAChF,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,OAAO,EACP,YAAY,EACZ,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE,kBAAkB,CAAC,CAAC,CAAC;;4BAwDS,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC;2BAUzC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC;EAiBvE"}
1
+ {"version":3,"file":"use-mouse-hover.d.ts","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-mouse-hover.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAKvD,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACvC,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,eAAe,EAAE,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAChF,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,OAAO,EACP,YAAY,EACZ,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,EAAE,kBAAkB,CAAC,CAAC,CAAC;;4BAwDS,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC;2BAUzC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC;EAiBvE"}