laif-ds
Version:
Design System di Laif con componenti React basati su principi di Atomic Design
137 lines (136 loc) • 3.69 kB
JavaScript
"use client";
import { ok as k } from "../../devlop/lib/default.js";
import { markdownTable as R } from "../../markdown-table/index.js";
import { handle as D } from "../../mdast-util-to-markdown/lib/handle/index.js";
function M() {
return {
enter: {
table: v,
tableData: g,
tableHeader: g,
tableRow: _
},
exit: {
codeText: A,
table: y,
tableData: u,
tableHeader: u,
tableRow: u
}
};
}
function v(e) {
const l = e._align;
this.enter(
{
type: "table",
align: l.map(function(o) {
return o === "none" ? null : o;
}),
children: []
},
e
), this.data.inTable = !0;
}
function y(e) {
this.exit(e), this.data.inTable = void 0;
}
function _(e) {
this.enter({ type: "tableRow", children: [] }, e);
}
function u(e) {
this.exit(e);
}
function g(e) {
this.enter({ type: "tableCell", children: [] }, e);
}
function A(e) {
let l = this.resume();
this.data.inTable && (l = l.replace(/\\([\\|])/g, B));
const o = this.stack[this.stack.length - 1];
k(o.type === "inlineCode"), o.value = l, this.exit(e);
}
function B(e, l) {
return l === "|" ? l : e;
}
function z(e) {
const l = e || {}, o = l.tableCellPadding, C = l.tablePipeAlign, x = l.stringLength, h = o ? " " : "|";
return {
unsafe: [
{ character: "\r", inConstruct: "tableCell" },
{ character: `
`, inConstruct: "tableCell" },
// A pipe, when followed by a tab or space (padding), or a dash or colon
// (unpadded delimiter row), could result in a table.
{ atBreak: !0, character: "|", after: "[ :-]" },
// A pipe in a cell must be encoded.
{ character: "|", inConstruct: "tableCell" },
// A colon must be followed by a dash, in which case it could start a
// delimiter row.
{ atBreak: !0, character: ":", after: "-" },
// A delimiter row can also start with a dash, when followed by more
// dashes, a colon, or a pipe.
// This is a stricter version than the built in check for lists, thematic
// breaks, and setex heading underlines though:
// <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>
{ atBreak: !0, character: "-", after: "[:|-]" }
],
handlers: {
inlineCode: m,
table: T,
tableCell: b,
tableRow: p
}
};
function T(t, r, a, n) {
return d(w(t, a, n), t.align);
}
function p(t, r, a, n) {
const i = f(t, a, n), c = d([i]);
return c.slice(0, c.indexOf(`
`));
}
function b(t, r, a, n) {
const i = a.enter("tableCell"), c = a.enter("phrasing"), s = a.containerPhrasing(t, {
...n,
before: h,
after: h
});
return c(), i(), s;
}
function d(t, r) {
return R(t, {
align: r,
// @ts-expect-error: `markdown-table` types should support `null`.
alignDelimiters: C,
// @ts-expect-error: `markdown-table` types should support `null`.
padding: o,
// @ts-expect-error: `markdown-table` types should support `null`.
stringLength: x
});
}
function w(t, r, a) {
const n = t.children;
let i = -1;
const c = [], s = r.enter("table");
for (; ++i < n.length; )
c[i] = f(n[i], r, a);
return s(), c;
}
function f(t, r, a) {
const n = t.children;
let i = -1;
const c = [], s = r.enter("tableRow");
for (; ++i < n.length; )
c[i] = b(n[i], t, r, a);
return s(), c;
}
function m(t, r, a) {
let n = D.inlineCode(t, r, a);
return a.stack.includes("tableCell") && (n = n.replace(/\|/g, "\\$&")), n;
}
}
export {
M as gfmTableFromMarkdown,
z as gfmTableToMarkdown
};