import { addIcon , Plugin } from 'obsidian' ; import { DEFAULT_SETTINGS , Settings , TemplaterSettingTab } from "settings/Settings" ; import { FuzzySuggester } from "handlers/FuzzySuggester" ; import { ICON_DATA } from "utils/Constants" ; import { Templater } from "core/Templater" ; import EventHandler from "handlers/EventHandler" ; import { CommandHandler } from "handlers/CommandHandler" ; import { Editor } from "editor/Editor" ; export default class TemplaterPlugin extends Plugin { public settings : Settings ; public templater : Templater ; public event_handler : EventHandler ; public command_handler : CommandHandler ; public fuzzy_suggester : FuzzySuggester ; public editor_handler : Editor ; async onload ( ) { await this . load_settings ( ) ; this . templater = new Templater ( this . app , this ) ; await this . templater . setup ( ) ; this . editor_handler = new Editor ( this . app , this ) ; await this . editor_handler . setup ( ) ; this . fuzzy_suggester = new FuzzySuggester ( this . app , this ) ; this . event_handler = new EventHandler ( this . app , this , this . templater , this . settings ) ; this . event_handler . setup ( ) ; this . command_handler = new CommandHandler ( this . app , this ) ; this . command_handler . setup ( ) ; addIcon ( "templater-icon" , ICON_DATA ) ; this . addRibbonIcon ( "templater-icon" , "Templater" , async ( ) => { this . fuzzy_suggester . insert_template ( ) ; } ) ; this . addSettingTab ( new TemplaterSettingTab ( this . app , this ) ) ; this . app . workspace . onLayoutReady ( ( ) => { this . templater . execute_startup_scripts ( ) ; } ) ; } async save_settings ( ) { await this . saveData ( this . settings ) ; } async load_settings ( ) { this . settings = Object . assign ( { } , DEFAULT_SETTINGS , await this . loadData ( ) ) ; } }