@infinilabs/ai-chat 0.0.0 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +310 -56
- package/dist/_baseUniq-BFn6cCm9.js +152 -0
- package/dist/_baseUniq-nfJyj2zU.cjs +151 -0
- package/dist/arc-BWSMkwk2.cjs +130 -0
- package/dist/arc-DODeX7B9.js +131 -0
- package/dist/architecture-U656AL7Q-B4C0nw6C.js +5 -0
- package/dist/architecture-U656AL7Q-CVURQXwt.cjs +5 -0
- package/dist/architectureDiagram-VXUJARFQ-2UbdzpNz.cjs +8681 -0
- package/dist/architectureDiagram-VXUJARFQ-NCVmzKuE.js +8681 -0
- package/dist/blockDiagram-VD42YOAC-B3yCPK1N.cjs +3606 -0
- package/dist/blockDiagram-VD42YOAC-C4FsmQfk.js +3606 -0
- package/dist/c4Diagram-YG6GDRKO-ATyoKzFV.js +2481 -0
- package/dist/c4Diagram-YG6GDRKO-COwVcHWj.cjs +2481 -0
- package/dist/channel-2Y73gsu9.cjs +6 -0
- package/dist/channel-oB8MffQV.js +7 -0
- package/dist/chunk-4BX2VUAB-C3diNHZw.cjs +15 -0
- package/dist/chunk-4BX2VUAB-sd2zFBFz.js +16 -0
- package/dist/chunk-55IACEB6-6ohTnYE3.js +13 -0
- package/dist/chunk-55IACEB6-T-CzlJke.cjs +12 -0
- package/dist/chunk-B4BG7PRW-B1zqG62l.cjs +1825 -0
- package/dist/chunk-B4BG7PRW-E1dti26Y.js +1826 -0
- package/dist/chunk-DI55MBZ5-Dk0kfYBV.cjs +1914 -0
- package/dist/chunk-DI55MBZ5-DpHw-vMw.js +1915 -0
- package/dist/chunk-FMBD7UC4-B1vXpasq.js +19 -0
- package/dist/chunk-FMBD7UC4-CShN9-qf.cjs +18 -0
- package/dist/chunk-QN33PNHL-Cw7FG91D.js +24 -0
- package/dist/chunk-QN33PNHL-DJi1fhak.cjs +23 -0
- package/dist/chunk-QZHKN3VN-BweiBR9P.js +17 -0
- package/dist/chunk-QZHKN3VN-DfUW_gDw.cjs +16 -0
- package/dist/chunk-TZMSLE5B-DY2Kbag4.cjs +107 -0
- package/dist/chunk-TZMSLE5B-ZQ2Esoix.js +108 -0
- package/dist/classDiagram-2ON5EDUG-D2tIbkjc.js +19 -0
- package/dist/classDiagram-2ON5EDUG-DRhRmkUb.cjs +19 -0
- package/dist/classDiagram-v2-WZHVMYZB-D2tIbkjc.js +19 -0
- package/dist/classDiagram-v2-WZHVMYZB-DRhRmkUb.cjs +19 -0
- package/dist/clone-BMkj3yun.cjs +7 -0
- package/dist/clone-ChHXIoR6.js +8 -0
- package/dist/cose-bilkent-S5V4N54A-BXnWH5Od.cjs +4942 -0
- package/dist/cose-bilkent-S5V4N54A-D15BmpCb.js +4942 -0
- package/dist/cytoscape.esm-BfvZ3QT_.js +30239 -0
- package/dist/cytoscape.esm-D8IBYQeQ.cjs +30238 -0
- package/dist/dagre-6UL2VRFP-DGQ6TW_g.cjs +693 -0
- package/dist/dagre-6UL2VRFP-WmhUYWg8.js +693 -0
- package/dist/defaultLocale-DVr69WTU.js +206 -0
- package/dist/defaultLocale-DwYGIg9G.cjs +203 -0
- package/dist/diagram-PSM6KHXK-DSfHBoUT.js +845 -0
- package/dist/diagram-PSM6KHXK-J4qyGeN7.cjs +845 -0
- package/dist/diagram-QEK2KX5R-D96wT5cH.cjs +300 -0
- package/dist/diagram-QEK2KX5R-I_nyexpY.js +300 -0
- package/dist/diagram-S2PKOQOG-BC_WyKEe.cjs +210 -0
- package/dist/diagram-S2PKOQOG-aooXSMNo.js +210 -0
- package/dist/erDiagram-Q2GNP2WA-DQ8Lquay.cjs +1158 -0
- package/dist/erDiagram-Q2GNP2WA-DWF8e6EL.js +1158 -0
- package/dist/flowDiagram-NV44I4VS-CM9c4F1o.js +2331 -0
- package/dist/flowDiagram-NV44I4VS-DpYNkyM2.cjs +2331 -0
- package/dist/ganttDiagram-JELNMOA3-CAsoD6rZ.js +3679 -0
- package/dist/ganttDiagram-JELNMOA3-DfKahpj4.cjs +3679 -0
- package/dist/gitGraph-F6HP7TQM-BX2fz4_i.js +5 -0
- package/dist/gitGraph-F6HP7TQM-DRkGg4T1.cjs +5 -0
- package/dist/gitGraphDiagram-NY62KEGX-PXpI94u6.js +1203 -0
- package/dist/gitGraphDiagram-NY62KEGX-YhnKpooH.cjs +1203 -0
- package/dist/graph-BvxpI7Xc.js +596 -0
- package/dist/graph-CI_TWBSn.cjs +595 -0
- package/dist/index-BctLGjTK.cjs +120500 -0
- package/dist/index-CjSgoo1P.js +120485 -0
- package/dist/index.cjs +19 -0
- package/dist/index.js +12 -19961
- package/dist/info-NVLQJR56-BGbTE7dw.cjs +5 -0
- package/dist/info-NVLQJR56-DRxIh-N8.js +5 -0
- package/dist/infoDiagram-WHAUD3N6-BB2Bnbnh.cjs +31 -0
- package/dist/infoDiagram-WHAUD3N6-D_RrgwxS.js +31 -0
- package/dist/init-DevvdK2U.cjs +15 -0
- package/dist/init-ZxktEp_H.js +16 -0
- package/dist/journeyDiagram-XKPGCS4Q-BJjXlMIj.js +1254 -0
- package/dist/journeyDiagram-XKPGCS4Q-BcBLsfI9.cjs +1254 -0
- package/dist/kanban-definition-3W4ZIXB7-0wwNBZ93.js +1047 -0
- package/dist/kanban-definition-3W4ZIXB7-CaY0q4j9.cjs +1047 -0
- package/dist/katex-BhpYeT3b.cjs +14523 -0
- package/dist/katex-ei8sH3Uy.js +14524 -0
- package/dist/layout-CcghncRv.js +2183 -0
- package/dist/layout-CvwzED_C.cjs +2182 -0
- package/dist/linear-CYow-mAK.cjs +339 -0
- package/dist/linear-D_gKQzVp.js +340 -0
- package/dist/mermaid-parser.core-CzmkR-3i.cjs +18703 -0
- package/dist/mermaid-parser.core-DCMDT-Cp.js +18704 -0
- package/dist/min-BBp7Smma.js +41 -0
- package/dist/min-Gu1I_bJ9.cjs +40 -0
- package/dist/mindmap-definition-VGOIOE7T-D16Pp1u5.cjs +1126 -0
- package/dist/mindmap-definition-VGOIOE7T-PjSLRtz4.js +1126 -0
- package/dist/ordinal-CxptdPJm.js +76 -0
- package/dist/ordinal-D7sQNqXZ.cjs +75 -0
- package/dist/packet-BFZMPI3H-BvdogPiS.js +5 -0
- package/dist/packet-BFZMPI3H-C7pOHUWY.cjs +5 -0
- package/dist/pie-7BOR55EZ-D-DxSHbP.cjs +5 -0
- package/dist/pie-7BOR55EZ-DEWJe4Xn.js +5 -0
- package/dist/pieDiagram-ADFJNKIX-CoDddKZl.js +237 -0
- package/dist/pieDiagram-ADFJNKIX-DjN4DU9l.cjs +237 -0
- package/dist/quadrantDiagram-AYHSOK5B-BZOg0JMm.js +1335 -0
- package/dist/quadrantDiagram-AYHSOK5B-DXjTSOL4.cjs +1335 -0
- package/dist/radar-NHE76QYJ-BrnDXy9q.cjs +5 -0
- package/dist/radar-NHE76QYJ-C2WmPmJ4.js +5 -0
- package/dist/requirementDiagram-UZGBJVZJ-CCW1O1xH.js +1161 -0
- package/dist/requirementDiagram-UZGBJVZJ-e5F3-dDI.cjs +1161 -0
- package/dist/sankeyDiagram-TZEHDZUN-BaGzCxTp.js +1193 -0
- package/dist/sankeyDiagram-TZEHDZUN-DtIvOvVI.cjs +1193 -0
- package/dist/sequenceDiagram-WL72ISMW-0vFhYnxn.cjs +3874 -0
- package/dist/sequenceDiagram-WL72ISMW-DL3B7U56.js +3874 -0
- package/dist/stateDiagram-FKZM4ZOC-CXW608BR.cjs +447 -0
- package/dist/stateDiagram-FKZM4ZOC-Ddw6HxPD.js +447 -0
- package/dist/stateDiagram-v2-4FDKWEC3-DZCkQKmp.js +19 -0
- package/dist/stateDiagram-v2-4FDKWEC3-DefWUbvq.cjs +19 -0
- package/dist/timeline-definition-IT6M3QCI-C3TfA9lE.cjs +1222 -0
- package/dist/timeline-definition-IT6M3QCI-DiS88lUo.js +1222 -0
- package/dist/treemap-KMMF4GRG-Bl-H6j2c.cjs +5 -0
- package/dist/treemap-KMMF4GRG-DGGr_R9A.js +5 -0
- package/dist/xychartDiagram-PRI3JC2R-BrOwRjfF.js +1886 -0
- package/dist/xychartDiagram-PRI3JC2R-CM06DttH.cjs +1886 -0
- package/package.json +22 -11
- package/dist/index.css +0 -1582
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
4
|
+
const index = require("./index-BctLGjTK.cjs");
|
|
5
|
+
const chunk4BX2VUAB = require("./chunk-4BX2VUAB-C3diNHZw.cjs");
|
|
6
|
+
const mermaidParser_core = require("./mermaid-parser.core-CzmkR-3i.cjs");
|
|
7
|
+
var DEFAULT_PACKET_CONFIG = index.defaultConfig_default.packet;
|
|
8
|
+
var PacketDB = (_a = class {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.packet = [];
|
|
11
|
+
this.setAccTitle = index.setAccTitle;
|
|
12
|
+
this.getAccTitle = index.getAccTitle;
|
|
13
|
+
this.setDiagramTitle = index.setDiagramTitle;
|
|
14
|
+
this.getDiagramTitle = index.getDiagramTitle;
|
|
15
|
+
this.getAccDescription = index.getAccDescription;
|
|
16
|
+
this.setAccDescription = index.setAccDescription;
|
|
17
|
+
}
|
|
18
|
+
getConfig() {
|
|
19
|
+
const config = index.cleanAndMerge({
|
|
20
|
+
...DEFAULT_PACKET_CONFIG,
|
|
21
|
+
...index.getConfig().packet
|
|
22
|
+
});
|
|
23
|
+
if (config.showBits) {
|
|
24
|
+
config.paddingY += 10;
|
|
25
|
+
}
|
|
26
|
+
return config;
|
|
27
|
+
}
|
|
28
|
+
getPacket() {
|
|
29
|
+
return this.packet;
|
|
30
|
+
}
|
|
31
|
+
pushWord(word) {
|
|
32
|
+
if (word.length > 0) {
|
|
33
|
+
this.packet.push(word);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
clear() {
|
|
37
|
+
index.clear();
|
|
38
|
+
this.packet = [];
|
|
39
|
+
}
|
|
40
|
+
}, index.__name(_a, "PacketDB"), _a);
|
|
41
|
+
var maxPacketSize = 1e4;
|
|
42
|
+
var populate = /* @__PURE__ */ index.__name((ast, db) => {
|
|
43
|
+
chunk4BX2VUAB.populateCommonDb(ast, db);
|
|
44
|
+
let lastBit = -1;
|
|
45
|
+
let word = [];
|
|
46
|
+
let row = 1;
|
|
47
|
+
const { bitsPerRow } = db.getConfig();
|
|
48
|
+
for (let { start, end, bits, label } of ast.blocks) {
|
|
49
|
+
if (start !== void 0 && end !== void 0 && end < start) {
|
|
50
|
+
throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`);
|
|
51
|
+
}
|
|
52
|
+
start ??= lastBit + 1;
|
|
53
|
+
if (start !== lastBit + 1) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
`Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${lastBit + 1}.`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
if (bits === 0) {
|
|
59
|
+
throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`);
|
|
60
|
+
}
|
|
61
|
+
end ??= start + (bits ?? 1) - 1;
|
|
62
|
+
bits ??= end - start + 1;
|
|
63
|
+
lastBit = end;
|
|
64
|
+
index.log.debug(`Packet block ${start} - ${lastBit} with label ${label}`);
|
|
65
|
+
while (word.length <= bitsPerRow + 1 && db.getPacket().length < maxPacketSize) {
|
|
66
|
+
const [block, nextBlock] = getNextFittingBlock({ start, end, bits, label }, row, bitsPerRow);
|
|
67
|
+
word.push(block);
|
|
68
|
+
if (block.end + 1 === row * bitsPerRow) {
|
|
69
|
+
db.pushWord(word);
|
|
70
|
+
word = [];
|
|
71
|
+
row++;
|
|
72
|
+
}
|
|
73
|
+
if (!nextBlock) {
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
({ start, end, bits, label } = nextBlock);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
db.pushWord(word);
|
|
80
|
+
}, "populate");
|
|
81
|
+
var getNextFittingBlock = /* @__PURE__ */ index.__name((block, row, bitsPerRow) => {
|
|
82
|
+
if (block.start === void 0) {
|
|
83
|
+
throw new Error("start should have been set during first phase");
|
|
84
|
+
}
|
|
85
|
+
if (block.end === void 0) {
|
|
86
|
+
throw new Error("end should have been set during first phase");
|
|
87
|
+
}
|
|
88
|
+
if (block.start > block.end) {
|
|
89
|
+
throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`);
|
|
90
|
+
}
|
|
91
|
+
if (block.end + 1 <= row * bitsPerRow) {
|
|
92
|
+
return [block, void 0];
|
|
93
|
+
}
|
|
94
|
+
const rowEnd = row * bitsPerRow - 1;
|
|
95
|
+
const rowStart = row * bitsPerRow;
|
|
96
|
+
return [
|
|
97
|
+
{
|
|
98
|
+
start: block.start,
|
|
99
|
+
end: rowEnd,
|
|
100
|
+
label: block.label,
|
|
101
|
+
bits: rowEnd - block.start
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
start: rowStart,
|
|
105
|
+
end: block.end,
|
|
106
|
+
label: block.label,
|
|
107
|
+
bits: block.end - rowStart
|
|
108
|
+
}
|
|
109
|
+
];
|
|
110
|
+
}, "getNextFittingBlock");
|
|
111
|
+
var parser = {
|
|
112
|
+
// @ts-expect-error - PacketDB is not assignable to DiagramDB
|
|
113
|
+
parser: { yy: void 0 },
|
|
114
|
+
parse: /* @__PURE__ */ index.__name(async (input) => {
|
|
115
|
+
const ast = await mermaidParser_core.parse("packet", input);
|
|
116
|
+
const db = parser.parser?.yy;
|
|
117
|
+
if (!(db instanceof PacketDB)) {
|
|
118
|
+
throw new Error(
|
|
119
|
+
"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."
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
index.log.debug(ast);
|
|
123
|
+
populate(ast, db);
|
|
124
|
+
}, "parse")
|
|
125
|
+
};
|
|
126
|
+
var draw = /* @__PURE__ */ index.__name((_text, id, _version, diagram2) => {
|
|
127
|
+
const db = diagram2.db;
|
|
128
|
+
const config = db.getConfig();
|
|
129
|
+
const { rowHeight, paddingY, bitWidth, bitsPerRow } = config;
|
|
130
|
+
const words = db.getPacket();
|
|
131
|
+
const title = db.getDiagramTitle();
|
|
132
|
+
const totalRowHeight = rowHeight + paddingY;
|
|
133
|
+
const svgHeight = totalRowHeight * (words.length + 1) - (title ? 0 : rowHeight);
|
|
134
|
+
const svgWidth = bitWidth * bitsPerRow + 2;
|
|
135
|
+
const svg = index.selectSvgElement(id);
|
|
136
|
+
svg.attr("viewbox", `0 0 ${svgWidth} ${svgHeight}`);
|
|
137
|
+
index.configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);
|
|
138
|
+
for (const [word, packet] of words.entries()) {
|
|
139
|
+
drawWord(svg, packet, word, config);
|
|
140
|
+
}
|
|
141
|
+
svg.append("text").text(title).attr("x", svgWidth / 2).attr("y", svgHeight - totalRowHeight / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("class", "packetTitle");
|
|
142
|
+
}, "draw");
|
|
143
|
+
var drawWord = /* @__PURE__ */ index.__name((svg, word, rowNumber, { rowHeight, paddingX, paddingY, bitWidth, bitsPerRow, showBits }) => {
|
|
144
|
+
const group = svg.append("g");
|
|
145
|
+
const wordY = rowNumber * (rowHeight + paddingY) + paddingY;
|
|
146
|
+
for (const block of word) {
|
|
147
|
+
const blockX = block.start % bitsPerRow * bitWidth + 1;
|
|
148
|
+
const width = (block.end - block.start + 1) * bitWidth - paddingX;
|
|
149
|
+
group.append("rect").attr("x", blockX).attr("y", wordY).attr("width", width).attr("height", rowHeight).attr("class", "packetBlock");
|
|
150
|
+
group.append("text").attr("x", blockX + width / 2).attr("y", wordY + rowHeight / 2).attr("class", "packetLabel").attr("dominant-baseline", "middle").attr("text-anchor", "middle").text(block.label);
|
|
151
|
+
if (!showBits) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
const isSingleBlock = block.end === block.start;
|
|
155
|
+
const bitNumberY = wordY - 2;
|
|
156
|
+
group.append("text").attr("x", blockX + (isSingleBlock ? width / 2 : 0)).attr("y", bitNumberY).attr("class", "packetByte start").attr("dominant-baseline", "auto").attr("text-anchor", isSingleBlock ? "middle" : "start").text(block.start);
|
|
157
|
+
if (!isSingleBlock) {
|
|
158
|
+
group.append("text").attr("x", blockX + width).attr("y", bitNumberY).attr("class", "packetByte end").attr("dominant-baseline", "auto").attr("text-anchor", "end").text(block.end);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}, "drawWord");
|
|
162
|
+
var renderer = { draw };
|
|
163
|
+
var defaultPacketStyleOptions = {
|
|
164
|
+
byteFontSize: "10px",
|
|
165
|
+
startByteColor: "black",
|
|
166
|
+
endByteColor: "black",
|
|
167
|
+
labelColor: "black",
|
|
168
|
+
labelFontSize: "12px",
|
|
169
|
+
titleColor: "black",
|
|
170
|
+
titleFontSize: "14px",
|
|
171
|
+
blockStrokeColor: "black",
|
|
172
|
+
blockStrokeWidth: "1",
|
|
173
|
+
blockFillColor: "#efefef"
|
|
174
|
+
};
|
|
175
|
+
var styles = /* @__PURE__ */ index.__name(({ packet } = {}) => {
|
|
176
|
+
const options = index.cleanAndMerge(defaultPacketStyleOptions, packet);
|
|
177
|
+
return `
|
|
178
|
+
.packetByte {
|
|
179
|
+
font-size: ${options.byteFontSize};
|
|
180
|
+
}
|
|
181
|
+
.packetByte.start {
|
|
182
|
+
fill: ${options.startByteColor};
|
|
183
|
+
}
|
|
184
|
+
.packetByte.end {
|
|
185
|
+
fill: ${options.endByteColor};
|
|
186
|
+
}
|
|
187
|
+
.packetLabel {
|
|
188
|
+
fill: ${options.labelColor};
|
|
189
|
+
font-size: ${options.labelFontSize};
|
|
190
|
+
}
|
|
191
|
+
.packetTitle {
|
|
192
|
+
fill: ${options.titleColor};
|
|
193
|
+
font-size: ${options.titleFontSize};
|
|
194
|
+
}
|
|
195
|
+
.packetBlock {
|
|
196
|
+
stroke: ${options.blockStrokeColor};
|
|
197
|
+
stroke-width: ${options.blockStrokeWidth};
|
|
198
|
+
fill: ${options.blockFillColor};
|
|
199
|
+
}
|
|
200
|
+
`;
|
|
201
|
+
}, "styles");
|
|
202
|
+
var diagram = {
|
|
203
|
+
parser,
|
|
204
|
+
get db() {
|
|
205
|
+
return new PacketDB();
|
|
206
|
+
},
|
|
207
|
+
renderer,
|
|
208
|
+
styles
|
|
209
|
+
};
|
|
210
|
+
exports.diagram = diagram;
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { _ as __name, D as cleanAndMerge, H as selectSvgElement, e as configureSvgSize, l as log, b as setAccTitle, a as getAccTitle, p as setDiagramTitle, q as getDiagramTitle, g as getAccDescription, s as setAccDescription, E as getConfig, F as defaultConfig_default, y as clear } from "./index-CjSgoo1P.js";
|
|
3
|
+
import { p as populateCommonDb } from "./chunk-4BX2VUAB-sd2zFBFz.js";
|
|
4
|
+
import { p as parse } from "./mermaid-parser.core-DCMDT-Cp.js";
|
|
5
|
+
var DEFAULT_PACKET_CONFIG = defaultConfig_default.packet;
|
|
6
|
+
var PacketDB = (_a = class {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.packet = [];
|
|
9
|
+
this.setAccTitle = setAccTitle;
|
|
10
|
+
this.getAccTitle = getAccTitle;
|
|
11
|
+
this.setDiagramTitle = setDiagramTitle;
|
|
12
|
+
this.getDiagramTitle = getDiagramTitle;
|
|
13
|
+
this.getAccDescription = getAccDescription;
|
|
14
|
+
this.setAccDescription = setAccDescription;
|
|
15
|
+
}
|
|
16
|
+
getConfig() {
|
|
17
|
+
const config = cleanAndMerge({
|
|
18
|
+
...DEFAULT_PACKET_CONFIG,
|
|
19
|
+
...getConfig().packet
|
|
20
|
+
});
|
|
21
|
+
if (config.showBits) {
|
|
22
|
+
config.paddingY += 10;
|
|
23
|
+
}
|
|
24
|
+
return config;
|
|
25
|
+
}
|
|
26
|
+
getPacket() {
|
|
27
|
+
return this.packet;
|
|
28
|
+
}
|
|
29
|
+
pushWord(word) {
|
|
30
|
+
if (word.length > 0) {
|
|
31
|
+
this.packet.push(word);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
clear() {
|
|
35
|
+
clear();
|
|
36
|
+
this.packet = [];
|
|
37
|
+
}
|
|
38
|
+
}, __name(_a, "PacketDB"), _a);
|
|
39
|
+
var maxPacketSize = 1e4;
|
|
40
|
+
var populate = /* @__PURE__ */ __name((ast, db) => {
|
|
41
|
+
populateCommonDb(ast, db);
|
|
42
|
+
let lastBit = -1;
|
|
43
|
+
let word = [];
|
|
44
|
+
let row = 1;
|
|
45
|
+
const { bitsPerRow } = db.getConfig();
|
|
46
|
+
for (let { start, end, bits, label } of ast.blocks) {
|
|
47
|
+
if (start !== void 0 && end !== void 0 && end < start) {
|
|
48
|
+
throw new Error(`Packet block ${start} - ${end} is invalid. End must be greater than start.`);
|
|
49
|
+
}
|
|
50
|
+
start ??= lastBit + 1;
|
|
51
|
+
if (start !== lastBit + 1) {
|
|
52
|
+
throw new Error(
|
|
53
|
+
`Packet block ${start} - ${end ?? start} is not contiguous. It should start from ${lastBit + 1}.`
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
if (bits === 0) {
|
|
57
|
+
throw new Error(`Packet block ${start} is invalid. Cannot have a zero bit field.`);
|
|
58
|
+
}
|
|
59
|
+
end ??= start + (bits ?? 1) - 1;
|
|
60
|
+
bits ??= end - start + 1;
|
|
61
|
+
lastBit = end;
|
|
62
|
+
log.debug(`Packet block ${start} - ${lastBit} with label ${label}`);
|
|
63
|
+
while (word.length <= bitsPerRow + 1 && db.getPacket().length < maxPacketSize) {
|
|
64
|
+
const [block, nextBlock] = getNextFittingBlock({ start, end, bits, label }, row, bitsPerRow);
|
|
65
|
+
word.push(block);
|
|
66
|
+
if (block.end + 1 === row * bitsPerRow) {
|
|
67
|
+
db.pushWord(word);
|
|
68
|
+
word = [];
|
|
69
|
+
row++;
|
|
70
|
+
}
|
|
71
|
+
if (!nextBlock) {
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
({ start, end, bits, label } = nextBlock);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
db.pushWord(word);
|
|
78
|
+
}, "populate");
|
|
79
|
+
var getNextFittingBlock = /* @__PURE__ */ __name((block, row, bitsPerRow) => {
|
|
80
|
+
if (block.start === void 0) {
|
|
81
|
+
throw new Error("start should have been set during first phase");
|
|
82
|
+
}
|
|
83
|
+
if (block.end === void 0) {
|
|
84
|
+
throw new Error("end should have been set during first phase");
|
|
85
|
+
}
|
|
86
|
+
if (block.start > block.end) {
|
|
87
|
+
throw new Error(`Block start ${block.start} is greater than block end ${block.end}.`);
|
|
88
|
+
}
|
|
89
|
+
if (block.end + 1 <= row * bitsPerRow) {
|
|
90
|
+
return [block, void 0];
|
|
91
|
+
}
|
|
92
|
+
const rowEnd = row * bitsPerRow - 1;
|
|
93
|
+
const rowStart = row * bitsPerRow;
|
|
94
|
+
return [
|
|
95
|
+
{
|
|
96
|
+
start: block.start,
|
|
97
|
+
end: rowEnd,
|
|
98
|
+
label: block.label,
|
|
99
|
+
bits: rowEnd - block.start
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
start: rowStart,
|
|
103
|
+
end: block.end,
|
|
104
|
+
label: block.label,
|
|
105
|
+
bits: block.end - rowStart
|
|
106
|
+
}
|
|
107
|
+
];
|
|
108
|
+
}, "getNextFittingBlock");
|
|
109
|
+
var parser = {
|
|
110
|
+
// @ts-expect-error - PacketDB is not assignable to DiagramDB
|
|
111
|
+
parser: { yy: void 0 },
|
|
112
|
+
parse: /* @__PURE__ */ __name(async (input) => {
|
|
113
|
+
const ast = await parse("packet", input);
|
|
114
|
+
const db = parser.parser?.yy;
|
|
115
|
+
if (!(db instanceof PacketDB)) {
|
|
116
|
+
throw new Error(
|
|
117
|
+
"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."
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
log.debug(ast);
|
|
121
|
+
populate(ast, db);
|
|
122
|
+
}, "parse")
|
|
123
|
+
};
|
|
124
|
+
var draw = /* @__PURE__ */ __name((_text, id, _version, diagram2) => {
|
|
125
|
+
const db = diagram2.db;
|
|
126
|
+
const config = db.getConfig();
|
|
127
|
+
const { rowHeight, paddingY, bitWidth, bitsPerRow } = config;
|
|
128
|
+
const words = db.getPacket();
|
|
129
|
+
const title = db.getDiagramTitle();
|
|
130
|
+
const totalRowHeight = rowHeight + paddingY;
|
|
131
|
+
const svgHeight = totalRowHeight * (words.length + 1) - (title ? 0 : rowHeight);
|
|
132
|
+
const svgWidth = bitWidth * bitsPerRow + 2;
|
|
133
|
+
const svg = selectSvgElement(id);
|
|
134
|
+
svg.attr("viewbox", `0 0 ${svgWidth} ${svgHeight}`);
|
|
135
|
+
configureSvgSize(svg, svgHeight, svgWidth, config.useMaxWidth);
|
|
136
|
+
for (const [word, packet] of words.entries()) {
|
|
137
|
+
drawWord(svg, packet, word, config);
|
|
138
|
+
}
|
|
139
|
+
svg.append("text").text(title).attr("x", svgWidth / 2).attr("y", svgHeight - totalRowHeight / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("class", "packetTitle");
|
|
140
|
+
}, "draw");
|
|
141
|
+
var drawWord = /* @__PURE__ */ __name((svg, word, rowNumber, { rowHeight, paddingX, paddingY, bitWidth, bitsPerRow, showBits }) => {
|
|
142
|
+
const group = svg.append("g");
|
|
143
|
+
const wordY = rowNumber * (rowHeight + paddingY) + paddingY;
|
|
144
|
+
for (const block of word) {
|
|
145
|
+
const blockX = block.start % bitsPerRow * bitWidth + 1;
|
|
146
|
+
const width = (block.end - block.start + 1) * bitWidth - paddingX;
|
|
147
|
+
group.append("rect").attr("x", blockX).attr("y", wordY).attr("width", width).attr("height", rowHeight).attr("class", "packetBlock");
|
|
148
|
+
group.append("text").attr("x", blockX + width / 2).attr("y", wordY + rowHeight / 2).attr("class", "packetLabel").attr("dominant-baseline", "middle").attr("text-anchor", "middle").text(block.label);
|
|
149
|
+
if (!showBits) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const isSingleBlock = block.end === block.start;
|
|
153
|
+
const bitNumberY = wordY - 2;
|
|
154
|
+
group.append("text").attr("x", blockX + (isSingleBlock ? width / 2 : 0)).attr("y", bitNumberY).attr("class", "packetByte start").attr("dominant-baseline", "auto").attr("text-anchor", isSingleBlock ? "middle" : "start").text(block.start);
|
|
155
|
+
if (!isSingleBlock) {
|
|
156
|
+
group.append("text").attr("x", blockX + width).attr("y", bitNumberY).attr("class", "packetByte end").attr("dominant-baseline", "auto").attr("text-anchor", "end").text(block.end);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}, "drawWord");
|
|
160
|
+
var renderer = { draw };
|
|
161
|
+
var defaultPacketStyleOptions = {
|
|
162
|
+
byteFontSize: "10px",
|
|
163
|
+
startByteColor: "black",
|
|
164
|
+
endByteColor: "black",
|
|
165
|
+
labelColor: "black",
|
|
166
|
+
labelFontSize: "12px",
|
|
167
|
+
titleColor: "black",
|
|
168
|
+
titleFontSize: "14px",
|
|
169
|
+
blockStrokeColor: "black",
|
|
170
|
+
blockStrokeWidth: "1",
|
|
171
|
+
blockFillColor: "#efefef"
|
|
172
|
+
};
|
|
173
|
+
var styles = /* @__PURE__ */ __name(({ packet } = {}) => {
|
|
174
|
+
const options = cleanAndMerge(defaultPacketStyleOptions, packet);
|
|
175
|
+
return `
|
|
176
|
+
.packetByte {
|
|
177
|
+
font-size: ${options.byteFontSize};
|
|
178
|
+
}
|
|
179
|
+
.packetByte.start {
|
|
180
|
+
fill: ${options.startByteColor};
|
|
181
|
+
}
|
|
182
|
+
.packetByte.end {
|
|
183
|
+
fill: ${options.endByteColor};
|
|
184
|
+
}
|
|
185
|
+
.packetLabel {
|
|
186
|
+
fill: ${options.labelColor};
|
|
187
|
+
font-size: ${options.labelFontSize};
|
|
188
|
+
}
|
|
189
|
+
.packetTitle {
|
|
190
|
+
fill: ${options.titleColor};
|
|
191
|
+
font-size: ${options.titleFontSize};
|
|
192
|
+
}
|
|
193
|
+
.packetBlock {
|
|
194
|
+
stroke: ${options.blockStrokeColor};
|
|
195
|
+
stroke-width: ${options.blockStrokeWidth};
|
|
196
|
+
fill: ${options.blockFillColor};
|
|
197
|
+
}
|
|
198
|
+
`;
|
|
199
|
+
}, "styles");
|
|
200
|
+
var diagram = {
|
|
201
|
+
parser,
|
|
202
|
+
get db() {
|
|
203
|
+
return new PacketDB();
|
|
204
|
+
},
|
|
205
|
+
renderer,
|
|
206
|
+
styles
|
|
207
|
+
};
|
|
208
|
+
export {
|
|
209
|
+
diagram
|
|
210
|
+
};
|