import { Modal } from "@/deps"; import { SvelteDialogManagerBase, SvelteDialogMixIn, type ComponentHasResult, type SvelteDialogManagerDependencies, } from "@vrtmrz/livesync-commonlib/compat/services/implements/base/SvelteDialog"; import type { ObsidianServiceContext } from "@/modules/services/ObsidianServiceContext"; import DialogHost from "@/modules/services/LiveSyncUI/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(); } }