Skip to content

Commit 2c9221e

Browse files
committed
refactor(vega): add container and options
1 parent 8b27fd9 commit 2c9221e

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

packages/plugin-vega/src/index.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,33 @@
11
import type { BytemdPlugin } from 'bytemd';
2+
import type { default as Embed, EmbedOptions } from 'vega-embed';
23

3-
export default function vega(): BytemdPlugin {
4+
export default function vega(options: EmbedOptions = {}): BytemdPlugin {
5+
let embed: typeof Embed;
46
return {
57
viewerEffect({ $el }) {
68
const els = $el.querySelectorAll<HTMLElement>('pre>code.language-vega');
79
if (els.length === 0) return;
810

9-
import('vega-embed').then(({ default: embed }) => {
11+
(async () => {
12+
if (!embed) {
13+
embed = await import('vega-embed').then((m) => m.default);
14+
}
15+
1016
els.forEach((el) => {
1117
try {
1218
const pre = el.parentElement!;
13-
embed(el, JSON.parse(el.innerText));
14-
pre.replaceWith(pre.children[0]);
19+
const source = el.innerText;
20+
21+
const container = document.createElement('div');
22+
container.classList.add('bytemd-vega');
23+
pre.replaceWith(container);
24+
25+
embed(container, source, options);
1526
} catch (err) {
16-
console.error(err);
27+
// console.error(err);
1728
}
1829
});
19-
});
30+
})();
2031
},
2132
};
2233
}

0 commit comments

Comments
 (0)