// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes import { TextInputSuggest } from './suggest'; import { REGEXP_FLAGS, RegExpFlag } from '../constants/RegExpFlags'; export class RegExpFlagsSuggest extends TextInputSuggest { // @ts-ignore TODO refactor types getSuggestions() { return REGEXP_FLAGS; } renderSuggestion = (flag: RegExpFlag, el: HTMLElement) => { const { regExpState } = this.plugin.settings; const hasFlag = regExpState.flags.includes(flag); if (hasFlag) { el.addClass('bulk-flag-selected'); } else { el.removeClass('bulk-flag-selected'); } el.setText(flag); }; selectSuggestion = (flag: RegExpFlag, event: MouseEvent | KeyboardEvent) => { const { regExpState } = this.plugin.settings; const target = event.target as HTMLDivElement; const hasFlag = regExpState.flags.includes(flag); if (hasFlag) { regExpState.flags = regExpState.flags.filter((existingFlag) => { return existingFlag !== flag; }); } else { regExpState.flags = [...regExpState.flags, flag]; } target.classList.toggle('bulk-flag-selected'); this.inputEl.value = regExpState.flags.join(''); this.inputEl.trigger('input'); }; }