boredgame/src/lib/Portal.svelte
2022-05-05 23:51:20 -07:00

29 lines
511 B
Svelte

<script lang="ts">
function portal(node: HTMLElement) {
let target;
function update() {
target = document.querySelector('body');
if (target) target.appendChild(node);
node.hidden = false;
}
function destroy() {
if (node.parentNode) {
// Child will tell the parent to remove itself
node.parentNode.removeChild(node);
}
}
update();
return {
update,
destroy
};
}
</script>
<div use:portal hidden>
<slot />
</div>