UNPKG

mdast-util-to-vnode

Version:

mdast utility to get the vue vnode

274 lines (273 loc) 5.28 kB
import { h as a, Comment as j, Text as C } from "vue"; function v(r) { return Array.isArray(r); } function x(r) { return typeof r == "object" && r !== null; } function k(r) { return typeof r == "function"; } function s(r) { return x(r) && !v(r) && !k(r); } function f(r, ...t) { if (!s(r)) return r; const c = t.filter((l) => s(l)); if (!c.length) return r; const e = c.shift(); for (const l in e) s(e[l]) ? (Object.prototype.hasOwnProperty.call(r, l) || Object.assign(r, { [l]: {} }), f(r[l], e[l])) : Object.assign(r, { [l]: e[l] }); return f(r, ...c); } function i(r, t) { return t.reduce((c, e) => (c[e] = r[e], c), {}); } function P(r, t = {}) { return p(r, t, { index: 0, parent: null }); } function p(r, t = {}, c) { var n, m, h, b, g, y; let e = (n = t.components) == null ? void 0 : n[r.type], l = { ...(m = r.data) == null ? void 0 : m.vueProps }; switch (k(e) && (e = e(r)), v(e) && (l = { ...l, ...e[1] }, e = e[0]), r.type) { case "blockquote": return a( e ?? "blockquote", l, e ? { default: () => u(r, t) } : u(r, t) ); case "break": return a( e ?? "br", l ); case "code": return e ? a( e, f(i(r, ["lang", "meta", "value"]), l) ) : a( "pre", { "data-lang": r.lang, "data-meta": r.meta }, a("code", r.value) ); case "delete": return a( e ?? "s", l, e ? { default: () => u(r, t) } : u(r, t) ); case "emphasis": return a( e ?? "em", l, e ? { default: () => u(r, t) } : u(r, t) ); case "heading": return e ? a( e, f(i(r, ["depth"]), l) ) : a( `h${r.depth}`, u(r, t) ); case "html": return e ? a( e, f(i(r, ["value"]), l) ) : a( "pre", { "data-lang": "html" }, a("code", r.value) ); case "image": return e ? a( e, f(i(r, ["url", "alt", "title"]), l) ) : a( "img", { src: r.url, alt: r.alt, title: r.title } ); case "inlineCode": return e ? a( e, f(i(r, ["value"]), l) ) : a( "code", r.value ); case "link": return e ? a( e, f( { target: "_blank" }, i(r, ["url", "title"]), l ), { default: () => u(r, t) } ) : a( "a", { href: r.url, target: "_blank" }, u(r, t) ); case "list": return e ? a( e, f(i(r, ["ordered", "spread", "start"]), l), { default: () => u(r, t) } ) : a( r.ordered ? "ol" : "ul", u(r, t) ); case "listItem": return e ? a( e, f(i(r, ["checked", "spread"]), l), { default: () => u(r, t) } ) : a( "li", u(r, t) ); case "paragraph": return a( e ?? "p", l, e ? { default: () => u(r, t) } : u(r, t) ); case "root": return a( e ?? "div", l, e ? { default: () => u(r, t) } : u(r, t) ); case "strong": return a( e ?? "strong", l, e ? { default: () => u(r, t) } : u(r, t) ); case "table": return a( e ?? "table", l, e ? { default: () => u(r, t) } : u(r, t) ); case "tableRow": return e ? a( e, f(l, { index: c.index, align: ((h = c.parent.align) == null ? void 0 : h[c.index]) ?? "left" }), { default: () => u(r, t) } ) : a("tr", { align: ((b = c.parent.align) == null ? void 0 : b[c.index]) ?? "left" }, u(r, t)); case "tableCell": { const O = ((y = (g = c.parent.position) == null ? void 0 : g.start) == null ? void 0 : y.offset) === 0; return a( e ?? (O ? "th" : "td"), l, e ? { default: () => u(r, t) } : u(r, t) ); } case "text": return a( C, r.value ); case "thematicBreak": return a( e ?? "hr", l ); case "yaml": return e ? a( e, f( { lang: "yaml", value: r.value }, l ) ) : a( "pre", { "data-lang": "yaml" }, a("code", r.value) ); case "footnoteReference": return a( e ?? "sup", l, e ? { default: () => u(r, t) } : u(r, t) ); default: return e ? a( e, l ) : a(j, JSON.stringify(r)); } } function u(r, t = {}) { var c; return ((c = r.children) == null ? void 0 : c.map((e, l) => p(e, t, { index: l, parent: r }))) ?? []; } export { p as createVNode, P as toVNode };