This commit is contained in:
820
node_modules/remark-slate-transformer/lib/index.js
generated
vendored
Normal file
820
node_modules/remark-slate-transformer/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,820 @@
|
||||
'use strict';
|
||||
|
||||
var tslib = require('tslib');
|
||||
|
||||
const unreachable = (_) => {
|
||||
throw new Error("unreachable");
|
||||
};
|
||||
|
||||
const mdastToSlate = (node, overrides) => {
|
||||
return buildSlateRoot(node, overrides);
|
||||
};
|
||||
const buildSlateRoot = (root, overrides) => {
|
||||
return convertNodes$3(root.children, {}, overrides);
|
||||
};
|
||||
const convertNodes$3 = (nodes, deco, overrides) => {
|
||||
return nodes.reduce((acc, node) => {
|
||||
acc.push(...buildSlateNode(node, deco, overrides));
|
||||
return acc;
|
||||
}, []);
|
||||
};
|
||||
const buildSlateNode = (node, deco, overrides) => {
|
||||
var _a;
|
||||
const customNode = (_a = overrides[node.type]) === null || _a === void 0 ? void 0 : _a.call(overrides, node, (children) => convertNodes$3(children, deco, overrides));
|
||||
if (customNode != null) {
|
||||
return [customNode];
|
||||
}
|
||||
switch (node.type) {
|
||||
case "paragraph":
|
||||
return [buildParagraph$1(node, deco, overrides)];
|
||||
case "heading":
|
||||
return [buildHeading$1(node, deco, overrides)];
|
||||
case "thematicBreak":
|
||||
return [buildThematicBreak$1(node)];
|
||||
case "blockquote":
|
||||
return [buildBlockquote$1(node, deco, overrides)];
|
||||
case "list":
|
||||
return [buildList$1(node, deco, overrides)];
|
||||
case "listItem":
|
||||
return [buildListItem$1(node, deco, overrides)];
|
||||
case "table":
|
||||
return [buildTable$1(node, deco, overrides)];
|
||||
case "tableRow":
|
||||
return [buildTableRow$1(node, deco, overrides)];
|
||||
case "tableCell":
|
||||
return [buildTableCell$1(node, deco, overrides)];
|
||||
case "html":
|
||||
return [buildHtml$1(node)];
|
||||
case "code":
|
||||
return [buildCode$1(node)];
|
||||
case "yaml":
|
||||
return [buildYaml$1(node)];
|
||||
case "toml":
|
||||
return [buildToml$1(node)];
|
||||
case "definition":
|
||||
return [buildDefinition$1(node)];
|
||||
case "footnoteDefinition":
|
||||
return [buildFootnoteDefinition$1(node, deco, overrides)];
|
||||
case "text":
|
||||
return [buildText(node.value, deco)];
|
||||
case "emphasis":
|
||||
case "strong":
|
||||
case "delete": {
|
||||
const { type, children } = node;
|
||||
return children.reduce((acc, n) => {
|
||||
acc.push(...buildSlateNode(n, Object.assign(Object.assign({}, deco), { [type]: true }), overrides));
|
||||
return acc;
|
||||
}, []);
|
||||
}
|
||||
case "inlineCode": {
|
||||
const { type, value } = node;
|
||||
return [buildText(value, Object.assign(Object.assign({}, deco), { [type]: true }))];
|
||||
}
|
||||
case "break":
|
||||
return [buildBreak$1(node)];
|
||||
case "link":
|
||||
return [buildLink$1(node, deco, overrides)];
|
||||
case "image":
|
||||
return [buildImage$1(node)];
|
||||
case "linkReference":
|
||||
return [buildLinkReference$1(node, deco, overrides)];
|
||||
case "imageReference":
|
||||
return [buildImageReference$1(node)];
|
||||
case "footnote":
|
||||
return [buildFootnote$1(node, deco, overrides)];
|
||||
case "footnoteReference":
|
||||
return [buildFootnoteReference(node)];
|
||||
case "math":
|
||||
return [buildMath$1(node)];
|
||||
case "inlineMath":
|
||||
return [buildInlineMath$1(node)];
|
||||
default:
|
||||
unreachable();
|
||||
break;
|
||||
}
|
||||
return [];
|
||||
};
|
||||
const buildParagraph$1 = ({ type, children }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
};
|
||||
};
|
||||
const buildHeading$1 = ({ type, children, depth }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
depth,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
};
|
||||
};
|
||||
const buildThematicBreak$1 = ({ type }) => {
|
||||
return {
|
||||
type,
|
||||
children: [{ text: "" }],
|
||||
};
|
||||
};
|
||||
const buildBlockquote$1 = ({ type, children }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
};
|
||||
};
|
||||
const buildList$1 = ({ type, children, ordered, start, spread }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
ordered,
|
||||
start,
|
||||
spread,
|
||||
};
|
||||
};
|
||||
const buildListItem$1 = ({ type, children, checked, spread }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children:
|
||||
// https://github.com/inokawa/remark-slate-transformer/issues/42
|
||||
// https://github.com/inokawa/remark-slate-transformer/issues/129
|
||||
children.length === 0
|
||||
? [{ text: "" }]
|
||||
: convertNodes$3(children, deco, overrides),
|
||||
checked,
|
||||
spread,
|
||||
};
|
||||
};
|
||||
const buildTable$1 = ({ type, children, align }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
align,
|
||||
};
|
||||
};
|
||||
const buildTableRow$1 = ({ type, children }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
};
|
||||
};
|
||||
const buildTableCell$1 = ({ type, children }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
};
|
||||
};
|
||||
const buildHtml$1 = ({ type, value }) => {
|
||||
return {
|
||||
type,
|
||||
children: [{ text: value }],
|
||||
};
|
||||
};
|
||||
const buildCode$1 = ({ type, value, lang, meta }) => {
|
||||
return {
|
||||
type,
|
||||
lang,
|
||||
meta,
|
||||
children: [{ text: value }],
|
||||
};
|
||||
};
|
||||
const buildYaml$1 = ({ type, value }) => {
|
||||
return {
|
||||
type,
|
||||
children: [{ text: value }],
|
||||
};
|
||||
};
|
||||
const buildToml$1 = ({ type, value }) => {
|
||||
return {
|
||||
type,
|
||||
children: [{ text: value }],
|
||||
};
|
||||
};
|
||||
const buildMath$1 = ({ type, value }) => {
|
||||
return {
|
||||
type,
|
||||
children: [{ text: value }],
|
||||
};
|
||||
};
|
||||
const buildInlineMath$1 = ({ type, value }) => {
|
||||
return {
|
||||
type,
|
||||
children: [{ text: value }],
|
||||
};
|
||||
};
|
||||
const buildDefinition$1 = ({ type, identifier, label, url, title, }) => {
|
||||
return {
|
||||
type,
|
||||
identifier,
|
||||
label,
|
||||
url,
|
||||
title,
|
||||
children: [{ text: "" }],
|
||||
};
|
||||
};
|
||||
const buildFootnoteDefinition$1 = ({ type, children, identifier, label }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
identifier,
|
||||
label,
|
||||
};
|
||||
};
|
||||
const buildText = (text, deco) => {
|
||||
return Object.assign(Object.assign({}, deco), { text });
|
||||
};
|
||||
const buildBreak$1 = ({ type }) => {
|
||||
return {
|
||||
type,
|
||||
children: [{ text: "" }],
|
||||
};
|
||||
};
|
||||
const buildLink$1 = ({ type, children, url, title }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
url,
|
||||
title,
|
||||
};
|
||||
};
|
||||
const buildImage$1 = ({ type, url, title, alt }) => {
|
||||
return {
|
||||
type,
|
||||
url,
|
||||
title,
|
||||
alt,
|
||||
children: [{ text: "" }],
|
||||
};
|
||||
};
|
||||
const buildLinkReference$1 = ({ type, children, referenceType, identifier, label }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
referenceType,
|
||||
identifier,
|
||||
label,
|
||||
};
|
||||
};
|
||||
const buildImageReference$1 = ({ type, alt, referenceType, identifier, label, }) => {
|
||||
return {
|
||||
type,
|
||||
alt,
|
||||
referenceType,
|
||||
identifier,
|
||||
label,
|
||||
children: [{ text: "" }],
|
||||
};
|
||||
};
|
||||
const buildFootnote$1 = ({ type, children }, deco, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$3(children, deco, overrides),
|
||||
};
|
||||
};
|
||||
const buildFootnoteReference = ({ type, identifier, label, }) => {
|
||||
return {
|
||||
type,
|
||||
identifier,
|
||||
label,
|
||||
children: [{ text: "" }],
|
||||
};
|
||||
};
|
||||
|
||||
const plugin$3 = function ({ overrides = {}, } = {}) {
|
||||
this.Compiler = function (node) {
|
||||
return mdastToSlate(node, overrides);
|
||||
};
|
||||
};
|
||||
|
||||
const slateToMdast = (node, overrides) => {
|
||||
return buildMdastRoot(node, overrides);
|
||||
};
|
||||
const buildMdastRoot = (node, overrides) => {
|
||||
return {
|
||||
type: "root",
|
||||
children: convertNodes$2(node.children, overrides),
|
||||
};
|
||||
};
|
||||
const convertNodes$2 = (nodes, overrides) => {
|
||||
const mdastNodes = [];
|
||||
let textQueue = [];
|
||||
for (let i = 0; i <= nodes.length; i++) {
|
||||
const n = nodes[i];
|
||||
if (n && isText(n)) {
|
||||
textQueue.push(n);
|
||||
}
|
||||
else {
|
||||
mdastNodes.push(...convertTexts(textQueue));
|
||||
textQueue = [];
|
||||
if (!n)
|
||||
continue;
|
||||
const node = buildMdastNode(n, overrides);
|
||||
if (node) {
|
||||
mdastNodes.push(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
return mdastNodes;
|
||||
};
|
||||
const convertTexts = (slateTexts) => {
|
||||
const mdastTexts = [];
|
||||
const starts = [];
|
||||
let ends = [];
|
||||
let textTemp = "";
|
||||
for (let j = 0; j < slateTexts.length; j++) {
|
||||
const cur = slateTexts[j];
|
||||
textTemp += cur.text;
|
||||
const prevStarts = starts.slice();
|
||||
const prevEnds = ends.slice();
|
||||
const prev = slateTexts[j - 1];
|
||||
const next = slateTexts[j + 1];
|
||||
ends = [];
|
||||
[
|
||||
"emphasis",
|
||||
"strong",
|
||||
"delete",
|
||||
// inlineCode should be last because of the spec in mdast
|
||||
// https://github.com/inokawa/remark-slate-transformer/issues/145
|
||||
"inlineCode",
|
||||
].forEach((k) => {
|
||||
if (cur[k]) {
|
||||
if (!prev || !prev[k]) {
|
||||
starts.push(k);
|
||||
}
|
||||
if (!next || !next[k]) {
|
||||
ends.push(k);
|
||||
}
|
||||
}
|
||||
});
|
||||
const endsToRemove = starts.reduce((acc, k, kIndex) => {
|
||||
if (ends.includes(k)) {
|
||||
acc.push({ key: k, index: kIndex });
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
if (starts.length > 0) {
|
||||
let bef = "";
|
||||
let aft = "";
|
||||
if (endsToRemove.length === 1 &&
|
||||
(prevStarts.toString() !== starts.toString() ||
|
||||
// https://github.com/inokawa/remark-slate-transformer/issues/90
|
||||
(prevEnds.includes("emphasis") && ends.includes("strong"))) &&
|
||||
starts.length - endsToRemove.length === 0) {
|
||||
while (textTemp.startsWith(" ")) {
|
||||
bef += " ";
|
||||
textTemp = textTemp.slice(1);
|
||||
}
|
||||
while (textTemp.endsWith(" ")) {
|
||||
aft += " ";
|
||||
textTemp = textTemp.slice(0, -1);
|
||||
}
|
||||
}
|
||||
let res = {
|
||||
type: "text",
|
||||
value: textTemp,
|
||||
};
|
||||
textTemp = "";
|
||||
const startsReversed = starts.slice().reverse();
|
||||
startsReversed.forEach((k) => {
|
||||
switch (k) {
|
||||
case "inlineCode":
|
||||
res = {
|
||||
type: k,
|
||||
value: res.value,
|
||||
};
|
||||
break;
|
||||
case "strong":
|
||||
case "emphasis":
|
||||
case "delete":
|
||||
res = {
|
||||
type: k,
|
||||
children: [res],
|
||||
};
|
||||
break;
|
||||
default:
|
||||
unreachable();
|
||||
break;
|
||||
}
|
||||
});
|
||||
const arr = [];
|
||||
if (bef.length > 0) {
|
||||
arr.push({ type: "text", value: bef });
|
||||
}
|
||||
arr.push(res);
|
||||
if (aft.length > 0) {
|
||||
arr.push({ type: "text", value: aft });
|
||||
}
|
||||
mdastTexts.push(...arr);
|
||||
}
|
||||
if (endsToRemove.length > 0) {
|
||||
endsToRemove.reverse().forEach((e) => {
|
||||
starts.splice(e.index, 1);
|
||||
});
|
||||
}
|
||||
else {
|
||||
mdastTexts.push({ type: "text", value: textTemp });
|
||||
textTemp = "";
|
||||
}
|
||||
}
|
||||
if (textTemp) {
|
||||
mdastTexts.push({ type: "text", value: textTemp });
|
||||
textTemp = "";
|
||||
}
|
||||
return mergeTexts(mdastTexts);
|
||||
};
|
||||
const buildMdastNode = (node, overrides) => {
|
||||
var _a;
|
||||
const customNode = (_a = overrides[node.type]) === null || _a === void 0 ? void 0 : _a.call(overrides, node, (children) => convertNodes$2(children, overrides));
|
||||
if (customNode != null) {
|
||||
return customNode;
|
||||
}
|
||||
switch (node.type) {
|
||||
case "paragraph":
|
||||
return buildParagraph(node, overrides);
|
||||
case "heading":
|
||||
return buildHeading(node, overrides);
|
||||
case "thematicBreak":
|
||||
return buildThematicBreak(node);
|
||||
case "blockquote":
|
||||
return buildBlockquote(node, overrides);
|
||||
case "list":
|
||||
return buildList(node, overrides);
|
||||
case "listItem":
|
||||
return buildListItem(node, overrides);
|
||||
case "table":
|
||||
return buildTable(node, overrides);
|
||||
case "tableRow":
|
||||
return buildTableRow(node, overrides);
|
||||
case "tableCell":
|
||||
return buildTableCell(node, overrides);
|
||||
case "html":
|
||||
return buildHtml(node);
|
||||
case "code":
|
||||
return buildCode(node);
|
||||
case "yaml":
|
||||
return buildYaml(node);
|
||||
case "toml":
|
||||
return buildToml(node);
|
||||
case "definition":
|
||||
return buildDefinition(node);
|
||||
case "footnoteDefinition":
|
||||
return buildFootnoteDefinition(node, overrides);
|
||||
case "break":
|
||||
return buildBreak(node);
|
||||
case "link":
|
||||
return buildLink(node, overrides);
|
||||
case "image":
|
||||
return buildImage(node);
|
||||
case "linkReference":
|
||||
return buildLinkReference(node, overrides);
|
||||
case "imageReference":
|
||||
return buildImageReference(node);
|
||||
case "footnote":
|
||||
return buildFootnote(node, overrides);
|
||||
case "footnoteReference":
|
||||
return creatFootnoteReference(node);
|
||||
case "math":
|
||||
return buildMath(node);
|
||||
case "inlineMath":
|
||||
return buildInlineMath(node);
|
||||
default:
|
||||
unreachable();
|
||||
break;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
const isText = (node) => {
|
||||
return "text" in node;
|
||||
};
|
||||
const mergeTexts = (nodes) => {
|
||||
const res = [];
|
||||
for (const cur of nodes) {
|
||||
const last = res[res.length - 1];
|
||||
if (last && last.type === cur.type) {
|
||||
if (last.type === "text") {
|
||||
last.value += cur.value;
|
||||
}
|
||||
else if (last.type === "inlineCode") {
|
||||
last.value += cur.value;
|
||||
}
|
||||
else {
|
||||
last.children = mergeTexts(last.children.concat(cur.children));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (cur.type === "text" && cur.value === "")
|
||||
continue;
|
||||
res.push(cur);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
};
|
||||
const buildParagraph = ({ type, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildHeading = ({ type, depth, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
depth,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildThematicBreak = ({ type, }) => {
|
||||
return {
|
||||
type,
|
||||
};
|
||||
};
|
||||
const buildBlockquote = ({ type, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildList = ({ type, ordered, start, spread, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
ordered,
|
||||
start,
|
||||
spread,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildListItem = ({ type, checked, spread, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
checked,
|
||||
spread,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildTable = ({ type, align, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
align,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildTableRow = ({ type, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildTableCell = ({ type, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildHtml = ({ type, children }) => {
|
||||
return {
|
||||
type,
|
||||
value: children[0].text,
|
||||
};
|
||||
};
|
||||
const buildCode = ({ type, lang, meta, children, }) => {
|
||||
return {
|
||||
type,
|
||||
lang,
|
||||
meta,
|
||||
value: children[0].text,
|
||||
};
|
||||
};
|
||||
const buildYaml = ({ type, children }) => {
|
||||
return {
|
||||
type,
|
||||
value: children[0].text,
|
||||
};
|
||||
};
|
||||
const buildToml = ({ type, children }) => {
|
||||
return {
|
||||
type,
|
||||
value: children[0].text,
|
||||
};
|
||||
};
|
||||
const buildDefinition = ({ type, identifier, label, url, title, }) => {
|
||||
return {
|
||||
type,
|
||||
identifier,
|
||||
label,
|
||||
url,
|
||||
title,
|
||||
};
|
||||
};
|
||||
const buildFootnoteDefinition = ({ type, identifier, label, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
identifier,
|
||||
label,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildBreak = ({ type }) => {
|
||||
return {
|
||||
type,
|
||||
};
|
||||
};
|
||||
const buildLink = ({ type, url, title, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
url,
|
||||
title,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildImage = ({ type, url, title, alt, }) => {
|
||||
return {
|
||||
type,
|
||||
url,
|
||||
title,
|
||||
alt,
|
||||
};
|
||||
};
|
||||
const buildLinkReference = ({ type, identifier, label, referenceType, children, }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
identifier,
|
||||
label,
|
||||
referenceType,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const buildImageReference = ({ type, identifier, label, alt, referenceType, }) => {
|
||||
return {
|
||||
type,
|
||||
identifier,
|
||||
label,
|
||||
alt,
|
||||
referenceType,
|
||||
};
|
||||
};
|
||||
const buildFootnote = ({ type, children }, overrides) => {
|
||||
return {
|
||||
type,
|
||||
children: convertNodes$2(children, overrides),
|
||||
};
|
||||
};
|
||||
const creatFootnoteReference = ({ type, identifier, label, }) => {
|
||||
return {
|
||||
type,
|
||||
identifier,
|
||||
label,
|
||||
};
|
||||
};
|
||||
const buildMath = ({ type, children }) => {
|
||||
return {
|
||||
type,
|
||||
value: children[0].text,
|
||||
};
|
||||
};
|
||||
const buildInlineMath = ({ type, children, }) => {
|
||||
return {
|
||||
type,
|
||||
value: children[0].text,
|
||||
};
|
||||
};
|
||||
|
||||
const plugin$2 = ({ overrides = {}, } = {}) => {
|
||||
return function (node) {
|
||||
return slateToMdast(node, overrides);
|
||||
};
|
||||
};
|
||||
|
||||
const slate047ToSlate = (nodes) => {
|
||||
return convertNodes$1(nodes);
|
||||
};
|
||||
const convertNodes$1 = (nodes) => {
|
||||
return nodes.reduce((acc, n) => {
|
||||
const node = convert$1(n);
|
||||
if (node) {
|
||||
acc.push(node);
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
};
|
||||
const convert$1 = (node) => {
|
||||
switch (node.object) {
|
||||
case "block": {
|
||||
const { type, nodes, data } = node;
|
||||
return Object.assign({ type, children: convertNodes$1(nodes) }, data);
|
||||
}
|
||||
case "inline": {
|
||||
const { type, nodes, data } = node;
|
||||
return Object.assign({ type, children: convertNodes$1(nodes) }, data);
|
||||
}
|
||||
case "text": {
|
||||
const { text = "", marks } = node;
|
||||
return Object.assign({ text }, marks === null || marks === void 0 ? void 0 : marks.reduce((acc, m) => {
|
||||
acc[m.type] = true;
|
||||
return acc;
|
||||
}, {}));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const plugin$1 = function () {
|
||||
return function (node) {
|
||||
return slateToMdast({
|
||||
type: "root",
|
||||
children: slate047ToSlate(node.children),
|
||||
}, {});
|
||||
};
|
||||
};
|
||||
|
||||
const slateToSlate047 = (nodes) => {
|
||||
return {
|
||||
object: "value",
|
||||
document: {
|
||||
object: "document",
|
||||
nodes: convertNodes(nodes),
|
||||
},
|
||||
};
|
||||
};
|
||||
const convertNodes = (nodes) => {
|
||||
return nodes.reduce((acc, n) => {
|
||||
const node = convert(n);
|
||||
if (node) {
|
||||
acc.push(node);
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
};
|
||||
const convert = (node) => {
|
||||
if ("text" in node) {
|
||||
const { text } = node, rest = tslib.__rest(node, ["text"]);
|
||||
const marks = Object.keys(rest).reduce((acc, type) => {
|
||||
if (!rest[type])
|
||||
return acc;
|
||||
acc.push({
|
||||
object: "mark",
|
||||
type,
|
||||
});
|
||||
return acc;
|
||||
}, []);
|
||||
const res = {
|
||||
object: "text",
|
||||
text,
|
||||
marks,
|
||||
};
|
||||
return res;
|
||||
}
|
||||
switch (node.type) {
|
||||
case "paragraph":
|
||||
case "heading":
|
||||
case "blockquote":
|
||||
case "list":
|
||||
case "listItem":
|
||||
case "table":
|
||||
case "tableRow":
|
||||
case "tableCell":
|
||||
case "html":
|
||||
case "code":
|
||||
case "yaml":
|
||||
case "toml":
|
||||
case "thematicBreak":
|
||||
case "definition":
|
||||
case "break":
|
||||
case "math": {
|
||||
const { type, children } = node, rest = tslib.__rest(node, ["type", "children"]);
|
||||
const res = {
|
||||
object: "block",
|
||||
type,
|
||||
nodes: convertNodes(children),
|
||||
data: Object.assign({}, rest),
|
||||
};
|
||||
return res;
|
||||
}
|
||||
case "footnoteDefinition":
|
||||
case "link":
|
||||
case "linkReference":
|
||||
case "image":
|
||||
case "imageReference":
|
||||
case "footnote":
|
||||
case "footnoteReference":
|
||||
case "inlineMath": {
|
||||
const { type, children } = node, rest = tslib.__rest(node, ["type", "children"]);
|
||||
const res = {
|
||||
object: "inline",
|
||||
type,
|
||||
nodes: convertNodes(children),
|
||||
data: Object.assign({}, rest),
|
||||
};
|
||||
return res;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const plugin = function () {
|
||||
this.Compiler = function (node) {
|
||||
return slateToSlate047(mdastToSlate(node, {}));
|
||||
};
|
||||
};
|
||||
|
||||
exports.mdastToSlate = mdastToSlate;
|
||||
exports.remarkToSlate = plugin$3;
|
||||
exports.remarkToSlateLegacy = plugin;
|
||||
exports.slateToMdast = slateToMdast;
|
||||
exports.slateToRemark = plugin$2;
|
||||
exports.slateToRemarkLegacy = plugin$1;
|
||||
//# sourceMappingURL=index.js.map
|
||||
Reference in New Issue
Block a user