37 lines
896 B
TypeScript
37 lines
896 B
TypeScript
|
|
import {readable, writable} from 'svelte/store'
|
||
|
|
import type {FlyParams} from 'svelte/types'
|
||
|
|
import {fly as baseFly} from 'svelte/transition'
|
||
|
|
import {pushState} from '$app/navigation'
|
||
|
|
|
||
|
|
// Animations
|
||
|
|
|
||
|
|
export const fly = (node: Element, params: FlyParams | undefined) => baseFly(node, {y: 20, ...params})
|
||
|
|
|
||
|
|
// Toast
|
||
|
|
|
||
|
|
export const toast = writable(null)
|
||
|
|
|
||
|
|
// Modals
|
||
|
|
|
||
|
|
// TODO: fix memory leak here by listening to history somehow
|
||
|
|
export const modals = new Map()
|
||
|
|
|
||
|
|
export const pushModal = (component, props) => {
|
||
|
|
const id = Math.random()
|
||
|
|
|
||
|
|
modals.set(id, {component, props})
|
||
|
|
pushState('', {modal: id})
|
||
|
|
|
||
|
|
return id
|
||
|
|
}
|
||
|
|
|
||
|
|
// App state
|
||
|
|
|
||
|
|
export const spaces = readable([
|
||
|
|
{
|
||
|
|
id: 'test',
|
||
|
|
name: "Test",
|
||
|
|
picture: "https://images.unsplash.com/photo-1721853046219-209921be684e?w=800&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxmZWF0dXJlZC1waG90b3MtZmVlZHw0fHx8ZW58MHx8fHx8"
|
||
|
|
}
|
||
|
|
])
|