diff --git a/.changeset/bumpy-breads-rhyme.md b/.changeset/bumpy-breads-rhyme.md
new file mode 100644
index 000000000..13f10d948
--- /dev/null
+++ b/.changeset/bumpy-breads-rhyme.md
@@ -0,0 +1,5 @@
+---
+'layerchart': patch
+---
+
+fix(GeoPath): Do not register with hit canavs unless pointer events (onclick, onpointermove, etc) or tooltipContext are defined
diff --git a/.changeset/huge-boats-fix.md b/.changeset/huge-boats-fix.md
new file mode 100644
index 000000000..b9c90cb80
--- /dev/null
+++ b/.changeset/huge-boats-fix.md
@@ -0,0 +1,5 @@
+---
+'layerchart': patch
+---
+
+docs: Document each component's context support (svg, canvas, html) with interactive toggle
diff --git a/.changeset/ninety-ghosts-taste.md b/.changeset/ninety-ghosts-taste.md
new file mode 100644
index 000000000..a9770cbda
--- /dev/null
+++ b/.changeset/ninety-ghosts-taste.md
@@ -0,0 +1,5 @@
+---
+'layerchart': patch
+---
+
+breaking(Blur): Remove children snippet props (not needed and easier to support canvas in the future)
diff --git a/.changeset/pink-flies-worry.md b/.changeset/pink-flies-worry.md
new file mode 100644
index 000000000..2d6e97a4c
--- /dev/null
+++ b/.changeset/pink-flies-worry.md
@@ -0,0 +1,5 @@
+---
+'layerchart': patch
+---
+
+fix(Calendar|MonthPath): Support canvas by using `Spline` instead of `path`
diff --git a/.changeset/tangy-lies-strive.md b/.changeset/tangy-lies-strive.md
new file mode 100644
index 000000000..dccb7e7a9
--- /dev/null
+++ b/.changeset/tangy-lies-strive.md
@@ -0,0 +1,5 @@
+---
+'layerchart': patch
+---
+
+breaking(Spline): Rename `splineRef` to `pathRef`
diff --git a/packages/layerchart/src/app.d.ts b/packages/layerchart/src/app.d.ts
index 1fd2a0b70..95b4c707b 100644
--- a/packages/layerchart/src/app.d.ts
+++ b/packages/layerchart/src/app.d.ts
@@ -19,6 +19,7 @@ declare namespace App {
hideUsage?: boolean;
hideTableOfContents?: boolean;
status?: string;
+ supportedContexts?: Array<'svg' | 'canvas' | 'html'>;
};
}
diff --git a/packages/layerchart/src/lib/components/Arc.svelte b/packages/layerchart/src/lib/components/Arc.svelte
index 3a43dab89..4c285e649 100644
--- a/packages/layerchart/src/lib/components/Arc.svelte
+++ b/packages/layerchart/src/lib/components/Arc.svelte
@@ -401,13 +401,13 @@
{/if}
;
+ children?: Snippet;
};
@@ -42,7 +42,9 @@
{#if children}
- {@render children({ id, url: `url(#${id})` })}
+ {@render children()}
{/if}
+{:else if children}
+ {@render children()}
{/if}
diff --git a/packages/layerchart/src/lib/components/Connector.svelte b/packages/layerchart/src/lib/components/Connector.svelte
index 017d03c2d..9d47fc1b5 100644
--- a/packages/layerchart/src/lib/components/Connector.svelte
+++ b/packages/layerchart/src/lib/components/Connector.svelte
@@ -82,7 +82,7 @@
type = 'rounded',
radius = 20,
curve = curveLinear,
- splineRef = $bindable(),
+ pathRef = $bindable(),
pathData: pathDataProp,
marker,
markerStart,
@@ -137,7 +137,7 @@
import type { Snippet } from 'svelte';
- import type { SVGAttributes } from 'svelte/elements';
- import Circle, { type CircleProps, type CirclePropsWithoutHTML } from './Circle.svelte';
+ import Circle, { type CircleProps } from './Circle.svelte';
import type { Without } from '$lib/utils/types.js';
export type GeoPointPropsWithoutHTML = {
diff --git a/packages/layerchart/src/lib/components/GeoSpline.svelte b/packages/layerchart/src/lib/components/GeoSpline.svelte
index 33ca9f209..cfe75c8c2 100644
--- a/packages/layerchart/src/lib/components/GeoSpline.svelte
+++ b/packages/layerchart/src/lib/components/GeoSpline.svelte
@@ -42,13 +42,13 @@
link,
loft = 1.0,
curve = curveNatural,
- splineRef: splineRefProp = $bindable(),
+ pathRef: pathRefProp = $bindable(),
...restProps
}: GeoSplineProps = $props();
- let splineRef = $state();
+ let pathRef = $state();
$effect.pre(() => {
- splineRefProp = splineRef;
+ pathRefProp = pathRef;
});
const geoCtx = getGeoContext();
@@ -76,7 +76,7 @@
d[0]}
y={(d) => d[1]}
diff --git a/packages/layerchart/src/lib/components/MonthPath.svelte b/packages/layerchart/src/lib/components/MonthPath.svelte
index a0673a06a..7f2511f5d 100644
--- a/packages/layerchart/src/lib/components/MonthPath.svelte
+++ b/packages/layerchart/src/lib/components/MonthPath.svelte
@@ -20,11 +20,13 @@
*
* @bindable
*/
- ref?: SVGPathElement;
+ pathRef?: SVGPathElement;
};
export type MonthPathProps = MonthPathPropsWithoutHTML &
- Without, MonthPathPropsWithoutHTML>;
+ // we omit the spline props to avoid conflicts with attribute names since we are
+ // passing them through to ` `
+ Without, MonthPathPropsWithoutHTML & SplinePropsWithoutHTML>;
-();
+ let pathRef = $state();
$effect.pre(() => {
- splineRefProp = splineRef;
+ pathRefProp = pathRef;
});
const markerStart = $derived(markerStartProp ?? marker);
@@ -331,8 +331,8 @@
easing: typeof draw === 'object' && draw.easing ? draw.easing : cubicInOut,
interpolate() {
return (t: number) => {
- const totalLength = splineRef?.getTotalLength() ?? 0;
- const point = splineRef?.getPointAtLength(totalLength * t);
+ const totalLength = pathRef?.getTotalLength() ?? 0;
+ const point = pathRef?.getPointAtLength(totalLength * t);
return point;
};
},
@@ -343,10 +343,10 @@
$effect(() => {
if (!startContent && !endContent) return;
d;
- if (!splineRef || !splineRef.getTotalLength()) return;
- startPoint = splineRef.getPointAtLength(0);
- const totalLength = splineRef.getTotalLength();
- endPoint.target = splineRef.getPointAtLength(totalLength);
+ if (!pathRef || !pathRef.getTotalLength()) return;
+ startPoint = pathRef.getPointAtLength(0);
+ const totalLength = pathRef.getTotalLength();
+ endPoint.target = pathRef.getPointAtLength(totalLength);
});
$effect(() => {
@@ -377,7 +377,7 @@
marker-mid={markerMidId ? `url(#${markerMidId})` : undefined}
marker-end={markerEndId ? `url(#${markerEndId})` : undefined}
in:drawTransition|global={typeof draw === 'object' ? draw : undefined}
- bind:this={splineRef}
+ bind:this={pathRef}
/>
diff --git a/packages/layerchart/src/lib/components/layout/Layer.svelte b/packages/layerchart/src/lib/components/layout/Layer.svelte
index df9e19cc6..9332170de 100644
--- a/packages/layerchart/src/lib/components/layout/Layer.svelte
+++ b/packages/layerchart/src/lib/components/layout/Layer.svelte
@@ -3,17 +3,19 @@
export type CanvasLayerProps = {
type: 'canvas';
- } & Omit, 'type'>;
+ } & Omit, 'type' | 'onpointermove'>;
export type HtmlLayerProps = {
type: 'html';
- } & Omit, 'type'>;
+ } & Omit, 'type' | 'onpointermove'>;
export type SvgLayerProps = {
type: 'svg';
- } & Omit, 'type'>;
+ } & Omit, 'type' | 'onpointermove'>;
- export type LayerProps = CanvasLayerProps | HtmlLayerProps | SvgLayerProps;
+ export type LayerProps = (CanvasLayerProps | HtmlLayerProps | SvgLayerProps) & {
+ onpointermove?: (e: PointerEvent) => void;
+ };
Examples
-
-
-
- Svg
- Canvas
-
-
-
-
-
-
-
+
+
+
Vertical
diff --git a/packages/layerchart/src/routes/docs/components/AnnotationLine/+page.ts b/packages/layerchart/src/routes/docs/components/AnnotationLine/+page.ts
index 44d9b847b..f365ac6b7 100644
--- a/packages/layerchart/src/routes/docs/components/AnnotationLine/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/AnnotationLine/+page.ts
@@ -15,6 +15,7 @@ export async function load({ fetch }) {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/AnnotationPoint', 'components/AnnotationRange'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/AnnotationPoint/+page.svelte b/packages/layerchart/src/routes/docs/components/AnnotationPoint/+page.svelte
index d76602a15..64ed8d094 100644
--- a/packages/layerchart/src/routes/docs/components/AnnotationPoint/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/AnnotationPoint/+page.svelte
@@ -9,21 +9,13 @@
Tooltip,
type Placement,
} from 'layerchart';
- import {
- Button,
- Field,
- Menu,
- RangeField,
- Switch,
- Toggle,
- ToggleGroup,
- ToggleOption,
- } from 'svelte-ux';
+ import { Button, Field, Menu, RangeField, Switch, Toggle } from 'svelte-ux';
import { format, sortFunc } from '@layerstack/utils';
import { maxIndex } from 'd3-array';
import Preview from '$lib/docs/Preview.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -65,20 +57,13 @@
let yOffset = $state(0);
let radius = $state(4);
- let renderContext: 'svg' | 'canvas' = $state('svg');
+ let renderContext = $derived(shared.renderContext as 'svg' | 'canvas');
let debug = $state(false);
Examples
-
-
- Svg
- Canvas
-
-
-
diff --git a/packages/layerchart/src/routes/docs/components/AnnotationPoint/+page.ts b/packages/layerchart/src/routes/docs/components/AnnotationPoint/+page.ts
index b68317b4c..61e8def41 100644
--- a/packages/layerchart/src/routes/docs/components/AnnotationPoint/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/AnnotationPoint/+page.ts
@@ -15,6 +15,7 @@ export async function load({ fetch }) {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/AnnotationLine', 'components/AnnotationRange'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/AnnotationRange/+page.svelte b/packages/layerchart/src/routes/docs/components/AnnotationRange/+page.svelte
index 4ddf92cb5..9ee75ae36 100644
--- a/packages/layerchart/src/routes/docs/components/AnnotationRange/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/AnnotationRange/+page.svelte
@@ -1,18 +1,12 @@
Examples
-
-
- Svg
- Canvas
-
-
-
diff --git a/packages/layerchart/src/routes/docs/components/AnnotationRange/+page.ts b/packages/layerchart/src/routes/docs/components/AnnotationRange/+page.ts
index d35fff982..ceeceb0df 100644
--- a/packages/layerchart/src/routes/docs/components/AnnotationRange/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/AnnotationRange/+page.ts
@@ -15,6 +15,7 @@ export async function load({ fetch }) {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/AnnotationLine', 'components/AnnotationPoint'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Arc/+page.svelte b/packages/layerchart/src/routes/docs/components/Arc/+page.svelte
index 84de5195c..dd6daa05d 100644
--- a/packages/layerchart/src/routes/docs/components/Arc/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Arc/+page.svelte
@@ -1,8 +1,9 @@
Examples
-
-
- Svg
- Canvas
-
-
-
diff --git a/packages/layerchart/src/routes/docs/components/ArcChart/+page.ts b/packages/layerchart/src/routes/docs/components/ArcChart/+page.ts
index d1eaceae4..ea872ac2a 100644
--- a/packages/layerchart/src/routes/docs/components/ArcChart/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/ArcChart/+page.ts
@@ -9,6 +9,7 @@ export async function load() {
source,
pageSource,
description: 'Streamlined Chart configuration for Pie charts',
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Chart', 'components/Pie', 'examples/Arc'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Area/+page.svelte b/packages/layerchart/src/routes/docs/components/Area/+page.svelte
index e2dd353d0..e365f5045 100644
--- a/packages/layerchart/src/routes/docs/components/Area/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Area/+page.svelte
@@ -1,19 +1,19 @@
Examples
-
-
-
- Svg
- Canvas
-
-
-
-
left / bottom placement
@@ -77,7 +68,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -96,7 +87,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -115,7 +106,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -134,7 +125,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -153,7 +144,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -172,7 +163,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -191,7 +182,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -212,7 +203,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -234,7 +225,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -254,7 +245,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -267,7 +258,7 @@
-
+
-
+
-
+
@@ -323,7 +314,7 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
-
+
@@ -374,7 +365,7 @@
-
+
[45, ...(scale.ticks?.() ?? [])]} />
@@ -386,7 +377,7 @@
-
+
@@ -398,7 +389,7 @@
-
+
@@ -410,7 +401,7 @@
-
+
-
+
scale.ticks?.().filter((d) => d !== 0)} />
@@ -440,7 +431,7 @@
-
+
v || ''} />
@@ -452,7 +443,7 @@
-
+
-
+
{#if debug}
@@ -511,7 +502,7 @@
-
+
{#if debug}
@@ -542,7 +533,7 @@
-
+
{#if debug}
@@ -570,7 +561,7 @@
-
+
{#if debug}
@@ -602,7 +593,7 @@
{#snippet children({ context })}
-
+
{#if debug}
@@ -635,7 +626,7 @@
-
+
@@ -648,7 +639,7 @@
-
+
@@ -661,7 +652,7 @@
-
+
@@ -691,7 +682,7 @@
xDomain={example.domain}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -724,7 +715,7 @@
xDomain={example.domain}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
@@ -747,7 +738,7 @@
xDomain={example.domain}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
-
+
@@ -840,7 +831,7 @@
},
}}
>
-
+
@@ -875,7 +866,7 @@
},
}}
>
-
+
@@ -895,7 +886,7 @@
},
}}
>
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Axis/+page.ts b/packages/layerchart/src/routes/docs/components/Axis/+page.ts
index 17597df7b..8fd71a8d7 100644
--- a/packages/layerchart/src/routes/docs/components/Axis/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Axis/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Grid', 'components/Rule'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Bar/+page.svelte b/packages/layerchart/src/routes/docs/components/Bar/+page.svelte
index 87857a3c4..06a474ed1 100644
--- a/packages/layerchart/src/routes/docs/components/Bar/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Bar/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Bar/+page.ts b/packages/layerchart/src/routes/docs/components/Bar/+page.ts
index 6f60ad2a9..77605f7fa 100644
--- a/packages/layerchart/src/routes/docs/components/Bar/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Bar/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Bars', 'examples/Bars', 'examples/Columns'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/BarChart/+page.svelte b/packages/layerchart/src/routes/docs/components/BarChart/+page.svelte
index b40e3ba6d..e504b3489 100644
--- a/packages/layerchart/src/routes/docs/components/BarChart/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/BarChart/+page.svelte
@@ -11,8 +11,6 @@
LinearGradient,
Text,
Tooltip,
- Circle,
- Group,
Polygon,
} from 'layerchart';
import { extent, group, mean, sum } from 'd3-array';
@@ -22,10 +20,11 @@
import Preview from '$lib/docs/Preview.svelte';
import Blockquote from '$lib/docs/Blockquote.svelte';
import { createDateSeries, wideData, longData } from '$lib/utils/genData.js';
- import { Field, Switch, ToggleGroup, ToggleOption } from 'svelte-ux';
+ import { Field, Switch } from 'svelte-ux';
import { timeMonth } from 'd3-time';
import { interpolate, quantize } from 'd3-interpolate';
import { interpolateSpectral } from 'd3-scale-chromatic';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -105,20 +104,13 @@
},
];
- let renderContext: 'svg' | 'canvas' = $state('svg');
+ let renderContext = $derived(shared.renderContext as 'svg' | 'canvas');
let debug = $state(false);
Examples
-
-
- Svg
- Canvas
-
-
-
diff --git a/packages/layerchart/src/routes/docs/components/BarChart/+page.ts b/packages/layerchart/src/routes/docs/components/BarChart/+page.ts
index ec0a0cd5d..94e0b68a4 100644
--- a/packages/layerchart/src/routes/docs/components/BarChart/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/BarChart/+page.ts
@@ -36,6 +36,7 @@ export async function load({ fetch }) {
source,
pageSource,
description: 'Streamlined Chart configuration for Bar charts',
+ supportedContexts: ['svg', 'canvas'],
related: [
'components/Chart',
'components/Bars',
diff --git a/packages/layerchart/src/routes/docs/components/Bars/+page.svelte b/packages/layerchart/src/routes/docs/components/Bars/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Bars/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Bars/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Bars/+page.ts b/packages/layerchart/src/routes/docs/components/Bars/+page.ts
index f979343fe..1c00d58cd 100644
--- a/packages/layerchart/src/routes/docs/components/Bars/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Bars/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Bar', 'examples/Bars', 'examples/Columns', 'examples/Histogram'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Blur/+page.svelte b/packages/layerchart/src/routes/docs/components/Blur/+page.svelte
index a04d1abd4..2665c0dd7 100644
--- a/packages/layerchart/src/routes/docs/components/Blur/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Blur/+page.svelte
@@ -1,5 +1,5 @@
diff --git a/packages/layerchart/src/routes/docs/components/Bounds/+page.ts b/packages/layerchart/src/routes/docs/components/Bounds/+page.ts
index 74d3ba84f..d554203ae 100644
--- a/packages/layerchart/src/routes/docs/components/Bounds/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Bounds/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/Partition', 'examples/Sunburst', 'examples/Treemap'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/BrushContext/+page.svelte b/packages/layerchart/src/routes/docs/components/BrushContext/+page.svelte
index e52032d32..309209897 100644
--- a/packages/layerchart/src/routes/docs/components/BrushContext/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/BrushContext/+page.svelte
@@ -10,23 +10,24 @@
import {
Area,
Axis,
+ Bars,
Chart,
ChartClipPath,
Circle,
Highlight,
+ Layer,
LinearGradient,
Points,
Rule,
Text,
Tooltip,
- Svg,
- Bars,
} from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import { createDateSeries, randomWalk } from '$lib/utils/genData.js';
import { asAny } from '$lib/utils/types.js';
import type { DomainType } from '$lib/utils/scales.svelte.js';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -60,9 +61,9 @@
-
+
-
+
-->
@@ -72,9 +73,9 @@
@@ -90,9 +91,9 @@
y="value"
brush={{ classes: { range: 'bg-secondary/10', handle: 'bg-secondary/50' } }}
>
-
+
-
+
@@ -108,9 +109,9 @@
y="value"
brush={{ classes: { range: 'striped-background' } }}
>
-
+
-
+
@@ -127,7 +128,7 @@
brush={{ classes: { range: 'bg-secondary/10' }, handleSize: 8 }}
>
{#snippet children({ context })}
-
+
{#if context.brush.isActive}
@@ -165,7 +166,7 @@
{/if}
-
+
{/snippet}
@@ -177,7 +178,7 @@
{#snippet children({ context })}
-
+
{#if context.brush.isActive}
{/if}
-
+
{/snippet}
@@ -216,7 +217,7 @@
brush
>
{#snippet children({ context })}
-
+
{#if context.brush.isActive}
@@ -236,7 +237,7 @@
class="text-xs"
/>
{/if}
-
+
{/snippet}
@@ -265,7 +266,7 @@
},
}}
>
-
+
@@ -275,7 +276,7 @@
{/snippet}
-
+
@@ -304,7 +305,7 @@
},
}}
>
-
+
@@ -314,7 +315,7 @@
{/snippet}
-
+
@@ -348,7 +349,7 @@
},
}}
>
-
+
@@ -358,7 +359,7 @@
{/snippet}
-
+
@@ -380,7 +381,7 @@
yDomain={[0, null]}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -390,7 +391,7 @@
{/snippet}
-
+
@@ -408,9 +409,9 @@
},
}}
>
-
+
-
+
@@ -437,9 +438,9 @@
},
}}
>
-
+
-
+
@@ -452,7 +453,7 @@
{yDomain}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -462,7 +463,7 @@
{/snippet}
-
+
@@ -489,7 +490,7 @@
yDomain={[0, null]}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -504,7 +505,7 @@
/>
{/snippet}
-
+
@@ -522,9 +523,9 @@
},
}}
>
-
+
-
+
@@ -554,7 +555,7 @@
yBaseline={0}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -568,7 +569,7 @@
{/snippet}
-
+
@@ -586,13 +587,13 @@
onReset: (e) => (xDomain = null),
}}
>
-
+
-
+
@@ -624,7 +625,7 @@
}}
>
{#snippet children({ context })}
-
+
@@ -635,7 +636,7 @@
-
+
-
+
@@ -718,7 +719,7 @@
{/each}
{/snippet}
-
+
@@ -751,14 +752,14 @@
},
}}
>
-
+
-
+
@@ -783,7 +784,7 @@
},
}}
>
-
+
{#snippet children({ points })}
{#each points as point}
@@ -808,7 +809,7 @@
{/each}
{/snippet}
-
+
diff --git a/packages/layerchart/src/routes/docs/components/BrushContext/+page.ts b/packages/layerchart/src/routes/docs/components/BrushContext/+page.ts
index b8b828db5..71f326315 100644
--- a/packages/layerchart/src/routes/docs/components/BrushContext/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/BrushContext/+page.ts
@@ -14,6 +14,7 @@ export async function load({ fetch }) {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/components/Calendar/+page.svelte b/packages/layerchart/src/routes/docs/components/Calendar/+page.svelte
index ca94edbf4..578655035 100644
--- a/packages/layerchart/src/routes/docs/components/Calendar/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Calendar/+page.svelte
@@ -3,10 +3,11 @@
import { scaleThreshold } from 'd3-scale';
import { range } from 'd3-array';
- import { Calendar, Chart, Group, Text, Tooltip, Svg } from 'layerchart';
+ import { Calendar, Chart, Group, Text, Tooltip, Layer } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
const now = new Date();
const firstDayOfYear = startOfYear(now);
@@ -40,16 +41,17 @@
'var(--color-primary-500)',
'var(--color-primary-700)',
]}
+ padding={{ top: 13 }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -88,9 +90,10 @@
'var(--color-primary-500)',
'var(--color-primary-700)',
]}
+ padding={{ top: 13 }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -137,10 +140,10 @@
'var(--color-primary-500)',
'var(--color-primary-700)',
]}
- padding={{ left: 20 }}
+ padding={{ left: 20, top: 13 }}
>
{#snippet children({ context })}
-
+
{#each range(2019, 2024) as year, i}
{@const start = new Date(year, 0, 1)}
{@const end = endOfYear(start)}
@@ -157,7 +160,7 @@
{/each}
-
+
{#snippet children({ data })}
diff --git a/packages/layerchart/src/routes/docs/components/Calendar/+page.ts b/packages/layerchart/src/routes/docs/components/Calendar/+page.ts
index 69a18da2a..01ed3d2b5 100644
--- a/packages/layerchart/src/routes/docs/components/Calendar/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Calendar/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/components/Chart/+page.svelte b/packages/layerchart/src/routes/docs/components/Chart/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Chart/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Chart/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/ChartClipPath/+page.svelte b/packages/layerchart/src/routes/docs/components/ChartClipPath/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/ChartClipPath/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/ChartClipPath/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/ChartClipPath/+page.ts b/packages/layerchart/src/routes/docs/components/ChartClipPath/+page.ts
index e1fc36992..ce652dd3e 100644
--- a/packages/layerchart/src/routes/docs/components/ChartClipPath/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/ChartClipPath/+page.ts
@@ -10,6 +10,7 @@ export async function load() {
pageSource,
description:
'Convenient way to clip specific components (axis labels, etc) within chart while still allowing some to overflow (tooltips, etc)',
+ supportedContexts: ['svg'],
related: [
'components/RectClipPath',
'components/Rect',
diff --git a/packages/layerchart/src/routes/docs/components/Circle/+page.svelte b/packages/layerchart/src/routes/docs/components/Circle/+page.svelte
index 2880b5a6b..1f8a6bb85 100644
--- a/packages/layerchart/src/routes/docs/components/Circle/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Circle/+page.svelte
@@ -1,6 +1,7 @@
Examples
@@ -8,13 +9,13 @@
diff --git a/packages/layerchart/src/routes/docs/components/Circle/+page.ts b/packages/layerchart/src/routes/docs/components/Circle/+page.ts
index 4ad351ce6..962be1ab9 100644
--- a/packages/layerchart/src/routes/docs/components/Circle/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Circle/+page.ts
@@ -9,6 +9,7 @@ export async function load() {
source,
pageSource,
description: '`` element with tweened properties using `motionStore`',
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Points', 'examples/Pack', 'examples/PunchCard'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/CircleClipPath/+page.svelte b/packages/layerchart/src/routes/docs/components/CircleClipPath/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/CircleClipPath/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/CircleClipPath/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/CircleClipPath/+page.ts b/packages/layerchart/src/routes/docs/components/CircleClipPath/+page.ts
index b6808545a..d4d966cf2 100644
--- a/packages/layerchart/src/routes/docs/components/CircleClipPath/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/CircleClipPath/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/components/ClipPath/+page.svelte b/packages/layerchart/src/routes/docs/components/ClipPath/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/ClipPath/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/ClipPath/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/ClipPath/+page.ts b/packages/layerchart/src/routes/docs/components/ClipPath/+page.ts
index ec076e604..31ec6f397 100644
--- a/packages/layerchart/src/routes/docs/components/ClipPath/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/ClipPath/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg'],
related: [
'components/ChartClipPath',
'components/CircleClipPath',
diff --git a/packages/layerchart/src/routes/docs/components/ColorRamp/+page.ts b/packages/layerchart/src/routes/docs/components/ColorRamp/+page.ts
index ca22345b9..3011f2c52 100644
--- a/packages/layerchart/src/routes/docs/components/ColorRamp/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/ColorRamp/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/components/Connector/+page.svelte b/packages/layerchart/src/routes/docs/components/Connector/+page.svelte
index 05e129108..618ad3768 100644
--- a/packages/layerchart/src/routes/docs/components/Connector/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Connector/+page.svelte
@@ -2,7 +2,7 @@
import type { ComponentProps } from 'svelte';
import { RangeField } from 'svelte-ux';
- import { Connector, Chart, Svg } from 'layerchart';
+ import { Connector, Chart, Layer } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import CurveMenuField from '$lib/docs/CurveMenuField.svelte';
@@ -10,6 +10,7 @@
import ConnectorTypeMenuField from 'layerchart/docs/ConnectorTypeMenuField.svelte';
import ConnectorSweepMenuField from 'layerchart/docs/ConnectorSweepMenuField.svelte';
import { movable } from '$lib/actions/movable.js';
+ import { shared } from '../../shared.svelte.js';
let source = $state({ x: 300, y: 150 });
let target = $state({ x: 500, y: 300 });
@@ -36,7 +37,7 @@
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Connector/+page.ts b/packages/layerchart/src/routes/docs/components/Connector/+page.ts
index 07e5d295b..ba99b59f5 100644
--- a/packages/layerchart/src/routes/docs/components/Connector/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Connector/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Link', 'examples/Tree'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Ellipse/+page.svelte b/packages/layerchart/src/routes/docs/components/Ellipse/+page.svelte
index 633b162d4..0ae4cd316 100644
--- a/packages/layerchart/src/routes/docs/components/Ellipse/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Ellipse/+page.svelte
@@ -1,6 +1,7 @@
Examples
@@ -8,7 +9,7 @@
-
+
@@ -20,7 +21,7 @@
ry={10}
class="stroke-2 stroke-primary fill-primary/10"
/>
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Ellipse/+page.ts b/packages/layerchart/src/routes/docs/components/Ellipse/+page.ts
index 544a32480..aaa350556 100644
--- a/packages/layerchart/src/routes/docs/components/Ellipse/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Ellipse/+page.ts
@@ -9,6 +9,7 @@ export async function load() {
source,
pageSource,
description: '`` element with tweened properties using `motionStore`',
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/components/ForceSimulation/+page.svelte b/packages/layerchart/src/routes/docs/components/ForceSimulation/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/ForceSimulation/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/ForceSimulation/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/ForceSimulation/+page.ts b/packages/layerchart/src/routes/docs/components/ForceSimulation/+page.ts
index 22992338f..a45bc5565 100644
--- a/packages/layerchart/src/routes/docs/components/ForceSimulation/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/ForceSimulation/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'examples/Beeswarm',
'examples/CollisionDetection',
diff --git a/packages/layerchart/src/routes/docs/components/Frame/+page.svelte b/packages/layerchart/src/routes/docs/components/Frame/+page.svelte
index d95b64417..e892bafbd 100644
--- a/packages/layerchart/src/routes/docs/components/Frame/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Frame/+page.svelte
@@ -1,6 +1,7 @@
Examples
@@ -18,11 +19,11 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -40,11 +41,11 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -62,11 +63,11 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -84,7 +85,7 @@
yNice
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
{#snippet children({ gradient })}
@@ -92,55 +93,7 @@
-
-
-
-
-
-Canvas
-
-
-
-
-
-Canvas gradient background
-
-
-
-
-
-
- {#snippet children({ gradient })}
-
- {/snippet}
-
-
-
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Frame/+page.ts b/packages/layerchart/src/routes/docs/components/Frame/+page.ts
index b32b06f3f..bdbe0e0ce 100644
--- a/packages/layerchart/src/routes/docs/components/Frame/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Frame/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/components/GeoCircle/+page.svelte b/packages/layerchart/src/routes/docs/components/GeoCircle/+page.svelte
index 9ac6220f7..201d47679 100644
--- a/packages/layerchart/src/routes/docs/components/GeoCircle/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/GeoCircle/+page.svelte
@@ -11,10 +11,11 @@
import { range } from 'd3-array';
import { feature } from 'topojson-client';
- import { Chart, GeoCircle, GeoPath, Graticule, Svg } from 'layerchart';
+ import { Chart, GeoCircle, GeoPath, Graticule, Layer } from 'layerchart';
import { Field, RangeField, SelectField, ToggleGroup, ToggleOption } from 'svelte-ux';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -98,7 +99,7 @@
}}
padding={{ left: 100, right: 100 }}
>
-
+
@@ -126,7 +127,7 @@
/>
{/each}
{/if}
-
+
diff --git a/packages/layerchart/src/routes/docs/components/GeoCircle/+page.ts b/packages/layerchart/src/routes/docs/components/GeoCircle/+page.ts
index 57a951898..98eef6292 100644
--- a/packages/layerchart/src/routes/docs/components/GeoCircle/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/GeoCircle/+page.ts
@@ -15,6 +15,7 @@ export async function load({ fetch }) {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/Timezones'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/GeoContext/+page.svelte b/packages/layerchart/src/routes/docs/components/GeoContext/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/GeoContext/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/GeoContext/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/GeoContext/+page.ts b/packages/layerchart/src/routes/docs/components/GeoContext/+page.ts
index 655ce88dd..145e2f51b 100644
--- a/packages/layerchart/src/routes/docs/components/GeoContext/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/GeoContext/+page.ts
@@ -10,6 +10,7 @@ export async function load() {
pageSource,
description:
'Setup geo context, particularly the projection used by other geo components. Typically used indirectly via the `geo` prop on Chart',
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Chart'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/GeoEdgeFade/+page.svelte b/packages/layerchart/src/routes/docs/components/GeoEdgeFade/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/GeoEdgeFade/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/GeoEdgeFade/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/GeoEdgeFade/+page.ts b/packages/layerchart/src/routes/docs/components/GeoEdgeFade/+page.ts
index 0a361d816..61289eba6 100644
--- a/packages/layerchart/src/routes/docs/components/GeoEdgeFade/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/GeoEdgeFade/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/LoftedArcs'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/GeoPath/+page.svelte b/packages/layerchart/src/routes/docs/components/GeoPath/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/GeoPath/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/GeoPath/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/GeoPath/+page.ts b/packages/layerchart/src/routes/docs/components/GeoPath/+page.ts
index fe05cce00..c1126d10a 100644
--- a/packages/layerchart/src/routes/docs/components/GeoPath/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/GeoPath/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'components/Graticule',
'examples/AnimatedGlobe',
diff --git a/packages/layerchart/src/routes/docs/components/GeoPoint/+page.svelte b/packages/layerchart/src/routes/docs/components/GeoPoint/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/GeoPoint/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/GeoPoint/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/GeoPoint/+page.ts b/packages/layerchart/src/routes/docs/components/GeoPoint/+page.ts
index 53c22a784..1e511f446 100644
--- a/packages/layerchart/src/routes/docs/components/GeoPoint/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/GeoPoint/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/GeoPoint'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/GeoSpline/+page.svelte b/packages/layerchart/src/routes/docs/components/GeoSpline/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/GeoSpline/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/GeoSpline/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/GeoSpline/+page.ts b/packages/layerchart/src/routes/docs/components/GeoSpline/+page.ts
index 4eec2cfa9..e0fd2f591 100644
--- a/packages/layerchart/src/routes/docs/components/GeoSpline/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/GeoSpline/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/LoftedArcs'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/GeoTile/+page.svelte b/packages/layerchart/src/routes/docs/components/GeoTile/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/GeoTile/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/GeoTile/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/GeoTile/+page.ts b/packages/layerchart/src/routes/docs/components/GeoTile/+page.ts
index 9015d86e1..a39673fe1 100644
--- a/packages/layerchart/src/routes/docs/components/GeoTile/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/GeoTile/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/GeoTile', 'examples/ZoomableTileMap'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/GeoVisible/+page.svelte b/packages/layerchart/src/routes/docs/components/GeoVisible/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/GeoVisible/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/GeoVisible/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/GeoVisible/+page.ts b/packages/layerchart/src/routes/docs/components/GeoVisible/+page.ts
index e6b3bebdb..366c3afc8 100644
--- a/packages/layerchart/src/routes/docs/components/GeoVisible/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/GeoVisible/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/SubmarineCablesGlobe'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Graticule/+page.svelte b/packages/layerchart/src/routes/docs/components/Graticule/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Graticule/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Graticule/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Graticule/+page.ts b/packages/layerchart/src/routes/docs/components/Graticule/+page.ts
index 9c35abb86..9b28ebd29 100644
--- a/packages/layerchart/src/routes/docs/components/Graticule/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Graticule/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/AnimatedGlobe', 'examples/GeoProjection', 'examples/LoftedArcsGlobe'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Grid/+page.svelte b/packages/layerchart/src/routes/docs/components/Grid/+page.svelte
index 054966339..ba5f1055d 100644
--- a/packages/layerchart/src/routes/docs/components/Grid/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Grid/+page.svelte
@@ -2,10 +2,11 @@
import { scaleTime, scaleBand } from 'd3-scale';
import { MediaQueryPresets } from '@layerstack/svelte-state';
- import { Axis, Chart, Grid, Svg } from 'layerchart';
+ import { Axis, Chart, Grid, Layer } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
const data = createDateSeries({ min: 50, max: 100, value: 'integer' });
const { mdScreen } = new MediaQueryPresets();
@@ -25,9 +26,9 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -44,9 +45,9 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -63,9 +64,9 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -82,9 +83,9 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -101,10 +102,10 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -121,10 +122,10 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -134,9 +135,9 @@
-
+
scale.ticks?.().splice(1)} y />
-
+
@@ -146,9 +147,9 @@
-
+
scale.ticks?.().splice(1)} y radialY="linear" />
-
+
@@ -165,7 +166,7 @@
yDomain={[0, 2]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
scale.ticks?.().filter(Number.isInteger)} />
scale.ticks?.().filter(Number.isInteger)}
format="integer"
/>
-
+
@@ -190,10 +191,10 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -210,10 +211,10 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
[45, ...(scale.ticks?.() ?? [])]} />
[45, ...(scale.ticks?.() ?? [])]} />
-
+
@@ -230,10 +231,10 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -250,10 +251,10 @@
yDomain={[0, 100]}
padding={{ bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -270,10 +271,10 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Grid/+page.ts b/packages/layerchart/src/routes/docs/components/Grid/+page.ts
index 6dc2f03e7..e53cc6063 100644
--- a/packages/layerchart/src/routes/docs/components/Grid/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Grid/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Axis', 'components/Rule'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Group/+page.svelte b/packages/layerchart/src/routes/docs/components/Group/+page.svelte
index 05847bd06..6d6c2d45f 100644
--- a/packages/layerchart/src/routes/docs/components/Group/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Group/+page.svelte
@@ -1,6 +1,7 @@
Examples
@@ -8,7 +9,7 @@
-
+
@@ -18,7 +19,7 @@
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Group/+page.ts b/packages/layerchart/src/routes/docs/components/Group/+page.ts
index 09c93207a..7a9a7c36f 100644
--- a/packages/layerchart/src/routes/docs/components/Group/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Group/+page.ts
@@ -10,6 +10,10 @@ export async function load() {
pageSource,
description:
'`` element with convenient x/y and center placement along with tweened properties using `motionStore`',
+ supportedContexts: [
+ 'svg',
+ // 'canvas' // TODO: Supported, but limited use cases
+ ],
related: [
'examples/Pack',
'examples/Partition',
diff --git a/packages/layerchart/src/routes/docs/components/Highlight/+page.svelte b/packages/layerchart/src/routes/docs/components/Highlight/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Highlight/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Highlight/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Highlight/+page.ts b/packages/layerchart/src/routes/docs/components/Highlight/+page.ts
index e7bdbb8ea..4c361b911 100644
--- a/packages/layerchart/src/routes/docs/components/Highlight/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Highlight/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Tooltip', 'components/TooltipContext'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Hull/+page.svelte b/packages/layerchart/src/routes/docs/components/Hull/+page.svelte
index 4782b5fc2..a7d712ab6 100644
--- a/packages/layerchart/src/routes/docs/components/Hull/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Hull/+page.svelte
@@ -5,10 +5,11 @@
import { curveLinearClosed } from 'd3-shape';
import { feature } from 'topojson-client';
- import { Axis, Chart, Circle, GeoPath, GeoPoint, Hull, Points, Svg, Text } from 'layerchart';
+ import { Axis, Chart, Circle, GeoPath, GeoPoint, Hull, Layer, Points, Text } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import CurveMenuField from '$lib/docs/CurveMenuField.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -44,21 +45,23 @@
padding={{ left: 16, bottom: 24 }}
>
{@const dataByGroup = group(data.groupData, (d) => d.group)}
-
+
{#each dataByGroup as [group, data]}
-
+ {@const color = groupColor(group)}
+
+
{/each}
-
+
@@ -75,15 +78,11 @@
fitGeojson: states,
}}
>
-
-
- {#each states.features as feature}
-
- {/each}
-
+
+
{
@@ -96,6 +95,7 @@
/>
{#each data.us.stateCaptitals as capital}
+
{/each}
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Hull/+page.ts b/packages/layerchart/src/routes/docs/components/Hull/+page.ts
index c9dcc8acf..1cdb3cf32 100644
--- a/packages/layerchart/src/routes/docs/components/Hull/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Hull/+page.ts
@@ -27,6 +27,7 @@ export async function load({ fetch }) {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/components/Labels/+page.svelte b/packages/layerchart/src/routes/docs/components/Labels/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Labels/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Labels/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Labels/+page.ts b/packages/layerchart/src/routes/docs/components/Labels/+page.ts
index 38317cc57..4a7223c96 100644
--- a/packages/layerchart/src/routes/docs/components/Labels/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Labels/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'examples/Area',
'examples/Bars',
diff --git a/packages/layerchart/src/routes/docs/components/Legend/+page.ts b/packages/layerchart/src/routes/docs/components/Legend/+page.ts
index d518ee838..8bb8abdc0 100644
--- a/packages/layerchart/src/routes/docs/components/Legend/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Legend/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['html'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/components/Line/+page.svelte b/packages/layerchart/src/routes/docs/components/Line/+page.svelte
index 8e321a347..8b1cf2ab0 100644
--- a/packages/layerchart/src/routes/docs/components/Line/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Line/+page.svelte
@@ -1,7 +1,8 @@
Examples
@@ -9,7 +10,7 @@
-
+
@@ -23,7 +24,7 @@
markerStart="circle"
markerEnd="arrow"
/>
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Line/+page.ts b/packages/layerchart/src/routes/docs/components/Line/+page.ts
index d22dc001d..3df4dca88 100644
--- a/packages/layerchart/src/routes/docs/components/Line/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Line/+page.ts
@@ -9,6 +9,7 @@ export async function load() {
source,
pageSource,
description: '`` element with tweened properties using `motionStore`',
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Rule', 'components/Spline'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/LineChart/+page.svelte b/packages/layerchart/src/routes/docs/components/LineChart/+page.svelte
index 6e943ed57..5f48f2f36 100644
--- a/packages/layerchart/src/routes/docs/components/LineChart/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/LineChart/+page.svelte
@@ -14,7 +14,7 @@
import { scaleBand, scaleSequential } from 'd3-scale';
import { curveCatmullRom, curveLinearClosed } from 'd3-shape';
import { extent, flatGroup, group, ticks } from 'd3-array';
- import { Field, Switch, ToggleGroup, ToggleOption } from 'svelte-ux';
+ import { Field, Switch } from 'svelte-ux';
import { format, sortFunc } from '@layerstack/utils';
import Preview from '$lib/docs/Preview.svelte';
@@ -23,6 +23,7 @@
import { interpolateTurbo } from 'd3-scale-chromatic';
import { cls } from '@layerstack/tailwind';
import { slide } from 'svelte/transition';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -86,20 +87,13 @@
let show = $state(true);
- let renderContext: 'svg' | 'canvas' = $state('svg');
+ let renderContext = $derived(shared.renderContext as 'svg' | 'canvas');
let debug = $state(false);
Examples
-
-
- Svg
- Canvas
-
-
-
diff --git a/packages/layerchart/src/routes/docs/components/LineChart/+page.ts b/packages/layerchart/src/routes/docs/components/LineChart/+page.ts
index ba4602ab6..a6cd96a57 100644
--- a/packages/layerchart/src/routes/docs/components/LineChart/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/LineChart/+page.ts
@@ -37,6 +37,7 @@ export async function load({ fetch }) {
source,
pageSource,
description: 'Streamlined Chart configuration for Line charts',
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Chart', 'components/Spline', 'examples/Line'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/LinearGradient/+page.svelte b/packages/layerchart/src/routes/docs/components/LinearGradient/+page.svelte
index dead13d72..31ec5a742 100644
--- a/packages/layerchart/src/routes/docs/components/LinearGradient/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/LinearGradient/+page.svelte
@@ -1,28 +1,17 @@
Examples
-
-
-
- Svg
- Canvas
-
-
-
-
Direction with custom colors
-
+
{#snippet children({ gradient })}
@@ -50,7 +39,7 @@
-
+
-
+
{#snippet children({ gradient })}
@@ -159,7 +148,7 @@
-
+
{#snippet children({ gradient })}
{#each { length: 6 } as _, i}
diff --git a/packages/layerchart/src/routes/docs/components/LinearGradient/+page.ts b/packages/layerchart/src/routes/docs/components/LinearGradient/+page.ts
index 3e9278869..171c0cfc4 100644
--- a/packages/layerchart/src/routes/docs/components/LinearGradient/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/LinearGradient/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/RadialGradient', 'components/Pattern'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Link/+page.svelte b/packages/layerchart/src/routes/docs/components/Link/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Link/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Link/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Link/+page.ts b/packages/layerchart/src/routes/docs/components/Link/+page.ts
index ccef2cf55..328b7e72a 100644
--- a/packages/layerchart/src/routes/docs/components/Link/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Link/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Connector', 'components/Points', 'examples/Sankey', 'examples/Tree'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Marker/+page.svelte b/packages/layerchart/src/routes/docs/components/Marker/+page.svelte
index 8fd51f380..2c14ba2b7 100644
--- a/packages/layerchart/src/routes/docs/components/Marker/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Marker/+page.svelte
@@ -1,12 +1,13 @@
diff --git a/packages/layerchart/src/routes/docs/components/Pack/+page.ts b/packages/layerchart/src/routes/docs/components/Pack/+page.ts
index d833c7fda..dbb5c15b6 100644
--- a/packages/layerchart/src/routes/docs/components/Pack/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Pack/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/Pack'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Partition/+page.svelte b/packages/layerchart/src/routes/docs/components/Partition/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Partition/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Partition/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Partition/+page.ts b/packages/layerchart/src/routes/docs/components/Partition/+page.ts
index 9cd7ecd09..6d85be411 100644
--- a/packages/layerchart/src/routes/docs/components/Partition/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Partition/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/Partition', 'examples/Sunburst'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Pattern/+page.svelte b/packages/layerchart/src/routes/docs/components/Pattern/+page.svelte
index c8b64d22c..b536fc6cd 100644
--- a/packages/layerchart/src/routes/docs/components/Pattern/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Pattern/+page.svelte
@@ -1,28 +1,17 @@
Examples
-
-
-
- Svg
- Canvas
-
-
-
-
Lines
-
+
{#snippet children({ pattern })}
-
+
{#snippet children({ pattern })}
-
+
{#snippet children({ pattern })}
@@ -271,7 +260,7 @@
-
+
{#snippet children({ gradient })}
@@ -359,7 +348,7 @@
-
+
{#snippet children({ gradient })}
@@ -419,7 +408,7 @@
-
+
{#snippet patternContent()}
@@ -539,7 +528,7 @@
-
+
{#snippet patternContent()}
diff --git a/packages/layerchart/src/routes/docs/components/Pattern/+page.ts b/packages/layerchart/src/routes/docs/components/Pattern/+page.ts
index cb64c34b6..dc6104793 100644
--- a/packages/layerchart/src/routes/docs/components/Pattern/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Pattern/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/LinearGradient', 'components/RadialGradient'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Pie/+page.svelte b/packages/layerchart/src/routes/docs/components/Pie/+page.svelte
index a5712763b..8afc33044 100644
--- a/packages/layerchart/src/routes/docs/components/Pie/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Pie/+page.svelte
@@ -4,11 +4,12 @@
import { cls } from '@layerstack/tailwind';
import { format as formatUtil } from '@layerstack/utils';
- import { Arc, Chart, Group, Pie, Svg, Text, Tooltip } from 'layerchart';
+ import { Arc, Chart, Group, Layer, Pie, Text, Tooltip } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
import { Field, Switch, Toggle } from 'svelte-ux';
+ import { shared } from '../../shared.svelte.js';
const data = createDateSeries({ min: 20, max: 100, value: 'integer', count: 4 });
const data2 = createDateSeries({ min: 20, max: 100, value: 'integer', count: 4 });
@@ -37,9 +38,9 @@
@@ -49,9 +50,9 @@
@@ -61,9 +62,9 @@
@@ -73,9 +74,9 @@
@@ -85,9 +86,9 @@
@@ -97,9 +98,9 @@
@@ -111,9 +112,9 @@
@@ -123,9 +124,9 @@
@@ -135,9 +136,9 @@
@@ -147,9 +148,9 @@
@@ -159,10 +160,10 @@
@@ -178,11 +179,11 @@
@@ -193,9 +194,9 @@
@@ -205,7 +206,7 @@
-
+
{#snippet children({ arcs })}
{#each arcs as arc, index}
@@ -219,7 +220,7 @@
{/each}
{/snippet}
-
+
@@ -231,7 +232,7 @@
-
+
{#snippet children({ arcs })}
{#each arcs as arc, index}
@@ -253,7 +254,7 @@
{/each}
{/snippet}
-
+
@@ -263,7 +264,7 @@
-
+
{#snippet children({ arcs })}
{#each arcs as arc, index}
@@ -293,7 +294,7 @@
{/each}
{/snippet}
-
+
@@ -303,7 +304,7 @@
-
+
{#snippet children({ arcs })}
{#each arcs as arc, index}
@@ -325,7 +326,7 @@
{/each}
{/snippet}
-
+
@@ -335,7 +336,7 @@
-
+
{#snippet children({ arcs })}
{#each arcs as arc, index}
@@ -357,7 +358,7 @@
{/each}
{/snippet}
-
+
@@ -372,7 +373,7 @@
if it meets the minimum needed to fit the label, and if not, we push it? Idk
-->
-
+
{#snippet children({ arcs })}
{#each arcs as arc, index}
@@ -394,7 +395,7 @@
{/each}
{/snippet}
-
+
@@ -405,9 +406,9 @@
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
{format(data.date, 'eee, MMMM do')}
@@ -433,7 +434,7 @@
{#snippet children({ context })}
-
+
{#snippet children({ arcs })}
{#each arcs as arc, index}
@@ -470,7 +471,7 @@
{/each}
{/snippet}
-
+
{#snippet children({ data })}
@@ -499,11 +500,11 @@
{#snippet children({ context })}
-
+
-
+
{/snippet}
@@ -514,9 +515,9 @@
@@ -527,11 +528,11 @@
{#snippet children({ context })}
-
+
-
+
{/snippet}
diff --git a/packages/layerchart/src/routes/docs/components/Pie/+page.ts b/packages/layerchart/src/routes/docs/components/Pie/+page.ts
index 6d98dd80f..c6e5f86f2 100644
--- a/packages/layerchart/src/routes/docs/components/Pie/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Pie/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Arc', 'examples/Arc'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/PieChart/+page.svelte b/packages/layerchart/src/routes/docs/components/PieChart/+page.svelte
index 3492aa042..f81110d9b 100644
--- a/packages/layerchart/src/routes/docs/components/PieChart/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/PieChart/+page.svelte
@@ -1,15 +1,17 @@
Examples
-
-
- Svg
- Canvas
-
-
-
diff --git a/packages/layerchart/src/routes/docs/components/PieChart/+page.ts b/packages/layerchart/src/routes/docs/components/PieChart/+page.ts
index d1eaceae4..ea872ac2a 100644
--- a/packages/layerchart/src/routes/docs/components/PieChart/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/PieChart/+page.ts
@@ -9,6 +9,7 @@ export async function load() {
source,
pageSource,
description: 'Streamlined Chart configuration for Pie charts',
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Chart', 'components/Pie', 'examples/Arc'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Point/+page.svelte b/packages/layerchart/src/routes/docs/components/Point/+page.svelte
index 57891fc31..663f1fd20 100644
--- a/packages/layerchart/src/routes/docs/components/Point/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Point/+page.svelte
@@ -1,6 +1,7 @@
@@ -17,7 +18,7 @@
yDomain={[0, 100]}
padding={{ bottom: 20, left: 20 }}
>
-
+
@@ -30,7 +31,7 @@
{/snippet}
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Point/+page.ts b/packages/layerchart/src/routes/docs/components/Point/+page.ts
index 5940b7f57..88b528d40 100644
--- a/packages/layerchart/src/routes/docs/components/Point/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Point/+page.ts
@@ -9,6 +9,7 @@ export async function load() {
source,
pageSource,
description: 'Convenient way to translate a data item to SVG x/y coordinates',
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/Area'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Points/+page.svelte b/packages/layerchart/src/routes/docs/components/Points/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Points/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Points/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Points/+page.ts b/packages/layerchart/src/routes/docs/components/Points/+page.ts
index 0e378e54b..4998d6d5a 100644
--- a/packages/layerchart/src/routes/docs/components/Points/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Points/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'components/Area',
'components/Spline',
diff --git a/packages/layerchart/src/routes/docs/components/Polygon/+page.svelte b/packages/layerchart/src/routes/docs/components/Polygon/+page.svelte
index de5786f17..d407b33e0 100644
--- a/packages/layerchart/src/routes/docs/components/Polygon/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Polygon/+page.svelte
@@ -2,6 +2,7 @@
import { Chart, Group, Layer, Polygon } from 'layerchart';
import { RangeField } from 'svelte-ux';
import Preview from 'layerchart/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let points = $state(8);
let cornerRadius = $state(0);
@@ -16,8 +17,6 @@
// Separate inset to allow playground to default to 0
let starInset = $state(0.7);
-
- let renderContext = $state<'svg' | 'canvas'>('svg');
Playground
@@ -38,7 +37,7 @@
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{#snippet children({ context })}
-
+
{@const size = 60}
{#snippet children({ context })}
-
+
{@const size = 50}
- import { Chart, Circle, Layer, RadialGradient, Svg } from 'layerchart';
+ import { Chart, Circle, Layer, RadialGradient } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
- import { Field, ToggleGroup, ToggleOption } from 'svelte-ux';
+ import { shared } from '../../shared.svelte.js';
const radius = 50;
- let renderContext: 'svg' | 'canvas' = $state('svg');
Examples
-
-
Focal location and radius with custom colors
-
+
{#snippet children({ gradient })}
@@ -51,7 +41,7 @@
-
+
@@ -74,7 +64,7 @@
-
+
{#snippet children({ gradient })}
@@ -102,7 +92,7 @@
-
+
{#snippet children({ gradient })}
{#each { length: 6 } as _, i}
diff --git a/packages/layerchart/src/routes/docs/components/RadialGradient/+page.ts b/packages/layerchart/src/routes/docs/components/RadialGradient/+page.ts
index 3b7a2a354..769763703 100644
--- a/packages/layerchart/src/routes/docs/components/RadialGradient/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/RadialGradient/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg'], // TODO: `canvas` coming soon
related: ['components/LinearGradient', 'components/Pattern'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Rect/+page.svelte b/packages/layerchart/src/routes/docs/components/Rect/+page.svelte
index 4d24b0a1e..ac1cf99bf 100644
--- a/packages/layerchart/src/routes/docs/components/Rect/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Rect/+page.svelte
@@ -1,6 +1,7 @@
Examples
@@ -8,13 +9,13 @@
diff --git a/packages/layerchart/src/routes/docs/components/Rect/+page.ts b/packages/layerchart/src/routes/docs/components/Rect/+page.ts
index 37b779489..48fe70a36 100644
--- a/packages/layerchart/src/routes/docs/components/Rect/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Rect/+page.ts
@@ -9,6 +9,7 @@ export async function load() {
source,
pageSource,
description: '`` element with tweened properties using `motionStore`',
+ supportedContexts: ['svg', 'canvas'],
related: [
'components/Bars',
'components/Highlight',
diff --git a/packages/layerchart/src/routes/docs/components/RectClipPath/+page.svelte b/packages/layerchart/src/routes/docs/components/RectClipPath/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/RectClipPath/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/RectClipPath/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/RectClipPath/+page.ts b/packages/layerchart/src/routes/docs/components/RectClipPath/+page.ts
index 30c0b1c15..b841ed4ed 100644
--- a/packages/layerchart/src/routes/docs/components/RectClipPath/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/RectClipPath/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg'],
related: ['components/ChartClipPath', 'examples/Partition', 'examples/Treemap'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Rule/+page.svelte b/packages/layerchart/src/routes/docs/components/Rule/+page.svelte
index 7294f1204..44c8055d3 100644
--- a/packages/layerchart/src/routes/docs/components/Rule/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Rule/+page.svelte
@@ -1,7 +1,8 @@
@@ -17,11 +18,11 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -35,11 +36,11 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -53,11 +54,11 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -71,11 +72,11 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -90,11 +91,11 @@
yDomain={[-20, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
@@ -108,11 +109,11 @@
yDomain={[0, 100]}
padding={{ top: 20, bottom: 20, left: 20, right: 20 }}
>
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Rule/+page.ts b/packages/layerchart/src/routes/docs/components/Rule/+page.ts
index 9e98af688..1730f9ea5 100644
--- a/packages/layerchart/src/routes/docs/components/Rule/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Rule/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Axis', 'components/Line'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Sankey/+page.svelte b/packages/layerchart/src/routes/docs/components/Sankey/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Sankey/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Sankey/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Sankey/+page.ts b/packages/layerchart/src/routes/docs/components/Sankey/+page.ts
index 69fb6b3ab..69d49fbc5 100644
--- a/packages/layerchart/src/routes/docs/components/Sankey/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Sankey/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/Sankey'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/ScatterChart/+page.svelte b/packages/layerchart/src/routes/docs/components/ScatterChart/+page.svelte
index 2c995917b..475c5d4b2 100644
--- a/packages/layerchart/src/routes/docs/components/ScatterChart/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/ScatterChart/+page.svelte
@@ -1,4 +1,5 @@
Examples
-
-
- Svg
- Canvas
-
-
-
diff --git a/packages/layerchart/src/routes/docs/components/ScatterChart/+page.ts b/packages/layerchart/src/routes/docs/components/ScatterChart/+page.ts
index 56bf2c78a..cf7ea3f9e 100644
--- a/packages/layerchart/src/routes/docs/components/ScatterChart/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/ScatterChart/+page.ts
@@ -16,6 +16,7 @@ export async function load({ fetch }) {
source,
pageSource,
description: 'Streamlined Chart configuration for Scatter charts',
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Chart', 'components/Points', 'examples/Scatter'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Spline/+page.svelte b/packages/layerchart/src/routes/docs/components/Spline/+page.svelte
index 81f5a6f2d..20c62ce47 100644
--- a/packages/layerchart/src/routes/docs/components/Spline/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Spline/+page.svelte
@@ -1,7 +1,7 @@
diff --git a/packages/layerchart/src/routes/docs/components/Threshold/+page.ts b/packages/layerchart/src/routes/docs/components/Threshold/+page.ts
index 4f0ac202f..ed36c5aad 100644
--- a/packages/layerchart/src/routes/docs/components/Threshold/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Threshold/+page.ts
@@ -10,6 +10,7 @@ export async function load() {
pageSource,
description:
'Areas between two values (`y={["value", "baseline"]}`) depending on which is greater (ex. green/red)',
+ supportedContexts: ['svg'], // dependency on ClipPath getting canvas support
related: ['examples/Threshold'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/TileImage/+page.svelte b/packages/layerchart/src/routes/docs/components/TileImage/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/TileImage/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/TileImage/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/TileImage/+page.ts b/packages/layerchart/src/routes/docs/components/TileImage/+page.ts
index d475db034..fc0ad2547 100644
--- a/packages/layerchart/src/routes/docs/components/TileImage/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/TileImage/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/GeoTile'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Tooltip/+page.svelte b/packages/layerchart/src/routes/docs/components/Tooltip/+page.svelte
index 848f6ec8c..22389afb7 100644
--- a/packages/layerchart/src/routes/docs/components/Tooltip/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Tooltip/+page.svelte
@@ -9,9 +9,9 @@
Axis,
Bars,
Chart,
+ Layer,
Highlight,
Points,
- Svg,
Tooltip,
type ChartContextValue,
} from 'layerchart';
@@ -21,6 +21,7 @@
import Preview from '$lib/docs/Preview.svelte';
import TooltipControls from './TooltipControls.svelte';
import { createDateSeries, createTimeSeries, getSpiral } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
const dateSeries = createDateSeries({
count: 30,
@@ -155,12 +156,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -187,12 +188,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
Anything can go here test
@@ -212,12 +213,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -244,12 +245,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -276,12 +277,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -309,12 +310,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -341,12 +342,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -374,12 +375,12 @@
tooltip={{ mode: 'bisect-x' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ context })}
-
+
-
+
-
+
-
+
-
+
-
+
{#snippet children({ data })}
@@ -608,7 +609,7 @@
debug: charts.area.debug,
}}
>
-
+
@@ -618,7 +619,7 @@
area={charts.area.highlight.includes('area')}
axis={charts.area.axis}
/>
-
+
{#snippet children({ context })}
-
+
@@ -680,7 +681,7 @@
area={charts.areaStack.highlight.includes('area')}
axis={charts.areaStack.axis}
/>
-
+
-
+
@@ -729,7 +730,7 @@
area={charts.dateTime.highlight.includes('area')}
axis={charts.dateTime.axis}
/>
-
+
-
+
@@ -781,7 +782,7 @@
area={charts.duration.highlight.includes('area')}
axis={charts.duration.axis}
/>
-
+
-
+
@@ -841,7 +842,7 @@
area={charts.multiDuration.highlight.includes('area')}
axis={charts.multiDuration.axis}
/>
-
+
-
+
@@ -904,7 +905,7 @@
bar={charts.bars.highlight.includes('bar') ? { radius: 4, class: 'fill-primary' } : false}
axis={charts.bars.axis}
/>
-
+
-
+
@@ -963,7 +964,7 @@
? { y: 'value', radius: 4, strokeWidth: 1, class: 'fill-primary' }
: false}
/>
-
+
-
+
@@ -1008,7 +1009,7 @@
area={charts.scatter.highlight.includes('area')}
axis={charts.scatter.axis}
/>
-
+
- import { Chart, Svg } from 'layerchart';
+ import { Chart, Layer } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
diff --git a/packages/layerchart/src/routes/docs/components/TooltipContext/+page.ts b/packages/layerchart/src/routes/docs/components/TooltipContext/+page.ts
index c0b1b388f..4453243d1 100644
--- a/packages/layerchart/src/routes/docs/components/TooltipContext/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/TooltipContext/+page.ts
@@ -10,6 +10,7 @@ export async function load() {
pageSource,
description:
'Setup tooltip context, include mode to identify related data based on pointer position. Typically used indirectly via the `tooltip` prop Chart',
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Chart', 'components/Tooltip', 'components/Highlight'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/TransformContext/+page.svelte b/packages/layerchart/src/routes/docs/components/TransformContext/+page.svelte
index 7074e57a7..2ce3eb79a 100644
--- a/packages/layerchart/src/routes/docs/components/TransformContext/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/TransformContext/+page.svelte
@@ -2,13 +2,14 @@
import type { ComponentProps } from 'svelte';
import { cubicOut } from 'svelte/easing';
- import { Chart, Circle, Html, Points, Spline, Svg } from 'layerchart';
+ import { Chart, Circle, Layer, Points, Spline } from 'layerchart';
import TransformControls from '$lib/components/TransformControls.svelte';
import { Field, RangeField, Switch } from 'svelte-ux';
import Preview from '$lib/docs/Preview.svelte';
import CurveMenuField from '$lib/docs/CurveMenuField.svelte';
import { getSpiral } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
let pointCount = $state(500);
let angle = $state(137.5); //
@@ -56,7 +57,7 @@
}}
>
-
+
{#if showPath}
{/if}
@@ -75,7 +76,7 @@
{/snippet}
{/if}
-
+
@@ -92,13 +93,13 @@
}}
>
-
+
-
+
@@ -115,7 +116,7 @@
}}
>
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/components/TransformContext/+page.ts b/packages/layerchart/src/routes/docs/components/TransformContext/+page.ts
index e0d008421..59863711d 100644
--- a/packages/layerchart/src/routes/docs/components/TransformContext/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/TransformContext/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas', 'html'],
related: [
'components/Chart',
'examples/Pack',
diff --git a/packages/layerchart/src/routes/docs/components/Tree/+page.svelte b/packages/layerchart/src/routes/docs/components/Tree/+page.svelte
index f5e63b239..1f3a40471 100644
--- a/packages/layerchart/src/routes/docs/components/Tree/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Tree/+page.svelte
@@ -1,4 +1,4 @@
diff --git a/packages/layerchart/src/routes/docs/components/Tree/+page.ts b/packages/layerchart/src/routes/docs/components/Tree/+page.ts
index 6c3c40d2b..78fdef251 100644
--- a/packages/layerchart/src/routes/docs/components/Tree/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Tree/+page.ts
@@ -8,6 +8,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/Tree'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Treemap/+page.svelte b/packages/layerchart/src/routes/docs/components/Treemap/+page.svelte
index f192a7ea0..0db90f743 100644
--- a/packages/layerchart/src/routes/docs/components/Treemap/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Treemap/+page.svelte
@@ -13,15 +13,16 @@
import {
Chart,
Group,
+ Layer,
Rect,
RectClipPath,
- Svg,
Text,
Tooltip,
Treemap,
findAncestor,
} from 'layerchart';
import { type ComponentProps } from 'svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -144,7 +145,7 @@
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -277,7 +278,7 @@
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -365,7 +366,7 @@
-
+
{#snippet children({ nodes })}
{#each nodes.filter((n) => n.depth > 0) as node}
@@ -390,7 +391,7 @@
{/each}
{/snippet}
-
+
diff --git a/packages/layerchart/src/routes/docs/components/Treemap/+page.ts b/packages/layerchart/src/routes/docs/components/Treemap/+page.ts
index f35b4bea4..252822ce6 100644
--- a/packages/layerchart/src/routes/docs/components/Treemap/+page.ts
+++ b/packages/layerchart/src/routes/docs/components/Treemap/+page.ts
@@ -59,6 +59,7 @@ export async function load() {
api,
source,
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['examples/Treemap'],
},
};
diff --git a/packages/layerchart/src/routes/docs/components/Voronoi/+page.svelte b/packages/layerchart/src/routes/docs/components/Voronoi/+page.svelte
index 619cc8e5d..2af77d713 100644
--- a/packages/layerchart/src/routes/docs/components/Voronoi/+page.svelte
+++ b/packages/layerchart/src/routes/docs/components/Voronoi/+page.svelte
@@ -3,7 +3,8 @@
import Preview from '$lib/docs/Preview.svelte';
import { getSpiral } from '$lib/utils/genData.js';
- import { Field, RangeField, ToggleGroup, ToggleOption } from 'svelte-ux';
+ import { RangeField } from 'svelte-ux';
+ import { shared } from '../../shared.svelte.js';
const data = getSpiral({ angle: 137.5, radius: 10, count: 100, width: 500, height: 500 });
@@ -16,27 +17,17 @@
}
let radius = $state(0);
- let renderContext: 'svg' | 'canvas' = $state('svg');
Example
-
-
-
- Svg
- Canvas
-
-
-
-
-
+
{#snippet children({ context })}
-
+
(null!);
let selectedFeature: (typeof countries.features)[0] | null = $state(null);
@@ -95,18 +95,9 @@
let debug = $state(false);
-
-
-
- Svg
- Canvas
-
-
-
-
-
-
-
+
+
+
@@ -157,7 +148,7 @@
{/if}
-
+
@@ -176,7 +167,7 @@
{/each}
- {#if renderContext === 'canvas'}
+ {#if shared.renderContext === 'canvas'}
{#if context.tooltip.data}
diff --git a/packages/layerchart/src/routes/docs/examples/AnimatedGlobe/+page.ts b/packages/layerchart/src/routes/docs/examples/AnimatedGlobe/+page.ts
index d026f0e02..f1b3f6a65 100644
--- a/packages/layerchart/src/routes/docs/examples/AnimatedGlobe/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/AnimatedGlobe/+page.ts
@@ -13,6 +13,7 @@ export async function load({ fetch }) {
}>,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
hideTableOfContents: true,
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/Arc/+page.svelte b/packages/layerchart/src/routes/docs/examples/Arc/+page.svelte
index e6d95438c..c961c222b 100644
--- a/packages/layerchart/src/routes/docs/examples/Arc/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Arc/+page.svelte
@@ -6,8 +6,8 @@
Chart,
ClipPath,
Group,
+ Layer,
LinearGradient,
- Svg,
Text,
Tooltip,
cartesianToPolar,
@@ -19,6 +19,7 @@
import Preview from '$lib/docs/Preview.svelte';
import Blockquote from '$lib/docs/Blockquote.svelte';
+ import { shared } from '../../shared.svelte.js';
let value = $state(75);
let segments = $state(60);
@@ -59,7 +60,7 @@
-
+
{#snippet children({ gradient })}
@@ -85,7 +86,7 @@
{/snippet}
-
+
@@ -95,7 +96,7 @@
@@ -136,7 +137,7 @@
-
+
{#each { length: segments } as _, segmentIndex}
{@const segmentAngle = (2 * Math.PI) / segments}
@@ -162,7 +163,7 @@
class="text-6xl tabular-nums"
/>
-
+
@@ -176,7 +177,7 @@
-
+
{#snippet clip()}
@@ -208,7 +209,7 @@
class="text-6xl tabular-nums"
/>
-
+
@@ -219,7 +220,7 @@
{#snippet children({ context })}
-
+
{#each { length: layerCount } as _, layerIndex}
{@const layer = layerIndex + 1}
{#each { length: divisions } as _, segmentIndex}
@@ -241,7 +242,7 @@
/>
{/each}
{/each}
-
+
{#snippet children({ data })}
{data}
@@ -264,7 +265,7 @@
@@ -308,7 +309,7 @@
{#snippet children({ context })}
-
+
{@const arcWidth = 20}
{@const maxValue = 100}
@@ -383,7 +384,7 @@
r={circleRadius}
class="stroke-black/10 fill-black/10"
/> -->
-
+
{/snippet}
diff --git a/packages/layerchart/src/routes/docs/examples/Arc/+page.ts b/packages/layerchart/src/routes/docs/examples/Arc/+page.ts
index 5cc4e3910..1a21167b0 100644
--- a/packages/layerchart/src/routes/docs/examples/Arc/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Arc/+page.ts
@@ -4,6 +4,7 @@ export async function load() {
return {
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Arc', 'components/Pie'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/Area/+page.svelte b/packages/layerchart/src/routes/docs/examples/Area/+page.svelte
index 9a40ea846..96b50b5a8 100644
--- a/packages/layerchart/src/routes/docs/examples/Area/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Area/+page.svelte
@@ -12,12 +12,12 @@
Circle,
Highlight,
Labels,
+ Layer,
LinearGradient,
Point,
RectClipPath,
Rule,
Spline,
- Svg,
Text,
Tooltip,
asAny,
@@ -32,6 +32,7 @@
import Blockquote from '$lib/docs/Blockquote.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
import flatten from '$lib/utils/chart.js';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -96,11 +97,11 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -119,12 +120,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -150,12 +151,12 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -173,7 +174,7 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
scale.domain()}>
{#snippet tickLabel({ props, index })}
@@ -181,7 +182,7 @@
{/snippet}
-
+
@@ -199,7 +200,7 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -207,7 +208,7 @@
{/snippet}
-
+
@@ -225,7 +226,7 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -237,7 +238,7 @@
{/snippet}
-
+
@@ -261,7 +262,7 @@
tooltip={{ mode: 'voronoi' }}
>
{#snippet children({ context })}
-
+
{#each dataByFruit as [fruit, data]}
@@ -289,7 +290,8 @@
{/each}
-
+
+
{#snippet children({ data })}
@@ -316,7 +318,7 @@
padding={{ left: 16, bottom: 24, right: 48 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
@@ -348,7 +350,8 @@
d.bananas} points={{ fill: fruitColors.bananas }} />
d.oranges} points={{ fill: fruitColors.oranges }} />
-
+
+
{#snippet children({ data })}
@@ -382,7 +385,7 @@
tooltip={{ mode: 'voronoi' }}
>
{#snippet children({ context })}
-
+
{#each dataByFruit as [fruit, data]}
@@ -413,7 +416,8 @@
{/each}
-
+
+
{#snippet children({ data })}
@@ -446,7 +450,7 @@
tooltip={{ mode: 'voronoi' }}
>
{#snippet children({ context })}
-
+
{#each dataByFruit as [fruit, data]}
@@ -460,7 +464,8 @@
{/each}
-
+
+
{#snippet children({ data })}
@@ -493,7 +498,7 @@
tooltip={{ mode: 'bisect-x' }}
>
{#snippet children({ context })}
-
+
@@ -508,7 +513,7 @@
{/each}
-
+
{#snippet children({ data })}
@@ -538,7 +543,7 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
{@const primaryColors = [
@@ -567,7 +572,7 @@
{/snippet}
{/each}
-
+
@@ -592,7 +597,7 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -603,7 +608,7 @@
{/if}
-
+
@@ -627,7 +632,7 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -639,7 +644,7 @@
{/if}
-
+
@@ -663,7 +668,7 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -679,7 +684,7 @@
{/if}
-
+
@@ -698,7 +703,7 @@
tooltip={{ mode: 'bisect-x' }}
>
{#snippet children({ context })}
-
+
@@ -713,7 +718,7 @@
>
-
+
{/snippet}
@@ -733,7 +738,7 @@
tooltip={{ mode: 'bisect-x' }}
>
{#snippet children({ context })}
-
+
@@ -748,7 +753,7 @@
>
0} line={{ class: 'stroke-2 stroke-danger' }} class="fill-danger/20" />
-
+
{/snippet}
@@ -772,7 +777,7 @@
cRange={['var(--color-success)', 'var(--color-danger)']}
>
{#snippet children({ context })}
-
+
@@ -792,7 +797,7 @@
0} line={{ class: 'stroke-2 stroke-danger' }} class="fill-danger/20" />
-
+
{#snippet children({ data })}
@@ -821,7 +826,7 @@
tooltip={{ mode: 'bisect-x' }}
>
{#snippet children({ context })}
-
+
@@ -856,7 +861,7 @@
: undefined,
}}
/>
-
+
{#snippet children({ data })}
@@ -888,7 +893,7 @@
{@const thresholdValue = 0}
{@const thresholdOffset =
context.yScale(thresholdValue) / (context.height + context.padding.bottom)}
-
+
@@ -908,7 +913,7 @@
/>
{/snippet}
-
+
{/snippet}
@@ -931,7 +936,7 @@
{@const thresholdValue = 0}
{@const thresholdOffset =
context.yScale(thresholdValue) / (context.height + context.padding.bottom)}
-
+
@@ -952,7 +957,7 @@
/>
{/snippet}
-
+
{/snippet}
@@ -973,7 +978,7 @@
tooltip={{ mode: 'bisect-x' }}
>
{#snippet children({ context })}
-
+
{#snippet children({ gradient })}
@@ -990,7 +995,7 @@
-
+
-
+
-
+
@@ -143,11 +144,11 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 20, bottom: 20 }}
>
-
+
-
+
@@ -166,12 +167,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'band' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -198,12 +199,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'band' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -230,7 +231,7 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'band' }}
>
-
+
@@ -247,7 +248,7 @@
{/snippet}
-
+
{#snippet children({ data })}
@@ -272,11 +273,11 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 20, bottom: 20 }}
>
-
+
-
+
@@ -293,11 +294,11 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 20, bottom: 20 }}
>
-
+
-
+
@@ -315,13 +316,13 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -338,13 +339,13 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -362,11 +363,11 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 20, bottom: 20 }}
>
-
+
-
+
@@ -384,7 +385,7 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 20, bottom: 20 }}
>
-
+
-
+
@@ -410,7 +411,7 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -418,7 +419,7 @@
{/snippet}
-
+
@@ -436,7 +437,7 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -448,7 +449,7 @@
/>
{/each}
-
+
@@ -466,7 +467,7 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 20, bottom: 20 }}
>
-
+
@@ -478,7 +479,7 @@
data={data[3]}
area={{ fill: 'url(#highlight-pattern)', class: 'stroke-secondary/50' }}
/>
-
+
@@ -496,7 +497,7 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 20, bottom: 20 }}
>
-
+
@@ -505,7 +506,7 @@
lines={{ class: 'stroke-2 stroke-danger [stroke-dasharray:4] [stroke-linecap:round] ' }}
axis="x"
/>
-
+
@@ -525,7 +526,7 @@
>
{#snippet children({ context })}
{@const avg = mean(data, (d) => d.value)}
-
+
@@ -542,7 +543,7 @@
verticalAnchor="start"
class="text-sm fill-danger stroke-surface-100 stroke-2"
/>
-
+
{/snippet}
@@ -561,11 +562,11 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -583,11 +584,11 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -606,13 +607,13 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'band' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -639,7 +640,7 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'band' }}
>
-
+
@@ -647,7 +648,7 @@
-
+
{#snippet children({ data })}
@@ -681,7 +682,7 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -696,7 +697,7 @@
class="fill-primary"
/>
{/if}
-
+
@@ -722,7 +723,7 @@
yScale={scaleBand().padding(0.4)}
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -740,7 +741,7 @@
/>
{/each}
{/if}
-
+
@@ -768,12 +769,12 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -824,12 +825,12 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -880,12 +881,12 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -940,12 +941,12 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -1013,7 +1014,7 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
@@ -1049,7 +1050,7 @@
{/each}
-
+
{#snippet children({ data })}
@@ -1116,7 +1117,7 @@
padding={{ left: 16, bottom: 24 }}
>
{#snippet children({ context })}
-
+
@@ -1158,7 +1159,7 @@
/>
{/each}
-
+
{#snippet children({ data })}
@@ -1198,12 +1199,12 @@
},
}}
>
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/Bars/+page.ts b/packages/layerchart/src/routes/docs/examples/Bars/+page.ts
index b40169ef0..8d3a50c7b 100644
--- a/packages/layerchart/src/routes/docs/examples/Bars/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Bars/+page.ts
@@ -5,6 +5,7 @@ export async function load() {
meta: {
title: 'Bar Chart (Horizontal)',
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Bars', 'examples/Columns', 'examples/Histogram', 'charts/BarChart'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/Beeswarm/+page.svelte b/packages/layerchart/src/routes/docs/examples/Beeswarm/+page.svelte
index b02e98a36..5faeec629 100644
--- a/packages/layerchart/src/routes/docs/examples/Beeswarm/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Beeswarm/+page.svelte
@@ -2,11 +2,12 @@
import { scaleOrdinal } from 'd3-scale';
import { forceX, forceY, forceCollide, type SimulationNodeDatum } from 'd3-force';
- import { asAny, Axis, Chart, Circle, ForceSimulation, Svg, Tooltip } from 'layerchart';
+ import { asAny, Axis, Chart, Circle, ForceSimulation, Layer, Tooltip } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import type { USSenatorsDatum } from '$static/data/examples/us-senators.js';
import type { Prettify } from '@layerstack/utils';
+ import { shared } from '../../shared.svelte.js';
type NodeDatum = USSenatorsDatum;
@@ -31,11 +32,11 @@
data={data.usSenators}
x={(d) => d.date_of_birth.getFullYear()}
xNice
- padding={{ bottom: 12, left: 8, right: 8 }}
+ padding={{ bottom: 20, left: 12, right: 12 }}
>
{#snippet children({ context })}
{@const r = 6}
-
+
-
+
{#snippet children({ data })}
diff --git a/packages/layerchart/src/routes/docs/examples/Beeswarm/+page.ts b/packages/layerchart/src/routes/docs/examples/Beeswarm/+page.ts
index cf690d8ad..c09878684 100644
--- a/packages/layerchart/src/routes/docs/examples/Beeswarm/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Beeswarm/+page.ts
@@ -10,6 +10,7 @@ export async function load({ fetch }) {
)) as USSenatorsData,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/BubbleMap/+page.svelte b/packages/layerchart/src/routes/docs/examples/BubbleMap/+page.svelte
index 1c3c65258..db89adfa5 100644
--- a/packages/layerchart/src/routes/docs/examples/BubbleMap/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/BubbleMap/+page.svelte
@@ -7,10 +7,11 @@
import { feature } from 'topojson-client';
import { sortFunc } from '@layerstack/utils';
- import { Chart, Canvas, GeoPath, Legend, Svg, Tooltip, Circle } from 'layerchart';
+ import { Chart, GeoPath, Legend, Layer, Tooltip, Circle } from 'layerchart';
import TransformControls from '$lib/components/TransformControls.svelte';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -66,7 +67,7 @@
Examples
-SVG
+Basic
@@ -85,7 +86,7 @@
{@const strokeWidth = 1 / context.transform.scale}
-
+
{/snippet}
@@ -119,102 +120,18 @@
{strokeWidth}
/>
{/each}
-
-
-
-
-
- {#snippet children({ data })}
- {@const d = data.properties.data}
-
- {data.properties.name + ' - ' + data.properties.data?.state}
-
-
-
-
-
-
- {/snippet}
-
- {/snippet}
-
-
-
-
-Canvas
-
-
-
-
- {#snippet children({ context })}
- {@const strokeWidth = 1 / context.transform.scale}
-
-
-
-
-
- {#each enrichedCountiesFeatures as feature}
-
- {#snippet children({ geoPath })}
- {@const [cx, cy] = geoPath?.centroid(feature) ?? []}
- {@const d = feature.properties.data}
-
- {/snippet}
-
- {/each}
-
+
-
- {#if context.tooltip.data}
+
+
+ {#if context.tooltip.data && shared.renderContext === 'canvas'}
{/if}
-
+
import { scaleBand, scaleOrdinal } from 'd3-scale';
- import { Axis, Bars, Chart, Highlight, Points, Svg, Tooltip } from 'layerchart';
+ import { Axis, Bars, Chart, Highlight, Layer, Points, Tooltip } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
Examples
-Basic
-
@@ -29,13 +28,13 @@
tooltip={{ mode: 'bisect-x' }}
>
{#snippet children({ context })}
-
+
''} />
[d.open, d.close]} radius={2} />
-
+
{#snippet children({ data })}
diff --git a/packages/layerchart/src/routes/docs/examples/Candlestick/+page.ts b/packages/layerchart/src/routes/docs/examples/Candlestick/+page.ts
index fd40bccec..ec9188a54 100644
--- a/packages/layerchart/src/routes/docs/examples/Candlestick/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Candlestick/+page.ts
@@ -10,6 +10,7 @@ export async function load({ fetch }) {
)) as AppleTickerData,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'components/Bars',
'components/Points',
diff --git a/packages/layerchart/src/routes/docs/examples/Choropleth/+page.svelte b/packages/layerchart/src/routes/docs/examples/Choropleth/+page.svelte
index c67c1048a..df9812e14 100644
--- a/packages/layerchart/src/routes/docs/examples/Choropleth/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Choropleth/+page.svelte
@@ -5,10 +5,11 @@
import { geoIdentity, type GeoProjection } from 'd3-geo';
import { feature } from 'topojson-client';
- import { Canvas, Chart, GeoPath, Legend, Svg, Tooltip } from 'layerchart';
+ import { Chart, GeoPath, Legend, Layer, Tooltip } from 'layerchart';
import TransformControls from '$lib/components/TransformControls.svelte';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
const states = feature(data.geojson, data.geojson.objects.states);
@@ -51,7 +52,7 @@
Examples
-SVG
+Basic
@@ -65,115 +66,40 @@
initialScrollMode: 'scale',
}}
padding={{ top: 60 }}
- tooltip={{ raiseTarget: true }}
+ tooltip={{ raiseTarget: shared.renderContext === 'svg' }}
>
{#snippet children({ context })}
{@const strokeWidth = 1 / context.transform.scale}
-
-
- {#each enrichedCountiesFeatures as feature}
-
- {/each}
-
-
-
-
-
-
-
- {#snippet children({ data })}
- {@const d = populationByFips.get(data.id)}
-
- {data.properties.name + ' - ' + data.properties.data?.state}
-
-
-
-
-
-
- {/snippet}
-
- {/snippet}
-
-
-
-
-Canvas
-
-
-
-
- {#snippet children({ context })}
- {@const strokeWidth = 1 / context.transform.scale}
-
-
-
+
{#each enrichedCountiesFeatures as feature}
{/each}
-
-
-
-
+
+
-
- {#if context.tooltip.data}
+
+
+ {#if context.tooltip.data && shared.renderContext === 'canvas'}
{/if}
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/Choropleth/+page.ts b/packages/layerchart/src/routes/docs/examples/Choropleth/+page.ts
index beeb54e67..53f8b7218 100644
--- a/packages/layerchart/src/routes/docs/examples/Choropleth/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Choropleth/+page.ts
@@ -17,6 +17,7 @@ export async function load({ fetch }) {
)) as USCountyPopulationData,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/CollisionDetection/+page.svelte b/packages/layerchart/src/routes/docs/examples/CollisionDetection/+page.svelte
index cea68a38e..6114817c1 100644
--- a/packages/layerchart/src/routes/docs/examples/CollisionDetection/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/CollisionDetection/+page.svelte
@@ -3,10 +3,11 @@
import { randomUniform } from 'd3-random';
import { forceX, forceY, forceManyBody, forceCollide, type SimulationNodeDatum } from 'd3-force';
- import { Chart, Circle, Group, ForceSimulation, Svg } from 'layerchart';
+ import { Chart, Circle, Group, ForceSimulation, Layer } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import type { Prettify } from '@layerstack/utils';
+ import { shared } from '../../shared.svelte.js';
type NodeDatum = { r: number; group: number };
type MySimulationNodeDatum = Prettify;
@@ -39,19 +40,25 @@
{#snippet children({ context })}
-
- (i ? 0 : (-context.width * 2) / 3)),
- }}
- data={{ nodes: randomData }}
- alphaTarget={0.3}
- velocityDecay={0.1}
- >
- {#snippet children({ nodes, simulation })}
+ (i ? 0 : (-context.width * 2) / 3)),
+ }}
+ data={{ nodes: randomData }}
+ alphaTarget={0.3}
+ velocityDecay={0.1}
+ >
+ {#snippet children({ nodes, simulation })}
+ {
+ simulation.nodes()[0].fx = e.offsetX - context.width / 2;
+ simulation.nodes()[0].fy = e.offsetY - context.height / 2;
+ }}
+ >
{#each nodes as node, i}
{#if i > 0}
@@ -64,19 +71,9 @@
{/if}
{/each}
-
- {
- simulation.nodes()[0].fx = e.offsetX - context.width / 2;
- simulation.nodes()[0].fy = e.offsetY - context.height / 2;
- }}
- class="fill-transparent"
- />
- {/snippet}
-
-
+
+ {/snippet}
+
{/snippet}
diff --git a/packages/layerchart/src/routes/docs/examples/CollisionDetection/+page.ts b/packages/layerchart/src/routes/docs/examples/CollisionDetection/+page.ts
index 0a45eaea6..a97d410be 100644
--- a/packages/layerchart/src/routes/docs/examples/CollisionDetection/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/CollisionDetection/+page.ts
@@ -4,6 +4,7 @@ export async function load() {
return {
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'https://d3js.org/d3-force/collide',
'https://observablehq.com/@d3/collision-detection',
diff --git a/packages/layerchart/src/routes/docs/examples/Columns/+page.svelte b/packages/layerchart/src/routes/docs/examples/Columns/+page.svelte
index 0075453ef..a633e7078 100644
--- a/packages/layerchart/src/routes/docs/examples/Columns/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Columns/+page.svelte
@@ -15,7 +15,7 @@
Pattern,
RectClipPath,
Rule,
- Svg,
+ Layer,
Text,
Tooltip,
groupStackData,
@@ -28,6 +28,7 @@
import Preview from '$lib/docs/Preview.svelte';
import Blockquote from '$lib/docs/Blockquote.svelte';
import { createDateSeries, longData } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
const data = createDateSeries({
count: 30,
@@ -121,11 +122,11 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -143,11 +144,11 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -166,12 +167,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'band' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -198,12 +199,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'band' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -230,7 +231,7 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'band' }}
>
-
+
@@ -247,7 +248,7 @@
{/snippet}
-
+
{#snippet children({ data })}
@@ -272,11 +273,11 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -293,11 +294,11 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -316,13 +317,13 @@
yPadding={[16, 16]}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -340,13 +341,13 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -364,11 +365,11 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -386,7 +387,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -412,7 +413,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -420,7 +421,7 @@
{/snippet}
-
+
@@ -438,7 +439,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -450,7 +451,7 @@
/>
{/each}
-
+
@@ -468,7 +469,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -480,7 +481,7 @@
data={data[3]}
area={{ fill: 'url(#highlight-pattern)', class: 'stroke-secondary/50' }}
/>
-
+
@@ -498,7 +499,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -507,7 +508,7 @@
lines={{ class: 'stroke-2 stroke-danger [stroke-dasharray:4] [stroke-linecap:round] ' }}
axis="y"
/>
-
+
@@ -527,7 +528,7 @@
>
{#snippet children({ context })}
{@const avg = mean(data, (d) => d.value)}
-
+
@@ -544,7 +545,7 @@
verticalAnchor="end"
class="text-sm fill-danger stroke-surface-100 stroke-2"
/>
-
+
{/snippet}
@@ -563,11 +564,11 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -585,11 +586,11 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -608,13 +609,13 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -641,14 +642,14 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
format(Math.abs(d), 'integer')} />
-d.baseline} rounded="bottom" strokeWidth={1} class="fill-secondary" />
-
+
{#snippet children({ data })}
@@ -682,7 +683,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -697,7 +698,7 @@
class="fill-primary"
/>
{/if}
-
+
@@ -723,7 +724,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -739,7 +740,7 @@
class="fill-primary"
/>
{/if}
-
+
@@ -765,7 +766,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -783,7 +784,7 @@
/>
{/each}
{/if}
-
+
@@ -809,7 +810,7 @@
yNice={4}
padding={{ left: 16, bottom: 24 }}
>
-
+
{#if show}
@@ -829,7 +830,7 @@
/>
{/each}
{/if}
-
+
@@ -857,12 +858,12 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -912,12 +913,12 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -967,12 +968,12 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -1026,12 +1027,12 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -1097,7 +1098,7 @@
tooltip={{ mode: 'band' }}
>
{#snippet children({ context })}
-
+
@@ -1133,7 +1134,7 @@
{/each}
-
+
{#snippet children({ data })}
@@ -1199,7 +1200,7 @@
padding={{ left: 16, bottom: 24 }}
>
{#snippet children({ context })}
-
+
@@ -1240,7 +1241,7 @@
/>
{/each}
-
+
{#snippet children({ data })}
@@ -1280,12 +1281,12 @@
},
}}
>
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/Columns/+page.ts b/packages/layerchart/src/routes/docs/examples/Columns/+page.ts
index 2f23eab19..af07044bf 100644
--- a/packages/layerchart/src/routes/docs/examples/Columns/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Columns/+page.ts
@@ -5,6 +5,7 @@ export async function load() {
meta: {
title: 'Bar Chart (Vertical)',
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Bars', 'examples/Bars', 'examples/Histogram', 'examples/Sparkbar'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/Compound/+page.svelte b/packages/layerchart/src/routes/docs/examples/Compound/+page.svelte
index 4a13c883f..60ad86c74 100644
--- a/packages/layerchart/src/routes/docs/examples/Compound/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Compound/+page.svelte
@@ -1,10 +1,11 @@
Examples
@@ -30,6 +33,7 @@
props={{
bars: { y: 'baseline' },
}}
+ {renderContext}
>
{#snippet aboveMarks()}
@@ -66,6 +70,7 @@
props={{
bars: { radius: 1, class: 'stroke-none fill-surface-content/10' },
}}
+ {renderContext}
/>
@@ -80,6 +85,7 @@
xAxis: { ticks: 10, rule: true },
tooltip: { context: { mode: 'band' } },
}}
+ {renderContext}
>
{#snippet marks()}
@@ -122,7 +128,7 @@
tooltip={{ mode: 'bisect-x' }}
>
{#snippet children({ context })}
-
+
context.y1Scale?.(d.efficiency)}
/>
-
+
{#snippet children({ data })}
@@ -177,7 +183,7 @@
yNice
padding={{ top: 24, bottom: 24, left: 24, right: 24 }}
>
-
+
-
+
@@ -200,7 +206,7 @@
padding={{ top: 24, bottom: 24, left: 24, right: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -246,6 +252,7 @@
class: 'stroke-none fill-blue-500',
},
}}
+ {renderContext}
/>
{#snippet axis({ context })}
diff --git a/packages/layerchart/src/routes/docs/examples/Compound/+page.ts b/packages/layerchart/src/routes/docs/examples/Compound/+page.ts
index 2c922c6a7..156960bff 100644
--- a/packages/layerchart/src/routes/docs/examples/Compound/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Compound/+page.ts
@@ -21,6 +21,7 @@ export async function load({ fetch }) {
)) as HydroData,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'components/Bars',
'examples/Bars',
diff --git a/packages/layerchart/src/routes/docs/examples/CountryMap/+page.svelte b/packages/layerchart/src/routes/docs/examples/CountryMap/+page.svelte
index d43093176..2a9124785 100644
--- a/packages/layerchart/src/routes/docs/examples/CountryMap/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/CountryMap/+page.svelte
@@ -2,8 +2,9 @@
import { geoAlbersUsa } from 'd3-geo';
import { feature } from 'topojson-client';
- import { Canvas, Chart, GeoPath, Svg, Text } from 'layerchart';
+ import { Canvas, Chart, GeoPath, Layer, Text } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
const states = feature(data.geojson, data.geojson.objects.states);
@@ -11,7 +12,7 @@
Examples
-SVG
+Basic
@@ -21,7 +22,7 @@
fitGeojson: states,
}}
>
-
+
{#each states.features as feature}
{/each}
-
-
-
-
-
-Canvas
-
-
-
-
-
-
- {#each states.features as feature}
-
- {#snippet children({ geoPath })}
- {@const [x, y] = geoPath?.centroid(feature) ?? []}
-
- {/snippet}
-
- {/each}
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/CountryMap/+page.ts b/packages/layerchart/src/routes/docs/examples/CountryMap/+page.ts
index bde492d07..406d5bdbe 100644
--- a/packages/layerchart/src/routes/docs/examples/CountryMap/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/CountryMap/+page.ts
@@ -10,6 +10,7 @@ export async function load({ fetch }) {
}>,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/Dagre/+page.svelte b/packages/layerchart/src/routes/docs/examples/Dagre/+page.svelte
index 3233eec1a..051f06c21 100644
--- a/packages/layerchart/src/routes/docs/examples/Dagre/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Dagre/+page.svelte
@@ -5,12 +5,13 @@
import { slide } from 'svelte/transition';
import { cls } from '@layerstack/tailwind';
- import { Chart, Dagre, Group, Rect, Spline, Svg, Text, Tooltip } from 'layerchart';
+ import { Chart, Dagre, Group, Layer, Rect, Spline, Text, Tooltip } from 'layerchart';
import { Field, MenuField, Switch, Toggle } from 'svelte-ux';
import Preview from '$lib/docs/Preview.svelte';
import DagreControls from './DagreControls.svelte';
import TransformControls from '$lib/components/TransformControls.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -121,7 +122,7 @@
>
-
+
d.links} {...settings.playground}>
{#snippet children({ nodes, edges })}
@@ -162,7 +163,7 @@
{/snippet}
-
+
@@ -196,7 +197,7 @@
>
-
+
d.links} {...settings.simple}>
{#snippet children({ nodes, edges })}
@@ -237,7 +238,7 @@
{/snippet}
-
+
@@ -275,7 +276,7 @@
>
-
+
d.links} {...settings.tcpState}>
{#snippet children({ nodes, edges })}
@@ -339,7 +340,7 @@
{/snippet}
-
+
@@ -377,7 +378,7 @@
>
-
+
d.links}
@@ -445,7 +446,7 @@
{/snippet}
-
+
@@ -482,7 +483,7 @@
>
-
+
d.links}
@@ -531,7 +532,7 @@
{/each}
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/Dagre/+page.ts b/packages/layerchart/src/routes/docs/examples/Dagre/+page.ts
index 1d3cd642c..fca93d091 100644
--- a/packages/layerchart/src/routes/docs/examples/Dagre/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Dagre/+page.ts
@@ -58,6 +58,7 @@ export async function load({ fetch }) {
meta: {
pageSource,
+ supportedContexts: ['svg'], // TODO: `canvas` coming soon
related: ['components/Dagre', 'components/Link'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/Duration/+page.svelte b/packages/layerchart/src/routes/docs/examples/Duration/+page.svelte
index fc99b5303..9a1ca9b60 100644
--- a/packages/layerchart/src/routes/docs/examples/Duration/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Duration/+page.svelte
@@ -7,6 +7,7 @@
import Preview from '$lib/docs/Preview.svelte';
import { getRandomInteger } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
const count = 10;
const now = startOfDay(new Date());
@@ -23,6 +24,8 @@
};
});
+ let renderContext = $derived(shared.renderContext as 'svg' | 'canvas');
+
// TODO: Update to use better data example: https://observablehq.com/@d3/dot-plot
@@ -40,6 +43,7 @@
grid={{ x: false, y: true, bandAlign: 'between' }}
orientation="horizontal"
padding={{ left: 36, bottom: 36 }}
+ {renderContext}
>
{#snippet tooltip({ context })}
@@ -87,6 +91,7 @@
grid={{ x: false, y: true, bandAlign: 'between' }}
orientation="horizontal"
padding={{ left: 36, bottom: 36 }}
+ {renderContext}
>
{#snippet tooltip({ context })}
@@ -134,6 +139,7 @@
points: true,
},
}}
+ {renderContext}
>
{#snippet marks()}
@@ -192,6 +198,7 @@
points: true,
},
}}
+ {renderContext}
>
{#snippet marks()}
diff --git a/packages/layerchart/src/routes/docs/examples/Duration/+page.ts b/packages/layerchart/src/routes/docs/examples/Duration/+page.ts
index cd258a5af..779483d7e 100644
--- a/packages/layerchart/src/routes/docs/examples/Duration/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Duration/+page.ts
@@ -4,6 +4,7 @@ export async function load() {
return {
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/BarChart', 'components/Points'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/EarthquakeGlobe/+page.svelte b/packages/layerchart/src/routes/docs/examples/EarthquakeGlobe/+page.svelte
index f8ea9c229..f0e04f12e 100644
--- a/packages/layerchart/src/routes/docs/examples/EarthquakeGlobe/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/EarthquakeGlobe/+page.svelte
@@ -3,15 +3,7 @@
import { scaleSqrt } from 'd3-scale';
import { feature } from 'topojson-client';
- import {
- Button,
- ButtonGroup,
- Field,
- RangeField,
- Switch,
- ToggleGroup,
- ToggleOption,
- } from 'svelte-ux';
+ import { Button, ButtonGroup, Field, RangeField, Switch } from 'svelte-ux';
import { TimerState } from '@layerstack/svelte-state';
import {
@@ -24,6 +16,7 @@
type ChartContextValue,
} from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -50,26 +43,12 @@
disabled: true,
});
- let renderContext: 'svg' | 'canvas' = $state('svg');
let debug = $state(false);
Examples
-
-
- Svg
- Canvas
-
-
-
-
-
-
-
-
-
Start
@@ -85,6 +64,11 @@
disabled={!timer.running}
labelPlacement="left"
/>
+
+
+
+
+
@@ -106,7 +90,7 @@
ondragstart={timer.stop}
>
{#snippet children({ context })}
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/EarthquakeGlobe/+page.ts b/packages/layerchart/src/routes/docs/examples/EarthquakeGlobe/+page.ts
index 3d69ba38c..ae1ac4161 100644
--- a/packages/layerchart/src/routes/docs/examples/EarthquakeGlobe/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/EarthquakeGlobe/+page.ts
@@ -30,6 +30,7 @@ export async function load({ fetch }) {
),
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/EclipsesGlobe/+page.svelte b/packages/layerchart/src/routes/docs/examples/EclipsesGlobe/+page.svelte
index cf98486c4..4e5e97740 100644
--- a/packages/layerchart/src/routes/docs/examples/EclipsesGlobe/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/EclipsesGlobe/+page.svelte
@@ -21,6 +21,7 @@
import { TimerState } from '@layerstack/svelte-state';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -53,9 +54,7 @@
Examples
-
-
SVG
-
+
@@ -90,7 +89,7 @@
{#snippet children({ context })}
-
+
,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'https://www.visionscarto.net/empreintes-d-eclipses',
'http://xjubier.free.fr/en/site_pages/Solar_Eclipses.html',
diff --git a/packages/layerchart/src/routes/docs/examples/ForceDisjointGraph/+page.svelte b/packages/layerchart/src/routes/docs/examples/ForceDisjointGraph/+page.svelte
index 2262b2605..62efd5a58 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceDisjointGraph/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/ForceDisjointGraph/+page.svelte
@@ -11,10 +11,11 @@
import { scaleOrdinal } from 'd3-scale';
import { schemeCategory10 } from 'd3-scale-chromatic';
- import { Chart, Circle, ForceSimulation, Link, Svg } from 'layerchart';
+ import { Chart, Circle, ForceSimulation, Link, Layer } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import type { Prettify } from '@layerstack/utils';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -53,14 +54,10 @@
Examples
-
-
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/ForceDisjointGraph/+page.ts b/packages/layerchart/src/routes/docs/examples/ForceDisjointGraph/+page.ts
index 31b261c25..855f1b38d 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceDisjointGraph/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/ForceDisjointGraph/+page.ts
@@ -5,6 +5,7 @@ export async function load({ fetch }) {
miserables: await fetch('/data/examples/graph/disjoint-graph.json').then((r) => r.json()),
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['https://observablehq.com/@d3/disjoint-force-directed-graph'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/ForceDrag/+page.svelte b/packages/layerchart/src/routes/docs/examples/ForceDrag/+page.svelte
index 2a0c0a2a2..57ea87983 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceDrag/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/ForceDrag/+page.svelte
@@ -9,12 +9,13 @@
import { curveLinear } from 'd3-shape';
import { Field, Switch } from 'svelte-ux';
- import { Chart, ForceSimulation, Link, Svg, Tooltip } from 'layerchart';
+ import { Chart, ForceSimulation, Link, Layer, Tooltip } from 'layerchart';
import { cls } from '@layerstack/tailwind';
import { clamp, type Prettify } from '@layerstack/utils';
import Preview from '$lib/docs/Preview.svelte';
import { movable } from '$lib/actions/movable.js';
+ import { shared } from '../../shared.svelte.js';
type NodeDatum = {
id: number;
@@ -73,7 +74,7 @@
{#snippet children({ context })}
-
+
-
+
{context.tooltip.data?.id}
diff --git a/packages/layerchart/src/routes/docs/examples/ForceDrag/+page.ts b/packages/layerchart/src/routes/docs/examples/ForceDrag/+page.ts
index d2c80ef9c..871b56056 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceDrag/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/ForceDrag/+page.ts
@@ -4,6 +4,7 @@ export async function load() {
return {
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['https://observablehq.com/@d3/sticky-force-layout'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/ForceGraph/+page.svelte b/packages/layerchart/src/routes/docs/examples/ForceGraph/+page.svelte
index 7d6b89666..c27467467 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceGraph/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/ForceGraph/+page.svelte
@@ -11,11 +11,12 @@
import { scaleOrdinal } from 'd3-scale';
import { schemeCategory10 } from 'd3-scale-chromatic';
- import { Chart, Circle, ForceSimulation, Link, Svg, Tooltip } from 'layerchart';
+ import { Chart, Circle, ForceSimulation, Link, Layer, Tooltip } from 'layerchart';
import { Checkbox, Field, ProgressCircle, RangeField } from 'svelte-ux';
import Preview from '$lib/docs/Preview.svelte';
import type { Prettify } from '@layerstack/utils';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -277,7 +278,7 @@
{#snippet children({ context })}
-
+
-
+
{context.tooltip.data?.id}
diff --git a/packages/layerchart/src/routes/docs/examples/ForceGraph/+page.ts b/packages/layerchart/src/routes/docs/examples/ForceGraph/+page.ts
index b238daf79..947d100f9 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceGraph/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/ForceGraph/+page.ts
@@ -5,6 +5,7 @@ export async function load({ fetch }) {
miserables: await fetch('/data/examples/graph/miserables.json').then((r) => r.json()),
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['https://observablehq.com/@d3/force-directed-graph'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/ForceGroup/+page.svelte b/packages/layerchart/src/routes/docs/examples/ForceGroup/+page.svelte
index fcfa6f8ae..1a73e7a55 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceGroup/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/ForceGroup/+page.svelte
@@ -8,13 +8,13 @@
type SimulationNodeDatum,
} from 'd3-force';
- import { asAny, Chart, Circle, ForceSimulation, Svg } from 'layerchart';
+ import { asAny, Chart, Circle, ForceSimulation, Layer } from 'layerchart';
import { Field, ToggleGroup, ToggleOption } from 'svelte-ux';
import Preview from '$lib/docs/Preview.svelte';
-
import dots from './dots.json' with { type: 'json' };
import type { Prettify } from '@layerstack/utils';
+ import { shared } from '../../shared.svelte.js';
type NodeDatum = { category: string; value: number };
type MySimulationNodeDatum = Prettify;
@@ -62,7 +62,7 @@
{#snippet children({ context })}
{@const nodeStrokeWidth = 1}
-
+
@@ -91,7 +91,7 @@
{/each}
{/snippet}
-
+
{/snippet}
diff --git a/packages/layerchart/src/routes/docs/examples/ForceGroup/+page.ts b/packages/layerchart/src/routes/docs/examples/ForceGroup/+page.ts
index 48dcda64e..2f92cb817 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceGroup/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/ForceGroup/+page.ts
@@ -4,6 +4,7 @@ export async function load() {
return {
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/ForceLattice/+page.svelte b/packages/layerchart/src/routes/docs/examples/ForceLattice/+page.svelte
index eb19639b0..0513745ef 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceLattice/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/ForceLattice/+page.svelte
@@ -2,9 +2,10 @@
import { forceManyBody, forceLink } from 'd3-force';
import { curveLinear } from 'd3-shape';
- import { Chart, Circle, ForceSimulation, Link, Svg } from 'layerchart';
+ import { Chart, Circle, ForceSimulation, Link, Layer } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
const n = 20;
const nodes = Array.from({ length: n * n }, (_, i) => ({ index: i }));
@@ -25,15 +26,15 @@
-
-
- {#snippet children({ nodes, linkPositions })}
+
+ {#snippet children({ nodes, linkPositions })}
+
{#each links as link, i (i)}
{/each}
- {/snippet}
-
-
+
+ {/snippet}
+
diff --git a/packages/layerchart/src/routes/docs/examples/ForceLattice/+page.ts b/packages/layerchart/src/routes/docs/examples/ForceLattice/+page.ts
index ca2763df2..cd09df9a4 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceLattice/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/ForceLattice/+page.ts
@@ -4,6 +4,7 @@ export async function load() {
return {
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: [
'https://d3js.org/d3-force/link',
'https://observablehq.com/@d3/force-directed-lattice',
diff --git a/packages/layerchart/src/routes/docs/examples/ForceText/+page.svelte b/packages/layerchart/src/routes/docs/examples/ForceText/+page.svelte
index 1808bb393..9ba4fb14f 100644
--- a/packages/layerchart/src/routes/docs/examples/ForceText/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/ForceText/+page.svelte
@@ -1,13 +1,13 @@
Examples
@@ -67,6 +70,7 @@
yAxis: { format: 'metric', motion: 'tween' },
bars: { motion: 'tween' },
}}
+ {renderContext}
>
{#snippet tooltip()}
@@ -89,6 +93,7 @@
+
Horizontal
@@ -104,6 +109,7 @@
bars: { motion: 'tween' },
}}
orientation="horizontal"
+ {renderContext}
>
{#snippet tooltip()}
@@ -198,6 +204,7 @@
yAxis: { format: 'metric', motion: 'tween' },
bars: { motion: 'tween' },
}}
+ {renderContext}
>
{#snippet tooltip()}
@@ -250,6 +257,7 @@
yAxis: { format: 'metric', motion: 'tween' },
bars: { motion: 'tween' },
}}
+ {renderContext}
>
{#snippet tooltip()}
@@ -320,6 +328,7 @@
yAxis: { format: 'metric', motion: 'tween' },
bars: { motion: 'tween' },
}}
+ {renderContext}
>
{#snippet tooltip()}
diff --git a/packages/layerchart/src/routes/docs/examples/Histogram/+page.ts b/packages/layerchart/src/routes/docs/examples/Histogram/+page.ts
index e16093fac..a2a8acbee 100644
--- a/packages/layerchart/src/routes/docs/examples/Histogram/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Histogram/+page.ts
@@ -8,6 +8,7 @@ export async function load({ fetch }) {
)) as OlympiansData,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
related: ['components/Bars', 'examples/Bars', 'examples/Columns'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/Line/+page.svelte b/packages/layerchart/src/routes/docs/examples/Line/+page.svelte
index e4b5740ab..b5656b25b 100644
--- a/packages/layerchart/src/routes/docs/examples/Line/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Line/+page.svelte
@@ -6,15 +6,14 @@
import {
Axis,
- Canvas,
Chart,
Circle,
Highlight,
Labels,
+ Layer,
Legend,
LinearGradient,
Spline,
- Svg,
Text,
Tooltip,
pivotLonger,
@@ -23,6 +22,7 @@
import Preview from '$lib/docs/Preview.svelte';
import Blockquote from '$lib/docs/Blockquote.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -71,35 +71,11 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
-
-
-
-
-
-
Canvas
-
-
-
@@ -118,12 +94,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -150,12 +126,12 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -172,7 +148,7 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
@@ -180,7 +156,7 @@
{/snippet}
-
+
+
{/snippet}
-
+
{/snippet}
@@ -247,7 +223,7 @@
tooltip={{ mode: 'voronoi' }}
>
{#snippet children({ context })}
-
+
{#each dataByFruit as [fruit, data]}
@@ -267,7 +243,7 @@
{/each}
-
+
{#snippet children({ data })}
@@ -299,7 +275,7 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
d.y} class="stroke-2" stroke={fruitColors.bananas} />
@@ -307,7 +283,7 @@
d.y} points={{ fill: fruitColors.bananas }} />
d.y1} points={{ fill: fruitColors.oranges }} />
-
+
{#snippet children({ data })}
@@ -340,7 +316,7 @@
tooltip={{ mode: 'voronoi' }}
>
{#snippet children({ context })}
-
+
{#each dataByFruit as [fruit, data]}
@@ -363,7 +339,7 @@
{/each}
-
+
@@ -394,7 +370,7 @@
tooltip={{ mode: 'voronoi' }}
>
{#snippet children({ context })}
-
+
{#each dataByFruit as [fruit, data]}
@@ -403,7 +379,7 @@
{/each}
-
+
{#snippet children({ data })}
diff --git a/packages/layerchart/src/routes/docs/examples/Line/+page.ts b/packages/layerchart/src/routes/docs/examples/Line/+page.ts
index 5b951ec84..4f08aa0c7 100644
--- a/packages/layerchart/src/routes/docs/examples/Line/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Line/+page.ts
@@ -9,6 +9,7 @@ export async function load({ fetch }) {
),
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/LoftedArcs/+page.svelte b/packages/layerchart/src/routes/docs/examples/LoftedArcs/+page.svelte
index 3aecdcb04..3dcf5ff56 100644
--- a/packages/layerchart/src/routes/docs/examples/LoftedArcs/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/LoftedArcs/+page.svelte
@@ -3,11 +3,12 @@
import { flatRollup } from 'd3-array';
import { feature } from 'topojson-client';
- import { Chart, GeoEdgeFade, GeoPath, GeoPoint, GeoSpline, Graticule, Svg } from 'layerchart';
+ import { Chart, GeoEdgeFade, GeoPath, GeoPoint, GeoSpline, Graticule, Layer } from 'layerchart';
import { Field, Switch } from 'svelte-ux';
import GeoDebug from '$lib/docs/GeoDebug.svelte';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -40,7 +41,7 @@
}}
padding={{ top: 16, bottom: 16, left: 16, right: 16 }}
>
-
+
{#each countries.features as country}
@@ -52,7 +53,7 @@
{/each}
-
+
@@ -83,7 +84,7 @@
{#if debug}
{/if}
-
+
{#each countries.features as country}
@@ -100,7 +101,7 @@
{/each}
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/LoftedArcs/+page.ts b/packages/layerchart/src/routes/docs/examples/LoftedArcs/+page.ts
index 1be6a8043..9b47b9e8a 100644
--- a/packages/layerchart/src/routes/docs/examples/LoftedArcs/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/LoftedArcs/+page.ts
@@ -17,6 +17,7 @@ export async function load({ fetch }) {
)) as WorldLinksData,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
reference: 'https://observablehq.com/@armollica/globe-with-lofted-arcs',
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/Oscilloscope/+page.svelte b/packages/layerchart/src/routes/docs/examples/Oscilloscope/+page.svelte
index c0a0481a7..cd9bd50ac 100644
--- a/packages/layerchart/src/routes/docs/examples/Oscilloscope/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Oscilloscope/+page.svelte
@@ -1,5 +1,5 @@
Examples
@@ -83,6 +86,7 @@
grid={false}
props={{ spline: { class: 'stroke-surface-content' } }}
tooltip={{ mode: 'manual' }}
+ {renderContext}
/>
@@ -104,6 +108,7 @@
props={{
yAxis: { format: (d) => decibels(d)?.toFixed(1) },
}}
+ {renderContext}
>
{#snippet marks()}
d.value)
@@ -120,7 +123,7 @@
}}
bind:context
>
- (selected = complexHierarchy)}>
+ (selected = complexHierarchy)}>
{#each nodes as node ([node.data.name, node.parent?.data.name].join('-'))}
{/each}
+
{@const selectedNodes = selected
? (selected.children ?? [selected])
: nodes[0]
@@ -153,20 +157,18 @@
{@const trueNode = findSelectedNodeInHierarchy(node, nodes)}
{@const fontSize = 1 / context.transform.scale}
-
- {trueNode.data.name}
-
+ style="font-size: {fontSize}rem; stroke-width: {fontSize * 2}px"
+ class="fill-black stroke-white/70 pointer-events-none [text-anchor:middle] [paint-order:stroke]"
+ />
{/each}
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/Pack/+page.ts b/packages/layerchart/src/routes/docs/examples/Pack/+page.ts
index 3892fc5d9..2f2bf42d5 100644
--- a/packages/layerchart/src/routes/docs/examples/Pack/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Pack/+page.ts
@@ -5,6 +5,7 @@ export async function load({ fetch }) {
flare: await fetch('/data/examples/hierarchy/flare.json').then((r) => r.json()),
meta: {
pageSource,
+ supportedContexts: ['svg'], // TODO: `canvas` coming soon
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/Partition/+page.svelte b/packages/layerchart/src/routes/docs/examples/Partition/+page.svelte
index 7530ab1da..c73136020 100644
--- a/packages/layerchart/src/routes/docs/examples/Partition/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Partition/+page.svelte
@@ -15,7 +15,7 @@
Partition,
Rect,
RectClipPath,
- Svg,
+ Layer,
Text,
findAncestor,
} from 'layerchart';
@@ -33,6 +33,7 @@
import { cls } from '@layerstack/tailwind';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -172,7 +173,7 @@
{#snippet children({ context })}
-
+
{/snippet}
-
+
{/snippet}
@@ -267,7 +268,7 @@
{#snippet children({ context })}
-
+
{/snippet}
-
+
{/snippet}
@@ -372,7 +373,7 @@
-
+
@@ -439,7 +440,7 @@
{/snippet}
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/Partition/+page.ts b/packages/layerchart/src/routes/docs/examples/Partition/+page.ts
index 799611f5b..82edd0c32 100644
--- a/packages/layerchart/src/routes/docs/examples/Partition/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Partition/+page.ts
@@ -11,6 +11,7 @@ export async function load({ fetch }) {
),
meta: {
pageSource,
+ supportedContexts: ['svg'], // TODO: `canvas` coming soon
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/PunchCard/+page.svelte b/packages/layerchart/src/routes/docs/examples/PunchCard/+page.svelte
index 431261df1..e33b25869 100644
--- a/packages/layerchart/src/routes/docs/examples/PunchCard/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/PunchCard/+page.svelte
@@ -7,10 +7,13 @@
import Preview from '$lib/docs/Preview.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
const data = createDateSeries({ count: 60, min: 10, max: 100, value: 'integer' });
- const daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
+ const daysOfWeek = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
+
+ let renderContext = $derived(shared.renderContext as 'svg' | 'canvas');
Examples
@@ -28,7 +31,7 @@
yDomain={range(7)}
r="value"
rRange={[0, 16]}
- padding={{ left: 48, bottom: 16 }}
+ padding={{ left: 32, bottom: 16 }}
props={{
xAxis: { format: (d) => 'Week ' + d },
yAxis: { format: (d) => daysOfWeek[d] },
@@ -36,6 +39,7 @@
grid: { x: false, y: true, bandAlign: 'between' },
tooltip: { context: { mode: 'band' } },
}}
+ {renderContext}
>
{#snippet highlight()}
diff --git a/packages/layerchart/src/routes/docs/examples/PunchCard/+page.ts b/packages/layerchart/src/routes/docs/examples/PunchCard/+page.ts
index 48dcda64e..2f92cb817 100644
--- a/packages/layerchart/src/routes/docs/examples/PunchCard/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/PunchCard/+page.ts
@@ -4,6 +4,7 @@ export async function load() {
return {
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/RadialLine/+page.svelte b/packages/layerchart/src/routes/docs/examples/RadialLine/+page.svelte
index 18a7e7891..99a20cb39 100644
--- a/packages/layerchart/src/routes/docs/examples/RadialLine/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/RadialLine/+page.svelte
@@ -5,10 +5,11 @@
import { Field, ToggleGroup, ToggleOption } from 'svelte-ux';
import { cls } from '@layerstack/tailwind';
- import { Area, Axis, Chart, Points, Spline, Svg } from 'layerchart';
+ import { Area, Axis, Chart, Layer, Points, Spline } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import Blockquote from '$lib/docs/Blockquote.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -49,7 +50,7 @@
padding={{ top: 32, bottom: 8 }}
radial
>
-
+
-
+
@@ -75,8 +76,9 @@
y={['minmin', 'maxmax']}
yRange={({ height }) => [height / 5, height / 2]}
radial
+ padding={{ top: 12, bottom: 12 }}
>
-
+
d.avg} curve={curveCatmullRom} class="stroke-primary" />
d.min}
@@ -97,7 +99,7 @@
grid
format={(v) => v + '° F'}
/>
-
+
@@ -116,9 +118,10 @@
zDomain={[1940, 2024]}
zRange={[0.1, 0.2]}
radial
+ padding={{ top: 12, bottom: 12 }}
>
{#snippet children({ context })}
-
+
{#each flatGroup(data.dailyTemperatures, (d) => d.year) as [year, yearData]}
v + '° F'}
/>
-
+
{/snippet}
diff --git a/packages/layerchart/src/routes/docs/examples/RadialLine/+page.ts b/packages/layerchart/src/routes/docs/examples/RadialLine/+page.ts
index 507f0a5dd..3d86e1786 100644
--- a/packages/layerchart/src/routes/docs/examples/RadialLine/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/RadialLine/+page.ts
@@ -43,6 +43,7 @@ export async function load({ fetch }) {
}),
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/Sankey/+page.svelte b/packages/layerchart/src/routes/docs/examples/Sankey/+page.svelte
index aa507147b..0a9713454 100644
--- a/packages/layerchart/src/routes/docs/examples/Sankey/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Sankey/+page.svelte
@@ -16,7 +16,7 @@
Link,
Rect,
Sankey,
- Svg,
+ Layer,
Text,
Tooltip,
sankeyGraphFromHierarchy,
@@ -25,6 +25,7 @@
import Preview from '$lib/docs/Preview.svelte';
import SankeyControls from './SankeyControls.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -76,7 +77,7 @@
-
+
d.id}>
{#snippet children({ links, nodes })}
{#each links as link ([link.value, link.source.id, link.target.id].join('-'))}
@@ -98,7 +99,7 @@
{/each}
{/snippet}
-
+
@@ -109,7 +110,7 @@
{#snippet children({ context })}
-
+
d.name} nodeWidth={8}>
{#snippet children({ links, nodes })}
{#each links as link ([link.value, link.source.name, link.target.name].join('-'))}
@@ -146,7 +147,7 @@
{/each}
{/snippet}
-
+
{#snippet children({ data })}
@@ -195,7 +196,7 @@
-
+
d.name} nodeWidth={8}>
{#snippet children({ links, nodes })}
{#each links as link ([link.value, link.source.name, link.target.name].join('-'))}
@@ -245,7 +246,7 @@
{/each}
{/snippet}
-
+
@@ -258,7 +259,7 @@
{#snippet children({ context })}
-
+
-
+
{#snippet children({ data })}
@@ -384,7 +385,7 @@
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/Sankey/+page.ts b/packages/layerchart/src/routes/docs/examples/Sankey/+page.ts
index ee92e2314..5578c6939 100644
--- a/packages/layerchart/src/routes/docs/examples/Sankey/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Sankey/+page.ts
@@ -9,6 +9,7 @@ export async function load({ fetch }) {
meta: {
pageSource,
+ supportedContexts: ['svg'], // TODO: `canvas` coming soon
related: ['components/Sankey', 'components/Link'],
},
};
diff --git a/packages/layerchart/src/routes/docs/examples/Scatter/+page.svelte b/packages/layerchart/src/routes/docs/examples/Scatter/+page.svelte
index 8eb0cdc5a..1de42103f 100644
--- a/packages/layerchart/src/routes/docs/examples/Scatter/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Scatter/+page.svelte
@@ -2,13 +2,16 @@
import { scaleTime, scaleThreshold } from 'd3-scale';
import { format } from 'date-fns';
- import { Axis, Chart, Highlight, Labels, Points, Svg, Tooltip } from 'layerchart';
+ import { Axis, Chart, Highlight, Labels, Layer, Points, Tooltip } from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
import Blockquote from '$lib/docs/Blockquote.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
const data = createDateSeries({ min: 10, max: 100, value: 'integer' });
+
+ let renderContext = $derived(shared.renderContext as 'svg' | 'canvas');
Examples
@@ -30,11 +33,11 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -53,12 +56,12 @@
padding={{ left: 16, bottom: 24 }}
tooltip={{ mode: 'bisect-x' }}
>
-
+
-
+
{#snippet children({ data })}
@@ -85,12 +88,12 @@
yNice
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
@@ -114,11 +117,11 @@
cRange={['var(--color-danger)', 'var(--color-warning)', 'var(--color-success)']}
padding={{ left: 16, bottom: 24 }}
>
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/Scatter/+page.ts b/packages/layerchart/src/routes/docs/examples/Scatter/+page.ts
index 48dcda64e..2f92cb817 100644
--- a/packages/layerchart/src/routes/docs/examples/Scatter/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/Scatter/+page.ts
@@ -4,6 +4,7 @@ export async function load() {
return {
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/SketchyGlobe/+page.svelte b/packages/layerchart/src/routes/docs/examples/SketchyGlobe/+page.svelte
index 4eca91de2..dca4aef52 100644
--- a/packages/layerchart/src/routes/docs/examples/SketchyGlobe/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/SketchyGlobe/+page.svelte
@@ -4,12 +4,13 @@
import { feature } from 'topojson-client';
import { presimplify, simplify } from 'topojson-simplify';
- import { Chart, GeoPath, Graticule, Svg, type ChartContextValue } from 'layerchart';
+ import { Chart, GeoPath, Graticule, Layer, type ChartContextValue } from 'layerchart';
import { Button, ButtonGroup, Field, RangeField } from 'svelte-ux';
import { TimerState } from '@layerstack/svelte-state';
import Preview from '$lib/docs/Preview.svelte';
import CurveMenuField from '$lib/docs/CurveMenuField.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -45,7 +46,7 @@
Examples
-
SVG
+
Basic
@@ -77,11 +78,11 @@
ondragstart={timer.stop}
bind:context
>
-
+
-
+
diff --git a/packages/layerchart/src/routes/docs/examples/SketchyGlobe/+page.ts b/packages/layerchart/src/routes/docs/examples/SketchyGlobe/+page.ts
index e0cee5eac..480d72db5 100644
--- a/packages/layerchart/src/routes/docs/examples/SketchyGlobe/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/SketchyGlobe/+page.ts
@@ -11,6 +11,7 @@ export async function load({ fetch }) {
}>,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/Sparkbar/+page.svelte b/packages/layerchart/src/routes/docs/examples/Sparkbar/+page.svelte
index 00f500268..eae3e53d1 100644
--- a/packages/layerchart/src/routes/docs/examples/Sparkbar/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Sparkbar/+page.svelte
@@ -5,6 +5,7 @@
import Preview from '$lib/docs/Preview.svelte';
import { createDateSeries } from '$lib/utils/genData.js';
+ import { shared } from '../../shared.svelte.js';
const data = createDateSeries({
count: 30,
@@ -14,6 +15,8 @@
keys: ['value', 'baseline'],
});
const negativeData = createDateSeries({ count: 30, min: -20, max: 50, value: 'integer' });
+
+ let renderContext = $derived(shared.renderContext as 'svg' | 'canvas');
Examples
@@ -30,6 +33,7 @@
grid={false}
bandPadding={0.1}
props={{ bars: { radius: 1, strokeWidth: 0 } }}
+ {renderContext}
/>
@@ -49,6 +53,7 @@
grid={false}
bandPadding={0.1}
props={{ bars: { radius: 1, strokeWidth: 0 } }}
+ {renderContext}
/>
Sed ipsum justo, facilisis id tempor hendrerit, suscipit eu ipsum. Mauris ut sapien quis
nibh volutpat venenatis. Ut viverra justo varius sapien convallis venenatis vel faucibus urna.
@@ -68,6 +73,7 @@
grid={false}
bandPadding={0.1}
props={{ bars: { radius: 1, strokeWidth: 0 } }}
+ {renderContext}
/>
@@ -84,6 +90,7 @@
grid={false}
bandPadding={0.1}
props={{ bars: { radius: 1, strokeWidth: 0 } }}
+ {renderContext}
>
{#snippet tooltip({ context })}
{#snippet tooltip({ context })}
Examples
@@ -15,7 +18,15 @@
@@ -27,7 +38,15 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam pretium, ligula ac sollicitudin
ullamcorper, leo justo pretium tellus, at gravida ex quam et orci.
-
+
Sed ipsum justo, facilisis id tempor hendrerit, suscipit eu ipsum. Mauris ut sapien quis
nibh volutpat venenatis. Ut viverra justo varius sapien convallis venenatis vel faucibus urna.
@@ -37,7 +56,7 @@
Basic zero axis
-
+
@@ -54,6 +73,7 @@
props={{
highlight: { points: { r: 3, class: 'stroke-none' } },
}}
+ {renderContext}
>
{#snippet tooltip({ context })}
{#snippet tooltip({ context })}
Examples
-SVG
+Basic
@@ -69,7 +70,7 @@
-
+
{/snippet}
@@ -99,91 +100,18 @@
{strokeWidth}
/>
{/each}
-
-
-
- {#snippet children({ data })}
- {@const d = data.properties.data}
- {data.properties.name + ' - ' + data.properties.data?.state}
-
-
-
-
-
- {/snippet}
-
- {/snippet}
-
-
-
-
-Canvas
-
-
-
-
- {#snippet children({ context })}
- {@const strokeWidth = 1 / context.transform.scale}
-
-
-
-
-
- {#each enrichedCountiesFeatures as feature}
-
- {#snippet children({ geoPath })}
- {@const [x, y] = geoPath?.centroid(feature) ?? [0, 0]}
- {@const d = feature.properties.data}
- {@const height = heightScale(d?.population ?? 0)}
-
- {/snippet}
-
- {/each}
-
+
-
- {#if context.tooltip.data}
+
+
+ {#if context.tooltip.data && shared.renderContext === 'canvas'}
{/if}
-
+
{#snippet children({ data })}
diff --git a/packages/layerchart/src/routes/docs/examples/SpikeMap/+page.ts b/packages/layerchart/src/routes/docs/examples/SpikeMap/+page.ts
index beeb54e67..53f8b7218 100644
--- a/packages/layerchart/src/routes/docs/examples/SpikeMap/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/SpikeMap/+page.ts
@@ -17,6 +17,7 @@ export async function load({ fetch }) {
)) as USCountyPopulationData,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/StateMap/+page.svelte b/packages/layerchart/src/routes/docs/examples/StateMap/+page.svelte
index fe82203c3..f5d84fe18 100644
--- a/packages/layerchart/src/routes/docs/examples/StateMap/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/StateMap/+page.svelte
@@ -2,11 +2,13 @@
import { geoAlbersUsa, geoAlbers, geoMercator } from 'd3-geo';
import { feature } from 'topojson-client';
- import { Chart, ChartClipPath, GeoPath, Svg, Tooltip } from 'layerchart';
+ import { Chart, ChartClipPath, GeoPath, Layer, Tooltip } from 'layerchart';
import { SelectField } from 'svelte-ux';
import { sort } from '@layerstack/utils';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
+
let { data } = $props();
const counties = feature(data.geojson, data.geojson.objects.counties);
@@ -63,9 +65,9 @@
fitGeojson: selectedStateFeature,
}}
>
-
+
-
+
@@ -81,7 +83,7 @@
}}
>
{#snippet children({ context })}
-
+
{#each selectedCountiesFeatures as feature}
-
+
{context.tooltip.data?.properties.name}
@@ -114,7 +116,7 @@
}}
>
{#snippet children({ context })}
-
+
{#each counties.features as feature}
-
+
{context.tooltip.data?.properties.name}
diff --git a/packages/layerchart/src/routes/docs/examples/StateMap/+page.ts b/packages/layerchart/src/routes/docs/examples/StateMap/+page.ts
index af04f1af5..5a147d814 100644
--- a/packages/layerchart/src/routes/docs/examples/StateMap/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/StateMap/+page.ts
@@ -13,6 +13,7 @@ export async function load({ fetch }) {
}>,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/SubmarineCablesGlobe/+page.svelte b/packages/layerchart/src/routes/docs/examples/SubmarineCablesGlobe/+page.svelte
index e98851ecc..eac0b8e49 100644
--- a/packages/layerchart/src/routes/docs/examples/SubmarineCablesGlobe/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/SubmarineCablesGlobe/+page.svelte
@@ -13,11 +13,12 @@
GeoPoint,
GeoVisible,
Graticule,
- Svg,
+ Layer,
Tooltip,
type ChartContextValue,
} from 'layerchart';
import Preview from '$lib/docs/Preview.svelte';
+ import { shared } from '../../shared.svelte.js';
let { data } = $props();
@@ -46,7 +47,7 @@
Examples
-
SVG
+
Basic
@@ -79,7 +80,7 @@
bind:context
>
{#snippet children({ context })}
-
+
-
- context.tooltip.show(e, feature.properties)}
- onpointerleave={(e) => context.tooltip.hide()}
- />
-
+ context.tooltip.show(e, feature.properties)}
+ onpointerleave={(e) => context.tooltip.hide()}
+ />
{/each}
-
+
{#snippet children({ data })}
- {data.name}
+ {data.name}
@@ -100,7 +101,7 @@
tooltipContext={context.tooltip}
/>
{/each}
-
+
{#snippet children({ data })}
diff --git a/packages/layerchart/src/routes/docs/examples/TranslucentGlobe/+page.ts b/packages/layerchart/src/routes/docs/examples/TranslucentGlobe/+page.ts
index 4f6aadb26..f42afc5ae 100644
--- a/packages/layerchart/src/routes/docs/examples/TranslucentGlobe/+page.ts
+++ b/packages/layerchart/src/routes/docs/examples/TranslucentGlobe/+page.ts
@@ -13,6 +13,7 @@ export async function load({ fetch }) {
}>,
meta: {
pageSource,
+ supportedContexts: ['svg', 'canvas'],
},
};
}
diff --git a/packages/layerchart/src/routes/docs/examples/Tree/+page.svelte b/packages/layerchart/src/routes/docs/examples/Tree/+page.svelte
index 2db0660aa..4f68df8a1 100644
--- a/packages/layerchart/src/routes/docs/examples/Tree/+page.svelte
+++ b/packages/layerchart/src/routes/docs/examples/Tree/+page.svelte
@@ -1,18 +1,19 @@
`}
language="svelte"
/>