diff --git a/esbuild.config.mjs b/esbuild.config.mjs index a5de8b8a5..309f17b6c 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/SampleModal.ts b/src/SampleModal.ts new file mode 100644 index 000000000..dd7e93437 --- /dev/null +++ b/src/SampleModal.ts @@ -0,0 +1,19 @@ +import { App, Modal } from "obsidian"; + +// Remember to rename these classes and interfaces! + +export class SampleModal extends Modal { + constructor(app: App) { + super(app); + } + + onOpen() { + const { contentEl } = this; + contentEl.setText('Woah!'); + } + + onClose() { + const { contentEl } = this; + contentEl.empty(); + } +} diff --git a/main.ts b/src/SamplePlugin.ts similarity index 72% rename from main.ts rename to src/SamplePlugin.ts index 2d0721299..597e571d0 100644 --- a/main.ts +++ b/src/SamplePlugin.ts @@ -1,17 +1,12 @@ -import { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Setting } from 'obsidian'; +import { Editor, MarkdownView, Notice, Plugin } from 'obsidian'; +import { SampleModal } from './SampleModal.ts'; +import { DEFAULT_SETTINGS, SamplePluginSettings } from './SamplePluginSettings.ts'; +import { SampleSettingTab } from './SampleSettingTab.ts'; // Remember to rename these classes and interfaces! -interface MyPluginSettings { - mySetting: string; -} - -const DEFAULT_SETTINGS: MyPluginSettings = { - mySetting: 'default' -} - -export default class MyPlugin extends Plugin { - settings: MyPluginSettings; +export class SamplePlugin extends Plugin { + settings: SamplePluginSettings; async onload() { await this.loadSettings(); @@ -90,45 +85,3 @@ export default class MyPlugin extends Plugin { await this.saveData(this.settings); } } - -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(); - })); - } -} diff --git a/src/SamplePluginSettings.ts b/src/SamplePluginSettings.ts new file mode 100644 index 000000000..8e7347038 --- /dev/null +++ b/src/SamplePluginSettings.ts @@ -0,0 +1,9 @@ +// Remember to rename these classes and interfaces! + +export interface SamplePluginSettings { + mySetting: string; +} + +export const DEFAULT_SETTINGS: SamplePluginSettings = { + mySetting: 'default' +} diff --git a/src/SampleSettingTab.ts b/src/SampleSettingTab.ts new file mode 100644 index 000000000..6ead9a08b --- /dev/null +++ b/src/SampleSettingTab.ts @@ -0,0 +1,31 @@ +import type { App } from "obsidian"; +import { PluginSettingTab, Setting } from "obsidian"; +import type { SamplePlugin } from "./SamplePlugin.ts"; + +// Remember to rename these classes and interfaces! + +export class SampleSettingTab extends PluginSettingTab { + plugin: SamplePlugin; + + constructor(app: App, plugin: SamplePlugin) { + 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(); + })); + } +} diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 000000000..a3af8311c --- /dev/null +++ b/src/main.ts @@ -0,0 +1,3 @@ +import { SamplePlugin } from './SamplePlugin.ts'; + +export default SamplePlugin; diff --git a/tsconfig.json b/tsconfig.json index c44b72972..cd3989a66 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,13 +1,14 @@ { "compilerOptions": { - "baseUrl": ".", + "allowImportingTsExtensions": true, "inlineSourceMap": true, "inlineSources": true, - "module": "ESNext", + "module": "NodeNext", "target": "ES6", "allowJs": true, + "noEmit": true, "noImplicitAny": true, - "moduleResolution": "node", + "moduleResolution": "NodeNext", "importHelpers": true, "isolatedModules": true, "strictNullChecks": true,