@cloudscape-design/components 3.0.619 → 3.0.620
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.
- package/annotation-context/annotation/styles.css.js +24 -24
- package/annotation-context/annotation/styles.scoped.css +31 -31
- package/annotation-context/annotation/styles.selectors.js +24 -24
- package/app-layout/classic.d.ts.map +1 -1
- package/app-layout/classic.js +5 -16
- package/app-layout/classic.js.map +1 -1
- package/app-layout/content-wrapper/index.d.ts +1 -0
- package/app-layout/content-wrapper/index.d.ts.map +1 -1
- package/app-layout/content-wrapper/index.js +3 -3
- package/app-layout/content-wrapper/index.js.map +1 -1
- package/app-layout/notifications/styles.css.js +3 -3
- package/app-layout/notifications/styles.scoped.css +7 -7
- package/app-layout/notifications/styles.selectors.js +3 -3
- package/app-layout/utils/sticky-offsets.d.ts +4 -0
- package/app-layout/utils/sticky-offsets.d.ts.map +1 -0
- package/app-layout/utils/sticky-offsets.js +10 -0
- package/app-layout/utils/sticky-offsets.js.map +1 -0
- package/app-layout/visual-refresh/context.d.ts.map +1 -1
- package/app-layout/visual-refresh/context.js +1 -5
- package/app-layout/visual-refresh/context.js.map +1 -1
- package/app-layout/visual-refresh/main.d.ts.map +1 -1
- package/app-layout/visual-refresh/main.js +6 -4
- package/app-layout/visual-refresh/main.js.map +1 -1
- package/app-layout/visual-refresh/styles.css.js +81 -81
- package/app-layout/visual-refresh/styles.scoped.css +258 -294
- package/app-layout/visual-refresh/styles.selectors.js +81 -81
- package/container/use-sticky-header.d.ts +1 -5
- package/container/use-sticky-header.d.ts.map +1 -1
- package/container/use-sticky-header.js +7 -34
- package/container/use-sticky-header.js.map +1 -1
- package/flashbar/styles.css.js +47 -47
- package/flashbar/styles.scoped.css +171 -171
- package/flashbar/styles.selectors.js +47 -47
- package/header/internal.d.ts.map +1 -1
- package/header/internal.js +3 -1
- package/header/internal.js.map +1 -1
- package/header/styles.css.js +35 -34
- package/header/styles.scoped.css +55 -52
- package/header/styles.selectors.js +35 -34
- package/internal/components/dropdown/styles.css.js +20 -20
- package/internal/components/dropdown/styles.scoped.css +41 -41
- package/internal/components/dropdown/styles.selectors.js +20 -20
- package/internal/context/app-layout-context.d.ts +0 -3
- package/internal/context/app-layout-context.d.ts.map +1 -1
- package/internal/context/app-layout-context.js +1 -5
- package/internal/context/app-layout-context.js.map +1 -1
- package/internal/environment.js +1 -1
- package/internal/environment.json +1 -1
- package/internal/generated/custom-css-properties/index.d.ts.map +1 -1
- package/internal/generated/custom-css-properties/index.js +43 -44
- package/internal/generated/custom-css-properties/index.js.map +1 -1
- package/internal/manifest.json +1 -1
- package/internal/styles/global-vars.d.ts +6 -0
- package/internal/styles/global-vars.d.ts.map +1 -0
- package/internal/styles/global-vars.js +8 -0
- package/internal/styles/global-vars.js.map +1 -0
- package/mixed-line-bar-chart/bar-series.d.ts +3 -3
- package/mixed-line-bar-chart/bar-series.d.ts.map +1 -1
- package/mixed-line-bar-chart/bar-series.js +61 -17
- package/mixed-line-bar-chart/bar-series.js.map +1 -1
- package/mixed-line-bar-chart/create-one-side-rounded-rect-path.d.ts +7 -0
- package/mixed-line-bar-chart/create-one-side-rounded-rect-path.d.ts.map +1 -0
- package/mixed-line-bar-chart/create-one-side-rounded-rect-path.js +33 -0
- package/mixed-line-bar-chart/create-one-side-rounded-rect-path.js.map +1 -0
- package/mixed-line-bar-chart/data-series.d.ts.map +1 -1
- package/mixed-line-bar-chart/data-series.js +5 -5
- package/mixed-line-bar-chart/data-series.js.map +1 -1
- package/mixed-line-bar-chart/utils.d.ts +2 -9
- package/mixed-line-bar-chart/utils.d.ts.map +1 -1
- package/mixed-line-bar-chart/utils.js +19 -26
- package/mixed-line-bar-chart/utils.js.map +1 -1
- package/package.json +1 -1
- package/spinner/styles.css.js +13 -13
- package/spinner/styles.scoped.css +39 -39
- package/spinner/styles.selectors.js +13 -13
- package/split-panel/implementation.d.ts.map +1 -1
- package/split-panel/implementation.js +7 -7
- package/split-panel/implementation.js.map +1 -1
- package/split-panel/interfaces.d.ts +1 -0
- package/split-panel/interfaces.d.ts.map +1 -1
- package/split-panel/interfaces.js.map +1 -1
- package/split-panel/side.d.ts +1 -1
- package/split-panel/side.d.ts.map +1 -1
- package/split-panel/side.js +2 -5
- package/split-panel/side.js.map +1 -1
- package/table/sticky-scrollbar/sticky-scrollbar.d.ts.map +1 -1
- package/table/sticky-scrollbar/sticky-scrollbar.js +1 -7
- package/table/sticky-scrollbar/sticky-scrollbar.js.map +1 -1
- package/table/sticky-scrollbar/use-sticky-scrollbar.d.ts +2 -2
- package/table/sticky-scrollbar/use-sticky-scrollbar.d.ts.map +1 -1
- package/table/sticky-scrollbar/use-sticky-scrollbar.js +12 -30
- package/table/sticky-scrollbar/use-sticky-scrollbar.js.map +1 -1
- package/theming/index.d.ts +5 -0
- package/theming/index.d.ts.map +1 -1
- package/theming/index.js +8 -1
- package/theming/index.js.map +1 -1
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import React
|
|
3
|
+
import React from 'react';
|
|
4
4
|
import clsx from 'clsx';
|
|
5
5
|
import { matchesX, getKeyValue } from './utils';
|
|
6
6
|
import styles from './styles.css.js';
|
|
7
7
|
import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
|
|
8
|
-
|
|
8
|
+
import { createOneSideRoundedRectPath } from './create-one-side-rounded-rect-path';
|
|
9
|
+
export default function BarSeries({ axis, series, color, xScale, yScale, highlighted, dimmed, highlightedGroupIndex, totalSeriesCount, seriesIndex, plotSize, chartAreaClipPath, stackedBarValues, }) {
|
|
9
10
|
const isRefresh = useVisualRefresh();
|
|
10
|
-
const
|
|
11
|
+
const isStacked = !!stackedBarValues;
|
|
12
|
+
const isVertical = axis === 'x';
|
|
13
|
+
const xCoordinates = (() => {
|
|
11
14
|
var _a;
|
|
12
15
|
if (series.type !== 'bar' || !xScale.isCategorical()) {
|
|
13
16
|
return [];
|
|
@@ -19,53 +22,94 @@ export default function BarSeries({ axis, series, color, xScale, yScale, highlig
|
|
|
19
22
|
let barWidth = xScale.d3Scale.bandwidth();
|
|
20
23
|
const PADDING = 4;
|
|
21
24
|
const MINWIDTH = 4;
|
|
22
|
-
if (!
|
|
25
|
+
if (!isStacked && totalSeriesCount > 1) {
|
|
23
26
|
// Regular grouped bars
|
|
24
27
|
barWidth = (barWidth - (totalSeriesCount - 1) * PADDING) / totalSeriesCount;
|
|
25
28
|
barWidth = Math.max(barWidth, MINWIDTH);
|
|
26
29
|
}
|
|
27
30
|
return xPoints.map((x, i) => {
|
|
28
|
-
var _a, _b;
|
|
31
|
+
var _a, _b, _c, _d;
|
|
29
32
|
const d = series.data[i];
|
|
33
|
+
const key = getKeyValue(d.x);
|
|
30
34
|
let barX = x;
|
|
31
35
|
let yValue = d.y;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
let isRoundedStart = !isStacked;
|
|
37
|
+
let isRoundedEnd = !isStacked;
|
|
38
|
+
// Stacked bars
|
|
39
|
+
if (isStacked) {
|
|
40
|
+
const allXValues = (_a = stackedBarValues.get(key)) !== null && _a !== void 0 ? _a : new Map();
|
|
41
|
+
yValue = (_b = allXValues.get(seriesIndex)) !== null && _b !== void 0 ? _b : 0;
|
|
42
|
+
const allXValuesSorted = Array.from(allXValues.values()).sort((a, b) => a - b);
|
|
43
|
+
isRoundedStart = yValue === allXValuesSorted[0];
|
|
44
|
+
isRoundedEnd = yValue === allXValuesSorted[allXValuesSorted.length - 1];
|
|
36
45
|
}
|
|
46
|
+
// Regular grouped bars
|
|
37
47
|
else if (totalSeriesCount > 1) {
|
|
38
|
-
// Regular grouped bars
|
|
39
48
|
barX += seriesIndex * (barWidth + PADDING);
|
|
40
49
|
}
|
|
41
50
|
// Account for negative values growing "down" instead of "up"
|
|
42
51
|
yValue = yValue < 0 ? yValue - d.y : yValue;
|
|
43
52
|
return {
|
|
44
53
|
x: barX,
|
|
45
|
-
y: (
|
|
54
|
+
y: (_c = yContinuosScale(yValue)) !== null && _c !== void 0 ? _c : NaN,
|
|
46
55
|
width: barWidth,
|
|
47
|
-
height: Math.abs(((
|
|
56
|
+
height: Math.abs(((_d = yContinuosScale(d.y)) !== null && _d !== void 0 ? _d : NaN) - baseY),
|
|
57
|
+
isRoundedStart,
|
|
58
|
+
isRoundedEnd,
|
|
48
59
|
};
|
|
49
60
|
});
|
|
50
|
-
}
|
|
61
|
+
})();
|
|
51
62
|
const highlightedXValue = highlightedGroupIndex !== null ? xScale.domain[highlightedGroupIndex] : null;
|
|
52
63
|
return (React.createElement("g", { "aria-label": series.title, clipPath: `url(#${chartAreaClipPath})`, className: clsx(styles.series, styles['series--bar'], {
|
|
53
64
|
[styles['series--highlighted']]: highlighted,
|
|
54
65
|
[styles['series--dimmed']]: dimmed,
|
|
55
|
-
}) }, xCoordinates.map(({ x, y, width, height }, i) => {
|
|
66
|
+
}) }, xCoordinates.map(({ x, y, width, height, isRoundedStart, isRoundedEnd }, i) => {
|
|
56
67
|
if (!isFinite(x) || !isFinite(height)) {
|
|
57
68
|
return;
|
|
58
69
|
}
|
|
59
70
|
// Create margins between stacked series but only when series data is not too small.
|
|
60
|
-
const baseHeightOffset =
|
|
71
|
+
const baseHeightOffset = isStacked ? 3 : 0;
|
|
61
72
|
const isSmallBar = height < 4;
|
|
62
73
|
const heightOffset = isSmallBar ? 0 : baseHeightOffset;
|
|
63
74
|
const widthOffset = 2;
|
|
64
|
-
const rx = isRefresh ? (isSmallBar ?
|
|
75
|
+
const rx = isRefresh ? (isSmallBar ? 2 : 4) : 0;
|
|
76
|
+
const placement = isVertical
|
|
77
|
+
? {
|
|
78
|
+
x: x + widthOffset / 2,
|
|
79
|
+
y: y + heightOffset / 2,
|
|
80
|
+
width: width - widthOffset,
|
|
81
|
+
height: height - heightOffset,
|
|
82
|
+
}
|
|
83
|
+
: {
|
|
84
|
+
x: y - height + heightOffset / 2,
|
|
85
|
+
y: x + widthOffset / 2,
|
|
86
|
+
width: height - heightOffset,
|
|
87
|
+
height: width - widthOffset,
|
|
88
|
+
};
|
|
65
89
|
const className = clsx(styles.series__rect, {
|
|
66
90
|
[styles['series--dimmed']]: highlightedXValue !== null && !matchesX(highlightedXValue, series.data[i].x),
|
|
67
91
|
});
|
|
68
|
-
|
|
92
|
+
const styleProps = { fill: color, className };
|
|
93
|
+
let side = 'none';
|
|
94
|
+
if (isRoundedStart && isRoundedEnd) {
|
|
95
|
+
side = 'all';
|
|
96
|
+
}
|
|
97
|
+
else if (!isRoundedStart && !isRoundedEnd) {
|
|
98
|
+
side = 'none';
|
|
99
|
+
}
|
|
100
|
+
else if (isVertical) {
|
|
101
|
+
side = isRoundedStart ? 'bottom' : 'top';
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
side = isRoundedStart ? 'left' : 'right';
|
|
105
|
+
}
|
|
106
|
+
if (side === 'all') {
|
|
107
|
+
return React.createElement("rect", Object.assign({ key: i }, placement, styleProps, { rx: rx }));
|
|
108
|
+
}
|
|
109
|
+
if (side === 'none') {
|
|
110
|
+
return React.createElement("rect", Object.assign({ key: i }, placement, styleProps, { rx: 0 }));
|
|
111
|
+
}
|
|
112
|
+
return React.createElement("path", Object.assign({ key: i, d: createOneSideRoundedRectPath(placement, rx, side) }, styleProps));
|
|
69
113
|
})));
|
|
70
114
|
}
|
|
71
115
|
//# sourceMappingURL=bar-series.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-series.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/bar-series.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\nimport clsx from 'clsx';\nimport { ScaleContinuousNumeric, ScaleTime } from '../internal/vendor/d3-scale';\n\nimport { ChartScale, NumericChartScale } from '../internal/components/cartesian-chart/scales';\nimport { ChartDataTypes, MixedLineBarChartProps } from './interfaces';\nimport { matchesX, getKeyValue, StackedOffsets } from './utils';\nimport styles from './styles.css.js';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nexport interface BarSeriesProps<T> {\n axis: 'x' | 'y';\n\n series: MixedLineBarChartProps.BarDataSeries<T>;\n\n color: string;\n totalSeriesCount: number;\n seriesIndex: number;\n\n xScale: ChartScale;\n yScale: NumericChartScale;\n\n plotSize: number;\n chartAreaClipPath: string;\n\n highlighted: boolean;\n dimmed: boolean;\n highlightedGroupIndex: number | null;\n\n // Contains the cumulative offset for each x value in a stacked bar chart\n stackedBarOffsets?: StackedOffsets;\n}\n\nexport default function BarSeries<T extends ChartDataTypes>({\n axis,\n series,\n color,\n xScale,\n yScale,\n highlighted,\n dimmed,\n highlightedGroupIndex,\n stackedBarOffsets,\n totalSeriesCount,\n seriesIndex,\n plotSize,\n chartAreaClipPath,\n}: BarSeriesProps<T>) {\n const isRefresh = useVisualRefresh();\n\n const xCoordinates = useMemo(() => {\n if (series.type !== 'bar' || !xScale.isCategorical()) {\n return [];\n }\n\n const yContinuosScale: ScaleContinuousNumeric<number, number> | ScaleTime<number, number> = yScale.d3Scale;\n const xPoints = (series.data as ReadonlyArray<MixedLineBarChartProps.Datum<ChartDataTypes>>).map(\n ({ x }) => xScale.d3Scale(x) || NaN\n );\n\n const zeroY = yScale.d3Scale(0) ?? NaN;\n const baseY = isFinite(zeroY) ? Math.min(plotSize, zeroY) : plotSize;\n\n let barWidth = xScale.d3Scale.bandwidth();\n\n const PADDING = 4;\n const MINWIDTH = 4;\n\n if (!stackedBarOffsets && totalSeriesCount > 1) {\n // Regular grouped bars\n barWidth = (barWidth - (totalSeriesCount - 1) * PADDING) / totalSeriesCount;\n barWidth = Math.max(barWidth, MINWIDTH);\n }\n\n return xPoints.map((x, i) => {\n const d = series.data[i];\n let barX = x;\n let yValue = d.y;\n\n if (stackedBarOffsets) {\n // Stacked bars\n const offsetMap = d.y < 0 ? stackedBarOffsets.negativeOffsets : stackedBarOffsets.positiveOffsets;\n yValue = d.y + (offsetMap.get(getKeyValue(d.x)) || 0);\n } else if (totalSeriesCount > 1) {\n // Regular grouped bars\n barX += seriesIndex * (barWidth + PADDING);\n }\n\n // Account for negative values growing \"down\" instead of \"up\"\n yValue = yValue < 0 ? yValue - d.y : yValue;\n\n return {\n x: barX,\n y: yContinuosScale(yValue) ?? NaN,\n width: barWidth,\n height: Math.abs((yContinuosScale(d.y) ?? NaN) - baseY),\n };\n });\n }, [series, xScale, yScale, plotSize, stackedBarOffsets, totalSeriesCount, seriesIndex]);\n\n const highlightedXValue = highlightedGroupIndex !== null ? xScale.domain[highlightedGroupIndex] : null;\n\n return (\n <g\n aria-label={series.title}\n clipPath={`url(#${chartAreaClipPath})`}\n className={clsx(styles.series, styles['series--bar'], {\n [styles['series--highlighted']]: highlighted,\n [styles['series--dimmed']]: dimmed,\n })}\n >\n {xCoordinates.map(({ x, y, width, height }, i) => {\n if (!isFinite(x) || !isFinite(height)) {\n return;\n }\n\n // Create margins between stacked series but only when series data is not too small.\n const baseHeightOffset = stackedBarOffsets ? 3 : 0;\n const isSmallBar = height < 4;\n const heightOffset = isSmallBar ? 0 : baseHeightOffset;\n const widthOffset = 2;\n\n const rx = isRefresh ? (isSmallBar ? '2px' : '4px') : '0px';\n const className = clsx(styles.series__rect, {\n [styles['series--dimmed']]: highlightedXValue !== null && !matchesX(highlightedXValue, series.data[i].x),\n });\n\n return axis === 'x' ? (\n <rect\n key={`bar-${i}`}\n fill={color}\n x={x + widthOffset / 2}\n y={y + heightOffset / 2}\n width={width - widthOffset}\n height={height - heightOffset}\n rx={rx}\n className={className}\n />\n ) : (\n <rect\n key={`bar-${i}`}\n fill={color}\n x={y - height + heightOffset / 2}\n y={x + widthOffset / 2}\n width={height - heightOffset}\n height={width - widthOffset}\n rx={rx}\n className={className}\n />\n );\n })}\n </g>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bar-series.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/bar-series.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\nimport { ScaleContinuousNumeric, ScaleTime } from '../internal/vendor/d3-scale';\n\nimport { ChartScale, NumericChartScale } from '../internal/components/cartesian-chart/scales';\nimport { ChartDataTypes, MixedLineBarChartProps } from './interfaces';\nimport { matchesX, getKeyValue, StackedBarValues } from './utils';\nimport styles from './styles.css.js';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { createOneSideRoundedRectPath } from './create-one-side-rounded-rect-path';\n\nexport interface BarSeriesProps<T> {\n axis: 'x' | 'y';\n\n series: MixedLineBarChartProps.BarDataSeries<T>;\n\n color: string;\n totalSeriesCount: number;\n seriesIndex: number;\n\n xScale: ChartScale;\n yScale: NumericChartScale;\n\n plotSize: number;\n chartAreaClipPath: string;\n\n highlighted: boolean;\n dimmed: boolean;\n highlightedGroupIndex: number | null;\n\n // Contains values to be used for stacked bars.\n stackedBarValues?: StackedBarValues;\n}\n\nexport default function BarSeries<T extends ChartDataTypes>({\n axis,\n series,\n color,\n xScale,\n yScale,\n highlighted,\n dimmed,\n highlightedGroupIndex,\n totalSeriesCount,\n seriesIndex,\n plotSize,\n chartAreaClipPath,\n stackedBarValues,\n}: BarSeriesProps<T>) {\n const isRefresh = useVisualRefresh();\n const isStacked = !!stackedBarValues;\n const isVertical = axis === 'x';\n\n const xCoordinates = (() => {\n if (series.type !== 'bar' || !xScale.isCategorical()) {\n return [];\n }\n\n const yContinuosScale: ScaleContinuousNumeric<number, number> | ScaleTime<number, number> = yScale.d3Scale;\n const xPoints = (series.data as ReadonlyArray<MixedLineBarChartProps.Datum<ChartDataTypes>>).map(\n ({ x }) => xScale.d3Scale(x) || NaN\n );\n\n const zeroY = yScale.d3Scale(0) ?? NaN;\n const baseY = isFinite(zeroY) ? Math.min(plotSize, zeroY) : plotSize;\n\n let barWidth = xScale.d3Scale.bandwidth();\n\n const PADDING = 4;\n const MINWIDTH = 4;\n\n if (!isStacked && totalSeriesCount > 1) {\n // Regular grouped bars\n barWidth = (barWidth - (totalSeriesCount - 1) * PADDING) / totalSeriesCount;\n barWidth = Math.max(barWidth, MINWIDTH);\n }\n\n return xPoints.map((x, i) => {\n const d = series.data[i];\n const key = getKeyValue(d.x);\n let barX = x;\n let yValue = d.y;\n let isRoundedStart = !isStacked;\n let isRoundedEnd = !isStacked;\n\n // Stacked bars\n if (isStacked) {\n const allXValues = stackedBarValues.get(key) ?? new Map();\n yValue = allXValues.get(seriesIndex) ?? 0;\n const allXValuesSorted = Array.from(allXValues.values()).sort((a, b) => a - b);\n isRoundedStart = yValue === allXValuesSorted[0];\n isRoundedEnd = yValue === allXValuesSorted[allXValuesSorted.length - 1];\n }\n // Regular grouped bars\n else if (totalSeriesCount > 1) {\n barX += seriesIndex * (barWidth + PADDING);\n }\n\n // Account for negative values growing \"down\" instead of \"up\"\n yValue = yValue < 0 ? yValue - d.y : yValue;\n\n return {\n x: barX,\n y: yContinuosScale(yValue) ?? NaN,\n width: barWidth,\n height: Math.abs((yContinuosScale(d.y) ?? NaN) - baseY),\n isRoundedStart,\n isRoundedEnd,\n };\n });\n })();\n\n const highlightedXValue = highlightedGroupIndex !== null ? xScale.domain[highlightedGroupIndex] : null;\n\n return (\n <g\n aria-label={series.title}\n clipPath={`url(#${chartAreaClipPath})`}\n className={clsx(styles.series, styles['series--bar'], {\n [styles['series--highlighted']]: highlighted,\n [styles['series--dimmed']]: dimmed,\n })}\n >\n {xCoordinates.map(({ x, y, width, height, isRoundedStart, isRoundedEnd }, i) => {\n if (!isFinite(x) || !isFinite(height)) {\n return;\n }\n\n // Create margins between stacked series but only when series data is not too small.\n const baseHeightOffset = isStacked ? 3 : 0;\n const isSmallBar = height < 4;\n const heightOffset = isSmallBar ? 0 : baseHeightOffset;\n const widthOffset = 2;\n\n const rx = isRefresh ? (isSmallBar ? 2 : 4) : 0;\n const placement = isVertical\n ? {\n x: x + widthOffset / 2,\n y: y + heightOffset / 2,\n width: width - widthOffset,\n height: height - heightOffset,\n }\n : {\n x: y - height + heightOffset / 2,\n y: x + widthOffset / 2,\n width: height - heightOffset,\n height: width - widthOffset,\n };\n\n const className = clsx(styles.series__rect, {\n [styles['series--dimmed']]: highlightedXValue !== null && !matchesX(highlightedXValue, series.data[i].x),\n });\n const styleProps = { fill: color, className };\n\n let side: 'left' | 'right' | 'top' | 'bottom' | 'all' | 'none' = 'none';\n if (isRoundedStart && isRoundedEnd) {\n side = 'all';\n } else if (!isRoundedStart && !isRoundedEnd) {\n side = 'none';\n } else if (isVertical) {\n side = isRoundedStart ? 'bottom' : 'top';\n } else {\n side = isRoundedStart ? 'left' : 'right';\n }\n\n if (side === 'all') {\n return <rect key={i} {...placement} {...styleProps} rx={rx} />;\n }\n if (side === 'none') {\n return <rect key={i} {...placement} {...styleProps} rx={0} />;\n }\n return <path key={i} d={createOneSideRoundedRectPath(placement, rx, side)} {...styleProps} />;\n })}\n </g>\n );\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function createOneSideRoundedRectPath({ x, y, width, height }: {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}, radius: number, side: 'left' | 'right' | 'top' | 'bottom'): string;
|
|
7
|
+
//# sourceMappingURL=create-one-side-rounded-rect-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-one-side-rounded-rect-path.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/create-one-side-rounded-rect-path.ts"],"names":[],"mappings":"AAGA,wBAAgB,4BAA4B,CAC1C,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAChF,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,UAkC1C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* eslint-disable header/header */
|
|
2
|
+
// Source https://stackoverflow.com/a/65186378/16648714
|
|
3
|
+
export function createOneSideRoundedRectPath({ x, y, width, height }, radius, side) {
|
|
4
|
+
const coordinates = [
|
|
5
|
+
{ x, y },
|
|
6
|
+
{ x: x + width, y },
|
|
7
|
+
{ x: x + width, y: y + height },
|
|
8
|
+
{ x: x, y: y + height },
|
|
9
|
+
];
|
|
10
|
+
// Starting from the target side.
|
|
11
|
+
const startIndex = { left: 2, right: 0, top: 3, bottom: 1 }[side];
|
|
12
|
+
let path = '';
|
|
13
|
+
for (let i = startIndex; i < startIndex + coordinates.length + 1; i++) {
|
|
14
|
+
const start = coordinates[i % coordinates.length];
|
|
15
|
+
const end = coordinates[(i + 1) % coordinates.length];
|
|
16
|
+
// Define curvature for the first 3 points to only add rounded corners to the first side.
|
|
17
|
+
const c = radius && i < startIndex + 3 ? Math.min(radius / Math.hypot(end.x - start.x, end.y - start.y), 0.5) : 0;
|
|
18
|
+
// Insert start point. When c=0 the start point is [start.x, start.y].
|
|
19
|
+
if (i === startIndex) {
|
|
20
|
+
path += `M${start.x * (1 - c) + end.x * c},${start.y * (1 - c) + end.y * c}`;
|
|
21
|
+
}
|
|
22
|
+
// Insert quadratic curve.
|
|
23
|
+
if (i > startIndex) {
|
|
24
|
+
path += `Q${start.x},${start.y} ${start.x * (1 - c) + end.x * c},${start.y * (1 - c) + end.y * c}`;
|
|
25
|
+
}
|
|
26
|
+
// Draw line to the end point. When c=0 the end point is [end.x, end.y].
|
|
27
|
+
if (i < startIndex + coordinates.length) {
|
|
28
|
+
path += `L${start.x * c + end.x * (1 - c)},${start.y * c + end.y * (1 - c)}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return path + 'Z';
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=create-one-side-rounded-rect-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-one-side-rounded-rect-path.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/create-one-side-rounded-rect-path.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,uDAAuD;AAEvD,MAAM,UAAU,4BAA4B,CAC1C,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAA2D,EAChF,MAAc,EACd,IAAyC;IAEzC,MAAM,WAAW,GAAG;QAClB,EAAE,CAAC,EAAE,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;QACnB,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE;QAC/B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE;KACxB,CAAC;IAEF,iCAAiC;IACjC,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAElE,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAEtD,yFAAyF;QACzF,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElH,sEAAsE;QACtE,IAAI,CAAC,KAAK,UAAU,EAAE;YACpB,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;SAC9E;QACD,0BAA0B;QAC1B,IAAI,CAAC,GAAG,UAAU,EAAE;YAClB,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;SACpG;QACD,wEAAwE;QACxE,IAAI,CAAC,GAAG,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE;YACvC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SAC9E;KACF;IACD,OAAO,IAAI,GAAG,GAAG,CAAC;AACpB,CAAC","sourcesContent":["/* eslint-disable header/header */\n// Source https://stackoverflow.com/a/65186378/16648714\n\nexport function createOneSideRoundedRectPath(\n { x, y, width, height }: { x: number; y: number; width: number; height: number },\n radius: number,\n side: 'left' | 'right' | 'top' | 'bottom'\n) {\n const coordinates = [\n { x, y },\n { x: x + width, y },\n { x: x + width, y: y + height },\n { x: x, y: y + height },\n ];\n\n // Starting from the target side.\n const startIndex = { left: 2, right: 0, top: 3, bottom: 1 }[side];\n\n let path = '';\n for (let i = startIndex; i < startIndex + coordinates.length + 1; i++) {\n const start = coordinates[i % coordinates.length];\n const end = coordinates[(i + 1) % coordinates.length];\n\n // Define curvature for the first 3 points to only add rounded corners to the first side.\n const c = radius && i < startIndex + 3 ? Math.min(radius / Math.hypot(end.x - start.x, end.y - start.y), 0.5) : 0;\n\n // Insert start point. When c=0 the start point is [start.x, start.y].\n if (i === startIndex) {\n path += `M${start.x * (1 - c) + end.x * c},${start.y * (1 - c) + end.y * c}`;\n }\n // Insert quadratic curve.\n if (i > startIndex) {\n path += `Q${start.x},${start.y} ${start.x * (1 - c) + end.x * c},${start.y * (1 - c) + end.y * c}`;\n }\n // Draw line to the end point. When c=0 the end point is [end.x, end.y].\n if (i < startIndex + coordinates.length) {\n path += `L${start.x * c + end.x * (1 - c)},${start.y * c + end.y * (1 - c)}`;\n }\n }\n return path + 'Z';\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-series.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/data-series.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAG9F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAQ3F,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAEhB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IAErC,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAE3B,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,cAAc,EAAE,EAC3D,IAAI,EACJ,UAAU,EACV,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,MAAM,EACN,MAAM,GACP,EAAE,eAAe,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"data-series.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/data-series.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAG9F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAQ3F,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;IAEhB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,iBAAiB,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAChE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IAErC,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAE3B,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,cAAc,EAAE,EAC3D,IAAI,EACJ,UAAU,EACV,SAAS,EACT,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,MAAM,EACN,MAAM,GACP,EAAE,eAAe,CAAC,CAAC,CAAC,eAqFpB"}
|
|
@@ -6,16 +6,16 @@ import { useUniqueId } from '../internal/hooks/use-unique-id';
|
|
|
6
6
|
import LineSeries from './line-series';
|
|
7
7
|
import BarSeries from './bar-series';
|
|
8
8
|
import styles from './styles.css.js';
|
|
9
|
-
import {
|
|
9
|
+
import { calculateStackedBarValues } from './utils';
|
|
10
10
|
// Should have the same value as the `border-line-chart-width` token.
|
|
11
11
|
const STROKE_WIDTH = 2;
|
|
12
12
|
export default function DataSeries({ axis, plotHeight, plotWidth, highlightedGroupIndex, highlightedSeries, stackedBars, isGroupNavigation, visibleSeries, xScale, yScale, }) {
|
|
13
13
|
const chartAreaClipPath = useUniqueId('awsui-mixed-line-bar-chart__chart-area-');
|
|
14
14
|
// Lines get a small extra space at the top and bottom to account for the strokes when they are at the edge of the graph.
|
|
15
15
|
const lineAreaClipPath = useUniqueId('awsui-line-chart__chart-area-');
|
|
16
|
-
const
|
|
16
|
+
const stackedBarValues = useMemo(() => {
|
|
17
17
|
if (!stackedBars) {
|
|
18
|
-
return
|
|
18
|
+
return undefined;
|
|
19
19
|
}
|
|
20
20
|
const barData = [];
|
|
21
21
|
visibleSeries.forEach(({ series }) => {
|
|
@@ -26,7 +26,7 @@ export default function DataSeries({ axis, plotHeight, plotWidth, highlightedGro
|
|
|
26
26
|
barData.push([]);
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
|
-
return
|
|
29
|
+
return calculateStackedBarValues(barData);
|
|
30
30
|
}, [visibleSeries, stackedBars]);
|
|
31
31
|
return (React.createElement(React.Fragment, null,
|
|
32
32
|
React.createElement("defs", { "aria-hidden": "true" },
|
|
@@ -47,7 +47,7 @@ export default function DataSeries({ axis, plotHeight, plotWidth, highlightedGro
|
|
|
47
47
|
React.createElement(LineSeries, { axis: axis, series: series, color: color, xScale: xScale, yScale: yScale, chartAreaClipPath: lineAreaClipPath })));
|
|
48
48
|
}
|
|
49
49
|
case 'bar':
|
|
50
|
-
return (React.createElement(BarSeries, { key: index, axis: axis, series: series, color: color, totalSeriesCount: visibleSeries.filter(s => s.series.type === 'bar').length, seriesIndex: index, xScale: xScale, yScale: yScale, plotSize: axis === 'y' ? plotWidth : plotHeight, highlighted: isHighlighted, dimmed: isDimmed, chartAreaClipPath: chartAreaClipPath,
|
|
50
|
+
return (React.createElement(BarSeries, { key: index, axis: axis, series: series, color: color, totalSeriesCount: visibleSeries.filter(s => s.series.type === 'bar').length, seriesIndex: index, xScale: xScale, yScale: yScale, plotSize: axis === 'y' ? plotWidth : plotHeight, highlighted: isHighlighted, dimmed: isDimmed, chartAreaClipPath: chartAreaClipPath, stackedBarValues: stackedBarValues, highlightedGroupIndex: highlightedGroupIndex }));
|
|
51
51
|
}
|
|
52
52
|
}))));
|
|
53
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-series.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/data-series.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,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"data-series.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/data-series.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\nimport clsx from 'clsx';\n\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { ChartScale, NumericChartScale } from '../internal/components/cartesian-chart/scales';\nimport LineSeries from './line-series';\nimport BarSeries from './bar-series';\nimport { ChartDataTypes, InternalChartSeries, MixedLineBarChartProps } from './interfaces';\n\nimport styles from './styles.css.js';\nimport { calculateStackedBarValues } from './utils';\n\n// Should have the same value as the `border-line-chart-width` token.\nconst STROKE_WIDTH = 2;\n\nexport interface DataSeriesProps<T> {\n axis: 'x' | 'y';\n\n plotHeight: number;\n plotWidth: number;\n\n highlightedSeries: MixedLineBarChartProps.ChartSeries<T> | null;\n highlightedGroupIndex: number | null;\n\n stackedBars: boolean;\n isGroupNavigation: boolean;\n\n visibleSeries: ReadonlyArray<InternalChartSeries<T>>;\n xScale: ChartScale;\n yScale: NumericChartScale;\n}\n\nexport default function DataSeries<T extends ChartDataTypes>({\n axis,\n plotHeight,\n plotWidth,\n highlightedGroupIndex,\n highlightedSeries,\n stackedBars,\n isGroupNavigation,\n visibleSeries,\n xScale,\n yScale,\n}: DataSeriesProps<T>) {\n const chartAreaClipPath = useUniqueId('awsui-mixed-line-bar-chart__chart-area-');\n\n // Lines get a small extra space at the top and bottom to account for the strokes when they are at the edge of the graph.\n const lineAreaClipPath = useUniqueId('awsui-line-chart__chart-area-');\n\n const stackedBarValues = useMemo(() => {\n if (!stackedBars) {\n return undefined;\n }\n const barData: Array<readonly MixedLineBarChartProps.Datum<ChartDataTypes>[]> = [];\n visibleSeries.forEach(({ series }) => {\n if (series.type === 'bar') {\n barData.push(series.data);\n } else {\n barData.push([]);\n }\n });\n return calculateStackedBarValues(barData);\n }, [visibleSeries, stackedBars]);\n\n return (\n <>\n <defs aria-hidden=\"true\">\n <clipPath id={chartAreaClipPath}>\n <rect x={0} y={0} width={plotWidth} height={plotHeight} />\n </clipPath>\n <clipPath id={lineAreaClipPath}>\n <rect x={0} y={-STROKE_WIDTH / 2} width={plotWidth} height={plotHeight + STROKE_WIDTH} />\n </clipPath>\n </defs>\n <g aria-hidden={isGroupNavigation ? true : undefined} role=\"group\">\n {visibleSeries.map(({ series, color }, index) => {\n const isHighlighted = series === highlightedSeries;\n const isDimmed = !!highlightedSeries && !isHighlighted;\n\n switch (series.type) {\n case 'line':\n case 'threshold': {\n return (\n <g\n key={index}\n role=\"group\"\n aria-label={series.title}\n className={clsx(styles.series, styles[`series--${series.type}`], {\n [styles['series--highlighted']]: isHighlighted,\n [styles['series--dimmed']]: isDimmed,\n })}\n >\n <LineSeries\n axis={axis}\n series={series}\n color={color}\n xScale={xScale}\n yScale={yScale}\n chartAreaClipPath={lineAreaClipPath}\n />\n </g>\n );\n }\n\n case 'bar':\n return (\n <BarSeries\n key={index}\n axis={axis}\n series={series}\n color={color}\n totalSeriesCount={visibleSeries.filter(s => s.series.type === 'bar').length}\n seriesIndex={index}\n xScale={xScale}\n yScale={yScale}\n plotSize={axis === 'y' ? plotWidth : plotHeight}\n highlighted={isHighlighted}\n dimmed={isDimmed}\n chartAreaClipPath={chartAreaClipPath}\n stackedBarValues={stackedBarValues}\n highlightedGroupIndex={highlightedGroupIndex}\n />\n );\n }\n })}\n </g>\n </>\n );\n}\n"]}
|
|
@@ -16,15 +16,8 @@ export declare function findNavigableSeries<T extends ChartDataTypes>(series: Re
|
|
|
16
16
|
* With a special treat for Date values which need to be converted to numbers first.
|
|
17
17
|
*/
|
|
18
18
|
export declare const matchesX: <T>(x1: T, x2: T) => boolean;
|
|
19
|
-
export type
|
|
20
|
-
export
|
|
21
|
-
positiveOffsets: OffsetMap;
|
|
22
|
-
negativeOffsets: OffsetMap;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Calculates list of offset maps from all data by accumulating each value
|
|
26
|
-
*/
|
|
27
|
-
export declare function calculateOffsetMaps(data: Array<readonly MixedLineBarChartProps.Datum<ChartDataTypes>[]>): StackedOffsets[];
|
|
19
|
+
export type StackedBarValues = Map<string | number, Map<number, number>>;
|
|
20
|
+
export declare function calculateStackedBarValues(dataBySeries: Array<readonly MixedLineBarChartProps.Datum<ChartDataTypes>[]>): StackedBarValues;
|
|
28
21
|
/** Returns string or number value for ChartDataTypes key */
|
|
29
22
|
export declare const getKeyValue: (key: ChartDataTypes) => string | number;
|
|
30
23
|
export declare function isYThreshold<T>(series: MixedLineBarChartProps.ChartSeries<T>): series is MixedLineBarChartProps.YThresholdSeries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAIhE,CAAC;AAGF,eAAO,MAAM,oBAAoB,sBAAuB,MAAM,+DAqB7D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;;;EAgB1G;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,8BAKpB,CAAC;AAEF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAIhE,CAAC;AAGF,eAAO,MAAM,oBAAoB,sBAAuB,MAAM,+DAqB7D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;;;EAgB1G;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,8BAKpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAIzE,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,KAAK,CAAC,SAAS,sBAAsB,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,GAC3E,gBAAgB,CAmBlB;AAED,4DAA4D;AAC5D,eAAO,MAAM,WAAW,QAAS,cAAc,oBAAgD,CAAC;AAEhG,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAC5C,MAAM,IAAI,sBAAsB,CAAC,gBAAgB,CAEnD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAC5C,MAAM,IAAI,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAEtD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC,GAC5C,MAAM,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAEhD"}
|
|
@@ -55,36 +55,29 @@ export const matchesX = (x1, x2) => {
|
|
|
55
55
|
}
|
|
56
56
|
return x1 === x2;
|
|
57
57
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
: { positiveOffsets: new Map(), negativeOffsets: new Map() };
|
|
71
|
-
curr.forEach(({ x, y }) => {
|
|
72
|
-
const key = getKeyValue(x);
|
|
73
|
-
if (y < 0) {
|
|
74
|
-
const lastValue = (lastMap === null || lastMap === void 0 ? void 0 : lastMap.negativeOffsets.get(key)) || 0;
|
|
75
|
-
map.negativeOffsets.set(key, lastValue + y);
|
|
58
|
+
// Unlike for regular bars, stacked bar series values depend on the predecessors.
|
|
59
|
+
// The function computes all stacked values grouped by X and series index.
|
|
60
|
+
export function calculateStackedBarValues(dataBySeries) {
|
|
61
|
+
var _a, _b, _c, _d;
|
|
62
|
+
const negativeValues = new Map();
|
|
63
|
+
const positiveValues = new Map();
|
|
64
|
+
const values = new Map();
|
|
65
|
+
for (let seriesIndex = 0; seriesIndex < dataBySeries.length; seriesIndex++) {
|
|
66
|
+
for (const datum of dataBySeries[seriesIndex]) {
|
|
67
|
+
const key = getKeyValue(datum.x);
|
|
68
|
+
if (datum.y < 0) {
|
|
69
|
+
negativeValues.set(key, ((_a = negativeValues.get(key)) !== null && _a !== void 0 ? _a : 0) + datum.y);
|
|
76
70
|
}
|
|
77
71
|
else {
|
|
78
|
-
|
|
79
|
-
map.positiveOffsets.set(key, lastValue + y);
|
|
72
|
+
positiveValues.set(key, ((_b = positiveValues.get(key)) !== null && _b !== void 0 ? _b : 0) + datum.y);
|
|
80
73
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
74
|
+
const seriesValue = (_c = (datum.y < 0 ? negativeValues.get(key) : positiveValues.get(key))) !== null && _c !== void 0 ? _c : 0;
|
|
75
|
+
const valuesByIndex = (_d = values.get(key)) !== null && _d !== void 0 ? _d : new Map();
|
|
76
|
+
valuesByIndex.set(seriesIndex, seriesValue);
|
|
77
|
+
values.set(key, valuesByIndex);
|
|
85
78
|
}
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
}
|
|
80
|
+
return values;
|
|
88
81
|
}
|
|
89
82
|
/** Returns string or number value for ChartDataTypes key */
|
|
90
83
|
export const getKeyValue = (key) => (key instanceof Date ? key.getTime() : key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/utils.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,cAAc,GAA0C;IACnE,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,WAAW;IAChB,SAAS,EAAE,QAAQ;CACpB,CAAC;AAEF,0GAA0G;AAC1G,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAI,cAAsB,EAAE,SAA8B,EAAE,SAAS,GAAG,CAAC,EAAE,EAAE;IAC/G,IAAI,KAAK,GAAG,cAAc,CAAC;IAE3B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE;QAC1C,KAAK,GAAG,CAAC,CAAC;KACX;IAED,GAAG;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;YACxD,OAAO,KAAK,CAAC;SACd;QACD,KAAK,IAAI,SAAS,CAAC;QAEnB,0CAA0C;QAC1C,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE;YAC7B,KAAK,GAAG,CAAC,CAAC;SACX;aAAM,IAAI,KAAK,GAAG,CAAC,EAAE;YACpB,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;SAC9B;KACF,QAAQ,KAAK,KAAK,cAAc,EAAE;IACnC,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAA2B,MAA6C;IACzG,MAAM,eAAe,GAAiD,EAAE,CAAC;IACzE,IAAI,uBAAuB,GAAG,CAAC,CAAC,CAAC;IAEjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;QAC9B,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;YACxC,8EAA8E;YAC9E,IAAI,uBAAuB,KAAK,CAAC,CAAC,EAAE;gBAClC,uBAAuB,GAAG,eAAe,CAAC,MAAM,CAAC;gBACjD,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;aAC7C;SACF;aAAM;YACL,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC7C;IACH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,EAAK,EAAE,EAAK,EAAE,EAAE;IAC1C,IAAI,EAAE,YAAY,IAAI,IAAI,EAAE,YAAY,IAAI,EAAE;QAC5C,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;KACtC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/mixed-line-bar-chart/utils.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 { ChartSeriesMarkerType } from '../internal/components/chart-series-marker';\nimport { ChartDataTypes, InternalChartSeries, MixedLineBarChartProps } from './interfaces';\nimport { ScaledBarGroup } from './make-scaled-bar-groups';\n\nexport const chartLegendMap: Record<string, ChartSeriesMarkerType> = {\n line: 'line',\n bar: 'rectangle',\n threshold: 'dashed',\n};\n\n// Starting from the given index, find the first x value in the x domain that has bar data attached to it.\nexport const nextValidDomainIndex = <T>(nextGroupIndex: number, barGroups: ScaledBarGroup<T>[], direction = 1) => {\n let index = nextGroupIndex;\n\n if (index < 0 || index >= barGroups.length) {\n index = 0;\n }\n\n do {\n if (barGroups[index].isValid && barGroups[index].hasData) {\n return index;\n }\n index += direction;\n\n // Loop back to the beginning if necessary\n if (index >= barGroups.length) {\n index = 0;\n } else if (index < 0) {\n index = barGroups.length - 1;\n }\n } while (index !== nextGroupIndex);\n return 0;\n};\n\n/**\n * Find the subset of series that are individually navigable with keyboard.\n * Lines and thresholds are navigated individually, while bar series are grouped as one.\n */\nexport function findNavigableSeries<T extends ChartDataTypes>(series: ReadonlyArray<InternalChartSeries<T>>) {\n const navigableSeries: Array<MixedLineBarChartProps.ChartSeries<T>> = [];\n let navigableBarSeriesIndex = -1;\n\n series.forEach(internalSeries => {\n if (internalSeries.series.type === 'bar') {\n // Only include the first bar series because all bar series are handled as one\n if (navigableBarSeriesIndex === -1) {\n navigableBarSeriesIndex = navigableSeries.length;\n navigableSeries.push(internalSeries.series);\n }\n } else {\n navigableSeries.push(internalSeries.series);\n }\n });\n return { navigableSeries, navigableBarSeriesIndex };\n}\n\n/**\n * Checks if two x values are equal.\n * With a special treat for Date values which need to be converted to numbers first.\n */\nexport const matchesX = <T>(x1: T, x2: T) => {\n if (x1 instanceof Date && x2 instanceof Date) {\n return x1.getTime() === x2.getTime();\n }\n return x1 === x2;\n};\n\nexport type StackedBarValues = Map<string | number, Map<number, number>>;\n\n// Unlike for regular bars, stacked bar series values depend on the predecessors.\n// The function computes all stacked values grouped by X and series index.\nexport function calculateStackedBarValues(\n dataBySeries: Array<readonly MixedLineBarChartProps.Datum<ChartDataTypes>[]>\n): StackedBarValues {\n const negativeValues = new Map<string | number, number>();\n const positiveValues = new Map<string | number, number>();\n const values = new Map<string | number, Map<number, number>>();\n for (let seriesIndex = 0; seriesIndex < dataBySeries.length; seriesIndex++) {\n for (const datum of dataBySeries[seriesIndex]) {\n const key = getKeyValue(datum.x);\n if (datum.y < 0) {\n negativeValues.set(key, (negativeValues.get(key) ?? 0) + datum.y);\n } else {\n positiveValues.set(key, (positiveValues.get(key) ?? 0) + datum.y);\n }\n const seriesValue = (datum.y < 0 ? negativeValues.get(key) : positiveValues.get(key)) ?? 0;\n const valuesByIndex = values.get(key) ?? new Map<number, number>();\n valuesByIndex.set(seriesIndex, seriesValue);\n values.set(key, valuesByIndex);\n }\n }\n return values;\n}\n\n/** Returns string or number value for ChartDataTypes key */\nexport const getKeyValue = (key: ChartDataTypes) => (key instanceof Date ? key.getTime() : key);\n\nexport function isYThreshold<T>(\n series: MixedLineBarChartProps.ChartSeries<T>\n): series is MixedLineBarChartProps.YThresholdSeries {\n return series.type === 'threshold' && 'y' in series;\n}\n\nexport function isXThreshold<T>(\n series: MixedLineBarChartProps.ChartSeries<T>\n): series is MixedLineBarChartProps.XThresholdSeries<T> {\n return series.type === 'threshold' && 'x' in series;\n}\n\nexport function isDataSeries<T>(\n series: MixedLineBarChartProps.ChartSeries<T>\n): series is MixedLineBarChartProps.DataSeries<T> {\n return series.type === 'line' || series.type === 'bar';\n}\n"]}
|
package/package.json
CHANGED
package/spinner/styles.css.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"root": "
|
|
5
|
-
"spinner-rotator": "awsui_spinner-
|
|
6
|
-
"size-normal": "awsui_size-
|
|
7
|
-
"size-big": "awsui_size-
|
|
8
|
-
"size-large": "awsui_size-
|
|
9
|
-
"variant-normal": "awsui_variant-
|
|
10
|
-
"variant-disabled": "awsui_variant-
|
|
11
|
-
"variant-inverted": "awsui_variant-
|
|
12
|
-
"circle": "
|
|
13
|
-
"circle-left": "awsui_circle-
|
|
14
|
-
"spinner-line-left": "awsui_spinner-line-
|
|
15
|
-
"circle-right": "awsui_circle-
|
|
16
|
-
"spinner-line-right": "awsui_spinner-line-
|
|
4
|
+
"root": "awsui_root_1612d_oxpob_133",
|
|
5
|
+
"spinner-rotator": "awsui_spinner-rotator_1612d_oxpob_1",
|
|
6
|
+
"size-normal": "awsui_size-normal_1612d_oxpob_147",
|
|
7
|
+
"size-big": "awsui_size-big_1612d_oxpob_155",
|
|
8
|
+
"size-large": "awsui_size-large_1612d_oxpob_163",
|
|
9
|
+
"variant-normal": "awsui_variant-normal_1612d_oxpob_171",
|
|
10
|
+
"variant-disabled": "awsui_variant-disabled_1612d_oxpob_174",
|
|
11
|
+
"variant-inverted": "awsui_variant-inverted_1612d_oxpob_177",
|
|
12
|
+
"circle": "awsui_circle_1612d_oxpob_189",
|
|
13
|
+
"circle-left": "awsui_circle-left_1612d_oxpob_217",
|
|
14
|
+
"spinner-line-left": "awsui_spinner-line-left_1612d_oxpob_1",
|
|
15
|
+
"circle-right": "awsui_circle-right_1612d_oxpob_222",
|
|
16
|
+
"spinner-line-right": "awsui_spinner-line-right_1612d_oxpob_1"
|
|
17
17
|
};
|
|
18
18
|
|