andy-stack_vaultkeeper-ai/Modals/HelpModal.ts
2025-11-10 08:03:27 +00:00

47 lines
No EOL
1.3 KiB
TypeScript

import type VaultkeeperAIPlugin from "main";
import { Modal } from "obsidian";
import { Resolve } from "Services/DependencyService";
import { Services } from "Services/Services";
import HelpModalSvelte from './HelpModalSvelte.svelte';
import { mount, unmount } from 'svelte';
import { Selector } from 'Enums/Selector';
export class HelpModal extends Modal {
private component: Record<string, any> | null = null;
public constructor() {
const plugin = Resolve<VaultkeeperAIPlugin>(Services.VaultkeeperAIPlugin);
super(plugin.app);
}
onOpen() {
const { contentEl, modalEl, containerEl } = this;
containerEl.addClass(Selector.HelpModal);
modalEl.addClass(Selector.HelpModal);
this.component = mount(HelpModalSvelte, {
target: contentEl,
props: {
onClose: () => this.close(),
initialTopic: (this as any).initialTopic
}
});
}
public open(initialTopic?: number): void {
(this as any).initialTopic = initialTopic;
super.open();
}
onClose() {
if (this.component) {
unmount(this.component);
this.component = null;
}
const { contentEl } = this;
contentEl.empty();
}
}