UNPKG

@docfy/ember-vite

Version:

Vite plugin for Docfy Ember integration with @embroider/vite

37 lines (36 loc) 1.54 kB
import visit from 'unist-util-visit'; import plugin from '@docfy/core/lib/plugin'; import { generateDemoComponentName, getExt, createDemoNodes, isDemoComponents, replaceNode } from './utils'; import path from 'path'; export default plugin({ runWithMdast(ctx) { const seenNames = new Set(); ctx.pages.forEach((page) => { const demoComponents = []; visit(page.ast, 'code', (node) => { if (['preview-template', 'preview'].includes(node.meta || '')) { demoComponents.push({ name: generateDemoComponentName(`docfy-demo-preview-${path.basename(page.meta.url)}`, seenNames), chunks: [ { snippet: node, code: node.value.replace(/\\{{/g, '{{'), ext: getExt(node.lang || 'hbs'), type: node.meta } ] }); } }); demoComponents.forEach((demoComponent) => { replaceNode(page.ast.children, demoComponent.chunks[0].snippet, ...createDemoNodes(demoComponent)); }); if (isDemoComponents(page.pluginData.demoComponents)) { page.pluginData.demoComponents.push(...demoComponents); } else { page.pluginData.demoComponents = demoComponents; } }); } });