import { App, SuggestModal } from "obsidian"; export class TextSuggestModal extends SuggestModal { constructor( app: App, private readonly items: string[], private readonly onChoose: (value: string) => void ) { super(app); } getSuggestions(query: string): string[] | Promise { return this.items.filter((item) => item.toLowerCase().includes(query.toLowerCase()) ); } renderSuggestion(value: string, el: HTMLElement): void { el.setText(value); } onChooseSuggestion(item: string, evt: MouseEvent | KeyboardEvent): void { this.onChoose(item); } static async createAndOpen( app: App, results: string[] ): Promise { return new Promise((resolve, reject) => { const modal = new TextSuggestModal(app, results, (results) => { modal.close(); resolve(results); }); modal.open(); }); } }