1
0
Fork 0
mirror of synced 2024-09-15 08:47:37 +12:00
budibase/packages/client/src/store/screens.js

42 lines
1.2 KiB
JavaScript
Raw Normal View History

import { derived } from "svelte/store"
import { routeStore } from "./routes"
import { builderStore } from "./builder"
import { appStore } from "./app"
const createScreenStore = () => {
const store = derived(
[appStore, routeStore, builderStore],
([$appStore, $routeStore, $builderStore]) => {
let activeLayout
let activeScreen
if ($builderStore.inBuilder) {
// Use builder defined definitions if inside the builder preview
activeLayout = $builderStore.layout
activeScreen = $builderStore.screen
} else {
activeLayout = { props: { _component: "screenslot" } }
// Find the correct screen by matching the current route
const { screens, layouts } = $appStore
if ($routeStore.activeRoute) {
activeScreen = screens.find(
2021-05-04 22:32:22 +12:00
screen => screen._id === $routeStore.activeRoute.screenId
)
}
if (activeScreen) {
activeLayout = layouts.find(
2021-05-04 22:32:22 +12:00
layout => layout._id === activeScreen.layoutId
)
}
}
return { activeLayout, activeScreen }
}
)
return {
subscribe: store.subscribe,
}
}
export const screenStore = createScreenStore()