Fix issues. Improve robustness.

This commit is contained in:
Simon Yang 2024-10-15 21:37:19 +11:00
parent a6fb4afbb6
commit e2b46a8f2e
5 changed files with 1138 additions and 4305 deletions

6
.prettierrc Normal file
View file

@ -0,0 +1,6 @@
{
"singleQuote": true,
"tabWidth": 2,
"useTabs": false,
"printWidth": 100
}

3767
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
{ {
"name": "obsidian-sample-plugin", "name": "obsidian-aicommander-plugin",
"version": "1.0.0", "version": "1.0.0",
"description": "This is a sample plugin for Obsidian (https://obsidian.md)", "description": "This is a sample plugin for Obsidian (https://obsidian.md)",
"main": "main.js", "main": "main.js",

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
import { App, Modal, Setting } from "obsidian"; import { App, Modal } from "obsidian";
export class PromptModal extends Modal { export class PromptModal extends Modal {
prompt: string; prompt: string;
@ -7,34 +7,47 @@ export class PromptModal extends Modal {
constructor( constructor(
app: App, app: App,
defaultprompt: string, defaultPrompt: string,
onSubmit: (prompt: string) => void onSubmit: (prompt: string) => void
) { ) {
super(app); super(app);
this.prompt = defaultprompt; this.prompt = defaultPrompt;
this.onSubmit = onSubmit; this.onSubmit = onSubmit;
} }
onOpen() { onOpen() {
const { contentEl } = this; const { contentEl } = this;
contentEl.createEl("h1", { text: "" }); // Add a title to the modal
contentEl.createEl("h2", { text: "Generate Text from Prompt" });
new Setting(contentEl).setName("Generate text from prompt").addText((text) => // Create a container for the textarea
text.setValue(this.prompt).onChange((value) => { const textareaContainer = contentEl.createDiv({ cls: "prompt-modal-textarea-container" });
this.prompt = value;
})
);
new Setting(contentEl).addButton((btn) => // Create the textarea element
btn const textarea = textareaContainer.createEl("textarea", { cls: "prompt-modal-textarea" });
.setButtonText("Submit") textarea.value = this.prompt;
.setCta()
.onClick(() => { textarea.addEventListener("input", () => {
this.close(); this.prompt = textarea.value;
this.onSubmit(this.prompt); });
})
); // Create a container for the buttons
const buttonContainer = contentEl.createDiv({ cls: "prompt-modal-button-container" });
// Create the submit button
const submitBtn = buttonContainer.createEl("button", { text: "Submit" });
submitBtn.addClass("mod-cta"); // Obsidian's standard call-to-action button styling
submitBtn.addEventListener("click", () => {
this.close();
this.onSubmit(this.prompt);
});
// Optionally, add a cancel button
const cancelBtn = buttonContainer.createEl("button", { text: "Cancel" });
cancelBtn.addEventListener("click", () => {
this.close();
});
} }
onClose() { onClose() {