Files
console/src/lib/stores/wizard.ts
T
2022-10-17 10:44:19 +02:00

44 lines
1021 B
TypeScript

import type { SvelteComponent } from 'svelte';
import { writable } from 'svelte/store';
export type WizardStore = {
show: boolean;
component?: typeof SvelteComponent;
interceptor?: () => Promise<void>;
};
function createWizardStore() {
const { subscribe, update } = writable<WizardStore>({
show: false,
component: null,
interceptor: null
});
return {
subscribe,
start: (component: typeof SvelteComponent) =>
update((n) => {
n.show = true;
n.component = component;
return n;
}),
setInterceptor: (callback: WizardStore['interceptor']) => {
update((n) => {
n.interceptor = callback;
return n;
});
},
hide: () =>
update((n) => {
n.show = false;
n.component = null;
return n;
})
};
}
export const wizard = createWizardStore();