@@ -3,6 +3,12 @@ import { StartupScriptsModal } from 'jsEngine/settings/StartupScriptModal';
3
3
import type { App } from 'obsidian' ;
4
4
import { PluginSettingTab , Setting } from 'obsidian' ;
5
5
6
+ declare module 'obsidian' {
7
+ interface App {
8
+ openWithDefaultApp ( path : string ) : void ;
9
+ }
10
+ }
11
+
6
12
export interface JsEnginePluginSettings {
7
13
startupScriptsDirectory : string | undefined ;
8
14
enabledStartupScripts : string [ ] ;
@@ -37,5 +43,33 @@ export class JsEnginePluginSettingTab extends PluginSettingTab {
37
43
new StartupScriptsModal ( this . plugin ) . open ( ) ;
38
44
} ) ;
39
45
} ) ;
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
+ } ) ;
40
74
}
41
75
}
0 commit comments