Embed は、app.embedRegistry
によって管理されている。
type EmbedCreator = (info: any, file: TFile, subpath: string) => Component;
class EmbedRegistry {
embedByExtension: Record<string, EmbedCreator>;
registerExtension(extension: string, embedCreator: EmbedCreator): void;
unregisterExtension(extension: string): void;
registerExtensions(extensions: string[], embedCreator: EmbedCreator): void;
unregisterExtensions(extensions: string[]): void;
isExtensionRegistered(extension: string): boolean;
getEmbedCreator(file: TFile) => EmbedCreator | null;
}
registerExtension
することによって、プラグインから独自の埋め込み方を指定することができるはず。
app.embedRegistry.unregisterExtension('md');
してから .md
用の EmbedCreator
として MarkdownView を登録したら、editable embed が実現できないか?などと安直に考えたが、ダメだった。