@d3plus/svelte
v4.9.0
Published
Svelte action for rendering d3plus visualizations.
Maintainers
Readme
@d3plus/svelte
A Svelte action for rendering d3plus visualizations.
Installing
npm install @d3plus/svelte. Requires svelte (4 or 5) as a peer dependency, and @d3plus/core for the visualization classes.
Usage
Apply the d3plus action to a container element with use:d3plus, passing the visualization class and its config:
<script>
import {d3plus} from "@d3plus/svelte";
import {Treemap} from "@d3plus/core";
let config = $state({
data: [
{parent: "Group 1", id: "alpha", value: 29},
{parent: "Group 2", id: "beta", value: 10},
],
groupBy: ["parent", "id"],
sum: "value",
});
</script>
<div use:d3plus={{constructor: Treemap, config}} style="height: 400px"></div>The action creates an <svg> inside the host element, instantiates the visualization, and re-renders whenever the parameters change. A single instance is reused across updates so the chart tweens between states rather than restarting; it is destroyed when the element unmounts. Swapping constructor rebuilds from scratch.
Because config is reactive, reassigning it (or mutating $state) drives updates automatically. Assigning a structurally-identical config is a no-op — set forceUpdate: true to render on every update.
Parameters
The action takes a single object parameter:
| Property | Description |
| -------------- | ----------------------------------------------------------------------------- |
| constructor | Required. The d3plus visualization class to instantiate (e.g. Treemap). |
| config | Config object forwarded to the instance's .config() method. |
| globalConfig | Config merged ahead of config — a shared baseline across charts. |
| callback | A function invoked at the end of each render cycle. |
| forceUpdate | When true, re-renders on every update even if the config is unchanged. |
