blob: c2546c021dafdccc90e9c916eb751d0772f65149 [file]
<script lang="ts" generics="T extends ComponentType">
import { run } from 'svelte/legacy';
import type { ComponentProps, ComponentType, SvelteComponent } from 'svelte';
interface Props {
component: T;
props: ComponentProps<InstanceType<T>>;
}
let { component, props }: Props = $props();
let target: HTMLElement | null = $state(null);
let prevComponent: SvelteComponent | null = $state(null);
run(() => {
if (component && props && target) {
if (prevComponent) {
prevComponent.$destroy();
}
prevComponent = new component({ target, props, hydrate: true });
}
});
</script>
<div bind:this={target}></div>