vue-markdoc
Version:
Vue renderer for Markdoc
2 lines (1 loc) • 666 B
JavaScript
import{defineComponent as f,h as i}from"vue";function m(c,{components:a}={}){function s(r){if(r==null||typeof r!="object")return r;if(Array.isArray(r))return r.map(n=>s(n));if(r.$$mdtype==="Tag")return t(r);if(typeof r!="object")return r;let e={};for(let[n,o]of Object.entries(r))e[n]=s(o);return e}function t(r){if(Array.isArray(r))return i({render(){return r.map(t)}});if(r===null||typeof r!="object")return i({render(){return r}});let{name:e,attributes:n={},children:o=[]}=r,p=Object.keys(n).length===0?null:s(n);return a&&a[e]?i(a[e],{...p},()=>o.map(t)):e.render||e.setup?i(e,p,()=>o.map(t)):i(e,p,o.map(t))}return f({setup:()=>()=>t(c)})}export{m as default};