From d209e1bbed3d67b289b1bfb0cfa6b1aec970e0a0 Mon Sep 17 00:00:00 2001 From: liufree Date: Thu, 27 Feb 2025 23:39:12 +0800 Subject: [PATCH] feat: init --- .gitignore | 2 ++ esbuild.config.mjs | 2 +- src/components/SampleModal.ts | 19 +++++++++++++ src/components/SampleSettingTab.ts | 30 ++++++++++++++++++++ main.ts => src/main.ts | 44 ++---------------------------- 5 files changed, 54 insertions(+), 43 deletions(-) create mode 100644 src/components/SampleModal.ts create mode 100644 src/components/SampleSettingTab.ts rename main.ts => src/main.ts (79%) diff --git a/.gitignore b/.gitignore index e09a007..534f300 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ data.json # Exclude macOS Finder (System Explorer) View States .DS_Store + +package-lock.json diff --git a/esbuild.config.mjs b/esbuild.config.mjs index a5de8b8..309f17b 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -15,7 +15,7 @@ const context = await esbuild.context({ banner: { js: banner, }, - entryPoints: ["main.ts"], + entryPoints: ["src/main.ts"], bundle: true, external: [ "obsidian", diff --git a/src/components/SampleModal.ts b/src/components/SampleModal.ts new file mode 100644 index 0000000..e1ebb65 --- /dev/null +++ b/src/components/SampleModal.ts @@ -0,0 +1,19 @@ +import {App, Modal} from "obsidian"; + +class SampleModal extends Modal { + constructor(app: App) { + super(app); + } + + onOpen() { + const {contentEl} = this; + contentEl.setText('Woah!'); + } + + onClose() { + const {contentEl} = this; + contentEl.empty(); + } +} + +export default SampleModal; diff --git a/src/components/SampleSettingTab.ts b/src/components/SampleSettingTab.ts new file mode 100644 index 0000000..a3fb0b3 --- /dev/null +++ b/src/components/SampleSettingTab.ts @@ -0,0 +1,30 @@ +import {App, PluginSettingTab, Setting} from "obsidian"; +import MyPlugin from "../main"; + +class SampleSettingTab extends PluginSettingTab { + plugin: MyPlugin; + + constructor(app: App, plugin: MyPlugin) { + super(app, plugin); + this.plugin = plugin; + } + + display(): void { + const {containerEl} = this; + + containerEl.empty(); + + new Setting(containerEl) + .setName('Setting #2') + .setDesc('It\'s a secret') + .addText(text => text + .setPlaceholder('Enter your secret') + .setValue(this.plugin.settings.mySetting) + .onChange(async (value) => { + this.plugin.settings.mySetting = value; + await this.plugin.saveSettings(); + })); + } +} + +export default SampleSettingTab; diff --git a/main.ts b/src/main.ts similarity index 79% rename from main.ts rename to src/main.ts index 2d07212..6b2d27c 100644 --- a/main.ts +++ b/src/main.ts @@ -1,5 +1,6 @@ import { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting } from 'obsidian'; - +import SampleSettingTab from './components/SampleSettingTab'; +import SampleModal from "./components/SampleModal"; // Remember to rename these classes and interfaces! interface MyPluginSettings { @@ -91,44 +92,3 @@ export default class MyPlugin extends Plugin { } } -class SampleModal extends Modal { - constructor(app: App) { - super(app); - } - - onOpen() { - const {contentEl} = this; - contentEl.setText('Woah!'); - } - - onClose() { - const {contentEl} = this; - contentEl.empty(); - } -} - -class SampleSettingTab extends PluginSettingTab { - plugin: MyPlugin; - - constructor(app: App, plugin: MyPlugin) { - super(app, plugin); - this.plugin = plugin; - } - - display(): void { - const {containerEl} = this; - - containerEl.empty(); - - new Setting(containerEl) - .setName('Setting #1') - .setDesc('It\'s a secret') - .addText(text => text - .setPlaceholder('Enter your secret') - .setValue(this.plugin.settings.mySetting) - .onChange(async (value) => { - this.plugin.settings.mySetting = value; - await this.plugin.saveSettings(); - })); - } -}