mdast-util-to-vnode
Version:
mdast utility to get the vue vnode
274 lines (273 loc) • 5.28 kB
JavaScript
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
};