|
1 |
| -import {Editor, EditorPosition, EditorSuggest, EditorSuggestContext, EditorSuggestTriggerInfo} from "obsidian"; |
2 |
| -import {Admonition} from "src/@types"; |
| 1 | +import { |
| 2 | + Editor, |
| 3 | + EditorPosition, |
| 4 | + EditorSuggest, |
| 5 | + EditorSuggestContext, |
| 6 | + EditorSuggestTriggerInfo |
| 7 | +} from "obsidian"; |
| 8 | +import { Admonition } from "src/@types"; |
3 | 9 | import ObsidianAdmonition from "src/main";
|
4 | 10 |
|
5 |
| -abstract class AdmonitionOrCalloutSuggester extends EditorSuggest<[string, Admonition]> { |
| 11 | +abstract class AdmonitionOrCalloutSuggester extends EditorSuggest< |
| 12 | + [string, Admonition] |
| 13 | +> { |
6 | 14 | constructor(public plugin: ObsidianAdmonition) {
|
7 | 15 | super(plugin.app);
|
8 | 16 | }
|
9 | 17 | getSuggestions(ctx: EditorSuggestContext) {
|
10 | 18 | if (!ctx.query?.length) return Object.entries(this.plugin.admonitions);
|
11 | 19 |
|
12 | 20 | return Object.entries(this.plugin.admonitions).filter((p) =>
|
13 |
| - p[0].toLowerCase().contains(ctx.query.toLowerCase())); |
| 21 | + p[0].toLowerCase().contains(ctx.query.toLowerCase()) |
| 22 | + ); |
14 | 23 | }
|
15 |
| - renderSuggestion([text, item]: [text: string, item: Admonition], el: HTMLElement) { |
16 |
| - el.addClass("admonition-suggester-item") |
17 |
| - el.style.setProperty("--callout-color", item.color) |
18 |
| - el.createSpan({ text }) |
19 |
| - const iconDiv = createDiv("suggestion-flair admonition-suggester-icon"); |
| 24 | + renderSuggestion( |
| 25 | + [text, item]: [text: string, item: Admonition], |
| 26 | + el: HTMLElement |
| 27 | + ) { |
| 28 | + el.addClasses(["admonition-suggester-item", "mod-complex"]); |
| 29 | + el.style.setProperty("--callout-color", item.color); |
| 30 | + el.createSpan({ text }); |
| 31 | + const iconDiv = el.createDiv("suggestion-aux").createDiv({ |
| 32 | + cls: "suggestion-flair", |
| 33 | + attr: { |
| 34 | + style: `color: rgb(var(--callout-color))` |
| 35 | + } |
| 36 | + }); |
20 | 37 | let iconEl = this.plugin.iconManager.getIconNode(item.icon);
|
21 | 38 | // Unpack the icon if it's an Obsidian one, as they're wrapped with an extra <div>
|
22 | 39 | if (iconEl instanceof HTMLDivElement && iconEl.childElementCount == 1)
|
23 |
| - iconEl = iconEl.firstElementChild |
| 40 | + iconEl = iconEl.firstElementChild; |
24 | 41 | else if (iconEl !== null) {
|
25 |
| - iconEl.removeClass("svg-inline--fa") |
26 |
| - iconEl.addClass("svg-icon") |
27 |
| - iconEl.addClass("svg-icon") |
| 42 | + iconEl.removeClass("svg-inline--fa"); |
| 43 | + iconEl.addClass("svg-icon"); |
28 | 44 | }
|
29 |
| - iconDiv |
30 |
| - .appendChild(iconEl ?? createDiv()) |
31 |
| - |
32 |
| - el.prepend(iconDiv); |
| 45 | + iconDiv.appendChild(iconEl ?? createDiv()); |
33 | 46 | }
|
34 | 47 | onTrigger(
|
35 | 48 | cursor: EditorPosition,
|
@@ -70,7 +83,10 @@ abstract class AdmonitionOrCalloutSuggester extends EditorSuggest<[string, Admon
|
70 | 83 |
|
71 | 84 | export class CalloutSuggest extends AdmonitionOrCalloutSuggester {
|
72 | 85 | offset = 4;
|
73 |
| - selectSuggestion([text]: [text: string, item: Admonition], evt: MouseEvent | KeyboardEvent): void { |
| 86 | + selectSuggestion( |
| 87 | + [text]: [text: string, item: Admonition], |
| 88 | + evt: MouseEvent | KeyboardEvent |
| 89 | + ): void { |
74 | 90 | if (!this.context) return;
|
75 | 91 |
|
76 | 92 | const line = this.context.editor
|
@@ -109,7 +125,10 @@ export class CalloutSuggest extends AdmonitionOrCalloutSuggester {
|
109 | 125 | }
|
110 | 126 | export class AdmonitionSuggest extends AdmonitionOrCalloutSuggester {
|
111 | 127 | offset = 6;
|
112 |
| - selectSuggestion([text]: [text: string, item: Admonition], evt: MouseEvent | KeyboardEvent): void { |
| 128 | + selectSuggestion( |
| 129 | + [text]: [text: string, item: Admonition], |
| 130 | + evt: MouseEvent | KeyboardEvent |
| 131 | + ): void { |
113 | 132 | if (!this.context) return;
|
114 | 133 |
|
115 | 134 | this.context.editor.replaceRange(
|
|
0 commit comments