import { Modal } from "@/deps"; import { SvelteDialogManagerBase, 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"; import { SvelteDialogSession } from "@/modules/services/SvelteDialogSession"; export class SvelteDialogObsidian extends Modal { private readonly session: SvelteDialogSession; constructor( context: C, dependents: SvelteDialogManagerDependencies, component: ComponentHasResult, initialData?: U ) { super(context.app); this.session = new SvelteDialogSession({ surface: this, context, dependencies: dependents, dialogHost: DialogHost, component, initialData, }); } override onOpen(): void { this.session.onOpen(); this.contentEl.closest(".modal-container")?.classList.add("livesync-svelte-dialog-container"); } override onClose(): void { this.session.onClose(); } waitForClose(): Promise { return this.session.waitForClose(); } } 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(); } }