@cloudscape-design/components 3.0.23 → 3.0.26

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 (163) hide show
  1. package/alert/styles.scoped.css +0 -34
  2. package/annotation-context/annotation/styles.scoped.css +0 -18
  3. package/app-layout/content-wrapper/styles.scoped.css +0 -4
  4. package/app-layout/mobile-toolbar/styles.scoped.css +0 -9
  5. package/app-layout/styles.scoped.css +0 -20
  6. package/app-layout/toggles/styles.scoped.css +0 -16
  7. package/app-layout/visual-refresh/styles.scoped.css +0 -71
  8. package/area-chart/styles.scoped.css +0 -13
  9. package/attribute-editor/styles.scoped.css +0 -23
  10. package/badge/styles.scoped.css +0 -15
  11. package/bar-chart/interfaces.d.ts +1 -1
  12. package/bar-chart/interfaces.d.ts.map +1 -1
  13. package/bar-chart/interfaces.js.map +1 -1
  14. package/box/styles.scoped.css +0 -171
  15. package/breadcrumb-group/item/styles.scoped.css +0 -11
  16. package/breadcrumb-group/styles.scoped.css +0 -10
  17. package/button/styles.scoped.css +0 -264
  18. package/button-dropdown/category-elements/styles.scoped.css +0 -26
  19. package/button-dropdown/item-element/styles.scoped.css +0 -22
  20. package/button-dropdown/mobile-expandable-group/styles.scoped.css +0 -5
  21. package/button-dropdown/styles.scoped.css +0 -7
  22. package/cards/styles.scoped.css +0 -45
  23. package/checkbox/styles.scoped.css +0 -11
  24. package/code-editor/styles.scoped.css +0 -87
  25. package/collection-preferences/styles.scoped.css +0 -12
  26. package/column-layout/styles.scoped.css +0 -12
  27. package/container/styles.scoped.css +0 -27
  28. package/date-picker/styles.scoped.css +0 -45
  29. package/date-range-picker/calendar/grids/day/styles.scoped.css +0 -45
  30. package/date-range-picker/index.d.ts.map +1 -1
  31. package/date-range-picker/index.js +13 -15
  32. package/date-range-picker/index.js.map +1 -1
  33. package/date-range-picker/relative-range/styles.scoped.css +0 -3
  34. package/date-range-picker/styles.css.js +41 -42
  35. package/date-range-picker/styles.scoped.css +49 -92
  36. package/date-range-picker/styles.selectors.js +41 -42
  37. package/expandable-section/styles.scoped.css +0 -33
  38. package/flashbar/styles.scoped.css +0 -36
  39. package/form/styles.scoped.css +0 -12
  40. package/form-field/styles.scoped.css +0 -26
  41. package/grid/styles.scoped.css +0 -6
  42. package/header/styles.scoped.css +0 -51
  43. package/help-panel/styles.scoped.css +0 -73
  44. package/hotspot/styles.scoped.css +0 -3
  45. package/icon/styles.scoped.css +0 -33
  46. package/input/styles.scoped.css +0 -49
  47. package/internal/base-component/styles.scoped.css +0 -1
  48. package/internal/components/abstract-switch/styles.scoped.css +0 -7
  49. package/internal/components/button-trigger/styles.scoped.css +0 -42
  50. package/internal/components/cartesian-chart/styles.scoped.css +0 -10
  51. package/internal/components/chart-filter/styles.scoped.css +0 -4
  52. package/internal/components/chart-legend/styles.scoped.css +0 -8
  53. package/internal/components/chart-plot/styles.scoped.css +0 -1
  54. package/internal/components/chart-popover/styles.scoped.css +0 -4
  55. package/internal/components/chart-series-details/styles.scoped.css +0 -12
  56. package/internal/components/chart-series-marker/styles.scoped.css +0 -7
  57. package/internal/components/chart-status-container/styles.scoped.css +0 -1
  58. package/internal/components/checkbox-icon/styles.scoped.css +0 -10
  59. package/internal/components/content-layout/styles.scoped.css +0 -5
  60. package/internal/components/dark-ribbon/styles.scoped.css +0 -1
  61. package/internal/components/dropdown/styles.scoped.css +0 -17
  62. package/internal/components/dropdown-footer/styles.scoped.css +0 -6
  63. package/internal/components/dropdown-status/styles.scoped.css +0 -6
  64. package/internal/components/filtering-token/styles.scoped.css +0 -21
  65. package/internal/components/menu-dropdown/styles.scoped.css +0 -17
  66. package/internal/components/option/styles.scoped.css +0 -16
  67. package/internal/components/options-list/styles.scoped.css +0 -5
  68. package/internal/components/selectable-item/styles.scoped.css +0 -44
  69. package/internal/environment.js +1 -1
  70. package/line-chart/interfaces.d.ts +1 -1
  71. package/line-chart/interfaces.d.ts.map +1 -1
  72. package/line-chart/interfaces.js.map +1 -1
  73. package/link/styles.scoped.css +0 -77
  74. package/mixed-line-bar-chart/bar-series.d.ts +1 -1
  75. package/mixed-line-bar-chart/bar-series.d.ts.map +1 -1
  76. package/mixed-line-bar-chart/bar-series.js.map +1 -1
  77. package/mixed-line-bar-chart/chart-container.d.ts.map +1 -1
  78. package/mixed-line-bar-chart/chart-container.js +9 -10
  79. package/mixed-line-bar-chart/chart-container.js.map +1 -1
  80. package/mixed-line-bar-chart/chart-filters.d.ts +2 -2
  81. package/mixed-line-bar-chart/chart-filters.d.ts.map +1 -1
  82. package/mixed-line-bar-chart/chart-filters.js +1 -2
  83. package/mixed-line-bar-chart/chart-filters.js.map +1 -1
  84. package/mixed-line-bar-chart/chart-legend.d.ts +2 -2
  85. package/mixed-line-bar-chart/chart-legend.d.ts.map +1 -1
  86. package/mixed-line-bar-chart/chart-legend.js +1 -2
  87. package/mixed-line-bar-chart/chart-legend.js.map +1 -1
  88. package/mixed-line-bar-chart/domain.d.ts +4 -0
  89. package/mixed-line-bar-chart/domain.d.ts.map +1 -0
  90. package/mixed-line-bar-chart/domain.js +138 -0
  91. package/mixed-line-bar-chart/domain.js.map +1 -0
  92. package/mixed-line-bar-chart/format-highlighted.d.ts +2 -4
  93. package/mixed-line-bar-chart/format-highlighted.d.ts.map +1 -1
  94. package/mixed-line-bar-chart/format-highlighted.js +26 -15
  95. package/mixed-line-bar-chart/format-highlighted.js.map +1 -1
  96. package/mixed-line-bar-chart/hooks/use-mouse-hover.d.ts.map +1 -1
  97. package/mixed-line-bar-chart/hooks/use-mouse-hover.js +3 -2
  98. package/mixed-line-bar-chart/hooks/use-mouse-hover.js.map +1 -1
  99. package/mixed-line-bar-chart/hooks/use-navigation.d.ts.map +1 -1
  100. package/mixed-line-bar-chart/hooks/use-navigation.js +23 -35
  101. package/mixed-line-bar-chart/hooks/use-navigation.js.map +1 -1
  102. package/mixed-line-bar-chart/interfaces.d.ts +12 -2
  103. package/mixed-line-bar-chart/interfaces.d.ts.map +1 -1
  104. package/mixed-line-bar-chart/interfaces.js.map +1 -1
  105. package/mixed-line-bar-chart/internal.d.ts.map +1 -1
  106. package/mixed-line-bar-chart/internal.js +14 -6
  107. package/mixed-line-bar-chart/internal.js.map +1 -1
  108. package/mixed-line-bar-chart/line-series.d.ts +2 -2
  109. package/mixed-line-bar-chart/line-series.d.ts.map +1 -1
  110. package/mixed-line-bar-chart/line-series.js +21 -9
  111. package/mixed-line-bar-chart/line-series.js.map +1 -1
  112. package/mixed-line-bar-chart/make-scaled-bar-groups.d.ts.map +1 -1
  113. package/mixed-line-bar-chart/make-scaled-bar-groups.js +11 -4
  114. package/mixed-line-bar-chart/make-scaled-bar-groups.js.map +1 -1
  115. package/mixed-line-bar-chart/make-scaled-series.d.ts +2 -4
  116. package/mixed-line-bar-chart/make-scaled-series.d.ts.map +1 -1
  117. package/mixed-line-bar-chart/make-scaled-series.js +89 -25
  118. package/mixed-line-bar-chart/make-scaled-series.js.map +1 -1
  119. package/mixed-line-bar-chart/styles.scoped.css +0 -13
  120. package/mixed-line-bar-chart/utils.d.ts +5 -6
  121. package/mixed-line-bar-chart/utils.d.ts.map +1 -1
  122. package/mixed-line-bar-chart/utils.js +11 -112
  123. package/mixed-line-bar-chart/utils.js.map +1 -1
  124. package/modal/styles.scoped.css +0 -31
  125. package/multiselect/styles.scoped.css +0 -4
  126. package/package.json +1 -1
  127. package/pagination/styles.scoped.css +0 -22
  128. package/pie-chart/styles.scoped.css +0 -25
  129. package/popover/styles.scoped.css +0 -35
  130. package/progress-bar/styles.scoped.css +0 -25
  131. package/property-filter/styles.scoped.css +0 -22
  132. package/radio-group/styles.scoped.css +0 -22
  133. package/s3-resource-selector/s3-in-context/styles.scoped.css +0 -6
  134. package/segmented-control/styles.scoped.css +0 -36
  135. package/select/parts/styles.scoped.css +0 -6
  136. package/select/styles.scoped.css +0 -4
  137. package/side-navigation/styles.scoped.css +0 -38
  138. package/space-between/styles.scoped.css +0 -40
  139. package/spinner/styles.scoped.css +0 -17
  140. package/split-panel/styles.scoped.css +0 -65
  141. package/status-indicator/styles.scoped.css +0 -20
  142. package/table/body-cell/styles.scoped.css +0 -29
  143. package/table/header-cell/styles.scoped.css +0 -32
  144. package/table/resizer/styles.scoped.css +0 -6
  145. package/table/selection-control/styles.scoped.css +0 -3
  146. package/table/styles.scoped.css +0 -39
  147. package/table/use-selection.d.ts.map +1 -1
  148. package/table/use-selection.js +5 -5
  149. package/table/use-selection.js.map +1 -1
  150. package/tabs/styles.scoped.css +0 -41
  151. package/tag-editor/styles.scoped.css +0 -12
  152. package/text-content/styles.scoped.css +0 -54
  153. package/text-filter/styles.scoped.css +0 -7
  154. package/textarea/styles.scoped.css +0 -30
  155. package/tiles/styles.scoped.css +0 -55
  156. package/toggle/styles.scoped.css +0 -14
  157. package/token-group/styles.scoped.css +0 -35
  158. package/top-navigation/1.0-beta/styles.scoped.css +0 -40
  159. package/top-navigation/styles.scoped.css +0 -75
  160. package/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +0 -22
  161. package/tutorial-panel/components/tutorial-list/styles.scoped.css +0 -24
  162. package/tutorial-panel/styles.scoped.css +0 -5
  163. package/wizard/styles.scoped.css +0 -54
@@ -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"}
@@ -3,6 +3,7 @@
3
3
  import { useState } from 'react';
4
4
  import { nodeContains } from '../../internal/utils/dom';
5
5
  import styles from '../styles.css.js';
6
+ import { isYThreshold } from '../utils';
6
7
  var MAX_HOVER_MARGIN = 6;
7
8
  export function useMouseHover(_a) {
8
9
  var plotRef = _a.plotRef, scaledSeries = _a.scaledSeries, barGroups = _a.barGroups, highlightSeries = _a.highlightSeries, highlightPoint = _a.highlightPoint, highlightGroup = _a.highlightGroup, clearHighlightedSeries = _a.clearHighlightedSeries, isGroupNavigation = _a.isGroupNavigation, isHandlersDisabled = _a.isHandlersDisabled;
@@ -15,7 +16,7 @@ export function useMouseHover(_a) {
15
16
  .map(function (v) { return v.x; })
16
17
  .reduce(function (prev, curr) { return (Math.abs(curr - offsetX) < Math.abs(prev - offsetX) ? curr : prev); }, -Infinity);
17
18
  var closestY = scaledSeries
18
- .filter(function (v) { return v.x === closestX || v.series.type === 'threshold'; })
19
+ .filter(function (v) { return v.x === closestX || isYThreshold(v.series); })
19
20
  .map(function (v) { return v.y; })
20
21
  .reduce(function (prev, curr) { return (Math.abs(curr - offsetY) < Math.abs(prev - offsetY) ? curr : prev); }, -Infinity);
21
22
  if (isFinite(closestX)) {
@@ -23,7 +24,7 @@ export function useMouseHover(_a) {
23
24
  if (isFinite(closestY) &&
24
25
  Math.abs(offsetX - closestX) < MAX_HOVER_MARGIN &&
25
26
  Math.abs(offsetY - closestY) < MAX_HOVER_MARGIN) {
26
- var _a = scaledSeries.filter(function (s) { return (s.x === closestX || s.series.type === 'threshold') && s.y === closestY; })[0], color = _a.color, datum = _a.datum, series = _a.series;
27
+ var _a = scaledSeries.filter(function (s) { return (s.x === closestX || isYThreshold(s.series)) && s.y === closestY; })[0], color = _a.color, datum = _a.datum, series = _a.series;
27
28
  highlightSeries(series);
28
29
  highlightPoint({ x: closestX, y: closestY, color: color, datum: datum, series: series });
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-mouse-hover.js","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-mouse-hover.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\nimport { useState } from 'react';\nimport { nodeContains } from '../../internal/utils/dom';\n\nimport { ScaledBarGroup } from '../make-scaled-bar-groups';\nimport { ScaledPoint } from '../make-scaled-series';\n\nimport styles from '../styles.css.js';\nimport { ChartPlotRef } from '../../internal/components/chart-plot';\nimport { MixedLineBarChartProps } from '../interfaces';\n\nconst MAX_HOVER_MARGIN = 6;\n\nexport interface UseMouseHoverProps<T> {\n plotRef: React.RefObject<ChartPlotRef>;\n scaledSeries: ReadonlyArray<ScaledPoint<T>>;\n barGroups: ScaledBarGroup<T>[];\n highlightSeries: (series: MixedLineBarChartProps.ChartSeries<T> | null) => void;\n highlightPoint: (point: ScaledPoint<T> | null) => void;\n highlightGroup: (groupIndex: number) => void;\n clearHighlightedSeries: () => void;\n isGroupNavigation: boolean;\n isHandlersDisabled: boolean;\n}\n\nexport function useMouseHover<T>({\n plotRef,\n scaledSeries,\n barGroups,\n highlightSeries,\n highlightPoint,\n highlightGroup,\n clearHighlightedSeries,\n isGroupNavigation,\n isHandlersDisabled,\n}: UseMouseHoverProps<T>) {\n const [verticalMarkerLeft, setVerticalMarkerLeft] = useState<number | null>(null);\n\n const onSeriesMouseMove = (event: React.MouseEvent<SVGElement, MouseEvent>) => {\n const svgRect = (event.target as SVGElement).getBoundingClientRect();\n const offsetX = event.clientX - svgRect.left;\n const offsetY = event.clientY - svgRect.top;\n\n const closestX = scaledSeries\n .map(v => v.x)\n .reduce((prev, curr) => (Math.abs(curr - offsetX) < Math.abs(prev - offsetX) ? curr : prev), -Infinity);\n\n const closestY = scaledSeries\n .filter(v => v.x === closestX || v.series.type === 'threshold')\n .map(v => v.y)\n .reduce((prev, curr) => (Math.abs(curr - offsetY) < Math.abs(prev - offsetY) ? curr : prev), -Infinity);\n\n if (isFinite(closestX)) {\n setVerticalMarkerLeft(closestX);\n if (\n isFinite(closestY) &&\n Math.abs(offsetX - closestX) < MAX_HOVER_MARGIN &&\n Math.abs(offsetY - closestY) < MAX_HOVER_MARGIN\n ) {\n const [{ color, datum, series }] = scaledSeries.filter(\n s => (s.x === closestX || s.series.type === 'threshold') && s.y === closestY\n );\n highlightSeries(series);\n highlightPoint({ x: closestX, y: closestY, color, datum, series });\n } else {\n highlightSeries(null);\n highlightPoint(null);\n }\n }\n };\n\n const onGroupMouseMove = (event: React.MouseEvent<SVGElement, MouseEvent>) => {\n const svgRect = (event.target as SVGElement).getBoundingClientRect();\n const offsetX = event.clientX - svgRect.left;\n const offsetY = event.clientY - svgRect.top;\n\n // If hovering over some group - highlight it.\n for (let groupIndex = 0; groupIndex < barGroups.length; groupIndex++) {\n const {\n position: { x, y, width, height },\n } = barGroups[groupIndex];\n\n if (x <= offsetX && offsetX <= x + width && y <= offsetY && offsetY <= y + height) {\n highlightGroup(groupIndex);\n return;\n }\n }\n // Otherwise - clear the highlight.\n clearHighlightedSeries();\n };\n\n const onSVGMouseMove = (event: React.MouseEvent<SVGElement, MouseEvent>) => {\n if (event.target === plotRef.current!.svg && !isHandlersDisabled) {\n if (isGroupNavigation) {\n onGroupMouseMove(event);\n } else if (scaledSeries.length > 0) {\n onSeriesMouseMove(event);\n }\n }\n };\n\n const onSVGMouseOut = (event: React.MouseEvent<SVGElement, MouseEvent>) => {\n if (isHandlersDisabled) {\n return;\n }\n if (\n !nodeContains(plotRef.current!.svg, event.relatedTarget as Element) ||\n // `classList` is not supported on IE11 for SVG elements\n ((event.relatedTarget && (event.relatedTarget as Element).getAttribute('class')) || '')\n .split(' ')\n .indexOf(styles.series) > -1\n ) {\n setVerticalMarkerLeft(null);\n clearHighlightedSeries();\n }\n };\n\n return { verticalMarkerLeft, onSVGMouseMove, onSVGMouseOut };\n}\n"]}
1
+ {"version":3,"file":"use-mouse-hover.js","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-mouse-hover.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\nimport { useState } from 'react';\nimport { nodeContains } from '../../internal/utils/dom';\n\nimport { ScaledBarGroup } from '../make-scaled-bar-groups';\nimport { ScaledPoint } from '../make-scaled-series';\n\nimport styles from '../styles.css.js';\nimport { ChartPlotRef } from '../../internal/components/chart-plot';\nimport { MixedLineBarChartProps } from '../interfaces';\nimport { isYThreshold } from '../utils';\n\nconst MAX_HOVER_MARGIN = 6;\n\nexport interface UseMouseHoverProps<T> {\n plotRef: React.RefObject<ChartPlotRef>;\n scaledSeries: ReadonlyArray<ScaledPoint<T>>;\n barGroups: ScaledBarGroup<T>[];\n highlightSeries: (series: MixedLineBarChartProps.ChartSeries<T> | null) => void;\n highlightPoint: (point: ScaledPoint<T> | null) => void;\n highlightGroup: (groupIndex: number) => void;\n clearHighlightedSeries: () => void;\n isGroupNavigation: boolean;\n isHandlersDisabled: boolean;\n}\n\nexport function useMouseHover<T>({\n plotRef,\n scaledSeries,\n barGroups,\n highlightSeries,\n highlightPoint,\n highlightGroup,\n clearHighlightedSeries,\n isGroupNavigation,\n isHandlersDisabled,\n}: UseMouseHoverProps<T>) {\n const [verticalMarkerLeft, setVerticalMarkerLeft] = useState<number | null>(null);\n\n const onSeriesMouseMove = (event: React.MouseEvent<SVGElement, MouseEvent>) => {\n const svgRect = (event.target as SVGElement).getBoundingClientRect();\n const offsetX = event.clientX - svgRect.left;\n const offsetY = event.clientY - svgRect.top;\n\n const closestX = scaledSeries\n .map(v => v.x)\n .reduce((prev, curr) => (Math.abs(curr - offsetX) < Math.abs(prev - offsetX) ? curr : prev), -Infinity);\n\n const closestY = scaledSeries\n .filter(v => v.x === closestX || isYThreshold(v.series))\n .map(v => v.y)\n .reduce((prev, curr) => (Math.abs(curr - offsetY) < Math.abs(prev - offsetY) ? curr : prev), -Infinity);\n\n if (isFinite(closestX)) {\n setVerticalMarkerLeft(closestX);\n if (\n isFinite(closestY) &&\n Math.abs(offsetX - closestX) < MAX_HOVER_MARGIN &&\n Math.abs(offsetY - closestY) < MAX_HOVER_MARGIN\n ) {\n const [{ color, datum, series }] = scaledSeries.filter(\n s => (s.x === closestX || isYThreshold(s.series)) && s.y === closestY\n );\n highlightSeries(series);\n highlightPoint({ x: closestX, y: closestY, color, datum, series });\n } else {\n highlightSeries(null);\n highlightPoint(null);\n }\n }\n };\n\n const onGroupMouseMove = (event: React.MouseEvent<SVGElement, MouseEvent>) => {\n const svgRect = (event.target as SVGElement).getBoundingClientRect();\n const offsetX = event.clientX - svgRect.left;\n const offsetY = event.clientY - svgRect.top;\n\n // If hovering over some group - highlight it.\n for (let groupIndex = 0; groupIndex < barGroups.length; groupIndex++) {\n const {\n position: { x, y, width, height },\n } = barGroups[groupIndex];\n\n if (x <= offsetX && offsetX <= x + width && y <= offsetY && offsetY <= y + height) {\n highlightGroup(groupIndex);\n return;\n }\n }\n // Otherwise - clear the highlight.\n clearHighlightedSeries();\n };\n\n const onSVGMouseMove = (event: React.MouseEvent<SVGElement, MouseEvent>) => {\n if (event.target === plotRef.current!.svg && !isHandlersDisabled) {\n if (isGroupNavigation) {\n onGroupMouseMove(event);\n } else if (scaledSeries.length > 0) {\n onSeriesMouseMove(event);\n }\n }\n };\n\n const onSVGMouseOut = (event: React.MouseEvent<SVGElement, MouseEvent>) => {\n if (isHandlersDisabled) {\n return;\n }\n if (\n !nodeContains(plotRef.current!.svg, event.relatedTarget as Element) ||\n // `classList` is not supported on IE11 for SVG elements\n ((event.relatedTarget && (event.relatedTarget as Element).getAttribute('class')) || '')\n .split(' ')\n .indexOf(styles.series) > -1\n ) {\n setVerticalMarkerLeft(null);\n clearHighlightedSeries();\n }\n };\n\n return { verticalMarkerLeft, onSVGMouseMove, onSVGMouseOut };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-navigation.d.ts","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-navigation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,oBAAY,kBAAkB,CAAC,CAAC,SAAS,cAAc,IAAI,IAAI,CAC7D,mBAAmB,CAAC,CAAC,CAAC,EACtB,mBAAmB,GAAG,QAAQ,GAAG,eAAe,CACjD,GAAG;IACF,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,EAAE,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3D,kBAAkB,EAAE,OAAO,CAAC;IAE5B,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5E,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACnD,sBAAsB,IAAI,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,EAAE,EACtD,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,EACT,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,GACf,EAAE,kBAAkB,CAAC,CAAC,CAAC;;;uBAwLZ,mBAAmB;EA+B9B"}
1
+ {"version":3,"file":"use-navigation.d.ts","sourceRoot":"","sources":["../../../../src/mixed-line-bar-chart/hooks/use-navigation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,oBAAY,kBAAkB,CAAC,CAAC,SAAS,cAAc,IAAI,IAAI,CAC7D,mBAAmB,CAAC,CAAC,CAAC,EACtB,mBAAmB,GAAG,QAAQ,GAAG,eAAe,CACjD,GAAG;IACF,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACxC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,EAAE,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3D,kBAAkB,EAAE,OAAO,CAAC;IAE5B,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5E,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACnD,sBAAsB,IAAI,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,SAAS,cAAc,EAAE,EACtD,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,EACT,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,GACf,EAAE,kBAAkB,CAAC,CAAC,CAAC;;;uBAqKZ,mBAAmB;EA+B9B"}
@@ -3,7 +3,7 @@ import { __assign } from "tslib";
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import { useCallback, useMemo, useState } from 'react';
5
5
  import { KeyCode } from '../../internal/keycode';
6
- import { findNavigableSeries, nextValidDomainIndex } from '../utils';
6
+ import { findNavigableSeries, isXThreshold, isYThreshold, nextValidDomainIndex } from '../utils';
7
7
  export function useNavigation(_a) {
8
8
  var series = _a.series, visibleSeries = _a.visibleSeries, scaledSeries = _a.scaledSeries, barGroups = _a.barGroups, xScale = _a.xScale, yScale = _a.yScale, highlightedPoint = _a.highlightedPoint, highlightedGroupIndex = _a.highlightedGroupIndex, highlightedSeries = _a.highlightedSeries, legendSeries = _a.legendSeries, isHandlersDisabled = _a.isHandlersDisabled, pinPopover = _a.pinPopover, highlightSeries = _a.highlightSeries, highlightGroup = _a.highlightGroup, highlightPoint = _a.highlightPoint;
9
9
  var _b = useState(null), targetX = _b[0], setTargetX = _b[1];
@@ -44,7 +44,7 @@ export function useNavigation(_a) {
44
44
  }
45
45
  };
46
46
  var moveBetweenSeries = useCallback(function (direction) {
47
- var _a, _b, _c;
47
+ var _a, _b, _c, _d;
48
48
  if (isGroupNavigation) {
49
49
  return;
50
50
  }
@@ -77,21 +77,12 @@ export function useNavigation(_a) {
77
77
  targetXPoint = 0;
78
78
  }
79
79
  if (nextSeries.type === 'line') {
80
- var nextSeriesData = nextSeries.data;
81
- var lookingForScaled_1 = targetXPoint; // scaled X in previous series
82
- var nextPoint = nextSeriesData
83
- // scale all points in series
84
- .map(function (d) { return ({
85
- x: (xScale.d3Scale(d.x) || 0) + xOffset,
86
- y: yScale.d3Scale(d.y) || 0,
87
- datum: d
88
- }); })
89
- // find the closest point to previous X
90
- .reduce(function (prev, curr) { return (Math.abs(curr.x - lookingForScaled_1) < Math.abs(prev.x - lookingForScaled_1) ? curr : prev); }, { x: -Infinity, y: -Infinity });
80
+ var nextScaledSeries = scaledSeries.filter(function (it) { return it.series === nextSeries; });
81
+ var closestNextSeriesPoint = nextScaledSeries.reduce(function (prev, curr) { return (Math.abs(curr.x - targetXPoint) < Math.abs(prev.x - targetXPoint) ? curr : prev); }, { x: -Infinity, y: -Infinity });
91
82
  highlightSeries(nextSeries);
92
- highlightPoint(__assign(__assign({}, nextPoint), { color: nextInternalSeries.color, series: nextSeries }));
83
+ highlightPoint(__assign(__assign({}, closestNextSeriesPoint), { color: nextInternalSeries.color, series: nextSeries }));
93
84
  }
94
- else if (nextSeries.type === 'threshold') {
85
+ else if (isYThreshold(nextSeries)) {
95
86
  var scaledTargetIndex = scaledSeries.map(function (it) { var _a; return ((_a = it.datum) === null || _a === void 0 ? void 0 : _a.x) || null; }).indexOf(targetX);
96
87
  highlightSeries(nextSeries);
97
88
  highlightPoint({
@@ -102,6 +93,16 @@ export function useNavigation(_a) {
102
93
  datum: (_c = scaledSeries[scaledTargetIndex]) === null || _c === void 0 ? void 0 : _c.datum
103
94
  });
104
95
  }
96
+ else if (isXThreshold(nextSeries)) {
97
+ highlightSeries(nextSeries);
98
+ highlightPoint({
99
+ x: (_d = xScale.d3Scale(nextSeries.x)) !== null && _d !== void 0 ? _d : NaN,
100
+ y: yScale.d3Scale.range()[0],
101
+ color: nextInternalSeries.color,
102
+ series: nextSeries,
103
+ datum: { x: nextSeries.x, y: NaN }
104
+ });
105
+ }
105
106
  }, [
106
107
  isGroupNavigation,
107
108
  xScale,
@@ -118,27 +119,14 @@ export function useNavigation(_a) {
118
119
  var _a;
119
120
  var series = highlightedSeries || visibleSeries[0].series;
120
121
  var previousPoint = highlightedPoint || scaledSeries[0];
121
- if (series.type === 'line') {
122
- // find previous point in series
123
- var indexOfPreviousPoint = (previousPoint === null || previousPoint === void 0 ? void 0 : previousPoint.datum)
124
- ? series.data.indexOf(previousPoint.datum)
125
- : 0;
126
- var nextPointIndex = circleIndex(indexOfPreviousPoint + direction, [0, series.data.length - 1]);
127
- var nextPoint_1 = series.data[nextPointIndex];
128
- // find scaled next point
129
- var nextPointScaled = scaledSeries.filter(function (s) { return s.datum === nextPoint_1; })[0] || null;
130
- setTargetX(nextPoint_1.x);
131
- highlightSeries(series);
132
- highlightPoint(nextPointScaled);
133
- }
134
- else if (series.type === 'threshold') {
135
- var scaledThresholdSeries = scaledSeries.filter(function (it) { return it.series === series; })[0];
136
- var scaledDataSeries = scaledSeries.filter(function (it) { return it.datum; });
137
- var indexOfPreviousPoint = scaledDataSeries.map(function (it) { return it.x; }).indexOf(previousPoint.x);
138
- var nextPointIndex = circleIndex(indexOfPreviousPoint + direction, [0, scaledDataSeries.length - 1]);
139
- setTargetX(((_a = scaledDataSeries[nextPointIndex].datum) === null || _a === void 0 ? void 0 : _a.x) || null);
122
+ if (series.type === 'line' || isYThreshold(series)) {
123
+ var targetScaledSeries = scaledSeries.filter(function (it) { return it.series === series; });
124
+ var indexOfPreviousPoint = targetScaledSeries.map(function (it) { return it.x; }).indexOf(previousPoint.x);
125
+ var nextPointIndex = circleIndex(indexOfPreviousPoint + direction, [0, targetScaledSeries.length - 1]);
126
+ var nextPoint = targetScaledSeries[nextPointIndex];
127
+ setTargetX(((_a = nextPoint.datum) === null || _a === void 0 ? void 0 : _a.x) || null);
140
128
  highlightSeries(series);
141
- highlightPoint(__assign(__assign({}, scaledThresholdSeries), { datum: scaledDataSeries[nextPointIndex].datum, x: scaledDataSeries[nextPointIndex].x }));
129
+ highlightPoint(nextPoint);
142
130
  }
143
131
  else if (series.type === 'bar') {
144
132
  var xDomain = xScale.domain;