@@ -3,6 +3,12 @@ import { StartupScriptsModal } from 'jsEngine/settings/StartupScriptModal';
33import type { App } from 'obsidian' ;
44import { PluginSettingTab , Setting } from 'obsidian' ;
55
6+ declare module 'obsidian' {
7+ interface App {
8+ openWithDefaultApp ( path : string ) : void ;
9+ }
10+ }
11+
612export interface JsEnginePluginSettings {
713 startupScriptsDirectory : string | undefined ;
814 enabledStartupScripts : string [ ] ;
@@ -37,5 +43,33 @@ export class JsEnginePluginSettingTab extends PluginSettingTab {
3743 new StartupScriptsModal ( this . plugin ) . open ( ) ;
3844 } ) ;
3945 } ) ;
46+
47+ new Setting ( containerEl )
48+ . setName ( 'JS snippets (loaded on startup)' )
49+ . setHeading ( )
50+ . addExtraButton ( el => {
51+ el . setTooltip ( 'Reload snippets' )
52+ . setIcon ( 'refresh-cw' )
53+ . onClick ( ( ) => {
54+ /* TODO */
55+ } ) ;
56+ } )
57+ . addExtraButton ( el => {
58+ el . setTooltip ( 'Open snippets folder' )
59+ . setIcon ( 'folder-open' )
60+ . onClick ( ( ) => this . app . openWithDefaultApp ( settings . startupScriptsDirectory ?? '' ) ) ;
61+ } ) ;
62+
63+ new Setting ( containerEl )
64+ . setName ( 'JS Snippets Folder' )
65+ . setDesc ( 'The folder to search for JavaScript files to load' )
66+ . addText ( el => {
67+ el . setPlaceholder ( 'Folder' )
68+ . setValue ( settings . startupScriptsDirectory ?? '' )
69+ . onChange ( async ( value : string ) => {
70+ settings . startupScriptsDirectory = value ;
71+ await this . plugin . saveSettings ( ) ;
72+ } ) ;
73+ } ) ;
4074 }
4175}
0 commit comments