modalPage.ts
1 import type { GenericPage } from '@jet-app/app-store/api/models'; 2 import { type Writable, writable, type Readable } from 'svelte/store'; 3 4 interface Page { 5 page: GenericPage; 6 pageDetail?: string; 7 } 8 9 const modalPageStore: Writable<Page | undefined> = (() => { 10 // prevent global store on the server 11 if (typeof window === 'undefined') { 12 return { 13 subscribe: () => { 14 return () => {}; 15 }, 16 set: () => {}, 17 update: () => {}, 18 } as unknown as Writable<Page | undefined>; 19 } 20 21 return writable(); 22 })(); 23 24 interface ModalPageStore extends Readable<Page | undefined> { 25 setPage: (page: Page) => void; 26 clearPage: () => void; 27 } 28 29 export const getModalPageStore = (): ModalPageStore => { 30 return { 31 subscribe: modalPageStore.subscribe, 32 setPage: (page) => modalPageStore.set(page), 33 clearPage: () => modalPageStore.set(undefined), 34 }; 35 };