@cloudscape-design/components-themeable 3.0.94 → 3.0.95
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/lib/internal/template/THIRD-PARTY-LICENSES +225 -1
- package/lib/internal/template/internal/components/cartesian-chart/scales.d.ts +1 -1
- package/lib/internal/template/internal/components/cartesian-chart/scales.d.ts.map +1 -1
- package/lib/internal/template/internal/components/cartesian-chart/scales.js +1 -1
- package/lib/internal/template/internal/components/cartesian-chart/scales.js.map +1 -1
- package/lib/internal/template/internal/environment.js +1 -1
- package/lib/internal/template/internal/vendor/d3-scale.d.ts +2 -0
- package/lib/internal/template/internal/vendor/d3-scale.d.ts.map +1 -0
- package/lib/internal/template/internal/vendor/d3-scale.js +2995 -0
- package/lib/internal/template/internal/vendor/d3-scale.js.map +1 -0
- package/lib/internal/template/mixed-line-bar-chart/bar-series.js.map +1 -1
- package/lib/internal/template/package-lock.json +781 -329
- package/lib/internal/template/package.json +0 -1
- package/lib/internal/template/test-utils/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"d3-scale.js","sourceRoot":"","sources":["../../../../src/internal/vendor/d3-scale.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,+FAA+F;AAC/F,+EAA+E;AAC/E,gFAAgF;AAChF,iCAAiC;AACjC,iDAAiD;AACjD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAgD,MAAM,UAAU,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is only for the compiler. The artifacts will contain the generated bundle instead.\n// `d3-scale` and its transitive dependencies are using ESM format which causes\n// issues during unit tests at clients using jest and do not have the associated\n// jest-preset package installed.\n// eslint-disable-next-line no-restricted-imports\nexport { scaleLinear, scaleLog, scaleTime, scaleBand, ScaleContinuousNumeric, ScaleTime, ScaleBand } from 'd3-scale';\n"]}
|
|
@@ -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 '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[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(\n ({ x, y, width, height }, i) =>\n isFinite(x) &&\n isFinite(height) && (\n <rect\n key={`bar-${i}`}\n fill={color}\n x={axis === 'x' ? x : y - height}\n y={axis === 'x' ? y : x}\n width={axis === 'x' ? width : height}\n height={axis === 'x' ? height : width}\n rx={isRefresh ? '4px' : '0px'}\n className={clsx(styles.series__rect, {\n [styles['series--dimmed']]:\n highlightedXValue !== null && !matchesX(highlightedXValue, series.data[i].x),\n })}\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, { 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[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(\n ({ x, y, width, height }, i) =>\n isFinite(x) &&\n isFinite(height) && (\n <rect\n key={`bar-${i}`}\n fill={color}\n x={axis === 'x' ? x : y - height}\n y={axis === 'x' ? y : x}\n width={axis === 'x' ? width : height}\n height={axis === 'x' ? height : width}\n rx={isRefresh ? '4px' : '0px'}\n className={clsx(styles.series__rect, {\n [styles['series--dimmed']]:\n highlightedXValue !== null && !matchesX(highlightedXValue, series.data[i].x),\n })}\n />\n )\n )}\n </g>\n );\n}\n"]}
|