@bytechain.cn/colamd 1.5.0

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.
Files changed (157) hide show
  1. package/.github/workflows/release.yml +66 -0
  2. package/.trae/documents/fix-mermaid-colors-and-sankey.md +50 -0
  3. package/CLAUDE.md +87 -0
  4. package/LICENSE +21 -0
  5. package/README.md +540 -0
  6. package/README_CN.md +543 -0
  7. package/demo.md +486 -0
  8. package/dist/main/index.js +735 -0
  9. package/dist/preload/index.js +71 -0
  10. package/dist/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  11. package/dist/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  12. package/dist/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  13. package/dist/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  14. package/dist/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  15. package/dist/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  16. package/dist/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  17. package/dist/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  18. package/dist/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  19. package/dist/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  20. package/dist/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  21. package/dist/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  22. package/dist/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  23. package/dist/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  24. package/dist/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  25. package/dist/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  26. package/dist/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  27. package/dist/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  28. package/dist/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  29. package/dist/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  30. package/dist/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  31. package/dist/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  32. package/dist/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  33. package/dist/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  34. package/dist/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  35. package/dist/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  36. package/dist/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  37. package/dist/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  38. package/dist/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  39. package/dist/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  40. package/dist/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  41. package/dist/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  42. package/dist/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  43. package/dist/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  44. package/dist/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  45. package/dist/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  46. package/dist/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  47. package/dist/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  48. package/dist/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  49. package/dist/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  50. package/dist/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  51. package/dist/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  52. package/dist/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  53. package/dist/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  54. package/dist/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  55. package/dist/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  56. package/dist/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  57. package/dist/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  58. package/dist/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  59. package/dist/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  60. package/dist/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  61. package/dist/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  62. package/dist/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  63. package/dist/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  64. package/dist/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  65. package/dist/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  66. package/dist/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  67. package/dist/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  68. package/dist/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  69. package/dist/renderer/assets/arc-tTbbM8LO.js +131 -0
  70. package/dist/renderer/assets/architectureDiagram-3BPJPVTR-CEgYow6c.js +8720 -0
  71. package/dist/renderer/assets/blockDiagram-GPEHLZMM-LHyVtPwW.js +3825 -0
  72. package/dist/renderer/assets/c4Diagram-AAUBKEIU-C1P1eJrf.js +2482 -0
  73. package/dist/renderer/assets/channel-upve91Tq.js +7 -0
  74. package/dist/renderer/assets/chunk-2J33WTMH-lag2vhq9.js +24 -0
  75. package/dist/renderer/assets/chunk-4BX2VUAB-BXJ8Ggh-.js +16 -0
  76. package/dist/renderer/assets/chunk-55IACEB6-CiBpxRa1.js +13 -0
  77. package/dist/renderer/assets/chunk-727SXJPM-ODeKQFXC.js +2016 -0
  78. package/dist/renderer/assets/chunk-AQP2D5EJ-BK7xJolB.js +1953 -0
  79. package/dist/renderer/assets/chunk-FMBD7UC4-BxpCZPtz.js +19 -0
  80. package/dist/renderer/assets/chunk-ND2GUHAM-CqqaU9Ue.js +116 -0
  81. package/dist/renderer/assets/chunk-QZHKN3VN-Biq_K124.js +19 -0
  82. package/dist/renderer/assets/classDiagram-4FO5ZUOK-Cq95X99o.js +23 -0
  83. package/dist/renderer/assets/classDiagram-v2-Q7XG4LA2-Cq95X99o.js +23 -0
  84. package/dist/renderer/assets/cose-bilkent-S5V4N54A-XasiD0bu.js +4942 -0
  85. package/dist/renderer/assets/cytoscape.esm-CpHeHM5e.js +30269 -0
  86. package/dist/renderer/assets/dagre-BM42HDAG-Nq84Gfx4.js +705 -0
  87. package/dist/renderer/assets/defaultLocale-B2RvLBDe.js +206 -0
  88. package/dist/renderer/assets/diagram-2AECGRRQ-DwuB1GWt.js +301 -0
  89. package/dist/renderer/assets/diagram-5GNKFQAL-C2tgeI1h.js +169 -0
  90. package/dist/renderer/assets/diagram-KO2AKTUF-D5KzjNBc.js +632 -0
  91. package/dist/renderer/assets/diagram-LMA3HP47-C12xHS1c.js +212 -0
  92. package/dist/renderer/assets/diagram-OG6HWLK6-CnxI9oEa.js +851 -0
  93. package/dist/renderer/assets/erDiagram-TEJ5UH35-D_uPaKwn.js +1227 -0
  94. package/dist/renderer/assets/flowDiagram-I6XJVG4X-B6q_1-tE.js +2332 -0
  95. package/dist/renderer/assets/ganttDiagram-6RSMTGT7-CFo7ifF9.js +3720 -0
  96. package/dist/renderer/assets/gitGraphDiagram-PVQCEYII-WSexHTnq.js +1373 -0
  97. package/dist/renderer/assets/graph-DyX_9f6d.js +1988 -0
  98. package/dist/renderer/assets/index-DW7LS8C1.js +72292 -0
  99. package/dist/renderer/assets/index-dyHEFYvY.css +2184 -0
  100. package/dist/renderer/assets/infoDiagram-5YYISTIA-DaeJdLRq.js +31 -0
  101. package/dist/renderer/assets/init-ZxktEp_H.js +16 -0
  102. package/dist/renderer/assets/ishikawaDiagram-YF4QCWOH-DDCZc35f.js +967 -0
  103. package/dist/renderer/assets/journeyDiagram-JHISSGLW-BEdmpAgl.js +1255 -0
  104. package/dist/renderer/assets/kanban-definition-UN3LZRKU-BEFtQcFb.js +1052 -0
  105. package/dist/renderer/assets/layout-CAJgQHdw.js +2610 -0
  106. package/dist/renderer/assets/linear-B2ggJ8Am.js +340 -0
  107. package/dist/renderer/assets/mindmap-definition-RKZ34NQL-DSxVgHB5.js +1180 -0
  108. package/dist/renderer/assets/ordinal-DSZU4PqD.js +76 -0
  109. package/dist/renderer/assets/pieDiagram-4H26LBE5-CwYoJBuL.js +246 -0
  110. package/dist/renderer/assets/quadrantDiagram-W4KKPZXB-CST9Fvg9.js +1344 -0
  111. package/dist/renderer/assets/requirementDiagram-4Y6WPE33-DtrH52jS.js +1204 -0
  112. package/dist/renderer/assets/sankeyDiagram-5OEKKPKP-ca1tPzJ_.js +1274 -0
  113. package/dist/renderer/assets/sequenceDiagram-3UESZ5HK-Dfp1EJZ7.js +4514 -0
  114. package/dist/renderer/assets/stateDiagram-AJRCARHV-Bha2QoNB.js +450 -0
  115. package/dist/renderer/assets/stateDiagram-v2-BHNVJYJU-DWgFUYu1.js +21 -0
  116. package/dist/renderer/assets/timeline-definition-PNZ67QCA-C3h_-OTj.js +1596 -0
  117. package/dist/renderer/assets/vennDiagram-CIIHVFJN-DFzjSrZi.js +2486 -0
  118. package/dist/renderer/assets/wardley-L42UT6IY-Cx-VbqoS.js +30699 -0
  119. package/dist/renderer/assets/wardleyDiagram-YWT4CUSO-S2D9XqX6.js +975 -0
  120. package/dist/renderer/assets/xychartDiagram-2RQKCTM6-Cfxigbts.js +1932 -0
  121. package/dist/renderer/index.html +19 -0
  122. package/docs/agent-diff-view.md +48 -0
  123. package/electron-builder.yml +57 -0
  124. package/electron.vite.config.ts +30 -0
  125. package/package.json +40 -0
  126. package/resources/entitlements.mac.plist +12 -0
  127. package/resources/icon.icns +0 -0
  128. package/resources/icon.png +0 -0
  129. package/resources/icon.svg +23 -0
  130. package/resources/templates/slides/icon.png +0 -0
  131. package/resources/templates/slides/slides-template.md +74 -0
  132. package/resources/templates/slides/template.html +535 -0
  133. package/scripts/afterPack.js +13 -0
  134. package/src/main/index.ts +881 -0
  135. package/src/preload/index.ts +110 -0
  136. package/src/renderer/editor/editor.ts +204 -0
  137. package/src/renderer/editor/html-view.ts +15 -0
  138. package/src/renderer/editor/plugins/index.ts +76 -0
  139. package/src/renderer/editor/plugins/math-plugin.ts +297 -0
  140. package/src/renderer/editor/plugins/mermaid-plugin-custom.css +431 -0
  141. package/src/renderer/editor/plugins/mermaid-plugin-dark.css +428 -0
  142. package/src/renderer/editor/plugins/mermaid-plugin-elegant.css +443 -0
  143. package/src/renderer/editor/plugins/mermaid-plugin-newsprint.css +208 -0
  144. package/src/renderer/editor/plugins/mermaid-plugin.css +111 -0
  145. package/src/renderer/editor/plugins/mermaid-plugin.ts +679 -0
  146. package/src/renderer/env.d.ts +7 -0
  147. package/src/renderer/index.html +18 -0
  148. package/src/renderer/main.ts +303 -0
  149. package/src/renderer/themes/base.css +509 -0
  150. package/src/renderer/themes/theme-manager.ts +40 -0
  151. package/themes/README.md +280 -0
  152. package/themes/elegant.css +664 -0
  153. package/themes/guizang.css +732 -0
  154. package/tsconfig.json +14 -0
  155. package/tsconfig.main.json +11 -0
  156. package/tsconfig.preload.json +11 -0
  157. package/tsconfig.renderer.json +12 -0
@@ -0,0 +1,212 @@
1
+ import { _ as __name, F as cleanAndMerge, I 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, D as getConfig, G as defaultConfig_default, z as clear } from "./index-DW7LS8C1.js";
2
+ import { p as populateCommonDb } from "./chunk-4BX2VUAB-BXJ8Ggh-.js";
3
+ import { p as parse } from "./wardley-L42UT6IY-Cx-VbqoS.js";
4
+ var DEFAULT_PACKET_CONFIG = defaultConfig_default.packet;
5
+ var PacketDB = class {
6
+ constructor() {
7
+ this.packet = [];
8
+ this.setAccTitle = setAccTitle;
9
+ this.getAccTitle = getAccTitle;
10
+ this.setDiagramTitle = setDiagramTitle;
11
+ this.getDiagramTitle = getDiagramTitle;
12
+ this.getAccDescription = getAccDescription;
13
+ this.setAccDescription = setAccDescription;
14
+ }
15
+ static {
16
+ __name(this, "PacketDB");
17
+ }
18
+ getConfig() {
19
+ const config = cleanAndMerge({
20
+ ...DEFAULT_PACKET_CONFIG,
21
+ ...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
+ clear();
38
+ this.packet = [];
39
+ }
40
+ };
41
+ var maxPacketSize = 1e4;
42
+ var populate = /* @__PURE__ */ __name((ast, db) => {
43
+ 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
+ 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__ */ __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__ */ __name(async (input) => {
115
+ const ast = await 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
+ log.debug(ast);
123
+ populate(ast, db);
124
+ }, "parse")
125
+ };
126
+ var draw = /* @__PURE__ */ __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 = selectSvgElement(id);
136
+ svg.attr("viewBox", `0 0 ${svgWidth} ${svgHeight}`);
137
+ 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__ */ __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__ */ __name(({ packet } = {}) => {
176
+ const options = 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
+ export {
211
+ diagram
212
+ };