import { Modal } from "@/deps"; import { SvelteDialogManagerBase, SvelteDialogMixIn, type ComponentHasResult, type SvelteDialogManagerDependencies, } from "@lib/services/implements/base/SvelteDialog"; import type { ObsidianServiceContext } from "@lib/services/implements/obsidian/ObsidianServiceContext"; import DialogHost from "@/lib/src/UI/DialogHost.svelte"; export const SvelteDialogBase = SvelteDialogMixIn(Modal, DialogHost); export class SvelteDialogObsidian< T, U, C extends ObsidianServiceContext = ObsidianServiceContext, > extends SvelteDialogBase { constructor( context: C, dependents: SvelteDialogManagerDependencies, component: ComponentHasResult, initialData?: U ) { super(context.app); this.initDialog(context, dependents, component, initialData); } } export class ObsidianSvelteDialogManager extends SvelteDialogManagerBase { override async openSvelteDialog( component: ComponentHasResult, initialData?: TU ): Promise { const dialog = new SvelteDialogObsidian(this.context, this.dependents, component, initialData); dialog.open(); return await dialog.waitForClose(); } }