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;
 | |
|         }
 | |
|       }
 | |
|     });
 | |
|   };
 | |
| }
 | 
