Migrates to svelte 5

This commit is contained in:
Christian Beutel
2025-01-24 17:46:13 +01:00
parent 7571f6e9b9
commit 3721b7f537
106 changed files with 5524 additions and 4232 deletions

View File

@@ -0,0 +1,44 @@
<script lang="ts">
import {
Chart,
Tooltip,
BarController,
type ChartData,
type ChartOptions,
} from 'chart.js';
import type { HTMLCanvasAttributes } from 'svelte/elements';
interface Props extends HTMLCanvasAttributes {
data: ChartData<'bar', number[], string>;
options: ChartOptions<'bar'>;
}
const { data, options, ...rest }: Props = $props();
Chart.register(Tooltip, BarController);
let canvasElem: HTMLCanvasElement;
let chart: Chart;
$effect(() => {
chart = new Chart(canvasElem, {
type: 'bar',
data,
options,
});
return () => {
chart.destroy();
};
});
$effect(() => {
if (chart) {
chart.data = data;
chart.update();
}
});
</script>
<canvas bind:this={canvasElem} {...rest}></canvas>

View File

@@ -0,0 +1,43 @@
<script lang="ts">
import {
Chart,
PieController,
Tooltip,
type ChartData,
type ChartOptions,
} from 'chart.js';
import type { HTMLCanvasAttributes } from 'svelte/elements';
interface Props extends HTMLCanvasAttributes {
data: ChartData<'pie', number[], string>;
options: ChartOptions<'pie'>;
}
const { data, options, ...rest }: Props = $props();
Chart.register(Tooltip, PieController);
let canvasElem: HTMLCanvasElement;
let chart: Chart;
$effect(() => {
chart = new Chart(canvasElem, {
type: 'pie',
data,
options,
});
return () => {
chart.destroy();
};
});
$effect(() => {
if (chart) {
chart.data = data;
chart.update();
}
});
</script>
<canvas bind:this={canvasElem} {...rest}></canvas>