23 lines
680 B
JavaScript
23 lines
680 B
JavaScript
import { visit } from 'unist-util-visit';
|
|
import { getCodeString } from 'rehype-rewrite';
|
|
import { getVNode } from './getSVGNode.mjs';
|
|
|
|
export function rehypePreviewHTML() {
|
|
return (tree) => {
|
|
visit(tree, (node, index, parent) => {
|
|
if (node.type === 'element' && node.tagName === 'pre') {
|
|
const child = node.children[0];
|
|
if (
|
|
child.properties?.className?.includes('language-html') &&
|
|
child?.tagName === 'code' &&
|
|
child.data?.meta === 'preview'
|
|
) {
|
|
const code = getCodeString(child.children);
|
|
const vnode = getVNode(code || '');
|
|
node.children = vnode;
|
|
}
|
|
}
|
|
});
|
|
};
|
|
}
|