2020-11-14 04:42:32 +13:00
|
|
|
<script>
|
2020-11-26 07:30:09 +13:00
|
|
|
import { fade } from "svelte/transition"
|
2020-11-19 08:18:18 +13:00
|
|
|
import { screenStore, routeStore } from "../store"
|
2020-11-14 04:42:32 +13:00
|
|
|
import Component from "./Component.svelte"
|
2021-02-11 04:49:23 +13:00
|
|
|
import Provider from "./Provider.svelte"
|
2020-11-14 04:42:32 +13:00
|
|
|
|
2020-11-19 08:18:18 +13:00
|
|
|
// Keep route params up to date
|
2020-12-01 04:05:36 +13:00
|
|
|
export let params = {}
|
2020-11-24 00:29:24 +13:00
|
|
|
$: routeStore.actions.setRouteParams(params || {})
|
2020-11-14 04:42:32 +13:00
|
|
|
|
|
|
|
// Get the screen definition for the current route
|
2020-11-19 08:18:18 +13:00
|
|
|
$: screenDefinition = $screenStore.activeScreen?.props
|
2020-11-18 01:08:24 +13:00
|
|
|
|
2020-11-28 05:36:31 +13:00
|
|
|
// Redirect to home layout if no matching route
|
2020-11-19 08:18:18 +13:00
|
|
|
$: screenDefinition == null && routeStore.actions.navigate("/")
|
2020-11-14 04:42:32 +13:00
|
|
|
</script>
|
|
|
|
|
2021-02-11 04:49:23 +13:00
|
|
|
<!-- Ensure to fully remount when screen changes -->
|
|
|
|
{#key screenDefinition?._id}
|
|
|
|
<Provider key="url" data={params}>
|
2021-03-02 04:56:28 +13:00
|
|
|
<Component definition={screenDefinition} />
|
2021-02-11 04:49:23 +13:00
|
|
|
</Provider>
|
|
|
|
{/key}
|