insta-toc
Version:
Simultaneously generate, update, and maintain a table of contents for your notes in real time.
39 lines (33 loc) • 1.43 kB
text/typescript
import { stringifyYaml } from "obsidian";
import type InstaTocPlugin from "../../../Plugin";
import { getLocalSettingsOmitSuggestions } from "../../../settings/localSettingsCompletionOptions";
import { normalizeLocalTocSettings } from "../../../settings/localTocSettings";
import { LocalSettingsComponent, Modal, ModalBase, type MaybeAsyncFn } from "../..";
export default class LocalSettingsModal extends ModalBase {
private yamlContent: string;
constructor(plugin: InstaTocPlugin, onSubmit: MaybeAsyncFn<[string], boolean>) {
super(plugin, onSubmit);
this.yamlContent = stringifyYaml(normalizeLocalTocSettings(plugin.validator.localTocSettings));
}
onSaveSuccess(content: string): void {
this.yamlContent = content;
}
async open(): Promise<void> {
const darkMode = this.app.isDarkMode();
const omitSuggestions = getLocalSettingsOmitSuggestions(this.plugin.validator.metadata?.headings);
await this.mounter.setup(Modal, {
componentClassInstance: this,
plugin: this.plugin,
modalTitle: "Local Settings (YAML)",
ModalContentComponent: {
component: LocalSettingsComponent,
props: {
initialYaml: this
.yamlContent,
darkMode,
omitSuggestions
}
}
});
}
}