@cloudscape-design/chart-components 1.0.0

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 (246) hide show
  1. package/LICENSE +175 -0
  2. package/NOTICE +1 -0
  3. package/README.md +25 -0
  4. package/cartesian-chart/chart-cartesian-internal.d.ts +10 -0
  5. package/cartesian-chart/chart-cartesian-internal.js +99 -0
  6. package/cartesian-chart/chart-cartesian-internal.js.map +1 -0
  7. package/cartesian-chart/chart-series-cartesian.d.ts +7 -0
  8. package/cartesian-chart/chart-series-cartesian.js +95 -0
  9. package/cartesian-chart/chart-series-cartesian.js.map +1 -0
  10. package/cartesian-chart/index.d.ts +5 -0
  11. package/cartesian-chart/index.js +133 -0
  12. package/cartesian-chart/index.js.map +1 -0
  13. package/cartesian-chart/interfaces.d.ts +166 -0
  14. package/cartesian-chart/interfaces.js +4 -0
  15. package/cartesian-chart/interfaces.js.map +1 -0
  16. package/cartesian-chart/test-classes/styles.css.js +6 -0
  17. package/cartesian-chart/test-classes/styles.scoped.css +7 -0
  18. package/cartesian-chart/test-classes/styles.selectors.js +7 -0
  19. package/core/chart-api/chart-extra-axis-titles.d.ts +10 -0
  20. package/core/chart-api/chart-extra-axis-titles.js +42 -0
  21. package/core/chart-api/chart-extra-axis-titles.js.map +1 -0
  22. package/core/chart-api/chart-extra-context.d.ts +41 -0
  23. package/core/chart-api/chart-extra-context.js +93 -0
  24. package/core/chart-api/chart-extra-context.js.map +1 -0
  25. package/core/chart-api/chart-extra-highlight.d.ts +20 -0
  26. package/core/chart-api/chart-extra-highlight.js +205 -0
  27. package/core/chart-api/chart-extra-highlight.js.map +1 -0
  28. package/core/chart-api/chart-extra-legend.d.ts +27 -0
  29. package/core/chart-api/chart-extra-legend.js +118 -0
  30. package/core/chart-api/chart-extra-legend.js.map +1 -0
  31. package/core/chart-api/chart-extra-navigation.d.ts +84 -0
  32. package/core/chart-api/chart-extra-navigation.js +470 -0
  33. package/core/chart-api/chart-extra-navigation.js.map +1 -0
  34. package/core/chart-api/chart-extra-nodata.d.ts +15 -0
  35. package/core/chart-api/chart-extra-nodata.js +45 -0
  36. package/core/chart-api/chart-extra-nodata.js.map +1 -0
  37. package/core/chart-api/chart-extra-pointer.d.ts +33 -0
  38. package/core/chart-api/chart-extra-pointer.js +173 -0
  39. package/core/chart-api/chart-extra-pointer.js.map +1 -0
  40. package/core/chart-api/chart-extra-tooltip.d.ts +33 -0
  41. package/core/chart-api/chart-extra-tooltip.js +209 -0
  42. package/core/chart-api/chart-extra-tooltip.js.map +1 -0
  43. package/core/chart-api/index.d.ts +75 -0
  44. package/core/chart-api/index.js +383 -0
  45. package/core/chart-api/index.js.map +1 -0
  46. package/core/chart-container.d.ts +20 -0
  47. package/core/chart-container.js +55 -0
  48. package/core/chart-container.js.map +1 -0
  49. package/core/chart-core.d.ts +7 -0
  50. package/core/chart-core.js +287 -0
  51. package/core/chart-core.js.map +1 -0
  52. package/core/components/core-application.d.ts +6 -0
  53. package/core/components/core-application.js +16 -0
  54. package/core/components/core-application.js.map +1 -0
  55. package/core/components/core-filters.d.ts +9 -0
  56. package/core/components/core-filters.js +22 -0
  57. package/core/components/core-filters.js.map +1 -0
  58. package/core/components/core-legend.d.ts +13 -0
  59. package/core/components/core-legend.js +27 -0
  60. package/core/components/core-legend.js.map +1 -0
  61. package/core/components/core-no-data.d.ts +6 -0
  62. package/core/components/core-no-data.js +48 -0
  63. package/core/components/core-no-data.js.map +1 -0
  64. package/core/components/core-slots.d.ts +7 -0
  65. package/core/components/core-slots.js +11 -0
  66. package/core/components/core-slots.js.map +1 -0
  67. package/core/components/core-tooltip.d.ts +7 -0
  68. package/core/components/core-tooltip.js +183 -0
  69. package/core/components/core-tooltip.js.map +1 -0
  70. package/core/components/core-vertical-axis-title.d.ts +5 -0
  71. package/core/components/core-vertical-axis-title.js +15 -0
  72. package/core/components/core-vertical-axis-title.js.map +1 -0
  73. package/core/formatters.d.ts +2 -0
  74. package/core/formatters.js +113 -0
  75. package/core/formatters.js.map +1 -0
  76. package/core/i18n-utils.d.ts +21 -0
  77. package/core/i18n-utils.js +18 -0
  78. package/core/i18n-utils.js.map +1 -0
  79. package/core/interfaces.d.ts +436 -0
  80. package/core/interfaces.js +4 -0
  81. package/core/interfaces.js.map +1 -0
  82. package/core/styles.css.js +25 -0
  83. package/core/styles.scoped.css +115 -0
  84. package/core/styles.selectors.js +26 -0
  85. package/core/test-classes/styles.css.js +33 -0
  86. package/core/test-classes/styles.scoped.css +34 -0
  87. package/core/test-classes/styles.selectors.js +34 -0
  88. package/core/utils.d.ts +45 -0
  89. package/core/utils.js +262 -0
  90. package/core/utils.js.map +1 -0
  91. package/index.d.ts +4 -0
  92. package/index.js +5 -0
  93. package/index.js.map +1 -0
  94. package/internal/api-docs/components/cartesian-chart.js +571 -0
  95. package/internal/api-docs/components/index.d.ts +3 -0
  96. package/internal/api-docs/components/index.js +4 -0
  97. package/internal/api-docs/components/interfaces.d.ts +81 -0
  98. package/internal/api-docs/components/pie-chart.js +430 -0
  99. package/internal/api-docs/test-utils-doc/dom.js +4 -0
  100. package/internal/api-docs/test-utils-doc/selectors.js +4 -0
  101. package/internal/base-component/get-data-attributes.d.ts +1 -0
  102. package/internal/base-component/get-data-attributes.js +12 -0
  103. package/internal/base-component/get-data-attributes.js.map +1 -0
  104. package/internal/base-component/use-base-component.d.ts +13 -0
  105. package/internal/base-component/use-base-component.js +18 -0
  106. package/internal/base-component/use-base-component.js.map +1 -0
  107. package/internal/base-component/use-telemetry.d.ts +2 -0
  108. package/internal/base-component/use-telemetry.js +8 -0
  109. package/internal/base-component/use-telemetry.js.map +1 -0
  110. package/internal/chart-styles.d.ts +88 -0
  111. package/internal/chart-styles.js +145 -0
  112. package/internal/chart-styles.js.map +1 -0
  113. package/internal/components/chart-legend/index.d.ts +14 -0
  114. package/internal/components/chart-legend/index.js +245 -0
  115. package/internal/components/chart-legend/index.js.map +1 -0
  116. package/internal/components/chart-legend/styles.css.js +22 -0
  117. package/internal/components/chart-legend/styles.scoped.css +233 -0
  118. package/internal/components/chart-legend/styles.selectors.js +23 -0
  119. package/internal/components/chart-legend/test-classes/styles.css.js +11 -0
  120. package/internal/components/chart-legend/test-classes/styles.scoped.css +12 -0
  121. package/internal/components/chart-legend/test-classes/styles.selectors.js +12 -0
  122. package/internal/components/chart-series-filter/index.d.ts +17 -0
  123. package/internal/components/chart-series-filter/index.js +14 -0
  124. package/internal/components/chart-series-filter/index.js.map +1 -0
  125. package/internal/components/interfaces.d.ts +17 -0
  126. package/internal/components/interfaces.js +4 -0
  127. package/internal/components/interfaces.js.map +1 -0
  128. package/internal/components/series-details/index.d.ts +23 -0
  129. package/internal/components/series-details/index.js +45 -0
  130. package/internal/components/series-details/index.js.map +1 -0
  131. package/internal/components/series-details/styles.css.js +22 -0
  132. package/internal/components/series-details/styles.scoped.css +150 -0
  133. package/internal/components/series-details/styles.selectors.js +23 -0
  134. package/internal/components/series-details/test-classes/styles.css.js +10 -0
  135. package/internal/components/series-details/test-classes/styles.scoped.css +11 -0
  136. package/internal/components/series-details/test-classes/styles.selectors.js +11 -0
  137. package/internal/components/series-marker/index.d.ts +8 -0
  138. package/internal/components/series-marker/index.js +45 -0
  139. package/internal/components/series-marker/index.js.map +1 -0
  140. package/internal/components/series-marker/interfaces.d.ts +1 -0
  141. package/internal/components/series-marker/interfaces.js +4 -0
  142. package/internal/components/series-marker/interfaces.js.map +1 -0
  143. package/internal/components/series-marker/render-marker.d.ts +3 -0
  144. package/internal/components/series-marker/render-marker.js +74 -0
  145. package/internal/components/series-marker/render-marker.js.map +1 -0
  146. package/internal/components/series-marker/styles.css.js +7 -0
  147. package/internal/components/series-marker/styles.scoped.css +55 -0
  148. package/internal/components/series-marker/styles.selectors.js +8 -0
  149. package/internal/environment.d.ts +4 -0
  150. package/internal/environment.js +5 -0
  151. package/internal/environment.json +7 -0
  152. package/internal/events/index.d.ts +23 -0
  153. package/internal/events/index.js +41 -0
  154. package/internal/events/index.js.map +1 -0
  155. package/internal/generated/styles/tokens.d.ts +756 -0
  156. package/internal/generated/styles/tokens.js +756 -0
  157. package/internal/generated/theming/index.cjs +12584 -0
  158. package/internal/generated/theming/index.cjs.d.ts +2399 -0
  159. package/internal/generated/theming/index.d.ts +2399 -0
  160. package/internal/generated/theming/index.js +12584 -0
  161. package/internal/manifest.json +3 -0
  162. package/internal/styles.css.js +6 -0
  163. package/internal/styles.scoped.css +13 -0
  164. package/internal/styles.selectors.js +7 -0
  165. package/internal/utils/apply-display-name.d.ts +1 -0
  166. package/internal/utils/apply-display-name.js +6 -0
  167. package/internal/utils/apply-display-name.js.map +1 -0
  168. package/internal/utils/async-store.d.ts +19 -0
  169. package/internal/utils/async-store.js +58 -0
  170. package/internal/utils/async-store.js.map +1 -0
  171. package/internal/utils/chart-series.d.ts +8 -0
  172. package/internal/utils/chart-series.js +11 -0
  173. package/internal/utils/chart-series.js.map +1 -0
  174. package/internal/utils/renderer-utils.d.ts +17 -0
  175. package/internal/utils/renderer-utils.js +95 -0
  176. package/internal/utils/renderer-utils.js.map +1 -0
  177. package/internal/utils/series-data.d.ts +2 -0
  178. package/internal/utils/series-data.js +8 -0
  179. package/internal/utils/series-data.js.map +1 -0
  180. package/internal/utils/test-i18n-provider.d.ts +8 -0
  181. package/internal/utils/test-i18n-provider.js +8 -0
  182. package/internal/utils/test-i18n-provider.js.map +1 -0
  183. package/internal/utils/use-previous.d.ts +4 -0
  184. package/internal/utils/use-previous.js +14 -0
  185. package/internal/utils/use-previous.js.map +1 -0
  186. package/internal/utils/utils.d.ts +16 -0
  187. package/internal/utils/utils.js +49 -0
  188. package/internal/utils/utils.js.map +1 -0
  189. package/internal-do-not-use/core-chart/index.d.ts +4 -0
  190. package/internal-do-not-use/core-chart/index.js +13 -0
  191. package/internal-do-not-use/core-chart/index.js.map +1 -0
  192. package/internal-do-not-use/core-legend/index.d.ts +2 -0
  193. package/internal-do-not-use/core-legend/index.js +11 -0
  194. package/internal-do-not-use/core-legend/index.js.map +1 -0
  195. package/package.json +106 -0
  196. package/pie-chart/chart-inner-area.d.ts +10 -0
  197. package/pie-chart/chart-inner-area.js +63 -0
  198. package/pie-chart/chart-inner-area.js.map +1 -0
  199. package/pie-chart/chart-pie-internal.d.ts +11 -0
  200. package/pie-chart/chart-pie-internal.js +103 -0
  201. package/pie-chart/chart-pie-internal.js.map +1 -0
  202. package/pie-chart/index.d.ts +5 -0
  203. package/pie-chart/index.js +48 -0
  204. package/pie-chart/index.js.map +1 -0
  205. package/pie-chart/interfaces.d.ts +101 -0
  206. package/pie-chart/interfaces.js +4 -0
  207. package/pie-chart/interfaces.js.map +1 -0
  208. package/pie-chart/test-classes/styles.css.js +8 -0
  209. package/pie-chart/test-classes/styles.scoped.css +9 -0
  210. package/pie-chart/test-classes/styles.selectors.js +9 -0
  211. package/test-utils/dom/cartesian-chart/index.d.ts +14 -0
  212. package/test-utils/dom/cartesian-chart/index.js +24 -0
  213. package/test-utils/dom/cartesian-chart/index.js.map +1 -0
  214. package/test-utils/dom/cartesian-chart/tooltip.d.ts +28 -0
  215. package/test-utils/dom/cartesian-chart/tooltip.js +48 -0
  216. package/test-utils/dom/cartesian-chart/tooltip.js.map +1 -0
  217. package/test-utils/dom/index.d.ts +46 -0
  218. package/test-utils/dom/index.js +35 -0
  219. package/test-utils/dom/index.js.map +1 -0
  220. package/test-utils/dom/internal/base.d.ts +93 -0
  221. package/test-utils/dom/internal/base.js +146 -0
  222. package/test-utils/dom/internal/base.js.map +1 -0
  223. package/test-utils/dom/internal/core.d.ts +14 -0
  224. package/test-utils/dom/internal/core.js +37 -0
  225. package/test-utils/dom/internal/core.js.map +1 -0
  226. package/test-utils/dom/pie-chart/index.d.ts +17 -0
  227. package/test-utils/dom/pie-chart/index.js +29 -0
  228. package/test-utils/dom/pie-chart/index.js.map +1 -0
  229. package/test-utils/selectors/cartesian-chart/index.d.ts +14 -0
  230. package/test-utils/selectors/cartesian-chart/index.js +24 -0
  231. package/test-utils/selectors/cartesian-chart/index.js.map +1 -0
  232. package/test-utils/selectors/cartesian-chart/tooltip.d.ts +28 -0
  233. package/test-utils/selectors/cartesian-chart/tooltip.js +48 -0
  234. package/test-utils/selectors/cartesian-chart/tooltip.js.map +1 -0
  235. package/test-utils/selectors/index.d.ts +46 -0
  236. package/test-utils/selectors/index.js +32 -0
  237. package/test-utils/selectors/index.js.map +1 -0
  238. package/test-utils/selectors/internal/base.d.ts +93 -0
  239. package/test-utils/selectors/internal/base.js +146 -0
  240. package/test-utils/selectors/internal/base.js.map +1 -0
  241. package/test-utils/selectors/internal/core.d.ts +14 -0
  242. package/test-utils/selectors/internal/core.js +37 -0
  243. package/test-utils/selectors/internal/core.js.map +1 -0
  244. package/test-utils/selectors/pie-chart/index.d.ts +17 -0
  245. package/test-utils/selectors/pie-chart/index.js +29 -0
  246. package/test-utils/selectors/pie-chart/index.js.map +1 -0
@@ -0,0 +1,287 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import { useRef } from "react";
5
+ import clsx from "clsx";
6
+ import HighchartsReact from "highcharts-react-official";
7
+ import { getIsRtl, useMergeRefs, useUniqueId } from "@cloudscape-design/component-toolkit/internal";
8
+ import { isDevelopment } from "@cloudscape-design/component-toolkit/internal";
9
+ import Spinner from "@cloudscape-design/components/spinner";
10
+ import { getDataAttributes } from "../internal/base-component/get-data-attributes";
11
+ import * as Styles from "../internal/chart-styles";
12
+ import { castArray } from "../internal/utils/utils";
13
+ import { useChartAPI } from "./chart-api";
14
+ import { ChartContainer } from "./chart-container";
15
+ import { ChartApplication } from "./components/core-application";
16
+ import { ChartFilters } from "./components/core-filters";
17
+ import { ChartLegend } from "./components/core-legend";
18
+ import { ChartNoData } from "./components/core-no-data";
19
+ import { ChartFooter, ChartHeader } from "./components/core-slots";
20
+ import { ChartTooltip } from "./components/core-tooltip";
21
+ import { VerticalAxisTitle } from "./components/core-vertical-axis-title";
22
+ import { getFormatter } from "./formatters";
23
+ import { useChartI18n } from "./i18n-utils";
24
+ import { getPointAccessibleDescription, hasVisibleLegendItems } from "./utils";
25
+ import styles from "./styles.css.js";
26
+ import testClasses from "./test-classes/styles.css.js";
27
+ /**
28
+ * CoreChart is the core internal abstraction that accepts the entire set of Highcharts options along
29
+ * with Cloudscape props to define custom tooltip, no-data, formatters, items visibility, and more.
30
+ */
31
+ export function InternalCoreChart({ options, ariaLabel, ariaDescription, fitHeight, chartHeight, chartMinHeight, chartMinWidth, tooltip: tooltipOptions, noData: noDataOptions, navigator, legend: legendOptions, fallback = _jsx(Spinner, {}), callback, emphasizeBaseline = true, verticalAxisTitlePlacement = "side", i18nStrings, className, header, footer, filter, keyboardNavigation = true, onHighlight, onLegendItemHighlight, onClearHighlight, onVisibleItemsChange, visibleItems, __internalRootRef, ...rest }) {
32
+ var _a, _b;
33
+ const highcharts = rest.highcharts;
34
+ const labels = useChartI18n({ ariaLabel, ariaDescription, i18nStrings });
35
+ const context = {
36
+ chartId: useUniqueId(),
37
+ noDataEnabled: !!noDataOptions,
38
+ legendEnabled: (legendOptions === null || legendOptions === void 0 ? void 0 : legendOptions.enabled) !== false,
39
+ tooltipEnabled: (tooltipOptions === null || tooltipOptions === void 0 ? void 0 : tooltipOptions.enabled) !== false,
40
+ keyboardNavigationEnabled: keyboardNavigation,
41
+ labels,
42
+ };
43
+ const handlers = { onHighlight, onClearHighlight, onVisibleItemsChange };
44
+ const state = { visibleItems };
45
+ const api = useChartAPI(context, handlers, state);
46
+ const rootClassName = clsx(testClasses.root, styles.root, fitHeight && styles["root-fit-height"], className);
47
+ const rootRef = useRef(null);
48
+ const mergedRootRef = useMergeRefs(rootRef, __internalRootRef);
49
+ const rootProps = { ref: mergedRootRef, className: rootClassName, ...getDataAttributes(rest) };
50
+ const legendPosition = (_a = legendOptions === null || legendOptions === void 0 ? void 0 : legendOptions.position) !== null && _a !== void 0 ? _a : "bottom";
51
+ const containerProps = {
52
+ fitHeight,
53
+ chartHeight,
54
+ chartMinHeight,
55
+ chartMinWidth,
56
+ legendPosition,
57
+ verticalAxisTitlePlacement,
58
+ legendBottomMaxHeight: legendOptions === null || legendOptions === void 0 ? void 0 : legendOptions.bottomMaxHeight,
59
+ };
60
+ // Render fallback using the same root and container props as for the chart to ensure consistent
61
+ // size, test classes, and data-attributes assignment.
62
+ if (!highcharts) {
63
+ return (_jsx("div", { ...rootProps, children: _jsx(ChartContainer, { ...containerProps, chart: (minHeight) => (_jsx("div", { className: testClasses.fallback, style: { minHeight }, children: fallback })) }) }));
64
+ }
65
+ const apiOptions = api.getOptions();
66
+ const inverted = !!((_b = options.chart) === null || _b === void 0 ? void 0 : _b.inverted);
67
+ const isRtl = () => getIsRtl(rootRef === null || rootRef === void 0 ? void 0 : rootRef.current);
68
+ return (_jsxs("div", { ...rootProps, children: [_jsx(ChartContainer, { ...containerProps, chart: (height) => {
69
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17;
70
+ // The Highcharts options takes all provided Highcharts options and custom properties and merges them together, so that
71
+ // the Cloudscape features and custom Highcharts extensions co-exist.
72
+ // For certain options we provide Cloudscape styling, but in all cases this can be explicitly overridden.
73
+ const highchartsOptions = {
74
+ ...options,
75
+ // Hide credits by default.
76
+ credits: (_a = options.credits) !== null && _a !== void 0 ? _a : { enabled: false },
77
+ // Hide chart title by default.
78
+ title: (_b = options.title) !== null && _b !== void 0 ? _b : { text: "" },
79
+ // Use Cloudscape color palette by default.
80
+ // This cannot be reset to Highcharts' default from the outside, but it is possible to provide custom palette.
81
+ colors: (_c = options.colors) !== null && _c !== void 0 ? _c : Styles.colors,
82
+ chart: {
83
+ // Animations are disabled by default.
84
+ // This is done for UX and a11y reasons as Highcharts animations do not match our animation timings, and do
85
+ // not respect disabled motion settings. These issues can likely be resolved or we can provide custom animations
86
+ // instead, but this is not a priority.
87
+ animation: false,
88
+ ...Styles.chart,
89
+ ...options.chart,
90
+ className: clsx(testClasses["chart-plot"], (_d = options.chart) === null || _d === void 0 ? void 0 : _d.className),
91
+ // Use height computed from chartHeight, chartMinHeight, and fitHeight settings by default.
92
+ // It is possible to override it by explicitly providing chart.height, but this will not be
93
+ // compatible with any of the above settings.
94
+ height: (_f = (_e = options.chart) === null || _e === void 0 ? void 0 : _e.height) !== null && _f !== void 0 ? _f : height,
95
+ // The debug errors are enabled by default in development mode, but this only works
96
+ // if the Highcharts debugger module is loaded.
97
+ displayErrors: (_h = (_g = options.chart) === null || _g === void 0 ? void 0 : _g.displayErrors) !== null && _h !== void 0 ? _h : isDevelopment,
98
+ style: { ...Styles.chartPlotCss, ...(_j = options.chart) === null || _j === void 0 ? void 0 : _j.style },
99
+ // We override certain chart events to inject additional behaviors, but it is still possible to define
100
+ // custom callbacks. The Cloudscape behaviors can be disabled or altered via components API. For instance,
101
+ // if no-data props are not provided - the related on-render computations will be skipped.
102
+ events: {
103
+ ...(_k = options.chart) === null || _k === void 0 ? void 0 : _k.events,
104
+ load(event) {
105
+ var _a, _b, _c;
106
+ apiOptions.onChartLoad.call(this, event);
107
+ return (_c = (_b = (_a = options.chart) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.load) === null || _c === void 0 ? void 0 : _c.call(this, event);
108
+ },
109
+ render(event) {
110
+ var _a, _b, _c;
111
+ apiOptions.onChartRender.call(this, event);
112
+ return (_c = (_b = (_a = options.chart) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.render) === null || _c === void 0 ? void 0 : _c.call(this, event);
113
+ },
114
+ click(event) {
115
+ var _a, _b, _c;
116
+ apiOptions.onChartClick.call(this, event);
117
+ return (_c = (_b = (_a = options.chart) === null || _a === void 0 ? void 0 : _a.events) === null || _b === void 0 ? void 0 : _b.click) === null || _c === void 0 ? void 0 : _c.call(this, event);
118
+ },
119
+ },
120
+ },
121
+ series: options.series,
122
+ // Highcharts legend is disabled by default in favour of the custom Cloudscape legend.
123
+ legend: (_l = options.legend) !== null && _l !== void 0 ? _l : { enabled: false },
124
+ lang: {
125
+ ...options.lang,
126
+ accessibility: {
127
+ // The default chart title is disabled by default to prevent the default "Chart" in the screen-reader detail.
128
+ defaultChartTitle: "",
129
+ chartContainerLabel: labels.chartLabel,
130
+ svgContainerLabel: labels.chartContainerLabel,
131
+ // We used {names[0]} to inject the axis title, see: https://api.highcharts.com/highcharts/lang.accessibility.axis.xAxisDescriptionSingular.
132
+ axis: {
133
+ xAxisDescriptionSingular: labels.chartXAxisLabel
134
+ ? `${labels.chartXAxisLabel}, {names[0]}`
135
+ : undefined,
136
+ yAxisDescriptionSingular: labels.chartYAxisLabel
137
+ ? `${labels.chartYAxisLabel}, {names[0]}`
138
+ : undefined,
139
+ },
140
+ ...(_m = options.lang) === null || _m === void 0 ? void 0 : _m.accessibility,
141
+ },
142
+ },
143
+ accessibility: {
144
+ description: labels.chartDescription,
145
+ screenReaderSection: {
146
+ // We use custom before-message to remove detail that are currently not supported with our i18n.
147
+ // See: https://api.highcharts.com/highcharts/accessibility.screenReaderSection.beforeChartFormat.
148
+ beforeChartFormat: "<div>{xAxisDescription}</div><div>{yAxisDescription}</div>",
149
+ // We hide after message as it is currently not supported with our i18n.
150
+ afterChartFormat: "",
151
+ },
152
+ ...options.accessibility,
153
+ // Highcharts keyboard navigation is disabled by default in favour of the custom Cloudscape navigation.
154
+ keyboardNavigation: (_p = (_o = options.accessibility) === null || _o === void 0 ? void 0 : _o.keyboardNavigation) !== null && _p !== void 0 ? _p : { enabled: !keyboardNavigation },
155
+ point: {
156
+ // Point description formatter is overridden to respect custom axes value formatters.
157
+ descriptionFormatter: (point) => getPointAccessibleDescription(point, labels),
158
+ ...(_q = options.accessibility) === null || _q === void 0 ? void 0 : _q.point,
159
+ },
160
+ },
161
+ plotOptions: {
162
+ ...options.plotOptions,
163
+ series: {
164
+ // Animations are disabled by default, same as in the options.chart.
165
+ animation: false,
166
+ // Sticky tracking is disabled by default due to sub-optimal UX in dense charts.
167
+ stickyTracking: false,
168
+ borderColor: Styles.seriesBorderColor,
169
+ ...(_r = options.plotOptions) === null || _r === void 0 ? void 0 : _r.series,
170
+ dataLabels: { style: Styles.seriesDataLabelsCss, ...(_t = (_s = options.plotOptions) === null || _s === void 0 ? void 0 : _s.series) === null || _t === void 0 ? void 0 : _t.dataLabels },
171
+ states: {
172
+ ...(_v = (_u = options.plotOptions) === null || _u === void 0 ? void 0 : _u.series) === null || _v === void 0 ? void 0 : _v.states,
173
+ inactive: { opacity: Styles.seriesOpacityInactive, ...(_y = (_x = (_w = options.plotOptions) === null || _w === void 0 ? void 0 : _w.series) === null || _x === void 0 ? void 0 : _x.states) === null || _y === void 0 ? void 0 : _y.inactive },
174
+ },
175
+ // We override certain point events to inject additional behaviors, but it is still possible to define
176
+ // custom callbacks. The Cloudscape behaviors can be disabled or altered via components API.
177
+ point: {
178
+ ...(_0 = (_z = options.plotOptions) === null || _z === void 0 ? void 0 : _z.series) === null || _0 === void 0 ? void 0 : _0.point,
179
+ events: {
180
+ ...(_3 = (_2 = (_1 = options.plotOptions) === null || _1 === void 0 ? void 0 : _1.series) === null || _2 === void 0 ? void 0 : _2.point) === null || _3 === void 0 ? void 0 : _3.events,
181
+ mouseOver(event) {
182
+ var _a, _b, _c, _d, _e;
183
+ apiOptions.onSeriesPointMouseOver.call(this, event);
184
+ return (_e = (_d = (_c = (_b = (_a = options.plotOptions) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b.point) === null || _c === void 0 ? void 0 : _c.events) === null || _d === void 0 ? void 0 : _d.mouseOver) === null || _e === void 0 ? void 0 : _e.call(this, event);
185
+ },
186
+ mouseOut(event) {
187
+ var _a, _b, _c, _d, _e;
188
+ apiOptions.onSeriesPointMouseOut.call(this, event);
189
+ return (_e = (_d = (_c = (_b = (_a = options.plotOptions) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b.point) === null || _c === void 0 ? void 0 : _c.events) === null || _d === void 0 ? void 0 : _d.mouseOut) === null || _e === void 0 ? void 0 : _e.call(this, event);
190
+ },
191
+ click(event) {
192
+ var _a, _b, _c, _d, _e;
193
+ apiOptions.onSeriesPointClick.call(this, event);
194
+ return (_e = (_d = (_c = (_b = (_a = options.plotOptions) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b.point) === null || _c === void 0 ? void 0 : _c.events) === null || _d === void 0 ? void 0 : _d.click) === null || _e === void 0 ? void 0 : _e.call(this, event);
195
+ },
196
+ },
197
+ },
198
+ },
199
+ area: { ...Styles.areaSeries, ...(_4 = options.plotOptions) === null || _4 === void 0 ? void 0 : _4.area },
200
+ areaspline: { ...Styles.areaSeries, ...(_5 = options.plotOptions) === null || _5 === void 0 ? void 0 : _5.areaspline },
201
+ arearange: { ...Styles.areaSeries, ...(_6 = options.plotOptions) === null || _6 === void 0 ? void 0 : _6.arearange },
202
+ areasplinerange: { ...Styles.areaSeries, ...(_7 = options.plotOptions) === null || _7 === void 0 ? void 0 : _7.areasplinerange },
203
+ line: { ...Styles.lineSeries, ...(_8 = options.plotOptions) === null || _8 === void 0 ? void 0 : _8.line },
204
+ spline: { ...Styles.lineSeries, ...(_9 = options.plotOptions) === null || _9 === void 0 ? void 0 : _9.spline },
205
+ column: { ...Styles.columnSeries, ...(_10 = options.plotOptions) === null || _10 === void 0 ? void 0 : _10.column },
206
+ errorbar: { ...Styles.errorbarSeries, ...(_11 = options.plotOptions) === null || _11 === void 0 ? void 0 : _11.errorbar },
207
+ // Pie chart is shown in legend by default, that is required for standalone pie charts.
208
+ pie: {
209
+ showInLegend: true,
210
+ ...Styles.pieSeries,
211
+ ...(_12 = options.plotOptions) === null || _12 === void 0 ? void 0 : _12.pie,
212
+ dataLabels: { ...Styles.pieSeriesDataLabels, ...(_14 = (_13 = options.plotOptions) === null || _13 === void 0 ? void 0 : _13.pie) === null || _14 === void 0 ? void 0 : _14.dataLabels },
213
+ },
214
+ },
215
+ xAxis: (_15 = castArray(options.xAxis)) === null || _15 === void 0 ? void 0 : _15.map((xAxisOptions) => {
216
+ var _a, _b;
217
+ return ({
218
+ ...Styles.xAxisOptions,
219
+ ...xAxisOptions,
220
+ // Depending on the chart.inverted the x-axis can be rendered as vertical, and needs to respect page direction.
221
+ reversed: !inverted && isRtl() ? !xAxisOptions.reversed : xAxisOptions.reversed,
222
+ opposite: inverted && isRtl() ? !xAxisOptions.opposite : xAxisOptions.opposite,
223
+ className: xAxisClassName(inverted, xAxisOptions.className),
224
+ title: axisTitle((_a = xAxisOptions.title) !== null && _a !== void 0 ? _a : {}, !inverted || verticalAxisTitlePlacement === "side"),
225
+ labels: axisLabels((_b = xAxisOptions.labels) !== null && _b !== void 0 ? _b : {}),
226
+ });
227
+ }),
228
+ yAxis: (_16 = castArray(options.yAxis)) === null || _16 === void 0 ? void 0 : _16.map((yAxisOptions) => {
229
+ var _a, _b, _c;
230
+ return ({
231
+ ...Styles.yAxisOptions,
232
+ ...yAxisOptions,
233
+ // Depending on the chart.inverted the y-axis can be rendered as vertical, and needs to respect page direction.
234
+ reversed: inverted && isRtl() ? !yAxisOptions.reversed : yAxisOptions.reversed,
235
+ opposite: !inverted && isRtl() ? !yAxisOptions.opposite : yAxisOptions.opposite,
236
+ className: yAxisClassName(inverted, yAxisOptions.className),
237
+ title: axisTitle((_a = yAxisOptions.title) !== null && _a !== void 0 ? _a : {}, inverted || verticalAxisTitlePlacement === "side"),
238
+ labels: axisLabels((_b = yAxisOptions.labels) !== null && _b !== void 0 ? _b : {}),
239
+ plotLines: yAxisPlotLines(yAxisOptions.plotLines, emphasizeBaseline),
240
+ // We use reversed stack by default so that the order of points in the tooltip and series in the legend
241
+ // correspond the order of stacks.
242
+ reversedStacks: (_c = yAxisOptions.reversedStacks) !== null && _c !== void 0 ? _c : true,
243
+ });
244
+ }),
245
+ // We don't use Highcharts tooltip, but certain tooltip options such as tooltip.snap or tooltip.shared
246
+ // affect the hovering behavior of Highcharts. That is only the case when the tooltip is not disabled,
247
+ // so we render it, but hide with styles.
248
+ tooltip: (_17 = options.tooltip) !== null && _17 !== void 0 ? _17 : { enabled: true, snap: Styles.tooltipSnap, style: { opacity: 0 } },
249
+ };
250
+ return (_jsxs(_Fragment, { children: [_jsx(ChartApplication, { api: api, keyboardNavigation: keyboardNavigation, ariaLabel: ariaLabel }), _jsx(HighchartsReact, { highcharts: highcharts, options: highchartsOptions, callback: (chart) => callback === null || callback === void 0 ? void 0 : callback({ chart, highcharts: highcharts, ...api.publicApi }) })] }));
251
+ }, navigator: navigator, legend: context.legendEnabled && hasVisibleLegendItems(options) ? (_jsx(ChartLegend, { ...legendOptions, position: legendPosition, api: api, i18nStrings: i18nStrings, onItemHighlight: onLegendItemHighlight, getLegendTooltipContent: rest.getLegendTooltipContent })) : null, verticalAxisTitle: verticalAxisTitlePlacement === "top" ? _jsx(VerticalAxisTitle, { api: api, inverted: !!inverted }) : null, header: (header === null || header === void 0 ? void 0 : header.content) ? _jsx(ChartHeader, { children: header.content }) : null, footer: (footer === null || footer === void 0 ? void 0 : footer.content) ? _jsx(ChartFooter, { children: footer.content }) : null, filter: (filter === null || filter === void 0 ? void 0 : filter.seriesFilter) || (filter === null || filter === void 0 ? void 0 : filter.additionalFilters) ? (_jsx(ChartFilters, { api: api, seriesFilter: filter === null || filter === void 0 ? void 0 : filter.seriesFilter, additionalFilters: filter === null || filter === void 0 ? void 0 : filter.additionalFilters, i18nStrings: i18nStrings })) : null, noData: context.noDataEnabled && _jsx(ChartNoData, { ...noDataOptions, i18nStrings: i18nStrings, api: api }) }), context.tooltipEnabled && (_jsx(ChartTooltip, { ...tooltipOptions, i18nStrings: i18nStrings, getTooltipContent: rest.getTooltipContent, api: api }))] }));
252
+ }
253
+ function xAxisClassName(inverted, customClassName) {
254
+ return clsx(testClasses["axis-x"], inverted ? testClasses["axis-vertical"] : testClasses["axis-horizontal"], customClassName);
255
+ }
256
+ function yAxisClassName(inverted, customClassName) {
257
+ return clsx(testClasses["axis-y"], inverted ? testClasses["axis-horizontal"] : testClasses["axis-vertical"], customClassName);
258
+ }
259
+ // When placing vertical axis title in the chart's top, the actual axis title rendered by Highcharts
260
+ // needs to be visually hidden (it is still accessible by screen-readers). We then set title's
261
+ // opacity to 0, and use reserveSpace=false, so that Highcharts stretches the plot area to all available
262
+ // container width.
263
+ function axisTitle(options, visible) {
264
+ return {
265
+ style: { ...Styles.axisTitleCss, opacity: visible ? undefined : 0 },
266
+ reserveSpace: visible ? undefined : false,
267
+ ...options,
268
+ };
269
+ }
270
+ // We use custom formatters instead of Highcharts defaults to ensure consistent formatting
271
+ // between axis ticks and tooltip contents.
272
+ function axisLabels(options) {
273
+ return {
274
+ style: Styles.axisLabelsCss,
275
+ formatter: function () {
276
+ const formattedValue = getFormatter(this.axis)(this.value);
277
+ return formattedValue.replace(/\n/g, "<br />");
278
+ },
279
+ ...options,
280
+ };
281
+ }
282
+ function yAxisPlotLines(plotLineOptions = [], emphasizeBaseline) {
283
+ return emphasizeBaseline
284
+ ? [{ value: 0, ...Styles.chatPlotBaseline, className: testClasses["emphasized-baseline"] }, ...plotLineOptions]
285
+ : plotLineOptions;
286
+ }
287
+ //# sourceMappingURL=chart-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-core.js","sourceRoot":"","sources":["../../../src/core/chart-core.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\n\nimport { useRef } from \"react\";\nimport clsx from \"clsx\";\nimport type Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\n\nimport { getIsRtl, useMergeRefs, useUniqueId } from \"@cloudscape-design/component-toolkit/internal\";\nimport { isDevelopment } from \"@cloudscape-design/component-toolkit/internal\";\nimport Spinner from \"@cloudscape-design/components/spinner\";\n\nimport { getDataAttributes } from \"../internal/base-component/get-data-attributes\";\nimport { InternalBaseComponentProps } from \"../internal/base-component/use-base-component\";\nimport * as Styles from \"../internal/chart-styles\";\nimport { castArray } from \"../internal/utils/utils\";\nimport { useChartAPI } from \"./chart-api\";\nimport { ChartContainer } from \"./chart-container\";\nimport { ChartApplication } from \"./components/core-application\";\nimport { ChartFilters } from \"./components/core-filters\";\nimport { ChartLegend } from \"./components/core-legend\";\nimport { ChartNoData } from \"./components/core-no-data\";\nimport { ChartFooter, ChartHeader } from \"./components/core-slots\";\nimport { ChartTooltip } from \"./components/core-tooltip\";\nimport { VerticalAxisTitle } from \"./components/core-vertical-axis-title\";\nimport { getFormatter } from \"./formatters\";\nimport { useChartI18n } from \"./i18n-utils\";\nimport { CoreChartProps } from \"./interfaces\";\nimport { getPointAccessibleDescription, hasVisibleLegendItems } from \"./utils\";\n\nimport styles from \"./styles.css.js\";\nimport testClasses from \"./test-classes/styles.css.js\";\n\n/**\n * CoreChart is the core internal abstraction that accepts the entire set of Highcharts options along\n * with Cloudscape props to define custom tooltip, no-data, formatters, items visibility, and more.\n */\nexport function InternalCoreChart({\n options,\n ariaLabel,\n ariaDescription,\n fitHeight,\n chartHeight,\n chartMinHeight,\n chartMinWidth,\n tooltip: tooltipOptions,\n noData: noDataOptions,\n navigator,\n legend: legendOptions,\n fallback = <Spinner />,\n callback,\n emphasizeBaseline = true,\n verticalAxisTitlePlacement = \"side\",\n i18nStrings,\n className,\n header,\n footer,\n filter,\n keyboardNavigation = true,\n onHighlight,\n onLegendItemHighlight,\n onClearHighlight,\n onVisibleItemsChange,\n visibleItems,\n __internalRootRef,\n ...rest\n}: CoreChartProps & InternalBaseComponentProps) {\n const highcharts = rest.highcharts as null | typeof Highcharts;\n const labels = useChartI18n({ ariaLabel, ariaDescription, i18nStrings });\n const context = {\n chartId: useUniqueId(),\n noDataEnabled: !!noDataOptions,\n legendEnabled: legendOptions?.enabled !== false,\n tooltipEnabled: tooltipOptions?.enabled !== false,\n keyboardNavigationEnabled: keyboardNavigation,\n labels,\n };\n const handlers = { onHighlight, onClearHighlight, onVisibleItemsChange };\n const state = { visibleItems };\n const api = useChartAPI(context, handlers, state);\n\n const rootClassName = clsx(testClasses.root, styles.root, fitHeight && styles[\"root-fit-height\"], className);\n const rootRef = useRef<HTMLDivElement>(null);\n const mergedRootRef = useMergeRefs(rootRef, __internalRootRef);\n const rootProps = { ref: mergedRootRef, className: rootClassName, ...getDataAttributes(rest) };\n const legendPosition = legendOptions?.position ?? \"bottom\";\n const containerProps = {\n fitHeight,\n chartHeight,\n chartMinHeight,\n chartMinWidth,\n legendPosition,\n verticalAxisTitlePlacement,\n legendBottomMaxHeight: legendOptions?.bottomMaxHeight,\n };\n\n // Render fallback using the same root and container props as for the chart to ensure consistent\n // size, test classes, and data-attributes assignment.\n if (!highcharts) {\n return (\n <div {...rootProps}>\n <ChartContainer\n {...containerProps}\n chart={(minHeight) => (\n <div className={testClasses.fallback} style={{ minHeight }}>\n {fallback}\n </div>\n )}\n />\n </div>\n );\n }\n\n const apiOptions = api.getOptions();\n const inverted = !!options.chart?.inverted;\n const isRtl = () => getIsRtl(rootRef?.current);\n return (\n <div {...rootProps}>\n <ChartContainer\n {...containerProps}\n chart={(height) => {\n // The Highcharts options takes all provided Highcharts options and custom properties and merges them together, so that\n // the Cloudscape features and custom Highcharts extensions co-exist.\n // For certain options we provide Cloudscape styling, but in all cases this can be explicitly overridden.\n const highchartsOptions: Highcharts.Options = {\n ...options,\n // Hide credits by default.\n credits: options.credits ?? { enabled: false },\n // Hide chart title by default.\n title: options.title ?? { text: \"\" },\n // Use Cloudscape color palette by default.\n // This cannot be reset to Highcharts' default from the outside, but it is possible to provide custom palette.\n colors: options.colors ?? Styles.colors,\n chart: {\n // Animations are disabled by default.\n // This is done for UX and a11y reasons as Highcharts animations do not match our animation timings, and do\n // not respect disabled motion settings. These issues can likely be resolved or we can provide custom animations\n // instead, but this is not a priority.\n animation: false,\n ...Styles.chart,\n ...options.chart,\n className: clsx(testClasses[\"chart-plot\"], options.chart?.className),\n // Use height computed from chartHeight, chartMinHeight, and fitHeight settings by default.\n // It is possible to override it by explicitly providing chart.height, but this will not be\n // compatible with any of the above settings.\n height: options.chart?.height ?? height,\n // The debug errors are enabled by default in development mode, but this only works\n // if the Highcharts debugger module is loaded.\n displayErrors: options.chart?.displayErrors ?? isDevelopment,\n style: { ...Styles.chartPlotCss, ...options.chart?.style },\n // We override certain chart events to inject additional behaviors, but it is still possible to define\n // custom callbacks. The Cloudscape behaviors can be disabled or altered via components API. For instance,\n // if no-data props are not provided - the related on-render computations will be skipped.\n events: {\n ...options.chart?.events,\n load(event) {\n apiOptions.onChartLoad.call(this, event);\n return options.chart?.events?.load?.call(this, event);\n },\n render(event) {\n apiOptions.onChartRender.call(this, event);\n return options.chart?.events?.render?.call(this, event);\n },\n click(event) {\n apiOptions.onChartClick.call(this, event);\n return options.chart?.events?.click?.call(this, event);\n },\n },\n },\n series: options.series,\n // Highcharts legend is disabled by default in favour of the custom Cloudscape legend.\n legend: options.legend ?? { enabled: false },\n lang: {\n ...options.lang,\n accessibility: {\n // The default chart title is disabled by default to prevent the default \"Chart\" in the screen-reader detail.\n defaultChartTitle: \"\",\n chartContainerLabel: labels.chartLabel,\n svgContainerLabel: labels.chartContainerLabel,\n // We used {names[0]} to inject the axis title, see: https://api.highcharts.com/highcharts/lang.accessibility.axis.xAxisDescriptionSingular.\n axis: {\n xAxisDescriptionSingular: labels.chartXAxisLabel\n ? `${labels.chartXAxisLabel}, {names[0]}`\n : undefined,\n yAxisDescriptionSingular: labels.chartYAxisLabel\n ? `${labels.chartYAxisLabel}, {names[0]}`\n : undefined,\n },\n ...options.lang?.accessibility,\n },\n },\n accessibility: {\n description: labels.chartDescription,\n screenReaderSection: {\n // We use custom before-message to remove detail that are currently not supported with our i18n.\n // See: https://api.highcharts.com/highcharts/accessibility.screenReaderSection.beforeChartFormat.\n beforeChartFormat: \"<div>{xAxisDescription}</div><div>{yAxisDescription}</div>\",\n // We hide after message as it is currently not supported with our i18n.\n afterChartFormat: \"\",\n },\n ...options.accessibility,\n // Highcharts keyboard navigation is disabled by default in favour of the custom Cloudscape navigation.\n keyboardNavigation: options.accessibility?.keyboardNavigation ?? { enabled: !keyboardNavigation },\n point: {\n // Point description formatter is overridden to respect custom axes value formatters.\n descriptionFormatter: (point) => getPointAccessibleDescription(point, labels),\n ...options.accessibility?.point,\n },\n },\n plotOptions: {\n ...options.plotOptions,\n series: {\n // Animations are disabled by default, same as in the options.chart.\n animation: false,\n // Sticky tracking is disabled by default due to sub-optimal UX in dense charts.\n stickyTracking: false,\n borderColor: Styles.seriesBorderColor,\n ...options.plotOptions?.series,\n dataLabels: { style: Styles.seriesDataLabelsCss, ...options.plotOptions?.series?.dataLabels },\n states: {\n ...options.plotOptions?.series?.states,\n inactive: { opacity: Styles.seriesOpacityInactive, ...options.plotOptions?.series?.states?.inactive },\n },\n // We override certain point events to inject additional behaviors, but it is still possible to define\n // custom callbacks. The Cloudscape behaviors can be disabled or altered via components API.\n point: {\n ...options.plotOptions?.series?.point,\n events: {\n ...options.plotOptions?.series?.point?.events,\n mouseOver(event) {\n apiOptions.onSeriesPointMouseOver.call(this, event);\n return options.plotOptions?.series?.point?.events?.mouseOver?.call(this, event);\n },\n mouseOut(event) {\n apiOptions.onSeriesPointMouseOut.call(this, event);\n return options.plotOptions?.series?.point?.events?.mouseOut?.call(this, event);\n },\n click(event) {\n apiOptions.onSeriesPointClick.call(this, event);\n return options.plotOptions?.series?.point?.events?.click?.call(this, event);\n },\n },\n },\n },\n area: { ...Styles.areaSeries, ...options.plotOptions?.area },\n areaspline: { ...Styles.areaSeries, ...options.plotOptions?.areaspline },\n arearange: { ...Styles.areaSeries, ...options.plotOptions?.arearange },\n areasplinerange: { ...Styles.areaSeries, ...options.plotOptions?.areasplinerange },\n line: { ...Styles.lineSeries, ...options.plotOptions?.line },\n spline: { ...Styles.lineSeries, ...options.plotOptions?.spline },\n column: { ...Styles.columnSeries, ...options.plotOptions?.column },\n errorbar: { ...Styles.errorbarSeries, ...options.plotOptions?.errorbar },\n // Pie chart is shown in legend by default, that is required for standalone pie charts.\n pie: {\n showInLegend: true,\n ...Styles.pieSeries,\n ...options.plotOptions?.pie,\n dataLabels: { ...Styles.pieSeriesDataLabels, ...options.plotOptions?.pie?.dataLabels },\n },\n },\n xAxis: castArray(options.xAxis)?.map((xAxisOptions) => ({\n ...Styles.xAxisOptions,\n ...xAxisOptions,\n // Depending on the chart.inverted the x-axis can be rendered as vertical, and needs to respect page direction.\n reversed: !inverted && isRtl() ? !xAxisOptions.reversed : xAxisOptions.reversed,\n opposite: inverted && isRtl() ? !xAxisOptions.opposite : xAxisOptions.opposite,\n className: xAxisClassName(inverted, xAxisOptions.className),\n title: axisTitle(xAxisOptions.title ?? {}, !inverted || verticalAxisTitlePlacement === \"side\"),\n labels: axisLabels(xAxisOptions.labels ?? {}),\n })),\n yAxis: castArray(options.yAxis)?.map((yAxisOptions) => ({\n ...Styles.yAxisOptions,\n ...yAxisOptions,\n // Depending on the chart.inverted the y-axis can be rendered as vertical, and needs to respect page direction.\n reversed: inverted && isRtl() ? !yAxisOptions.reversed : yAxisOptions.reversed,\n opposite: !inverted && isRtl() ? !yAxisOptions.opposite : yAxisOptions.opposite,\n className: yAxisClassName(inverted, yAxisOptions.className),\n title: axisTitle(yAxisOptions.title ?? {}, inverted || verticalAxisTitlePlacement === \"side\"),\n labels: axisLabels(yAxisOptions.labels ?? {}),\n plotLines: yAxisPlotLines(yAxisOptions.plotLines, emphasizeBaseline),\n // We use reversed stack by default so that the order of points in the tooltip and series in the legend\n // correspond the order of stacks.\n reversedStacks: yAxisOptions.reversedStacks ?? true,\n })),\n // We don't use Highcharts tooltip, but certain tooltip options such as tooltip.snap or tooltip.shared\n // affect the hovering behavior of Highcharts. That is only the case when the tooltip is not disabled,\n // so we render it, but hide with styles.\n tooltip: options.tooltip ?? { enabled: true, snap: Styles.tooltipSnap, style: { opacity: 0 } },\n };\n return (\n <>\n <ChartApplication api={api} keyboardNavigation={keyboardNavigation} ariaLabel={ariaLabel} />\n <HighchartsReact\n highcharts={highcharts}\n options={highchartsOptions}\n callback={(chart: Highcharts.Chart) =>\n callback?.({ chart, highcharts: highcharts as typeof Highcharts, ...api.publicApi })\n }\n />\n </>\n );\n }}\n navigator={navigator}\n legend={\n context.legendEnabled && hasVisibleLegendItems(options) ? (\n <ChartLegend\n {...legendOptions}\n position={legendPosition}\n api={api}\n i18nStrings={i18nStrings}\n onItemHighlight={onLegendItemHighlight}\n getLegendTooltipContent={rest.getLegendTooltipContent}\n />\n ) : null\n }\n verticalAxisTitle={\n verticalAxisTitlePlacement === \"top\" ? <VerticalAxisTitle api={api} inverted={!!inverted} /> : null\n }\n header={header?.content ? <ChartHeader>{header.content}</ChartHeader> : null}\n footer={footer?.content ? <ChartFooter>{footer.content}</ChartFooter> : null}\n filter={\n filter?.seriesFilter || filter?.additionalFilters ? (\n <ChartFilters\n api={api}\n seriesFilter={filter?.seriesFilter}\n additionalFilters={filter?.additionalFilters}\n i18nStrings={i18nStrings}\n />\n ) : null\n }\n noData={context.noDataEnabled && <ChartNoData {...noDataOptions} i18nStrings={i18nStrings} api={api} />}\n />\n\n {context.tooltipEnabled && (\n <ChartTooltip\n {...tooltipOptions}\n i18nStrings={i18nStrings}\n getTooltipContent={rest.getTooltipContent}\n api={api}\n />\n )}\n </div>\n );\n}\n\nfunction xAxisClassName(inverted: boolean, customClassName?: string) {\n return clsx(\n testClasses[\"axis-x\"],\n inverted ? testClasses[\"axis-vertical\"] : testClasses[\"axis-horizontal\"],\n customClassName,\n );\n}\n\nfunction yAxisClassName(inverted: boolean, customClassName?: string) {\n return clsx(\n testClasses[\"axis-y\"],\n inverted ? testClasses[\"axis-horizontal\"] : testClasses[\"axis-vertical\"],\n customClassName,\n );\n}\n\n// When placing vertical axis title in the chart's top, the actual axis title rendered by Highcharts\n// needs to be visually hidden (it is still accessible by screen-readers). We then set title's\n// opacity to 0, and use reserveSpace=false, so that Highcharts stretches the plot area to all available\n// container width.\nfunction axisTitle<O extends Highcharts.XAxisTitleOptions | Highcharts.YAxisTitleOptions>(\n options: O,\n visible: boolean,\n): O {\n return {\n style: { ...Styles.axisTitleCss, opacity: visible ? undefined : 0 },\n reserveSpace: visible ? undefined : false,\n ...options,\n };\n}\n\n// We use custom formatters instead of Highcharts defaults to ensure consistent formatting\n// between axis ticks and tooltip contents.\nfunction axisLabels<O extends Highcharts.XAxisLabelsOptions | Highcharts.YAxisLabelsOptions>(options: O): O {\n return {\n style: Styles.axisLabelsCss,\n formatter: function () {\n const formattedValue = getFormatter(this.axis)(this.value);\n return formattedValue.replace(/\\n/g, \"<br />\");\n },\n ...options,\n };\n}\n\nfunction yAxisPlotLines(\n plotLineOptions: Highcharts.YAxisPlotLinesOptions[] = [],\n emphasizeBaseline: boolean,\n): Highcharts.YAxisPlotLinesOptions[] {\n return emphasizeBaseline\n ? [{ value: 0, ...Styles.chatPlotBaseline, className: testClasses[\"emphasized-baseline\"] }, ...plotLineOptions]\n : plotLineOptions;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { ChartAPI } from "../chart-api";
2
+ export declare function ChartApplication({ api, keyboardNavigation, ariaLabel, }: {
3
+ api: ChartAPI;
4
+ keyboardNavigation: boolean;
5
+ ariaLabel?: string;
6
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import clsx from "clsx";
5
+ import { useSelector } from "../../internal/utils/async-store";
6
+ import styles from "../styles.css.js";
7
+ import testClasses from "../test-classes/styles.css.js";
8
+ // An invisible component rendered before chart plot to capture focus for custom keyboard navigation.
9
+ export function ChartApplication({ api, keyboardNavigation, ariaLabel, }) {
10
+ const hasData = useSelector(api.nodataStore, (s) => !s.visible);
11
+ return keyboardNavigation && hasData ? (
12
+ // Do not remove the empty outer div. It is used to contain the application element to perform
13
+ // focus juggling, necessary to trigger a screen-reader announcement.
14
+ _jsx("div", { children: _jsx("div", { ref: api.setApplication, tabIndex: 0, role: "application", "aria-label": ariaLabel, className: clsx(testClasses.application, styles.application) }) })) : null;
15
+ }
16
+ //# sourceMappingURL=core-application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-application.js","sourceRoot":"","sources":["../../../../src/core/components/core-application.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAExD,qGAAqG;AACrG,MAAM,UAAU,gBAAgB,CAAC,EAC/B,GAAG,EACH,kBAAkB,EAClB,SAAS,GAKV;IACC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChE,OAAO,kBAAkB,IAAI,OAAO,CAAC,CAAC,CAAC;IACrC,8FAA8F;IAC9F,qEAAqE;IACrE,wBACE,cACE,GAAG,EAAE,GAAG,CAAC,cAAc,EACvB,QAAQ,EAAE,CAAC,EACX,IAAI,EAAC,aAAa,gBACN,SAAS,EACrB,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAC5D,GACE,CACP,CAAC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport clsx from \"clsx\";\n\nimport { useSelector } from \"../../internal/utils/async-store\";\nimport { ChartAPI } from \"../chart-api\";\n\nimport styles from \"../styles.css.js\";\nimport testClasses from \"../test-classes/styles.css.js\";\n\n// An invisible component rendered before chart plot to capture focus for custom keyboard navigation.\nexport function ChartApplication({\n api,\n keyboardNavigation,\n ariaLabel,\n}: {\n api: ChartAPI;\n keyboardNavigation: boolean;\n ariaLabel?: string;\n}) {\n const hasData = useSelector(api.nodataStore, (s) => !s.visible);\n return keyboardNavigation && hasData ? (\n // Do not remove the empty outer div. It is used to contain the application element to perform\n // focus juggling, necessary to trigger a screen-reader announcement.\n <div>\n <div\n ref={api.setApplication}\n tabIndex={0}\n role=\"application\"\n aria-label={ariaLabel}\n className={clsx(testClasses.application, styles.application)}\n />\n </div>\n ) : null;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { ChartAPI } from "../chart-api";
3
+ import { BaseI18nStrings } from "../interfaces";
4
+ export declare function ChartFilters({ seriesFilter, additionalFilters, api, i18nStrings, }: {
5
+ seriesFilter?: boolean;
6
+ additionalFilters?: React.ReactNode;
7
+ api: ChartAPI;
8
+ i18nStrings?: BaseI18nStrings;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import clsx from "clsx";
5
+ import { useInternalI18n } from "@cloudscape-design/components/internal/do-not-use/i18n";
6
+ import InternalChartSeriesFilter from "../../internal/components/chart-series-filter";
7
+ import { useSelector } from "../../internal/utils/async-store";
8
+ import styles from "../styles.css.js";
9
+ import testClasses from "../test-classes/styles.css.js";
10
+ export function ChartFilters({ seriesFilter, additionalFilters, api, i18nStrings, }) {
11
+ return (_jsxs("div", { className: clsx(testClasses["chart-filters"], styles["chart-filters"]), children: [seriesFilter && (_jsx("div", { className: clsx(testClasses["chart-filters-series"], styles["chart-filters-series"]), children: _jsx(ChartSeriesFilter, { api: api, i18nStrings: i18nStrings }) })), additionalFilters && _jsx("div", { className: testClasses["chart-filters-additional"], children: additionalFilters })] }));
12
+ }
13
+ function ChartSeriesFilter({ api, i18nStrings }) {
14
+ const i18n = useInternalI18n("[charts]");
15
+ const legendItems = useSelector(api.legendStore, (s) => s.items);
16
+ return (_jsx(InternalChartSeriesFilter, { items: legendItems, selectedItems: legendItems.filter((i) => i.visible).map((i) => i.id), onChange: ({ detail }) => api.onItemVisibilityChange(detail.selectedItems), i18nStrings: {
17
+ filterLabel: i18n("i18nStrings.filterLabel", i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.seriesFilterLabel),
18
+ filterPlaceholder: i18n("i18nStrings.filterPlaceholder", i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.seriesFilterPlaceholder),
19
+ filterSelectedAriaLabel: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.seriesFilterSelectedAriaLabel,
20
+ } }));
21
+ }
22
+ //# sourceMappingURL=core-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-filters.js","sourceRoot":"","sources":["../../../../src/core/components/core-filters.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AAEzF,OAAO,yBAAyB,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAI/D,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAExD,MAAM,UAAU,YAAY,CAAC,EAC3B,YAAY,EACZ,iBAAiB,EACjB,GAAG,EACH,WAAW,GAMZ;IACC,OAAO,CACL,eAAK,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,aACxE,YAAY,IAAI,CACf,cAAK,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC,YACvF,KAAC,iBAAiB,IAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,GAAI,GACrD,CACP,EACA,iBAAiB,IAAI,cAAK,SAAS,EAAE,WAAW,CAAC,0BAA0B,CAAC,YAAG,iBAAiB,GAAO,IACpG,CACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAoD;IAC/F,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO,CACL,KAAC,yBAAyB,IACxB,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACpE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,aAAa,CAAC,EAC1E,WAAW,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,yBAAyB,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,iBAAiB,CAAC;YAC5E,iBAAiB,EAAE,IAAI,CAAC,+BAA+B,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,uBAAuB,CAAC;YAC9F,uBAAuB,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,6BAA6B;SACpE,GACD,CACH,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport clsx from \"clsx\";\n\nimport { useInternalI18n } from \"@cloudscape-design/components/internal/do-not-use/i18n\";\n\nimport InternalChartSeriesFilter from \"../../internal/components/chart-series-filter\";\nimport { useSelector } from \"../../internal/utils/async-store\";\nimport { ChartAPI } from \"../chart-api\";\nimport { BaseI18nStrings } from \"../interfaces\";\n\nimport styles from \"../styles.css.js\";\nimport testClasses from \"../test-classes/styles.css.js\";\n\nexport function ChartFilters({\n seriesFilter,\n additionalFilters,\n api,\n i18nStrings,\n}: {\n seriesFilter?: boolean;\n additionalFilters?: React.ReactNode;\n api: ChartAPI;\n i18nStrings?: BaseI18nStrings;\n}) {\n return (\n <div className={clsx(testClasses[\"chart-filters\"], styles[\"chart-filters\"])}>\n {seriesFilter && (\n <div className={clsx(testClasses[\"chart-filters-series\"], styles[\"chart-filters-series\"])}>\n <ChartSeriesFilter api={api} i18nStrings={i18nStrings} />\n </div>\n )}\n {additionalFilters && <div className={testClasses[\"chart-filters-additional\"]}>{additionalFilters}</div>}\n </div>\n );\n}\n\nfunction ChartSeriesFilter({ api, i18nStrings }: { api: ChartAPI; i18nStrings?: BaseI18nStrings }) {\n const i18n = useInternalI18n(\"[charts]\");\n const legendItems = useSelector(api.legendStore, (s) => s.items);\n return (\n <InternalChartSeriesFilter\n items={legendItems}\n selectedItems={legendItems.filter((i) => i.visible).map((i) => i.id)}\n onChange={({ detail }) => api.onItemVisibilityChange(detail.selectedItems)}\n i18nStrings={{\n filterLabel: i18n(\"i18nStrings.filterLabel\", i18nStrings?.seriesFilterLabel),\n filterPlaceholder: i18n(\"i18nStrings.filterPlaceholder\", i18nStrings?.seriesFilterPlaceholder),\n filterSelectedAriaLabel: i18nStrings?.seriesFilterSelectedAriaLabel,\n }}\n />\n );\n}\n"]}
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { NonCancelableEventHandler } from "../../internal/events";
3
+ import { ChartAPI } from "../chart-api";
4
+ import { BaseI18nStrings, CoreChartProps } from "../interfaces";
5
+ export declare function ChartLegend({ api, title, actions, position, i18nStrings, onItemHighlight, getLegendTooltipContent, }: {
6
+ api: ChartAPI;
7
+ title?: string;
8
+ actions?: React.ReactNode;
9
+ position: "bottom" | "side";
10
+ i18nStrings?: BaseI18nStrings;
11
+ onItemHighlight?: NonCancelableEventHandler<CoreChartProps.LegendItemHighlightDetail>;
12
+ getLegendTooltipContent?: CoreChartProps.GetLegendTooltipContent;
13
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import { useInternalI18n } from "@cloudscape-design/components/internal/do-not-use/i18n";
5
+ import { ChartLegend as ChartLegendComponent } from "../../internal/components/chart-legend";
6
+ import { fireNonCancelableEvent } from "../../internal/events";
7
+ import { useSelector } from "../../internal/utils/async-store";
8
+ export function ChartLegend({ api, title, actions, position, i18nStrings, onItemHighlight, getLegendTooltipContent, }) {
9
+ const i18n = useInternalI18n("[charts]");
10
+ const ariaLabel = i18n("i18nStrings.legendAriaLabel", i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.legendAriaLabel);
11
+ const legendItems = useSelector(api.legendStore, (s) => s.items);
12
+ const isChartTooltipPinned = useSelector(api.tooltipStore, (s) => s.pinned);
13
+ if (legendItems.length === 0) {
14
+ return null;
15
+ }
16
+ return (_jsx(ChartLegendComponent, { ariaLabel: ariaLabel, legendTitle: title, items: legendItems, actions: actions, position: position, onItemVisibilityChange: api.onItemVisibilityChange, onItemHighlightExit: api.onClearChartItemsHighlight, onItemHighlightEnter: (item) => {
17
+ api.onHighlightChartItems([item.id]);
18
+ fireNonCancelableEvent(onItemHighlight, { item });
19
+ }, getTooltipContent: (props) => {
20
+ var _a;
21
+ if (isChartTooltipPinned) {
22
+ return null;
23
+ }
24
+ return (_a = getLegendTooltipContent === null || getLegendTooltipContent === void 0 ? void 0 : getLegendTooltipContent(props)) !== null && _a !== void 0 ? _a : null;
25
+ } }));
26
+ }
27
+ //# sourceMappingURL=core-legend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-legend.js","sourceRoot":"","sources":["../../../../src/core/components/core-legend.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,wDAAwD,CAAC;AAEzF,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAA6B,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAI/D,MAAM,UAAU,WAAW,CAAC,EAC1B,GAAG,EACH,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,eAAe,EACf,uBAAuB,GASxB;IACC,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,6BAA6B,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE5E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IACD,OAAO,CACL,KAAC,oBAAoB,IACnB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,KAAK,EAClB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,sBAAsB,EAAE,GAAG,CAAC,sBAAsB,EAClD,mBAAmB,EAAE,GAAG,CAAC,0BAA0B,EACnD,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,sBAAsB,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC,EACD,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;;YAC3B,IAAI,oBAAoB,EAAE;gBACxB,OAAO,IAAI,CAAC;aACb;YACD,OAAO,MAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAG,KAAK,CAAC,mCAAI,IAAI,CAAC;QAClD,CAAC,GACD,CACH,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useInternalI18n } from \"@cloudscape-design/components/internal/do-not-use/i18n\";\n\nimport { ChartLegend as ChartLegendComponent } from \"../../internal/components/chart-legend\";\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from \"../../internal/events\";\nimport { useSelector } from \"../../internal/utils/async-store\";\nimport { ChartAPI } from \"../chart-api\";\nimport { BaseI18nStrings, CoreChartProps } from \"../interfaces\";\n\nexport function ChartLegend({\n api,\n title,\n actions,\n position,\n i18nStrings,\n onItemHighlight,\n getLegendTooltipContent,\n}: {\n api: ChartAPI;\n title?: string;\n actions?: React.ReactNode;\n position: \"bottom\" | \"side\";\n i18nStrings?: BaseI18nStrings;\n onItemHighlight?: NonCancelableEventHandler<CoreChartProps.LegendItemHighlightDetail>;\n getLegendTooltipContent?: CoreChartProps.GetLegendTooltipContent;\n}) {\n const i18n = useInternalI18n(\"[charts]\");\n const ariaLabel = i18n(\"i18nStrings.legendAriaLabel\", i18nStrings?.legendAriaLabel);\n const legendItems = useSelector(api.legendStore, (s) => s.items);\n const isChartTooltipPinned = useSelector(api.tooltipStore, (s) => s.pinned);\n\n if (legendItems.length === 0) {\n return null;\n }\n return (\n <ChartLegendComponent\n ariaLabel={ariaLabel}\n legendTitle={title}\n items={legendItems}\n actions={actions}\n position={position}\n onItemVisibilityChange={api.onItemVisibilityChange}\n onItemHighlightExit={api.onClearChartItemsHighlight}\n onItemHighlightEnter={(item) => {\n api.onHighlightChartItems([item.id]);\n fireNonCancelableEvent(onItemHighlight, { item });\n }}\n getTooltipContent={(props) => {\n if (isChartTooltipPinned) {\n return null;\n }\n return getLegendTooltipContent?.(props) ?? null;\n }}\n />\n );\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { ChartAPI } from "../chart-api";
2
+ import { BaseI18nStrings, BaseNoDataOptions } from "../interfaces";
3
+ export declare function ChartNoData({ statusType, loading, empty, error, noMatch, onRecoveryClick, api, i18nStrings, }: BaseNoDataOptions & {
4
+ api: ChartAPI;
5
+ i18nStrings?: BaseI18nStrings;
6
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import clsx from "clsx";
5
+ import Button from "@cloudscape-design/components/button";
6
+ import { useInternalI18n } from "@cloudscape-design/components/internal/do-not-use/i18n";
7
+ import LiveRegion from "@cloudscape-design/components/live-region";
8
+ import SpaceBetween from "@cloudscape-design/components/space-between";
9
+ import StatusIndicator from "@cloudscape-design/components/status-indicator";
10
+ import { fireNonCancelableEvent } from "../../internal/events";
11
+ import { useSelector } from "../../internal/utils/async-store";
12
+ import styles from "../styles.css.js";
13
+ import testClasses from "../test-classes/styles.css.js";
14
+ export function ChartNoData({ statusType = "finished", loading, empty, error, noMatch, onRecoveryClick, api, i18nStrings, }) {
15
+ const state = useSelector(api.nodataStore, (s) => s);
16
+ if (!state.visible) {
17
+ return null;
18
+ }
19
+ let content = null;
20
+ if (statusType === "loading") {
21
+ content = loading ? (_jsx("div", { className: testClasses["no-data-loading"], children: loading })) : (_jsx(DefaultLoadingMessage, { i18nStrings: i18nStrings }));
22
+ }
23
+ else if (statusType === "error") {
24
+ content = error ? (_jsx("div", { className: testClasses["no-data-error"], children: error })) : (_jsx(DefaultErrorMessage, { onRecoveryClick: onRecoveryClick, i18nStrings: i18nStrings }));
25
+ }
26
+ else if (state.noMatch && noMatch) {
27
+ content = _jsx("div", { className: clsx(testClasses["no-data-no-match"], styles["no-data-empty"]), children: noMatch });
28
+ }
29
+ else if (!state.noMatch && empty) {
30
+ content = _jsx("div", { className: clsx(testClasses["no-data-empty"], styles["no-data-empty"]), children: empty });
31
+ }
32
+ return (content && (_jsx("div", { className: styles["no-data-container"], style: state.style, children: _jsx("div", { className: styles["no-data-wrapper"], children: _jsx("div", { className: clsx(testClasses["no-data"], styles["no-data"]), children: _jsx(LiveRegion, { children: content }) }) }) })));
33
+ }
34
+ function DefaultLoadingMessage({ i18nStrings }) {
35
+ const i18n = useInternalI18n("[charts]");
36
+ const loadingText = i18n("loadingText", i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.loadingText);
37
+ return (_jsx(StatusIndicator, { type: "loading", className: testClasses["no-data-loading"], wrapText: true, children: loadingText }));
38
+ }
39
+ function DefaultErrorMessage({ onRecoveryClick, i18nStrings, }) {
40
+ const i18n = useInternalI18n("[charts]");
41
+ const errorText = i18n("errorText", i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.errorText);
42
+ const recoveryText = i18n("recoveryText", i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.recoveryText);
43
+ return (_jsxs(SpaceBetween, { direction: "horizontal", size: "xxs", className: testClasses["no-data-error"], children: [_jsx(StatusIndicator, { type: "error", wrapText: true, children: errorText }), recoveryText && onRecoveryClick ? (_jsx(Button, { onClick: (event) => {
44
+ event.preventDefault();
45
+ fireNonCancelableEvent(onRecoveryClick);
46
+ }, variant: "inline-link", className: testClasses["no-data-retry"], children: recoveryText })) : null] }));
47
+ }
48
+ //# sourceMappingURL=core-no-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-no-data.js","sourceRoot":"","sources":["../../../../src/core/components/core-no-data.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\n\nimport clsx from \"clsx\";\n\nimport Button from \"@cloudscape-design/components/button\";\nimport { useInternalI18n } from \"@cloudscape-design/components/internal/do-not-use/i18n\";\nimport LiveRegion from \"@cloudscape-design/components/live-region\";\nimport SpaceBetween from \"@cloudscape-design/components/space-between\";\nimport StatusIndicator from \"@cloudscape-design/components/status-indicator\";\n\nimport { fireNonCancelableEvent, NonCancelableEventHandler } from \"../../internal/events\";\nimport { useSelector } from \"../../internal/utils/async-store\";\nimport { ChartAPI } from \"../chart-api\";\nimport { BaseI18nStrings, BaseNoDataOptions } from \"../interfaces\";\n\nimport styles from \"../styles.css.js\";\nimport testClasses from \"../test-classes/styles.css.js\";\n\nexport function ChartNoData({\n statusType = \"finished\",\n loading,\n empty,\n error,\n noMatch,\n onRecoveryClick,\n api,\n i18nStrings,\n}: BaseNoDataOptions & {\n api: ChartAPI;\n i18nStrings?: BaseI18nStrings;\n}) {\n const state = useSelector(api.nodataStore, (s) => s);\n if (!state.visible) {\n return null;\n }\n let content = null;\n if (statusType === \"loading\") {\n content = loading ? (\n <div className={testClasses[\"no-data-loading\"]}>{loading}</div>\n ) : (\n <DefaultLoadingMessage i18nStrings={i18nStrings} />\n );\n } else if (statusType === \"error\") {\n content = error ? (\n <div className={testClasses[\"no-data-error\"]}>{error}</div>\n ) : (\n <DefaultErrorMessage onRecoveryClick={onRecoveryClick} i18nStrings={i18nStrings} />\n );\n } else if (state.noMatch && noMatch) {\n content = <div className={clsx(testClasses[\"no-data-no-match\"], styles[\"no-data-empty\"])}>{noMatch}</div>;\n } else if (!state.noMatch && empty) {\n content = <div className={clsx(testClasses[\"no-data-empty\"], styles[\"no-data-empty\"])}>{empty}</div>;\n }\n return (\n content && (\n <div className={styles[\"no-data-container\"]} style={state.style}>\n <div className={styles[\"no-data-wrapper\"]}>\n <div className={clsx(testClasses[\"no-data\"], styles[\"no-data\"])}>\n <LiveRegion>{content}</LiveRegion>\n </div>\n </div>\n </div>\n )\n );\n}\n\nfunction DefaultLoadingMessage({ i18nStrings }: { i18nStrings?: BaseI18nStrings }) {\n const i18n = useInternalI18n(\"[charts]\");\n const loadingText = i18n(\"loadingText\", i18nStrings?.loadingText);\n return (\n <StatusIndicator type=\"loading\" className={testClasses[\"no-data-loading\"]} wrapText={true}>\n {loadingText}\n </StatusIndicator>\n );\n}\n\nfunction DefaultErrorMessage({\n onRecoveryClick,\n i18nStrings,\n}: {\n onRecoveryClick?: NonCancelableEventHandler;\n i18nStrings?: BaseI18nStrings;\n}) {\n const i18n = useInternalI18n(\"[charts]\");\n const errorText = i18n(\"errorText\", i18nStrings?.errorText);\n const recoveryText = i18n(\"recoveryText\", i18nStrings?.recoveryText);\n return (\n <SpaceBetween direction=\"horizontal\" size=\"xxs\" className={testClasses[\"no-data-error\"]}>\n <StatusIndicator type=\"error\" wrapText={true}>\n {errorText}\n </StatusIndicator>\n {recoveryText && onRecoveryClick ? (\n <Button\n onClick={(event: CustomEvent) => {\n event.preventDefault();\n fireNonCancelableEvent(onRecoveryClick);\n }}\n variant=\"inline-link\"\n className={testClasses[\"no-data-retry\"]}\n >\n {recoveryText}\n </Button>\n ) : null}\n </SpaceBetween>\n );\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ export declare function ChartHeader({ children }: {
3
+ children: React.ReactNode;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ export declare function ChartFooter({ children }: {
6
+ children: React.ReactNode;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import testClasses from "../test-classes/styles.css.js";
5
+ export function ChartHeader({ children }) {
6
+ return _jsx("div", { className: testClasses["chart-header"], children: children });
7
+ }
8
+ export function ChartFooter({ children }) {
9
+ return _jsx("div", { className: testClasses["chart-footer"], children: children });
10
+ }
11
+ //# sourceMappingURL=core-slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-slots.js","sourceRoot":"","sources":["../../../../src/core/components/core-slots.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAExD,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAiC;IACrE,OAAO,cAAK,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,YAAG,QAAQ,GAAO,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAiC;IACrE,OAAO,cAAK,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,YAAG,QAAQ,GAAO,CAAC;AACvE,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport testClasses from \"../test-classes/styles.css.js\";\n\nexport function ChartHeader({ children }: { children: React.ReactNode }) {\n return <div className={testClasses[\"chart-header\"]}>{children}</div>;\n}\n\nexport function ChartFooter({ children }: { children: React.ReactNode }) {\n return <div className={testClasses[\"chart-footer\"]}>{children}</div>;\n}\n"]}