markdown-flow-ui
Version:
A React UI library for rendering markdown with interactive flow components, typewriter effects, and plugin support
144 lines (143 loc) • 5.42 kB
JavaScript
import { p as B } from "./chunk-ANTBXLJU-Cyirg13h.mjs";
import { _ as b, D as m, H as C, e as S, l as w, b as D, a as T, p as E, q as F, g as P, s as z, E as A, F as W, y as _ } from "./index-pooOtYuy.mjs";
import { p as N } from "./mermaid-parser.core-Dv8CVbK7.mjs";
var L = W.packet, u, v = (u = class {
constructor() {
this.packet = [], this.setAccTitle = D, this.getAccTitle = T, this.setDiagramTitle = E, this.getDiagramTitle = F, this.getAccDescription = P, this.setAccDescription = z;
}
getConfig() {
const t = m({
...L,
...A().packet
});
return t.showBits && (t.paddingY += 10), t;
}
getPacket() {
return this.packet;
}
pushWord(t) {
t.length > 0 && this.packet.push(t);
}
clear() {
_(), this.packet = [];
}
}, b(u, "PacketDB"), u), M = 1e4, Y = /* @__PURE__ */ b((e, t) => {
B(e, t);
let r = -1, s = [], n = 1;
const { bitsPerRow: l } = t.getConfig();
for (let { start: a, end: i, bits: d, label: c } of e.blocks) {
if (a !== void 0 && i !== void 0 && i < a)
throw new Error(`Packet block ${a} - ${i} is invalid. End must be greater than start.`);
if (a ??= r + 1, a !== r + 1)
throw new Error(
`Packet block ${a} - ${i ?? a} is not contiguous. It should start from ${r + 1}.`
);
if (d === 0)
throw new Error(`Packet block ${a} is invalid. Cannot have a zero bit field.`);
for (i ??= a + (d ?? 1) - 1, d ??= i - a + 1, r = i, w.debug(`Packet block ${a} - ${r} with label ${c}`); s.length <= l + 1 && t.getPacket().length < M; ) {
const [p, o] = H({ start: a, end: i, bits: d, label: c }, n, l);
if (s.push(p), p.end + 1 === n * l && (t.pushWord(s), s = [], n++), !o)
break;
({ start: a, end: i, bits: d, label: c } = o);
}
}
t.pushWord(s);
}, "populate"), H = /* @__PURE__ */ b((e, t, r) => {
if (e.start === void 0)
throw new Error("start should have been set during first phase");
if (e.end === void 0)
throw new Error("end should have been set during first phase");
if (e.start > e.end)
throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);
if (e.end + 1 <= t * r)
return [e, void 0];
const s = t * r - 1, n = t * r;
return [
{
start: e.start,
end: s,
label: e.label,
bits: s - e.start
},
{
start: n,
end: e.end,
label: e.label,
bits: e.end - n
}
];
}, "getNextFittingBlock"), x = {
// @ts-expect-error - PacketDB is not assignable to DiagramDB
parser: { yy: void 0 },
parse: /* @__PURE__ */ b(async (e) => {
const t = await N("packet", e), r = x.parser?.yy;
if (!(r instanceof v))
throw new Error(
"parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues."
);
w.debug(t), Y(t, r);
}, "parse")
}, I = /* @__PURE__ */ b((e, t, r, s) => {
const n = s.db, l = n.getConfig(), { rowHeight: a, paddingY: i, bitWidth: d, bitsPerRow: c } = l, p = n.getPacket(), o = n.getDiagramTitle(), h = a + i, g = h * (p.length + 1) - (o ? 0 : a), k = d * c + 2, f = C(t);
f.attr("viewbox", `0 0 ${k} ${g}`), S(f, g, k, l.useMaxWidth);
for (const [y, $] of p.entries())
O(f, $, y, l);
f.append("text").text(o).attr("x", k / 2).attr("y", g - h / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("class", "packetTitle");
}, "draw"), O = /* @__PURE__ */ b((e, t, r, { rowHeight: s, paddingX: n, paddingY: l, bitWidth: a, bitsPerRow: i, showBits: d }) => {
const c = e.append("g"), p = r * (s + l) + l;
for (const o of t) {
const h = o.start % i * a + 1, g = (o.end - o.start + 1) * a - n;
if (c.append("rect").attr("x", h).attr("y", p).attr("width", g).attr("height", s).attr("class", "packetBlock"), c.append("text").attr("x", h + g / 2).attr("y", p + s / 2).attr("class", "packetLabel").attr("dominant-baseline", "middle").attr("text-anchor", "middle").text(o.label), !d)
continue;
const k = o.end === o.start, f = p - 2;
c.append("text").attr("x", h + (k ? g / 2 : 0)).attr("y", f).attr("class", "packetByte start").attr("dominant-baseline", "auto").attr("text-anchor", k ? "middle" : "start").text(o.start), k || c.append("text").attr("x", h + g).attr("y", f).attr("class", "packetByte end").attr("dominant-baseline", "auto").attr("text-anchor", "end").text(o.end);
}
}, "drawWord"), j = { draw: I }, q = {
byteFontSize: "10px",
startByteColor: "black",
endByteColor: "black",
labelColor: "black",
labelFontSize: "12px",
titleColor: "black",
titleFontSize: "14px",
blockStrokeColor: "black",
blockStrokeWidth: "1",
blockFillColor: "#efefef"
}, G = /* @__PURE__ */ b(({ packet: e } = {}) => {
const t = m(q, e);
return `
.packetByte {
font-size: ${t.byteFontSize};
}
.packetByte.start {
fill: ${t.startByteColor};
}
.packetByte.end {
fill: ${t.endByteColor};
}
.packetLabel {
fill: ${t.labelColor};
font-size: ${t.labelFontSize};
}
.packetTitle {
fill: ${t.titleColor};
font-size: ${t.titleFontSize};
}
.packetBlock {
stroke: ${t.blockStrokeColor};
stroke-width: ${t.blockStrokeWidth};
fill: ${t.blockFillColor};
}
`;
}, "styles"), X = {
parser: x,
get db() {
return new v();
},
renderer: j,
styles: G
};
export {
X as diagram
};
//# sourceMappingURL=diagram-GUPCWM2R-DaxddOxt.mjs.map