obsidian-sample-plugin/src/PostProcessor.ts

37 lines
957 B
TypeScript

import { MarkdownPostProcessorContext } from "obsidian";
import LinkThumbnailPlugin from "./main";
import { LinkThumbnailWidgetParams } from "./LinkThumbnailWidgetParams";
export class PostProcessor {
plugin: LinkThumbnailPlugin;
constructor(plugin: LinkThumbnailPlugin) {
this.plugin = plugin;
}
processor = async (
element: HTMLElement,
context: MarkdownPostProcessorContext
) => {
// 링크 변환
const linkEls = element.findAll("a.external-link:not(.cm-formatting)");
for (const linkEl of linkEls) {
// dataview 클래스를 가진 부모 요소를 확인합니다.
if (linkEl.closest(".dataview") !== null) {
continue;
}
const url = linkEl.innerHTML;
const params = await LinkThumbnailWidgetParams(url);
if (params != null) {
linkEl.innerHTML = params;
linkEl.removeClass("external-link");
linkEl.addClass("markdown-rendered");
}
}
};
isDisabled = (el: Element) => {
return false;
};
}