layerchart 2.0.0-next.61 → 2.0.0-next.63
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/dist/canvas.d.ts +6 -2
- package/dist/canvas.js +6 -2
- package/dist/components/Arc/Arc.base.svelte +49 -11
- package/dist/components/Arc/Arc.shared.svelte.d.ts +2 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-full-circle--360-degree-range--1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-full-circle--360-degree-range--2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-innerRadius-of-0--pie-slice--1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-innerRadius-of-0--pie-slice--2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-negative-domain-values-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-negative-domain-values-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-partial-arc--e-g---180-degrees--1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-partial-arc--e-g---180-degrees--2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-at-max-domain-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-at-max-domain-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-below-domain-min-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-below-domain-min-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-exceeding-domain-max-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-exceeding-domain-max-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-of-0-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-edge-cases-should-handle-value-of-0-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-pointer-enter-events-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-pointer-enter-events-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-pointer-move-events-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-pointer-move-events-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-touch-move-events-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-events-should-handle-touch-move-events-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-custom-class-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-custom-class-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-fill-color-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-fill-color-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-fillOpacity-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-fillOpacity-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-offset-to-arc-position-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-offset-to-arc-position-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-opacity-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-opacity-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-stroke-color-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-stroke-color-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-strokeWidth-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-strokeWidth-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-zero-offset-by-default-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-apply-zero-offset-by-default-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-call-tooltip-hide-on-pointer-leave-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-call-tooltip-hide-on-pointer-leave-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-call-tooltip-show-on-pointer-enter-with-data-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-call-tooltip-show-on-pointer-enter-with-data-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-handle-custom-start-angle-in-range-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-handle-custom-start-angle-in-range-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-have-stroke--none--by-default-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-have-stroke--none--by-default-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-an-arc-path-with-value-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-an-arc-path-with-value-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-when-track-prop-is-provided-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-when-track-prop-is-provided-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-custom-class-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-custom-class-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackCornerRadius-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackCornerRadius-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackEndAngle-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackEndAngle-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackInnerRadius-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackInnerRadius-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackInnerRadius-and-trackOuterRadius-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackInnerRadius-and-trackOuterRadius-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackOuterRadius-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackOuterRadius-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackPadAngle-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackPadAngle-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackStartAngle-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackStartAngle-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackStartAngle-and-trackEndAngle-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-track-with-trackStartAngle-and-trackEndAngle-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-both-startAngle-and-endAngle-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-both-startAngle-and-endAngle-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-cornerRadius-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-cornerRadius-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-domain-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-domain-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-domain-and-range-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-domain-and-range-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-range-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-custom-range-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-endAngle-in-radians-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-endAngle-in-radians-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-innerRadius-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-innerRadius-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-innerRadius-and-outerRadius-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-innerRadius-and-outerRadius-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-outerRadius-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-outerRadius-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-padAngle-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-padAngle-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-startAngle-in-radians-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-props-should-render-with-startAngle-in-radians-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-should-render-Arc-element-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-should-render-Arc-element-2.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-should-render-track-1.png +0 -0
- package/dist/components/Arc/__screenshots__/Arc.svelte.test.ts/Arc-should-render-track-2.png +0 -0
- package/dist/components/ArcLabel/ArcLabel.shared.svelte.d.ts +1 -0
- package/dist/components/{ArcLabel.svelte.test.js → ArcLabel/ArcLabel.svelte.test.js} +3 -3
- package/dist/components/ArcLabel/__screenshots__/ArcLabel.svelte.test.ts/ArcLabel-renders-a-text-element-with-the-supplied-value-at-the-centroid-1.png +0 -0
- package/dist/components/ArcLabel/__screenshots__/ArcLabel.svelte.test.ts/ArcLabel-renders-a-text-element-with-the-supplied-value-at-the-centroid-2.png +0 -0
- package/dist/components/Blur/Blur.canvas.svelte +25 -0
- package/dist/components/Blur/Blur.canvas.svelte.d.ts +4 -0
- package/dist/components/Blur/Blur.html.svelte +11 -0
- package/dist/components/Blur/Blur.html.svelte.d.ts +4 -0
- package/dist/components/{Blur.svelte.d.ts → Blur/Blur.shared.svelte.d.ts} +3 -5
- package/dist/components/Blur/Blur.svelte +23 -0
- package/dist/components/Blur/Blur.svelte.d.ts +4 -0
- package/dist/components/Blur/Blur.svg.svelte +24 -0
- package/dist/components/Blur/Blur.svg.svelte.d.ts +4 -0
- package/dist/components/Chart/Chart.base.svelte +13 -7
- package/dist/components/Chart/ChartCore.svelte.test.d.ts +1 -0
- package/dist/components/{ChartCore.svelte.test.js → Chart/ChartCore.svelte.test.js} +1 -1
- package/dist/components/Circle/Circle.shared.svelte.js +24 -5
- package/dist/components/Circle/Circle.svelte.test.js +70 -0
- package/dist/components/Dodge/Dodge.shared.svelte.d.ts +132 -0
- package/dist/components/Dodge/Dodge.shared.svelte.js +240 -0
- package/dist/components/Dodge/Dodge.svelte +88 -0
- package/dist/components/Dodge/Dodge.svelte.d.ts +27 -0
- package/dist/components/Dodge/Dodge.test.d.ts +1 -0
- package/dist/components/Dodge/Dodge.test.js +128 -0
- package/dist/components/Image/Image.html.svelte +0 -8
- package/dist/components/Image/Image.svg.svelte +1 -9
- package/dist/components/Link/Link.base.svelte +15 -9
- package/dist/components/Path/Path.canvas.svelte +5 -2
- package/dist/components/Path/Path.shared.svelte.d.ts +17 -4
- package/dist/components/Path/Path.shared.svelte.js +26 -8
- package/dist/components/Path/Path.svg.svelte +75 -60
- package/dist/components/Pattern/Pattern.canvas.svelte +4 -1
- package/dist/components/Pattern/Pattern.shared.svelte.d.ts +31 -2
- package/dist/components/Pattern/Pattern.shared.svelte.js +20 -1
- package/dist/components/Pattern/Pattern.svg.svelte +17 -1
- package/dist/components/Raster/Raster.base.svelte +2 -8
- package/dist/components/Rect/Rect.canvas.svelte +2 -4
- package/dist/components/Rect/Rect.canvas.svelte.d.ts +1 -1
- package/dist/components/Rect/Rect.html.svelte +3 -9
- package/dist/components/Rect/Rect.html.svelte.d.ts +1 -1
- package/dist/components/Rect/Rect.shared.svelte.d.ts +5 -2
- package/dist/components/Rect/Rect.shared.svelte.js +26 -13
- package/dist/components/Rect/Rect.svelte.test.js +45 -0
- package/dist/components/Rect/Rect.svg.svelte +36 -21
- package/dist/components/Rect/Rect.svg.svelte.d.ts +1 -1
- package/dist/components/RectClipPath/RectClipPath.base.svelte +25 -1
- package/dist/components/RectClipPath/RectClipPath.shared.svelte.d.ts +8 -0
- package/dist/components/Spline/Spline.base.svelte +3 -2
- package/dist/components/Text/Text.canvas.svelte +9 -0
- package/dist/components/Text/Text.html.svelte +6 -0
- package/dist/components/Text/Text.shared.svelte.d.ts +25 -2
- package/dist/components/Text/Text.shared.svelte.js +36 -5
- package/dist/components/Text/Text.svelte.test.js +40 -0
- package/dist/components/Text/Text.svg.svelte +7 -1
- package/dist/components/Trail/Trail.base.svelte +10 -7
- package/dist/components/Waffle/Waffle.shared.svelte.d.ts +182 -0
- package/dist/components/Waffle/Waffle.shared.svelte.js +300 -0
- package/dist/components/Waffle/Waffle.svelte +148 -0
- package/dist/components/Waffle/Waffle.svelte.d.ts +5 -0
- package/dist/components/charts/__screenshots__/ArcChart.svelte.test.ts/ArcChart-uses-the-chart-value-accessor-for-explicit-per-series-tooltip-values-1.png +0 -0
- package/dist/components/charts/__screenshots__/ArcChart.svelte.test.ts/ArcChart-uses-the-chart-value-accessor-for-explicit-per-series-tooltip-values-2.png +0 -0
- package/dist/components/charts/__screenshots__/BarChart.svelte.test.ts/BarChart-legend-series-toggle-adjusts-group-scale-should-adjust-grouped-bar-widths-when-series-are-toggled-via-legend-1.png +0 -0
- package/dist/components/charts/__screenshots__/PieChart.svelte.test.ts/PieChart-uses-hovered-slice-identity-for-implicit-tooltip-series-1.png +0 -0
- package/dist/components/charts/__screenshots__/PieChart.svelte.test.ts/PieChart-uses-hovered-slice-identity-for-implicit-tooltip-series-2.png +0 -0
- package/dist/components/index.d.ts +6 -2
- package/dist/components/index.js +6 -2
- package/dist/html.d.ts +6 -2
- package/dist/html.js +6 -2
- package/dist/states/chart.svelte.d.ts +4 -2
- package/dist/states/chart.svelte.js +53 -22
- package/dist/states/chart.svelte.test.js +54 -1
- package/dist/states/series.svelte.js +9 -13
- package/dist/states/series.svelte.test.js +5 -1
- package/dist/svg.d.ts +6 -2
- package/dist/svg.js +6 -2
- package/dist/utils/canvas.js +54 -13
- package/dist/utils/canvas.svelte.test.js +44 -0
- package/dist/utils/download.d.ts +5 -3
- package/dist/utils/download.js +36 -16
- package/dist/utils/stack.js +10 -2
- package/package.json +1 -1
- package/dist/components/Blur.svelte +0 -49
- /package/dist/components/{ArcLabel.svelte.test.d.ts → ArcLabel/ArcLabel.svelte.test.d.ts} +0 -0
- /package/dist/components/{ChartCore.svelte.test.d.ts → Blur/Blur.shared.svelte.js} +0 -0
package/dist/utils/download.js
CHANGED
|
@@ -27,6 +27,12 @@ const SVG_STYLE_PROPERTIES = [
|
|
|
27
27
|
'alignment-baseline',
|
|
28
28
|
'visibility',
|
|
29
29
|
'display',
|
|
30
|
+
// `<Text>` wraps each label in a nested `<svg class="lc-text-svg">` that
|
|
31
|
+
// relies on `overflow: visible` so labels can render outside the wrapper
|
|
32
|
+
// (axis ticks positioned at negative x). Without this inlined, the
|
|
33
|
+
// rasteriser falls back to the spec default `overflow: hidden` and clips
|
|
34
|
+
// the labels.
|
|
35
|
+
'overflow',
|
|
30
36
|
'paint-order',
|
|
31
37
|
'shape-rendering',
|
|
32
38
|
'text-rendering',
|
|
@@ -58,9 +64,16 @@ function inlineSvgStyles(svg) {
|
|
|
58
64
|
}
|
|
59
65
|
/**
|
|
60
66
|
* Draw an SVG element onto a canvas context at the given pixel dimensions.
|
|
67
|
+
* Sets `viewBox` (if not authored) so the SVG content scales to fill the
|
|
68
|
+
* destination size — without it, increasing the `width`/`height` attributes
|
|
69
|
+
* leaves content at its original pixel coordinates and the result lands in
|
|
70
|
+
* the top-left.
|
|
61
71
|
*/
|
|
62
|
-
function drawSvgToCanvas(svg, ctx, pixelWidth, pixelHeight) {
|
|
72
|
+
function drawSvgToCanvas(svg, ctx, pixelWidth, pixelHeight, cssWidth, cssHeight) {
|
|
63
73
|
const inlined = inlineSvgStyles(svg);
|
|
74
|
+
if (!inlined.getAttribute('viewBox')) {
|
|
75
|
+
inlined.setAttribute('viewBox', `0 0 ${cssWidth} ${cssHeight}`);
|
|
76
|
+
}
|
|
64
77
|
inlined.setAttribute('width', String(pixelWidth));
|
|
65
78
|
inlined.setAttribute('height', String(pixelHeight));
|
|
66
79
|
const svgStr = new XMLSerializer().serializeToString(inlined);
|
|
@@ -69,7 +82,7 @@ function drawSvgToCanvas(svg, ctx, pixelWidth, pixelHeight) {
|
|
|
69
82
|
return new Promise((resolve, reject) => {
|
|
70
83
|
const img = new Image();
|
|
71
84
|
img.onload = () => {
|
|
72
|
-
ctx.drawImage(img, 0, 0);
|
|
85
|
+
ctx.drawImage(img, 0, 0, pixelWidth, pixelHeight);
|
|
73
86
|
URL.revokeObjectURL(url);
|
|
74
87
|
resolve();
|
|
75
88
|
};
|
|
@@ -90,9 +103,22 @@ function drawSvgToCanvas(svg, ctx, pixelWidth, pixelHeight) {
|
|
|
90
103
|
*/
|
|
91
104
|
export async function getChartImageBlob(container, options = {}) {
|
|
92
105
|
const { background, format = 'png', quality = 0.92 } = options;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
const
|
|
106
|
+
// Default to 1 so PNGs match the chart's on-page size; pass
|
|
107
|
+
// `pixelRatio: window.devicePixelRatio` (or higher) for retina-sharp output.
|
|
108
|
+
const dpr = options.pixelRatio ?? 1;
|
|
109
|
+
// Find all SVG and Canvas layers within the container, sorted by z-index.
|
|
110
|
+
// The class-name selector implicitly excludes `.lc-hit-canvas`.
|
|
111
|
+
const layers = Array.from(container.querySelectorAll('.lc-layout-svg, .lc-layout-canvas')).sort((a, b) => {
|
|
112
|
+
const aZ = parseFloat(window.getComputedStyle(a).zIndex) || 0;
|
|
113
|
+
const bZ = parseFloat(window.getComputedStyle(b).zIndex) || 0;
|
|
114
|
+
return aZ - bZ;
|
|
115
|
+
});
|
|
116
|
+
// Size the output to the chart layers (all share the same bounds) rather
|
|
117
|
+
// than the wrapping container, so padding/margin doesn't leave blank
|
|
118
|
+
// space on the right/bottom of the image.
|
|
119
|
+
const layerRect = layers[0]?.getBoundingClientRect();
|
|
120
|
+
const cssWidth = layerRect?.width || container.clientWidth;
|
|
121
|
+
const cssHeight = layerRect?.height || container.clientHeight;
|
|
96
122
|
const pixelWidth = Math.round(cssWidth * dpr);
|
|
97
123
|
const pixelHeight = Math.round(cssHeight * dpr);
|
|
98
124
|
const offscreen = document.createElement('canvas');
|
|
@@ -105,21 +131,15 @@ export async function getChartImageBlob(container, options = {}) {
|
|
|
105
131
|
ctx.fillStyle = bg;
|
|
106
132
|
ctx.fillRect(0, 0, pixelWidth, pixelHeight);
|
|
107
133
|
}
|
|
108
|
-
// Find all SVG and Canvas layers within the container, sorted by z-index.
|
|
109
|
-
// `.lc-hit-canvas` is excluded via the class selector (it uses `.lc-layout-canvas`).
|
|
110
|
-
const layers = Array.from(container.querySelectorAll('.lc-layout-svg, .lc-layout-canvas')).sort((a, b) => {
|
|
111
|
-
const aZ = parseFloat(window.getComputedStyle(a).zIndex) || 0;
|
|
112
|
-
const bZ = parseFloat(window.getComputedStyle(b).zIndex) || 0;
|
|
113
|
-
return aZ - bZ;
|
|
114
|
-
});
|
|
115
134
|
for (const layer of layers) {
|
|
116
135
|
if (layer instanceof SVGElement) {
|
|
117
|
-
await drawSvgToCanvas(layer, ctx, pixelWidth, pixelHeight);
|
|
136
|
+
await drawSvgToCanvas(layer, ctx, pixelWidth, pixelHeight, cssWidth, cssHeight);
|
|
118
137
|
}
|
|
119
138
|
else if (layer instanceof HTMLCanvasElement) {
|
|
120
|
-
// Canvas
|
|
121
|
-
//
|
|
122
|
-
|
|
139
|
+
// Canvas bitmaps are sized to `cssSize × window.devicePixelRatio`
|
|
140
|
+
// (set by `scaleCanvas`). Map them to the requested output size so
|
|
141
|
+
// the result matches `pixelRatio`.
|
|
142
|
+
ctx.drawImage(layer, 0, 0, pixelWidth, pixelHeight);
|
|
123
143
|
}
|
|
124
144
|
}
|
|
125
145
|
return new Promise((resolve, reject) => {
|
package/dist/utils/stack.js
CHANGED
|
@@ -14,7 +14,11 @@ export function groupStackData(data, options) {
|
|
|
14
14
|
...new Set(groupData.map((d) => d[options.stackBy ?? ''])),
|
|
15
15
|
];
|
|
16
16
|
// @ts-expect-error
|
|
17
|
-
const stackData = stack()
|
|
17
|
+
const stackData = stack()
|
|
18
|
+
.keys(stackKeys)
|
|
19
|
+
.value((d, key) => d[key] ?? 0)
|
|
20
|
+
.order(options.order)
|
|
21
|
+
.offset(options.offset)(pivotData);
|
|
18
22
|
return stackData.flatMap((series) => {
|
|
19
23
|
return series.flatMap((s) => {
|
|
20
24
|
const keys = {
|
|
@@ -43,7 +47,11 @@ export function groupStackData(data, options) {
|
|
|
43
47
|
// @ts-expect-error
|
|
44
48
|
const stackKeys = [...new Set(data.map((d) => d[options.stackBy ?? '']))];
|
|
45
49
|
// @ts-expect-error
|
|
46
|
-
const stackData = stack()
|
|
50
|
+
const stackData = stack()
|
|
51
|
+
.keys(stackKeys)
|
|
52
|
+
.value((d, key) => d[key] ?? 0)
|
|
53
|
+
.order(options.order)
|
|
54
|
+
.offset(options.offset)(pivotData);
|
|
47
55
|
const result = stackData.flatMap((series) => {
|
|
48
56
|
return series.flatMap((s) => {
|
|
49
57
|
const keys = {
|
package/package.json
CHANGED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
export type BlurProps = {
|
|
3
|
-
/**
|
|
4
|
-
* A unique id for the filter.
|
|
5
|
-
*/
|
|
6
|
-
id?: string;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* The standard deviation for the blur effect.
|
|
10
|
-
*
|
|
11
|
-
* @default 5
|
|
12
|
-
*/
|
|
13
|
-
stdDeviation?: number;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* The default children snippet which provides
|
|
17
|
-
* the id for the filter.
|
|
18
|
-
*/
|
|
19
|
-
children?: Snippet;
|
|
20
|
-
};
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
<script lang="ts">
|
|
24
|
-
import type { Snippet } from 'svelte';
|
|
25
|
-
import { getLayerContext } from '../contexts/layer.js';
|
|
26
|
-
import { createId } from '../utils/createId.js';
|
|
27
|
-
|
|
28
|
-
const uid = $props.id();
|
|
29
|
-
|
|
30
|
-
let { id = createId('blur-', uid), stdDeviation = 5, children }: BlurProps = $props();
|
|
31
|
-
|
|
32
|
-
const layerCtx = getLayerContext();
|
|
33
|
-
</script>
|
|
34
|
-
|
|
35
|
-
{#if layerCtx === 'svg'}
|
|
36
|
-
<defs>
|
|
37
|
-
<filter {id} class="lc-blur-filter">
|
|
38
|
-
<feGaussianBlur in="SourceGraphic" {stdDeviation} />
|
|
39
|
-
</filter>
|
|
40
|
-
</defs>
|
|
41
|
-
|
|
42
|
-
{#if children}
|
|
43
|
-
<g filter="url(#{id})" class="lc-blur-g">
|
|
44
|
-
{@render children()}
|
|
45
|
-
</g>
|
|
46
|
-
{/if}
|
|
47
|
-
{:else if children}
|
|
48
|
-
{@render children()}
|
|
49
|
-
{/if}
|
|
File without changes
|
|
File without changes
|