mapcomplete/UI/Base/If.svelte

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

24 lines
669 B
Svelte
Raw Normal View History

2023-03-24 19:21:15 +01:00
<script lang="ts">
import { UIEventSource } from "../../Logic/UIEventSource";
2023-03-28 05:13:48 +02:00
import { onDestroy } from "svelte";
2023-03-24 19:21:15 +01:00
/**
* For some stupid reason, it is very hard to let {#if} work together with UIEventSources, so we wrap then here
*/
export let condition: UIEventSource<boolean>;
let _c = condition.data;
2023-03-28 05:13:48 +02:00
onDestroy(condition.addCallback(c => {
/* Do _not_ abbreviate this as `.addCallback(c => _c = c)`. This is the same as writing `.addCallback(c => {return _c = c})`,
which will _unregister_ the callback if `c = true`! */
_c = c;
return false
}))
2023-03-24 19:21:15 +01:00
</script>
{#if _c}
<slot></slot>
2023-03-28 05:13:48 +02:00
{:else}
<slot name="else"></slot>
2023-03-24 19:21:15 +01:00
{/if}